dl_priv = devlink_priv(common->devlink);
        dl_priv->common = common;
 
-       devlink_register(common->devlink);
        /* Provide devlink hook to switch mode when multiple external ports
         * are present NUSS switchdev driver is enabled.
         */
                        dev_err(dev, "devlink params reg fail ret:%d\n", ret);
                        goto dl_unreg;
                }
-               devlink_params_publish(common->devlink);
        }
 
        for (i = 1; i <= common->port_num; i++) {
                }
                devlink_port_type_eth_set(dl_port, port->ndev);
        }
-
+       devlink_register(common->devlink);
        return ret;
 
 dl_port_unreg:
                devlink_port_unregister(dl_port);
        }
 dl_unreg:
-       devlink_unregister(common->devlink);
        devlink_free(common->devlink);
        return ret;
 }
        struct am65_cpsw_port *port;
        int i;
 
+       devlink_unregister(common->devlink);
+
        for (i = 1; i <= common->port_num; i++) {
                port = am65_common_get_port(common, i);
                dl_port = &port->devlink_port;
        }
 
        if (!AM65_CPSW_IS_CPSW2G(common) &&
-           IS_ENABLED(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV)) {
-               devlink_params_unpublish(common->devlink);
-               devlink_params_unregister(common->devlink, am65_cpsw_devlink_params,
+           IS_ENABLED(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV))
+               devlink_params_unregister(common->devlink,
+                                         am65_cpsw_devlink_params,
                                          ARRAY_SIZE(am65_cpsw_devlink_params));
-       }
 
-       devlink_unregister(common->devlink);
        devlink_free(common->devlink);
 }
 
 
        dl_priv = devlink_priv(cpsw->devlink);
        dl_priv->cpsw = cpsw;
 
-       devlink_register(cpsw->devlink);
        ret = devlink_params_register(cpsw->devlink, cpsw_devlink_params,
                                      ARRAY_SIZE(cpsw_devlink_params));
        if (ret) {
                goto dl_unreg;
        }
 
-       devlink_params_publish(cpsw->devlink);
+       devlink_register(cpsw->devlink);
        return ret;
 
 dl_unreg:
-       devlink_unregister(cpsw->devlink);
        devlink_free(cpsw->devlink);
        return ret;
 }
 
 static void cpsw_unregister_devlink(struct cpsw_common *cpsw)
 {
-       devlink_params_unpublish(cpsw->devlink);
+       devlink_unregister(cpsw->devlink);
        devlink_params_unregister(cpsw->devlink, cpsw_devlink_params,
                                  ARRAY_SIZE(cpsw_devlink_params));
-       devlink_unregister(cpsw->devlink);
        devlink_free(cpsw->devlink);
 }