net: phy: sfp: make the i2c-bus dt property mandatory
authorAntoine Tenart <antoine.tenart@bootlin.com>
Tue, 22 May 2018 10:18:00 +0000 (12:18 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 May 2018 18:34:27 +0000 (14:34 -0400)
This patch makes the i2c-bus property mandatory when using a device
tree. If the sfp i2c bus isn't described it's impossible to guess the
protocol to use for a given module, and the sfp module would then not
work in most cases.

Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/sfp.c

index a91d122..c4c92db 100644 (file)
@@ -976,6 +976,7 @@ static int sfp_probe(struct platform_device *pdev)
        if (pdev->dev.of_node) {
                struct device_node *node = pdev->dev.of_node;
                const struct of_device_id *id;
+               struct i2c_adapter *i2c;
                struct device_node *np;
 
                id = of_match_node(sfp_of_match, node);
@@ -985,19 +986,20 @@ static int sfp_probe(struct platform_device *pdev)
                sff = sfp->type = id->data;
 
                np = of_parse_phandle(node, "i2c-bus", 0);
-               if (np) {
-                       struct i2c_adapter *i2c;
-
-                       i2c = of_find_i2c_adapter_by_node(np);
-                       of_node_put(np);
-                       if (!i2c)
-                               return -EPROBE_DEFER;
-
-                       err = sfp_i2c_configure(sfp, i2c);
-                       if (err < 0) {
-                               i2c_put_adapter(i2c);
-                               return err;
-                       }
+               if (!np) {
+                       dev_err(sfp->dev, "missing 'i2c-bus' property\n");
+                       return -ENODEV;
+               }
+
+               i2c = of_find_i2c_adapter_by_node(np);
+               of_node_put(np);
+               if (!i2c)
+                       return -EPROBE_DEFER;
+
+               err = sfp_i2c_configure(sfp, i2c);
+               if (err < 0) {
+                       i2c_put_adapter(i2c);
+                       return err;
                }
        }