diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-24 17:35:10 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-24 17:35:10 -0800 | 
| commit | 21fbd5809ad126b949206d78e0a0e07ec872ea11 (patch) | |
| tree | a824045df99fc1f0690095a925cceb50207e332b /drivers/media/platform/omap3isp/isp.c | |
| parent | d9978ec5680059d727b39d6c706777c6973587f2 (diff) | |
| parent | ed72d37a33fdf43dc47787fe220532cdec9da528 (diff) | |
| download | olio-linux-3.10-21fbd5809ad126b949206d78e0a0e07ec872ea11.tar.xz olio-linux-3.10-21fbd5809ad126b949206d78e0a0e07ec872ea11.zip  | |
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
 - Some cleanups at V4L2 documentation
 - new drivers: ts2020 frontend, ov9650 sensor, s5c73m3 sensor,
   sh-mobile veu mem2mem driver, radio-ma901, davinci_vpfe staging
   driver
 - Lots of missing MAINTAINERS entries added
 - several em28xx driver improvements, including its conversion to
   videobuf2
 - several fixups on drivers to make them to better comply with the API
 - DVB core: add support for DVBv5 stats, allowing the implementation of
   statistics for new standards like ISDB
 - mb86a20s: add statistics to the driver
 - lots of new board additions, cleanups, and driver improvements.
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (596 commits)
  [media] media: Add 0x3009 USB PID to ttusb2 driver (fixed diff)
  [media] rtl28xxu: Add USB IDs for Compro VideoMate U620F
  [media] em28xx: add usb id for terratec h5 rev. 3
  [media] media: rc: gpio-ir-recv: add support for device tree parsing
  [media] mceusb: move check earlier to make smatch happy
  [media] radio-si470x doc: add info about v4l2-ctl and sox+alsa
  [media] staging: media: Remove unnecessary OOM messages
  [media] sh_vou: Use vou_dev instead of vou_file wherever possible
  [media] sh_vou: Use video_drvdata()
  [media] drivers/media/platform/soc_camera/pxa_camera.c: use devm_ functions
  [media] mt9t112: mt9t111 format set up differs from mt9t112
  [media] sh-mobile-ceu-camera: fix SHARPNESS control default
  Revert "[media] fc0011: Return early, if the frequency is already tuned"
  [media] cx18/ivtv: fix regression: remove __init from a non-init function
  [media] em28xx: fix analog streaming with USB bulk transfers
  [media] stv0900: remove unnecessary null pointer check
  [media] fc0011: Return early, if the frequency is already tuned
  [media] fc0011: Add some sanity checks and cleanups
  [media] fc0011: Fix xin value clamping
  Revert "[media] [PATH,1/2] mxl5007 move reset to attach"
  ...
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;  }  |