Symbol: nvsw_sn2201
drivers/platform/mellanox/nvsw-sn2201.c
1016
static void nvsw_sn2201_destroy_static_devices(struct nvsw_sn2201 *nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1033
static int nvsw_sn2201_config_post_init(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1040
dev = nvsw_sn2201->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1041
adap = i2c_get_adapter(nvsw_sn2201->main_mux_deferred_nr);
drivers/platform/mellanox/nvsw-sn2201.c
1044
nvsw_sn2201->main_mux_deferred_nr);
drivers/platform/mellanox/nvsw-sn2201.c
1050
sn2201_dev = nvsw_sn2201->sn2201_devs;
drivers/platform/mellanox/nvsw-sn2201.c
1051
for (i = 0; i < nvsw_sn2201->sn2201_devs_num; i++, sn2201_dev++) {
drivers/platform/mellanox/nvsw-sn2201.c
1058
err = nvsw_sn2201_create_static_devices(nvsw_sn2201, nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1059
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1066
static int nvsw_sn2201_config_init(struct nvsw_sn2201 *nvsw_sn2201, void *regmap)
drivers/platform/mellanox/nvsw-sn2201.c
1068
struct device *dev = nvsw_sn2201->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1071
nvsw_sn2201->io_data = &nvsw_sn2201_regs_io;
drivers/platform/mellanox/nvsw-sn2201.c
1072
nvsw_sn2201->led_data = &nvsw_sn2201_led;
drivers/platform/mellanox/nvsw-sn2201.c
1073
nvsw_sn2201->wd_data = &nvsw_sn2201_wd;
drivers/platform/mellanox/nvsw-sn2201.c
1074
if (nvsw_sn2201->ext_pwr_source)
drivers/platform/mellanox/nvsw-sn2201.c
1075
nvsw_sn2201->hotplug_data = &nvsw_sn2201_busbar_hotplug;
drivers/platform/mellanox/nvsw-sn2201.c
1077
nvsw_sn2201->hotplug_data = &nvsw_sn2201_hotplug;
drivers/platform/mellanox/nvsw-sn2201.c
1080
if (nvsw_sn2201->io_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1081
nvsw_sn2201->io_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1082
nvsw_sn2201->io_regs =
drivers/platform/mellanox/nvsw-sn2201.c
1084
nvsw_sn2201->io_data,
drivers/platform/mellanox/nvsw-sn2201.c
1085
sizeof(*nvsw_sn2201->io_data));
drivers/platform/mellanox/nvsw-sn2201.c
1086
if (IS_ERR(nvsw_sn2201->io_regs)) {
drivers/platform/mellanox/nvsw-sn2201.c
1087
err = PTR_ERR(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1093
if (nvsw_sn2201->led_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1094
nvsw_sn2201->led_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1095
nvsw_sn2201->led =
drivers/platform/mellanox/nvsw-sn2201.c
1097
nvsw_sn2201->led_data,
drivers/platform/mellanox/nvsw-sn2201.c
1098
sizeof(*nvsw_sn2201->led_data));
drivers/platform/mellanox/nvsw-sn2201.c
1099
if (IS_ERR(nvsw_sn2201->led)) {
drivers/platform/mellanox/nvsw-sn2201.c
1100
err = PTR_ERR(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1106
if (nvsw_sn2201->wd_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1107
nvsw_sn2201->wd_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1108
nvsw_sn2201->wd =
drivers/platform/mellanox/nvsw-sn2201.c
1110
nvsw_sn2201->wd_data,
drivers/platform/mellanox/nvsw-sn2201.c
1111
sizeof(*nvsw_sn2201->wd_data));
drivers/platform/mellanox/nvsw-sn2201.c
1112
if (IS_ERR(nvsw_sn2201->wd)) {
drivers/platform/mellanox/nvsw-sn2201.c
1113
err = PTR_ERR(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1119
if (nvsw_sn2201->hotplug_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1120
nvsw_sn2201->hotplug_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1121
nvsw_sn2201->pdev_hotplug =
drivers/platform/mellanox/nvsw-sn2201.c
1125
nvsw_sn2201->hotplug_data,
drivers/platform/mellanox/nvsw-sn2201.c
1126
sizeof(*nvsw_sn2201->hotplug_data));
drivers/platform/mellanox/nvsw-sn2201.c
1127
if (IS_ERR(nvsw_sn2201->pdev_hotplug)) {
drivers/platform/mellanox/nvsw-sn2201.c
1128
err = PTR_ERR(nvsw_sn2201->pdev_hotplug);
drivers/platform/mellanox/nvsw-sn2201.c
1133
return nvsw_sn2201_config_post_init(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1136
if (nvsw_sn2201->wd)
drivers/platform/mellanox/nvsw-sn2201.c
1137
platform_device_unregister(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1139
if (nvsw_sn2201->led)
drivers/platform/mellanox/nvsw-sn2201.c
1140
platform_device_unregister(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1142
if (nvsw_sn2201->io_regs)
drivers/platform/mellanox/nvsw-sn2201.c
1143
platform_device_unregister(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1149
static void nvsw_sn2201_config_exit(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1152
if (nvsw_sn2201->pdev_hotplug)
drivers/platform/mellanox/nvsw-sn2201.c
1153
platform_device_unregister(nvsw_sn2201->pdev_hotplug);
drivers/platform/mellanox/nvsw-sn2201.c
1155
if (nvsw_sn2201->wd)
drivers/platform/mellanox/nvsw-sn2201.c
1156
platform_device_unregister(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1158
if (nvsw_sn2201->led)
drivers/platform/mellanox/nvsw-sn2201.c
1159
platform_device_unregister(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1161
if (nvsw_sn2201->io_regs)
drivers/platform/mellanox/nvsw-sn2201.c
1162
platform_device_unregister(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1175
struct nvsw_sn2201 *nvsw_sn2201 = handle;
drivers/platform/mellanox/nvsw-sn2201.c
1180
nvsw_sn2201->main_mux_devs->adapter = i2c_get_adapter(nvsw_sn2201->main_mux_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1181
if (!nvsw_sn2201->main_mux_devs->adapter) {
drivers/platform/mellanox/nvsw-sn2201.c
1183
dev_err(nvsw_sn2201->dev, "Failed to get adapter for bus %d\n",
drivers/platform/mellanox/nvsw-sn2201.c
1184
nvsw_sn2201->main_mux_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1188
nvsw_sn2201->main_mux_devs_num = ARRAY_SIZE(nvsw_sn2201_main_mux_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1189
err = nvsw_sn2201_create_static_devices(nvsw_sn2201, nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1190
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1192
dev_err(nvsw_sn2201->dev, "Failed to create main mux devices\n");
drivers/platform/mellanox/nvsw-sn2201.c
1196
nvsw_sn2201->cpld_devs->adapter = i2c_get_adapter(nvsw_sn2201->cpld_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1197
if (!nvsw_sn2201->cpld_devs->adapter) {
drivers/platform/mellanox/nvsw-sn2201.c
1199
dev_err(nvsw_sn2201->dev, "Failed to get adapter for bus %d\n",
drivers/platform/mellanox/nvsw-sn2201.c
1200
nvsw_sn2201->cpld_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1205
nvsw_sn2201->cpld_devs->client = i2c_new_dummy_device(nvsw_sn2201->cpld_devs->adapter,
drivers/platform/mellanox/nvsw-sn2201.c
1207
if (IS_ERR(nvsw_sn2201->cpld_devs->client)) {
drivers/platform/mellanox/nvsw-sn2201.c
1208
err = PTR_ERR(nvsw_sn2201->cpld_devs->client);
drivers/platform/mellanox/nvsw-sn2201.c
1209
dev_err(nvsw_sn2201->dev, "Failed to create %s cpld device at bus %d at addr 0x%02x\n",
drivers/platform/mellanox/nvsw-sn2201.c
1210
nvsw_sn2201->cpld_devs->brdinfo->type, nvsw_sn2201->cpld_devs->nr,
drivers/platform/mellanox/nvsw-sn2201.c
1211
nvsw_sn2201->cpld_devs->brdinfo->addr);
drivers/platform/mellanox/nvsw-sn2201.c
1215
regmap = devm_regmap_init_i2c(nvsw_sn2201->cpld_devs->client, &nvsw_sn2201_regmap_conf);
drivers/platform/mellanox/nvsw-sn2201.c
1218
dev_err(nvsw_sn2201->dev, "Failed to initialise managed register map\n");
drivers/platform/mellanox/nvsw-sn2201.c
1227
dev_err(nvsw_sn2201->dev, "Failed to set register at offset 0x%02x to default value: 0x%02x\n",
drivers/platform/mellanox/nvsw-sn2201.c
1238
dev_err(nvsw_sn2201->dev, "Failed to Sync registers with hardware\n");
drivers/platform/mellanox/nvsw-sn2201.c
1243
err = nvsw_sn2201_config_init(nvsw_sn2201, regmap);
drivers/platform/mellanox/nvsw-sn2201.c
1245
dev_err(nvsw_sn2201->dev, "Failed to configure board\n");
drivers/platform/mellanox/nvsw-sn2201.c
1252
nvsw_sn2201_config_exit(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1257
i2c_put_adapter(nvsw_sn2201->cpld_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1258
nvsw_sn2201->cpld_devs->adapter = NULL;
drivers/platform/mellanox/nvsw-sn2201.c
1261
nvsw_sn2201_destroy_static_devices(nvsw_sn2201, nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1262
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1264
nvsw_sn2201_destroy_static_devices(nvsw_sn2201, nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1265
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1267
i2c_put_adapter(nvsw_sn2201->main_mux_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1272
static int nvsw_sn2201_config_pre_init(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1274
nvsw_sn2201->i2c_data = &nvsw_sn2201_i2c_data;
drivers/platform/mellanox/nvsw-sn2201.c
1277
nvsw_sn2201->i2c_data->handle = nvsw_sn2201;
drivers/platform/mellanox/nvsw-sn2201.c
1278
nvsw_sn2201->i2c_data->completion_notify = nvsw_sn2201_i2c_completion_notify;
drivers/platform/mellanox/nvsw-sn2201.c
1279
nvsw_sn2201->pdev_i2c = platform_device_register_resndata(nvsw_sn2201->dev, "i2c_mlxcpld",
drivers/platform/mellanox/nvsw-sn2201.c
1283
nvsw_sn2201->i2c_data,
drivers/platform/mellanox/nvsw-sn2201.c
1284
sizeof(*nvsw_sn2201->i2c_data));
drivers/platform/mellanox/nvsw-sn2201.c
1285
if (IS_ERR(nvsw_sn2201->pdev_i2c))
drivers/platform/mellanox/nvsw-sn2201.c
1286
return PTR_ERR(nvsw_sn2201->pdev_i2c);
drivers/platform/mellanox/nvsw-sn2201.c
1293
struct nvsw_sn2201 *nvsw_sn2201;
drivers/platform/mellanox/nvsw-sn2201.c
1297
nvsw_sn2201 = devm_kzalloc(&pdev->dev, sizeof(*nvsw_sn2201), GFP_KERNEL);
drivers/platform/mellanox/nvsw-sn2201.c
1298
if (!nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1304
nvsw_sn2201->ext_pwr_source = true;
drivers/platform/mellanox/nvsw-sn2201.c
1306
nvsw_sn2201->dev = &pdev->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1307
platform_set_drvdata(pdev, nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1313
nvsw_sn2201->main_mux_deferred_nr = NVSW_SN2201_MAIN_MUX_DEFER_NR;
drivers/platform/mellanox/nvsw-sn2201.c
1314
nvsw_sn2201->main_mux_devs = nvsw_sn2201_main_mux_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1315
nvsw_sn2201->cpld_devs = nvsw_sn2201_cpld_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1316
if (nvsw_sn2201->ext_pwr_source) {
drivers/platform/mellanox/nvsw-sn2201.c
1317
nvsw_sn2201->sn2201_devs = nvsw_sn2201_busbar_static_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1318
nvsw_sn2201->sn2201_devs_num = ARRAY_SIZE(nvsw_sn2201_busbar_static_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1320
nvsw_sn2201->sn2201_devs = nvsw_sn2201_static_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1321
nvsw_sn2201->sn2201_devs_num = ARRAY_SIZE(nvsw_sn2201_static_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1324
return nvsw_sn2201_config_pre_init(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1329
struct nvsw_sn2201 *nvsw_sn2201 = platform_get_drvdata(pdev);
drivers/platform/mellanox/nvsw-sn2201.c
1332
nvsw_sn2201_config_exit(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1335
nvsw_sn2201_destroy_static_devices(nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1336
nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1337
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1339
i2c_put_adapter(nvsw_sn2201->cpld_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1340
nvsw_sn2201->cpld_devs->adapter = NULL;
drivers/platform/mellanox/nvsw-sn2201.c
1342
nvsw_sn2201_destroy_static_devices(nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1343
nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1344
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1347
if (nvsw_sn2201->pdev_i2c)
drivers/platform/mellanox/nvsw-sn2201.c
1348
platform_device_unregister(nvsw_sn2201->pdev_i2c);
drivers/platform/mellanox/nvsw-sn2201.c
982
nvsw_sn2201_create_static_devices(struct nvsw_sn2201 *nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
994
dev_err(nvsw_sn2201->dev, "Failed to create client %s at bus %d at addr 0x%02x\n",