From patchwork Fri Jul 14 13:51:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120495 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2529427vqm; Fri, 14 Jul 2023 07:08:58 -0700 (PDT) X-Google-Smtp-Source: APBJJlF4iGklLPqhQDjPZo+5Gm1xWPiRGjp/xb6YWpcgRXC5eA/3NaJgg9748fhUfw5kUDfAvBgn X-Received: by 2002:a05:6a20:7a96:b0:12d:282b:8329 with SMTP id u22-20020a056a207a9600b0012d282b8329mr4412880pzh.49.1689343737770; Fri, 14 Jul 2023 07:08:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689343737; cv=none; d=google.com; s=arc-20160816; b=UYK5cqsXPpSPsqERPozFTc+VYm7gbP91RaiDxvVpNFWbCE6sOx+ugnU+BKr/NKS1Cl vb0kjBX32Q1EkhsHpDfiMQ271lDWIdMkSAIHoBAFZub3XoNFj+qxHbwL/n8Npz8wWY4f 0vaKhYtksvqRGql+rHhhmN2suZprC7PYwVHGzbj+4xHyHip7XmTm6/IHHRZCnNc7A6Gm vuLwsk84i10DDLdtNCzVv32clPuD6cl9xJ4aSe07vAdriAglget2bTWRZWpXGpHzrIig r2Ge1ppfz7gf61JvhA12SOYGtMcz1V/VB9YebNABGrJoUddIWXu/PrgQgLdSxVaxu5l/ XINg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=aBRkWVB0g8Qm8dyh6//o7Lwn4Q/uU6uVP9gh0M6sy3E=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=p5RQ0XTqQEZW3fxT9HNjTMIbeMGyxzvpXhuO5G7Btou11TPepzCSk8X6fkKxsd4x7e e5X+i0Uo2Dn9PaG0rrFMEg3QuIvShH02OQdUWaS8tcbk2x59Qj4lPblWhv8RtXukIVN9 jD2AJDmFWgGr2GVPaUp7YEyzU7YGXXy5RtQ6D5Iezf66oBdqoaUqLgSse80w/3LSUZab MQ4IwFD3zfaH41zQEcyXOup3SKICtG7mNTjJ0MJNR2Yau1YrnwuA1+M6TP4CT0GV7ks1 3oaf5oyKApg4xGzaiwmape9ubrVOCwf6B80TlXQKO8deNlHHD6z/b9rcDOa41oCg/2C/ 2PkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=Zi6m+bT1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v70-20020a638949000000b0055e607f1e99si1306930pgd.882.2023.07.14.07.08.43; Fri, 14 Jul 2023 07:08:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=Zi6m+bT1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235463AbjGNNvg (ORCPT + 99 others); Fri, 14 Jul 2023 09:51:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235760AbjGNNve (ORCPT ); Fri, 14 Jul 2023 09:51:34 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81D5835A0 for ; Fri, 14 Jul 2023 06:51:31 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-4fb94b1423eso3347656e87.1 for ; Fri, 14 Jul 2023 06:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342690; x=1691934690; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aBRkWVB0g8Qm8dyh6//o7Lwn4Q/uU6uVP9gh0M6sy3E=; b=Zi6m+bT1LbXG3N25RVbGeYgxQ56d0Diy7az6zxJQxnUUTzeZKdpCWT7EexnOSqVO+I +PKvpO1facfQ0DHxNSVICdVH0UOesiAUkHlDUZswzriCZh1MMZx/VLuA+BCG61YXZLrU qTHBjc4AL/ao7lyeiEBPpYloHZuoBCM2m9O++P2qXnW+DUKvV+5JucEo/jSwIb5LxQx4 SU3zMn1ha3oYgC/JpSKD/tAt11u5tdVyN4IVUubZIoGsZXkuOtkX+k5EKBjc0EbViE5i K0Yrj5PdZkNkSOTb5GUB6KiGXpSu34fIpNmT36pS4yJC7egfxF1UMZPNwacDKqkQfDzi f/VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342690; x=1691934690; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aBRkWVB0g8Qm8dyh6//o7Lwn4Q/uU6uVP9gh0M6sy3E=; b=S6jtE1z+vbusSjI2At85/r45/vIL3n1WpygA9ua9QtFdXF/hE7mBkAnKqipaPdaDlA FmS133Z5Red6bo5gtGNaFUKelqZ03oWh/SH2cULyN2i6CD4j4MeBacszfpUiK0W7Y0Ld KTBo4Zy/djJTUD9NKpymzQQC4PCMkR2zOLxysOyK0Ma8ghQ6iY9ZTk76DKK0wCnZL11g TF8j/1iaTvnjjspdRryFd4I1UB69ooisjj+jB2WB87k9QrcaGV8PWFkH0TozoIYRn6np 9DkngzNoESvLVYqr/Rgeg0P7hCJDKPn//r6ei4tUTBKuaPrx2l61CJdTIBwZqb+w2aNL Zrqw== X-Gm-Message-State: ABy/qLYPtSQXeozVmN1Z7O23BTpZdzYyEuxMGPr2lpAL4X50T4SPNiLR 0V7Pn2Dq3+CYJ18OQnBf7e+sSw== X-Received: by 2002:a2e:9c97:0:b0:2b6:dec9:2812 with SMTP id x23-20020a2e9c97000000b002b6dec92812mr4342904lji.33.1689342689670; Fri, 14 Jul 2023 06:51:29 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:29 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 1/8] hwmon: (pmbus/mp2975) Fix whitespace error Date: Fri, 14 Jul 2023 15:51:09 +0200 Message-ID: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771405299008492723 X-GMAIL-MSGID: 1771405299008492723 From: Patrick Rudolph Fix whitespace error reported by checkpatch.pl Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- drivers/hwmon/pmbus/mp2975.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) base-commit: 4dbbaf8fbdbd13adc80731b2452257857e4c2d8b diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 2109b0458a8b..130cfde52e42 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -600,7 +600,7 @@ mp2975_vout_ov_scale_get(struct i2c_client *client, struct mp2975_data *data, if (ret < 0) return ret; thres_dev = ret & MP2975_PRT_THRES_DIV_OV_EN ? MP2975_PROT_DEV_OV_ON : - MP2975_PROT_DEV_OV_OFF; + MP2975_PROT_DEV_OV_OFF; /* Select the gain of remote sense amplifier. */ ret = i2c_smbus_read_word_data(client, PMBUS_VOUT_SCALE_LOOP); From patchwork Fri Jul 14 13:51:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120486 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2519432vqm; Fri, 14 Jul 2023 06:55:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlEe6NPj0LmlSygY45nCn4LGycGzSjOqWGDMLWGPnIjBP4KwaUuCajn6+0SQCpDct/0b0rot X-Received: by 2002:a05:6512:3c81:b0:4f9:56a9:b98e with SMTP id h1-20020a0565123c8100b004f956a9b98emr4353909lfv.58.1689342941976; Fri, 14 Jul 2023 06:55:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689342941; cv=none; d=google.com; s=arc-20160816; b=xM3Zm5AoeRFQxZExxHmBt238XxR2asznJgeyT7uJtvIcgLMtX39THzTF2wDXS7GkEV kES1bVTe9YDxaU3V958vS+BCLu/TvflIYSenujwA2SaFSxBvFFbwG6LeHC/tyr6W5xNx cVFSWgP2tmAVmICi5RGD1nbW1XhMCZxDjuNsPk+rtbWaN/F5KOaF50Rmrh3izXf9A0jV JRUA1qvnXulLpFRP6q2p8C3waKn++8pzSW5OeXy8K5Xs/fWHb0HRT9keIuTHil8ERodv k0i6foCnuAFnM0uLsYAmmWzFD0obL2nmwwcKDI2/HHwjlLf85DtS8YziMWyeMWsBc2xX KwgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=urifUudkEPyq2FzlaT1w1iDQxgnQEtIqwDDZrLy2t8E=; fh=PXxcGk25uV/HIVaYTrfHsIV3InlcJFew9yDhl8z1hRM=; b=DyQ+78ZTnlxOGT9vq9zVI1pThjcXwkOMirJhSb8U3Ho0ea4+FhOj1NnaFNOcT+C2Td 1fMmBXHO0YrpemqzINyyBuMepbaJnGSvLarjvTZ9vhZ1OSg1SSY1E554saEnauGlmHBp 1+nTn4JIanUbHQh3lDs5aQfcYeTK4/fiG1f0H/AqxdmD2PFAa6r03feq44wTB5aFauES MT6kKj1OYVhTpK8oSEC7D1hRQEqnseTLLkDMKyUOsHHktNIldrsaEQ601NuVkW7sxeXq YdqXyXvFF9f7WnWgNoOUgFbHINR5l6PEz/i8lZPYbdC8k7OEOGD5ogWbbo7OMwVw4Xqk GOcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=HoaYNMUc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i11-20020a50fc0b000000b0051e041a38f0si9685084edr.596.2023.07.14.06.55.15; Fri, 14 Jul 2023 06:55:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=HoaYNMUc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235667AbjGNNvp (ORCPT + 99 others); Fri, 14 Jul 2023 09:51:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235759AbjGNNvj (ORCPT ); Fri, 14 Jul 2023 09:51:39 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBA7335AC for ; Fri, 14 Jul 2023 06:51:32 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-992ca792065so258851066b.2 for ; Fri, 14 Jul 2023 06:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342691; x=1691934691; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=urifUudkEPyq2FzlaT1w1iDQxgnQEtIqwDDZrLy2t8E=; b=HoaYNMUc+3aRJuYOwNmUedlSGEpUBUGY6lxQ/zMGvOj9K2wQntSgnZkBPOSKVBU3n9 JOvML0jRSQx9AFX+U5PqI7PKiQSTaXK1lU7Dy/gIxiq58+VImnTu2PfOsBg5IpZI7VsK q3ulnWZAbSdgguL2WOpDHUaXFDAJj0wjLYErKrHkU/vRdKd/ZCqrP0XfIsws61YnV9Vx xGpfr7pSgCyoguvUWuGLjnubcw/zm1ifpg/0MFj7sMwdRoA/yO5g2essZAU7CA/VYFIl 8RzBub+t/S83+3GlRVYB1TLsoYZhmkHzYSA2vZs3sz4JGC2q3tg1JgEoPyaV+cs//2g1 pYag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342691; x=1691934691; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=urifUudkEPyq2FzlaT1w1iDQxgnQEtIqwDDZrLy2t8E=; b=j5nhusaCbXVmhUj14AgJh+w50GxH0P+9r9d2IaMYR60XWFL9P/kuTwQkb1fVVWPydv 62dac0y9pLn0/r27wMY8dsGXGEoBcdSfGTIi0Pb8ZnV1ja5lueCaTGRtKp3uNB+yFzgD bLdD6hG3t0dUkUfai5/e3dxbMVjQIPIhFBnPW7RxYLc+Zvxh9eO2+E7yfbbRVoLdRYzd lA+x27bIe/8/Vj+jkDVaJk3CzqZ55fwcxKhD9e6ixfg4iNX3wUgryoJxoNnPDR/vs/Rg I2mkSG2Xu+ndsyi/sHkm84PDnQ6yIY+HzpK9mOnbluWxIiJO7C8HBF/YitSNheJfx30R yCnA== X-Gm-Message-State: ABy/qLbrQe75yfgUEkr6Bwqkd5S35vk2Zf62/yt7rh1pOJXjn4HvMcTF fb6rCH+cmoyby2Zi1YBHyKKruA== X-Received: by 2002:a17:906:57c7:b0:991:fef4:bb7 with SMTP id u7-20020a17090657c700b00991fef40bb7mr3750894ejr.73.1689342691040; Fri, 14 Jul 2023 06:51:31 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:30 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki , Krzysztof Kozlowski , Rob Herring Subject: [PATCH v2 2/8] dt-bindings: trivial-devices: Add MPS MP2971 and MP2973 Date: Fri, 14 Jul 2023 15:51:10 +0200 Message-ID: <20230714135124.2645339-2-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771404464710757626 X-GMAIL-MSGID: 1771404464710757626 From: Patrick Rudolph Add Monolithic Power Systems MP2971 & MP2973 to trivial devices. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki Acked-by: Krzysztof Kozlowski --- 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 246863a9bc7e..f639618508a9 100644 --- a/Documentation/devicetree/bindings/trivial-devices.yaml +++ b/Documentation/devicetree/bindings/trivial-devices.yaml @@ -119,6 +119,10 @@ properties: - fsl,mpr121 # Monolithic Power Systems Inc. multi-phase controller mp2888 - mps,mp2888 + # Monolithic Power Systems Inc. multi-phase controller mp2971 + - mps,mp2971 + # Monolithic Power Systems Inc. multi-phase controller mp2973 + - mps,mp2973 # Monolithic Power Systems Inc. multi-phase controller mp2975 - mps,mp2975 # Honeywell Humidicon HIH-6130 humidity/temperature sensor From patchwork Fri Jul 14 13:51:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120496 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2530014vqm; Fri, 14 Jul 2023 07:09:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlHFdY08Kvpf6q2U919irBGL3uDBuyENWKUu/EkjW0sr3qJFDM0LziszZoh65Mwv4CIp9nuR X-Received: by 2002:a05:6a20:12c8:b0:133:4bca:dfd2 with SMTP id v8-20020a056a2012c800b001334bcadfd2mr4043795pzg.50.1689343779866; Fri, 14 Jul 2023 07:09:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689343779; cv=none; d=google.com; s=arc-20160816; b=FBvNq1yaHMe6t/J0TtITHVy312zN5tJdmQzJRtsEXDZAZyGoN1vHI5C5dRZ8S7NxW5 k9WIN6L7ZZNFcg0VvGnsQTZYgAOwOBXnwLR1m7XBQFrMI2OkDdG4Y7NVmhT7/RO1DkKz 9TqRGkKTsvnaPI5kCByvdPnbTgEpLOY6dDZhIh2Ysi9VMLVLMxomsdLY9SnDD/mmOvXv LX15d73c9O1hKcSAbGD2CHdYWaczKn2ic5eTS3oDYXXnZNZYla3SkfGawMEjVFJLGPfg T+gHbN2HX+DAUUpdlT41xEjIMieJh3wWsLCwKdidH0iffbj7nVFQDrZPSS7Q8m3+bKDN j54Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nNQjkE8rt0loSfu/6IF9XOAi/Sv+jFDCxC5ymTmcAL4=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=rS/uUew7zAKAy9fkv+PU5+3sx8fio6b/ogujgUMAdAlUVLAcPp6r9wa9uhRjETA4oG y0R2SQteDENE2PqiGtKw3aSPym2DkZ+TqFjvaSnvwCVVHrNnQ0vBvdc6r3W+8kQMll03 AbdVw2Pn+NQUDd9OuqthBWD2u2t/W6v+p34FGwGiwLdVMuSxcry3TMHGHWXU+5VezUlK Ud1IP849t8DQ2lvzxWRXjTNboashBxdB9rMVISFdtoajNwe6x+37a6aKID9m+AmzyyiD EBZHODi/6guj/RmHpBegjWR1Qa2EFBFTSz42/E6MAs4x9JZ3QTRs2Oe/9TuyneS5kASR aUDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=CAoScYra; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id be3-20020a656e43000000b0055c4c9cc01esi7261320pgb.148.2023.07.14.07.09.26; Fri, 14 Jul 2023 07:09:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=CAoScYra; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235519AbjGNNvr (ORCPT + 99 others); Fri, 14 Jul 2023 09:51:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235849AbjGNNvm (ORCPT ); Fri, 14 Jul 2023 09:51:42 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 079B735AE for ; Fri, 14 Jul 2023 06:51:34 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-4fb8574a3a1so3253835e87.1 for ; Fri, 14 Jul 2023 06:51:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342692; x=1691934692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nNQjkE8rt0loSfu/6IF9XOAi/Sv+jFDCxC5ymTmcAL4=; b=CAoScYrac6wbsvgf3sCMIHSfG/XzOgLvZwMP16U/7iGRxj0aeq6Qmevw4df6X9scar SzZtfeh+IvZxJHqY+y8996NhE8uM/yj4/2X1rLO/2mc7fUJwLd/MJHEYcklGEEtg9dVE HfVkUBg1Hu0OBW0vJ+5vJZzpXhPnMobGOs9u5EdqsCTFSK90I0Cbl0wd8C6gdOf5+K7N 0C5hoKxZir6Xxx3OVQ5clhrtdGIyJcXS8v0fDYj79V7kM4Xoqx9HVXvQKXcaTH07j5wI 78S4zgXWu4YOvicqE/rw6CJ2GSLWHKXQiq7gyJxy4EC4h0UYo8C40ct9Ap8DgdBPLmxV Fy2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342692; x=1691934692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nNQjkE8rt0loSfu/6IF9XOAi/Sv+jFDCxC5ymTmcAL4=; b=IKlcX/MXuJIMCsdAIKaPP5RD+0WTT5of5QyBo/l2d8MTJIkwpdsnQMVKWfMqv5d3HW O8biY+8x9WPP/w9aSh4P7eVHB6j5FqAkI6yTHEaTub5z7ZJTj/9+vwbD6AXgogwxsQ3J ho9c8YCy2MlpokQw2ZWMLrZhlPJHhztkv902N+dLnBS/uhjO/qslZVnHTWU5JXU43ixL Z6ron4rjogsfBll0pSORhF0J9C/zOqNjXPuacerzklKyDcwsFuFblU0vCc20DNYPXcdz ApOHcM+B25uyZoMdDwEUhQhgQLzTIO4p1QBUgykpNZjrz5s/UPVfPHlR5Gph5RS+m8N7 8xDg== X-Gm-Message-State: ABy/qLZNHP+nTBvzZ1UIEsu9PiEqvFkbXBgGifuD3hgTT4T530HETNyI 9IwxgojMJWANsAEBaLVCYVB5Qw== X-Received: by 2002:a05:6512:2202:b0:4f6:2a02:fc1a with SMTP id h2-20020a056512220200b004f62a02fc1amr4347481lfu.17.1689342692293; Fri, 14 Jul 2023 06:51:32 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:31 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 3/8] hwmon: (pmbus/mp2975) Prepare for MP2973 and MP2971 Date: Fri, 14 Jul 2023 15:51:11 +0200 Message-ID: <20230714135124.2645339-3-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771405343352315307 X-GMAIL-MSGID: 1771405343352315307 From: Patrick Rudolph Add support for differntiating between the chips. The following commits will make use of this mechanism. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- drivers/hwmon/pmbus/mp2975.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 130cfde52e42..04778f2dcbdb 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "pmbus.h" /* Vendor specific registers. */ @@ -56,8 +57,13 @@ PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | \ PMBUS_HAVE_POUT | PMBUS_PHASE_VIRTUAL) +enum chips { + mp2975 +}; + struct mp2975_data { struct pmbus_driver_info info; + enum chips chip_id; int vout_scale; int vid_step[MP2975_PAGE_NUM]; int vref[MP2975_PAGE_NUM]; @@ -68,6 +74,13 @@ struct mp2975_data { int curr_sense_gain[MP2975_PAGE_NUM]; }; +static const struct i2c_device_id mp2975_id[] = { + {"mp2975", mp2975}, + {} +}; + +MODULE_DEVICE_TABLE(i2c, mp2975_id); + #define to_mp2975_data(x) container_of(x, struct mp2975_data, info) static int mp2975_read_byte_data(struct i2c_client *client, int page, int reg) @@ -691,6 +704,11 @@ static int mp2975_probe(struct i2c_client *client) if (!data) return -ENOMEM; + if (client->dev.of_node) + data->chip_id = (enum chips)of_device_get_match_data(&client->dev); + else + data->chip_id = i2c_match_id(mp2975_id, client)->driver_data; + memcpy(&data->info, &mp2975_info, sizeof(*info)); info = &data->info; @@ -739,15 +757,8 @@ static int mp2975_probe(struct i2c_client *client) return pmbus_do_probe(client, info); } -static const struct i2c_device_id mp2975_id[] = { - {"mp2975", 0}, - {} -}; - -MODULE_DEVICE_TABLE(i2c, mp2975_id); - static const struct of_device_id __maybe_unused mp2975_of_match[] = { - {.compatible = "mps,mp2975"}, + {.compatible = "mps,mp2975", .data = (void *)mp2975}, {} }; MODULE_DEVICE_TABLE(of, mp2975_of_match); From patchwork Fri Jul 14 13:51:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120491 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2528466vqm; Fri, 14 Jul 2023 07:07:47 -0700 (PDT) X-Google-Smtp-Source: APBJJlEEOe52LnGaML37iCKyyCo+hyO6SyJyN2ZsTiwNVpXnrj4WvtIiN7Brx/H62DPkSqVXNL0p X-Received: by 2002:a17:902:d2cd:b0:1b8:6a09:9cf9 with SMTP id n13-20020a170902d2cd00b001b86a099cf9mr5432971plc.26.1689343667236; Fri, 14 Jul 2023 07:07:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689343667; cv=none; d=google.com; s=arc-20160816; b=v0D4sLFwOcDHKNwolB0uUTzyWW0TcOzc+xh0HgDrOFLmCTtSOpqsHnGMQpXTAo63fV ConoIbziG0Y41NFWzybm7+16vrsUYbp9BOUdHRTKOkovo3p9I9Sxu7fhTsPKw3pCKpsA GXqLF6tMemQ6c77zUJXZO0R8Ce2aRUKzq7/TawjJj3mZsrEwuMD5VBUIurWi7yeAVxud tseqpeYfv7JESsdAOybIH9tfM5aLMOFVwTi1ahxPUYRunfi/8Pknl9N10o/qYYxcT5pK L0v+CTILuHaYTOLkGHA9E0iaC83cZdWHOq96L8Ub0DxYXdbViibyFZJhCVYnS2BmjQM4 lGHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hHsTvrtvB0wpJ5anwtL0i/1V0CIzWke0nwnI3nLvsbc=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=GDu0XO6a5d7lYdJLoRx3euqo9AxUFVbU/N8O2VgVeWpGQ5KSmRWbDwSCheXjQheoKk Jt6pgIUK6EzEtKbJmCiULlRturSWl5skGP58fam32iab4rxC9DE4AVcHHHfnNVm/fArX ulercHERJpDhkytFnnczk/ou5xggnPh4zCJXUQrTQaGhjoDeyvaPHx4ulA0Schqt7Zp7 6oJnBZ5DDflVD+LnlGOeJPjJxibem2SdTdWN9BQyjLBZ0kD/rrb5JGiz+EuWlGGRwMUi K2kKWW3e8hQoFfptyuFebUWA60/YmabrNrvbHkA4vfQHrmveQSXsOAVju+c77emO6ZYS VLIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=OarhMORP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i8-20020a1709026ac800b001b7fb1aa81dsi6886804plt.289.2023.07.14.07.07.34; Fri, 14 Jul 2023 07:07:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=OarhMORP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235699AbjGNNvw (ORCPT + 99 others); Fri, 14 Jul 2023 09:51:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235548AbjGNNvn (ORCPT ); Fri, 14 Jul 2023 09:51:43 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D6B135A5 for ; Fri, 14 Jul 2023 06:51:35 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-992b66e5affso258342766b.3 for ; Fri, 14 Jul 2023 06:51:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342693; x=1691934693; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hHsTvrtvB0wpJ5anwtL0i/1V0CIzWke0nwnI3nLvsbc=; b=OarhMORPdTqodyKTz+n9Bmwx/YU5UO+bixsCXkwLRx6/X09260oSz5vM5r5kYUHojj gnlZCodUReICh2FtUvCnlzIY/MkT2401wyrAUOMuJ55pEdzrXpdMH2j9mo4K+GqTyhC8 4K6mtRQGgavu0L7YxK+Ik19TquIi3MBSDzvitj9oaOzZZznoptRIdWveZVC+CiCEfNtO gVQESzTlv7ULoa0X4g14KHW4cjsWQYRJ7nN4JwOEOhO/CWMj7zEWBptvnEADtiCzZmgs zV553i8BvzjZ0lgUfr7Rn+VYBUajr8H24zjlyCYscAYtX5A4YbGMvO4jCXXE51Wk4Tsl 3rYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342693; x=1691934693; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hHsTvrtvB0wpJ5anwtL0i/1V0CIzWke0nwnI3nLvsbc=; b=UnlMGOBEBnqYNWNMXGRvpX91hLQRmCldXiuvjvLKjahd0JljA9LGkSEwqvmY+HZ2zW wXFPjlm0ZSJfzR5/rb/aYodDDThXmVLFtxDhPQPoFjI4QE+0tWAZd+DCfSxVcAdqXo4P rGJMurH9V2YbDSdGzigWd5OqAmMmV33BVWGfljvEoFTpVBcfJD1MvJ+cNRPeRzJ8x4rf Dy1O2wK2g38KIH+JxFpOxhXWHbjunFloO21WDJlDRjM2OCY9XwNgFrGam098GcqHoSvq M60gpucmNLRxbRz7WnJQenwz/AscokcWdaWP+8p6Ze6mPGONv4c8WdoieQQlWId4BzXv f9hQ== X-Gm-Message-State: ABy/qLbOAa4/G/d9U822Msoct3o5s2FtgVXSJsMLu4F9kixPZieoOy1y Eaz3NRR0kBXNLewNDtIsYnj/1cBFm6GR0olXVOQ/dQ== X-Received: by 2002:a17:906:748c:b0:993:ed3c:dee2 with SMTP id e12-20020a170906748c00b00993ed3cdee2mr4417056ejl.5.1689342693513; Fri, 14 Jul 2023 06:51:33 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:33 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 4/8] hwmon: (pmbus/mp2975) Simplify VOUT code Date: Fri, 14 Jul 2023 15:51:12 +0200 Message-ID: <20230714135124.2645339-4-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771405225383030741 X-GMAIL-MSGID: 1771405225383030741 From: Patrick Rudolph In order to upstream MP2973/MP2971 simplify the code by removing support for various VOUT formats. The MP2973 and MP2971 supports all PMBUS supported formats for VOUT, while the MP2975 only support DIRECT and VID for VOUT. In DIRECT mode all chips report the voltage in 1mV/LSB. Configure the chip to use DIRECT format for VOUT and drop the code conversion code for other formats. The to be added chips MP2973/MP2971 will be configured to also report VOUT in DIRECT format. The maximum voltage that can be reported in DIRECT format is 32768mV. This is sufficient as the maximum output voltage for VR12/VR13 is 3040 mV. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- Changes in V2: - Do i2c write back only if needed. - Update comment to align with change. --- drivers/hwmon/pmbus/mp2975.c | 60 ++++++------------------------------ 1 file changed, 10 insertions(+), 50 deletions(-) diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 04778f2dcbdb..0dca4c24fe5a 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -70,7 +70,6 @@ struct mp2975_data { int vref_off[MP2975_PAGE_NUM]; int vout_max[MP2975_PAGE_NUM]; int vout_ov_fixed[MP2975_PAGE_NUM]; - int vout_format[MP2975_PAGE_NUM]; int curr_sense_gain[MP2975_PAGE_NUM]; }; @@ -83,22 +82,6 @@ MODULE_DEVICE_TABLE(i2c, mp2975_id); #define to_mp2975_data(x) container_of(x, struct mp2975_data, info) -static int mp2975_read_byte_data(struct i2c_client *client, int page, int reg) -{ - switch (reg) { - case PMBUS_VOUT_MODE: - /* - * Enforce VOUT direct format, since device allows to set the - * different formats for the different rails. Conversion from - * VID to direct provided by driver internally, in case it is - * necessary. - */ - return PB_VOUT_MODE_DIRECT; - default: - return -ENODATA; - } -} - static int mp2975_read_word_helper(struct i2c_client *client, int page, int phase, u8 reg, u16 mask) @@ -273,24 +256,6 @@ static int mp2975_read_word_data(struct i2c_client *client, int page, ret = DIV_ROUND_CLOSEST(data->vref[page] * 10 - 50 * (ret + 1) * data->vout_scale, 10); break; - case PMBUS_READ_VOUT: - ret = mp2975_read_word_helper(client, page, phase, reg, - GENMASK(11, 0)); - if (ret < 0) - return ret; - - /* - * READ_VOUT can be provided in VID or direct format. The - * format type is specified by bit 15 of the register - * MP2975_MFR_DC_LOOP_CTRL. The driver enforces VOUT direct - * format, since device allows to set the different formats for - * the different rails and also all VOUT limits registers are - * provided in a direct format. In case format is VID - convert - * to direct. - */ - if (data->vout_format[page] == vid) - ret = mp2975_vid2direct(info->vrm_version[page], ret); - break; case PMBUS_VIRT_READ_POUT_MAX: ret = mp2975_read_word_helper(client, page, phase, MP2975_MFR_READ_POUT_PK, @@ -578,20 +543,20 @@ mp2975_vout_max_get(struct i2c_client *client, struct mp2975_data *data, } static int -mp2975_identify_vout_format(struct i2c_client *client, - struct mp2975_data *data, int page) +mp2975_set_vout_format(struct i2c_client *client, + struct mp2975_data *data, int page) { int ret; ret = i2c_smbus_read_word_data(client, MP2975_MFR_DC_LOOP_CTRL); if (ret < 0) return ret; - - if (ret & MP2975_VOUT_FORMAT) - data->vout_format[page] = vid; - else - data->vout_format[page] = direct; - return 0; + /* Enable DIRECT VOUT format 1mV/LSB */ + if (ret & MP2975_VOUT_FORMAT) { + ret &= ~MP2975_VOUT_FORMAT; + ret = i2c_smbus_write_word_data(client, MP2975_MFR_DC_LOOP_CTRL, ret); + } + return ret; } static int @@ -649,12 +614,8 @@ mp2975_vout_per_rail_config_get(struct i2c_client *client, if (ret < 0) return ret; - /* - * Get VOUT format for READ_VOUT command : VID or direct. - * Pages on same device can be configured with different - * formats. - */ - ret = mp2975_identify_vout_format(client, data, i); + /* Set VOUT format for READ_VOUT command : direct. */ + ret = mp2975_set_vout_format(client, data, i); if (ret < 0) return ret; @@ -689,7 +650,6 @@ static struct pmbus_driver_info mp2975_info = { PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT | PMBUS_PHASE_VIRTUAL, - .read_byte_data = mp2975_read_byte_data, .read_word_data = mp2975_read_word_data, }; From patchwork Fri Jul 14 13:51:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120489 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2525991vqm; Fri, 14 Jul 2023 07:04:46 -0700 (PDT) X-Google-Smtp-Source: APBJJlHxETjQnu8sDDUTUbbQiwP0TNx46iHAQfv0jA6VyJ9+CRgn5J6fQkd58arDb+6SdFYML5L6 X-Received: by 2002:a17:902:e805:b0:1ab:11c8:777a with SMTP id u5-20020a170902e80500b001ab11c8777amr5596016plg.13.1689343485958; Fri, 14 Jul 2023 07:04:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689343485; cv=none; d=google.com; s=arc-20160816; b=u+GCpWG6tYgdcG0+ETWJr2uOTn918RpS7iLkyobzmxKhXjvlZO4KU6hCbjvKF4KD3I Jvd+OhRdiRwKPizDDfIweawoXMHqbpx5WuTL577lwkLvLQGxmQL6nf9Erw97ykMeX8xB JJ0YA+KRZhAVZwLz2retOJ11cXxNaZalQ1BIXNDaPHcPnBKDC4JDSDtEY9adGylY39Ae bcggtqGPFrQVuDzZRboKHGw/HQroRbR+phAknYAkbUMDQD0TQ/sGGnNcKb+b5xgPRolp 5fgJmqdxxwY9NvFnPISC3AbHk4J7l4lnPX9kJX3r6Srg2V3TLB2hv3KSs3/eyQ+BScVJ EH3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cANOGybmFj7Zq4gL4JbpXEsjPGs2Mp7a7KHpPLol+0g=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=DF79XvsevL868CeQFwy0xZuecRJbmwdW406GKqJbc5h1zLAy7b5efhFParwledDZzh iLO0WNyS2aQo2MYKX1oaFlthPblrJJSvqe5tT2NQbJ7EQW77xRtMvpcGRvw/ocQ5iuac bJmE1pA4PkroMGLE2YHcyVmlz3RuwxZu1jFVqNtzzmWcorWdwCaRxdLpBDqwQwkmlcX7 bSjRFsVmRj10NCe8w1LhvwJlymNrjLqo1EksvXtiZ2kkWgksW6+qvbfJSjYJLl3YWmSv ujTDYjYy6sVyIPH41Zd+mtOVe2KNLyeAAadztx/jQi98rBoH2Il9CPqrrv0KayvlzR4R g06w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=elMOQ6Cx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q15-20020a170902dacf00b001b831d26f32si7757209plx.590.2023.07.14.07.04.26; Fri, 14 Jul 2023 07:04:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=elMOQ6Cx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235904AbjGNNwA (ORCPT + 99 others); Fri, 14 Jul 2023 09:52:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235371AbjGNNvp (ORCPT ); Fri, 14 Jul 2023 09:51:45 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B6E135B1 for ; Fri, 14 Jul 2023 06:51:36 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-992f6d7c7fbso256125666b.3 for ; Fri, 14 Jul 2023 06:51:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342694; x=1691934694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cANOGybmFj7Zq4gL4JbpXEsjPGs2Mp7a7KHpPLol+0g=; b=elMOQ6Cxyp9aePnQwUVZxGZTe4HItRyaljpXRaHdVNx/HyYZ23eUe7m33iV3g49oXx NFcl6ARzebs0GWpgPd3Vi9I1gICQQnzRvkdswTqsAsBAdRgIOJx634dJwFvY6oY49zpU axKNjNfX8hBv4Mt5+m+1rQRoD+r9aj1lVYTXgOtFT+mTNMXuZozFvVmpoOM7AhRkko1u uGjvfuAETqeLMd5R9AMcdENX7wFmQwLFY9EL63YTBsajxaPqQI7S/f1LbUM+LQ9FfWCw bCuSaAflH/DJZ9hBqqE6FX++XRmd6y2DRZN09jegNLBz5RbkpVCKpuUXKOJ05RywichT eHLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342694; x=1691934694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cANOGybmFj7Zq4gL4JbpXEsjPGs2Mp7a7KHpPLol+0g=; b=Y82sC9VgQy8+r5SdivkFG8efQcH7p1prQCAfF2cLZiB1q9Tg+iP+ve1Btzfpu4+gWd +mSuocrTC38C3+bTxqKupgAxJg6MZO4D7XYZjp2IGRJINjqTlB0FGzHthS8/WktK+e8V XQI/gJ714W1j4AAdUuEE8IFETqtgOUSYXP85FGPPFjnFl5hQA9pjA1Z87isg3BH7AWfw ER0d/X8bg2hjKPsNzolu6mTs2EafBzO/m6y2gn6CQcUAGbyfH2QGlo4vkuvSZA3URMrp iCA8xWr+sZKHm+pnayGOWOtrTc5hqSWYTZdlC/sKpWq7t1snY4somODY5H1yvDArpSdQ AMkQ== X-Gm-Message-State: ABy/qLaMPjqTQfmeSjW2igHNqbADiJjmt8ctsE83O+VxBfU3VGF5EdO+ UuCU04o+46TTmW1ypyK4n44WhP2vlgDGrKSCgM0PTw== X-Received: by 2002:a17:906:35c2:b0:98d:ef34:c0c8 with SMTP id p2-20020a17090635c200b0098def34c0c8mr3479555ejb.67.1689342694776; Fri, 14 Jul 2023 06:51:34 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:34 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 5/8] hwmon: (pmbus/mp2975) Make phase count variable Date: Fri, 14 Jul 2023 15:51:13 +0200 Message-ID: <20230714135124.2645339-5-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771405034599961628 X-GMAIL-MSGID: 1771405034599961628 From: Patrick Rudolph In order to add support for MP2973 and MP2971 replace hardcoded phase count for both channels by a variable. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- drivers/hwmon/pmbus/mp2975.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 0dca4c24fe5a..a4453b9284fa 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -61,10 +61,15 @@ enum chips { mp2975 }; +static const int mp2975_max_phases[][MP2975_PAGE_NUM] = { + [mp2975] = { MP2975_MAX_PHASE_RAIL1, MP2975_MAX_PHASE_RAIL2 }, +}; + struct mp2975_data { struct pmbus_driver_info info; enum chips chip_id; int vout_scale; + int max_phases[MP2975_PAGE_NUM]; int vid_step[MP2975_PAGE_NUM]; int vref[MP2975_PAGE_NUM]; int vref_off[MP2975_PAGE_NUM]; @@ -304,25 +309,25 @@ static int mp2975_read_word_data(struct i2c_client *client, int page, return ret; } -static int mp2975_identify_multiphase_rail2(struct i2c_client *client) +static int mp2975_identify_multiphase_rail2(struct i2c_client *client, + struct mp2975_data *data) { int ret; /* - * Identify multiphase for rail 2 - could be from 0 to 4. + * Identify multiphase for rail 2 - could be from 0 to data->max_phases[1]. * In case phase number is zero – only page zero is supported */ ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, 2); if (ret < 0) return ret; - /* Identify multiphase for rail 2 - could be from 0 to 4. */ ret = i2c_smbus_read_word_data(client, MP2975_MFR_VR_MULTI_CONFIG_R2); if (ret < 0) return ret; ret &= GENMASK(2, 0); - return (ret >= 4) ? 4 : ret; + return (ret >= data->max_phases[1]) ? data->max_phases[1] : ret; } static void mp2975_set_phase_rail1(struct pmbus_driver_info *info) @@ -353,7 +358,7 @@ mp2975_identify_multiphase(struct i2c_client *client, struct mp2975_data *data, if (ret < 0) return ret; - /* Identify multiphase for rail 1 - could be from 1 to 8. */ + /* Identify multiphase for rail 1 - could be from 1 to data->max_phases[0]. */ ret = i2c_smbus_read_word_data(client, MP2975_MFR_VR_MULTI_CONFIG_R1); if (ret <= 0) return ret; @@ -361,19 +366,19 @@ mp2975_identify_multiphase(struct i2c_client *client, struct mp2975_data *data, info->phases[0] = ret & GENMASK(3, 0); /* - * The device provides a total of 8 PWM pins, and can be configured + * The device provides a total of $n PWM pins, and can be configured * to different phase count applications for rail 1 and rail 2. - * Rail 1 can be set to 8 phases, while rail 2 can only be set to 4 - * phases at most. When rail 1’s phase count is configured as 0, rail + * Rail 1 can be set to $n phases, while rail 2 can be set to less than + * that. When rail 1’s phase count is configured as 0, rail * 1 operates with 1-phase DCM. When rail 2 phase count is configured * as 0, rail 2 is disabled. */ - if (info->phases[0] > MP2975_MAX_PHASE_RAIL1) + if (info->phases[0] > data->max_phases[0]) return -EINVAL; mp2975_set_phase_rail1(info); - num_phases2 = min(MP2975_MAX_PHASE_RAIL1 - info->phases[0], - MP2975_MAX_PHASE_RAIL2); + num_phases2 = min(data->max_phases[0] - info->phases[0], + data->max_phases[1]); if (info->phases[1] && info->phases[1] <= num_phases2) mp2975_set_phase_rail2(info, num_phases2); @@ -669,11 +674,13 @@ static int mp2975_probe(struct i2c_client *client) else data->chip_id = i2c_match_id(mp2975_id, client)->driver_data; - memcpy(&data->info, &mp2975_info, sizeof(*info)); + memcpy(data->max_phases, mp2975_max_phases[data->chip_id], + sizeof(data->max_phases)); + info = &data->info; /* Identify multiphase configuration for rail 2. */ - ret = mp2975_identify_multiphase_rail2(client); + ret = mp2975_identify_multiphase_rail2(client, data); if (ret < 0) return ret; From patchwork Fri Jul 14 13:51:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120487 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2519510vqm; Fri, 14 Jul 2023 06:55:49 -0700 (PDT) X-Google-Smtp-Source: APBJJlG+/iXrk0LCExLc7O+sS6J57Cayfxklc5wEJniQ+c821uq1HqU64Bu/VIu1s6UjEoMvomwh X-Received: by 2002:aa7:dad4:0:b0:51e:278a:3627 with SMTP id x20-20020aa7dad4000000b0051e278a3627mr4926869eds.7.1689342948768; Fri, 14 Jul 2023 06:55:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689342948; cv=none; d=google.com; s=arc-20160816; b=TtMoZDSruVmz+KA9Z0ohGeC0Q8/4JOORZETBKLUFi67htLTf3olGVmMxl9BHelCfWv h7t9js2wgW2L5IFlqX25rtRC4jQk1f8L0uRxh6MMfpIVjyXlSNVNRLUh+9nlLiWSRi2a NzyoI8eGOQLSpdKkq5lIL/J4CDSIYDC+xTIB8xzuu6NjEQTV1zE7aPvBkbixDY+W7a5C ct4w6zhoSZzLHwDwUQJnGtDtOefvb9L+7xTXX+2d+E4PBgp9VMgcp8vUW5zebHzPLAUw sH0iTcioyYTTLS8/sySPWnvCg4LxfAA4T3hKCh7Q87qXDS5jFk0T1ruBt1pzeTGdKfg5 dzJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+50uxE8haUmsaczpnhGTT37unUw2hxG3ZoV9roE+Xbo=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=zrj32NZ6TSAm4gmYFvPqFDzpquq/XKadS80+r3z9/bJh97W71BvvYoR50sfEIZ77t6 x1rww1+nQn0G5cfOAKaUOi5X/ChPsoO7jVYa/y3iKz8escycHzuuzsv29ZlIULytsc8/ OxEPm7lZIkWhWsl2xTNLjyhVdclV1ZqfBxpt7KjJwXHs+xAmz4GevWJUlAJ2UwIvnJIn 4c6q0032oQzZEtmYp5OjHegNwdt8RxOuoGHsSBjH37kfS8Ud9RTDkeKR0frJf3kzOHus kivaGudfLgPEXVh9FZkso+87YW8YZjJMmifDD+bFHyFIrT+QX15ZFDamZaJx02deJCcD yI9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=SahvmqaR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b5-20020aa7df85000000b0051e3375d4f2si395640edy.338.2023.07.14.06.55.24; Fri, 14 Jul 2023 06:55:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=SahvmqaR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235947AbjGNNvz (ORCPT + 99 others); Fri, 14 Jul 2023 09:51:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235258AbjGNNvq (ORCPT ); Fri, 14 Jul 2023 09:51:46 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D74635B5 for ; Fri, 14 Jul 2023 06:51:37 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-992ace062f3so262084566b.2 for ; Fri, 14 Jul 2023 06:51:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342696; x=1691934696; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+50uxE8haUmsaczpnhGTT37unUw2hxG3ZoV9roE+Xbo=; b=SahvmqaRey0p94ptY8lTmxbkRyHoxm4JVQT/RHCHvo8gjxqL02MlH2jvArJBM66FGV eppuEPOGv9OHQPcHe2TIzA1OFrcMSUijYDFUvIgHCS3HmnVj6o7RY1vGZUKcGrxvuQof VudsaFA3UN7QFYCViQQgCexGofK+9qifZmSUPg+BoEspwuG2bXZbJvqtRVhRHQg+FmX2 MF7HlDdhJCGrDU4a2R4KvQIiWIW3ZCpVAX2YuAaHqP1DXwLfEnQ0kUYT+qE2GHaOZbNC VoF0N/OPdocGkFOUhljd23ji0IL7bCCezb+cs5uTzS7DUBfdmotWV2eIaRjwVb5ELrFu Q/gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342696; x=1691934696; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+50uxE8haUmsaczpnhGTT37unUw2hxG3ZoV9roE+Xbo=; b=cvm0sLk+YdBvq898BhiVhLofDKkSRHcAWCUt7HxfWI2/e3r4VyTyq1QdvzRCiiRBjd Vc7qQyl9bHPBDSYm/F8EiJpPEdv0GEOBiQhTqFUvE/JpZ7arJIo/RWCD1BDoMuZnG4j3 Fr/lWXL+Pu7GwfBw5Ai6Q4fA01vyWSX8PoijiUxKhJJMWDqOuFzump1kri4k5HsjLvE+ 0YrWFOo8ptWjBJ91H5rs+I1upx84x53c+6nK7xn7QWI8ytoRnpw3HmW6BDUDV1A0xC+7 5Gsg/mv/u0k9DR5GBRlWfJL37G2LkE/IVPukRtjEYY8OgT+ce26Eb38qwMhpVHS39epe H7qQ== X-Gm-Message-State: ABy/qLZogukm/hJLVX6tUQPriKEik3Eou3bS0+1uy7d3FAgxj9WRX6v3 c7xW/ogc/R4xPN9CGdeZHS9VHw== X-Received: by 2002:a17:906:5185:b0:96f:a891:36cb with SMTP id y5-20020a170906518500b0096fa89136cbmr4894759ejk.0.1689342696040; Fri, 14 Jul 2023 06:51:36 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:35 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 6/8] hwmon: (pmbus/mp2975) Add support for MP2971 and MP2973 Date: Fri, 14 Jul 2023 15:51:14 +0200 Message-ID: <20230714135124.2645339-6-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771404471606912996 X-GMAIL-MSGID: 1771404471606912996 From: Patrick Rudolph Add support for MP2971 and MP2973, the successor of MP2975. The major differences are: - On MP2973 and MP2971 the Vref cannot be read and thus most of the OVP/current calculations won't work. - MP2973 and MP2971 also support LINEAR format for VOUT - MP2973 and MP2971 do not support OVP2 - On MP2973 and MP2971 most registers are in LINEAR format - The IMVP9_EN bit has a different position - Per phase current sense haven't been implemented. As on MP2975 most of the FAULT_LIMIT and WARN_LIMIT registers have been redefined and doesn't provide the functionality as defined in PMBUS spec. Tested on MP2973 and MP2971. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- Changes in V2: - Remove cosmetic changes like continue to use mp2975 instead of changing it to mp297x. - Do i2c write back only if needed. --- drivers/hwmon/pmbus/mp2975.c | 247 ++++++++++++++++++++++++++++++----- 1 file changed, 214 insertions(+), 33 deletions(-) diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index a4453b9284fa..4d72ed18cc8c 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -35,6 +35,8 @@ #define MP2975_MFR_OVP_TH_SET 0xe5 #define MP2975_MFR_UVP_SET 0xe6 +#define MP2973_MFR_RESO_SET 0xc7 + #define MP2975_VOUT_FORMAT BIT(15) #define MP2975_VID_STEP_SEL_R1 BIT(4) #define MP2975_IMVP9_EN_R1 BIT(13) @@ -49,8 +51,32 @@ #define MP2975_SENSE_AMPL_HALF 2 #define MP2975_VIN_UV_LIMIT_UNIT 8 +#define MP2973_VOUT_FORMAT_R1 GENMASK(7, 6) +#define MP2973_VOUT_FORMAT_R2 GENMASK(4, 3) +#define MP2973_VOUT_FORMAT_DIRECT_R1 BIT(7) +#define MP2973_VOUT_FORMAT_LINEAR_R1 BIT(6) +#define MP2973_VOUT_FORMAT_DIRECT_R2 BIT(4) +#define MP2973_VOUT_FORMAT_LINEAR_R2 BIT(3) + +#define MP2973_MFR_VR_MULTI_CONFIG_R1 0x0d +#define MP2973_MFR_VR_MULTI_CONFIG_R2 0x1d +#define MP2973_VID_STEP_SEL_R1 BIT(4) +#define MP2973_IMVP9_EN_R1 BIT(14) +#define MP2973_VID_STEP_SEL_R2 BIT(3) +#define MP2973_IMVP9_EN_R2 BIT(13) + +#define MP2973_MFR_READ_IOUT_PK 0x90 +#define MP2973_MFR_READ_POUT_PK 0x91 + #define MP2975_MAX_PHASE_RAIL1 8 #define MP2975_MAX_PHASE_RAIL2 4 + +#define MP2973_MAX_PHASE_RAIL1 14 +#define MP2973_MAX_PHASE_RAIL2 6 + +#define MP2971_MAX_PHASE_RAIL1 8 +#define MP2971_MAX_PHASE_RAIL2 3 + #define MP2975_PAGE_NUM 2 #define MP2975_RAIL2_FUNC (PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | \ @@ -58,11 +84,13 @@ PMBUS_HAVE_POUT | PMBUS_PHASE_VIRTUAL) enum chips { - mp2975 + mp2971, mp2973, mp2975 }; static const int mp2975_max_phases[][MP2975_PAGE_NUM] = { [mp2975] = { MP2975_MAX_PHASE_RAIL1, MP2975_MAX_PHASE_RAIL2 }, + [mp2973] = { MP2973_MAX_PHASE_RAIL1, MP2973_MAX_PHASE_RAIL2 }, + [mp2971] = { MP2971_MAX_PHASE_RAIL1, MP2971_MAX_PHASE_RAIL2 }, }; struct mp2975_data { @@ -79,6 +107,8 @@ struct mp2975_data { }; static const struct i2c_device_id mp2975_id[] = { + {"mp2971", mp2971}, + {"mp2973", mp2973}, {"mp2975", mp2975}, {} }; @@ -215,6 +245,76 @@ mp2975_read_phases(struct i2c_client *client, struct mp2975_data *data, return ret; } +static int mp2973_read_word_data(struct i2c_client *client, int page, + int phase, int reg) +{ + const struct pmbus_driver_info *info = pmbus_get_driver_info(client); + struct mp2975_data *data = to_mp2975_data(info); + int ret; + + switch (reg) { + case PMBUS_OT_FAULT_LIMIT: + ret = mp2975_read_word_helper(client, page, phase, reg, + GENMASK(7, 0)); + break; + case PMBUS_VIN_OV_FAULT_LIMIT: + ret = mp2975_read_word_helper(client, page, phase, reg, + GENMASK(7, 0)); + if (ret < 0) + return ret; + + ret = DIV_ROUND_CLOSEST(ret, MP2975_VIN_UV_LIMIT_UNIT); + break; + case PMBUS_VOUT_OV_FAULT_LIMIT: + /* + * MP2971 and mp2973 only supports tracking (ovp1) mode. + */ + ret = mp2975_read_word_helper(client, page, phase, + MP2975_MFR_OVP_TH_SET, + GENMASK(2, 0)); + if (ret < 0) + return ret; + + ret = data->vout_max[page] + 50 * (ret + 1); + break; + case PMBUS_VOUT_UV_FAULT_LIMIT: + ret = mp2975_read_word_helper(client, page, phase, reg, + GENMASK(8, 0)); + if (ret < 0) + return ret; + ret = mp2975_vid2direct(info->vrm_version[page], ret); + break; + case PMBUS_VIRT_READ_POUT_MAX: + ret = pmbus_read_word_data(client, page, phase, + MP2973_MFR_READ_POUT_PK); + break; + case PMBUS_VIRT_READ_IOUT_MAX: + ret = pmbus_read_word_data(client, page, phase, + MP2973_MFR_READ_IOUT_PK); + break; + case PMBUS_UT_WARN_LIMIT: + case PMBUS_UT_FAULT_LIMIT: + case PMBUS_VIN_UV_WARN_LIMIT: + case PMBUS_VIN_UV_FAULT_LIMIT: + case PMBUS_VOUT_UV_WARN_LIMIT: + case PMBUS_VOUT_OV_WARN_LIMIT: + case PMBUS_VIN_OV_WARN_LIMIT: + case PMBUS_IIN_OC_FAULT_LIMIT: + case PMBUS_IOUT_OC_LV_FAULT_LIMIT: + case PMBUS_IOUT_OC_WARN_LIMIT: + case PMBUS_IOUT_OC_FAULT_LIMIT: + case PMBUS_IOUT_UC_FAULT_LIMIT: + case PMBUS_POUT_OP_FAULT_LIMIT: + case PMBUS_POUT_OP_WARN_LIMIT: + case PMBUS_PIN_OP_WARN_LIMIT: + return -ENXIO; + default: + return -ENODATA; + } + + return ret; +} + static int mp2975_read_word_data(struct i2c_client *client, int page, int phase, int reg) { @@ -434,6 +534,35 @@ mp2975_identify_rails_vid(struct i2c_client *client, struct mp2975_data *data, MP2975_MFR_VR_MULTI_CONFIG_R2, 1, MP2975_IMVP9_EN_R2, MP2975_VID_STEP_SEL_R2); + + return ret; +} + +static int +mp2973_identify_rails_vid(struct i2c_client *client, struct mp2975_data *data, + struct pmbus_driver_info *info) +{ + int ret; + + ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, 2); + if (ret < 0) + return ret; + + /* Identify VID mode for rail 1. */ + ret = mp2975_identify_vid(client, data, info, + MP2973_MFR_VR_MULTI_CONFIG_R1, 0, + MP2973_IMVP9_EN_R1, MP2973_VID_STEP_SEL_R1); + + if (ret < 0) + return ret; + + /* Identify VID mode for rail 2, if connected. */ + if (info->phases[1]) + ret = mp2975_identify_vid(client, data, info, + MP2973_MFR_VR_MULTI_CONFIG_R2, 1, + MP2973_IMVP9_EN_R2, + MP2973_VID_STEP_SEL_R2); + return ret; } @@ -551,15 +680,32 @@ static int mp2975_set_vout_format(struct i2c_client *client, struct mp2975_data *data, int page) { - int ret; + int ret, i; - ret = i2c_smbus_read_word_data(client, MP2975_MFR_DC_LOOP_CTRL); - if (ret < 0) - return ret; /* Enable DIRECT VOUT format 1mV/LSB */ - if (ret & MP2975_VOUT_FORMAT) { - ret &= ~MP2975_VOUT_FORMAT; - ret = i2c_smbus_write_word_data(client, MP2975_MFR_DC_LOOP_CTRL, ret); + if (data->chip_id == mp2975) { + ret = i2c_smbus_read_word_data(client, MP2975_MFR_DC_LOOP_CTRL); + if (ret < 0) + return ret; + if (ret & MP2975_VOUT_FORMAT) { + ret &= ~MP2975_VOUT_FORMAT; + ret = i2c_smbus_write_word_data(client, MP2975_MFR_DC_LOOP_CTRL, ret); + } + } else { + ret = i2c_smbus_read_word_data(client, MP2973_MFR_RESO_SET); + if (ret < 0) + return ret; + i = ret; + + if (page == 0) { + i &= ~MP2973_VOUT_FORMAT_R1; + i |= MP2973_VOUT_FORMAT_DIRECT_R1; + } else { + i &= ~MP2973_VOUT_FORMAT_R2; + i |= MP2973_VOUT_FORMAT_DIRECT_R2; + } + if (i != ret) + ret = i2c_smbus_write_word_data(client, MP2973_MFR_RESO_SET, i); } return ret; } @@ -607,10 +753,10 @@ mp2975_vout_per_rail_config_get(struct i2c_client *client, for (i = 0; i < data->info.pages; i++) { ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, i); if (ret < 0) - return ret; + continue; - /* Obtain voltage reference offsets. */ - ret = mp2975_vref_offset_get(client, data, i); + /* Set VOUT format for READ_VOUT command : direct. */ + ret = mp2975_set_vout_format(client, data, i); if (ret < 0) return ret; @@ -619,8 +765,12 @@ mp2975_vout_per_rail_config_get(struct i2c_client *client, if (ret < 0) return ret; - /* Set VOUT format for READ_VOUT command : direct. */ - ret = mp2975_set_vout_format(client, data, i); + /* Skip if reading Vref is unsupported */ + if (data->chip_id != mp2975) + continue; + + /* Obtain voltage reference offsets. */ + ret = mp2975_vref_offset_get(client, data, i); if (ret < 0) return ret; @@ -658,6 +808,23 @@ static struct pmbus_driver_info mp2975_info = { .read_word_data = mp2975_read_word_data, }; +static struct pmbus_driver_info mp2973_info = { + .pages = 1, + .format[PSC_VOLTAGE_IN] = linear, + .format[PSC_VOLTAGE_OUT] = direct, + .format[PSC_TEMPERATURE] = linear, + .format[PSC_CURRENT_IN] = linear, + .format[PSC_CURRENT_OUT] = linear, + .format[PSC_POWER] = linear, + .m[PSC_VOLTAGE_OUT] = 1, + .R[PSC_VOLTAGE_OUT] = 3, + .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | + PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | + PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_POUT | + PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT, + .read_word_data = mp2973_read_word_data, +}; + static int mp2975_probe(struct i2c_client *client) { struct pmbus_driver_info *info; @@ -677,6 +844,11 @@ static int mp2975_probe(struct i2c_client *client) memcpy(data->max_phases, mp2975_max_phases[data->chip_id], sizeof(data->max_phases)); + if (data->chip_id == mp2975) + memcpy(&data->info, &mp2975_info, sizeof(*info)); + else + memcpy(&data->info, &mp2973_info, sizeof(*info)); + info = &data->info; /* Identify multiphase configuration for rail 2. */ @@ -691,30 +863,37 @@ static int mp2975_probe(struct i2c_client *client) data->info.func[1] = MP2975_RAIL2_FUNC; } - /* Identify multiphase configuration. */ - ret = mp2975_identify_multiphase(client, data, info); - if (ret) - return ret; + if (data->chip_id == mp2975) { + /* Identify multiphase configuration. */ + ret = mp2975_identify_multiphase(client, data, info); + if (ret) + return ret; - /* Identify VID setting per rail. */ - ret = mp2975_identify_rails_vid(client, data, info); - if (ret < 0) - return ret; + /* Identify VID setting per rail. */ + ret = mp2975_identify_rails_vid(client, data, info); + if (ret < 0) + return ret; - /* Obtain current sense gain of power stage. */ - ret = mp2975_current_sense_gain_get(client, data); - if (ret) - return ret; + /* Obtain current sense gain of power stage. */ + ret = mp2975_current_sense_gain_get(client, data); + if (ret) + return ret; - /* Obtain voltage reference values. */ - ret = mp2975_vref_get(client, data, info); - if (ret) - return ret; + /* Obtain voltage reference values. */ + ret = mp2975_vref_get(client, data, info); + if (ret) + return ret; - /* Obtain vout over-voltage scales. */ - ret = mp2975_vout_ov_scale_get(client, data, info); - if (ret < 0) - return ret; + /* Obtain vout over-voltage scales. */ + ret = mp2975_vout_ov_scale_get(client, data, info); + if (ret < 0) + return ret; + } else { + /* Identify VID setting per rail. */ + ret = mp2973_identify_rails_vid(client, data, info); + if (ret < 0) + return ret; + } /* Obtain offsets, maximum and format for vout. */ ret = mp2975_vout_per_rail_config_get(client, data, info); @@ -725,6 +904,8 @@ static int mp2975_probe(struct i2c_client *client) } static const struct of_device_id __maybe_unused mp2975_of_match[] = { + {.compatible = "mps,mp2971", .data = (void *)mp2971}, + {.compatible = "mps,mp2973", .data = (void *)mp2973}, {.compatible = "mps,mp2975", .data = (void *)mp2975}, {} }; From patchwork Fri Jul 14 13:51:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120494 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2529239vqm; Fri, 14 Jul 2023 07:08:45 -0700 (PDT) X-Google-Smtp-Source: APBJJlEp8Bu6cljA1eq5Q2r9DIGmAVCELMiJ90gfWJi8G3Ww0EdTLf9DaYMKxvRC7cgoLRbfUEOR X-Received: by 2002:a17:902:ecc1:b0:1b7:f64b:379b with SMTP id a1-20020a170902ecc100b001b7f64b379bmr3340184plh.17.1689343725205; Fri, 14 Jul 2023 07:08:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689343725; cv=none; d=google.com; s=arc-20160816; b=TsiZPBwwMcps4YJYi/2gBEjIh4MeSWF7eAFcKrILkwAfpDlgIkbF+nakeRT2UgEq6a zxULNgGYGx4xBbI21nRoWAMjfAoSDcKCsFvB2Tfgv/lXcXH2qRy+sYcBtdEMvmvDPQry NFa7VNmEZICwXRB7V+OTCMtK+X2AVxITps/i2rmtggLVGoKPRILpyOear0A6wk0OFi7O vdLFcENHtaf7kXtB6Rvc+JcLFzhDKCoXhUsGPwYQ0hCh7xKp/KC+x2XM8f/Ymy2N1AOY vqRfhB1y/LPXgU2/EkfEZc32uwfGP/N5Oc0yBTTJW1hpNZm7m+nPQhE3wQcq0jypZ4TN 2EXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=NHXEv10hBdP+g4q7rSvrgYwQ+atbmqNIuqpCrMhKX+g=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=fEb1elURpI2M9ev1d0fW6eZrbN1kuF+hKfgGFB7i6raSVGjDiIj/6oGWySjVtV3bAU ICn+dAl4Uo4SBIe8dqR6juUS2y3Ax6JzgwFG/AEkM+wUIaBDV4m5zVZxyyXTrv9Oh9Aa MEoLfXDVMS+9ZLrqIxhGGR8ai9eCSSeoDruof6zD1pwezfWAgyko420eEoPyr7bBlk+3 ijCvOR7dMrBZ3DLxfGMv0DZP47R8hVARn/Bx2HRCZBOgLgANOjZH+hoDd5bWjeX2aW96 xARYRsdrdlCAqbWAKsmDfBiTT2SWZXv04N/AkQX/W1CNOR7Wn0i7kctzLCGNdIuKxSrF fWVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=c1Vs56fg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j4-20020a170903028400b001b878feaec7si1300069plr.203.2023.07.14.07.08.31; Fri, 14 Jul 2023 07:08:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b=c1Vs56fg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235957AbjGNNwC (ORCPT + 99 others); Fri, 14 Jul 2023 09:52:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235881AbjGNNvs (ORCPT ); Fri, 14 Jul 2023 09:51:48 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E25683A82 for ; Fri, 14 Jul 2023 06:51:38 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-992f15c36fcso252908266b.3 for ; Fri, 14 Jul 2023 06:51:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342697; x=1691934697; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NHXEv10hBdP+g4q7rSvrgYwQ+atbmqNIuqpCrMhKX+g=; b=c1Vs56fgyh1Kds4GklD5N3Wl7ycrlA+IAH1+0fmHoRAFn7X8ddeYo59DBANRqjH6Im Ebjq/LvLnSBL14jcKcWy3K/oAOGR8NIPK79Z86zyCq5ecXsgBGAHAhpZXpMi9AhilcBZ uX/xQl3TgBChomZgSaiLt8Lel2vvEwOQb/qYDhfQTKMfiEhYg7t5nwkbUtVh2r7UBbd9 YLYCbkwJXy5xyl6RlP4icGKqb4+noTFoSVEQXXan7tldmouKYx1Iyjmm3mG0c4iR3/ZE UMmXgdJg7yg9gnjWspAYLSg1fW/f0TcOlBSQg/kRsP8XumslV5FGihI+p8hIgHMKYQg4 hENw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342697; x=1691934697; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NHXEv10hBdP+g4q7rSvrgYwQ+atbmqNIuqpCrMhKX+g=; b=O4LztxssJHNpIIQGlF95n62h10XaXhXOyGWXciQW+BD6uE+cK7ksra7rRSrURhpFI0 jngz6QWb+KewdjCedI7AwZuRVyDrR7Ob9H7x24jui8W3PJ7xLF+CPmYGH9mNEUqPalLX GRuPqgzj1okcYJy1kfIfGMxXxVejwqbIuGX6Of1D1YoWb198x2WYtkVaB9MYueFA6Jni yyOkatbSi47k7uCq1hZsIuU+deN0q1zwUjnmSJXi0Us2s/3EbJnulrJfCn9lIk7NzLWA q7Nf41N+jY2jpqeuvDU2auF9B1PmaZAhddWEmeA3U27tze3GMc2XnYBKem7wqypI+yAB /KHA== X-Gm-Message-State: ABy/qLZNZf0DR8juTiQGMlN681MBg0QiFseWG0ADUnWBTyxzQSJy4WeK CfOAVzIyTZeAoXnexPVbJdOmAbvsRaWFHMCBGaafKQ== X-Received: by 2002:a17:906:74d1:b0:993:e752:1a6a with SMTP id z17-20020a17090674d100b00993e7521a6amr4464650ejl.21.1689342697333; Fri, 14 Jul 2023 06:51:37 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:36 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 7/8] hwmon: (pmbus/mp2975) Add regulator support Date: Fri, 14 Jul 2023 15:51:15 +0200 Message-ID: <20230714135124.2645339-7-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771405286033395621 X-GMAIL-MSGID: 1771405286033395621 From: Patrick Rudolph Add support to expose the PMBUS regulator. Tested on MP2973 and MP2971. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- Changes in V2: - Use IS_ENABLED for configs in if statement. --- drivers/hwmon/pmbus/Kconfig | 7 +++++++ drivers/hwmon/pmbus/mp2975.c | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig index 270b6336b76d..b4e93bd5835e 100644 --- a/drivers/hwmon/pmbus/Kconfig +++ b/drivers/hwmon/pmbus/Kconfig @@ -317,6 +317,13 @@ config SENSORS_MP2975 This driver can also be built as a module. If so, the module will be called mp2975. +config SENSORS_MP2975_REGULATOR + depends on SENSORS_MP2975 && REGULATOR + bool "Regulator support for MPS MP2975" + help + If you say yes here you get regulator support for MPS MP2975 + Dual Loop Digital Multi-Phase Controller. + config SENSORS_MP5023 tristate "MPS MP5023" help diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 4d72ed18cc8c..7684f8667657 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -115,6 +115,11 @@ static const struct i2c_device_id mp2975_id[] = { MODULE_DEVICE_TABLE(i2c, mp2975_id); +static const struct regulator_desc __maybe_unused mp2975_reg_desc[] = { + PMBUS_REGULATOR("vout", 0), + PMBUS_REGULATOR("vout", 1), +}; + #define to_mp2975_data(x) container_of(x, struct mp2975_data, info) static int @@ -806,6 +811,10 @@ static struct pmbus_driver_info mp2975_info = { PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT | PMBUS_PHASE_VIRTUAL, .read_word_data = mp2975_read_word_data, +#if IS_ENABLED(CONFIG_SENSORS_MP2975_REGULATOR) + .num_regulators = 1, + .reg_desc = mp2975_reg_desc, +#endif }; static struct pmbus_driver_info mp2973_info = { @@ -823,6 +832,10 @@ static struct pmbus_driver_info mp2973_info = { PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT, .read_word_data = mp2973_read_word_data, +#if IS_ENABLED(CONFIG_SENSORS_MP2975_REGULATOR) + .num_regulators = 1, + .reg_desc = mp2975_reg_desc, +#endif }; static int mp2975_probe(struct i2c_client *client) @@ -861,6 +874,8 @@ static int mp2975_probe(struct i2c_client *client) data->info.pages = MP2975_PAGE_NUM; data->info.phases[1] = ret; data->info.func[1] = MP2975_RAIL2_FUNC; + if (IS_ENABLED(CONFIG_SENSORS_MP2975_REGULATOR)) + data->info.num_regulators = MP2975_PAGE_NUM; } if (data->chip_id == mp2975) { From patchwork Fri Jul 14 13:51:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 120488 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp2519658vqm; Fri, 14 Jul 2023 06:56:05 -0700 (PDT) X-Google-Smtp-Source: APBJJlE00M9JJzAuuPtb2A8BMGmHxkIkYgTfT8pKPvxEyhEO87SJ5szw6VhiIbUe01mULboVMGdV X-Received: by 2002:a17:906:1d5:b0:994:5659:1fa with SMTP id 21-20020a17090601d500b00994565901famr463385ejj.18.1689342965447; Fri, 14 Jul 2023 06:56:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689342965; cv=none; d=google.com; s=arc-20160816; b=iRSwCPaqZknL/eK7sRexmdyoWjcnuoUG+Jt77ItnBEM1PFdrajf/RbUvQjr8NPvcAm qdr5EvYlSLtTdkVfO03RaOkUDIsuUgHqBYj1cfVLJKy9bnetYuRxpcuQ74XWJpZQhpea RPif5TZbD3dIz1MHjC8cq/Cm3FDosnrimeJfG1Qb2n0rw1K8snNP7eOUt2ugFzwyVAQo QcOLVlaSUZOsQe+/Jk4BVW9Y+qOtKd9lx60d4XFQnvSI3Ons5UXpvo3R+cMz5y2eJqS1 TU9JuSf9Foxg9Xd5CGxMzvRYaI5hPWnyse2dXB5NjOhshdfz6dJEGzgANmUzluNTmf6J baYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fdgHEMDPNwZTClo7TJkF0JFchHkoo0pFMs1tP6LyZ7c=; fh=JUrxmAGZpf2um0PJXMa+5wJ3JrTNc+xhv0SKeec5FHw=; b=YDH6hlda2CPmVH6+eFCwtaJgNhILDELFtiT1D5ylrVfLoMP84lt8UoxXMKJKdDbclf MguR4cmeN7IiNOneSD404WjYBvH5jruoLG/8Bgph2djiyoXf6pj9SoBZ3r0VyKt9eCU8 /rQfkkKd2YWXZWaIrXVihA95fsbFhcOI0zNHjvV0+KoCJUtUNhxyYcCxbd/AoYK6TZcR 4k2c9N3l4FNKBcK5+Ih9WyaXGnygGkrWxCbIkT8oKY/0QWXLB52yK2KUeHjeAAzrFudq lFEJeCuGtn0qHL0aPHbz+I+qdlnAJ0nyfFMOewVFbb9sqXiVUvuk+U7ddX5nKrzi/rgI e5fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b="ESj93/Dc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d14-20020a170906c20e00b00991f1a1c99csi9008207ejz.360.2023.07.14.06.55.41; Fri, 14 Jul 2023 06:56:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@9elements.com header.s=google header.b="ESj93/Dc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235921AbjGNNwL (ORCPT + 99 others); Fri, 14 Jul 2023 09:52:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235909AbjGNNvt (ORCPT ); Fri, 14 Jul 2023 09:51:49 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C6093A87 for ; Fri, 14 Jul 2023 06:51:40 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-98de21518fbso262577066b.0 for ; Fri, 14 Jul 2023 06:51:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689342698; x=1691934698; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fdgHEMDPNwZTClo7TJkF0JFchHkoo0pFMs1tP6LyZ7c=; b=ESj93/DcEtn8N12L37as3AsAa/dMoBEb28eGurPie63+8CX7MkNPa9tikHUMtv3bZw cj4egn825D41nTObupSy8dkAk0iKnbzS1Pnj4wpXqKkXG1hfSVR0hYLjfx3ZJwmJxiKj t4Xky/3tbecEinUr5OALSDfE5KL188zJUarlmcsg/lMybvZwzfX44N+3Mh6YdtuxsQMg bwK2ympV4UFxbpYNbfV8npkoVO/Yvsl9YWbz5HDUG1p2xmKZPHV7NVn6BJ3t7zjOzyEX xRUUy+Lh/xwy+k7M1p211kQaeMEAi6JRmHhJt2IcyQgm8aXBWx7bxFD/QKCfQYOMHUvm 7TCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689342698; x=1691934698; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fdgHEMDPNwZTClo7TJkF0JFchHkoo0pFMs1tP6LyZ7c=; b=GoVlvXDIyL3G4W3moJQL8C4Lic3RRZZymjUghZHEyutAqzldPCgC8t5HRmS7eXicNn T6dMPjWZFveZcdvhY0CsVTnPRdNxCVDydC2oHB5+O1QpgGOVOm7cF+L29bTgPJH5JJW1 cBTrqgO9FaLERgvGgLmgndkYmoBACZs8fNJQlPSb/hIiJQmbu9pqB+ZISAlsFY6h8B/g dvRAa2nyIWr45Z+z9DkVrHhpHnlazQH4MSfR2VXOpfFs1HkErhJlYMsT9y507lRLMmBS Aw1jjocpLKutwCf2ztbzwjhcD3xzm8gnh8KKchSnbX6DuGBWZhQmBrxUrDVvrMS/ifbo 3APA== X-Gm-Message-State: ABy/qLY4SCs1oGpCyLj5oT8cKP/B8qRimDVy/bdiYmYB7flghGe2RvE/ DKceEbWkQy9ixtL8z+vtcbrrxA== X-Received: by 2002:a17:907:9726:b0:989:450:e56a with SMTP id jg38-20020a170907972600b009890450e56amr5452450ejc.76.1689342698583; Fri, 14 Jul 2023 06:51:38 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id h21-20020a170906261500b0099236e3f270sm5405991ejc.58.2023.07.14.06.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 06:51:38 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: devicetree@vger.kernel.org, Guenter Roeck , Jean Delvare Cc: linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org, Patrick Rudolph , Naresh Solanki Subject: [PATCH v2 8/8] hwmon: (pmbus/mp2975) Add OCP limit Date: Fri, 14 Jul 2023 15:51:16 +0200 Message-ID: <20230714135124.2645339-8-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> References: <20230714135124.2645339-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771404489317996535 X-GMAIL-MSGID: 1771404489317996535 From: Patrick Rudolph Add support for PMBUS_IOUT_OC_FAULT_LIMIT. Add a helper function to convert the limit to LINEAR11 format and read data->info.phases[0] on MP2971 and MP2973 as well. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- drivers/hwmon/pmbus/mp2975.c | 76 ++++++++++++++++++++++++++++++------ 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/drivers/hwmon/pmbus/mp2975.c b/drivers/hwmon/pmbus/mp2975.c index 7684f8667657..0b1983d5998b 100644 --- a/drivers/hwmon/pmbus/mp2975.c +++ b/drivers/hwmon/pmbus/mp2975.c @@ -65,6 +65,10 @@ #define MP2973_VID_STEP_SEL_R2 BIT(3) #define MP2973_IMVP9_EN_R2 BIT(13) +#define MP2973_MFR_OCP_TOTAL_SET 0x5f +#define MP2973_OCP_TOTAL_CUR_MASK GENMASK(6, 0) +#define MP2973_MFR_OCP_LEVEL_RES BIT(15) + #define MP2973_MFR_READ_IOUT_PK 0x90 #define MP2973_MFR_READ_POUT_PK 0x91 @@ -153,6 +157,41 @@ mp2975_vid2direct(int vrf, int val) return 0; } +#define MAX_LIN_MANTISSA (1023 * 1000) +#define MIN_LIN_MANTISSA (511 * 1000) + +/* Converts a milli-unit DIRECT value to LINEAR11 format */ +static u16 mp2975_data2reg_linear11(s64 val) +{ + s16 exponent = 0, mantissa; + bool negative = false; + + /* simple case */ + if (val == 0) + return 0; + + /* Reduce large mantissa until it fits into 10 bit */ + while (val >= MAX_LIN_MANTISSA && exponent < 15) { + exponent++; + val >>= 1; + } + /* Increase small mantissa to improve precision */ + while (val < MIN_LIN_MANTISSA && exponent > -15) { + exponent--; + val <<= 1; + } + + /* Convert mantissa from milli-units to units */ + mantissa = clamp_val(DIV_ROUND_CLOSEST_ULL(val, 1000), 0, 0x3ff); + + /* restore sign */ + if (negative) + mantissa = -mantissa; + + /* Convert to 5 bit exponent, 11 bit mantissa */ + return (mantissa & 0x7ff) | ((exponent << 11) & 0xf800); +} + static int mp2975_read_phase(struct i2c_client *client, struct mp2975_data *data, int page, int phase, u8 reg) @@ -297,6 +336,20 @@ static int mp2973_read_word_data(struct i2c_client *client, int page, ret = pmbus_read_word_data(client, page, phase, MP2973_MFR_READ_IOUT_PK); break; + case PMBUS_IOUT_OC_FAULT_LIMIT: + ret = mp2975_read_word_helper(client, page, phase, + MP2973_MFR_OCP_TOTAL_SET, + GENMASK(15, 0)); + if (ret < 0) + return ret; + + if (ret & MP2973_MFR_OCP_LEVEL_RES) + ret = 2 * (ret & MP2973_OCP_TOTAL_CUR_MASK); + else + ret = ret & MP2973_OCP_TOTAL_CUR_MASK; + + ret = mp2975_data2reg_linear11(ret * info->phases[page] * 1000); + break; case PMBUS_UT_WARN_LIMIT: case PMBUS_UT_FAULT_LIMIT: case PMBUS_VIN_UV_WARN_LIMIT: @@ -307,7 +360,6 @@ static int mp2973_read_word_data(struct i2c_client *client, int page, case PMBUS_IIN_OC_FAULT_LIMIT: case PMBUS_IOUT_OC_LV_FAULT_LIMIT: case PMBUS_IOUT_OC_WARN_LIMIT: - case PMBUS_IOUT_OC_FAULT_LIMIT: case PMBUS_IOUT_UC_FAULT_LIMIT: case PMBUS_POUT_OP_FAULT_LIMIT: case PMBUS_POUT_OP_WARN_LIMIT: @@ -481,11 +533,13 @@ mp2975_identify_multiphase(struct i2c_client *client, struct mp2975_data *data, if (info->phases[0] > data->max_phases[0]) return -EINVAL; - mp2975_set_phase_rail1(info); - num_phases2 = min(data->max_phases[0] - info->phases[0], - data->max_phases[1]); - if (info->phases[1] && info->phases[1] <= num_phases2) - mp2975_set_phase_rail2(info, num_phases2); + if (data->chip_id == mp2975) { + mp2975_set_phase_rail1(info); + num_phases2 = min(data->max_phases[0] - info->phases[0], + data->max_phases[1]); + if (info->phases[1] && info->phases[1] <= num_phases2) + mp2975_set_phase_rail2(info, num_phases2); + } return 0; } @@ -878,12 +932,12 @@ static int mp2975_probe(struct i2c_client *client) data->info.num_regulators = MP2975_PAGE_NUM; } - if (data->chip_id == mp2975) { - /* Identify multiphase configuration. */ - ret = mp2975_identify_multiphase(client, data, info); - if (ret) - return ret; + /* Identify multiphase configuration. */ + ret = mp2975_identify_multiphase(client, data, info); + if (ret) + return ret; + if (data->chip_id == mp2975) { /* Identify VID setting per rail. */ ret = mp2975_identify_rails_vid(client, data, info); if (ret < 0)