Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions patch/8013-hwmon-pmbus-mp2975-Clear-interrupts-at-probe.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
From 8d8f4d52f5655747df20317ceaf628e29070475e Mon Sep 17 00:00:00 2001
From: Ciju Rajan K <[email protected]>
Date: Tue, 9 Sep 2025 08:48:47 +0300
Subject: hwmon: pmbus: mp2975: Clear interrupts at probe

In some switches after power on, ALARM is seen for
power_1 input. According to MPS, driver should clear
the faults by writing 0 to CLEAR_CAT_FAULTS (0xFD)
register and CLEAR_FAULTS (0x03) register, during
the probe.

NVBug: #5360318

Signed-off-by: Ciju Rajan K <[email protected]>
---
drivers/hwmon/pmbus/mp2975.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c
index 51986adfb..47f092259 100644
--- a/drivers/hwmon/pmbus/mp2975.c
+++ b/drivers/hwmon/pmbus/mp2975.c
@@ -33,6 +33,7 @@
#define MP2975_MFR_READ_VREF_R2 0xa3
#define MP2975_MFR_OVP_TH_SET 0xe5
#define MP2975_MFR_UVP_SET 0xe6
+#define MP2975_CLEAR_CAT_FAULTS 0xfd

#define MP2975_VOUT_FORMAT BIT(15)
#define MP2975_VID_STEP_SEL_R1 BIT(4)
@@ -659,6 +660,28 @@ mp2975_vout_per_rail_config_get(struct i2c_client *client,
return 0;
}

+static int
+mp2975_clear_interrupts(struct i2c_client *client,
+ struct mp2975_data *data)
+{
+ int i = 0;
+ int ret = 0;
+
+ for (i = 0; i < data->info.pages; i++) {
+ ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, i);
+ if (ret < 0)
+ return ret;
+ ret = i2c_smbus_write_byte_data(client, PMBUS_CLEAR_FAULTS, 0);
+ if (ret < 0)
+ return ret;
+ ret = i2c_smbus_write_byte_data(client, MP2975_CLEAR_CAT_FAULTS, 0);
+ if (ret < 0)
+ return ret;
+ }
+
+ return ret;
+}
+
static struct pmbus_driver_info mp2975_info = {
.pages = 1,
.format[PSC_VOLTAGE_IN] = linear,
@@ -736,6 +759,11 @@ static int mp2975_probe(struct i2c_client *client)
if (ret)
return ret;

+ /* Clear interrupts. */
+ ret = mp2975_clear_interrupts(client, data);
+ if (ret)
+ return ret;
+
return pmbus_do_probe(client, info);
}

--
2.47.2

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From e7838edd2acc793f3b43ab04b3693a340273c330 Mon Sep 17 00:00:00 2001
From: Ciju Rajan K <[email protected]>
Date: Fri, 19 Sep 2025 09:51:17 +0300
Subject: platform: mellanox: mlxreg-dpu: Debug trace for dpu probing

Signed-off-by: Ciju Rajan K <[email protected]>
---
drivers/platform/mellanox/mlxreg-dpu.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/platform/mellanox/mlxreg-dpu.c b/drivers/platform/mellanox/mlxreg-dpu.c
index c79531481..1074c4853 100644
--- a/drivers/platform/mellanox/mlxreg-dpu.c
+++ b/drivers/platform/mellanox/mlxreg-dpu.c
@@ -537,9 +537,13 @@ static int mlxreg_dpu_probe(struct platform_device *pdev)
if (!data || !data->hpdev.brdinfo)
return -EINVAL;

+ dev_info(&pdev->dev, "Probing for adapter %d\n", data->hpdev.nr);
data->hpdev.adapter = i2c_get_adapter(data->hpdev.nr);
- if (!data->hpdev.adapter)
+ if (!data->hpdev.adapter) {
+ dev_info(&pdev->dev, "Will try a deferred probing for %d\n",
+ data->hpdev.nr);
return -EPROBE_DEFER;
+ }

mlxreg_dpu = devm_kzalloc(&pdev->dev, sizeof(*mlxreg_dpu), GFP_KERNEL);
if (!mlxreg_dpu)
--
2.47.2

2 changes: 2 additions & 0 deletions patch/series
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ Support-for-fullcone-nat.patch
8010-mlxsw-i2c-Downstream-Add-retry-mechanism-for-failed-.patch
8011-mlxsw-minimal-Downstream-Disable-ethtool-interface.patch
8012-hwmon-pmbus-Downstream-Workaround-for-psu-attributes.patch
8013-hwmon-pmbus-mp2975-Clear-interrupts-at-probe.patch
8014-platform-mellanox-mlxreg-dpu-Debug-trace-for-dpu-pro.patch
###-> mellanox_hw_mgmt-end

# Cisco patches for 5.10 kernel
Expand Down