diff options
author | David Vrabel <dvrabel@arcom.com> | 2006-01-19 12:56:29 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-20 16:42:57 -0500 |
commit | 489447380a2921ec0e9154f773c44ab3167ede4b (patch) | |
tree | 10edc2bca15765dae7699b8d26cf3d828869bc3c /drivers/i2c | |
parent | 305b3228f9ff4d59f49e6d34a7034d44ee8ce2f0 (diff) |
[PATCH] handle errors returned by platform_get_irq*()
platform_get_irq*() now returns on -ENXIO when the resource cannot be
found. Ensure all users of platform_get_irq*() handle this error
appropriately.
Signed-off-by: David Vrabel <dvrabel@arcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-iop3xx.c | 9 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-mpc.c | 5 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-mv64xxx.c | 4 |
3 files changed, 16 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-iop3xx.c b/drivers/i2c/busses/i2c-iop3xx.c index 1414851a17b8..d00a02fc23e4 100644 --- a/drivers/i2c/busses/i2c-iop3xx.c +++ b/drivers/i2c/busses/i2c-iop3xx.c | |||
@@ -434,7 +434,7 @@ static int | |||
434 | iop3xx_i2c_probe(struct platform_device *pdev) | 434 | iop3xx_i2c_probe(struct platform_device *pdev) |
435 | { | 435 | { |
436 | struct resource *res; | 436 | struct resource *res; |
437 | int ret; | 437 | int ret, irq; |
438 | struct i2c_adapter *new_adapter; | 438 | struct i2c_adapter *new_adapter; |
439 | struct i2c_algo_iop3xx_data *adapter_data; | 439 | struct i2c_algo_iop3xx_data *adapter_data; |
440 | 440 | ||
@@ -470,7 +470,12 @@ iop3xx_i2c_probe(struct platform_device *pdev) | |||
470 | goto release_region; | 470 | goto release_region; |
471 | } | 471 | } |
472 | 472 | ||
473 | ret = request_irq(platform_get_irq(pdev, 0), iop3xx_i2c_irq_handler, 0, | 473 | irq = platform_get_irq(pdev, 0); |
474 | if (irq < 0) { | ||
475 | ret = -ENXIO; | ||
476 | goto unmap; | ||
477 | } | ||
478 | ret = request_irq(irq, iop3xx_i2c_irq_handler, 0, | ||
474 | pdev->name, adapter_data); | 479 | pdev->name, adapter_data); |
475 | 480 | ||
476 | if (ret) { | 481 | if (ret) { |
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index 5ccd338a9dc9..2721e4c8184a 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c | |||
@@ -302,6 +302,10 @@ static int fsl_i2c_probe(struct platform_device *pdev) | |||
302 | } | 302 | } |
303 | 303 | ||
304 | i2c->irq = platform_get_irq(pdev, 0); | 304 | i2c->irq = platform_get_irq(pdev, 0); |
305 | if (i2c->irq < 0) { | ||
306 | result = -ENXIO; | ||
307 | goto fail_get_irq; | ||
308 | } | ||
305 | i2c->flags = pdata->device_flags; | 309 | i2c->flags = pdata->device_flags; |
306 | init_waitqueue_head(&i2c->queue); | 310 | init_waitqueue_head(&i2c->queue); |
307 | 311 | ||
@@ -340,6 +344,7 @@ static int fsl_i2c_probe(struct platform_device *pdev) | |||
340 | fail_irq: | 344 | fail_irq: |
341 | iounmap(i2c->base); | 345 | iounmap(i2c->base); |
342 | fail_map: | 346 | fail_map: |
347 | fail_get_irq: | ||
343 | kfree(i2c); | 348 | kfree(i2c); |
344 | return result; | 349 | return result; |
345 | }; | 350 | }; |
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c index 22781d84f79f..ac5cde1bbd2b 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c | |||
@@ -516,6 +516,10 @@ mv64xxx_i2c_probe(struct platform_device *pd) | |||
516 | drv_data->freq_m = pdata->freq_m; | 516 | drv_data->freq_m = pdata->freq_m; |
517 | drv_data->freq_n = pdata->freq_n; | 517 | drv_data->freq_n = pdata->freq_n; |
518 | drv_data->irq = platform_get_irq(pd, 0); | 518 | drv_data->irq = platform_get_irq(pd, 0); |
519 | if (drv_data->irq < 0) { | ||
520 | rc = -ENXIO; | ||
521 | goto exit_unmap_regs; | ||
522 | } | ||
519 | drv_data->adapter.id = I2C_HW_MV64XXX; | 523 | drv_data->adapter.id = I2C_HW_MV64XXX; |
520 | drv_data->adapter.algo = &mv64xxx_i2c_algo; | 524 | drv_data->adapter.algo = &mv64xxx_i2c_algo; |
521 | drv_data->adapter.owner = THIS_MODULE; | 525 | drv_data->adapter.owner = THIS_MODULE; |