|
@@ -634,13 +634,17 @@ static int davinci_i2c_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
struct davinci_i2c_dev *dev;
|
|
|
struct i2c_adapter *adap;
|
|
|
- struct resource *mem, *irq;
|
|
|
- int r;
|
|
|
-
|
|
|
- irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
|
|
- if (!irq) {
|
|
|
- dev_err(&pdev->dev, "no irq resource?\n");
|
|
|
- return -ENODEV;
|
|
|
+ struct resource *mem;
|
|
|
+ int r, irq;
|
|
|
+
|
|
|
+ irq = platform_get_irq(pdev, 0);
|
|
|
+ if (irq <= 0) {
|
|
|
+ if (!irq)
|
|
|
+ irq = -ENXIO;
|
|
|
+ if (irq != -EPROBE_DEFER)
|
|
|
+ dev_err(&pdev->dev,
|
|
|
+ "can't get irq resource ret=%d\n", irq);
|
|
|
+ return irq;
|
|
|
}
|
|
|
|
|
|
dev = devm_kzalloc(&pdev->dev, sizeof(struct davinci_i2c_dev),
|
|
@@ -655,7 +659,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
|
|
|
init_completion(&dev->xfr_complete);
|
|
|
#endif
|
|
|
dev->dev = &pdev->dev;
|
|
|
- dev->irq = irq->start;
|
|
|
+ dev->irq = irq;
|
|
|
dev->pdata = dev_get_platdata(&pdev->dev);
|
|
|
platform_set_drvdata(pdev, dev);
|
|
|
|