lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5ffdeb33-2e78-4cdd-9b0e-5e7d78d25d73@roeck-us.net>
Date: Wed, 16 Jul 2025 12:12:49 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: Cheng.JackHY@...entec.com, Rob Herring <robh@...nel.org>,
 Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
 <conor+dt@...nel.org>, Jean Delvare <jdelvare@...e.com>
Cc: devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
 linux-hwmon@...r.kernel.org
Subject: Re: [PATCH 2/2] hwmon: (pmbus/q54sj108a2) Add support for q50sn12072
 and q54sn120a1

On 7/1/25 05:03, Jack Cheng via B4 Relay wrote:
> From: Jack Cheng <cheng.jackhy@...entec.com>
> 
> The Q54SN12072 and Q54SN120A1 are high-efficiency, high-density DC-DC power
> module from Delta Power Modules.
> 
> The Q54SN12072, quarter brick, single output 12V. This product provides up
> to 1200 watts of output power at 38~60V. The Q54SN12072 offers peak
> efficiency up to 98.3%@...in.
> 
> The Q54SN120A1, quarter brick, single output 12V. This product provides up
> to 1300 watts of output power at 40~60V. The Q54SN120A1 offers peak
> efficiency up to 98.1%@...in.
> 
> Add support for them to q54sj108a2 driver.
> 
> Signed-off-by: Jack Cheng <cheng.jackhy@...entec.com>
> ---
>   drivers/hwmon/pmbus/q54sj108a2.c | 51 ++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 49 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/hwmon/pmbus/q54sj108a2.c b/drivers/hwmon/pmbus/q54sj108a2.c
> index 4d7086d83aa3..34233d955c48 100644
> --- a/drivers/hwmon/pmbus/q54sj108a2.c
> +++ b/drivers/hwmon/pmbus/q54sj108a2.c
> @@ -21,11 +21,14 @@
>   #define PMBUS_FLASH_KEY_WRITE		0xEC
>   
>   enum chips {
> -	q54sj108a2
> +	q50sn12072,
> +	q54sj108a2,
> +	q54sn120a1
>   };
>   
>   enum {
> -	Q54SJ108A2_DEBUGFS_OPERATION = 0,
> +	Q50SN12072_DEBUGFS_VOUT_COMMAND = 0,
> +	Q54SJ108A2_DEBUGFS_OPERATION,
>   	Q54SJ108A2_DEBUGFS_CLEARFAULT,
>   	Q54SJ108A2_DEBUGFS_WRITEPROTECT,
>   	Q54SJ108A2_DEBUGFS_STOREDEFAULT,
> @@ -54,6 +57,20 @@ struct q54sj108a2_data {
>   #define to_psu(x, y) container_of((x), struct q54sj108a2_data, debugfs_entries[(y)])
>   
>   static struct pmbus_driver_info q54sj108a2_info[] = {
> +	[q50sn12072] = {
> +		.pages = 1,
> +
> +		/* Source : Delta Q50SN12072 */
> +		.format[PSC_TEMPERATURE] = linear,
> +		.format[PSC_VOLTAGE_IN] = linear,
> +		.format[PSC_CURRENT_OUT] = linear,
> +
> +		.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_PIN |
> +		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 | PMBUS_HAVE_POUT,
> +	},
>   	[q54sj108a2] = {
>   		.pages = 1,
>   
> @@ -68,6 +85,20 @@ static struct pmbus_driver_info q54sj108a2_info[] = {
>   		PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
>   		PMBUS_HAVE_STATUS_INPUT,
>   	},
> +	[q54sn120a1] = {
> +		.pages = 1,
> +
> +		/* Source : Delta Q54SN120A1 */
> +		.format[PSC_TEMPERATURE] = linear,
> +		.format[PSC_VOLTAGE_IN] = linear,
> +		.format[PSC_CURRENT_OUT] = linear,
> +
> +		.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_PIN |
> +		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 | PMBUS_HAVE_POUT,
> +	},
>   };
>   
>   static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf,
> @@ -177,6 +208,7 @@ static ssize_t q54sj108a2_debugfs_write(struct file *file, const char __user *bu
>   {
>   	u8 flash_key[4];
>   	u8 dst_data;
> +	u16 val;
>   	ssize_t rc;
>   	int *idxp = file->private_data;
>   	int idx = *idxp;
> @@ -187,6 +219,17 @@ static ssize_t q54sj108a2_debugfs_write(struct file *file, const char __user *bu
>   		return rc;
>   
>   	switch (idx) {
> +	case Q50SN12072_DEBUGFS_VOUT_COMMAND:
> +		rc = kstrtou16_from_user(buf, count, 0, &val);
> +		if (rc < 0)
> +			return rc;
> +
> +		rc = pmbus_write_word_data(psu->client, 0x00,
> +					   PMBUS_VOUT_COMMAND, (const u16)val);
> +		if (rc < 0)
> +			return rc;
> +
> +		break;

That change is completely unrelated to the added chip support. On top of that,
it is dangerous, and the output voltage can be manipulated using regulator
support if needed. Given that, I do not see the point of this change.

Guenter


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ