|
@@ -1162,9 +1162,11 @@ int mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
|
|
|
if (err)
|
|
|
goto err_hwmon_init;
|
|
|
|
|
|
- err = mlxsw_driver->init(mlxsw_core, mlxsw_bus_info);
|
|
|
- if (err)
|
|
|
- goto err_driver_init;
|
|
|
+ if (mlxsw_driver->init) {
|
|
|
+ err = mlxsw_driver->init(mlxsw_core, mlxsw_bus_info);
|
|
|
+ if (err)
|
|
|
+ goto err_driver_init;
|
|
|
+ }
|
|
|
|
|
|
err = mlxsw_core_debugfs_init(mlxsw_core);
|
|
|
if (err)
|
|
@@ -1173,7 +1175,8 @@ int mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
|
|
|
return 0;
|
|
|
|
|
|
err_debugfs_init:
|
|
|
- mlxsw_core->driver->fini(mlxsw_core);
|
|
|
+ if (mlxsw_core->driver->fini)
|
|
|
+ mlxsw_core->driver->fini(mlxsw_core);
|
|
|
err_driver_init:
|
|
|
err_hwmon_init:
|
|
|
devlink_unregister(devlink);
|
|
@@ -1199,7 +1202,8 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core)
|
|
|
struct devlink *devlink = priv_to_devlink(mlxsw_core);
|
|
|
|
|
|
mlxsw_core_debugfs_fini(mlxsw_core);
|
|
|
- mlxsw_core->driver->fini(mlxsw_core);
|
|
|
+ if (mlxsw_core->driver->fini)
|
|
|
+ mlxsw_core->driver->fini(mlxsw_core);
|
|
|
devlink_unregister(devlink);
|
|
|
mlxsw_emad_fini(mlxsw_core);
|
|
|
mlxsw_core->bus->fini(mlxsw_core->bus_priv);
|