From patchwork Fri Jan 31 18:13:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955634 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2AC69C02194 for ; Fri, 31 Jan 2025 18:16:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=faHjqb9bX1ActelU1HLJ2Bi1CB5Zkv+nbfbnT4awVJ8=; b=Tei6/jd2jGn9wdIQ3WdvgqhOWd g0pg2evp9kviXAPYhnfH7OEWNe7Y/0ZfFyA/1XfCzFOfQr5sLpKTR+Q5Ftjp+x+/HL6Hb/BkRwC/C zEeRXxSf30g75jkdBXc6OnRseQA3KMbW9MJqeli+SQQG7pXMhgP4UPly2Hf2q60blgMGfFRCCDRr3 WBp0qEuA+hO+VG0uj31yBPD3/dwIlmaBzP7Cklv+/m0H69OJWj87lnKUV62yvHilCSB6OwUaA2Vc/ n5qdC6OiNLKiMEIKK0/IbeLLASKzSRPwmNuCpCcQGNtsh48p00HPGVvrTnarrRMv0RN7nXfWt+Ng9 zqi+BlRw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvZF-0000000BBmC-2amH; Fri, 31 Jan 2025 18:16:37 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWf-0000000BBFJ-1CYL for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:13:58 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5dc82e38c10so1971968a12.3 for ; Fri, 31 Jan 2025 10:13:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347235; x=1738952035; darn=lists.infradead.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=faHjqb9bX1ActelU1HLJ2Bi1CB5Zkv+nbfbnT4awVJ8=; b=bQINwLZkH+89NGFibKi6VVoe/HLlk3chnW4zIHXii2BSIM8P3dMiGq12UHvUfY4h7M lCZZv5EkorpgxBeYZb+THSqaegjTnLU6C5mNoUFNK84+Ukn8w8J9ECxJUCO69/r/eFSm sIolByjzQ9lUDDCx24th6l3Bi6eh05TOHAWAaolb7dFFiGf7P+LHBoEa4cnT+LEEGKnx UBpslGzN0anPFkUWSk6xHJRiY7xV/NRO6mpCg9bUX02FNfL/Vadf6BUh81X7sIAZzW5N rSyInrixLoQWs3UfkhsDU+uGKjtDG8QHNGtiyUUFeWGJGCoF9B9+GMgqrbtqzl07jkBt 52Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347236; x=1738952036; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=faHjqb9bX1ActelU1HLJ2Bi1CB5Zkv+nbfbnT4awVJ8=; b=nnXP5ALglQHWzfEtM15E0UrMCbjn84colHhu4Sh00g8rfApvFZmvBlNW55tji0ZpGg XZGq4uEBFEy5ENtNn6Pix7iNGpJxsViyLu+sba66lgWevcsXqLem8+F2IuJjKc/2ymQe 6IG5kM4OVs/LMux7gQ6dNWFW5JvyUFR+S7ViDjcbTJv4/XfxZwnTtubvNi8S1E+XLPWx wHo0TB05cjZGCDNHznaWlnHZGGyeXF75OiL/gh/aphRw9Fw2sEhrGfBqw0U2h3rsWE2h ldVTk1x/WdqkzeYrCZkCs70dxtum0JJG7nw0cGeOxRCBN6x/g4n45mU1HAlL7bsdt0UI TTcg== X-Forwarded-Encrypted: i=1; AJvYcCU047YOXc3lUHrrMQOCUkVg19oN75jTafbRNQkxhNdasCEBJANjmbFtwOUv55J/tm2p+Sha62R6UzDz5tQq1Azv@lists.infradead.org X-Gm-Message-State: AOJu0YwZdtqUVtbXZxMAwh+UX0xnPokVcaLwj768oqxE+1kofr5Dd4Hm H2ksXYKw3xNEC3/xD9nJFLez9e03zoYQvMOAidr1d/RUQwTShYhG X-Gm-Gg: ASbGncuuKT6IQulMsstKSBYfIMAdUm5GzHdGHadzbAFbSb+LwMqXLqtQ+yzK3QRX/kH 7bJL6m0Id0Fc6efJxp1RlGhGiIqXbHEwmMTF0nMy73hTXyxwNkLWZXot+olxfJl+8Nc/BEIo56I MvLPuX2rSAU8gsTBQzQ9oATQk+SXmbAADle23jS/eMgUmhGOZ6r52k0HsKAatQSrFUL11epN8YI awdE2Nn94jHp23dLaIW4/Ug/78R6nPcS+L8sm8aszu8E0YZy+EMdUowenm0GGeazg3vA4UR8gjK aRdIFlNo3wddZyTakubzwbb124xYA850fTBqt1ZxKHzY05rv/FPcMpJTb8OwdQ== X-Google-Smtp-Source: AGHT+IFspwDCIn1E1Qiowgf07pW+ZtusY2lwLx7GBUQapWj2b5B69a3dlAFjE22iArENaT+MvWn16A== X-Received: by 2002:a05:6402:254a:b0:5d9:a85:1a59 with SMTP id 4fb4d7f45d1cf-5dc5f0331afmr13746615a12.27.1738347235545; Fri, 31 Jan 2025 10:13:55 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:13:55 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:49 +0100 Subject: [PATCH v3 1/7] dt-bindings: mfd: brcm,bcm59056: Convert to YAML MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-1-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=5927; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=it+n+q4v8xX5ycZK7F7lG+eJksUO7QTkZaWRNpCMKQM=; b=6mwnvMHDWmjEdJqGc1hOYTBsP3IP/edVdX1DxnIUKaNoazJR9utYdWiZ7hrIANJsgshoIExHi QxVSpRc990CCbEGhArmhTLnPz+WQFB1Ik3dIyQyNOHDt+4JUdxhjNs/ X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101357_332818_A631BA02 X-CRM114-Status: GOOD ( 17.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Convert devicetree bindings for the Broadcom BCM59056 PMU MFD from TXT to YAML format. This patch does not change any functionality; the bindings remain the same. The bindings have been split into two parts: the MFD binding and a separate binding for the regulator node, to simplify the addition of other models later (which have different regulators). Signed-off-by: Artur Weber --- Changes in v3: - Moved regulator node to separate binding - Removed quotes around compatibles/vbus property - Style fixes for example --- .../devicetree/bindings/mfd/brcm,bcm59056.txt | 39 --------------- .../devicetree/bindings/mfd/brcm,bcm59056.yaml | 54 ++++++++++++++++++++ .../bindings/regulator/brcm,bcm59056.yaml | 58 ++++++++++++++++++++++ 3 files changed, 112 insertions(+), 39 deletions(-) diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt deleted file mode 100644 index be51a15e05f926913b3a473648d977b25f1a2fbc..0000000000000000000000000000000000000000 --- a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt +++ /dev/null @@ -1,39 +0,0 @@ -------------------------------- -BCM590xx Power Management Units -------------------------------- - -Required properties: -- compatible: "brcm,bcm59056" -- reg: I2C slave address -- interrupts: interrupt for the PMU. Generic interrupt client node bindings - are described in interrupt-controller/interrupts.txt - ------------------- -Voltage Regulators ------------------- - -Optional child nodes: -- regulators: container node for regulators following the generic - regulator binding in regulator/regulator.txt - - The valid regulator node names for BCM59056 are: - rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo, - mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo, - csr, iosr1, iosr2, msr, sdsr1, sdsr2, vsr, - gpldo1, gpldo2, gpldo3, gpldo4, gpldo5, gpldo6, - vbus - -Example: - pmu: bcm59056@8 { - compatible = "brcm,bcm59056"; - reg = <0x08>; - interrupts = ; - regulators { - rfldo_reg: rfldo { - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3300000>; - }; - - ... - }; - }; diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3296799eb452fca2a4b03699fcb5aa27005a8e8d --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml @@ -0,0 +1,54 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/brcm,bcm59056.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Broadcom BCM590xx Power Management IC + +maintainers: + - Artur Weber + +properties: + compatible: + const: brcm,bcm59056 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + regulators: + type: object + description: Container node for regulators. + $ref: ../regulator/brcm,bcm59056.yaml + +required: + - compatible + - reg + - interrupts + +additionalProperties: false + +examples: + - | + #include + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + pmic: bcm59056@8 { + compatible = "brcm,bcm59056"; + reg = <0x08>; + interrupts = ; + + regulators { + rfldo_reg: rfldo { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <3300000>; + }; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/regulator/brcm,bcm59056.yaml b/Documentation/devicetree/bindings/regulator/brcm,bcm59056.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8939004d5a3f079c05d313bed4a2f07fbc473bac --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/brcm,bcm59056.yaml @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/regulator/brcm,bcm59056.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Broadcom BCM59056 Power Management IC regulators + +description: | + This is a part of device tree bindings for the BCM590XX family of power + management ICs. + + See also Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml for + additional information and example. + +maintainers: + - Artur Weber + +# The valid regulator node names for BCM59056 are: +# rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo, +# mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo, +# csr, iosr1, iosr2, msr, sdsr1, sdsr2, vsr, +# gpldo1, gpldo2, gpldo3, gpldo4, gpldo5, gpldo6, +# vbus + +patternProperties: + "^(cam|sim|mmc)ldo[1-2]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + "^(rf|sd|sdx|aud|mic|usb|vib)ldo$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + "^(c|m|v)sr$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + "^(io|sd)sr[1-2]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + "^gpldo[1-6]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + +properties: + vbus: + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + +additionalProperties: false From patchwork Fri Jan 31 18:13:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955635 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 26095C0218F for ; Fri, 31 Jan 2025 18:18:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9+pPKfqXieDOQM2ayfee2XUul8g+kNgXcNPv52SLqjM=; b=WAZ0sz9CJFNq4rbbSZ2hly+dQb NvRkvhXF0GXSp0Wy7IUQ/xKrh92mrpFrkRBPwnr5ThNxJyFWL7vHsR2R42lDLZKA44i5KtzQNg1gO Pm261Ix/2am28xhd1CATRXOZNa4S2qmTv9Ppovwj9xM2HIII4H/mx76UOusdzJ1LzFB6vyNOUcfcs OuLgs09Fc4aqBi5mL9++75t3oocUjY1L97dgcwgWuEBUHw2RaHr8LzoGFdPuzAmGRLdOY4F3uIULV jVLx4noNvdgyYfe1DOek4KgtI98rc5UTsrSCSgsir0/1sxWQza8q7GYb+JbT1pAFF2Gfxka+DwBMH cJaCNPFA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvaW-0000000BBsG-151A; Fri, 31 Jan 2025 18:17:56 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWg-0000000BBFs-2slh for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:00 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-5d3f57582a2so6554004a12.1 for ; Fri, 31 Jan 2025 10:13:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347237; x=1738952037; darn=lists.infradead.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=9+pPKfqXieDOQM2ayfee2XUul8g+kNgXcNPv52SLqjM=; b=SGyBOgFX10nMoyKKLoWZqheHR8bePQsgZ3cQh8lpRqjppXRWF2ZOMS9Bvb3R8OkIeb wky60vMXywkfQ3XkzgeR2X+Z7WCjavWtL1/xZr7GivOSpPG5Az7WQ+IjjHGCvN2+eaRM WoqihrWK0lWzJB2muypf5BpMgBQ6IVxto7djfvrAbsdKDIFpdNv+vJjO7whgYRl8pYQJ zJbv4lg2QmjCfVdgzpH5WWxuS8OInBALdbx6zOegSlikATNC5jU1qz4ny3z/Zi7etrCV aRu3kwPP4gQ28EkWrMzfRrsdvlSzGr2brt/ZddEtOCbtTm+NuI6j7ncgZI4wHNtPIY9l HACw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347237; x=1738952037; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9+pPKfqXieDOQM2ayfee2XUul8g+kNgXcNPv52SLqjM=; b=iNa8+gO65V2Gp0Q3Utc7laEsjBG++JzwFBF7zziFGw8IxSolspd/9pIn8irQyFzJAE fuU0fQ6fXgLo1OUXSVi+JR6RgRDGlnwQVLR5+gbcF+qR45S8t/bmvzaKmYX/1koGwanZ HSpgNGCrmkp00We1CFHsPyXVKE1ysr8iCa2+tAKB4BsiPnMLOt6gpMnlITDIGBPCrpax HhkXvOB6LPxwd//Opz48G/B8DHhavaG1BKL1fwpNXZZke8pzM89NFuSzVSp+kYSJa3ZS 3dDmgOFJ2Gceqx+2/fsHB2M7QzN3U5DXaOArLZWcEj1ZgD4zjrrdzF6TChlxDFUkHhXM MgPQ== X-Forwarded-Encrypted: i=1; AJvYcCUOlJL9uZw+AaWOBem9I/GnwNYksxmEkYFChtb1LKc962aCtSOM8GEeb5wZxrjIQQPEU3XnfcMq1KNz097Dv8Xl@lists.infradead.org X-Gm-Message-State: AOJu0Yyzl+60VjwNvuLkRTgOkYP2DKFKp5XA4t4MX9UG+vBYpnVu+t1/ IDDXZahfw1AyiZhjJFBdwL1LB45fwaI4ANVH5ZlJsVCsY4WI/NXZ X-Gm-Gg: ASbGncuVS5wC4SFxVgRDS05UQBpIA/G0x6lRP9w5Plh7MRbuACLcWZvVy950qFflng2 39GT6kO0PyQyUzVz9UGrhma3a0QwJI/GFNgVk3U85aXuBVCzrX1AksboYF6a6JpVMXJxCAYwyce KFNLk03TuJ/L2pRoQfaSKvNoAg0XEpPs5h/rjRaHsBIsLZdZKU3Dwxjrb8PbkMbZO5xaeYe0caT qek3TxSVzTCwgHgWfivVMmzJs1xEmANKO7L/nOcKfimBmlMNgOP4vlVMbLouvvdKsjJsYJtQ1H6 SqL1QimV0B5ZPafdC9FzVU0zjFP0eqX9XbqJSRxI3h5vU0G5cUJdhTeOgES92g== X-Google-Smtp-Source: AGHT+IFtTQye6C3PynwMaQIyS58K2Z5A6uetfs4VIhAtqWyYJRvYEwXPz0AnJMxAM7WDcKCtun4YpQ== X-Received: by 2002:a05:6402:354a:b0:5d3:eb50:4e33 with SMTP id 4fb4d7f45d1cf-5dc7fbb5845mr5223948a12.5.1738347237063; Fri, 31 Jan 2025 10:13:57 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.13.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:13:56 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:50 +0100 Subject: [PATCH v3 2/7] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054 MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-2-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=3753; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=OZ9dPuuxBTKP3Wt2se5BJr4wjcpa5aP2mHso7Suck2o=; b=sqaHEVnsUFrd0UYoHhD18OH9xeCEUeiPUJ+MowEyl9X/4ehA8iO40GJsD7V1cKqk2u2x9y2Xs lj0TeVO3mrzBXZ+b9IySsXfgeTaE+S4Mt/Jd6wNhdheDaNvKl3KjfZv X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101358_737100_C7D04D22 X-CRM114-Status: GOOD ( 15.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The BCM59054 MFD is fairly similar to the BCM59056, and will use the same driver. Add compatible and specify the allowed regulator nodes. Signed-off-by: Artur Weber --- Changes in v3: - Split regulator node into separate file - Removed quotes around compatible --- .../devicetree/bindings/mfd/brcm,bcm59056.yaml | 26 +++++++++- .../bindings/regulator/brcm,bcm59054.yaml | 55 ++++++++++++++++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml index 3296799eb452fca2a4b03699fcb5aa27005a8e8d..87d663416ed9e7f5ec4aa25c1aa2d9e650c42e2c 100644 --- a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml +++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml @@ -11,7 +11,9 @@ maintainers: properties: compatible: - const: brcm,bcm59056 + enum: + - brcm,bcm59054 + - brcm,bcm59056 reg: maxItems: 1 @@ -22,7 +24,6 @@ properties: regulators: type: object description: Container node for regulators. - $ref: ../regulator/brcm,bcm59056.yaml required: - compatible @@ -31,6 +32,27 @@ required: additionalProperties: false +allOf: + - if: + properties: + compatible: + contains: + const: brcm,bcm59054 + then: + properties: + regulators: + $ref: ../regulator/brcm,bcm59054.yaml + + - if: + properties: + compatible: + contains: + const: brcm,bcm59056 + then: + properties: + regulators: + $ref: ../regulator/brcm,bcm59056.yaml + examples: - | #include diff --git a/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml b/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml new file mode 100644 index 0000000000000000000000000000000000000000..719621c7f0e71cd9368f4d7243c79aaa97ca7255 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/regulator/brcm,bcm59054.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Broadcom BCM59054 Power Management IC regulators + +description: | + This is a part of device tree bindings for the BCM590XX family of power + management ICs. + + See also Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml for + additional information and example. + +maintainers: + - Artur Weber + +# The valid regulator node names for BCM59054 are: +# rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo, +# mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo, +# csr, iosr1, iosr2, mmsr, sdsr1, sdsr2, vsr, +# gpldo1, gpldo2, gpldo3, tcxldo, lvldo1, lvldo2 + +patternProperties: + "^(cam|sim|mmc)ldo[1-2]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + + "^(rf|sd|sdx|aud|mic|usb|vib|tcx)ldo$": + type: object + $ref: /schemas/regulator/regulator.yaml# + + "^(c|mm|v)sr$": + type: object + $ref: /schemas/regulator/regulator.yaml# + + "^(io|sd)sr[1-2]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + + "^gpldo[1-3]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + + "^lvldo[1-2]$": + type: object + $ref: /schemas/regulator/regulator.yaml# + +properties: + "vbus": + type: object + $ref: /schemas/regulator/regulator.yaml# + +additionalProperties: false From patchwork Fri Jan 31 18:13:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955636 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 248F3C0218F for ; Fri, 31 Jan 2025 18:19:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=FAPozP4IneH+whBW7y4JwsioLb146azVsz4FWFU1mlo=; b=G6Z0XxjviUjHXxof3iqktJd2MX cDd4MxBeGBaeZ1jRENnM9W4gRykBTaI9b/qbbftLNaHlfP6oaFmTC/HLmZfXrVzsvqfzlERkrmwva FIOuWVl1vwRWCbT9ovl1uiWR24pYk91ImL8Bw5dLXILMxp4mXTd5moFMWIAs639ev4i+cMg3EcJt0 GJ8ATpyXuwDYHz6+kgADtHM31Ncp2bQ+YhTbp/9rdhzlOP0aDFWR82Y/3p9EkID9KVXV2BA5yGLwy qET8GOBUTnOFCjnMfsuSAtGFDk/P5qHt+e8MWL04cy2IhNduw4IpKqG7UptBhhowcnCNiSetWj5qz n5h+sPHg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvbn-0000000BC0O-3l4C; Fri, 31 Jan 2025 18:19:15 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWi-0000000BBGC-2OMX for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:01 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5d982de9547so4307178a12.2 for ; Fri, 31 Jan 2025 10:14:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347239; x=1738952039; darn=lists.infradead.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=FAPozP4IneH+whBW7y4JwsioLb146azVsz4FWFU1mlo=; b=KrUB4Ty3ZIBRDJm/EuVV/EBESVvWSsGvJu59DHadKcEHUlo3Sv9iNvfLCFYzw4GSkR USobo+usNdtet0F+t3CrnytaD1LL+B1ShNL82SIzQPxf/webQzlMd7AnrWJHjbUc5S/D VWI8E9vrKjUgGFlJgMM1RDtYdJ95KlOVZE3nvTDH7C9ryODWDaeBLVkT900ygO7PPM2A /9piifXl4s7xYyIy4XVdgCUisBOcX47Gyb3OVzb8hr/MyV8DMdq60trATVC8ePjunN4y IegxOCNwtYKrPPEJOAAvHKhYU3kSlqHJWxJ9t0C0zzLiHvN2atrCTelPbBxNqdsUEpe1 HscA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347239; x=1738952039; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FAPozP4IneH+whBW7y4JwsioLb146azVsz4FWFU1mlo=; b=I2YQ/AKXxbLkvUldRBMOvQF2xaX/R+QrAHihcvdb6GWdkyTXC5blQZskBlTgHBvqFd mOJyw+dV9alNKsgtlHR4SyBu+0egOpZny8oFmISx9FbGfOsI3uGIGB5VZDc0ugbI/MGQ zWit/WMeKWX2nbVw2Tt0QBJkTwlHqPo6uJ+8GrJvW5nwxboNcnAwIkWuMyMjhcqOXydK r/rUCDRaEKOOzvtGJurv++yvCWmmUhZ4ErG7BewUxsRHAoqerxM60K3sUWstcD/QkppN 6Bwnv1dIC4gZSWP6viCQ5eSuzqe7I/InwUu0LE0eAG3cfFgtuUBu5nvTANNbAfqBCt/z leVw== X-Forwarded-Encrypted: i=1; AJvYcCUQRpBVLSsP4hAlIt9KxzuZL2clBYH0K2JP0fcvfhlxR79hzY9JIIeHR58Rxhm7B7n/2OLBbVtNFfw2mmEm5ypC@lists.infradead.org X-Gm-Message-State: AOJu0YyaUkjKoXn708wyWTshptYeLTNg/YjARodWqOiyBboe2stkpFGP rftG2w9/VYQW3iqm4wrwsNML9BWXBJla7r1hiPvBU6MDRX1rhnYr X-Gm-Gg: ASbGncsI6fSq8V/kvqIrpKPXLyJlZ/Iii7vspnqpGA2FBThwwh02AwULvqisbNB319H /u00iIczh3+aHbATlIOJgqko4xEQhH3Iwwl3Aggz917bt0UTBwEKqS2ISbYVT6D+egZbKCpNfW+ N7kC1zgTgPm3vz6OLDKa86HUboyJ8FCwysHAd48NA455zeXBKJ+H2WiDCmBT7FqkYyVft0gkaDW QQDzt+yXwUm+hgdRrhPoNpev9Xw4cS+xPnNNXaSMvV4MnMa6ruqG7vcFRmlzGdgYNQYyBgow+6X Mp5MzXqCn6rVdp6hJQWDyg9kMsAkEgW6Q2wo7YjJ2cKviDZq97dvWLne9uJTYw== X-Google-Smtp-Source: AGHT+IHRPj8UwgcWH6OIw9wepi1Xwi6EB7ZtS1zYMWIfFGxWen8LM1yvcLK7/5QE8x90kvED0B3M5A== X-Received: by 2002:a05:6402:5291:b0:5dc:9002:3164 with SMTP id 4fb4d7f45d1cf-5dc90023384mr60378a12.5.1738347238821; Fri, 31 Jan 2025 10:13:58 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.13.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:13:57 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:51 +0100 Subject: [PATCH v3 3/7] ARM: dts: Drop DTS for BCM59056 PMIC MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-3-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=4056; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=oSZj2mqvkLxBORbTCSITwqBVG2fzKvqkrOn5Jmie/9I=; b=73obPnSj4YDjncrEoMGJIbbHDkG09Jt8NyBm9DLvJVFK79B70Im8wYGlKQWhqaIoO3fnUIzhY zgmrX+edcmYAFAzgdASTVPw5iL7QiYXUqkfbGK70Fhyu638boMdrouE X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101400_613268_CA47B7D7 X-CRM114-Status: GOOD ( 12.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The BCM59056 PMIC has its own separate DTSI, meant to be included in a DTS file after defining the pmu node on some I2C bus. This seems rather unintuitive; drop the DTS in favor of adding the BCM59056 PMIC node directly into the device DTS files. Signed-off-by: Artur Weber --- arch/arm/boot/dts/broadcom/bcm28155-ap.dts | 68 +++++++++++----------- arch/arm/boot/dts/broadcom/bcm59056.dtsi | 91 ------------------------------ 2 files changed, 32 insertions(+), 127 deletions(-) diff --git a/arch/arm/boot/dts/broadcom/bcm28155-ap.dts b/arch/arm/boot/dts/broadcom/bcm28155-ap.dts index 2f3634545e64978888cd0b47fd5647a5e2eb8e07..cefaa9a3c45c9c90bffc08f739161d8ea21d98dd 100644 --- a/arch/arm/boot/dts/broadcom/bcm28155-ap.dts +++ b/arch/arm/boot/dts/broadcom/bcm28155-ap.dts @@ -37,7 +37,39 @@ &pmu_bsc { status = "okay"; pmu: pmu@8 { + compatible = "brcm,bcm59056"; + interrupts = ; reg = <0x08>; + + regulators { + camldo1_reg: camldo1 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + sdldo_reg: sdldo { + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + sdxldo_reg: sdxldo { + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <3300000>; + }; + + usbldo_reg: usbldo { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + iosr1_reg: iosr1 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + }; }; }; @@ -74,39 +106,3 @@ &usbotg { &usbphy { status = "okay"; }; - -#include "bcm59056.dtsi" - -&pmu { - compatible = "brcm,bcm59056"; - interrupts = ; - regulators { - camldo1_reg: camldo1 { - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - }; - - sdldo_reg: sdldo { - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - }; - - sdxldo_reg: sdxldo { - regulator-min-microvolt = <2700000>; - regulator-max-microvolt = <3300000>; - }; - - usbldo_reg: usbldo { - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - }; - - iosr1_reg: iosr1 { - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - }; - }; -}; diff --git a/arch/arm/boot/dts/broadcom/bcm59056.dtsi b/arch/arm/boot/dts/broadcom/bcm59056.dtsi deleted file mode 100644 index a9bb7ad81378d88811c4473763c579d3d2c006a1..0000000000000000000000000000000000000000 --- a/arch/arm/boot/dts/broadcom/bcm59056.dtsi +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* -* Copyright 2014 Linaro Limited -* Author: Matt Porter -*/ - -&pmu { - compatible = "brcm,bcm59056"; - regulators { - rfldo_reg: rfldo { - }; - - camldo1_reg: camldo1 { - }; - - camldo2_reg: camldo2 { - }; - - simldo1_reg: simldo1 { - }; - - simldo2_reg: simldo2 { - }; - - sdldo_reg: sdldo { - }; - - sdxldo_reg: sdxldo { - }; - - mmcldo1_reg: mmcldo1 { - }; - - mmcldo2_reg: mmcldo2 { - }; - - audldo_reg: audldo { - }; - - micldo_reg: micldo { - }; - - usbldo_reg: usbldo { - }; - - vibldo_reg: vibldo { - }; - - csr_reg: csr { - }; - - iosr1_reg: iosr1 { - }; - - iosr2_reg: iosr2 { - }; - - msr_reg: msr { - }; - - sdsr1_reg: sdsr1 { - }; - - sdsr2_reg: sdsr2 { - }; - - vsr_reg: vsr { - }; - - gpldo1_reg: gpldo1 { - }; - - gpldo2_reg: gpldo2 { - }; - - gpldo3_reg: gpldo3 { - }; - - gpldo4_reg: gpldo4 { - }; - - gpldo5_reg: gpldo5 { - }; - - gpldo6_reg: gpldo6 { - }; - - vbus_reg: vbus { - }; - }; -}; From patchwork Fri Jan 31 18:13:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955637 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3EFBCC0218F for ; Fri, 31 Jan 2025 18:20:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9NVDC1BCd9AWkrJth6d12FQxmu1lidyDRyNXZVkh74A=; b=gfj/X4YPk7141Fq8OhkowYsIPG ZTqKgAzGGIVyDmSF3ctsIlnVpJuQ+XAA9dGkTdOtQGSurqbQgLgXJ7d9G9mc4v9PuVAP+2wQFYMuF d4lMTDD+n4Kg5vjT9NNtXm0cZiarWhpBPsSetxX5+vGDbuJmVAgIyGztojHnV2L4RZphS7KOzGyXw 7RNVlz0ZBkRPVm3flRQkWa2jHZkxq8tPgxxd27DgYqoiBeQUauQzB68J9OrJOcTosURUxOIPWXi5w YIHm0jdGwU+nd9slH17YchBD/EvvbSfPO7k37LrKX4JBl5XL3nlk1tP91F49nDUDkxD/dT3hPWdm/ nyazTZAQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvd4-0000000BC6C-2Vca; Fri, 31 Jan 2025 18:20:35 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWj-0000000BBGY-3RSU for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:02 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-5d3f65844deso3983767a12.0 for ; Fri, 31 Jan 2025 10:14:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347240; x=1738952040; darn=lists.infradead.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=9NVDC1BCd9AWkrJth6d12FQxmu1lidyDRyNXZVkh74A=; b=FZBTEyQW9YV8kci/7OXDugJMy3yj189XyqlRiMihJI5OUiM68W5oJTZHY6VE86uMy8 zNaF6BlMDg5MHcmmivDyhC48yhObLxTKfg+JaHzoFGWeyDJFmjSIaobtXXA1s6/D4htS QVnSvFTYfmQedr6s9nBlv8+KzKzGplxJ3by+UYJG8/80u9ts0bkN5/INoHwjVx1YdPgB dE6LXGvFBZmW5/RXkIOq6zybkB4XiIFBL6sXnxn6O+dILWi5l8wQLGGw9+eICbXE+fir tlycMDmWnOTMLd9WHF/tGCsKLJDWVuuSHoVwsbPtgYMAAYV1/VJ1rvWNy2eyjqM6BF1A CKdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347240; x=1738952040; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9NVDC1BCd9AWkrJth6d12FQxmu1lidyDRyNXZVkh74A=; b=DettilKG5Pajd8DDbg8DIjQk6WLAog6t6VEtBmYhfy7I2iVxBLdC62KvoibqRVDUSM vRQ+ShYeeGiF+AVsLPQGR2qvxLnLrINWgJVfQazrZC3s3roFG87smsKStBlB9EKrY5ID iLDRqseF3p5CR1EjRGpmvfqACOImVwZTY3PhHeYTcj74ejupdW3qKg/T5iSu32vzxhVz najm7MYLybkXxrsbFak8A2mzMaaBneF9sFPsGOddv5Q5n9hTFhGWdsq+NakfZMB2huqS MdcW6gV3jlnVgmLa327r1vaKtklMfnzcP1vk/XY9KoIb87PV8k9sgCSmtiChE0KalJf2 XrNQ== X-Forwarded-Encrypted: i=1; AJvYcCVOe5tCxRIJMOhdPoCDWU9xCTX4e5pH/ZDTHzgJSH/boJVjLu2qEPpMnTBNSoTR61n9DkOZpXuz25OpfVaiyKNB@lists.infradead.org X-Gm-Message-State: AOJu0YzDoR+1qaEVjrEFHQtHL7+UBrJQWWC/j/2Dm92djSphLuAbYc8L WiORYANqrK7X8I8qHYRcXK00GnDjTyl2Bt8n+NoBPtOr4VYYw9pD X-Gm-Gg: ASbGnctLlVVMH4oo4aQPv8gWmR/lilQyFCQc7WZikPtHC2I3mWnA5y/zjqkso3LraLd oehYRv2IBaBcwBeIfJF3/2aMyF5oUSSFLnlHRpPYrADm7vmdI0idg/3antfYfda+jip228QtQ14 iAfo6DPCgsAnvbeO5fR/elXsAnLpKbhgFHHrmlMsxhEQrRNL4zuBPp8stlkXLbsoAeYlHC03bxF TiTdhYDW0QwLdKteyvcKmk0pX68EuKgNrc8CQO8HDjM8Dt18W/Ebg6+y2lPtNR+C26IrxYUEO8d dXtKac0nJgtj5Zb9Um1967wJNajksAgADoW61yNA8CBCO1+ZJP862KjTt8fzZA== X-Google-Smtp-Source: AGHT+IGPJ4/jeRlYVMHKjrZ+UIzlTobg/nm/rOXX+d6UQMedpWf7FGYvaugsiKHBtsVbv1M642DRVQ== X-Received: by 2002:a05:6402:3589:b0:5dc:6c1:816c with SMTP id 4fb4d7f45d1cf-5dc5efa8ee0mr11648178a12.1.1738347240018; Fri, 31 Jan 2025 10:14:00 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.13.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:13:59 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:52 +0100 Subject: [PATCH v3 4/7] mfd: bcm590xx: Add compatible for BCM59054 MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-4-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=2247; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=xyJ65tKgVjwJHrbcCu1WkIZ9H5kiHix8wXr8hmS3z5Q=; b=NFYiDgcC/zL0sAIKvme5gI0kNx29A+DdsA9eTtYWlzcRLUIWrq9TQ7ynUsSAkepeZ8ptUqIGL VPpe6VmFv/ABoQ+jZl4f5Bf11K0Ghyy1JUI8P3GHRAZSgsI/FPMMThG X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101401_859974_398A7820 X-CRM114-Status: GOOD ( 18.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The BCM59056 supported by the bcm590xx driver is similar to the BCM59054 MFD. Add a compatible for it in the driver, in preparation for extending support of this chip in the bcm590xx regulator driver. Signed-off-by: Artur Weber --- Changes in v3: - Fix compilation warning about device_type pointer cast type - Name the device types enum and use it as the type in the MFD struct --- drivers/mfd/bcm590xx.c | 6 +++++- include/linux/mfd/bcm590xx.h | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/bcm590xx.c b/drivers/mfd/bcm590xx.c index 8b56786d85d0182acf91da203b5f943556c08422..23036157480e0116301bfa93932c92f5a80010ea 100644 --- a/drivers/mfd/bcm590xx.c +++ b/drivers/mfd/bcm590xx.c @@ -50,6 +50,9 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri) bcm590xx->dev = &i2c_pri->dev; bcm590xx->i2c_pri = i2c_pri; + bcm590xx->device_type = \ + (uintptr_t) of_device_get_match_data(bcm590xx->dev); + bcm590xx->regmap_pri = devm_regmap_init_i2c(i2c_pri, &bcm590xx_regmap_config_pri); if (IS_ERR(bcm590xx->regmap_pri)) { @@ -91,7 +94,8 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri) } static const struct of_device_id bcm590xx_of_match[] = { - { .compatible = "brcm,bcm59056" }, + { .compatible = "brcm,bcm59054", .data = (void *)BCM59054_TYPE }, + { .compatible = "brcm,bcm59056", .data = (void *)BCM59056_TYPE }, { } }; MODULE_DEVICE_TABLE(of, bcm590xx_of_match); diff --git a/include/linux/mfd/bcm590xx.h b/include/linux/mfd/bcm590xx.h index 6b8791da6119b22514447bf1572238b71c8b0e97..b76fb57bf0dd17d51580e93db58ece4a4d6dc5e4 100644 --- a/include/linux/mfd/bcm590xx.h +++ b/include/linux/mfd/bcm590xx.h @@ -13,12 +13,19 @@ #include #include +/* device types */ +enum bcm590xx_device_type { + BCM59054_TYPE, + BCM59056_TYPE, +}; + /* max register address */ #define BCM590XX_MAX_REGISTER_PRI 0xe7 #define BCM590XX_MAX_REGISTER_SEC 0xf0 struct bcm590xx { struct device *dev; + enum bcm590xx_device_type device_type; struct i2c_client *i2c_pri; struct i2c_client *i2c_sec; struct regmap *regmap_pri; From patchwork Fri Jan 31 18:13:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955638 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3F46CC0218F for ; Fri, 31 Jan 2025 18:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=b97cdGbjaVACn1FfHRq1vVRLqfgZGpZI9sersBinJ3I=; b=C88MGHn1N8Fyhn/R/zYfEjhNn4 INnkwpZqnaSnI1wbkE6Ffeam3onNRKQXRY4LE9kOw4rnIBuM8fCXcugpEAjvdNcUPKrVe2XmYyVj5 Wu+Dzw3znfRsCXRcF5EVYadnBXyUUNLitWCiEojZ7Uf9rW+AnW5j1qRz3rL/b7VewKOUd6FItkRho LUqUKY/jrh9M3h6tmafpYnYkTT0PQeH5oB2lsjBOPt28vvp1rK5GA8MKsKumfSEkturi42poMjr7i cYvj8VMWqIhs8uslqO36JeHMEllAEa4PcrInCWGrNer39v9fTS1GlG8881EpvIUu93fd6/mO4T56H ydaHW5XA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdveL-0000000BCBb-3VFN; Fri, 31 Jan 2025 18:21:53 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWl-0000000BBGt-13Tc for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:04 +0000 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-aaf900cc7fbso494767066b.3 for ; Fri, 31 Jan 2025 10:14:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347241; x=1738952041; darn=lists.infradead.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=b97cdGbjaVACn1FfHRq1vVRLqfgZGpZI9sersBinJ3I=; b=VL6FPnASQHsZ5hGCfNNiolWcDWMSJiQmXhhCIp38tmwIAgneia6TTSew7o4YDTB0Tz 3DqMmXL04uY5qKvPgXlqJNUCHxhBp1US0gE0oic+v86kckLPq1pvI1ZF3RVPPp0/8eel OHg0fMNviEodRky1qDVvQ+wLroxFaf6F8Zu/LeHc6MQyOSmBaFe4U93Nsg99AxfVbbNj g48gJ3l8gaX2hwrj0R+n11s0gL+/crUWgpyYp+1YkYnvzJb3rCl9c3u2axy1abftAvfo ck9oK9H/+iM8B+kxlVoZyxAi7bz461LQaaPBXpOoUiuqA2SCKARuxmYanSbjWX0XS/tc fBiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347241; x=1738952041; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b97cdGbjaVACn1FfHRq1vVRLqfgZGpZI9sersBinJ3I=; b=jpiszuhL96fINg9L23thHXQ8EmD+2hOy25k7exy1cjr+R1JStntoQx7IEoBxA8n8Q6 JU3fvVHuNXgZk3UgOPfit8F8UglDnscJLf3ML6uzpA36dGmWabom/cMy0aF6dOZ7DvaZ TDF9fZHLJg6DCMoyP8jG4Z3nhiECwkqLoZe9IKz1cvS9Zbd7Upg89KItI/gDFrpExHZq 98mKqyyP6dIcj+HB7eQHMy9t4FqCNwnbjbJwR0IcJhKMCH+Tu1+uAfotEg2k+4Mw5RZ4 KVQv2nu0yUdj985hqvqFs05m5IUQw8y6GAZBnI3AVxlHqZaDzPpb9pSpPxX8Cb0Rv0uT TffA== X-Forwarded-Encrypted: i=1; AJvYcCW79CojdCAq23jpA09Fz8lLK0sR5w1TtKh0VIkw7zu35z/Zeov0Den/xkL6LV2Qwa6F0Hj3T8dJvPpUuZc30Xlt@lists.infradead.org X-Gm-Message-State: AOJu0YzqOlqgXdrlmUBUMljtSNmU+P9raaC61TosbUYEkVnnk2IE14Ww STNfDqqrEu1t8YCemVP27IaqMPBeHGYqdOKaBiwPUGq/KLSBmYZa X-Gm-Gg: ASbGncseEjyIReY8hKANhF6b7uF+BgCm95S6smI4tnRW7FMe22vlgB2JNxSOfz24RSV pdG2SUA4/Tqo9kMFhK0sHf5jTHx4RyJUk5XHiKhx5Vlj/jS8lgs9hQSaNi/kRl82gzIzRsvZ62P DHjqO7pTUZPLSiK7j2VehLZkEos6V8cBlxObrqtGux63tQShgrggUo5XgbFGqwSX5E7LCy/1n2x 1cN6S6qti6/l3NHxrzY4PSzGwp88NP2O/g1SZSgML1HBdzc2VzCFh3FSBOcfFKW1RxzL8vv7MoC mrbcQ+M47ihyjTsvbYMONQYAJc97mf/8C0br2Lye7ucbGXx2IWB8+sQpzPu/mQ== X-Google-Smtp-Source: AGHT+IE7yO+ugvuUI4et4vPTohWUBiFrXNVFW+PBAcuxMp7dN9Ox+9TaHZ4/QjYU6Y31NsmoXdZG9w== X-Received: by 2002:a05:6402:4304:b0:5db:f5bc:f696 with SMTP id 4fb4d7f45d1cf-5dc5efa8afbmr13584605a12.5.1738347241263; Fri, 31 Jan 2025 10:14:01 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.14.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:14:00 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:53 +0100 Subject: [PATCH v3 5/7] regulator: bcm590xx: Store regulator descriptions in table MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-5-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=15802; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=CoYmULwmYQYuYjjK9H0WcMCSNKsdgX0yMKH6SZAsU6A=; b=yKbdE7SGYO2UfNXMj1PfNGgB6cnYb9BGJtHD4xzYUKZeEWMBZy3MqCcEACIfHBkLVlHPpfl1/ ya++nymMMhdBMq145a3jR+MieJ/bLi90mHxmt7NWUpa3TBgnsRkh4VN X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101403_302122_2EEEF7AC X-CRM114-Status: GOOD ( 17.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Instead of filling in the regulator description programatically, store the data in a struct. This will make it a bit nicer to introduce support for other BCM590xx chips besides the BCM59056. To do this, add a new struct type, bcm590xx_reg_info, to store all of the necessary information. Drop the old IS_LDO, IS_GPLDO... macros in favor of the "type" field in this struct. Adapt the old bcm590xx_reg struct to the new types. Signed-off-by: Artur Weber --- Changes in v3: - Added this commit --- drivers/regulator/bcm590xx-regulator.c | 472 ++++++++++++++++++++++----------- 1 file changed, 316 insertions(+), 156 deletions(-) diff --git a/drivers/regulator/bcm590xx-regulator.c b/drivers/regulator/bcm590xx-regulator.c index 9f0cda46b01506080ae5fa709104a8df4d174a8d..6548653a6fb7207a5aa8e006a005553bfb7b1d69 100644 --- a/drivers/regulator/bcm590xx-regulator.c +++ b/drivers/regulator/bcm590xx-regulator.c @@ -20,6 +20,18 @@ /* I2C slave 0 registers */ #define BCM590XX_RFLDOPMCTRL1 0x60 +#define BCM590XX_CAMLDO1PMCTRL1 0x62 +#define BCM590XX_CAMLDO2PMCTRL1 0x64 +#define BCM590XX_SIMLDO1PMCTRL1 0x66 +#define BCM590XX_SIMLDO2PMCTRL1 0x68 +#define BCM590XX_SDLDOPMCTRL1 0x6a +#define BCM590XX_SDXLDOPMCTRL1 0x6c +#define BCM590XX_MMCLDO1PMCTRL1 0x6e +#define BCM590XX_MMCLDO2PMCTRL1 0x70 +#define BCM590XX_AUDLDOPMCTRL1 0x72 +#define BCM590XX_MICLDOPMCTRL1 0x74 +#define BCM590XX_USBLDOPMCTRL1 0x76 +#define BCM590XX_VIBLDOPMCTRL1 0x78 #define BCM590XX_IOSR1PMCTRL1 0x7a #define BCM590XX_IOSR2PMCTRL1 0x7c #define BCM590XX_CSRPMCTRL1 0x7e @@ -28,7 +40,25 @@ #define BCM590XX_MSRPMCTRL1 0x8a #define BCM590XX_VSRPMCTRL1 0x8e #define BCM590XX_RFLDOCTRL 0x96 +#define BCM590XX_CAMLDO1CTRL 0x97 +#define BCM590XX_CAMLDO2CTRL 0x98 +#define BCM590XX_SIMLDO1CTRL 0x99 +#define BCM590XX_SIMLDO2CTRL 0x9a +#define BCM590XX_SDLDOCTRL 0x9b +#define BCM590XX_SDXLDOCTRL 0x9c +#define BCM590XX_MMCLDO1CTRL 0x9d +#define BCM590XX_MMCLDO2CTRL 0x9e +#define BCM590XX_AUDLDOCTRL 0x9f +#define BCM590XX_MICLDOCTRL 0xa0 +#define BCM590XX_USBLDOCTRL 0xa1 +#define BCM590XX_VIBLDOCTRL 0xa2 #define BCM590XX_CSRVOUT1 0xc0 +#define BCM590XX_IOSR1VOUT1 0xc3 +#define BCM590XX_IOSR2VOUT1 0xc6 +#define BCM590XX_MSRVOUT1 0xc9 +#define BCM590XX_SDSR1VOUT1 0xcc +#define BCM590XX_SDSR2VOUT1 0xcf +#define BCM590XX_VSRVOUT1 0xd2 /* I2C slave 1 registers */ #define BCM590XX_GPLDO5PMCTRL1 0x16 @@ -94,11 +124,6 @@ #define BCM590XX_NUM_REGS 27 -#define BCM590XX_REG_IS_LDO(n) (n < BCM590XX_REG_CSR) -#define BCM590XX_REG_IS_GPLDO(n) \ - ((n > BCM590XX_REG_VSR) && (n < BCM590XX_REG_VBUS)) -#define BCM590XX_REG_IS_VBUS(n) (n == BCM590XX_REG_VBUS) - /* LDO group A: supported voltages in microvolts */ static const unsigned int ldo_a_table[] = { 1200000, 1800000, 2500000, 2700000, 2800000, @@ -111,10 +136,6 @@ static const unsigned int ldo_c_table[] = { 2900000, 3000000, 3300000, }; -static const unsigned int ldo_vbus[] = { - 5000000, -}; - /* DCDC group CSR: supported voltages in microvolts */ static const struct linear_range dcdc_csr_ranges[] = { REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), @@ -137,115 +158,30 @@ static const struct linear_range dcdc_sdsr1_ranges[] = { REGULATOR_LINEAR_RANGE(900000, 52, 63, 0), }; -struct bcm590xx_info { - const char *name; - const char *vin_name; - u8 n_voltages; - const unsigned int *volt_table; - u8 n_linear_ranges; - const struct linear_range *linear_ranges; +enum bcm590xx_reg_type { + BCM590XX_REG_TYPE_LDO, + BCM590XX_REG_TYPE_GPLDO, + BCM590XX_REG_TYPE_SR, + BCM590XX_REG_TYPE_VBUS }; -#define BCM590XX_REG_TABLE(_name, _table) \ - { \ - .name = #_name, \ - .n_voltages = ARRAY_SIZE(_table), \ - .volt_table = _table, \ - } - -#define BCM590XX_REG_RANGES(_name, _ranges) \ - { \ - .name = #_name, \ - .n_voltages = 64, \ - .n_linear_ranges = ARRAY_SIZE(_ranges), \ - .linear_ranges = _ranges, \ - } +enum bcm590xx_reg_regmap { + BCM590XX_REG_REGMAP_PRI, + BCM590XX_REG_REGMAP_SEC, +}; -static struct bcm590xx_info bcm590xx_regs[] = { - BCM590XX_REG_TABLE(rfldo, ldo_a_table), - BCM590XX_REG_TABLE(camldo1, ldo_c_table), - BCM590XX_REG_TABLE(camldo2, ldo_c_table), - BCM590XX_REG_TABLE(simldo1, ldo_a_table), - BCM590XX_REG_TABLE(simldo2, ldo_a_table), - BCM590XX_REG_TABLE(sdldo, ldo_c_table), - BCM590XX_REG_TABLE(sdxldo, ldo_a_table), - BCM590XX_REG_TABLE(mmcldo1, ldo_a_table), - BCM590XX_REG_TABLE(mmcldo2, ldo_a_table), - BCM590XX_REG_TABLE(audldo, ldo_a_table), - BCM590XX_REG_TABLE(micldo, ldo_a_table), - BCM590XX_REG_TABLE(usbldo, ldo_a_table), - BCM590XX_REG_TABLE(vibldo, ldo_c_table), - BCM590XX_REG_RANGES(csr, dcdc_csr_ranges), - BCM590XX_REG_RANGES(iosr1, dcdc_iosr1_ranges), - BCM590XX_REG_RANGES(iosr2, dcdc_iosr1_ranges), - BCM590XX_REG_RANGES(msr, dcdc_iosr1_ranges), - BCM590XX_REG_RANGES(sdsr1, dcdc_sdsr1_ranges), - BCM590XX_REG_RANGES(sdsr2, dcdc_iosr1_ranges), - BCM590XX_REG_RANGES(vsr, dcdc_iosr1_ranges), - BCM590XX_REG_TABLE(gpldo1, ldo_a_table), - BCM590XX_REG_TABLE(gpldo2, ldo_a_table), - BCM590XX_REG_TABLE(gpldo3, ldo_a_table), - BCM590XX_REG_TABLE(gpldo4, ldo_a_table), - BCM590XX_REG_TABLE(gpldo5, ldo_a_table), - BCM590XX_REG_TABLE(gpldo6, ldo_a_table), - BCM590XX_REG_TABLE(vbus, ldo_vbus), +struct bcm590xx_reg_info { + enum bcm590xx_reg_type type; + enum bcm590xx_reg_regmap regmap; + const struct regulator_desc desc; }; struct bcm590xx_reg { - struct regulator_desc *desc; struct bcm590xx *mfd; + unsigned int n_regulators; + const struct bcm590xx_reg_info *regs; }; -static int bcm590xx_get_vsel_register(int id) -{ - if (BCM590XX_REG_IS_LDO(id)) - return BCM590XX_RFLDOCTRL + id; - else if (BCM590XX_REG_IS_GPLDO(id)) - return BCM590XX_GPLDO1CTRL + id; - else - return BCM590XX_CSRVOUT1 + (id - BCM590XX_REG_CSR) * 3; -} - -static int bcm590xx_get_enable_register(int id) -{ - int reg = 0; - - if (BCM590XX_REG_IS_LDO(id)) - reg = BCM590XX_RFLDOPMCTRL1 + id * 2; - else if (BCM590XX_REG_IS_GPLDO(id)) - reg = BCM590XX_GPLDO1PMCTRL1 + id * 2; - else - switch (id) { - case BCM590XX_REG_CSR: - reg = BCM590XX_CSRPMCTRL1; - break; - case BCM590XX_REG_IOSR1: - reg = BCM590XX_IOSR1PMCTRL1; - break; - case BCM590XX_REG_IOSR2: - reg = BCM590XX_IOSR2PMCTRL1; - break; - case BCM590XX_REG_MSR: - reg = BCM590XX_MSRPMCTRL1; - break; - case BCM590XX_REG_SDSR1: - reg = BCM590XX_SDSR1PMCTRL1; - break; - case BCM590XX_REG_SDSR2: - reg = BCM590XX_SDSR2PMCTRL1; - break; - case BCM590XX_REG_VSR: - reg = BCM590XX_VSRPMCTRL1; - break; - case BCM590XX_REG_VBUS: - reg = BCM590XX_OTG_CTRL; - break; - } - - - return reg; -} - static const struct regulator_ops bcm590xx_ops_ldo = { .is_enabled = regulator_is_enabled_regmap, .enable = regulator_enable_regmap, @@ -272,73 +208,297 @@ static const struct regulator_ops bcm590xx_ops_vbus = { .disable = regulator_disable_regmap, }; +#define BCM590XX_REG_DESC(_name, _name_lower) \ + .id = BCM590XX_REG_##_name, \ + .name = #_name_lower, \ + .of_match = of_match_ptr(#_name_lower), \ + .regulators_node = of_match_ptr("regulators"), \ + .type = REGULATOR_VOLTAGE, \ + .owner = THIS_MODULE \ + +#define BCM590XX_LDO_DESC(_name, _name_lower, _table) \ + BCM590XX_REG_DESC(_name, _name_lower), \ + .ops = &bcm590xx_ops_ldo, \ + .n_voltages = ARRAY_SIZE(_table), \ + .volt_table = _table, \ + .vsel_reg = BCM590XX_##_name##CTRL, \ + .vsel_mask = BCM590XX_LDO_VSEL_MASK, \ + .enable_reg = BCM590XX_##_name##PMCTRL1, \ + .enable_mask = BCM590XX_REG_ENABLE, \ + .enable_is_inverted = true + +#define BCM590XX_SR_DESC(_name, _name_lower, _ranges) \ + BCM590XX_REG_DESC(_name, _name_lower), \ + .ops = &bcm590xx_ops_dcdc, \ + .n_voltages = 64, \ + .linear_ranges = _ranges, \ + .n_linear_ranges = ARRAY_SIZE(_ranges), \ + .vsel_reg = BCM590XX_##_name##VOUT1, \ + .vsel_mask = BCM590XX_SR_VSEL_MASK, \ + .enable_reg = BCM590XX_##_name##PMCTRL1, \ + .enable_mask = BCM590XX_REG_ENABLE, \ + .enable_is_inverted = true + +static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(RFLDO, rfldo, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(SDLDO, sdldo, ldo_c_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(AUDLDO, audldo, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(MICLDO, micldo, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(USBLDO, usbldo, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_LDO_DESC(VIBLDO, vibldo, ldo_c_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(CSR, csr, dcdc_csr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(MSR, msr, dcdc_iosr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM590XX_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_VBUS, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM590XX_REG_DESC(VBUS, vbus), + .ops = &bcm590xx_ops_vbus, + .n_voltages = 1, + .fixed_uV = 5000000, + .enable_reg = BCM590XX_OTG_CTRL, + .enable_mask = BCM590XX_VBUS_ENABLE, + }, + }, +}; + static int bcm590xx_probe(struct platform_device *pdev) { struct bcm590xx *bcm590xx = dev_get_drvdata(pdev->dev.parent); struct bcm590xx_reg *pmu; + const struct bcm590xx_reg_info *info; struct regulator_config config = { }; - struct bcm590xx_info *info; struct regulator_dev *rdev; - int i; + unsigned int i; pmu = devm_kzalloc(&pdev->dev, sizeof(*pmu), GFP_KERNEL); if (!pmu) return -ENOMEM; pmu->mfd = bcm590xx; + pmu->n_regulators = BCM590XX_NUM_REGS; + pmu->regs = bcm590xx_regs; platform_set_drvdata(pdev, pmu); - pmu->desc = devm_kcalloc(&pdev->dev, - BCM590XX_NUM_REGS, - sizeof(struct regulator_desc), - GFP_KERNEL); - if (!pmu->desc) - return -ENOMEM; - - info = bcm590xx_regs; - - for (i = 0; i < BCM590XX_NUM_REGS; i++, info++) { - /* Register the regulators */ - pmu->desc[i].name = info->name; - pmu->desc[i].of_match = of_match_ptr(info->name); - pmu->desc[i].regulators_node = of_match_ptr("regulators"); - pmu->desc[i].supply_name = info->vin_name; - pmu->desc[i].id = i; - pmu->desc[i].volt_table = info->volt_table; - pmu->desc[i].n_voltages = info->n_voltages; - pmu->desc[i].linear_ranges = info->linear_ranges; - pmu->desc[i].n_linear_ranges = info->n_linear_ranges; - - if ((BCM590XX_REG_IS_LDO(i)) || (BCM590XX_REG_IS_GPLDO(i))) { - pmu->desc[i].ops = &bcm590xx_ops_ldo; - pmu->desc[i].vsel_mask = BCM590XX_LDO_VSEL_MASK; - } else if (BCM590XX_REG_IS_VBUS(i)) - pmu->desc[i].ops = &bcm590xx_ops_vbus; - else { - pmu->desc[i].ops = &bcm590xx_ops_dcdc; - pmu->desc[i].vsel_mask = BCM590XX_SR_VSEL_MASK; - } - - if (BCM590XX_REG_IS_VBUS(i)) - pmu->desc[i].enable_mask = BCM590XX_VBUS_ENABLE; - else { - pmu->desc[i].vsel_reg = bcm590xx_get_vsel_register(i); - pmu->desc[i].enable_is_inverted = true; - pmu->desc[i].enable_mask = BCM590XX_REG_ENABLE; - } - pmu->desc[i].enable_reg = bcm590xx_get_enable_register(i); - pmu->desc[i].type = REGULATOR_VOLTAGE; - pmu->desc[i].owner = THIS_MODULE; + /* Register the regulators */ + for (i = 0; i < pmu->n_regulators; i++) { + info = &pmu->regs[i]; config.dev = bcm590xx->dev; config.driver_data = pmu; - if (BCM590XX_REG_IS_GPLDO(i) || BCM590XX_REG_IS_VBUS(i)) - config.regmap = bcm590xx->regmap_sec; - else + if (info->regmap == BCM590XX_REG_REGMAP_PRI) { config.regmap = bcm590xx->regmap_pri; + } else if (info->regmap == BCM590XX_REG_REGMAP_SEC) { + config.regmap = bcm590xx->regmap_sec; + } else { + dev_err(bcm590xx->dev, + "invalid regmap for %s regulator\n", + pdev->name); + return PTR_ERR(rdev); + } - rdev = devm_regulator_register(&pdev->dev, &pmu->desc[i], + rdev = devm_regulator_register(&pdev->dev, &info->desc, &config); if (IS_ERR(rdev)) { dev_err(bcm590xx->dev, From patchwork Fri Jan 31 18:13:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955639 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B82FFC0218F for ; Fri, 31 Jan 2025 18:23:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ghflrqq/EporWqaPzkgt/ShlMxv0aJQrsUmK5HuVBms=; b=p0pyDWk0jwqcZqYPK9dcXwUB8T 42FMS07uo2zltrIubV3jQXQye2Ar3bDXu28tyicQxu9B7n74vvEO/Dklz9Ioh+sSBJLkLP76UQuon JlySHnFNXF7sEqqgoHSlfIchvEI5q7zDVvkuXHf0xN0wDZuZCW+sZKsYwNoLVOlp9UCLpCNTo0/bK 1eOdjHA38X9tP867el4s4BTwYfYyts8yVjvoK8EA4lmZoy+grysZwOlVoAm3Ez+UvARbLV/1rO4j2 l9lz0Ehs3pYoHNkVOIiHOabsxVGMYkI7wV0x4XCsYan3VlnIAno2aqAB3X9CedI+BzH+0XBoWD1oF Zt5sr3AA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvfc-0000000BCGf-21xT; Fri, 31 Jan 2025 18:23:12 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWm-0000000BBHT-3g8F for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:06 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5d3d0205bd5so3416262a12.3 for ; Fri, 31 Jan 2025 10:14:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347243; x=1738952043; darn=lists.infradead.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=ghflrqq/EporWqaPzkgt/ShlMxv0aJQrsUmK5HuVBms=; b=eW64UAPyu/aUgZPDEcxD/M1c5yStKJMqdV+5QbTVXbjRYM769GHkgAx2GbU5bpz0NO UaVUdXZOq12vtqQH8OA8wmt0VzDZWbkPoTb2G6aP+VDy03txUiN702mLlWNN4k1c2cLL f8Y6thOMsbMzmJ0q92MGKfN6P97fbsR5yYqV+OGzh73Bz0srT/gLy1i7G+j36d44Ggj0 X/B135q7FYZaK9Xiw9tOzp9AMw0/hlgPb9pML/xID2W2VkfJPpBtR42WTceu3iJGB+rI Cq6vGUQ2sSAv6LK137HHqI+xFxZCyj93mkZNz4A+irDPyT0i9KYdIs7xn3XfY02t0p73 W5KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347243; x=1738952043; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ghflrqq/EporWqaPzkgt/ShlMxv0aJQrsUmK5HuVBms=; b=M3puBbAb0Tg8luYDB6vwK4l8TIYWk07qvcOc7KdTPSlPBbIP/CFnxdCChg913CDFl1 JZUkzstMuXJoxYgHPYEk1LJU92i2PzgHClo0XMR5gqy7fM8ojABaBP54EUeIB5KKl/6v ByI3FcH4LftnRvNdWkCgDmwzKSbs/1ennqEVkjymiPNZ8KtXnTcSo7+ma5DmnGCKnegG xXOnB2J8lQgmjT5ri6jOqbE0FQKqgslv0XBuifNV6539cKBLf0zZ36TqMgjab1dZce9Q aIzA5X3fvZYHYRCwZ4rlqIUhD+tEQ85e2aNIimKkb1KL1Zg+evFXsqJx9VmyHnND0a8j F97g== X-Forwarded-Encrypted: i=1; AJvYcCVZOR7/7OEBlBLWJCwzCkKgAhOqcWefi4JqnN0wYiSNUe9NfU3GRV/FhHtlfxpMuZ2OWtZrMILRcg3600gnjvsa@lists.infradead.org X-Gm-Message-State: AOJu0YxO8IqVEDC9xqaYq973kYSvHaJx4djIY3YFvsdEboQtlErp9EbU lRcTD8pZ+mLIAQoko3oUzmYeinMgvrNJ5rHLqIAJhiOd4xVXJZiu X-Gm-Gg: ASbGncuP8lndfU2ifpSLcaqlLzOSWHK2GH34GeUWz06kFPeio1nlJINl81GFXH46K6r vwbOk5s9kzEeMfne/ciK6isqvW8Hh+ezGF1MJ14nVk0C79mlrX+knw/TuU4HNZZURjv4MVHJOiu uC2VYQ8DaSOCwoTrPs3YYKs9BNCAbeh9PPT3oPskPhB3+lSznRcPvBKhlO1prT38zTgNlP1/YTZ h1Dz0FdkkAyAx1q4SR/Neqhz/vkqy2uL7anwu0272sWnCPovHP7/ZEnZVLvIJpYDggassxU5MUa aufOa0KyRSKypgVgH+sRIOEufhydGaYV5U0T7fcrxIAhstqT3L0A7vfQZ16KWQ== X-Google-Smtp-Source: AGHT+IHA5Cycvs5RwSZw4U+9iaDlJ7hV5OZlUPGeJPVKhwSsN1ZGda8M754K+3d3BE8JClrD2t/b2A== X-Received: by 2002:a05:6402:40cd:b0:5dc:8851:fc36 with SMTP id 4fb4d7f45d1cf-5dc8851fcdfmr2753276a12.11.1738347243272; Fri, 31 Jan 2025 10:14:03 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:14:02 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:54 +0100 Subject: [PATCH v3 6/7] regulator: bcm590xx: Rename BCM59056-specific data as such MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-6-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=21159; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=bF7UqowP0EnW+aVGNb3fd2Srae1RJp+v4FuJZ/DIZ6E=; b=Ul4mNowO/S5anDPDsTamo/muVzHfN9yiQykgPO0serjN8yujKQA8Ce1m57k914/dvPo4aDObL tX4sXdazR5jDRo5CmNrx8mGnP1abX2KS94Br4kQOrBIswMyGtnkbTeL X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101405_096752_DD18C17E X-CRM114-Status: GOOD ( 15.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Previously, the driver used the BCM590XX prefix for register data specific to the BCM59056. As we will be introducing other regulators to this driver as well, make the BCM59056-specific values use the BCM59056 prefix. Signed-off-by: Artur Weber --- Changes in v3: - Added this commit --- drivers/regulator/bcm590xx-regulator.c | 369 +++++++++++++++++---------------- 1 file changed, 190 insertions(+), 179 deletions(-) diff --git a/drivers/regulator/bcm590xx-regulator.c b/drivers/regulator/bcm590xx-regulator.c index 6548653a6fb7207a5aa8e006a005553bfb7b1d69..1cc46b32572beae24890ede9edbf0fb460bf31cd 100644 --- a/drivers/regulator/bcm590xx-regulator.c +++ b/drivers/regulator/bcm590xx-regulator.c @@ -18,146 +18,13 @@ #include #include -/* I2C slave 0 registers */ -#define BCM590XX_RFLDOPMCTRL1 0x60 -#define BCM590XX_CAMLDO1PMCTRL1 0x62 -#define BCM590XX_CAMLDO2PMCTRL1 0x64 -#define BCM590XX_SIMLDO1PMCTRL1 0x66 -#define BCM590XX_SIMLDO2PMCTRL1 0x68 -#define BCM590XX_SDLDOPMCTRL1 0x6a -#define BCM590XX_SDXLDOPMCTRL1 0x6c -#define BCM590XX_MMCLDO1PMCTRL1 0x6e -#define BCM590XX_MMCLDO2PMCTRL1 0x70 -#define BCM590XX_AUDLDOPMCTRL1 0x72 -#define BCM590XX_MICLDOPMCTRL1 0x74 -#define BCM590XX_USBLDOPMCTRL1 0x76 -#define BCM590XX_VIBLDOPMCTRL1 0x78 -#define BCM590XX_IOSR1PMCTRL1 0x7a -#define BCM590XX_IOSR2PMCTRL1 0x7c -#define BCM590XX_CSRPMCTRL1 0x7e -#define BCM590XX_SDSR1PMCTRL1 0x82 -#define BCM590XX_SDSR2PMCTRL1 0x86 -#define BCM590XX_MSRPMCTRL1 0x8a -#define BCM590XX_VSRPMCTRL1 0x8e -#define BCM590XX_RFLDOCTRL 0x96 -#define BCM590XX_CAMLDO1CTRL 0x97 -#define BCM590XX_CAMLDO2CTRL 0x98 -#define BCM590XX_SIMLDO1CTRL 0x99 -#define BCM590XX_SIMLDO2CTRL 0x9a -#define BCM590XX_SDLDOCTRL 0x9b -#define BCM590XX_SDXLDOCTRL 0x9c -#define BCM590XX_MMCLDO1CTRL 0x9d -#define BCM590XX_MMCLDO2CTRL 0x9e -#define BCM590XX_AUDLDOCTRL 0x9f -#define BCM590XX_MICLDOCTRL 0xa0 -#define BCM590XX_USBLDOCTRL 0xa1 -#define BCM590XX_VIBLDOCTRL 0xa2 -#define BCM590XX_CSRVOUT1 0xc0 -#define BCM590XX_IOSR1VOUT1 0xc3 -#define BCM590XX_IOSR2VOUT1 0xc6 -#define BCM590XX_MSRVOUT1 0xc9 -#define BCM590XX_SDSR1VOUT1 0xcc -#define BCM590XX_SDSR2VOUT1 0xcf -#define BCM590XX_VSRVOUT1 0xd2 - -/* I2C slave 1 registers */ -#define BCM590XX_GPLDO5PMCTRL1 0x16 -#define BCM590XX_GPLDO6PMCTRL1 0x18 -#define BCM590XX_GPLDO1CTRL 0x1a -#define BCM590XX_GPLDO2CTRL 0x1b -#define BCM590XX_GPLDO3CTRL 0x1c -#define BCM590XX_GPLDO4CTRL 0x1d -#define BCM590XX_GPLDO5CTRL 0x1e -#define BCM590XX_GPLDO6CTRL 0x1f -#define BCM590XX_OTG_CTRL 0x40 -#define BCM590XX_GPLDO1PMCTRL1 0x57 -#define BCM590XX_GPLDO2PMCTRL1 0x59 -#define BCM590XX_GPLDO3PMCTRL1 0x5b -#define BCM590XX_GPLDO4PMCTRL1 0x5d +#define BCM590XX_MAX_NUM_REGS 27 #define BCM590XX_REG_ENABLE BIT(7) #define BCM590XX_VBUS_ENABLE BIT(2) #define BCM590XX_LDO_VSEL_MASK GENMASK(5, 3) #define BCM590XX_SR_VSEL_MASK GENMASK(5, 0) -/* - * RFLDO to VSR regulators are - * accessed via I2C slave 0 - */ - -/* LDO regulator IDs */ -#define BCM590XX_REG_RFLDO 0 -#define BCM590XX_REG_CAMLDO1 1 -#define BCM590XX_REG_CAMLDO2 2 -#define BCM590XX_REG_SIMLDO1 3 -#define BCM590XX_REG_SIMLDO2 4 -#define BCM590XX_REG_SDLDO 5 -#define BCM590XX_REG_SDXLDO 6 -#define BCM590XX_REG_MMCLDO1 7 -#define BCM590XX_REG_MMCLDO2 8 -#define BCM590XX_REG_AUDLDO 9 -#define BCM590XX_REG_MICLDO 10 -#define BCM590XX_REG_USBLDO 11 -#define BCM590XX_REG_VIBLDO 12 - -/* DCDC regulator IDs */ -#define BCM590XX_REG_CSR 13 -#define BCM590XX_REG_IOSR1 14 -#define BCM590XX_REG_IOSR2 15 -#define BCM590XX_REG_MSR 16 -#define BCM590XX_REG_SDSR1 17 -#define BCM590XX_REG_SDSR2 18 -#define BCM590XX_REG_VSR 19 - -/* - * GPLDO1 to VBUS regulators are - * accessed via I2C slave 1 - */ - -#define BCM590XX_REG_GPLDO1 20 -#define BCM590XX_REG_GPLDO2 21 -#define BCM590XX_REG_GPLDO3 22 -#define BCM590XX_REG_GPLDO4 23 -#define BCM590XX_REG_GPLDO5 24 -#define BCM590XX_REG_GPLDO6 25 -#define BCM590XX_REG_VBUS 26 - -#define BCM590XX_NUM_REGS 27 - -/* LDO group A: supported voltages in microvolts */ -static const unsigned int ldo_a_table[] = { - 1200000, 1800000, 2500000, 2700000, 2800000, - 2900000, 3000000, 3300000, -}; - -/* LDO group C: supported voltages in microvolts */ -static const unsigned int ldo_c_table[] = { - 3100000, 1800000, 2500000, 2700000, 2800000, - 2900000, 3000000, 3300000, -}; - -/* DCDC group CSR: supported voltages in microvolts */ -static const struct linear_range dcdc_csr_ranges[] = { - REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), - REGULATOR_LINEAR_RANGE(1360000, 51, 55, 20000), - REGULATOR_LINEAR_RANGE(900000, 56, 63, 0), -}; - -/* DCDC group IOSR1: supported voltages in microvolts */ -static const struct linear_range dcdc_iosr1_ranges[] = { - REGULATOR_LINEAR_RANGE(860000, 2, 51, 10000), - REGULATOR_LINEAR_RANGE(1500000, 52, 52, 0), - REGULATOR_LINEAR_RANGE(1800000, 53, 53, 0), - REGULATOR_LINEAR_RANGE(900000, 54, 63, 0), -}; - -/* DCDC group SDSR1: supported voltages in microvolts */ -static const struct linear_range dcdc_sdsr1_ranges[] = { - REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), - REGULATOR_LINEAR_RANGE(1340000, 51, 51, 0), - REGULATOR_LINEAR_RANGE(900000, 52, 63, 0), -}; - enum bcm590xx_reg_type { BCM590XX_REG_TYPE_LDO, BCM590XX_REG_TYPE_GPLDO, @@ -208,43 +75,187 @@ static const struct regulator_ops bcm590xx_ops_vbus = { .disable = regulator_disable_regmap, }; -#define BCM590XX_REG_DESC(_name, _name_lower) \ - .id = BCM590XX_REG_##_name, \ +#define BCM590XX_REG_DESC(_model, _name, _name_lower) \ + .id = _model##_REG_##_name, \ .name = #_name_lower, \ .of_match = of_match_ptr(#_name_lower), \ .regulators_node = of_match_ptr("regulators"), \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE \ -#define BCM590XX_LDO_DESC(_name, _name_lower, _table) \ - BCM590XX_REG_DESC(_name, _name_lower), \ +#define BCM590XX_LDO_DESC(_model, _model_lower, _name, _name_lower, _table) \ + BCM590XX_REG_DESC(_model, _name, _name_lower), \ .ops = &bcm590xx_ops_ldo, \ - .n_voltages = ARRAY_SIZE(_table), \ - .volt_table = _table, \ - .vsel_reg = BCM590XX_##_name##CTRL, \ + .n_voltages = ARRAY_SIZE(_model_lower##_##_table), \ + .volt_table = _model_lower##_##_table, \ + .vsel_reg = _model##_##_name##CTRL, \ .vsel_mask = BCM590XX_LDO_VSEL_MASK, \ - .enable_reg = BCM590XX_##_name##PMCTRL1, \ + .enable_reg = _model##_##_name##PMCTRL1, \ .enable_mask = BCM590XX_REG_ENABLE, \ .enable_is_inverted = true -#define BCM590XX_SR_DESC(_name, _name_lower, _ranges) \ - BCM590XX_REG_DESC(_name, _name_lower), \ +#define BCM590XX_SR_DESC(_model, _model_lower, _name, _name_lower, _ranges) \ + BCM590XX_REG_DESC(_model, _name, _name_lower), \ .ops = &bcm590xx_ops_dcdc, \ .n_voltages = 64, \ - .linear_ranges = _ranges, \ - .n_linear_ranges = ARRAY_SIZE(_ranges), \ - .vsel_reg = BCM590XX_##_name##VOUT1, \ + .linear_ranges = _model_lower##_##_ranges, \ + .n_linear_ranges = ARRAY_SIZE(_model_lower##_##_ranges), \ + .vsel_reg = _model##_##_name##VOUT1, \ .vsel_mask = BCM590XX_SR_VSEL_MASK, \ - .enable_reg = BCM590XX_##_name##PMCTRL1, \ + .enable_reg = _model##_##_name##PMCTRL1, \ .enable_mask = BCM590XX_REG_ENABLE, \ .enable_is_inverted = true -static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { +#define BCM59056_REG_DESC(_name, _name_lower) \ + BCM590XX_REG_DESC(BCM59056, _name, _name_lower) +#define BCM59056_LDO_DESC(_name, _name_lower, _table) \ + BCM590XX_LDO_DESC(BCM59056, bcm59056, _name, _name_lower, _table) +#define BCM59056_SR_DESC(_name, _name_lower, _ranges) \ + BCM590XX_SR_DESC(BCM59056, bcm59056, _name, _name_lower, _ranges) + +/* BCM59056 data */ + +/* I2C slave 0 registers */ +#define BCM59056_RFLDOPMCTRL1 0x60 +#define BCM59056_CAMLDO1PMCTRL1 0x62 +#define BCM59056_CAMLDO2PMCTRL1 0x64 +#define BCM59056_SIMLDO1PMCTRL1 0x66 +#define BCM59056_SIMLDO2PMCTRL1 0x68 +#define BCM59056_SDLDOPMCTRL1 0x6a +#define BCM59056_SDXLDOPMCTRL1 0x6c +#define BCM59056_MMCLDO1PMCTRL1 0x6e +#define BCM59056_MMCLDO2PMCTRL1 0x70 +#define BCM59056_AUDLDOPMCTRL1 0x72 +#define BCM59056_MICLDOPMCTRL1 0x74 +#define BCM59056_USBLDOPMCTRL1 0x76 +#define BCM59056_VIBLDOPMCTRL1 0x78 +#define BCM59056_IOSR1PMCTRL1 0x7a +#define BCM59056_IOSR2PMCTRL1 0x7c +#define BCM59056_CSRPMCTRL1 0x7e +#define BCM59056_SDSR1PMCTRL1 0x82 +#define BCM59056_SDSR2PMCTRL1 0x86 +#define BCM59056_MSRPMCTRL1 0x8a +#define BCM59056_VSRPMCTRL1 0x8e +#define BCM59056_RFLDOCTRL 0x96 +#define BCM59056_CAMLDO1CTRL 0x97 +#define BCM59056_CAMLDO2CTRL 0x98 +#define BCM59056_SIMLDO1CTRL 0x99 +#define BCM59056_SIMLDO2CTRL 0x9a +#define BCM59056_SDLDOCTRL 0x9b +#define BCM59056_SDXLDOCTRL 0x9c +#define BCM59056_MMCLDO1CTRL 0x9d +#define BCM59056_MMCLDO2CTRL 0x9e +#define BCM59056_AUDLDOCTRL 0x9f +#define BCM59056_MICLDOCTRL 0xa0 +#define BCM59056_USBLDOCTRL 0xa1 +#define BCM59056_VIBLDOCTRL 0xa2 +#define BCM59056_CSRVOUT1 0xc0 +#define BCM59056_IOSR1VOUT1 0xc3 +#define BCM59056_IOSR2VOUT1 0xc6 +#define BCM59056_MSRVOUT1 0xc9 +#define BCM59056_SDSR1VOUT1 0xcc +#define BCM59056_SDSR2VOUT1 0xcf +#define BCM59056_VSRVOUT1 0xd2 + +/* I2C slave 1 registers */ +#define BCM59056_GPLDO5PMCTRL1 0x16 +#define BCM59056_GPLDO6PMCTRL1 0x18 +#define BCM59056_GPLDO1CTRL 0x1a +#define BCM59056_GPLDO2CTRL 0x1b +#define BCM59056_GPLDO3CTRL 0x1c +#define BCM59056_GPLDO4CTRL 0x1d +#define BCM59056_GPLDO5CTRL 0x1e +#define BCM59056_GPLDO6CTRL 0x1f +#define BCM59056_OTG_CTRL 0x40 +#define BCM59056_GPLDO1PMCTRL1 0x57 +#define BCM59056_GPLDO2PMCTRL1 0x59 +#define BCM59056_GPLDO3PMCTRL1 0x5b +#define BCM59056_GPLDO4PMCTRL1 0x5d + +/* + * RFLDO to VSR regulators are + * accessed via I2C slave 0 + */ + +/* LDO regulator IDs */ +#define BCM59056_REG_RFLDO 0 +#define BCM59056_REG_CAMLDO1 1 +#define BCM59056_REG_CAMLDO2 2 +#define BCM59056_REG_SIMLDO1 3 +#define BCM59056_REG_SIMLDO2 4 +#define BCM59056_REG_SDLDO 5 +#define BCM59056_REG_SDXLDO 6 +#define BCM59056_REG_MMCLDO1 7 +#define BCM59056_REG_MMCLDO2 8 +#define BCM59056_REG_AUDLDO 9 +#define BCM59056_REG_MICLDO 10 +#define BCM59056_REG_USBLDO 11 +#define BCM59056_REG_VIBLDO 12 + +/* DCDC regulator IDs */ +#define BCM59056_REG_CSR 13 +#define BCM59056_REG_IOSR1 14 +#define BCM59056_REG_IOSR2 15 +#define BCM59056_REG_MSR 16 +#define BCM59056_REG_SDSR1 17 +#define BCM59056_REG_SDSR2 18 +#define BCM59056_REG_VSR 19 + +/* + * GPLDO1 to VBUS regulators are + * accessed via I2C slave 1 + */ + +#define BCM59056_REG_GPLDO1 20 +#define BCM59056_REG_GPLDO2 21 +#define BCM59056_REG_GPLDO3 22 +#define BCM59056_REG_GPLDO4 23 +#define BCM59056_REG_GPLDO5 24 +#define BCM59056_REG_GPLDO6 25 +#define BCM59056_REG_VBUS 26 + +#define BCM59056_NUM_REGS 27 + +/* LDO group A: supported voltages in microvolts */ +static const unsigned int bcm59056_ldo_a_table[] = { + 1200000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group C: supported voltages in microvolts */ +static const unsigned int bcm59056_ldo_c_table[] = { + 3100000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* DCDC group CSR: supported voltages in microvolts */ +static const struct linear_range bcm59056_dcdc_csr_ranges[] = { + REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), + REGULATOR_LINEAR_RANGE(1360000, 51, 55, 20000), + REGULATOR_LINEAR_RANGE(900000, 56, 63, 0), +}; + +/* DCDC group IOSR1: supported voltages in microvolts */ +static const struct linear_range bcm59056_dcdc_iosr1_ranges[] = { + REGULATOR_LINEAR_RANGE(860000, 2, 51, 10000), + REGULATOR_LINEAR_RANGE(1500000, 52, 52, 0), + REGULATOR_LINEAR_RANGE(1800000, 53, 53, 0), + REGULATOR_LINEAR_RANGE(900000, 54, 63, 0), +}; + +/* DCDC group SDSR1: supported voltages in microvolts */ +static const struct linear_range bcm59056_dcdc_sdsr1_ranges[] = { + REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), + REGULATOR_LINEAR_RANGE(1340000, 51, 51, 0), + REGULATOR_LINEAR_RANGE(900000, 52, 63, 0), +}; + +static const struct bcm590xx_reg_info bcm59056_regs[BCM59056_NUM_REGS] = { { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(RFLDO, rfldo, ldo_a_table), + BCM59056_LDO_DESC(RFLDO, rfldo, ldo_a_table), }, }, @@ -252,7 +263,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), + BCM59056_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), }, }, @@ -260,7 +271,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), + BCM59056_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), }, }, @@ -268,7 +279,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), + BCM59056_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), }, }, @@ -276,7 +287,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), + BCM59056_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), }, }, @@ -284,7 +295,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(SDLDO, sdldo, ldo_c_table), + BCM59056_LDO_DESC(SDLDO, sdldo, ldo_c_table), }, }, @@ -292,7 +303,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), + BCM59056_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), }, }, @@ -300,7 +311,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), + BCM59056_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), }, }, @@ -308,7 +319,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), + BCM59056_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), }, }, @@ -316,7 +327,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(AUDLDO, audldo, ldo_a_table), + BCM59056_LDO_DESC(AUDLDO, audldo, ldo_a_table), }, }, @@ -324,7 +335,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(MICLDO, micldo, ldo_a_table), + BCM59056_LDO_DESC(MICLDO, micldo, ldo_a_table), }, }, @@ -332,7 +343,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(USBLDO, usbldo, ldo_a_table), + BCM59056_LDO_DESC(USBLDO, usbldo, ldo_a_table), }, }, @@ -340,7 +351,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_LDO, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_LDO_DESC(VIBLDO, vibldo, ldo_c_table), + BCM59056_LDO_DESC(VIBLDO, vibldo, ldo_c_table), }, }, @@ -348,7 +359,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(CSR, csr, dcdc_csr_ranges), + BCM59056_SR_DESC(CSR, csr, dcdc_csr_ranges), }, }, @@ -356,7 +367,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), + BCM59056_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), }, }, @@ -364,7 +375,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), + BCM59056_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), }, }, @@ -372,7 +383,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(MSR, msr, dcdc_iosr1_ranges), + BCM59056_SR_DESC(MSR, msr, dcdc_iosr1_ranges), }, }, @@ -380,7 +391,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), + BCM59056_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), }, }, @@ -388,7 +399,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), + BCM59056_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), }, }, @@ -396,7 +407,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_SR, .regmap = BCM590XX_REG_REGMAP_PRI, .desc = { - BCM590XX_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), + BCM59056_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), }, }, @@ -404,7 +415,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), + BCM59056_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), }, }, @@ -412,7 +423,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), + BCM59056_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), }, }, @@ -420,7 +431,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), + BCM59056_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), }, }, @@ -428,7 +439,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), + BCM59056_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), }, }, @@ -436,7 +447,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), + BCM59056_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), }, }, @@ -444,7 +455,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_GPLDO, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), + BCM59056_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), }, }, @@ -452,11 +463,11 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] = { .type = BCM590XX_REG_TYPE_VBUS, .regmap = BCM590XX_REG_REGMAP_SEC, .desc = { - BCM590XX_REG_DESC(VBUS, vbus), + BCM59056_REG_DESC(VBUS, vbus), .ops = &bcm590xx_ops_vbus, .n_voltages = 1, .fixed_uV = 5000000, - .enable_reg = BCM590XX_OTG_CTRL, + .enable_reg = BCM59056_OTG_CTRL, .enable_mask = BCM590XX_VBUS_ENABLE, }, }, @@ -476,8 +487,8 @@ static int bcm590xx_probe(struct platform_device *pdev) return -ENOMEM; pmu->mfd = bcm590xx; - pmu->n_regulators = BCM590XX_NUM_REGS; - pmu->regs = bcm590xx_regs; + pmu->n_regulators = BCM59056_NUM_REGS; + pmu->regs = bcm59056_regs; platform_set_drvdata(pdev, pmu); From patchwork Fri Jan 31 18:13:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 13955640 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 176DCC0218F for ; Fri, 31 Jan 2025 18:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Fax9kdvN216AxxcqVrOAKn7muyCEAfP6SvOfhWX/p7o=; b=Lon7Wh4mBqh3H5KDdBRNseEhii Ws0R+45K3HRwyPr4OtUryvt4kaCWx6lw+x5S61zePwchNgfYUbWEdzMkajwjFCuO52odu0VyQmkbr BpsoXdVkKDf+VaKRh9JUpYnE7ClNv+j5fvRweoO6bYKHoFu3yoRyGjL2jPBPXz+89rVr7DEIu2zqW tSgkzoW/OiF2kfGtYt7HcJlYiZiVQSHc4pvgggtWhYZaJb3KALEcxdAx8arDqpvYjD4RwU3TZKL/I 3LaZYuSP6Y/OiqMDlYdqzVgfeuZORYklTHQxp+LUYMR2yKcoNUJQqKy5GOIHPXWPCV9iDrl/5ZWeE 8UZu4wsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tdvgu-0000000BCLq-0UTU; Fri, 31 Jan 2025 18:24:32 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tdvWo-0000000BBHr-2eYW for linux-arm-kernel@lists.infradead.org; Fri, 31 Jan 2025 18:14:07 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5d3f28a4fccso3344083a12.2 for ; Fri, 31 Jan 2025 10:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347245; x=1738952045; darn=lists.infradead.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=Fax9kdvN216AxxcqVrOAKn7muyCEAfP6SvOfhWX/p7o=; b=UzL6i1L8+T8uJFb1qRdU5utmZUAv0+5UODFGbeAlQfkf4Sdr//ALLuu7EzPhJSohVc AuZgHpN/2ZBl+stOfJ3Oc2i9+QNa0Tzc3q+q1ofUhccsCgcyeqic3Wt9XyZYba4j0Zn1 u5t53K3eRhoqDmLiiN+sjaL3AgV4KgAlCcc/fciY+2g0Mn+EXyzp2ed1Ox/rxBZwrSlX 4Yqvr8IEA641i2nzK5NrZvUGGJdihu0TbRwFEiPYHKc2CjTFWiDLIddXAQEEIlckKUtl peOZQzfPbPpnaKTwQuEzysUeEU5Bb89Kdi+18lBZ2x68uIO+pFA6JAQqNlxYmsMjCKJu CMmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738347245; x=1738952045; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fax9kdvN216AxxcqVrOAKn7muyCEAfP6SvOfhWX/p7o=; b=J4KVINBqwJ9UeHSFQ0EZexnd25eaNR3YtsQHnf7xirblEy8swixAJVrieegcpouNOi z9CWrQE1GYWzkyz4ZVNgtEXWubLLxK7aglHHuhsP1xd3JVxKf1iCnD8e/Nwks7FyCVq1 /NVJZMk7Fj5idc5CcYfCY6qAxdG0EJLtYsQVGn4R8TQYZOj6YxeF7pATBz1EHFZx4QYu bU+T23AbqF9vOsiK763tOZPvpNL/uh9Hh8WFNtPwdCpbonm+yhKM+APb4ccj2LX6wwzJ LtimClSV7pPp90zBUx6k7HgW/asBM0EHSaE9gcoSQ+Im1blRKY+ht9euiqfpAxlZ4SPJ GQcg== X-Forwarded-Encrypted: i=1; AJvYcCXqJZUOTs9jhYVoar5hvn5dVEHeSNELsM70CXtYnNpek3q86VGUMwIKL8/CWzP+kJbchc8O3uYFu6XSHiiNwNgc@lists.infradead.org X-Gm-Message-State: AOJu0YwmqBWkCd40VgEzmqL1DPx1+hsK2UeyCLU2ivdMyYWo6+uh2YNW pHIJB7uHTN7se4w6umSv4viQ1NQ1bIGkcp0xX5fH/C7Jl6gB5V3NHYM1Cw== X-Gm-Gg: ASbGnct/0oONrTGghZvVIktZTslt5AOicWl2vAjBug5kkLp6Nd6qC1uwgJmcsIZQMY/ 4+MrjBc8S3L7viDUiAb0wWeXV2mSMCmSGpKrZKg2IaEBqbNbt8VlSIBC/NIrvcxjAbxCbaJgyIR UUrjFC3NALDUka+xuy3Yw+0YWDi+u4Hx9miQGRpjfAhRsc0KX8yc7smFDoTzhEWog36ENWALCnr 1aRpY4LCwCDSigvaIDRRxhZxGVq3CAQ9diqAfzMLicueJNcBEwHSTLbvogGTNxHmKr0cE7THyoS dfc+yzvEtEp8K0O21fMEx6OubTQKPZW3gwo3Hw/BdXAkAFeKEo7reqnlVKR6qQ== X-Google-Smtp-Source: AGHT+IHEyHP056TYgbTw+V68Tq9wyIeKZTEItE+XB7N5zT7axePSmO7prEIsz4WvU+JyQgg1KAD9Dg== X-Received: by 2002:a05:6402:40cd:b0:5dc:8851:fc36 with SMTP id 4fb4d7f45d1cf-5dc8851fcdfmr2753489a12.11.1738347245113; Fri, 31 Jan 2025 10:14:05 -0800 (PST) Received: from hex.my.domain (83.11.225.21.ipv4.supernova.orange.pl. [83.11.225.21]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff67sm3223744a12.16.2025.01.31.10.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 10:14:04 -0800 (PST) From: Artur Weber Date: Fri, 31 Jan 2025 19:13:55 +0100 Subject: [PATCH v3 7/7] regulator: bcm590xx: Add support for BCM59054 regulators MIME-Version: 1.0 Message-Id: <20250131-bcm59054-v3-7-bbac52a84787@gmail.com> References: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> In-Reply-To: <20250131-bcm59054-v3-0-bbac52a84787@gmail.com> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: Stanislav Jakubek , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738347232; l=11565; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=pBCfGKkeGMipb9ovlUaMugCq3/Vs7bm2Pri7eB6WPKE=; b=TNigMBxjO6GRY0qMmnbCLhBYQahR/GnoNM5ziGDoACApgIU0iBxw4VbI/IewA0TVyGburyPt2 KG4HEYJhujXCk5xhQqlh4NVlzRdyTZ3tugp27GIcYdKd1bvd4Ufb0/c X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250131_101406_804742_A0B81392 X-CRM114-Status: GOOD ( 17.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The BCM59056 and BCM59054 are very similar in terms of regulators. Add the register definitions for the BCM59054 and enable support for it in the driver. Signed-off-by: Artur Weber --- Changes in v3: - Adapt to regulator info being moved to tables --- drivers/regulator/bcm590xx-regulator.c | 394 ++++++++++++++++++++++++++++++++- 1 file changed, 392 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/bcm590xx-regulator.c b/drivers/regulator/bcm590xx-regulator.c index 1cc46b32572beae24890ede9edbf0fb460bf31cd..73219fdb3c92948e8796f5765ba429878d84d69d 100644 --- a/drivers/regulator/bcm590xx-regulator.c +++ b/drivers/regulator/bcm590xx-regulator.c @@ -113,6 +113,13 @@ static const struct regulator_ops bcm590xx_ops_vbus = { #define BCM59056_SR_DESC(_name, _name_lower, _ranges) \ BCM590XX_SR_DESC(BCM59056, bcm59056, _name, _name_lower, _ranges) +#define BCM59054_REG_DESC(_name, _name_lower) \ + BCM590XX_REG_DESC(BCM59054, _name, _name_lower) +#define BCM59054_LDO_DESC(_name, _name_lower, _table) \ + BCM590XX_LDO_DESC(BCM59054, bcm59054, _name, _name_lower, _table) +#define BCM59054_SR_DESC(_name, _name_lower, _ranges) \ + BCM590XX_SR_DESC(BCM59054, bcm59054, _name, _name_lower, _ranges) + /* BCM59056 data */ /* I2C slave 0 registers */ @@ -473,6 +480,376 @@ static const struct bcm590xx_reg_info bcm59056_regs[BCM59056_NUM_REGS] = { }, }; +/* BCM59054 data */ + +/* I2C slave 0 registers */ +#define BCM59054_RFLDOPMCTRL1 0x60 +#define BCM59054_CAMLDO1PMCTRL1 0x62 +#define BCM59054_CAMLDO2PMCTRL1 0x64 +#define BCM59054_SIMLDO1PMCTRL1 0x66 +#define BCM59054_SIMLDO2PMCTRL1 0x68 +#define BCM59054_SDLDOPMCTRL1 0x6a +#define BCM59054_SDXLDOPMCTRL1 0x6c +#define BCM59054_MMCLDO1PMCTRL1 0x6e +#define BCM59054_MMCLDO2PMCTRL1 0x70 +#define BCM59054_AUDLDOPMCTRL1 0x72 +#define BCM59054_MICLDOPMCTRL1 0x74 +#define BCM59054_USBLDOPMCTRL1 0x76 +#define BCM59054_VIBLDOPMCTRL1 0x78 +#define BCM59054_IOSR1PMCTRL1 0x7a +#define BCM59054_IOSR2PMCTRL1 0x7c +#define BCM59054_CSRPMCTRL1 0x7e +#define BCM59054_SDSR1PMCTRL1 0x82 +#define BCM59054_SDSR2PMCTRL1 0x86 +#define BCM59054_MMSRPMCTRL1 0x8a +#define BCM59054_VSRPMCTRL1 0x8e +#define BCM59054_RFLDOCTRL 0x96 +#define BCM59054_CAMLDO1CTRL 0x97 +#define BCM59054_CAMLDO2CTRL 0x98 +#define BCM59054_SIMLDO1CTRL 0x99 +#define BCM59054_SIMLDO2CTRL 0x9a +#define BCM59054_SDLDOCTRL 0x9b +#define BCM59054_SDXLDOCTRL 0x9c +#define BCM59054_MMCLDO1CTRL 0x9d +#define BCM59054_MMCLDO2CTRL 0x9e +#define BCM59054_AUDLDOCTRL 0x9f +#define BCM59054_MICLDOCTRL 0xa0 +#define BCM59054_USBLDOCTRL 0xa1 +#define BCM59054_VIBLDOCTRL 0xa2 +#define BCM59054_CSRVOUT1 0xc0 +#define BCM59054_IOSR1VOUT1 0xc3 +#define BCM59054_IOSR2VOUT1 0xc6 +#define BCM59054_MMSRVOUT1 0xc9 +#define BCM59054_SDSR1VOUT1 0xcc +#define BCM59054_SDSR2VOUT1 0xcf +#define BCM59054_VSRVOUT1 0xd2 + +/* I2C slave 1 registers */ +#define BCM59054_LVLDO1PMCTRL1 0x16 +#define BCM59054_LVLDO2PMCTRL1 0x18 +#define BCM59054_GPLDO1CTRL 0x1a +#define BCM59054_GPLDO2CTRL 0x1b +#define BCM59054_GPLDO3CTRL 0x1c +#define BCM59054_TCXLDOCTRL 0x1d +#define BCM59054_LVLDO1CTRL 0x1e +#define BCM59054_LVLDO2CTRL 0x1f +#define BCM59054_OTG_CTRL 0x40 +#define BCM59054_GPLDO1PMCTRL1 0x57 +#define BCM59054_GPLDO2PMCTRL1 0x59 +#define BCM59054_GPLDO3PMCTRL1 0x5b +#define BCM59054_TCXLDOPMCTRL1 0x5d + +/* + * RFLDO to VSR regulators are + * accessed via I2C slave 0 + */ + +/* LDO regulator IDs */ +#define BCM59054_REG_RFLDO 0 +#define BCM59054_REG_CAMLDO1 1 +#define BCM59054_REG_CAMLDO2 2 +#define BCM59054_REG_SIMLDO1 3 +#define BCM59054_REG_SIMLDO2 4 +#define BCM59054_REG_SDLDO 5 +#define BCM59054_REG_SDXLDO 6 +#define BCM59054_REG_MMCLDO1 7 +#define BCM59054_REG_MMCLDO2 8 +#define BCM59054_REG_AUDLDO 9 +#define BCM59054_REG_MICLDO 10 +#define BCM59054_REG_USBLDO 11 +#define BCM59054_REG_VIBLDO 12 + +/* DCDC regulator IDs */ +#define BCM59054_REG_CSR 13 +#define BCM59054_REG_IOSR1 14 +#define BCM59054_REG_IOSR2 15 +#define BCM59054_REG_MMSR 16 +#define BCM59054_REG_SDSR1 17 +#define BCM59054_REG_SDSR2 18 +#define BCM59054_REG_VSR 19 + +/* + * GPLDO1 to VBUS regulators are + * accessed via I2C slave 1 + */ + +#define BCM59054_REG_GPLDO1 20 +#define BCM59054_REG_GPLDO2 21 +#define BCM59054_REG_GPLDO3 22 +#define BCM59054_REG_TCXLDO 23 +#define BCM59054_REG_LVLDO1 24 +#define BCM59054_REG_LVLDO2 25 +#define BCM59054_REG_VBUS 26 + +#define BCM59054_NUM_REGS 27 + +/* LDO group 1: supported voltages in microvolts */ +static const unsigned int bcm59054_ldo_1_table[] = { + 1200000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group 2: supported voltages in microvolts */ +static const unsigned int bcm59054_ldo_2_table[] = { + 3100000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group 3: supported voltages in microvolts */ +static const unsigned int bcm59054_ldo_3_table[] = { + 1000000, 1107000, 1143000, 1214000, 1250000, + 1464000, 1500000, 1786000, +}; + +/* DCDC group SR: supported voltages in microvolts */ +static const struct linear_range bcm59054_dcdc_sr_ranges[] = { + REGULATOR_LINEAR_RANGE(0, 0, 1, 0), + REGULATOR_LINEAR_RANGE(860000, 2, 60, 10000), + REGULATOR_LINEAR_RANGE(1500000, 61, 61, 0), + REGULATOR_LINEAR_RANGE(1800000, 62, 62, 0), + REGULATOR_LINEAR_RANGE(900000, 63, 63, 0), +}; + +/* DCDC group VSR: supported voltages in microvolts */ +static const struct linear_range bcm59054_dcdc_vsr_ranges[] = { + REGULATOR_LINEAR_RANGE(0, 0, 1, 0), + REGULATOR_LINEAR_RANGE(860000, 2, 59, 10000), + REGULATOR_LINEAR_RANGE(1700000, 60, 60, 0), + REGULATOR_LINEAR_RANGE(1500000, 61, 61, 0), + REGULATOR_LINEAR_RANGE(1800000, 62, 62, 0), + REGULATOR_LINEAR_RANGE(1600000, 63, 63, 0), +}; + +/* DCDC group CSR: supported voltages in microvolts */ +static const struct linear_range bcm59054_dcdc_csr_ranges[] = { + REGULATOR_LINEAR_RANGE(700000, 0, 1, 100000), + REGULATOR_LINEAR_RANGE(860000, 2, 60, 10000), + REGULATOR_LINEAR_RANGE(900000, 61, 63, 0), +}; + +static const struct bcm590xx_reg_info bcm59054_regs[BCM59054_NUM_REGS] = { + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(RFLDO, rfldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(CAMLDO1, camldo1, ldo_2_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(CAMLDO2, camldo2, ldo_2_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(SIMLDO1, simldo1, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(SIMLDO2, simldo2, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(SDLDO, sdldo, ldo_2_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(SDXLDO, sdxldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(MMCLDO1, mmcldo1, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(MMCLDO2, mmcldo2, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(AUDLDO, audldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(MICLDO, micldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(USBLDO, usbldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_LDO, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_LDO_DESC(VIBLDO, vibldo, ldo_2_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(CSR, csr, dcdc_csr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(IOSR1, iosr1, dcdc_sr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(IOSR2, iosr2, dcdc_sr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(MMSR, mmsr, dcdc_sr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(SDSR1, sdsr1, dcdc_sr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(SDSR2, sdsr2, dcdc_sr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_SR, + .regmap = BCM590XX_REG_REGMAP_PRI, + .desc = { + BCM59054_SR_DESC(VSR, vsr, dcdc_vsr_ranges), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(GPLDO1, gpldo1, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(GPLDO2, gpldo2, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(GPLDO3, gpldo3, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(TCXLDO, tcxldo, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(LVLDO1, lvldo1, ldo_1_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_GPLDO, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_LDO_DESC(LVLDO2, lvldo2, ldo_3_table), + }, + }, + + { + .type = BCM590XX_REG_TYPE_VBUS, + .regmap = BCM590XX_REG_REGMAP_SEC, + .desc = { + BCM59054_REG_DESC(VBUS, vbus), + .ops = &bcm590xx_ops_vbus, + .n_voltages = 1, + .fixed_uV = 5000000, + .enable_reg = BCM59054_OTG_CTRL, + .enable_mask = BCM590XX_VBUS_ENABLE, + }, + }, +}; + static int bcm590xx_probe(struct platform_device *pdev) { struct bcm590xx *bcm590xx = dev_get_drvdata(pdev->dev.parent); @@ -487,8 +864,21 @@ static int bcm590xx_probe(struct platform_device *pdev) return -ENOMEM; pmu->mfd = bcm590xx; - pmu->n_regulators = BCM59056_NUM_REGS; - pmu->regs = bcm59056_regs; + + switch (pmu->mfd->device_type) { + case BCM59054_TYPE: + pmu->n_regulators = BCM59054_NUM_REGS; + pmu->regs = bcm59054_regs; + break; + case BCM59056_TYPE: + pmu->n_regulators = BCM59056_NUM_REGS; + pmu->regs = bcm59056_regs; + break; + default: + dev_err(bcm590xx->dev, + "unknown device type, could not initialize"); + return -EINVAL; + } platform_set_drvdata(pdev, pmu);