Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 578e99d6 authored by Libin Yang's avatar Libin Yang Committed by Mauro Carvalho Chehab
Browse files

[media] marvell-ccic: switch to resource managed allocation and request



This patch switchs to resource managed allocation and request in mmp-driver.
It can remove free resource operations.

Signed-off-by: default avatarAlbert Wang <twang13@marvell.com>
Signed-off-by: default avatarLibin Yang <lbyang@marvell.com>
Acked-by: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 0a0b3fb4
Loading
Loading
Loading
Loading
+22 −38
Original line number Diff line number Diff line
@@ -367,7 +367,7 @@ static int mmpcam_probe(struct platform_device *pdev)
	if (!pdata)
		return -ENODEV;

	cam = kzalloc(sizeof(*cam), GFP_KERNEL);
	cam = devm_kzalloc(&pdev->dev, sizeof(*cam), GFP_KERNEL);
	if (cam == NULL)
		return -ENOMEM;
	cam->pdev = pdev;
@@ -398,15 +398,11 @@ static int mmpcam_probe(struct platform_device *pdev)
	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (res == NULL) {
		dev_err(&pdev->dev, "no iomem resource!\n");
		ret = -ENODEV;
		goto out_free;
	}
	mcam->regs = ioremap(res->start, resource_size(res));
	if (mcam->regs == NULL) {
		dev_err(&pdev->dev, "MMIO ioremap fail\n");
		ret = -ENODEV;
		goto out_free;
		return -ENODEV;
	}
	mcam->regs = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(mcam->regs))
		return PTR_ERR(mcam->regs);
	mcam->regs_size = resource_size(res);
	/*
	 * Power/clock memory is elsewhere; get it too.  Perhaps this
@@ -415,40 +411,37 @@ static int mmpcam_probe(struct platform_device *pdev)
	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
	if (res == NULL) {
		dev_err(&pdev->dev, "no power resource!\n");
		ret = -ENODEV;
		goto out_unmap1;
	}
	cam->power_regs = ioremap(res->start, resource_size(res));
	if (cam->power_regs == NULL) {
		dev_err(&pdev->dev, "power MMIO ioremap fail\n");
		ret = -ENODEV;
		goto out_unmap1;
		return -ENODEV;
	}
	cam->power_regs = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(cam->power_regs))
		return PTR_ERR(cam->power_regs);
	/*
	 * Find the i2c adapter.  This assumes, of course, that the
	 * i2c bus is already up and functioning.
	 */
	mcam->i2c_adapter = platform_get_drvdata(pdata->i2c_device);
	if (mcam->i2c_adapter == NULL) {
		ret = -ENODEV;
		dev_err(&pdev->dev, "No i2c adapter\n");
		goto out_unmap2;
		return -ENODEV;
	}
	/*
	 * Sensor GPIO pins.
	 */
	ret = gpio_request(pdata->sensor_power_gpio, "cam-power");
	ret = devm_gpio_request(&pdev->dev, pdata->sensor_power_gpio,
							"cam-power");
	if (ret) {
		dev_err(&pdev->dev, "Can't get sensor power gpio %d",
				pdata->sensor_power_gpio);
		goto out_unmap2;
		return ret;
	}
	gpio_direction_output(pdata->sensor_power_gpio, 0);
	ret = gpio_request(pdata->sensor_reset_gpio, "cam-reset");
	ret = devm_gpio_request(&pdev->dev, pdata->sensor_reset_gpio,
							"cam-reset");
	if (ret) {
		dev_err(&pdev->dev, "Can't get sensor reset gpio %d",
				pdata->sensor_reset_gpio);
		goto out_gpio;
		return ret;
	}
	gpio_direction_output(pdata->sensor_reset_gpio, 0);

@@ -459,10 +452,10 @@ static int mmpcam_probe(struct platform_device *pdev)
	 */
	ret = mmpcam_power_up(mcam);
	if (ret)
		goto out_gpio2;
		goto out_deinit_clk;
	ret = mccic_register(mcam);
	if (ret)
		goto out_pwdn;
		goto out_power_down;
	/*
	 * Finally, set up our IRQ now that the core is ready to
	 * deal with it.
@@ -473,7 +466,7 @@ static int mmpcam_probe(struct platform_device *pdev)
		goto out_unregister;
	}
	cam->irq = res->start;
	ret = request_irq(cam->irq, mmpcam_irq, IRQF_SHARED,
	ret = devm_request_irq(&pdev->dev, cam->irq, mmpcam_irq, IRQF_SHARED,
					"mmp-camera", mcam);
	if (ret == 0) {
		mmpcam_add_device(cam);
@@ -482,19 +475,10 @@ static int mmpcam_probe(struct platform_device *pdev)

out_unregister:
	mccic_shutdown(mcam);
out_pwdn:
out_power_down:
	mmpcam_power_down(mcam);
out_gpio2:
out_deinit_clk:
	mcam_deinit_clk(mcam);
	gpio_free(pdata->sensor_reset_gpio);
out_gpio:
	gpio_free(pdata->sensor_power_gpio);
out_unmap2:
	iounmap(cam->power_regs);
out_unmap1:
	iounmap(mcam->regs);
out_free:
	kfree(cam);
	return ret;
}