Commit 7e61751b authored by Luca Ceresoli's avatar Luca Ceresoli
Browse files

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: default avatarMaxime 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: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
parent af509dfc
Loading
Loading
Loading
Loading
+8 −15
Original line number Diff line number Diff line
@@ -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 @@ static int venc_probe(struct platform_device *pdev)
	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)