diff options
author | Julia Lawall <julia@diku.dk> | 2009-09-18 16:45:51 -0400 |
---|---|---|
committer | Jean Delvare <khali@linux-fr.org> | 2009-09-18 16:45:51 -0400 |
commit | 449d2c759ddba46a89b698bdc64bfc2f7cc5bb66 (patch) | |
tree | b18c049b56cec341d1f1fb624c26d76772ea0807 /drivers/i2c/busses/i2c-pnx.c | |
parent | a1867d36b3bda28314fdd832a510dc9e55821c4c (diff) |
i2c-pnx: Correct use of request_region/request_mem_region
request_mem_region should be used when ioremap is used subsequently.
release_region is then correspondingly replaced by release_mem_region.
The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@r@
expression start,E;
@@
- request_region
+ request_mem_region
(start,...)
... when != request_mem_region(start,...)
when != start = E
ioremap(start,...)
@@
expression r.start;
@@
- release_region
+ release_mem_region
(start,...)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: Vitaly Wool <vitalywool@gmail.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-pnx.c')
-rw-r--r-- | drivers/i2c/busses/i2c-pnx.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c index ec15cff556b9..6ff6c20f1e78 100644 --- a/drivers/i2c/busses/i2c-pnx.c +++ b/drivers/i2c/busses/i2c-pnx.c | |||
@@ -586,7 +586,8 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
586 | alg_data->mif.timer.data = (unsigned long)i2c_pnx->adapter; | 586 | alg_data->mif.timer.data = (unsigned long)i2c_pnx->adapter; |
587 | 587 | ||
588 | /* Register I/O resource */ | 588 | /* Register I/O resource */ |
589 | if (!request_region(alg_data->base, I2C_PNX_REGION_SIZE, pdev->name)) { | 589 | if (!request_mem_region(alg_data->base, I2C_PNX_REGION_SIZE, |
590 | pdev->name)) { | ||
590 | dev_err(&pdev->dev, | 591 | dev_err(&pdev->dev, |
591 | "I/O region 0x%08x for I2C already in use.\n", | 592 | "I/O region 0x%08x for I2C already in use.\n", |
592 | alg_data->base); | 593 | alg_data->base); |
@@ -650,7 +651,7 @@ out_clock: | |||
650 | out_unmap: | 651 | out_unmap: |
651 | iounmap((void *)alg_data->ioaddr); | 652 | iounmap((void *)alg_data->ioaddr); |
652 | out_release: | 653 | out_release: |
653 | release_region(alg_data->base, I2C_PNX_REGION_SIZE); | 654 | release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE); |
654 | out_drvdata: | 655 | out_drvdata: |
655 | platform_set_drvdata(pdev, NULL); | 656 | platform_set_drvdata(pdev, NULL); |
656 | out: | 657 | out: |
@@ -667,7 +668,7 @@ static int __devexit i2c_pnx_remove(struct platform_device *pdev) | |||
667 | i2c_del_adapter(adap); | 668 | i2c_del_adapter(adap); |
668 | i2c_pnx->set_clock_stop(pdev); | 669 | i2c_pnx->set_clock_stop(pdev); |
669 | iounmap((void *)alg_data->ioaddr); | 670 | iounmap((void *)alg_data->ioaddr); |
670 | release_region(alg_data->base, I2C_PNX_REGION_SIZE); | 671 | release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE); |
671 | platform_set_drvdata(pdev, NULL); | 672 | platform_set_drvdata(pdev, NULL); |
672 | 673 | ||
673 | return 0; | 674 | return 0; |