net: mvmdio: disable interrupt if resource size is too small
authorRussell King <rmk+kernel@armlinux.org.uk>
Mon, 10 Apr 2017 15:28:20 +0000 (16:28 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 13 Apr 2017 14:59:11 +0000 (10:59 -0400)
Disable the MDIO interrupt, falling back to polled mode, if the resource
size does not allow us to access the interrupt registers.  All current
DT bindings use a size of 0x84, which allows access, but verifying it is
good practice.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvmdio.c

index 6ea5caddca62bb602b1f50c7aa041c40a1ab9e99..614dfde657fe7ff73145cd6e09d5540041c57e7b 100644 (file)
@@ -221,6 +221,12 @@ static int orion_mdio_probe(struct platform_device *pdev)
                clk_prepare_enable(dev->clk);
 
        dev->err_interrupt = platform_get_irq(pdev, 0);
+       if (dev->err_interrupt > 0 &&
+           resource_size(r) < MVMDIO_ERR_INT_MASK + 4) {
+               dev_err(&pdev->dev,
+                       "disabling interrupt, resource size is too small\n");
+               dev->err_interrupt = 0;
+       }
        if (dev->err_interrupt > 0) {
                ret = devm_request_irq(&pdev->dev, dev->err_interrupt,
                                        orion_mdio_err_irq,