diff options
Diffstat (limited to 'drivers/media/platform/omap3isp/isp.c')
| -rw-r--r-- | drivers/media/platform/omap3isp/isp.c | 74 | 
1 files changed, 12 insertions, 62 deletions
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index e4aaee91201..383a727b8aa 100644 --- a/drivers/media/platform/omap3isp/isp.c +++ b/drivers/media/platform/omap3isp/isp.c @@ -1406,28 +1406,15 @@ static const char *isp_clocks[] = {  	"l3_ick",  }; -static void isp_put_clocks(struct isp_device *isp) -{ -	unsigned int i; - -	for (i = 0; i < ARRAY_SIZE(isp_clocks); ++i) { -		if (isp->clock[i]) { -			clk_put(isp->clock[i]); -			isp->clock[i] = NULL; -		} -	} -} -  static int isp_get_clocks(struct isp_device *isp)  {  	struct clk *clk;  	unsigned int i;  	for (i = 0; i < ARRAY_SIZE(isp_clocks); ++i) { -		clk = clk_get(isp->dev, isp_clocks[i]); +		clk = devm_clk_get(isp->dev, isp_clocks[i]);  		if (IS_ERR(clk)) {  			dev_err(isp->dev, "clk_get %s failed\n", isp_clocks[i]); -			isp_put_clocks(isp);  			return PTR_ERR(clk);  		} @@ -1993,7 +1980,6 @@ error_csiphy:  static int isp_remove(struct platform_device *pdev)  {  	struct isp_device *isp = platform_get_drvdata(pdev); -	int i;  	isp_unregister_entities(isp);  	isp_cleanup_modules(isp); @@ -2004,26 +1990,6 @@ static int isp_remove(struct platform_device *pdev)  	isp->domain = NULL;  	omap3isp_put(isp); -	free_irq(isp->irq_num, isp); -	isp_put_clocks(isp); - -	for (i = 0; i < OMAP3_ISP_IOMEM_LAST; i++) { -		if (isp->mmio_base[i]) { -			iounmap(isp->mmio_base[i]); -			isp->mmio_base[i] = NULL; -		} - -		if (isp->mmio_base_phys[i]) { -			release_mem_region(isp->mmio_base_phys[i], -					   isp->mmio_size[i]); -			isp->mmio_base_phys[i] = 0; -		} -	} - -	regulator_put(isp->isp_csiphy1.vdd); -	regulator_put(isp->isp_csiphy2.vdd); -	kfree(isp); -  	return 0;  } @@ -2041,7 +2007,8 @@ static int isp_map_mem_resource(struct platform_device *pdev,  		return -ENODEV;  	} -	if (!request_mem_region(mem->start, resource_size(mem), pdev->name)) { +	if (!devm_request_mem_region(isp->dev, mem->start, resource_size(mem), +				     pdev->name)) {  		dev_err(isp->dev,  			"cannot reserve camera register I/O region\n");  		return -ENODEV; @@ -2050,8 +2017,9 @@ static int isp_map_mem_resource(struct platform_device *pdev,  	isp->mmio_size[res] = resource_size(mem);  	/* map the region */ -	isp->mmio_base[res] = ioremap_nocache(isp->mmio_base_phys[res], -					      isp->mmio_size[res]); +	isp->mmio_base[res] = devm_ioremap_nocache(isp->dev, +						   isp->mmio_base_phys[res], +						   isp->mmio_size[res]);  	if (!isp->mmio_base[res]) {  		dev_err(isp->dev, "cannot map camera register I/O region\n");  		return -ENODEV; @@ -2081,7 +2049,7 @@ static int isp_probe(struct platform_device *pdev)  	if (pdata == NULL)  		return -EINVAL; -	isp = kzalloc(sizeof(*isp), GFP_KERNEL); +	isp = devm_kzalloc(&pdev->dev, sizeof(*isp), GFP_KERNEL);  	if (!isp) {  		dev_err(&pdev->dev, "could not allocate memory\n");  		return -ENOMEM; @@ -2104,8 +2072,8 @@ static int isp_probe(struct platform_device *pdev)  	platform_set_drvdata(pdev, isp);  	/* Regulators */ -	isp->isp_csiphy1.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY1"); -	isp->isp_csiphy2.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY2"); +	isp->isp_csiphy1.vdd = devm_regulator_get(&pdev->dev, "VDD_CSIPHY1"); +	isp->isp_csiphy2.vdd = devm_regulator_get(&pdev->dev, "VDD_CSIPHY2");  	/* Clocks  	 * @@ -2180,7 +2148,8 @@ static int isp_probe(struct platform_device *pdev)  		goto detach_dev;  	} -	if (request_irq(isp->irq_num, isp_isr, IRQF_SHARED, "OMAP3 ISP", isp)) { +	if (devm_request_irq(isp->dev, isp->irq_num, isp_isr, IRQF_SHARED, +			     "OMAP3 ISP", isp)) {  		dev_err(isp->dev, "Unable to request IRQ\n");  		ret = -EINVAL;  		goto detach_dev; @@ -2189,7 +2158,7 @@ static int isp_probe(struct platform_device *pdev)  	/* Entities */  	ret = isp_initialize_modules(isp);  	if (ret < 0) -		goto error_irq; +		goto detach_dev;  	ret = isp_register_entities(isp);  	if (ret < 0) @@ -2202,8 +2171,6 @@ static int isp_probe(struct platform_device *pdev)  error_modules:  	isp_cleanup_modules(isp); -error_irq: -	free_irq(isp->irq_num, isp);  detach_dev:  	iommu_detach_device(isp->domain, &pdev->dev);  free_domain: @@ -2211,26 +2178,9 @@ free_domain:  error_isp:  	omap3isp_put(isp);  error: -	isp_put_clocks(isp); - -	for (i = 0; i < OMAP3_ISP_IOMEM_LAST; i++) { -		if (isp->mmio_base[i]) { -			iounmap(isp->mmio_base[i]); -			isp->mmio_base[i] = NULL; -		} - -		if (isp->mmio_base_phys[i]) { -			release_mem_region(isp->mmio_base_phys[i], -					   isp->mmio_size[i]); -			isp->mmio_base_phys[i] = 0; -		} -	} -	regulator_put(isp->isp_csiphy2.vdd); -	regulator_put(isp->isp_csiphy1.vdd);  	platform_set_drvdata(pdev, NULL);  	mutex_destroy(&isp->isp_mutex); -	kfree(isp);  	return ret;  }  |