diff --git a/config.local/amd64/config.sonic b/config.local/amd64/config.sonic index c16b73fea..28bce424d 100644 --- a/config.local/amd64/config.sonic +++ b/config.local/amd64/config.sonic @@ -174,6 +174,7 @@ CONFIG_SENSORS_TMP464=m CONFIG_I2C_XILINX=m CONFIG_PCI_STUB=y CONFIG_SENSORS_ADM1266=m +CONFIG_SENSORS_Q54SJ108A2=m CONFIG_SENSORS_TMP464=m CONFIG_SPI_XILINX=m diff --git a/patches-sonic/0017-dt-bindings-trivial-devices-Add-Delta-Q54SN120A1-and-Q54SW120A7.patch b/patches-sonic/0017-dt-bindings-trivial-devices-Add-Delta-Q54SN120A1-and-Q54SW120A7.patch new file mode 100644 index 000000000..5feb2cd29 --- /dev/null +++ b/patches-sonic/0017-dt-bindings-trivial-devices-Add-Delta-Q54SN120A1-and-Q54SW120A7.patch @@ -0,0 +1,32 @@ +From 32a7bdbd201be809c690c64a3a233c7bb640c48c Mon Sep 17 00:00:00 2001 +From: Colin Huang +Date: Mon, 16 Mar 2026 16:39:33 +0800 +Subject: [PATCH] dt-bindings: trivial-devices: Add Delta Q54SN120A1 and + Q54SW120A7 + +Add two additional Delta 1/4-brick DC/DC power modules, +Q54SN120A1 and Q54SW120A7, to the trivial-devices list. + +Acked-by: Conor Dooley +Signed-off-by: Colin Huang +Link: https://lore.kernel.org/r/20260316-add-q54sn120a1-q54q54sw120a7-v2-1-60e6182cc4a7@gmail.com +Signed-off-by: Guenter Roeck +--- + Documentation/devicetree/bindings/trivial-devices.yaml | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml +index ccac768f5380a5..03a27494322364 100644 +--- a/Documentation/devicetree/bindings/trivial-devices.yaml ++++ b/Documentation/devicetree/bindings/trivial-devices.yaml +@@ -101,6 +101,10 @@ properties: + - delta,dps920ab + # 1/4 Brick DC/DC Regulated Power Module + - delta,q54sj108a2 ++ # 1300W 1/4 Brick DC/DC Regulated Power Module ++ - delta,q54sn120a1 ++ # 2000W 1/4 Brick DC/DC Regulated Power Module ++ - delta,q54sw120a7 + # Devantech SRF02 ultrasonic ranger in I2C mode + - devantech,srf02 + # Devantech SRF08 ultrasonic ranger diff --git a/patches-sonic/0018-hwmon-pmbus-Add-Delta-Q54SN120A1-Q54SW120A7-chip.patch b/patches-sonic/0018-hwmon-pmbus-Add-Delta-Q54SN120A1-Q54SW120A7-chip.patch new file mode 100644 index 000000000..f5cb16be1 --- /dev/null +++ b/patches-sonic/0018-hwmon-pmbus-Add-Delta-Q54SN120A1-Q54SW120A7-chip.patch @@ -0,0 +1,72 @@ +From ffa2ad0aa64697c29d501f76cb7b7187cbbb147a Mon Sep 17 00:00:00 2001 +From: Colin Huang +Date: Mon, 16 Mar 2026 16:39:34 +0800 +Subject: [PATCH] hwmon: (pmbus) Add Delta Q54SN120A1 Q54SW120A7 chip + +Add the DELTA chips Q54SN120A1, Q54SW120A7 in q54sj108a2, +1/4 Brick DC/DC Regulated Power Module with PMBus support + +Signed-off-by: Colin Huang +Link: https://lore.kernel.org/r/20260316-add-q54sn120a1-q54q54sw120a7-v2-2-60e6182cc4a7@gmail.com +Signed-off-by: Guenter Roeck +--- + drivers/hwmon/pmbus/q54sj108a2.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/drivers/hwmon/pmbus/q54sj108a2.c b/drivers/hwmon/pmbus/q54sj108a2.c +index 7e799f36f923ed..a368cfa9d45ac2 100644 +--- a/drivers/hwmon/pmbus/q54sj108a2.c ++++ b/drivers/hwmon/pmbus/q54sj108a2.c +@@ -271,6 +271,8 @@ static const struct file_operations q54sj108a2_fops = { + + static const struct i2c_device_id q54sj108a2_id[] = { + { "q54sj108a2", q54sj108a2 }, ++ { "q54sn120a1", q54sj108a2 }, ++ { "q54sw120a7", q54sj108a2 }, + { }, + }; + +@@ -280,6 +282,7 @@ static int q54sj108a2_probe(struct i2c_client *client) + { + struct device *dev = &client->dev; + u8 buf[I2C_SMBUS_BLOCK_MAX + 1]; ++ const struct i2c_device_id *mid; + enum chips chip_id; + int ret, i; + struct dentry *debugfs; +@@ -313,8 +316,12 @@ static int q54sj108a2_probe(struct i2c_client *client) + dev_err(dev, "Failed to read Manufacturer Model\n"); + return ret; + } +- if (ret != 14 || strncmp(buf, "Q54SJ108A2", 10)) { +- buf[ret] = '\0'; ++ buf[ret] = '\0'; ++ for (mid = q54sj108a2_id; mid->name[0]; mid++) { ++ if (!strncasecmp(mid->name, buf, strlen(mid->name))) ++ break; ++ } ++ if (!mid->name[0]) { + dev_err(dev, "Unsupported Manufacturer Model '%s'\n", buf); + return -ENODEV; + } +@@ -324,7 +331,10 @@ static int q54sj108a2_probe(struct i2c_client *client) + dev_err(dev, "Failed to read Manufacturer Revision\n"); + return ret; + } +- if (ret != 4 || buf[0] != 'S') { ++ /* ++ * accept manufacturer revision with optional NUL byte ++ */ ++ if (!(ret == 4 || ret == 5) || buf[0] != 'S') { + buf[ret] = '\0'; + dev_err(dev, "Unsupported Manufacturer Revision '%s'\n", buf); + return -ENODEV; +@@ -401,6 +411,8 @@ static int q54sj108a2_probe(struct i2c_client *client) + + static const struct of_device_id q54sj108a2_of_match[] = { + { .compatible = "delta,q54sj108a2", .data = (void *)q54sj108a2 }, ++ { .compatible = "delta,q54sn120a1", .data = (void *)q54sj108a2 }, ++ { .compatible = "delta,q54sw120a7", .data = (void *)q54sj108a2 }, + { }, + }; + diff --git a/patches-sonic/kconfig-inclusions b/patches-sonic/kconfig-inclusions index 4a1f36a8f..f36b82e1e 100644 --- a/patches-sonic/kconfig-inclusions +++ b/patches-sonic/kconfig-inclusions @@ -159,6 +159,8 @@ CONFIG_SPI_GPIO=m CONFIG_SENSORS_INA3221=m # For Nokia CONFIG_RTC_DRV_DS1307=m +# For Nexthop +CONFIG_SENSORS_Q54SJ108A2=m [arm64] # For enabling SDEI diff --git a/patches-sonic/series b/patches-sonic/series index 5cfe415ca..372b516b8 100644 --- a/patches-sonic/series +++ b/patches-sonic/series @@ -244,6 +244,8 @@ driver-tty-serial-8250-add-support-for-fintek-F81214E.patch # Linux upstream pen 0014-i2c-xiic-cosmetic-use-resource-format-specifier-in-d.patch 0015-i2c-xiic-use-numbered-adapter-registration.patch 0016-i2c-xiic-skip-input-clock-setup-on-non-OF-systems.patch +0017-dt-bindings-trivial-devices-Add-Delta-Q54SN120A1-and-Q54SW120A7.patch +0018-hwmon-pmbus-Add-Delta-Q54SN120A1-Q54SW120A7-chip.patch # Fix to avoid kernel panic on Kernel 6.1.94 # https://github.com/sonic-net/sonic-buildimage/issues/20901