UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP,
                           UNICAST_VLAN_BOUNDARY | NO_EXC_COLLISION_DROP);
 
-       ksz8_config_cpu_port(ds);
+       dev->dev_ops->config_cpu_port(ds);
 
        ksz_cfg(dev, REG_SW_CTRL_2, MULTICAST_STORM_DISABLE, true);
 
        .mirror_add = ksz8_port_mirror_add,
        .mirror_del = ksz8_port_mirror_del,
        .get_caps = ksz8_get_caps,
+       .config_cpu_port = ksz8_config_cpu_port,
        .reset = ksz8_reset_switch,
        .init = ksz8_switch_init,
        .exit = ksz8_switch_exit,
 
        if (ret)
                return ret;
 
-       ksz9477_config_cpu_port(ds);
+       dev->dev_ops->config_cpu_port(ds);
 
        ksz_cfg(dev, REG_SW_MAC_CTRL_1, MULTICAST_STORM_DISABLE, true);
 
        .mdb_del = ksz9477_mdb_del,
        .change_mtu = ksz9477_change_mtu,
        .max_mtu = ksz9477_max_mtu,
+       .config_cpu_port = ksz9477_config_cpu_port,
        .reset = ksz9477_reset_switch,
        .init = ksz9477_switch_init,
        .exit = ksz9477_switch_exit,
 
        int (*max_mtu)(struct ksz_device *dev, int port);
        void (*freeze_mib)(struct ksz_device *dev, int port, bool freeze);
        void (*port_init_cnt)(struct ksz_device *dev, int port);
+       void (*config_cpu_port)(struct dsa_switch *ds);
        int (*reset)(struct ksz_device *dev);
        int (*init)(struct ksz_device *dev);
        void (*exit)(struct ksz_device *dev);