net: ethernet: ti: netcp_ethss: add support for child cpts node
authorGrygorii Strashko <grygorii.strashko@ti.com>
Thu, 6 Jun 2019 16:30:40 +0000 (19:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 9 Jun 2019 19:53:06 +0000 (12:53 -0700)
Allow to place CPTS properties in the child "cpts" DT node. For backward
compatibility - roll-back and read CPTS DT properties from parent node if
"cpts" node is not present.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/netcp_ethss.c

index ec179700c184081a306c1205226cd63acf13454e..2c1fac33136cd43c7a389d51c8b88b467d7572f1 100644 (file)
@@ -3554,7 +3554,7 @@ static int set_gbenu_ethss_priv(struct gbe_priv *gbe_dev,
 static int gbe_probe(struct netcp_device *netcp_device, struct device *dev,
                     struct device_node *node, void **inst_priv)
 {
-       struct device_node *interfaces, *interface;
+       struct device_node *interfaces, *interface, *cpts_node;
        struct device_node *secondary_ports;
        struct cpsw_ale_params ale_params;
        struct gbe_priv *gbe_dev;
@@ -3713,7 +3713,12 @@ static int gbe_probe(struct netcp_device *netcp_device, struct device *dev,
                dev_dbg(gbe_dev->dev, "Created a gbe ale engine\n");
        }
 
-       gbe_dev->cpts = cpts_create(gbe_dev->dev, gbe_dev->cpts_reg, node);
+       cpts_node = of_get_child_by_name(node, "cpts");
+       if (!cpts_node)
+               cpts_node = of_node_get(node);
+
+       gbe_dev->cpts = cpts_create(gbe_dev->dev, gbe_dev->cpts_reg, cpts_node);
+       of_node_put(cpts_node);
        if (IS_ENABLED(CONFIG_TI_CPTS) && IS_ERR(gbe_dev->cpts)) {
                ret = PTR_ERR(gbe_dev->cpts);
                goto free_sec_ports;