drm/omap: dss: venc: convert to devm_drm_bridge_alloc() API
This is the new API for allocating DRM bridges. Switching from a non-devm to a devm allocation allows removing the kfree() in the remove function and in the probe error management code, and as a consequence to simplify the code flow by removing now unnecessary gotos. Acked-by: Maxime Ripard <mripard@kernel.org> Link: https://lore.kernel.org/r/20250509-drm-bridge-convert-to-alloc-api-v3-13-b8bc1f16d7aa@bootlin.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
@@ -664,7 +664,6 @@ static const struct drm_bridge_funcs venc_bridge_funcs = {
|
||||
|
||||
static void venc_bridge_init(struct venc_device *venc)
|
||||
{
|
||||
venc->bridge.funcs = &venc_bridge_funcs;
|
||||
venc->bridge.of_node = venc->pdev->dev.of_node;
|
||||
venc->bridge.ops = DRM_BRIDGE_OP_MODES;
|
||||
venc->bridge.type = DRM_MODE_CONNECTOR_SVIDEO;
|
||||
@@ -809,9 +808,9 @@ static int venc_probe(struct platform_device *pdev)
|
||||
struct venc_device *venc;
|
||||
int r;
|
||||
|
||||
venc = kzalloc(sizeof(*venc), GFP_KERNEL);
|
||||
if (!venc)
|
||||
return -ENOMEM;
|
||||
venc = devm_drm_bridge_alloc(&pdev->dev, struct venc_device, bridge, &venc_bridge_funcs);
|
||||
if (IS_ERR(venc))
|
||||
return PTR_ERR(venc);
|
||||
|
||||
venc->pdev = pdev;
|
||||
|
||||
@@ -824,26 +823,24 @@ static int venc_probe(struct platform_device *pdev)
|
||||
venc->config = &venc_config_pal_trm;
|
||||
|
||||
venc->base = devm_platform_ioremap_resource(pdev, 0);
|
||||
if (IS_ERR(venc->base)) {
|
||||
r = PTR_ERR(venc->base);
|
||||
goto err_free;
|
||||
}
|
||||
if (IS_ERR(venc->base))
|
||||
return PTR_ERR(venc->base);
|
||||
|
||||
venc->vdda_dac_reg = devm_regulator_get(&pdev->dev, "vdda");
|
||||
if (IS_ERR(venc->vdda_dac_reg)) {
|
||||
r = PTR_ERR(venc->vdda_dac_reg);
|
||||
if (r != -EPROBE_DEFER)
|
||||
DSSERR("can't get VDDA_DAC regulator\n");
|
||||
goto err_free;
|
||||
return r;
|
||||
}
|
||||
|
||||
r = venc_get_clocks(venc);
|
||||
if (r)
|
||||
goto err_free;
|
||||
return r;
|
||||
|
||||
r = venc_probe_of(venc);
|
||||
if (r)
|
||||
goto err_free;
|
||||
return r;
|
||||
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
|
||||
@@ -861,8 +858,6 @@ err_uninit_output:
|
||||
venc_uninit_output(venc);
|
||||
err_pm_disable:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
err_free:
|
||||
kfree(venc);
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -875,8 +870,6 @@ static void venc_remove(struct platform_device *pdev)
|
||||
venc_uninit_output(venc);
|
||||
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
kfree(venc);
|
||||
}
|
||||
|
||||
static __maybe_unused int venc_runtime_suspend(struct device *dev)
|
||||
|
||||
Reference in New Issue
Block a user