From nobody Tue Feb 10 12:27:09 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C34E2253EF for ; Thu, 5 Feb 2026 13:35:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770298522; cv=none; b=UONvctzgmZnpArnkRDXCoyKWLMWEXeYYuCVWi4GxDss+Ac4YIm/GeCw5IIKvGD+C3UQe0x6+MmkM2lS3d27jF4eMtpx36hzPo+m6kmSts1unuTnDcxR0QVew0yoBxk6Kaz1JWzwOEW8JoahSj/Ekye667iN9VeGE65IswEWBi2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770298522; c=relaxed/simple; bh=wpkimDav46YFJfJQ9r6mE6i3dTDYKK0zgDWwQx5eOtI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RXUJ4E9az2jLYsGk7Ven4MRf1AoAjc73Nj9E/yfgAKP+gMeUa78B+8Z1LyQ50WubSP7/e9uEt1I3DDoP8YbXokrGhlLGG+A4QDg4aYEe0b6dnzMxBanniTUcMtG6rab+zLhDi/qYkgnioEWwqI8oVtJoLne1OYkhzOr7wu6LY10= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=U1SbAmf1; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="U1SbAmf1" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2a76f90872cso5592605ad.3 for ; Thu, 05 Feb 2026 05:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770298522; x=1770903322; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=g/NdfuXjST0+v0E9Ees6inVmdG7VSECbbJuJ0e1bFP4=; b=U1SbAmf11qBMa6ke3G8lzS8NNyMTwVCFJXgXH47tudzMeVKOQanG2a+q23X8qRR1hf TLdOrkl37PlwU3qhN0CYvceGBwm6Ga9gAJlV2iiSHTUl1h7dZQOwAGZ72e3kx8GsZt3E HXdxNvO269oMYkXD9K4IYeG3MnM6g5j/eOe61ZKdHRlizKn4lgF2UC8/xMTQPZuTdt9U 0shd95q8sUXMBtSCmBHqGlA0OdBJADcxh6vvVVLLxy7aNbzifCfDuSn8PYbaPPVVL9P6 G0RYiN6QD9amwy7a0tt6AkqRLUnSvuD55B0MKeCvRFfmJHvzzYzORkBjqpqV7doOWdoE WdBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770298522; x=1770903322; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=g/NdfuXjST0+v0E9Ees6inVmdG7VSECbbJuJ0e1bFP4=; b=bWj3VgzbHbPXKwz7WwXbb3rfEcxgJ2h8jfS6Glr8//ZF7RNtG/aYSnfRWNWNtD8+o4 0cp23nTaa9jEfY/zxjSrw29FR29vJtYYfXKdy5JCa5AQyInWYtiHlLFO4yPtsxV9b77z 7pwJBefwI6ByMYeDwas3UCyx+zvL4wdSack4pSUMfyOcUiA4Z2zuhcsokNQx/QVj7Bpe gU3d5e7Q9/pxA04uM/9zvrfJMyOpOl9qxoVtPm22yrwt6V58DkkKH/L9lUA+ehE0o8w4 cZiplDz26ms5ku1F7TWfxaCGbX+yQe/d41xTezxHlEgVhTMzn51Ct5JysEvwDedA0H40 2LUQ== X-Forwarded-Encrypted: i=1; AJvYcCXDcK+QHKY2ZyK7WIa0yZz9WtzJX+97qsRcYI5bKM/U5jJLwVf3ZdJC7fhwDb/WqwxYBGvzmaSXcM1NH40=@vger.kernel.org X-Gm-Message-State: AOJu0YwdASvXUCdxDFHxSoqUYwjaCoEjIuJFjNkIQ3NB3iK0sCHwCSW1 nCYUoBcK+IWMXrktyjWtZGooukzKfP+Wy/pIHCdDzDZlh2U5HwjUBhqB X-Gm-Gg: AZuq6aKYYoodvSEaiBYiAu91D+OJi2ZFcnxV0DQn40eiJYVlLpENiACFFoyajeH/iex 8kAi5IdfGuGpawZXaCMfeQgm62ms/4aXnTdktXO6aWJdZZi8RThFpOWKTT7XbbUjG9nRGS8dLUa O4ZdIXf0TZehoCfceX5WIEdUhHs4TRSzs1mdloTQhDfPld3hGM5qnev3KZ/55EaqCr/M7qtqDPU rjYV7MW1D2vTrUKqfMs4JmvA6SRrBKN/M+hlwZVEExFf/EcmhKtI6NxrL9O55/taLm3l/6xIWBc c8KF/u+YC5llxx3/H1bwI9AVBAKkgj63xseVLuv9dxCZnCnUVlFgGnV9mfJKPAFUqFuQ9cu//cR 6noER10jHg/sUhMwzheWUY5z2kqWdrDKq2lCEtLQJmsFTJ/X0t301XgIsyPck3VGTahpKykFbsY vm1PlL0kc= X-Received: by 2002:a17:903:2449:b0:2a9:322e:2473 with SMTP id d9443c01a7336-2a93400297fmr68462355ad.48.1770298521729; Thu, 05 Feb 2026 05:35:21 -0800 (PST) Received: from [127.0.1.1] ([218.32.81.133]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a933850f41sm57760505ad.7.2026.02.05.05.35.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Feb 2026 05:35:21 -0800 (PST) From: Colin Huang Date: Thu, 05 Feb 2026 21:34:35 +0800 Subject: [PATCH 1/3] hwmon: (pmbus) Add Delta Q54SN120A1 Q54SW120A7 driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260205-add-q54sn120a1-q54q54sw120a7-v1-1-09061ecacfc7@gmail.com> References: <20260205-add-q54sn120a1-q54q54sw120a7-v1-0-09061ecacfc7@gmail.com> In-Reply-To: <20260205-add-q54sn120a1-q54q54sw120a7-v1-0-09061ecacfc7@gmail.com> To: Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jonathan Corbet Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-doc@vger.kernel.org, Colin.Huang2@amd.com, Carl.Lee@amd.com, Peter.Shen@amd.com, Colin Huang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770298516; l=3440; i=u8813345@gmail.com; s=20260202; h=from:subject:message-id; bh=wpkimDav46YFJfJQ9r6mE6i3dTDYKK0zgDWwQx5eOtI=; b=+lC/kRBdv5CB5cGPfsnlTqiRK3DOgwLTb3aC73wBPzJDIKXdvBf2a4qaqPE/mA81eYXGxSQQb IXdk9bUaCkGCcBq9DlcRCaOxfusrAeu4eT1nAaYwcItlTcLD2Ae292o X-Developer-Key: i=u8813345@gmail.com; a=ed25519; pk=Zlg0WqpCw4qbswOqamTBTXIchwR/3SnYZpy7rjaGMdQ= Add the pmbus driver for DELTA Q54SN120A1, Q54SW120A7, 1/4 Brick DC/DC Regulated Power Module with PMBus support Signed-off-by: Colin Huang --- drivers/hwmon/pmbus/q54sj108a2.c | 47 ++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/drivers/hwmon/pmbus/q54sj108a2.c b/drivers/hwmon/pmbus/q54sj10= 8a2.c index 4d7086d83aa3..dca084c98fba 100644 --- a/drivers/hwmon/pmbus/q54sj108a2.c +++ b/drivers/hwmon/pmbus/q54sj108a2.c @@ -21,7 +21,9 @@ #define PMBUS_FLASH_KEY_WRITE 0xEC =20 enum chips { - q54sj108a2 + q54sj108a2, + q54sn120a1, + q54sw120a7 }; =20 enum { @@ -62,6 +64,34 @@ static struct pmbus_driver_info q54sj108a2_info[] =3D { .format[PSC_VOLTAGE_IN] =3D linear, .format[PSC_CURRENT_OUT] =3D linear, =20 + .func[0] =3D PMBUS_HAVE_VIN | + PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | + PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | + PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | + PMBUS_HAVE_STATUS_INPUT, + }, + [q54sn120a1] =3D { + .pages =3D 1, + + /* Source : Delta Q54SN120A1 */ + .format[PSC_TEMPERATURE] =3D linear, + .format[PSC_VOLTAGE_IN] =3D linear, + .format[PSC_CURRENT_OUT] =3D linear, + + .func[0] =3D PMBUS_HAVE_VIN | + PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | + PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | + PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | + PMBUS_HAVE_STATUS_INPUT, + }, + [q54sw120a7] =3D { + .pages =3D 1, + + /* Source : Delta Q54SW120A7 */ + .format[PSC_TEMPERATURE] =3D linear, + .format[PSC_VOLTAGE_IN] =3D linear, + .format[PSC_CURRENT_OUT] =3D linear, + .func[0] =3D PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | @@ -269,6 +299,8 @@ static const struct file_operations q54sj108a2_fops =3D= { =20 static const struct i2c_device_id q54sj108a2_id[] =3D { { "q54sj108a2", q54sj108a2 }, + { "q54sn120a1", q54sn120a1 }, + { "q54sw120a7", q54sw120a7 }, { }, }; =20 @@ -278,6 +310,7 @@ static int q54sj108a2_probe(struct i2c_client *client) { struct device *dev =3D &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; @@ -314,8 +347,12 @@ static int q54sj108a2_probe(struct i2c_client *client) dev_err(dev, "Failed to read Manufacturer Model\n"); return ret; } - if (ret !=3D 14 || strncmp(buf, "Q54SJ108A2", 10)) { - buf[ret] =3D '\0'; + buf[ret] =3D '\0'; + for (mid =3D 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; } @@ -325,7 +362,7 @@ static int q54sj108a2_probe(struct i2c_client *client) dev_err(dev, "Failed to read Manufacturer Revision\n"); return ret; } - if (ret !=3D 4 || buf[0] !=3D 'S') { + if (buf[0] !=3D 'S') { buf[ret] =3D '\0'; dev_err(dev, "Unsupported Manufacturer Revision '%s'\n", buf); return -ENODEV; @@ -402,6 +439,8 @@ static int q54sj108a2_probe(struct i2c_client *client) =20 static const struct of_device_id q54sj108a2_of_match[] =3D { { .compatible =3D "delta,q54sj108a2", .data =3D (void *)q54sj108a2 }, + { .compatible =3D "delta,q54sn120a1", .data =3D (void *)q54sn120a1 }, + { .compatible =3D "delta,q54sw120a7", .data =3D (void *)q54sw120a7 }, { }, }; =20 --=20 2.34.1