From nobody Wed Jun 17 04:18:22 2026 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) (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 22EA33D3483 for ; Wed, 22 Apr 2026 12:26:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776860763; cv=none; b=F0KnadmRIJmVUOXFAo1K2pOvaKGt2KgTA6lyQAqleNxx/YzByZwsOLgdGLvGypyDwf9aoGlrx1R0r4ALJCbkykEGJGAZIOJA80UlrISaw3Imi18LFk04y9EHeGJyNFW83M/QMRC+b+X7v4rTZJENNIfjXACn3TBs+evapmsH0Sg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776860763; c=relaxed/simple; bh=OGjx/rpqLanYJw8wyMx1GZX57lDgWW7QcL/E9ij2zVU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VhUWFcXpvl8Ga5kE34fGQMgsgQdDGsJXBBRys6vLff1hSgF42Uo/gmiHyUk3Mdg+y2WhiGZUIryw4nw7ZOyaAtsaIBxzmlnARXQBKwQYmfhgYz0IoaA+kpCiCXbpyMRpyOdVlwXgip0FQw9XuxXnEKVcpz718oZTzl2FmtLyBZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=inventec.com; spf=pass smtp.mailfrom=inventec.com; dkim=pass (2048-bit key) header.d=inventec.com header.i=@inventec.com header.b=eKWmp9fs; arc=none smtp.client-ip=209.85.215.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=inventec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=inventec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=inventec.com header.i=@inventec.com header.b="eKWmp9fs" Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-c70e27e2b74so1958828a12.0 for ; Wed, 22 Apr 2026 05:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inventec.com; s=google; t=1776860761; x=1777465561; 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=Z3ThBxdaxluBFioSVhIDwm332ADtoHWnIdue1Mw0j4g=; b=eKWmp9fsws92fCdZBlrnpG0AZSn2VbtHLfy0LEoRoy2Vg9K0c+W3+3kZpe4U3o7Bp/ b+TsVVOYh6U5U4PCOB065RddEpNNpWQ8Fxy2j1J+n9XNYhvApU4/ZIMxonMyBrNUdKeo 3r28V7IWqPwjN1WW/go3OUYR/tzVKB7dqxmsE4/IWA3droPx4GI/KSJMrpxdrgHT75dB ua7H6/xu0l63v9LDuzZIQK0zrxwJEsEHGvVl7EsHT5BkE3S2MZUkJr5tskGgeWDkOcwN oKD4PITh6nRjhv/9G7U8JUzuhor7fwgLaZWMYpXSEU94QW5BkuGj5WKENGlb9V7/8oV1 CJig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776860761; x=1777465561; 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=Z3ThBxdaxluBFioSVhIDwm332ADtoHWnIdue1Mw0j4g=; b=hmqW/CthQjfaVwp/kL9Bs6lrKf+f+GoSmExpdWodfVDHT+H7+9YrmZcZTlWJjVl8H+ 5SR6i/cKsUhDlX3V7r30QvPg4RUe6zGS1ERPZN9ja2wGI/r3yLGxIEPX9Sf6Ajc7qL9N lfMi9E+1ICNaAOGzXghSgK6RterNTTI8bh6ualqvo76aGJGvlrTV1FCITDGlAFFX3ZND 8wY809Dqs7ZDDU/13+LzqT6/2uI/zhcpzr1yk4gcTEGvQ6J2/A+GKCL05jojz995o0S3 zhpI++wFaq4QOE364xNdeOpOxmityYwdd1oTyfoDuDBa5r2Een8/gGaeA8QdHv9vBrwQ jRNA== X-Forwarded-Encrypted: i=1; AFNElJ9mME/uGRjCekuGOp7Zv1Zr3nxkRB3M4ksjhoQOQGLwMKT9JQp/jHIc13CYnneUZz+XbYlM1WhmiEqYAdY=@vger.kernel.org X-Gm-Message-State: AOJu0YwfRjZovRcpXHWxLtHmFuS/REeVaAl8hON0wRc48oTIqr3FL8i7 dkuDqHtB1dW+ylri1G4Dfadc4snn9VuRzIF4VVHfYb7AID36o8wjx6BEkCuCJbqTm2TBfF96bO+ z6fXmyXs= X-Gm-Gg: AeBDievZk+EEbbZ99OR+KIrMu6ywf2diFQJJb7sTw8uh3FKhOkjzSwGwVnEWX/qc9zu Br9pIn45ARboFXN12Exyphhez/xymEbpZewIAeCjcCkKi7gWoMSz/tjKXwmAwzlL7ouKnX8OSWF iB5Q32mDrXGUflue03AeXbBVEeMfZyi+9LlRNj0OtoRBZjKDk2LRP3v6Yop+rIKV/3iartVwHii aLRmg03NpfJSTxNifDYx4wxFDbY+aRSqjqfOU5al/hlsrn1AAvMNn963KRt4iwcki9rl5grJnBC xjiSA/STWrHNqH7GJBoVtqqNP5WDOfoEXAsTwJIfnKCuM+jJ4R57HSx4DScZIQaqatPLoN5qGP2 dSwgxjwBGrSZzbs2O6RFNNvOGff8PWUgB7+h4ZkW/F2NH1aUVk9/YT0lytjWVIrH650Ikkzp2VM /YnN4dYiV1Ch+MjSQHK8OcGTxzUPDtuRn0aDVOLALYZEVkLfLULf0rHyR7JzPkIuX5ig7DmOpvK A== X-Received: by 2002:a05:6a20:7f95:b0:39b:f12e:d53 with SMTP id adf61e73a8af0-3a08d732e29mr24158916637.18.1776860761549; Wed, 22 Apr 2026 05:26:01 -0700 (PDT) Received: from [127.0.1.1] (60-248-18-139.hinet-ip.hinet.net. [60.248.18.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9819fesm17218079b3a.4.2026.04.22.05.25.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2026 05:26:01 -0700 (PDT) From: Brian Chiang Date: Wed, 22 Apr 2026 12:25:49 +0000 Subject: [PATCH v5 1/2] dt-bindings: trivial: Add q50sn12072 and q54sn120a1 support 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: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-1-b8fb87262868@inventec.com> References: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-0-b8fb87262868@inventec.com> In-Reply-To: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-0-b8fb87262868@inventec.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Guenter Roeck Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Jack Cheng , Brian Chiang , Jack Cheng X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776860756; l=1150; i=chiang.brian@inventec.com; s=20260316; h=from:subject:message-id; bh=371ndBFO++Ux/UDUOyIuv35ZzqLJAZsYGZPm32hIp6Q=; b=IzWae8Mww4Ny97twVr3hE+lT7MvxDV3KUxI3KzINJ4tIlpgo+6l2rXIPh04etPbzCBIxDnm5M /dha8QRwdLEBx4KAmCjcL7xlBihhyLsW9mgh6d1EeTIK6x6s8o0pZ51 X-Developer-Key: i=chiang.brian@inventec.com; a=ed25519; pk=q+NqJYuJbGpA9KS9941D7f+8PVVW+k7DvaGgFykBiUc= From: Jack Cheng Add support for the Delta Electronics q50sn12072 and q54sn120a1 1/4 Brick DC/DC Regulated Power Modules. Signed-off-by: Jack Cheng Acked-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/trivial-devices.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Docum= entation/devicetree/bindings/trivial-devices.yaml index a482aeadcd44..d4b78154df82 100644 --- a/Documentation/devicetree/bindings/trivial-devices.yaml +++ b/Documentation/devicetree/bindings/trivial-devices.yaml @@ -96,7 +96,11 @@ properties: # Delta Electronics DPS920AB 920W 54V Power Supply - delta,dps920ab # 1/4 Brick DC/DC Regulated Power Module + - delta,q50sn12072 + # 1/4 Brick DC/DC Regulated Power Module - delta,q54sj108a2 + # 1/4 Brick DC/DC Regulated Power Module + - delta,q54sn120a1 # Devantech SRF02 ultrasonic ranger in I2C mode - devantech,srf02 # Devantech SRF08 ultrasonic ranger --=20 2.43.0 From nobody Wed Jun 17 04:18:22 2026 Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) (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 D91313D410E for ; Wed, 22 Apr 2026 12:26:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776860766; cv=none; b=Vzd2394ssBzkDxSPcRCm2S8Sh+OkWN8SS4yE4bQ+PMpQWIBBW475jXVmKTNEsVo2RCLQnKBncWSnwJc81cOXafxn9cczIRe+qtfMYgdgQJ8sUQ+quB9temZKMjggb/yos9rhgaSf/rAqrHENsqJVKRH8viPi9GSxWFeZH36le3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776860766; c=relaxed/simple; bh=2fDvceWZH0uVoiXI+idreB4J3EIIZl8vYZyKQA+B/1I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jruVJmr1T4wvesv9FfnLiIzguLqJ2dvXZWQ2YAG0Lke0uu5WBSBdpLUbRajIHZEVN7Nl7V8D0QxHP6nKUU+xSx5OA+rVs17K+3mLXnfgfXlG2iQkfmb8j31u8c+ZjBCRDPCb/ZuvzOBh6CGRn53cUdKTYwjCTybn4WW1jpJx6jY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=inventec.com; spf=pass smtp.mailfrom=inventec.com; dkim=pass (2048-bit key) header.d=inventec.com header.i=@inventec.com header.b=Gcevt+vn; arc=none smtp.client-ip=209.85.215.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=inventec.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=inventec.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=inventec.com header.i=@inventec.com header.b="Gcevt+vn" Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-c79467f124dso1976951a12.2 for ; Wed, 22 Apr 2026 05:26:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inventec.com; s=google; t=1776860764; x=1777465564; 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=qnhWm4BJIe1qz1PKqfhPExcXSRC6Iyeb59/CaItSdTg=; b=Gcevt+vnCwkoH9Cp4Ma5hiP4UPTuV2DSgqQryJYQDBAA7vabbqh2PfL4+qn1mr0iOw 8BgOqBRskeDwaQbCyOHcr1+ZSIfLT93cfrGH4sW8v7jK3Olhg/gbxMxW6YRdg3IYM+tg TdVLl0CbRoL0I4cACIWGeOHhtL+kKKfJUlUHLEYpPstPBkkCi370iBzCjccVlwZ2sjFG KS62mdEUUGglkP7skKs1DQEjlGszooj9QBYCEXlYskS+xKl3Ab7/x3H950Y4O0SfRpyy wDn5HEFZRaUXU77DwWPQQ1yAUxIYXdJ87ivTEztvPrrnt+w6aJVIv4/te3Q2GPRUYjZ1 EkTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776860764; x=1777465564; 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=qnhWm4BJIe1qz1PKqfhPExcXSRC6Iyeb59/CaItSdTg=; b=K4mdcR1Iqbro7QtL4HYSktFlaVBF7EU/N4Tl9kJnallcHs56/Xo2v6gOmGWvsyBrjl 6o1Y8GFiA3UyDc4BBDhi80qDHZKBWhsaj6UamlUFCc5VGZjJjvWeDWJ60FVMfXK/F/kF sjEnEbg8eh9ZbCYOwarf4rSftdcsT9JyrDUXhPyx0oNX+fFZkizTmwFnN9FJINa+dG7m 3bM6iNu/kRfG478vCB13Q0n+owFAOVDrypRjGQp/dTc+CClcWB5oMmVwsZXHVeju8ont Dc5KzFHfa+pEmRtDueBzACs/FXjPgq7tvbAZD0IQw+wNnUvYU83Yk+HpWkXCYo4cKMsv dAoQ== X-Forwarded-Encrypted: i=1; AFNElJ92uVD4q26GY6ygcfeNG8wO00fM99qrajivdThBIiMA0qFHk+D4xMNwPBfnO1VsuLB8o8QrH8M0LSklFRg=@vger.kernel.org X-Gm-Message-State: AOJu0YzCtyNQ55s5xeHR5wvKSg53OTLOQHXZU5eu4jKPVjrMnkJqGWy3 mZDUeafPM6s5C+LWS8zWRUf5oTZzQx5VgsfikJ8JEYtiRfBk0ybeGYIBIhKNmYCLDkE= X-Gm-Gg: AeBDievoQofwCXynfp/gFsrV710h/6H+E3AyPIq28A0lkOcyajoDwjZNCiRIFfdgS1G paG29FkRm3Hg8AIzzrInFG6Bpu4nWvD7ckoRao2gCVe2gMbCnw/mUft01CYggxlJjifg+6tXt2L qlZ2dsTkklgI9nAUXWOQncPEQYUZj16xj8T53iKTCK5FohXMYmImIf008OHK3t8LjBcNKxhzfYz WUm4xUTa/Akw1FNCfhxGNWc26xkzWYlqTParv5O5N8TPdafUbMN+qymRDuUpTl+q8s34rnmO9/C eKJTB9MsujXJt2zOZQUFvnypPKwRUEWtq16gUT3JruqIev7mNuhBdYzchDK2Yu59yBv3cI1TWhx 01rORtvW67oSxbeJmTCqrCLpg06j/1BRO/lNOtKKi7qLrBXnMv9+ALl6aC9FUViOKRxyGGcKXOr hj6vtX+pZwwqUIsgaP0eyuH2ug6x7PrlxGUxwo9nnK81ZtDOJuHPmOHrPn2EC/TZnWyAfnYXM0F Q== X-Received: by 2002:a05:6a20:6a1a:b0:398:962e:83d7 with SMTP id adf61e73a8af0-3a08d8a93d0mr25402176637.43.1776860764029; Wed, 22 Apr 2026 05:26:04 -0700 (PDT) Received: from [127.0.1.1] (60-248-18-139.hinet-ip.hinet.net. [60.248.18.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9819fesm17218079b3a.4.2026.04.22.05.26.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2026 05:26:03 -0700 (PDT) From: Brian Chiang Date: Wed, 22 Apr 2026 12:25:50 +0000 Subject: [PATCH v5 2/2] hwmon: (pmbus/q54sj108a2) Add support for q50sn12072 and q54sn120a1 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: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-2-b8fb87262868@inventec.com> References: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-0-b8fb87262868@inventec.com> In-Reply-To: <20260422-add-support-for-q50sn12072-and-q54sn120a1-v5-0-b8fb87262868@inventec.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Guenter Roeck Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Jack Cheng , Brian Chiang , Jack Cheng X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776860756; l=8330; i=chiang.brian@inventec.com; s=20260316; h=from:subject:message-id; bh=CLMn8jlvGzD+hXMNiwD6qUJpGNbcZMKkkvxVny1Uuqo=; b=CBDrJCZHUxJqEqwmce+t09qs4CjtM7udBHdZLeWLDl0Jy3flVZzRrRP0fsL3oARr374KCnfzl /vWhaUL4gGuDEG8gumzLON6Tp+Op2rL5tivPCMP65IDaZBRYeC3q8D5 X-Developer-Key: i=chiang.brian@inventec.com; a=ed25519; pk=q+NqJYuJbGpA9KS9941D7f+8PVVW+k7DvaGgFykBiUc= From: Jack Cheng The Q50SN12072 and Q54SN120A1 are high-efficiency, high-density DC-DC power module from Delta Power Modules. The Q50SN12072, quarter brick, single output 12V. This product provides up to 1200 watts of output power at 38~60V. The Q50SN12072 offers peak efficiency up to 98.3%@54Vin. 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%@54Vin. Add support for them to q54sj108a2 driver. Signed-off-by: Jack Cheng Co-developed-by: Brian Chiang Signed-off-by: Brian Chiang --- drivers/hwmon/pmbus/q54sj108a2.c | 105 +++++++++++++++++++++++++++--------= ---- 1 file changed, 72 insertions(+), 33 deletions(-) diff --git a/drivers/hwmon/pmbus/q54sj108a2.c b/drivers/hwmon/pmbus/q54sj10= 8a2.c index d5d60a9af8c5..0fd7dc37e328 100644 --- a/drivers/hwmon/pmbus/q54sj108a2.c +++ b/drivers/hwmon/pmbus/q54sj108a2.c @@ -22,7 +22,9 @@ #define PMBUS_FLASH_KEY_WRITE 0xEC =20 enum chips { - q54sj108a2 + q50sn12072, + q54sj108a2, + q54sn120a1 }; =20 enum { @@ -55,10 +57,24 @@ struct q54sj108a2_data { #define to_psu(x, y) container_of((x), struct q54sj108a2_data, debugfs_ent= ries[(y)]) =20 static struct pmbus_driver_info q54sj108a2_info[] =3D { - [q54sj108a2] =3D { + [q50sn12072] =3D { .pages =3D 1, + /* Source : Delta Q50SN12072 */ + .format[PSC_VOLTAGE_OUT] =3D linear, + .format[PSC_TEMPERATURE] =3D linear, + .format[PSC_VOLTAGE_IN] =3D linear, + .format[PSC_CURRENT_OUT] =3D linear, =20 + .func[0] =3D 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] =3D { + .pages =3D 1, /* Source : Delta Q54SJ108A2 */ + .format[PSC_VOLTAGE_OUT] =3D linear, .format[PSC_TEMPERATURE] =3D linear, .format[PSC_VOLTAGE_IN] =3D linear, .format[PSC_CURRENT_OUT] =3D linear, @@ -69,6 +85,20 @@ static struct pmbus_driver_info q54sj108a2_info[] =3D { PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_STATUS_INPUT, }, + [q54sn120a1] =3D { + .pages =3D 1, + /* Source : Delta Q54SN120A1 */ + .format[PSC_VOLTAGE_OUT] =3D linear, + .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_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, + }, }; =20 static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf, @@ -270,7 +300,9 @@ static const struct file_operations q54sj108a2_fops =3D= { }; =20 static const struct i2c_device_id q54sj108a2_id[] =3D { + { "q50sn12072", q50sn12072 }, { "q54sj108a2", q54sj108a2 }, + { "q54sn120a1", q54sn120a1 }, { }, }; =20 @@ -280,6 +312,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; @@ -292,14 +325,9 @@ static int q54sj108a2_probe(struct i2c_client *client) I2C_FUNC_SMBUS_BLOCK_DATA)) return -ENODEV; =20 - if (client->dev.of_node) - chip_id =3D (enum chips)(unsigned long)of_device_get_match_data(dev); - else - chip_id =3D i2c_match_id(q54sj108a2_id, client)->driver_data; - ret =3D i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf); if (ret < 0) { - dev_err(&client->dev, "Failed to read Manufacturer ID\n"); + dev_err(dev, "Failed to read Manufacturer ID\n"); return ret; } if (ret !=3D 6 || strncmp(buf, "DELTA", 5)) { @@ -308,19 +336,25 @@ static int q54sj108a2_probe(struct i2c_client *client) return -ENODEV; } =20 - /* - * The chips support reading PMBUS_MFR_MODEL. - */ ret =3D i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, buf); if (ret < 0) { 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; } + chip_id =3D mid->driver_data; + + if (strcmp(client->name, mid->name) !=3D 0) + dev_notice(dev, "Device mismatch: Configured %s, detected %s\n", + client->name, mid->name); =20 ret =3D i2c_smbus_read_block_data(client, PMBUS_MFR_REVISION, buf); if (ret < 0) { @@ -341,6 +375,7 @@ static int q54sj108a2_probe(struct i2c_client *client) if (!psu) return 0; =20 + psu->chip =3D chip_id; psu->client =3D client; =20 debugfs =3D pmbus_get_debugfs_dir(client); @@ -359,9 +394,6 @@ static int q54sj108a2_probe(struct i2c_client *client) debugfs_create_file("write_protect", 0444, q54sj108a2_dir, &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_WRITEPROTECT], &q54sj108a2_fops); - debugfs_create_file("store_default", 0200, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_STOREDEFAULT], - &q54sj108a2_fops); debugfs_create_file("vo_ov_response", 0644, q54sj108a2_dir, &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_VOOV_RESPONSE], &q54sj108a2_fops); @@ -383,27 +415,34 @@ static int q54sj108a2_probe(struct i2c_client *client) debugfs_create_file("mfr_location", 0444, q54sj108a2_dir, &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_MFR_LOCATION], &q54sj108a2_fops); - debugfs_create_file("blackbox_erase", 0200, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_ERASE], - &q54sj108a2_fops); - debugfs_create_file("blackbox_read_offset", 0444, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ_OFFSET], - &q54sj108a2_fops); - debugfs_create_file("blackbox_set_offset", 0200, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_SET_OFFSET], - &q54sj108a2_fops); - debugfs_create_file("blackbox_read", 0444, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ], - &q54sj108a2_fops); - debugfs_create_file("flash_key", 0444, q54sj108a2_dir, - &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_FLASH_KEY], - &q54sj108a2_fops); + if (psu->chip =3D=3D q54sj108a2) { + debugfs_create_file("store_default", 0200, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_STOREDEFAULT], + &q54sj108a2_fops); + debugfs_create_file("blackbox_erase", 0200, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_ERASE], + &q54sj108a2_fops); + debugfs_create_file("blackbox_read_offset", 0444, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ_OFFSET], + &q54sj108a2_fops); + debugfs_create_file("blackbox_read", 0444, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_READ], + &q54sj108a2_fops); + debugfs_create_file("blackbox_set_offset", 0200, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_BLACKBOX_SET_OFFSET], + &q54sj108a2_fops); + debugfs_create_file("flash_key", 0444, q54sj108a2_dir, + &psu->debugfs_entries[Q54SJ108A2_DEBUGFS_FLASH_KEY], + &q54sj108a2_fops); + } =20 return 0; } =20 static const struct of_device_id q54sj108a2_of_match[] =3D { - { .compatible =3D "delta,q54sj108a2", .data =3D (void *)q54sj108a2 }, + { .compatible =3D "delta,q50sn12072" }, + { .compatible =3D "delta,q54sj108a2" }, + { .compatible =3D "delta,q54sn120a1" }, { }, }; =20 @@ -421,6 +460,6 @@ static struct i2c_driver q54sj108a2_driver =3D { module_i2c_driver(q54sj108a2_driver); =20 MODULE_AUTHOR("Xiao.Ma "); -MODULE_DESCRIPTION("PMBus driver for Delta Q54SJ108A2 series modules"); +MODULE_DESCRIPTION("PMBus driver for Delta Q54SJ108A2 and compatibles"); MODULE_LICENSE("GPL"); MODULE_IMPORT_NS("PMBUS"); --=20 2.43.0