Symbol: nvsw_sn2201
drivers/platform/mellanox/nvsw-sn2201.c
1015
static void nvsw_sn2201_destroy_static_devices(struct nvsw_sn2201 *nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1032
static int nvsw_sn2201_config_post_init(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1039
dev = nvsw_sn2201->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1040
adap = i2c_get_adapter(nvsw_sn2201->main_mux_deferred_nr);
drivers/platform/mellanox/nvsw-sn2201.c
1043
nvsw_sn2201->main_mux_deferred_nr);
drivers/platform/mellanox/nvsw-sn2201.c
1049
sn2201_dev = nvsw_sn2201->sn2201_devs;
drivers/platform/mellanox/nvsw-sn2201.c
1050
for (i = 0; i < nvsw_sn2201->sn2201_devs_num; i++, sn2201_dev++) {
drivers/platform/mellanox/nvsw-sn2201.c
1057
err = nvsw_sn2201_create_static_devices(nvsw_sn2201, nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1058
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1065
static int nvsw_sn2201_config_init(struct nvsw_sn2201 *nvsw_sn2201, void *regmap)
drivers/platform/mellanox/nvsw-sn2201.c
1067
struct device *dev = nvsw_sn2201->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1070
nvsw_sn2201->io_data = &nvsw_sn2201_regs_io;
drivers/platform/mellanox/nvsw-sn2201.c
1071
nvsw_sn2201->led_data = &nvsw_sn2201_led;
drivers/platform/mellanox/nvsw-sn2201.c
1072
nvsw_sn2201->wd_data = &nvsw_sn2201_wd;
drivers/platform/mellanox/nvsw-sn2201.c
1073
if (nvsw_sn2201->ext_pwr_source)
drivers/platform/mellanox/nvsw-sn2201.c
1074
nvsw_sn2201->hotplug_data = &nvsw_sn2201_busbar_hotplug;
drivers/platform/mellanox/nvsw-sn2201.c
1076
nvsw_sn2201->hotplug_data = &nvsw_sn2201_hotplug;
drivers/platform/mellanox/nvsw-sn2201.c
1079
if (nvsw_sn2201->io_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1080
nvsw_sn2201->io_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1081
nvsw_sn2201->io_regs =
drivers/platform/mellanox/nvsw-sn2201.c
1083
nvsw_sn2201->io_data,
drivers/platform/mellanox/nvsw-sn2201.c
1084
sizeof(*nvsw_sn2201->io_data));
drivers/platform/mellanox/nvsw-sn2201.c
1085
if (IS_ERR(nvsw_sn2201->io_regs)) {
drivers/platform/mellanox/nvsw-sn2201.c
1086
err = PTR_ERR(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1092
if (nvsw_sn2201->led_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1093
nvsw_sn2201->led_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1094
nvsw_sn2201->led =
drivers/platform/mellanox/nvsw-sn2201.c
1096
nvsw_sn2201->led_data,
drivers/platform/mellanox/nvsw-sn2201.c
1097
sizeof(*nvsw_sn2201->led_data));
drivers/platform/mellanox/nvsw-sn2201.c
1098
if (IS_ERR(nvsw_sn2201->led)) {
drivers/platform/mellanox/nvsw-sn2201.c
1099
err = PTR_ERR(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1105
if (nvsw_sn2201->wd_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1106
nvsw_sn2201->wd_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1107
nvsw_sn2201->wd =
drivers/platform/mellanox/nvsw-sn2201.c
1109
nvsw_sn2201->wd_data,
drivers/platform/mellanox/nvsw-sn2201.c
1110
sizeof(*nvsw_sn2201->wd_data));
drivers/platform/mellanox/nvsw-sn2201.c
1111
if (IS_ERR(nvsw_sn2201->wd)) {
drivers/platform/mellanox/nvsw-sn2201.c
1112
err = PTR_ERR(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1118
if (nvsw_sn2201->hotplug_data) {
drivers/platform/mellanox/nvsw-sn2201.c
1119
nvsw_sn2201->hotplug_data->regmap = regmap;
drivers/platform/mellanox/nvsw-sn2201.c
1120
nvsw_sn2201->pdev_hotplug =
drivers/platform/mellanox/nvsw-sn2201.c
1124
nvsw_sn2201->hotplug_data,
drivers/platform/mellanox/nvsw-sn2201.c
1125
sizeof(*nvsw_sn2201->hotplug_data));
drivers/platform/mellanox/nvsw-sn2201.c
1126
if (IS_ERR(nvsw_sn2201->pdev_hotplug)) {
drivers/platform/mellanox/nvsw-sn2201.c
1127
err = PTR_ERR(nvsw_sn2201->pdev_hotplug);
drivers/platform/mellanox/nvsw-sn2201.c
1132
return nvsw_sn2201_config_post_init(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1135
if (nvsw_sn2201->wd)
drivers/platform/mellanox/nvsw-sn2201.c
1136
platform_device_unregister(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1138
if (nvsw_sn2201->led)
drivers/platform/mellanox/nvsw-sn2201.c
1139
platform_device_unregister(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1141
if (nvsw_sn2201->io_regs)
drivers/platform/mellanox/nvsw-sn2201.c
1142
platform_device_unregister(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1148
static void nvsw_sn2201_config_exit(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1151
if (nvsw_sn2201->pdev_hotplug)
drivers/platform/mellanox/nvsw-sn2201.c
1152
platform_device_unregister(nvsw_sn2201->pdev_hotplug);
drivers/platform/mellanox/nvsw-sn2201.c
1154
if (nvsw_sn2201->wd)
drivers/platform/mellanox/nvsw-sn2201.c
1155
platform_device_unregister(nvsw_sn2201->wd);
drivers/platform/mellanox/nvsw-sn2201.c
1157
if (nvsw_sn2201->led)
drivers/platform/mellanox/nvsw-sn2201.c
1158
platform_device_unregister(nvsw_sn2201->led);
drivers/platform/mellanox/nvsw-sn2201.c
1160
if (nvsw_sn2201->io_regs)
drivers/platform/mellanox/nvsw-sn2201.c
1161
platform_device_unregister(nvsw_sn2201->io_regs);
drivers/platform/mellanox/nvsw-sn2201.c
1174
struct nvsw_sn2201 *nvsw_sn2201 = handle;
drivers/platform/mellanox/nvsw-sn2201.c
1179
nvsw_sn2201->main_mux_devs->adapter = i2c_get_adapter(nvsw_sn2201->main_mux_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1180
if (!nvsw_sn2201->main_mux_devs->adapter) {
drivers/platform/mellanox/nvsw-sn2201.c
1182
dev_err(nvsw_sn2201->dev, "Failed to get adapter for bus %d\n",
drivers/platform/mellanox/nvsw-sn2201.c
1183
nvsw_sn2201->main_mux_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1187
nvsw_sn2201->main_mux_devs_num = ARRAY_SIZE(nvsw_sn2201_main_mux_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1188
err = nvsw_sn2201_create_static_devices(nvsw_sn2201, nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1189
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1191
dev_err(nvsw_sn2201->dev, "Failed to create main mux devices\n");
drivers/platform/mellanox/nvsw-sn2201.c
1195
nvsw_sn2201->cpld_devs->adapter = i2c_get_adapter(nvsw_sn2201->cpld_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1196
if (!nvsw_sn2201->cpld_devs->adapter) {
drivers/platform/mellanox/nvsw-sn2201.c
1198
dev_err(nvsw_sn2201->dev, "Failed to get adapter for bus %d\n",
drivers/platform/mellanox/nvsw-sn2201.c
1199
nvsw_sn2201->cpld_devs->nr);
drivers/platform/mellanox/nvsw-sn2201.c
1204
nvsw_sn2201->cpld_devs->client = i2c_new_dummy_device(nvsw_sn2201->cpld_devs->adapter,
drivers/platform/mellanox/nvsw-sn2201.c
1206
if (IS_ERR(nvsw_sn2201->cpld_devs->client)) {
drivers/platform/mellanox/nvsw-sn2201.c
1207
err = PTR_ERR(nvsw_sn2201->cpld_devs->client);
drivers/platform/mellanox/nvsw-sn2201.c
1208
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
1209
nvsw_sn2201->cpld_devs->brdinfo->type, nvsw_sn2201->cpld_devs->nr,
drivers/platform/mellanox/nvsw-sn2201.c
1210
nvsw_sn2201->cpld_devs->brdinfo->addr);
drivers/platform/mellanox/nvsw-sn2201.c
1214
regmap = devm_regmap_init_i2c(nvsw_sn2201->cpld_devs->client, &nvsw_sn2201_regmap_conf);
drivers/platform/mellanox/nvsw-sn2201.c
1217
dev_err(nvsw_sn2201->dev, "Failed to initialise managed register map\n");
drivers/platform/mellanox/nvsw-sn2201.c
1226
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
1237
dev_err(nvsw_sn2201->dev, "Failed to Sync registers with hardware\n");
drivers/platform/mellanox/nvsw-sn2201.c
1242
err = nvsw_sn2201_config_init(nvsw_sn2201, regmap);
drivers/platform/mellanox/nvsw-sn2201.c
1244
dev_err(nvsw_sn2201->dev, "Failed to configure board\n");
drivers/platform/mellanox/nvsw-sn2201.c
1251
nvsw_sn2201_config_exit(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1256
i2c_put_adapter(nvsw_sn2201->cpld_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1257
nvsw_sn2201->cpld_devs->adapter = NULL;
drivers/platform/mellanox/nvsw-sn2201.c
1260
nvsw_sn2201_destroy_static_devices(nvsw_sn2201, nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1261
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1263
nvsw_sn2201_destroy_static_devices(nvsw_sn2201, nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1264
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1266
i2c_put_adapter(nvsw_sn2201->main_mux_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1271
static int nvsw_sn2201_config_pre_init(struct nvsw_sn2201 *nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1273
nvsw_sn2201->i2c_data = &nvsw_sn2201_i2c_data;
drivers/platform/mellanox/nvsw-sn2201.c
1276
nvsw_sn2201->i2c_data->handle = nvsw_sn2201;
drivers/platform/mellanox/nvsw-sn2201.c
1277
nvsw_sn2201->i2c_data->completion_notify = nvsw_sn2201_i2c_completion_notify;
drivers/platform/mellanox/nvsw-sn2201.c
1278
nvsw_sn2201->pdev_i2c = platform_device_register_resndata(nvsw_sn2201->dev, "i2c_mlxcpld",
drivers/platform/mellanox/nvsw-sn2201.c
1282
nvsw_sn2201->i2c_data,
drivers/platform/mellanox/nvsw-sn2201.c
1283
sizeof(*nvsw_sn2201->i2c_data));
drivers/platform/mellanox/nvsw-sn2201.c
1284
if (IS_ERR(nvsw_sn2201->pdev_i2c))
drivers/platform/mellanox/nvsw-sn2201.c
1285
return PTR_ERR(nvsw_sn2201->pdev_i2c);
drivers/platform/mellanox/nvsw-sn2201.c
1292
struct nvsw_sn2201 *nvsw_sn2201;
drivers/platform/mellanox/nvsw-sn2201.c
1296
nvsw_sn2201 = devm_kzalloc(&pdev->dev, sizeof(*nvsw_sn2201), GFP_KERNEL);
drivers/platform/mellanox/nvsw-sn2201.c
1297
if (!nvsw_sn2201)
drivers/platform/mellanox/nvsw-sn2201.c
1303
nvsw_sn2201->ext_pwr_source = true;
drivers/platform/mellanox/nvsw-sn2201.c
1305
nvsw_sn2201->dev = &pdev->dev;
drivers/platform/mellanox/nvsw-sn2201.c
1306
platform_set_drvdata(pdev, nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1312
nvsw_sn2201->main_mux_deferred_nr = NVSW_SN2201_MAIN_MUX_DEFER_NR;
drivers/platform/mellanox/nvsw-sn2201.c
1313
nvsw_sn2201->main_mux_devs = nvsw_sn2201_main_mux_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1314
nvsw_sn2201->cpld_devs = nvsw_sn2201_cpld_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1315
if (nvsw_sn2201->ext_pwr_source) {
drivers/platform/mellanox/nvsw-sn2201.c
1316
nvsw_sn2201->sn2201_devs = nvsw_sn2201_busbar_static_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1317
nvsw_sn2201->sn2201_devs_num = ARRAY_SIZE(nvsw_sn2201_busbar_static_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1319
nvsw_sn2201->sn2201_devs = nvsw_sn2201_static_brdinfo;
drivers/platform/mellanox/nvsw-sn2201.c
1320
nvsw_sn2201->sn2201_devs_num = ARRAY_SIZE(nvsw_sn2201_static_brdinfo);
drivers/platform/mellanox/nvsw-sn2201.c
1323
return nvsw_sn2201_config_pre_init(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1328
struct nvsw_sn2201 *nvsw_sn2201 = platform_get_drvdata(pdev);
drivers/platform/mellanox/nvsw-sn2201.c
1331
nvsw_sn2201_config_exit(nvsw_sn2201);
drivers/platform/mellanox/nvsw-sn2201.c
1334
nvsw_sn2201_destroy_static_devices(nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1335
nvsw_sn2201->sn2201_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1336
nvsw_sn2201->sn2201_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1338
i2c_put_adapter(nvsw_sn2201->cpld_devs->adapter);
drivers/platform/mellanox/nvsw-sn2201.c
1339
nvsw_sn2201->cpld_devs->adapter = NULL;
drivers/platform/mellanox/nvsw-sn2201.c
1341
nvsw_sn2201_destroy_static_devices(nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
1342
nvsw_sn2201->main_mux_devs,
drivers/platform/mellanox/nvsw-sn2201.c
1343
nvsw_sn2201->main_mux_devs_num);
drivers/platform/mellanox/nvsw-sn2201.c
1346
if (nvsw_sn2201->pdev_i2c)
drivers/platform/mellanox/nvsw-sn2201.c
1347
platform_device_unregister(nvsw_sn2201->pdev_i2c);
drivers/platform/mellanox/nvsw-sn2201.c
981
nvsw_sn2201_create_static_devices(struct nvsw_sn2201 *nvsw_sn2201,
drivers/platform/mellanox/nvsw-sn2201.c
993
dev_err(nvsw_sn2201->dev, "Failed to create client %s at bus %d at addr 0x%02x\n",