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;
                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;