Skip to content

Commit e1d9cf2

Browse files
committed
hw-mgmt: patches: Update platform driver for SN58XX_LD platforms
1. Improve error handling in core platform driver 2. Add missing bios_active_image attribute Bug: 4829392 Signed-off-by: Felix Radensky <fradensky@nvidia.com>
1 parent c880086 commit e1d9cf2

File tree

2 files changed

+49
-31
lines changed

2 files changed

+49
-31
lines changed

recipes-kernel/linux/linux-6.1/0106-platform-mellanox-nvsw-bmc-Add-system-control-and-mo.patch

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From 66ca083593adc27abc9741afb9ec79da8af1aafe Mon Sep 17 00:00:00 2001
1+
From f63b398112d63d42535526a6e6775c32b71d5902 Mon Sep 17 00:00:00 2001
22
From: Vadim Pasternak <vadimp@nvidia.com>
33
Date: Sun, 15 Jun 2025 13:13:26 +0300
44
Subject: [PATCH] platform/mellanox: nvsw-bmc: Add system control and
@@ -22,11 +22,11 @@ Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
2222
drivers/platform/mellanox/Kconfig | 29 +
2323
drivers/platform/mellanox/Makefile | 3 +
2424
drivers/platform/mellanox/nvsw-bmc-hid162.c | 2831 +++++++++++++++++
25-
drivers/platform/mellanox/nvsw-core.c | 678 ++++
25+
drivers/platform/mellanox/nvsw-core.c | 685 ++++
2626
drivers/platform/mellanox/nvsw-host-l1.c | 710 +++++
27-
drivers/platform/mellanox/nvsw-host-spc5.c | 938 ++++++
27+
drivers/platform/mellanox/nvsw-host-spc5.c | 944 ++++++
2828
drivers/platform/mellanox/nvsw.h | 293 ++
29-
8 files changed, 5486 insertions(+), 4 deletions(-)
29+
8 files changed, 5499 insertions(+), 4 deletions(-)
3030
create mode 100644 drivers/platform/mellanox/nvsw-bmc-hid162.c
3131
create mode 100644 drivers/platform/mellanox/nvsw-core.c
3232
create mode 100644 drivers/platform/mellanox/nvsw-host-l1.c
@@ -2944,10 +2944,10 @@ index 000000000..96908494c
29442944
+MODULE_LICENSE("Dual BSD/GPL");
29452945
diff --git a/drivers/platform/mellanox/nvsw-core.c b/drivers/platform/mellanox/nvsw-core.c
29462946
new file mode 100644
2947-
index 000000000..048ec3bd2
2947+
index 000000000..1012da6a6
29482948
--- /dev/null
29492949
+++ b/drivers/platform/mellanox/nvsw-core.c
2950-
@@ -0,0 +1,678 @@
2950+
@@ -0,0 +1,685 @@
29512951
+// SPDX-License-Identifier: GPL-2.0+
29522952
+/*
29532953
+ * Nvidia BMC platform driver
@@ -3440,6 +3440,7 @@ index 000000000..048ec3bd2
34403440
+ sizeof(*nvsw_core->regio_data));
34413441
+ if (IS_ERR(nvsw_core->regio)) {
34423442
+ err = PTR_ERR(nvsw_core->regio);
3443+
+ dev_err(nvsw_core->dev, "Failed to register mlxreg-io driver\n");
34433444
+ goto fail_platform_io_register;
34443445
+ }
34453446
+ }
@@ -3451,8 +3452,9 @@ index 000000000..048ec3bd2
34513452
+ PLATFORM_DEVID_NONE, NULL, 0,
34523453
+ nvsw_core->fan_data,
34533454
+ sizeof(*nvsw_core->fan_data));
3454-
+ if (IS_ERR(nvsw_core->fan_data)) {
3455-
+ err = PTR_ERR(nvsw_core->fan_data);
3455+
+ if (IS_ERR(nvsw_core->fan)) {
3456+
+ err = PTR_ERR(nvsw_core->fan);
3457+
+ dev_err(nvsw_core->dev, "Failed to register mlxreg-fan driver\n");
34563458
+ goto fail_platform_fan_register;
34573459
+ }
34583460
+ }
@@ -3466,6 +3468,7 @@ index 000000000..048ec3bd2
34663468
+ sizeof(*nvsw_core->led_data));
34673469
+ if (IS_ERR(nvsw_core->led)) {
34683470
+ err = PTR_ERR(nvsw_core->led);
3471+
+ dev_err(nvsw_core->dev, "Failed to register leds-mlxreg driver\n");
34693472
+ goto fail_platform_leds_register;
34703473
+ }
34713474
+ }
@@ -3482,6 +3485,7 @@ index 000000000..048ec3bd2
34823485
+ sizeof(*nvsw_core->hotplug_data));
34833486
+ if (IS_ERR(nvsw_core->hotplug)) {
34843487
+ err = PTR_ERR(nvsw_core->hotplug);
3488+
+ dev_err(nvsw_core->dev, "Failed to register mlxreg-hotplug driver\n");
34853489
+ goto fail_platform_hotplug_register;
34863490
+ }
34873491
+ }
@@ -3495,6 +3499,7 @@ index 000000000..048ec3bd2
34953499
+ sizeof(*nvsw_core->wd_data[i]));
34963500
+ if (IS_ERR(nvsw_core->wd[i])) {
34973501
+ err = PTR_ERR(nvsw_core->wd[i]);
3502+
+ dev_err(nvsw_core->dev, "Failed to register mlx-wdt driver\n");
34983503
+ goto fail_platform_wd_register;
34993504
+ }
35003505
+ }
@@ -3505,6 +3510,8 @@ index 000000000..048ec3bd2
35053510
+fail_platform_wd_register:
35063511
+ while (i--)
35073512
+ platform_device_unregister(nvsw_core->wd[i]);
3513+
+ if (nvsw_core->hotplug_data)
3514+
+ platform_device_unregister(nvsw_core->hotplug);
35083515
+fail_platform_hotplug_register:
35093516
+ if (nvsw_core->led_data)
35103517
+ platform_device_unregister(nvsw_core->led);
@@ -3566,23 +3573,23 @@ index 000000000..048ec3bd2
35663573
+ }
35673574
+
35683575
+ if (IS_ERR(nvsw_core->regmap)) {
3569-
+ dev_err(nvsw_core->dev, "Failed to create regmap");
3576+
+ dev_err(nvsw_core->dev, "Failed to create regmap\n");
35703577
+ return PTR_ERR(nvsw_core->regmap);
35713578
+ }
35723579
+
35733580
+ /* Sync registers with hardware. */
35743581
+ regcache_mark_dirty(nvsw_core->regmap);
35753582
+ err = regcache_sync(nvsw_core->regmap);
35763583
+ if (err) {
3577-
+ dev_err(nvsw_core->dev, "Failed to sync regmap");
3584+
+ dev_err(nvsw_core->dev, "Failed to sync regmap\n");
35783585
+ return err;
35793586
+ }
35803587
+
35813588
+ /* Set registers default values. */
35823589
+ if (nvsw_core->set_reg_default) {
35833590
+ err = nvsw_core->set_reg_default(nvsw_core->regmap);
35843591
+ if (err) {
3585-
+ dev_err(nvsw_core->dev, "Failed to set default regmap");
3592+
+ dev_err(nvsw_core->dev, "Failed to set default regmap\n");
35863593
+ return err;
35873594
+ }
35883595
+ }
@@ -4344,10 +4351,10 @@ index 000000000..bf12509b2
43444351
+
43454352
diff --git a/drivers/platform/mellanox/nvsw-host-spc5.c b/drivers/platform/mellanox/nvsw-host-spc5.c
43464353
new file mode 100644
4347-
index 000000000..90b07ea21
4354+
index 000000000..70c58b57c
43484355
--- /dev/null
43494356
+++ b/drivers/platform/mellanox/nvsw-host-spc5.c
4350-
@@ -0,0 +1,938 @@
4357+
@@ -0,0 +1,944 @@
43514358
+// SPDX-License-Identifier: GPL-2.0+
43524359
+/*
43534360
+ * Nvidia BMC platform driver
@@ -4902,6 +4909,12 @@ index 000000000..90b07ea21
49024909
+ .mode = 0444,
49034910
+ },
49044911
+ {
4912+
+ .label = "bios_active_image",
4913+
+ .reg = NVSW_REG_GPCOM0_OFFSET,
4914+
+ .mask = GENMASK(7, 0) & ~BIT(5),
4915+
+ .mode = 0444,
4916+
+ },
4917+
+ {
49054918
+ .label = "jtag_cap",
49064919
+ .reg = NVSW_REG_FU_CAP_OFFSET,
49074920
+ .mask = NVSW_FU_CAP_MASK,

recipes-kernel/linux/linux-6.12/0046-platform-mellanox-nvsw-bmc-Add-system-control-and-mo.patch

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From 2811cc1b7ee9f6ce0242591a2a5a3d133a3c0547 Mon Sep 17 00:00:00 2001
1+
From e1efc50e70baeffd64fb6f233fc0b929a530b59e Mon Sep 17 00:00:00 2001
22
From: Vadim Pasternak <vadimp@nvidia.com>
33
Date: Thu, 4 Jul 2024 23:50:27 +0300
44
Subject: [PATCH] platform/mellanox: nvsw-bmc: Add system control and
@@ -22,11 +22,11 @@ Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
2222
drivers/platform/mellanox/Kconfig | 28 +
2323
drivers/platform/mellanox/Makefile | 3 +
2424
drivers/platform/mellanox/nvsw-bmc-hid162.c | 2773 +++++++++++++++++
25-
drivers/platform/mellanox/nvsw-core.c | 686 ++++
25+
drivers/platform/mellanox/nvsw-core.c | 685 ++++
2626
drivers/platform/mellanox/nvsw-host-l1.c | 744 +++++
27-
drivers/platform/mellanox/nvsw-host-spc5.c | 937 ++++++
27+
drivers/platform/mellanox/nvsw-host-spc5.c | 943 ++++++
2828
drivers/platform/mellanox/nvsw.h | 292 ++
29-
8 files changed, 5468 insertions(+)
29+
8 files changed, 5473 insertions(+)
3030
create mode 100644 drivers/platform/mellanox/nvsw-bmc-hid162.c
3131
create mode 100644 drivers/platform/mellanox/nvsw-core.c
3232
create mode 100644 drivers/platform/mellanox/nvsw-host-l1.c
@@ -2881,10 +2881,10 @@ index 000000000..fbc738231
28812881
+MODULE_LICENSE("Dual BSD/GPL");
28822882
diff --git a/drivers/platform/mellanox/nvsw-core.c b/drivers/platform/mellanox/nvsw-core.c
28832883
new file mode 100644
2884-
index 000000000..602a7fd85
2884+
index 000000000..1012da6a6
28852885
--- /dev/null
28862886
+++ b/drivers/platform/mellanox/nvsw-core.c
2887-
@@ -0,0 +1,686 @@
2887+
@@ -0,0 +1,685 @@
28882888
+// SPDX-License-Identifier: GPL-2.0+
28892889
+/*
28902890
+ * Nvidia BMC platform driver
@@ -3389,8 +3389,9 @@ index 000000000..602a7fd85
33893389
+ PLATFORM_DEVID_NONE, NULL, 0,
33903390
+ nvsw_core->fan_data,
33913391
+ sizeof(*nvsw_core->fan_data));
3392-
+ if (IS_ERR(nvsw_core->fan_data)) {
3393-
+ err = PTR_ERR(nvsw_core->fan_data);
3392+
+ if (IS_ERR(nvsw_core->fan)) {
3393+
+ err = PTR_ERR(nvsw_core->fan);
3394+
+ dev_err(nvsw_core->dev, "Failed to register mlxreg-fan driver\n");
33943395
+ goto fail_platform_fan_register;
33953396
+ }
33963397
+ }
@@ -3421,6 +3422,7 @@ index 000000000..602a7fd85
34213422
+ sizeof(*nvsw_core->hotplug_data));
34223423
+ if (IS_ERR(nvsw_core->hotplug)) {
34233424
+ err = PTR_ERR(nvsw_core->hotplug);
3425+
+ dev_err(nvsw_core->dev, "Failed to register mlxreg-hotplug driver\n");
34243426
+ goto fail_platform_hotplug_register;
34253427
+ }
34263428
+ }
@@ -3445,6 +3447,8 @@ index 000000000..602a7fd85
34453447
+fail_platform_wd_register:
34463448
+ while (i--)
34473449
+ platform_device_unregister(nvsw_core->wd[i]);
3450+
+ if (nvsw_core->hotplug_data)
3451+
+ platform_device_unregister(nvsw_core->hotplug);
34483452
+fail_platform_hotplug_register:
34493453
+ if (nvsw_core->led_data)
34503454
+ platform_device_unregister(nvsw_core->led);
@@ -3491,11 +3495,6 @@ index 000000000..602a7fd85
34913495
+ switch (nvsw_core->regmap_type) {
34923496
+ case REGMAP_I2C:
34933497
+ nvsw_core->regmap = devm_regmap_init_i2c(nvsw_core->client, &nvsw_regmap_i2c_conf);
3494-
+ if (IS_ERR(nvsw_core->regmap)) {
3495-
+ dev_err(nvsw_core->dev, "Failed to create I2C regmap\n");
3496-
+ err = PTR_ERR(nvsw_core->regmap);
3497-
+ return err;
3498-
+ }
34993498
+ break;
35003499
+ case REGMAP_IO:
35013500
+ if (nvsw_core->port_map) {
@@ -3511,23 +3510,23 @@ index 000000000..602a7fd85
35113510
+ }
35123511
+
35133512
+ if (IS_ERR(nvsw_core->regmap)) {
3514-
+ dev_err(nvsw_core->dev, "Failed to create regmap");
3513+
+ dev_err(nvsw_core->dev, "Failed to create regmap\n");
35153514
+ return PTR_ERR(nvsw_core->regmap);
35163515
+ }
35173516
+
35183517
+ /* Sync registers with hardware. */
35193518
+ regcache_mark_dirty(nvsw_core->regmap);
35203519
+ err = regcache_sync(nvsw_core->regmap);
35213520
+ if (err) {
3522-
+ dev_err(nvsw_core->dev, "Failed to sync regmap");
3521+
+ dev_err(nvsw_core->dev, "Failed to sync regmap\n");
35233522
+ return err;
35243523
+ }
35253524
+
35263525
+ /* Set registers default values. */
35273526
+ if (nvsw_core->set_reg_default) {
35283527
+ err = nvsw_core->set_reg_default(nvsw_core->regmap);
35293528
+ if (err) {
3530-
+ dev_err(nvsw_core->dev, "Failed to set default regmap");
3529+
+ dev_err(nvsw_core->dev, "Failed to set default regmap\n");
35313530
+ return err;
35323531
+ }
35333532
+ }
@@ -4323,10 +4322,10 @@ index 000000000..46022cb99
43234322
+MODULE_LICENSE("Dual BSD/GPL");
43244323
diff --git a/drivers/platform/mellanox/nvsw-host-spc5.c b/drivers/platform/mellanox/nvsw-host-spc5.c
43254324
new file mode 100644
4326-
index 000000000..6d1c71cf4
4325+
index 000000000..e54bd4109
43274326
--- /dev/null
43284327
+++ b/drivers/platform/mellanox/nvsw-host-spc5.c
4329-
@@ -0,0 +1,937 @@
4328+
@@ -0,0 +1,943 @@
43304329
+// SPDX-License-Identifier: GPL-2.0+
43314330
+/*
43324331
+ * Nvidia BMC platform driver
@@ -4881,6 +4880,12 @@ index 000000000..6d1c71cf4
48814880
+ .mode = 0444,
48824881
+ },
48834882
+ {
4883+
+ .label = "bios_active_image",
4884+
+ .reg = NVSW_REG_GPCOM0_OFFSET,
4885+
+ .mask = GENMASK(7, 0) & ~BIT(5),
4886+
+ .mode = 0444,
4887+
+ },
4888+
+ {
48844889
+ .label = "jtag_cap",
48854890
+ .reg = NVSW_REG_FU_CAP_OFFSET,
48864891
+ .mask = NVSW_FU_CAP_MASK,

0 commit comments

Comments
 (0)