Commit cf295629 authored by Vladimir Zapolskiy's avatar Vladimir Zapolskiy Committed by Mauro Carvalho Chehab
Browse files

media: camss: Allocate camss struct as a managed device resource



The change simplifies driver's probe and remove functions, no functional
change is intended.

Signed-off-by: default avatarVladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: default avatarRobert Foss <robert.foss@linaro.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 135ad96c
Loading
Loading
Loading
Loading
+10 −23
Original line number Diff line number Diff line
@@ -1541,7 +1541,7 @@ static int camss_probe(struct platform_device *pdev)
	struct camss *camss;
	int num_subdevs, ret;

	camss = kzalloc(sizeof(*camss), GFP_KERNEL);
	camss = devm_kzalloc(dev, sizeof(*camss), GFP_KERNEL);
	if (!camss)
		return -ENOMEM;

@@ -1579,39 +1579,30 @@ static int camss_probe(struct platform_device *pdev)
		camss->csid_num = 4;
		camss->vfe_num = 4;
	} else {
		ret = -EINVAL;
		goto err_free;
		return -EINVAL;
	}

	camss->csiphy = devm_kcalloc(dev, camss->csiphy_num,
				     sizeof(*camss->csiphy), GFP_KERNEL);
	if (!camss->csiphy) {
		ret = -ENOMEM;
		goto err_free;
	}
	if (!camss->csiphy)
		return -ENOMEM;

	camss->csid = devm_kcalloc(dev, camss->csid_num, sizeof(*camss->csid),
				   GFP_KERNEL);
	if (!camss->csid) {
		ret = -ENOMEM;
		goto err_free;
	}
	if (!camss->csid)
		return -ENOMEM;

	if (camss->version == CAMSS_8x16 ||
	    camss->version == CAMSS_8x96) {
		camss->ispif = devm_kcalloc(dev, 1, sizeof(*camss->ispif), GFP_KERNEL);
		if (!camss->ispif) {
			ret = -ENOMEM;
			goto err_free;
		}
		if (!camss->ispif)
			return -ENOMEM;
	}

	camss->vfe = devm_kcalloc(dev, camss->vfe_num, sizeof(*camss->vfe),
				  GFP_KERNEL);
	if (!camss->vfe) {
		ret = -ENOMEM;
		goto err_free;
	}
	if (!camss->vfe)
		return -ENOMEM;

	v4l2_async_nf_init(&camss->notifier);

@@ -1693,8 +1684,6 @@ static int camss_probe(struct platform_device *pdev)
	v4l2_device_unregister(&camss->v4l2_dev);
err_cleanup:
	v4l2_async_nf_cleanup(&camss->notifier);
err_free:
	kfree(camss);

	return ret;
}
@@ -1713,8 +1702,6 @@ void camss_delete(struct camss *camss)
		device_link_del(camss->genpd_link[i]);
		dev_pm_domain_detach(camss->genpd[i], true);
	}

	kfree(camss);
}

/*