From nobody Sat Jul 25 00:02:34 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07F4830E0C0; Wed, 22 Jul 2026 01:30:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683817; cv=none; b=RLYX6GgZXSHUPy45ixfp4jtPA4rQGeuK4ep2naIb7R5narN3Nlehho4ZdKU9Cih0ZX3bRVoUHzKIjGZeisl0o6sfi6W4warODRIDy6NmKUS6EVyEsgMU0T6XoojemwnHFS0rwPv8nMwl0q+q2FWLR7Xxb0KaaacraaVd1SYVQTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683817; c=relaxed/simple; bh=i4mbqfV+NJt448HuBWWBwjaNfdZgWgi3l9W2qOiI5Tc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=CkMay7anRkljYub0PtptqOQWRHgvg+vLszH3w9k3l4ytwmGrroY+ozgqXT5R71aCUEswP8rsIf8s2TeSRy0NNEWhckYL+gb8bL88/kmZ0RuUfcgEjoiRMa7/HfIk3g8s8ydHwCYC0kaMstZZbuM0/yWN9pe64B5okHEZioYS4tE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=KliB5u0s; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="KliB5u0s" Received: from pps.filterd (m0516787.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M1Dmjq2093891; Tue, 21 Jul 2026 21:30:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=dyVAr /n90YUTwkG+bAthr1qSIZXBTso3kMKm6TocO2s=; b=KliB5u0srxOB823TD/eyj /+DjqMLzXlTNKGx9hCSdd4PZG52fXYMIttLwos0cGyvoGfyVK0CE5f42EYcoXP76 J6HGRQ7fKIxCuZa3SMaB/iBe7A4vyGSRhkjDslruSuZwcCwhfuysKcBEZEYtbsjH 8idfqwwK2Wh+XaIlhd6KNuaDyF1tCB6l6FYenbuf9O9Hob0yJvQlNcbMX6N4AP2N Mmz4wuxcZfaXt8DLB+H2iR3vjRGInZAA7mKOPNftZDck92nxgeDnqzI3md/510Bl IylXnufAWvS5x/qMMvGuTXjYFYkT09Oefaw3aHH/0NuRX29EW01cavS+pSr/Hjal w== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4fgttgktyv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Jul 2026 21:30:02 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66M1U0RY003279 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 21 Jul 2026 21:30:00 -0400 Received: from ASHBMBX9.ad.analog.com (10.64.17.10) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Tue, 21 Jul 2026 21:30:00 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Tue, 21 Jul 2026 21:30:00 -0400 Received: from ATORRENO-L02.ad.analog.com ([10.66.6.191]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66M1Tc8C017211; Tue, 21 Jul 2026 21:29:50 -0400 From: Alexis Czezar Torreno Date: Wed, 22 Jul 2026 09:29:29 +0800 Subject: [PATCH v2 1/3] hwmon: (pmbus/max34440): block unsupported VIN and IIN limit registers 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: <20260722-max34451_fixes-v2-1-bbddb18ec1d6@analog.com> References: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> In-Reply-To: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> To: Guenter Roeck , Kun Yi , =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Corbet , Shuah Khan CC: , , , Alexis Czezar Torreno X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784683778; l=5914; i=alexisczezar.torreno@analog.com; s=20250213; h=from:subject:message-id; bh=i4mbqfV+NJt448HuBWWBwjaNfdZgWgi3l9W2qOiI5Tc=; b=036/3tpjvRbWDP08BQ4l8oIvYmKK3TV4aWIKG3XB0VFLTDRvEd6y3tcSScoKh612pjKxuBn6U ejflWlbPFrlCAlAmNGkdaMot0cp8UxfCiS/tvZmHd3S8DAXoprSgJe/ X-Developer-Key: i=alexisczezar.torreno@analog.com; a=ed25519; pk=XpXmJnRjnsKdDil6YpOlj9+44S+XYXVFnxvkbmaZ+10= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-ORIG-GUID: Z4UlHUf7mB9LLe33CSrlzukbGjBhl4p4 X-Authority-Analysis: v=2.4 cv=DagnbPtW c=1 sm=1 tr=0 ts=6a601d1a cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=OmVn7CZJonkx5R5zMQLL:22 a=VwQbUJbxAAAA:8 a=gAnH3GRIAAAA:8 a=_jlGtV7tAAAA:8 a=nfSHROyFBnurkggdnvMA:9 a=QEXdDO2ut3YA:10 a=nlm17XC03S6CtCLSeiRr:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfX/Qkn81xFQVd6 DXl7BQm9q2RQCPywZ237EuC0o47U2cCIwGOmmtwjawmbB16IAY3gBHSI6vG9+WLFAw2RXnSJwA0 iLmTWExCrn+thzfowWSW299ZbWlGBs8WXA+0cInw9GxB5mTplwMr X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfX9ySVyStapCmE HKO0YRoWkfHkDEChuLD49Pzu1gi0ynvkcKK2WHfFPoeI8mcxXtqnWOuKkxn2ia3+drv7Ls7eRBe GFy3I8+SXm2m/AYItV5b1/IxR4ERHX15rjG3FD69Lc9IO6BFW1Fu5SKdYTzjo8g1Yml+3bGN9mK Qd9SihT2pXiLnvwyFDk43YQuiwGPxcYFTDD/fGla16Gr8wRgunU7psDiSyB6fOYWP7RAC+XLRm9 U1EzivjusdvFfeifshPIdNft/Y9W2bAWf0Pxa8zms/w/8RNMtgEhJv82limQOd3ViiuxfdNFHEP TKmf+AQ1GevI+Bbx+2y+wLy5j5x9v+p0gCkv6oplrpM2fPYwgQzuclfDqnwRRpHu3Cv/MqKQhhG MG47d7s57L0QwPoBte2LLfC1AJpE7HCcz1521ktJ9xjdpgSGxK+V0gBIrY9BrS7wnuDslP6kHFw t4sMimxUvxjL1RmDbaA== X-Proofpoint-GUID: Z4UlHUf7mB9LLe33CSrlzukbGjBhl4p4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_01,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 clxscore=1015 suspectscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220011 MAX34451 and ADPM chips do not support standard PMBus VIN/IIN limit registers, manufacturer specific min/max registers, or undercurrent or undertemperature fault limits. STATUS_BYTE and STATUS_OTHER are also not available. Accessing these non-existent registers during driver initialization triggers a CML error and asserts ALERT. Handled by blocking these functions during read/write. Fixes: 7a001dbab4ad ("hwmon: (pmbus/max34440) Add support for MAX34451.") Fixes: 629cf8f6c23a ("hwmon: (pmbus/max34440) Add support for ADPM12160") Fixes: 2e0b52f1ae88 ("hwmon: (pmbus/max34440): add support adpm12200") Fixes: 479bfeba2eb6 ("hwmon: (pmbus/max34440): add support adpm12250") Signed-off-by: Alexis Czezar Torreno Link: https://lore.kernel.org/r/20260716-max34451_fixes-v1-1-a941b27eaecb@a= nalog.com Signed-off-by: Guenter Roeck --- drivers/hwmon/pmbus/max34440.c | 80 ++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 80 insertions(+) diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index 74876d2207fbe4014b8b54a9fd9682370fc3bbed..e56057e9273c1639bddbaf4e665= ea159f1d7c3ed 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -88,6 +88,33 @@ static int max34440_read_word_data(struct i2c_client *cl= ient, int page, ret =3D pmbus_read_word_data(client, page, phase, data->iout_oc_warn_limit); break; + case PMBUS_VIN_OV_FAULT_LIMIT: + case PMBUS_VIN_OV_WARN_LIMIT: + case PMBUS_VIN_UV_WARN_LIMIT: + case PMBUS_VIN_UV_FAULT_LIMIT: + case PMBUS_MFR_VIN_MIN: + case PMBUS_MFR_VIN_MAX: + case PMBUS_IIN_OC_WARN_LIMIT: + case PMBUS_IIN_OC_FAULT_LIMIT: + case PMBUS_MFR_IIN_MAX: + case PMBUS_MFR_VOUT_MIN: + case PMBUS_MFR_VOUT_MAX: + case PMBUS_IOUT_UC_FAULT_LIMIT: + case PMBUS_MFR_IOUT_MAX: + case PMBUS_UT_WARN_LIMIT: + case PMBUS_UT_FAULT_LIMIT: + case PMBUS_MFR_MAX_TEMP_1: + /* + * MAX34451/ADPM family do not support VIN/IIN limit registers, + * manufacturer-specific min/max registers, or undercurrent/ + * undertemperature fault limits. Accessing these triggers CML + * error and asserts ALERT. + */ + if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || + data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + return -ENXIO; + ret =3D -ENODATA; + break; case PMBUS_VIRT_READ_VOUT_MIN: ret =3D pmbus_read_word_data(client, page, phase, MAX34440_MFR_VOUT_MIN); @@ -244,6 +271,51 @@ static int max34440_read_byte_data(struct i2c_client *= client, int page, int reg) return ret; } =20 +static int max34451_read_byte_data(struct i2c_client *client, int page, in= t reg) +{ + const struct pmbus_driver_info *info =3D pmbus_get_driver_info(client); + const struct max34440_data *data =3D to_max34440_data(info); + + switch (reg) { + case PMBUS_STATUS_BYTE: + case PMBUS_STATUS_OTHER: + /* + * MAX34451/ADPM family do not support STATUS_BYTE or + * STATUS_OTHER registers. Accessing them triggers CML + * error and asserts ALERT. + */ + if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || + data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + return -ENXIO; + return -ENODATA; + default: + return -ENODATA; + } +} + +static int max34451_write_byte_data(struct i2c_client *client, int page, + int reg, u8 byte) +{ + const struct pmbus_driver_info *info =3D pmbus_get_driver_info(client); + const struct max34440_data *data =3D to_max34440_data(info); + + switch (reg) { + case PMBUS_STATUS_BYTE: + case PMBUS_STATUS_OTHER: + /* + * MAX34451/ADPM family do not support STATUS_BYTE or + * STATUS_OTHER registers. Writing to them triggers CML + * error and asserts ALERT. + */ + if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || + data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + return -ENXIO; + return -ENODATA; + default: + return -ENODATA; + } +} + static int max34451_set_supported_funcs(struct i2c_client *client, struct max34440_data *data) { @@ -363,7 +435,9 @@ static struct pmbus_driver_info max34440_info[] =3D { .func[9] =3D PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT, .func[10] =3D PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT, .func[18] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data =3D max34451_read_byte_data, .read_word_data =3D max34440_read_word_data, + .write_byte_data =3D max34451_write_byte_data, .write_word_data =3D max34440_write_word_data, }, [adpm12200] =3D { @@ -399,7 +473,9 @@ static struct pmbus_driver_info max34440_info[] =3D { .func[10] =3D PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT, .func[14] =3D PMBUS_HAVE_IOUT, .func[18] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data =3D max34451_read_byte_data, .read_word_data =3D max34440_read_word_data, + .write_byte_data =3D max34451_write_byte_data, .write_word_data =3D max34440_write_word_data, }, [adpm12250] =3D { @@ -433,7 +509,9 @@ static struct pmbus_driver_info max34440_info[] =3D { .func[10] =3D PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT, .func[14] =3D PMBUS_HAVE_IOUT, .func[18] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data =3D max34451_read_byte_data, .read_word_data =3D max34440_read_word_data, + .write_byte_data =3D max34451_write_byte_data, .write_word_data =3D max34440_write_word_data, }, [max34440] =3D { @@ -581,7 +659,9 @@ static struct pmbus_driver_info max34440_info[] =3D { .func[18] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[19] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[20] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data =3D max34451_read_byte_data, .read_word_data =3D max34440_read_word_data, + .write_byte_data =3D max34451_write_byte_data, .write_word_data =3D max34440_write_word_data, .page_change_delay =3D MAX34440_PAGE_CHANGE_DELAY, }, --=20 2.34.1 From nobody Sat Jul 25 00:02:34 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0215134D38B; Wed, 22 Jul 2026 01:30:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683821; cv=none; b=YnT3Uw/f5mEnmhyXRUA2dpuV4nz6wNqz7GE+WagHN9/n1wwxQZBX9z6LZzrjFHiG57Snh+EUzDdUp58LaqKWLWJfAb0dUsudfMDXGV04XkM3p6dlrfk3uFzUj9XetYBtO1ebG3XtbOrjf2VkK9hDBCUsx+6/ey1CPHwJ2m2En7k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683821; c=relaxed/simple; bh=ZDz7OToRC0x+fXC+unHHL5ESwVdV4m5xPFhhcUr3XjI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=l2n6iM6B/ED52WGfq86csaxQ+JvSNCQwsmoHapM1afYamPIhZq4mKTPYr+uluxcfeuimMZt5ZKBpcLW2VOBBt/cNs809T9D14CQGsk0PKLJjb6fg42CyVepTGIhdaMgOkZPtORSSJTCeoh5F1nRuLDNFyG17ld5umRfRkad+HPA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=FE3C7UoY; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="FE3C7UoY" Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M1DEj61981695; Tue, 21 Jul 2026 21:30:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=ahver y36VAvV9n/xSR4QgUjOb2HtAm9nbRjZErPrdkI=; b=FE3C7UoYiX3tSzchLc9nM dsAMAjIyTPcsQMqHTWS5MPc39OwSDH7cn994ECck/MBFfF50XaUNOawxHHHcFP10 G/6XHm8uFRB98j7+jzdv1bTEn/NTzVLdF4Ybw5TnykvTFj6rSjGxEC87nbiUKcjQ tciP6fykL65Ia0N8/oZGGF6MSZlOsz6SSr+vlUu3zs7Cy7rh5G9t8wxGFVRe04lf 3a3pMnVehSoWydm9LX6BnAgHkRP8x2Hg6OiJonMZaozhcGyLlG5jCb+mxktQb8SG oECmP/n9iq33OS9qsceOQ56mKeqtcJpkfkZmMAbmVzch9xf8EfAtF3Av0WsynSiN g== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4fjgp0gr0m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Jul 2026 21:30:06 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66M1U5rb003334 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 21 Jul 2026 21:30:05 -0400 Received: from ASHBMBX9.ad.analog.com (10.64.17.10) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Tue, 21 Jul 2026 21:30:04 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Tue, 21 Jul 2026 21:30:04 -0400 Received: from ATORRENO-L02.ad.analog.com ([10.66.6.191]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66M1Tc8D017211; Tue, 21 Jul 2026 21:29:55 -0400 From: Alexis Czezar Torreno Date: Wed, 22 Jul 2026 09:29:30 +0800 Subject: [PATCH v2 2/3] hwmon: (pmbus/max34440): add support for newer version of max34451 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: <20260722-max34451_fixes-v2-2-bbddb18ec1d6@analog.com> References: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> In-Reply-To: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> To: Guenter Roeck , Kun Yi , =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Corbet , Shuah Khan CC: , , , Alexis Czezar Torreno X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784683778; l=1932; i=alexisczezar.torreno@analog.com; s=20250213; h=from:subject:message-id; bh=ZDz7OToRC0x+fXC+unHHL5ESwVdV4m5xPFhhcUr3XjI=; b=pZhavWrQW01oK5vprdD83wCftWLYO/obgLGJzuKQUkb26XlPpZcUKlrp7l5obAWlh/ZkRg+Hu P5lejmxHWTRAjucQ0Rd505B8y6Uh3InJgl/7zbn1ueps59ijAkjRQ38 X-Developer-Key: i=alexisczezar.torreno@analog.com; a=ed25519; pk=XpXmJnRjnsKdDil6YpOlj9+44S+XYXVFnxvkbmaZ+10= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfX3CpzEK1+apmq Zp+uEo1QtmhhzvSCGHup6ll2j7jg0iRDyGzZDdx2R0UPXVWXZiwt0KeFvYs9jEkcG49mk+0lYEf I53oHHzSJM8FvGL3TzBcaUrGsWBnsPujU1elGILiCbgKcQug4YE7 X-Proofpoint-GUID: 6F8F3K7iTmfspcIkP3nAV2eXmAyyIrDx X-Proofpoint-ORIG-GUID: 6F8F3K7iTmfspcIkP3nAV2eXmAyyIrDx X-Authority-Analysis: v=2.4 cv=cPXQdFeN c=1 sm=1 tr=0 ts=6a601d1e cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=Z0pTeXoby7EwIRygza74:22 a=gAnH3GRIAAAA:8 a=KyYa-aBjXRLsE6yk1RUA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfX4zoGRzWWqXd+ F5rQO1YKD5ubU6BrCtrEnO2SrzZRQfrfpa8m7I3jC017K5764HlMuQ48WC4pgnTQ5LE3K/kq7vx 3q5vIRqPDz6SCx/aV2IVDi8jlYPouFUMlLHnhAyUEkF++X/tQpwneTeq2mBE78hB0rDWHSQEWhf hDM2haSdrnd548a9xRW/3xGl5whf1uCYFXptfRBxQchssQacdXxLwC0jLun/vwXOZ1PsiWq9Dya dUjZK6xbE2vtbs/M+r+6fuktrDSaWjyBcn0T5uhH9epWCCKPNR4UCMw+oO57gpR+uLbe6J8P8z3 IUabqlclMeNNlq7z+efmT7ox61aPdERKwf4Cek/aWUxbyJLbMQnkPCyKOwa6fDlLv+WsJyfCm8m HYczoWpYSu1cSuT75bs5f7Vh91Fta6MvpVMimS0YwthPxtq7IQ1cj0FGj1ZWomTxLu9XIzmIx4a VHJkfVyl+HqSM2UGmTA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_01,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 impostorscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220011 The MAX34451 released a newer version called max34451etna8+. This simply changes the direct format coefficients Signed-off-by: Alexis Czezar Torreno --- drivers/hwmon/pmbus/max34440.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index e56057e9273c1639bddbaf4e665ea159f1d7c3ed..81514727565f29c7251fe93f049= cdd6b0f214f81 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -59,6 +59,7 @@ enum chips { #define MAX34440_IOUT_OC_FAULT_LIMIT 0x4A =20 #define MAX34451ETNA6_MFR_REV 0x0012 +#define MAX34451ETNA8_MFR_REV 0x0014 =20 #define MAX34451_MFR_CHANNEL_CONFIG 0xe4 #define MAX34451_MFR_CHANNEL_CONFIG_SEL_MASK 0x3f @@ -343,12 +344,24 @@ static int max34451_set_supported_funcs(struct i2c_cl= ient *client, max34451_na6 =3D true; data->info.format[PSC_VOLTAGE_IN] =3D direct; data->info.format[PSC_CURRENT_IN] =3D direct; - data->info.m[PSC_VOLTAGE_IN] =3D 1; + data->info.b[PSC_VOLTAGE_IN] =3D 0; - data->info.R[PSC_VOLTAGE_IN] =3D 3; - data->info.m[PSC_CURRENT_IN] =3D 1; data->info.b[PSC_CURRENT_IN] =3D 0; - data->info.R[PSC_CURRENT_IN] =3D 2; + if (rv >=3D MAX34451ETNA8_MFR_REV) { + data->info.m[PSC_VOLTAGE_IN] =3D 125; + data->info.R[PSC_VOLTAGE_IN] =3D 0; + data->info.m[PSC_VOLTAGE_OUT] =3D 125; + data->info.R[PSC_VOLTAGE_OUT] =3D 0; + data->info.m[PSC_CURRENT_IN] =3D 250; + data->info.R[PSC_CURRENT_IN] =3D -1; + data->info.m[PSC_CURRENT_OUT] =3D 250; + data->info.R[PSC_CURRENT_OUT] =3D -1; + } else { + data->info.m[PSC_VOLTAGE_IN] =3D 1; + data->info.R[PSC_VOLTAGE_IN] =3D 3; + data->info.m[PSC_CURRENT_IN] =3D 1; + data->info.R[PSC_CURRENT_IN] =3D 2; + } data->iout_oc_fault_limit =3D PMBUS_IOUT_OC_FAULT_LIMIT; data->iout_oc_warn_limit =3D PMBUS_IOUT_OC_WARN_LIMIT; } --=20 2.34.1 From nobody Sat Jul 25 00:02:34 2026 Received: from mx0b-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47C773793CB; Wed, 22 Jul 2026 01:30:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683825; cv=none; b=CI11KGoqhbZKPDKbX+tFwuX7J7fXKpnJ5picryURlozjh+4bIFwzQxXfDvQwgbUQGF2DUND0sEt+kkWOfGP0Xk6o1M9n8tQMWSTpW7HVOKLv3D2NwGu8LJLDqhY2W9AA10eE+rXhecxG4dHXbs3keBw3iy2fZbemhXbVt1Tbq5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784683825; c=relaxed/simple; bh=l3wzBLQmr1c0ZvaLGN2jwhw2KDkY/9eaRlh2BRMzyL0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=GMSMOcXERterG7avF3lH3nMAO2RszesVyOqYFGzOyGEWVbJELpROU4mYPvCfaPZ+2yW4vwqJYww9HxFACZXwYE2dMFXTdgN33hzHCaOn1bdHQME/xcmqbdFBm05X2qCYQSNVL6t3ZxeX5JGAGMzp0LcPJbBLiDk00Vyrx7zjTe4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=XwiAN8xC; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="XwiAN8xC" Received: from pps.filterd (m0375855.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M1DK9L1779237; Tue, 21 Jul 2026 21:30:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=tlIig ReUX00vRy6HVs5t/wQ5x6w45ncsVBdW64h18Uk=; b=XwiAN8xC69PNY2cJqvl2j tykaGrt40qa6CPFg0/AYv1cQ24dTMw3oKjf9FAq7wO4u2Q4Ox4uPj7A13Y2lMLY1 Oc1Iw2CrFWCvhBzTnGBtmhaPqDaHtqDAc9TCVrNpUG6oZljdcZXtS8F1Bfs2phni yKaLH5hfeTBzLWWCWwA2S5b3z2W2L1QNiBo8o3GtuObW/4bDOD613+rJ3z1DdiNf taPDQL++vfd9C5EOfFIbZK+67usu8o4X9HOkhINX66wX7ivJTbgJ1+J+yBJS0TGZ 5J8VZ1sJuOlXQvnmUVFgUS3suOwqIv1R4Kt/cxw9ll0EMdLtPNsh14Cvfq5sBcfk A== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0b-00128a01.pphosted.com (PPS) with ESMTPS id 4fj6vquasr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Jul 2026 21:30:11 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66M1UAut003358 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 21 Jul 2026 21:30:10 -0400 Received: from ASHBMBX9.ad.analog.com (10.64.17.10) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Tue, 21 Jul 2026 21:30:08 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Tue, 21 Jul 2026 21:30:08 -0400 Received: from ATORRENO-L02.ad.analog.com ([10.66.6.191]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66M1Tc8E017211; Tue, 21 Jul 2026 21:29:59 -0400 From: Alexis Czezar Torreno Date: Wed, 22 Jul 2026 09:29:31 +0800 Subject: [PATCH v2 3/3] hwmon: (pmbus/max34440): Add support for MAX34452 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: <20260722-max34451_fixes-v2-3-bbddb18ec1d6@analog.com> References: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> In-Reply-To: <20260722-max34451_fixes-v2-0-bbddb18ec1d6@analog.com> To: Guenter Roeck , Kun Yi , =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Corbet , Shuah Khan CC: , , , Alexis Czezar Torreno , Carlos Jones Jr X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784683778; l=11280; i=alexisczezar.torreno@analog.com; s=20250213; h=from:subject:message-id; bh=Crr8oABN9q4TqBHEzjcaLPvAMErh7wa0wfr1pEW1GDg=; b=Q4FkA4s5xGSFMAkL7p4CD05uI7FgSOpvHCNpLcdKATztTEjktQ+teEkJzXHwS7PRI5SscNLvr kOT5cmGfNpPAsLwDbzgEsOY+gtdCXzK+TYTaDFWl5kDS4iK9hvXklNy X-Developer-Key: i=alexisczezar.torreno@analog.com; a=ed25519; pk=XpXmJnRjnsKdDil6YpOlj9+44S+XYXVFnxvkbmaZ+10= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-GUID: 4EZsEuD0D4VYyOZYtI0pbdcaAV6jozna X-Proofpoint-ORIG-GUID: 4EZsEuD0D4VYyOZYtI0pbdcaAV6jozna X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfX9ozQ00cPhWst zN33T/Z8N9mKFgwFSWcyudyLeu+eSRr+pfAujaDXO969q6fAifCgESq7HHtUQ9iXaO9pvT4MymC Om8AWbtD3h1Z4vAHrvDJ0ZPWVI3smQ0lfMbpW/DMkf81v1S//it6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDAxMSBTYWx0ZWRfXxVA5iZibmxQd wyXReq7xTdvPZZnF+RsaipQIVp9Yr8B676EEPIyMTC+PTzeIekJKrKi2eEtsoxYm0hEiGQhGVxR Qy1UZZCYarkwhkv6S0crHJQkj/MmB6pKzfgRn+KpwoI8hSCk/BRx7pkUbq99Oz1+kE8VSTa8Vuq cXlQMUbYID1rYQ984ul05q6S8DVm042KfCTXdTFRRifgNLQDWh9sVKOFVZs3KtfVyoMPrZEh3xx hqxODM4F4gut6mebjcDNMrqngSl+CMst2kY2EUK2kkwMNWvjG+FhjHAcIIOAYX6CUi9xSCpdTkz d05+LmFo58v6LXxC5HVgeljb/BQ7/ZR3ZIJVbMTToY4Nl47GItiO0zTcfkX+Ht+Wu2UzpiSFLCL BotNk4esG+q03DfRqZDAjBEUb5T236IoL7ypjw4PhAXMdbKjA1uPhrhvTWWYOBRUKgVpEyKMBM7 iweUTYolZ6y72cXREzQ== X-Authority-Analysis: v=2.4 cv=WIpPmHsR c=1 sm=1 tr=0 ts=6a601d23 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=N--XFCr6TIEc_64PeIT2:22 a=gAnH3GRIAAAA:8 a=ArxT_WwmEDJpJ2np-awA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_01,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 impostorscore=0 suspectscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220011 From: Carlos Jones Jr Add support for Maxim MAX34452 PMBus 16-Channel V/I Monitor and 12-Channel Sequencer/Marginer. The device is similar to MAX34451 and shares the same configuration function. The MAX34452 supports: - 16 configurable voltage/current monitoring channels - 5 temperature sensors (pages 16-20) - Dynamic channel configuration via MFR_CHANNEL_CONFIG - IOUT average monitoring Signed-off-by: Carlos Jones Jr Co-Developed by: Alexis Czezar Torreno Signed-off-by: Alexis Czezar Torreno --- Documentation/hwmon/max34440.rst | 26 +++++++++----- drivers/hwmon/pmbus/Kconfig | 5 +-- drivers/hwmon/pmbus/max34440.c | 75 ++++++++++++++++++++++++++++++------= ---- 3 files changed, 78 insertions(+), 28 deletions(-) diff --git a/Documentation/hwmon/max34440.rst b/Documentation/hwmon/max3444= 0.rst index e7421f4dbf38fc1436bbaeba71d4461a00f8cefb..866f22b88e9b360ff54aa528074= 84bb3e859e56e 100644 --- a/Documentation/hwmon/max34440.rst +++ b/Documentation/hwmon/max34440.rst @@ -65,6 +65,16 @@ Supported chips: =20 Datasheet: https://www.analog.com/media/en/technical-documentation/dat= a-sheets/max34451.pdf =20 + * Maxim MAX34452 + + PMBus 16-Channel V/I Monitor and 12-Channel Sequencer/Marginer + + Prefixes: 'max34452' + + Addresses scanned: - + + Datasheet: - + * Maxim MAX34460 =20 PMBus 12-Channel Voltage Monitor & Sequencer @@ -94,11 +104,11 @@ Description This driver supports multiple devices: hardware monitoring for Maxim MAX34= 440 PMBus 6-Channel Power-Supply Manager, MAX34441 PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller, and MAX34446 PMBus Power-Supply Da= ta -Logger; PMBus Voltage Monitor and Sequencers for MAX34451, MAX34460, and -MAX34461; PMBus DC/DC Power Module ADPM12160, ADPM12200, and ADPM12250. The -MAX34451 supports monitoring voltage or current of 12 channels based on GIN -pins. The MAX34460 supports 12 voltage channels, and the MAX34461 supports= 16 -voltage channels. The ADPM12160, ADPM12200, and ADPM12250 also monitors bo= th +Logger; PMBus Voltage Monitor and Sequencers for MAX34451, MAX34452, MAX34= 460, +and MAX34461; PMBus DC/DC Power Module ADPM12160, ADPM12200, and ADPM12250= . The +MAX34451 and MAX34452 support monitoring voltage or current of 16 channels= based +on GIN pins. The MAX34460 supports 12 voltage channels, and the MAX34461 s= upports +16 voltage channels. The ADPM12160, ADPM12200, and ADPM12250 also monitor = both input and output of voltage and current. =20 The driver is a client driver to the core PMBus driver. Please see @@ -171,7 +181,7 @@ curr[1-6]_crit Critical maximum current. From IOUT_OC_= FAULT_LIMIT register. curr[1-6]_max_alarm Current high alarm. From IOUT_OC_WARNING status. curr[1-6]_crit_alarm Current critical high alarm. From IOUT_OC_FAULT statu= s. -curr[1-4]_average Historical average current (MAX34446/34451 only). +curr[1-4]_average Historical average current (MAX34446/34451/34452 only). curr[1-6]_highest Historical maximum current. curr[1-6]_reset_history Write any value to reset history. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D @@ -223,7 +233,7 @@ temp[1-8]_reset_history Write any value to reset histor= y. =20 .. note:: =20 - - MAX34451 supports attribute groups in[1-16] (or curr[1-16] based on - input pins) and temp[1-5]. + - MAX34451 and MAX34452 support attribute groups in[1-16] (or curr[1-16] + based on input pins) and temp[1-5]. - MAX34460 supports attribute groups in[1-12] and temp[1-5]. - MAX34461 supports attribute groups in[1-16] and temp[1-5]. diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig index ca312be58ed5c46da2859db334a1abd69c6d3471..9b4bfdd003108e1846ff35e3f18= ab408dd2cc76a 100644 --- a/drivers/hwmon/pmbus/Kconfig +++ b/drivers/hwmon/pmbus/Kconfig @@ -434,8 +434,9 @@ config SENSORS_MAX34440 tristate "Maxim MAX34440 and compatibles" help If you say yes here you get hardware monitoring support for Maxim - MAX34440, MAX34441, MAX34446, MAX34451, MAX34460, and MAX34461. - Other compatible are ADPM12160, and ADPM12200. + MAX34440, MAX34441, MAX34446, MAX34451, MAX34452, MAX34460, and + MAX34461. Other compatible devices are ADPM12160, ADPM12200, and + ADPM12250. =20 This driver can also be built as a module. If so, the module will be called max34440. diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index 81514727565f29c7251fe93f049cdd6b0f214f81..866d25ae8971c49d3e296efb69f= c486e5dbac668 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -23,6 +23,7 @@ enum chips { max34441, max34446, max34451, + max34452, max34460, max34461, }; @@ -106,16 +107,21 @@ static int max34440_read_word_data(struct i2c_client = *client, int page, case PMBUS_UT_FAULT_LIMIT: case PMBUS_MFR_MAX_TEMP_1: /* - * MAX34451/ADPM family do not support VIN/IIN limit registers, - * manufacturer-specific min/max registers, or undercurrent/ - * undertemperature fault limits. Accessing these triggers CML - * error and asserts ALERT. + * MAX34451/MAX34452/ADPM family do not support VIN/IIN limit + * registers, manufacturer-specific min/max registers, or + * undercurrent/undertemperature fault limits. Accessing these + * triggers CML error and asserts ALERT. */ - if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || - data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + if (data->id =3D=3D max34451 || data->id =3D=3D max34452 || + data->id =3D=3D adpm12160 || data->id =3D=3D adpm12200 || + data->id =3D=3D adpm12250) return -ENXIO; ret =3D -ENODATA; break; + case PMBUS_VOUT_OV_WARN_LIMIT: + if (data->id =3D=3D max34452) + return -ENXIO; + return -ENODATA; case PMBUS_VIRT_READ_VOUT_MIN: ret =3D pmbus_read_word_data(client, page, phase, MAX34440_MFR_VOUT_MIN); @@ -126,8 +132,8 @@ static int max34440_read_word_data(struct i2c_client *c= lient, int page, break; case PMBUS_VIRT_READ_IOUT_AVG: if (data->id !=3D max34446 && data->id !=3D max34451 && - data->id !=3D adpm12160 && data->id !=3D adpm12200 && - data->id !=3D adpm12250) + data->id !=3D max34452 && data->id !=3D adpm12160 && + data->id !=3D adpm12200 && data->id !=3D adpm12250) return -ENXIO; ret =3D pmbus_read_word_data(client, page, phase, MAX34446_MFR_IOUT_AVG); @@ -192,6 +198,10 @@ static int max34440_write_word_data(struct i2c_client = *client, int page, ret =3D pmbus_write_word_data(client, page, data->iout_oc_warn_limit, word); break; + case PMBUS_VOUT_OV_WARN_LIMIT: + if (data->id =3D=3D max34452) + return -ENXIO; + return -ENODATA; case PMBUS_VIRT_RESET_POUT_HISTORY: ret =3D pmbus_write_word_data(client, page, MAX34446_MFR_POUT_PEAK, 0); @@ -212,8 +222,8 @@ static int max34440_write_word_data(struct i2c_client *= client, int page, ret =3D pmbus_write_word_data(client, page, MAX34440_MFR_IOUT_PEAK, 0); if (!ret && (data->id =3D=3D max34446 || data->id =3D=3D max34451 || - data->id =3D=3D adpm12160 || data->id =3D=3D adpm12200 || - data->id =3D=3D adpm12250)) + data->id =3D=3D max34452 || data->id =3D=3D adpm12160 || + data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250)) ret =3D pmbus_write_word_data(client, page, MAX34446_MFR_IOUT_AVG, 0); =20 @@ -281,12 +291,13 @@ static int max34451_read_byte_data(struct i2c_client = *client, int page, int reg) case PMBUS_STATUS_BYTE: case PMBUS_STATUS_OTHER: /* - * MAX34451/ADPM family do not support STATUS_BYTE or + * MAX34451/MAX34452/ADPM family do not support STATUS_BYTE or * STATUS_OTHER registers. Accessing them triggers CML * error and asserts ALERT. */ - if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || - data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + if (data->id =3D=3D max34451 || data->id =3D=3D max34452 || + data->id =3D=3D adpm12160 || data->id =3D=3D adpm12200 || + data->id =3D=3D adpm12250) return -ENXIO; return -ENODATA; default: @@ -304,12 +315,13 @@ static int max34451_write_byte_data(struct i2c_client= *client, int page, case PMBUS_STATUS_BYTE: case PMBUS_STATUS_OTHER: /* - * MAX34451/ADPM family do not support STATUS_BYTE or + * MAX34451/MAX34452/ADPM family do not support STATUS_BYTE or * STATUS_OTHER registers. Writing to them triggers CML * error and asserts ALERT. */ - if (data->id =3D=3D max34451 || data->id =3D=3D adpm12160 || - data->id =3D=3D adpm12200 || data->id =3D=3D adpm12250) + if (data->id =3D=3D max34451 || data->id =3D=3D max34452 || + data->id =3D=3D adpm12160 || data->id =3D=3D adpm12200 || + data->id =3D=3D adpm12250) return -ENXIO; return -ENODATA; default: @@ -340,7 +352,7 @@ static int max34451_set_supported_funcs(struct i2c_clie= nt *client, if (rv < 0) return rv; =20 - if (rv >=3D MAX34451ETNA6_MFR_REV) { + if (data->id =3D=3D max34451 && rv >=3D MAX34451ETNA6_MFR_REV) { max34451_na6 =3D true; data->info.format[PSC_VOLTAGE_IN] =3D direct; data->info.format[PSC_CURRENT_IN] =3D direct; @@ -678,6 +690,32 @@ static struct pmbus_driver_info max34440_info[] =3D { .write_word_data =3D max34440_write_word_data, .page_change_delay =3D MAX34440_PAGE_CHANGE_DELAY, }, + [max34452] =3D { + .pages =3D 21, + .format[PSC_VOLTAGE_OUT] =3D direct, + .format[PSC_TEMPERATURE] =3D direct, + .format[PSC_CURRENT_OUT] =3D direct, + .m[PSC_VOLTAGE_OUT] =3D 1, + .b[PSC_VOLTAGE_OUT] =3D 0, + .R[PSC_VOLTAGE_OUT] =3D 3, + .m[PSC_CURRENT_OUT] =3D 1, + .b[PSC_CURRENT_OUT] =3D 0, + .R[PSC_CURRENT_OUT] =3D 2, + .m[PSC_TEMPERATURE] =3D 1, + .b[PSC_TEMPERATURE] =3D 0, + .R[PSC_TEMPERATURE] =3D 2, + /* func 0-15 is set dynamically before probing */ + .func[16] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .func[17] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .func[18] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .func[19] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .func[20] =3D PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data =3D max34451_read_byte_data, + .read_word_data =3D max34440_read_word_data, + .write_byte_data =3D max34451_write_byte_data, + .write_word_data =3D max34440_write_word_data, + .page_change_delay =3D MAX34440_PAGE_CHANGE_DELAY, + }, [max34460] =3D { .pages =3D 18, .format[PSC_VOLTAGE_OUT] =3D direct, @@ -761,7 +799,7 @@ static int max34440_probe(struct i2c_client *client) data->iout_oc_fault_limit =3D MAX34440_IOUT_OC_FAULT_LIMIT; data->iout_oc_warn_limit =3D MAX34440_IOUT_OC_WARN_LIMIT; =20 - if (data->id =3D=3D max34451) { + if (data->id =3D=3D max34451 || data->id =3D=3D max34452) { rv =3D max34451_set_supported_funcs(client, data); if (rv) return rv; @@ -782,6 +820,7 @@ static const struct i2c_device_id max34440_id[] =3D { { .name =3D "max34441", .driver_data =3D max34441 }, { .name =3D "max34446", .driver_data =3D max34446 }, { .name =3D "max34451", .driver_data =3D max34451 }, + { .name =3D "max34452", .driver_data =3D max34452 }, { .name =3D "max34460", .driver_data =3D max34460 }, { .name =3D "max34461", .driver_data =3D max34461 }, { } --=20 2.34.1