From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 475F41F03FF; Fri, 31 Jan 2025 18:13:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347239; cv=none; b=XSvAKgmKddSs6OSiQ3QIo1ggf19JecL8M3LtpkRYe7FWI6EPRdxsKRkMLQ1t7QiWV4/53mkaa8nXoLfIvnXT2b6L+EDwy/rC4pTd4+B0piLvhVTEXlDYoYiS2xnSTltEFgh1xZ3b9d4Vg+CsPMTwPD9VoTQKFtWQ04SiZThrDYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347239; c=relaxed/simple; bh=it+n+q4v8xX5ycZK7F7lG+eJksUO7QTkZaWRNpCMKQM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dkHTYA2e6ZSSnAQeQGXrjYFaI6SUwd09sQj6bXrannytbCJeFfwt4Q65eltWUDFY1l3P3KPEWtelK2UJQBAOR/auX7AEcIAnrebrVvzjQaDX9UZowN7yc3vwFP6mObrAo3QC1jHRn03vTr02vAJ3dX4vxe0HoHZ/PAnTBukBxKk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mwPfAjdx; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mwPfAjdx" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5d7e3f1fdafso4438009a12.0; Fri, 31 Jan 2025 10:13:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738347235; x=1738952035; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=faHjqb9bX1ActelU1HLJ2Bi1CB5Zkv+nbfbnT4awVJ8=; b=mwPfAjdxP8E/wvpUBhQNt/BlW54YO6DFzij/yT4blJEnBcVGDUruvHG6jCt25L8Znf QZf1ws37utTAdl9j507tIztWVa6pbSHOUPNkMCBrtxETvl6ZfD7qW+3Rk/XCZMnQlUt4 oHp0gpP4sQYpQqKcYM1cFynqDBVXTvkq7c5cNMn7oDh3hW59DQp/t9QmN3+kRVxGcWMt Ne290BzrYtklo82mHJExIoddhYNGSvCka7LqABtqdOzfKDo1Vipk4vvxhhAtQ2aOez1T rQAXxNKvq5v3dl5vQzFiectVbmhsHV3+v7rj6NJEcRhCh+uY2vDnX8W+SAfRy2maNwam zzhw== 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=vau5J5h8d21sjQOPgmTAUgTfHHJqYm3qTbqzqIbDvbkd4KhiBYFDvD1ARKns3PSFDP xRMHei0c/w3CQEpBuqkO2pBMxXMCzF7hQFN7mVMdNXnLfXUkHJiIQBrDe5A3aF3HJYTV FGEbEfOuDwhxXiExserQqQgK/EEWFZhbn7KcPJrOdx4vzgWNwTgUyygLtlllFXKs+c/1 xyZToCZC5k7/4kLsv5LcDHmUFFhTSoCe5dbc4CAG/+NkIqGRqeoSGrGIKib+Sy/3Eqdm YmGowgR7+7Mwll+46uxQnk8Aj8SD+V1fDRBlCLGPJcmFqjRaQW7yxC3OoX6SI9Yy6X4H yB2Q== X-Forwarded-Encrypted: i=1; AJvYcCVvIGWzvBMfAHr1Zr8BV8Kdx/TY7+zO5wJqHKtJEXUK1ZUPQLME5xiiWOzj9ah7YJIewI+Ifkd5+dJWpOm5@vger.kernel.org, AJvYcCWoTgxjlhii+roIjUPUYShGt+GDvYcZu+HA5a4cn09TS/6hiKRw7ihBFTGlmjWTl1O11jAxd6UE2Ci3@vger.kernel.org X-Gm-Message-State: AOJu0Yw6x1+yFs0+rHujKBsldFCodSbU+B6maifDWs0pyxpwEYTtd/cE wVEyvpFS8eSlzknh9kCSVDIPUZDu4tkdg65nHlDv7u9MoV+fsPG7TofP+Q== X-Gm-Gg: ASbGnctIrtmYIEwC1BBmhSU9lIDBKJqvUJJ0RwS+bg4J5jV9xNn9Mr3Bwk9i+rvGP7k eq+eqgkn9j6h2wdnE/SjeSupeX59ADAiynmuOoKsLUxx1hTyQf4cqDpw6BczzUrk9N9Kctw3fO+ HJtL/MIYslTK+VTMz4Yz3jVFvDDMi/yFGGbZtJC2Z3pbTCiVtgX+xovi5GT3DIt+jZ9rGOglqga DAickkldb/6yVeKho4ps3eKSHN6TGyi9H9HKeifyuzbKazkalSCcmvqxpo1TfpPFxMaiI1ShdRU Xs/NSVJsItKHABNeuMFqp95NP53dUuvdJaxm2+TAAXFwozg5WXhc0d2csynkPg== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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/Docu= mentation/devicetree/bindings/mfd/brcm,bcm59056.txt deleted file mode 100644 index be51a15e05f926913b3a473648d977b25f1a2fbc..000000000000000000000000000= 0000000000000 --- 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 =3D "brcm,bcm59056"; - reg =3D <0x08>; - interrupts =3D ; - regulators { - rfldo_reg: rfldo { - regulator-min-microvolt =3D <1200000>; - regulator-max-microvolt =3D <3300000>; - }; - - ... - }; - }; diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml b/Doc= umentation/devicetree/bindings/mfd/brcm,bcm59056.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3296799eb452fca2a4b03699fcb= 5aa27005a8e8d --- /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 =3D <1>; + #size-cells =3D <0>; + + pmic: bcm59056@8 { + compatible =3D "brcm,bcm59056"; + reg =3D <0x08>; + interrupts =3D ; + + regulators { + rfldo_reg: rfldo { + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <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..8939004d5a3f079c05d313bed4a= 2f07fbc473bac --- /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 --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F401F1F1309; Fri, 31 Jan 2025 18:13:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347240; cv=none; b=uciH/1EOozSmO3KNhhzhf5xocgEvZW9U0zehZvIPu2xccK6JOsQWJdOekc67txuUP1FMQPltgfNCzDw1Ipk3vbHfCHxis6wWbd/3tAiYy6Zkn21DRy8TwF+rtAtj/OTuITADEWGbDNW+3ownylnGo4FIhhzboirysA27B/QDKpU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347240; c=relaxed/simple; bh=OZ9dPuuxBTKP3Wt2se5BJr4wjcpa5aP2mHso7Suck2o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dmsubUbgcF872hwtSYpMwF7TFKMFG4eH3kd2AnRD3uKT4pBFbybtYLEghNAADxZc2YRPlpypjOtfO3Hq0IzV/j5KUMjN+zxRyedkrtZCWOoli/IPFKvIoUGnP5gsAu32XPfL+lJvebpmq3kgmcaZ25tcCq/6NS8sPmUtLZXi4X0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WeM1we9p; arc=none smtp.client-ip=209.85.208.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WeM1we9p" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5d3dce16a3dso4308690a12.1; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9+pPKfqXieDOQM2ayfee2XUul8g+kNgXcNPv52SLqjM=; b=WeM1we9p3eITPajP3m6OgJAZQmPE8miaaBfJQnp9VL89iGUxK9xxJr0TzovW9W4+0H 1ifqwoTHuCcRud8XULAghVdZgxU7NdsjcY2bzjXq4CSPikuB3/yh4zxkC8LnIT/NgtdU Ke48AWynM1/k0F7/Fg/ckcD/9z+IQAMVUMpt+1JQji7kTdxgDnkK1EXU5aUG5MtnVLRr zPJWf4be/YcLeThJF/rgrlLhG7eilc4I4YsfUToB13ol8nr0qcbwHhpTOwyXEgcdkbNe MluQYPED6j6sK707F+tqE1EuyVvJZP2DCXneMWu2P5fuZrY2mRZUnOQTc0h41nQj0FhB oU7g== 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=WqeLtEEi5fmazE63XiIV4ulANkj5HpqLp7/72EWeMmMSBc9/4qcrZgiNn2Y17pLH+6 +8z9NxTSiZqGGH9cZ4v3ufaiJaFgKSJ/ZPuBQv/huIBOvheFLH5TW9HiLafm63WFg5bz dWR4zpGj+o1TnkZSwYMOxV5cHJm1N/IgRxmwTwbWDGi0VTKsezSreWtGqp29FfLXbpHZ V5G0Sh/RYiu3QeEgwFFfDmcuuV9arI++mEbxMrgl3uniYnQ8OgjqWmoasNCuVsfFeLhd cqL3CBemoclneh2wW0uGCND6Vj1GQksHCXmLmcxXODjd+NSMi03g/M9JnPP3WPG/jjnt cDFQ== X-Forwarded-Encrypted: i=1; AJvYcCWHrS0AhoCr4tM1x5zPWGmLuD+tn1P6N7uI4ynzrVdqL3RDiFA3mu3RSpKUSI4hqnN0jhoh9fqfEjTu@vger.kernel.org, AJvYcCX3UnBWXu+8gErvbcjy4IBsSwmKfJGFEd8zv6gEFnnxNGjW8ClvspAo6P0QkfXTQWrRA2P6zBG+q573JmJ2@vger.kernel.org X-Gm-Message-State: AOJu0Yz/t0/Er2rAEzcVZBkWXn+hkRxuyMXSdpFdOYJIAzht0b9ZdQCD ehxHAH07vG41I8ZOsB88xjbC8lBpNhyL4qVq9dihaIo6HOb7KOKGq+g08w== X-Gm-Gg: ASbGnct1Qj/0rAhMfikrSfU6Q4K2UQdzwWAMfpecqS0Jpnq3A9HUPl63nsd9EuodPc7 PySEFaIuQO7i+2LG/FQnCegClSnQsfwwR1/TW68+beEkSYT8XH3et7iWJ9S9XzwAOCa6OwS81Wc 2Oyk0F/QRKz/b3TVVkRO2mzcDVfMQW/STRa7HSUoM0khMADJPu7mx/ENLJ+vZQ/sMXmXcg0PUl3 ONc7vlVigljtNsyVpfQ1FTTq1o5bJuI3IGLfSLr2slfTMIZwozidBj+2JuEmVmhr0c/WS/OBMAG 6H9J/V2mdKb6m8gZNnbrlJ8E1LijZ49foxKcNYRj95zsJMJ59H01pcju0tMAhA== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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/Doc= umentation/devicetree/bindings/mfd/brcm,bcm59056.yaml index 3296799eb452fca2a4b03699fcb5aa27005a8e8d..87d663416ed9e7f5ec4aa25c1aa= 2d9e650c42e2c 100644 --- a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml +++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml @@ -11,7 +11,9 @@ maintainers: =20 properties: compatible: - const: brcm,bcm59056 + enum: + - brcm,bcm59054 + - brcm,bcm59056 =20 reg: maxItems: 1 @@ -22,7 +24,6 @@ properties: regulators: type: object description: Container node for regulators. - $ref: ../regulator/brcm,bcm59056.yaml =20 required: - compatible @@ -31,6 +32,27 @@ required: =20 additionalProperties: false =20 +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..719621c7f0e71cd9368f4d7243c= 79aaa97ca7255 --- /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 --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACF601F2360; Fri, 31 Jan 2025 18:14:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347242; cv=none; b=NBtbxW63njK2yFRywfmMmC3HD7DBbO7WVww34E/6lmn6m91h5LEPNVwIfvFL7NxxwIn9gdpZNrt5E6Y0+sW51kRXNGn9Imal/17tKOAmCcefexMEuMu11GGlz/TewDavxxmpb+5QhR7BV/CzmTAe3ySzZu7eevJl5eY8Awz1cLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347242; c=relaxed/simple; bh=oSZj2mqvkLxBORbTCSITwqBVG2fzKvqkrOn5Jmie/9I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=laB1jGxT5ZogBknasN0fGVz2KdHrhbu/jpCaECgqwqcW9Dv6f8DQw9JO93na1yC+FdGB8H7udLRq1ezddSRztk/60tlaJPK2OwsO/okwNeZhtIXuX4fRaTQXnd2WY6+Bylkm8Q5eEX7SPDeBOAAy8gdEa53rkxBzg2FjryHWH5Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OKO4XnUD; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OKO4XnUD" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5dc82e38c10so1972139a12.3; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FAPozP4IneH+whBW7y4JwsioLb146azVsz4FWFU1mlo=; b=OKO4XnUDATqoZaaQ1uj7idlHaLdASWKkgvlTkYb2k9NIRAZzAfkVe5kGL+0AUnNyrL wlnrUD3IfrvPSwlQzzB//7+6Qa69yoOVh83wVqw5pDyAkjUU/DmrmwflvPkzuhNVwSZX r1MobWqOlTfsMqvWzAVCr2RHyoi5qnNbcsETTnDklA83zeM71aOd8HJGRhbfvPu3RqHh X9kMmOQxJTo6Ez2hb6KFi5myLVFxRocw4HB6AxgfIny4b4VrhcSx9KDxKnoJg1TGVwmt XlZPimHzJQsIwYRnKGJkjTqAnd5ev4aV3KV8M3xOHGDRKJzB4/wXqxvj7IP4XAkY68BJ 9wog== 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=krKp2WTBcjpQtOo8sf65QYC0r4wiORoOKrwOkfumwgr8FnetaUhd55O7BjLKiUqV1a 6BR41Is3klMHK6ghIqk+L8huserWOF3IoVGIkck1rE8iVxD9HEgPE7MsA6YOXcn7ReDI B3lnwrvTqi8Pggc32eu2UrPpEWSR8cNWe4+Y4RR29Zrk0USFWgfWNWDXiJQONkwpV3MP OvmI5WyhsOS8wE+6EBkohTeCEYs4RTH5WgjWq8L0jqG4AjUhXVP+fc/z3DALQeXnP4v5 +ihwECAfPInsv3h3Mr7tK40fLkLhM2C4PYnlX2zc3UFIcNkJz8br2/sa3a3LhCMa6ktC uQPA== X-Forwarded-Encrypted: i=1; AJvYcCVfsph1QyGqWMA5F/+PGfc/ijyAtlt9joOUQ8opkGvIQAjBKxcb+MSoJxFC/+V46s3+tAOL0C6epJhqZGP0@vger.kernel.org, AJvYcCVjdj4I8Nd2x+6NnaKoWX79PezIJb5WzRVSYfDWm1MvuT5ryiiT/7u5fVC+hS1LJIN/C77FSgHpeaNJ@vger.kernel.org X-Gm-Message-State: AOJu0Yweh2/8Qpqa8seh4Mg9umpI4LlN7ieLhPMQeYTGrsKC7zKziJjt AGCxmvDrRRCrwy/UMeCOUFQXwCQj6rkBTDkaUy9ocdnRP0GWympSQB/ekA== X-Gm-Gg: ASbGncsEyU1757I3noqIEFtomOwJmnG/8UqsYRCPb3yjWujG4x8YTWMn/MXPLIKrrvG d46rhO3KyTDRhGFNYSRLmJmdswd1yWfmbCrInS1uhaU6IHCyjib9SjUVntcHXEhQR2Pg5p59fGd EfFgenhKcczHgG5XZIbroIGBxgsCXrDeTTCdZRxCo3wbe8nuddGDyMDrvJzKRLTUAtvTobbceSm nrUq7es1QtzZ+GQS5wJChVstNCXy8HFnIyOsJ4SYgPv3WW1JshWbX1Cu9oIAPxMW2KyPnObap9M zdhfEmHbGAux9ZsVhWdeOU8OpoIrlmYVgCJDl9lfdWLoQf7QXVnO6yrXKUsNEQ== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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..cefaa9a3c45c9c90bffc08f7391= 61d8ea21d98dd 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 =3D "okay"; =20 pmu: pmu@8 { + compatible =3D "brcm,bcm59056"; + interrupts =3D ; reg =3D <0x08>; + + regulators { + camldo1_reg: camldo1 { + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + }; + + sdldo_reg: sdldo { + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3000000>; + }; + + sdxldo_reg: sdxldo { + regulator-min-microvolt =3D <2700000>; + regulator-max-microvolt =3D <3300000>; + }; + + usbldo_reg: usbldo { + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + regulator-always-on; + }; + + iosr1_reg: iosr1 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-always-on; + }; + }; }; }; =20 @@ -74,39 +106,3 @@ &usbotg { &usbphy { status =3D "okay"; }; - -#include "bcm59056.dtsi" - -&pmu { - compatible =3D "brcm,bcm59056"; - interrupts =3D ; - regulators { - camldo1_reg: camldo1 { - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - regulator-always-on; - }; - - sdldo_reg: sdldo { - regulator-min-microvolt =3D <3000000>; - regulator-max-microvolt =3D <3000000>; - }; - - sdxldo_reg: sdxldo { - regulator-min-microvolt =3D <2700000>; - regulator-max-microvolt =3D <3300000>; - }; - - usbldo_reg: usbldo { - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - regulator-always-on; - }; - - iosr1_reg: iosr1 { - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - regulator-always-on; - }; - }; -}; diff --git a/arch/arm/boot/dts/broadcom/bcm59056.dtsi b/arch/arm/boot/dts/b= roadcom/bcm59056.dtsi deleted file mode 100644 index a9bb7ad81378d88811c4473763c579d3d2c006a1..000000000000000000000000000= 0000000000000 --- 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 =3D "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 { - }; - }; -}; --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C740F1F2392; Fri, 31 Jan 2025 18:14:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347243; cv=none; b=TFCsSvRSkBRDVKaKYVBZdf4uZlNSZaIlTaf4Z1DnpszUt2yYq3RZICQvQSMny8aMw541daA4lb6EcI1GHXqlWnWYcnkrKVwi/8Cyh1YX+ooFQsX64NrqT85Bytiv+we+Nm2kWPE7AhOTxwLmUeb1MP4rDRFppg/XIh8yhNLjzXU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347243; c=relaxed/simple; bh=xyJ65tKgVjwJHrbcCu1WkIZ9H5kiHix8wXr8hmS3z5Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PmtcJVKaBZQlZdaHY3KO6I2AfAst68W6WIWVd5B6vV90WsDhZWjZMeIMCX7WYDgJ0HROs3iCpp1torReMFKITuz+y3sovvVlCIuEiY0nmLIPKrAPkmM4lczxu4ESuiGkBH0WGl9WxWlRDvxF7yYlnri2s69qkW1ROUhz5rmEmO4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VDLuWDRP; arc=none smtp.client-ip=209.85.208.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VDLuWDRP" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5d3e6f6cf69so3822253a12.1; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9NVDC1BCd9AWkrJth6d12FQxmu1lidyDRyNXZVkh74A=; b=VDLuWDRPuDqKv654l2bP4RaSeY0VS8qk3qoyGTHyEhtyPfvQW5NGC0MuKcjDFip13B XrWX1tc4wpEthgN11J9uYQ2WuPC3992n8yAsKFZNWYnGtyBmLW0/YM2IAZfq8IFXrkl0 daedcmy/m8MZbBRo9+o4ce1WtSEInjIHWDiIYdFKCi7dHTN0RzXxE7boK/3OQqwTOwR0 WQmhREIw82OlLEjUc2ZggDbC88SnAzGNCViA4ih0eAsyk/RTEpRqh0Hxd42QT/pMYkso oMZBLJrNj5D5Kv+Bx8dxe59nSCr47/yfPMAKOTvopeAndfaMUIqwB9Rpq22p9Ll3Gjtf wA4A== 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=A4/gxcsG6mnMqgHR2oPMq8+IiXRdfKYFUoi3P4X9WxrdcxNGJXwL6eJ2g9Vukm+C0H BSUQbuxNnUPvQgnvLDKcTTN/q0G4sAdO7H1med6j5rxB6sU+0ss9Q05R2w76kLBHWfO3 jH5mTsR9dPdK8HauOI7sl+9ZY4/OFAoar19hVeRIV8fQPreg7LG9dPpInpoEzPgugX9G B9KVCIzBaN1jeWibhLxmWyIBcUT4WoMJ9U75rYRCRztSUcU/VQXLKaIZ4MUbWQ1aXArz wvIJ2W+5pfnUfUL3IbJCvt6ZfjTBFNbY47isAn0RKVBwSL1b97gJBjEZZtmuNLpDt7K+ bFiw== X-Forwarded-Encrypted: i=1; AJvYcCVv2qwpveKnUqodTdLXZMUVUdiSRdWaVnZBYUAEKbvUhF/LtiSa75F4r0wpaf6cr9Ku2G+4UPRcIwsfhqln@vger.kernel.org, AJvYcCXXmjprQCuWJ18kMSHzDjZ9a9mYvOqpt9Ye7XJogngOXP7/Fs12QcqvKRZrnh772KIDDprRgoDM6CpO@vger.kernel.org X-Gm-Message-State: AOJu0YyVXK6Vzd2NdX86ORad4FnxnU1XMX/KY/q87O/Onbi2Jqb2Nq28 a2PR63pktwYENC3V7RkdpELIty4HCaM9J92HkBcyOXHOMpuhYm6RAeff8A== X-Gm-Gg: ASbGncsxKD4EZO9/3hMvdpAT3mN7yRbumDvAT5eCLZg2BRLxSncLCOyeQOdKm4JRU/L Iq8O44cKknOJafJ0asFyLSklP2CXajfGjnPzGXNaKDQE7u5S0J0gkdA6RIFPQSlZqnB1R1XSX80 zAu3Df0C2r/c54qlG5z4AZzXdDtqU25VxOwyKacN0a1Dz07WHc4dJm/sx5ldRGv/qnIHDxjCyvb 3bBUaQ2QLlMm0VkPLHh7eLkZ3voGQvS1pVBSFOyReWgPB06v9UE2Os5ht9OzOKAZ5CZgaf5NRCH HKbEsGiTbm/qhGsEnDgOQpL8295EZc867C5hehtQcTCbG/E4FcZg8x2PDb7xDQ== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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..23036157480e0116301bfa93932= c92f5a80010ea 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 =3D &i2c_pri->dev; bcm590xx->i2c_pri =3D i2c_pri; =20 + bcm590xx->device_type =3D \ + (uintptr_t) of_device_get_match_data(bcm590xx->dev); + bcm590xx->regmap_pri =3D 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) } =20 static const struct of_device_id bcm590xx_of_match[] =3D { - { .compatible =3D "brcm,bcm59056" }, + { .compatible =3D "brcm,bcm59054", .data =3D (void *)BCM59054_TYPE }, + { .compatible =3D "brcm,bcm59056", .data =3D (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..b76fb57bf0dd17d51580e93db58= ece4a4d6dc5e4 100644 --- a/include/linux/mfd/bcm590xx.h +++ b/include/linux/mfd/bcm590xx.h @@ -13,12 +13,19 @@ #include #include =20 +/* 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 =20 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; --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4090B1F2C49; Fri, 31 Jan 2025 18:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347245; cv=none; b=UnYkAf7KQmJLSfZumuynYSEDn0AWRrebfU8A8k3YE+PLzE141HyYg10373M91bvgQOpPadoNTxs3+QYb9jssMqcgGj3ITJMqx5hsx3DDrsuKSb9BWsWUBTcA0o3nplqucjuO+uPop0gH4E2/8xEQ0HGkhgzh9WTU3Y4NjlDC7IE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347245; c=relaxed/simple; bh=CoYmULwmYQYuYjjK9H0WcMCSNKsdgX0yMKH6SZAsU6A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EpZlm64AgpDHASc2Z99N7uNqK43iqzkdS74rlVAIvjwsY0+w88NBhYwBBj3O0H1ZLRulCznAv7lCz/KnNHteFz4BET4JhraKO8ULooXNJZFUbWXkyM0k9Tqs3kLcpw4o64vXPkjz7CQErBG7zSUMh4357ujgkiO2tJVA7C4Vdko= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Teh4NQQp; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Teh4NQQp" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5d96944401dso3796590a12.0; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=b97cdGbjaVACn1FfHRq1vVRLqfgZGpZI9sersBinJ3I=; b=Teh4NQQpgknjtTMm0tUBgESIOafCItnuWJCAhN8M67t4TaSTTWgpfeIcaGzYbXdq10 3E+KEn4N8V33psXmyenpZoGlBdZUb0neexVSYSsT1eCu7c5pVFimlCCOnobzUdGMfihr vssv9oBFNrXvSpmoe7cLLPkCeebUjv6uAZMD65AnCkzcysFgpBqMalxyTpB5IGRWpx94 k7UaG2ufw71EXzopGppgLMQeocUyebX713lgNZgFLXwsntcgrpmKgub4ZZiU8FrPszfT qQCwc8noPmO/PF8yzwJZO9nojz0UzcuT09Mc32P12EpXXNxDypVVUK3PVKfr+iisH9Wn Mi8A== 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=pYmTqzTGwQvntjANN1yK1D+/zpUjpeZSKm97SCuC0pFlY9Tya+fxAi+Vz3dvLleJf7 LKOdhCXqWS01ovHf61iNdaql3t2xiArVrFIDSEuzvZjr3lFVkjr5ZECXhdx2uFPGh87j 77UW/tBvtgdsvtsbBjqybxcU1qFhz3vuTkwSvB+IHYkffTAI0anuKwZlaGbU2VtAqLly cp+Esis5rRB/3lCPlw0bek8wUtANQPSc1PaWPVRr4QZEnp16o6h/Qu85rnhUa9Vd7FfB +BFVBhvW8821crgeclS2Ks2MfpAbH71k05Hnfzs2oN25ioomVkKWdi30ZNALN3qnmp3G 39zg== X-Forwarded-Encrypted: i=1; AJvYcCWkrRFvPHp++XeW6ajOI6nN3Ziqzf7BIy7e0Lk2KUPtl2T5bp6D3FkCI75+AbXAEj59oY6SyY9KImm1fvNO@vger.kernel.org, AJvYcCXup5JpvLrIE+wOrzFe3CrB90gjzTyEA26N9w/bGh5tExcWcfLd1c6z+g+RO7qpWGGFeIh5mMVEj9sv@vger.kernel.org X-Gm-Message-State: AOJu0Yz/kNROUAyIOydLT0s1j/KJH9yXdujMKonDckcMwZRoLMSQb5Bl mVuhEcbDhfG0bFc1USBWKSDu3x+lKEcSKfy5Du2t6qztZzRb1pAV1be70A== X-Gm-Gg: ASbGncsj6IoileRxrpFElO+pR6x44bZTsrahbPb91wSpOVtitaINsjw6Fg3QCwcxewq 9p62noIjHJ9yEa5nJ3h0mkyOdbfkdx0FaZ1Wmq1PFkydzRbb4gcffrNjYVV3/1kaJLTaeyDYAkY TBcMO/8hgdvRrhMs+q6wUfYvF2b11K+HIJ8Xg8HX8ABiDXdHRxpwJ1XcIpehiEmjKB4GFgyCWGr xIZwD6XAEyyM+xAQFVt6UupGlFXEzlPA5rJf2+yiflDYxRKEjahqJt7VB4q5RUziRkoVGp+4j8u BP7TgTdr2NjmAuiU1uDyX/RTr0zsLio/GanTsQrx/n8bvL1TQA7Nd42BXj6X8g== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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/bcm= 590xx-regulator.c index 9f0cda46b01506080ae5fa709104a8df4d174a8d..6548653a6fb7207a5aa8e006a00= 5553bfb7b1d69 100644 --- a/drivers/regulator/bcm590xx-regulator.c +++ b/drivers/regulator/bcm590xx-regulator.c @@ -20,6 +20,18 @@ =20 /* 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 =20 /* I2C slave 1 registers */ #define BCM590XX_GPLDO5PMCTRL1 0x16 @@ -94,11 +124,6 @@ =20 #define BCM590XX_NUM_REGS 27 =20 -#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 =3D=3D BCM590XX_REG_VBUS) - /* LDO group A: supported voltages in microvolts */ static const unsigned int ldo_a_table[] =3D { 1200000, 1800000, 2500000, 2700000, 2800000, @@ -111,10 +136,6 @@ static const unsigned int ldo_c_table[] =3D { 2900000, 3000000, 3300000, }; =20 -static const unsigned int ldo_vbus[] =3D { - 5000000, -}; - /* DCDC group CSR: supported voltages in microvolts */ static const struct linear_range dcdc_csr_ranges[] =3D { REGULATOR_LINEAR_RANGE(860000, 2, 50, 10000), @@ -137,115 +158,30 @@ static const struct linear_range dcdc_sdsr1_ranges[]= =3D { REGULATOR_LINEAR_RANGE(900000, 52, 63, 0), }; =20 -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 }; =20 -#define BCM590XX_REG_TABLE(_name, _table) \ - { \ - .name =3D #_name, \ - .n_voltages =3D ARRAY_SIZE(_table), \ - .volt_table =3D _table, \ - } - -#define BCM590XX_REG_RANGES(_name, _ranges) \ - { \ - .name =3D #_name, \ - .n_voltages =3D 64, \ - .n_linear_ranges =3D ARRAY_SIZE(_ranges), \ - .linear_ranges =3D _ranges, \ - } +enum bcm590xx_reg_regmap { + BCM590XX_REG_REGMAP_PRI, + BCM590XX_REG_REGMAP_SEC, +}; =20 -static struct bcm590xx_info bcm590xx_regs[] =3D { - 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; }; =20 struct bcm590xx_reg { - struct regulator_desc *desc; struct bcm590xx *mfd; + unsigned int n_regulators; + const struct bcm590xx_reg_info *regs; }; =20 -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 =3D 0; - - if (BCM590XX_REG_IS_LDO(id)) - reg =3D BCM590XX_RFLDOPMCTRL1 + id * 2; - else if (BCM590XX_REG_IS_GPLDO(id)) - reg =3D BCM590XX_GPLDO1PMCTRL1 + id * 2; - else - switch (id) { - case BCM590XX_REG_CSR: - reg =3D BCM590XX_CSRPMCTRL1; - break; - case BCM590XX_REG_IOSR1: - reg =3D BCM590XX_IOSR1PMCTRL1; - break; - case BCM590XX_REG_IOSR2: - reg =3D BCM590XX_IOSR2PMCTRL1; - break; - case BCM590XX_REG_MSR: - reg =3D BCM590XX_MSRPMCTRL1; - break; - case BCM590XX_REG_SDSR1: - reg =3D BCM590XX_SDSR1PMCTRL1; - break; - case BCM590XX_REG_SDSR2: - reg =3D BCM590XX_SDSR2PMCTRL1; - break; - case BCM590XX_REG_VSR: - reg =3D BCM590XX_VSRPMCTRL1; - break; - case BCM590XX_REG_VBUS: - reg =3D BCM590XX_OTG_CTRL; - break; - } - - - return reg; -} - static const struct regulator_ops bcm590xx_ops_ldo =3D { .is_enabled =3D regulator_is_enabled_regmap, .enable =3D regulator_enable_regmap, @@ -272,73 +208,297 @@ static const struct regulator_ops bcm590xx_ops_vbus = =3D { .disable =3D regulator_disable_regmap, }; =20 +#define BCM590XX_REG_DESC(_name, _name_lower) \ + .id =3D BCM590XX_REG_##_name, \ + .name =3D #_name_lower, \ + .of_match =3D of_match_ptr(#_name_lower), \ + .regulators_node =3D of_match_ptr("regulators"), \ + .type =3D REGULATOR_VOLTAGE, \ + .owner =3D THIS_MODULE \ + +#define BCM590XX_LDO_DESC(_name, _name_lower, _table) \ + BCM590XX_REG_DESC(_name, _name_lower), \ + .ops =3D &bcm590xx_ops_ldo, \ + .n_voltages =3D ARRAY_SIZE(_table), \ + .volt_table =3D _table, \ + .vsel_reg =3D BCM590XX_##_name##CTRL, \ + .vsel_mask =3D BCM590XX_LDO_VSEL_MASK, \ + .enable_reg =3D BCM590XX_##_name##PMCTRL1, \ + .enable_mask =3D BCM590XX_REG_ENABLE, \ + .enable_is_inverted =3D true + +#define BCM590XX_SR_DESC(_name, _name_lower, _ranges) \ + BCM590XX_REG_DESC(_name, _name_lower), \ + .ops =3D &bcm590xx_ops_dcdc, \ + .n_voltages =3D 64, \ + .linear_ranges =3D _ranges, \ + .n_linear_ranges =3D ARRAY_SIZE(_ranges), \ + .vsel_reg =3D BCM590XX_##_name##VOUT1, \ + .vsel_mask =3D BCM590XX_SR_VSEL_MASK, \ + .enable_reg =3D BCM590XX_##_name##PMCTRL1, \ + .enable_mask =3D BCM590XX_REG_ENABLE, \ + .enable_is_inverted =3D true + +static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] =3D= { + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(RFLDO, rfldo, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(SDLDO, sdldo, ldo_c_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(AUDLDO, audldo, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(MICLDO, micldo, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(USBLDO, usbldo, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_LDO_DESC(VIBLDO, vibldo, ldo_c_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(CSR, csr, dcdc_csr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(MSR, msr, dcdc_iosr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM590XX_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_VBUS, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM590XX_REG_DESC(VBUS, vbus), + .ops =3D &bcm590xx_ops_vbus, + .n_voltages =3D 1, + .fixed_uV =3D 5000000, + .enable_reg =3D BCM590XX_OTG_CTRL, + .enable_mask =3D BCM590XX_VBUS_ENABLE, + }, + }, +}; + static int bcm590xx_probe(struct platform_device *pdev) { struct bcm590xx *bcm590xx =3D dev_get_drvdata(pdev->dev.parent); struct bcm590xx_reg *pmu; + const struct bcm590xx_reg_info *info; struct regulator_config config =3D { }; - struct bcm590xx_info *info; struct regulator_dev *rdev; - int i; + unsigned int i; =20 pmu =3D devm_kzalloc(&pdev->dev, sizeof(*pmu), GFP_KERNEL); if (!pmu) return -ENOMEM; =20 pmu->mfd =3D bcm590xx; + pmu->n_regulators =3D BCM590XX_NUM_REGS; + pmu->regs =3D bcm590xx_regs; =20 platform_set_drvdata(pdev, pmu); =20 - pmu->desc =3D devm_kcalloc(&pdev->dev, - BCM590XX_NUM_REGS, - sizeof(struct regulator_desc), - GFP_KERNEL); - if (!pmu->desc) - return -ENOMEM; - - info =3D bcm590xx_regs; - - for (i =3D 0; i < BCM590XX_NUM_REGS; i++, info++) { - /* Register the regulators */ - pmu->desc[i].name =3D info->name; - pmu->desc[i].of_match =3D of_match_ptr(info->name); - pmu->desc[i].regulators_node =3D of_match_ptr("regulators"); - pmu->desc[i].supply_name =3D info->vin_name; - pmu->desc[i].id =3D i; - pmu->desc[i].volt_table =3D info->volt_table; - pmu->desc[i].n_voltages =3D info->n_voltages; - pmu->desc[i].linear_ranges =3D info->linear_ranges; - pmu->desc[i].n_linear_ranges =3D info->n_linear_ranges; - - if ((BCM590XX_REG_IS_LDO(i)) || (BCM590XX_REG_IS_GPLDO(i))) { - pmu->desc[i].ops =3D &bcm590xx_ops_ldo; - pmu->desc[i].vsel_mask =3D BCM590XX_LDO_VSEL_MASK; - } else if (BCM590XX_REG_IS_VBUS(i)) - pmu->desc[i].ops =3D &bcm590xx_ops_vbus; - else { - pmu->desc[i].ops =3D &bcm590xx_ops_dcdc; - pmu->desc[i].vsel_mask =3D BCM590XX_SR_VSEL_MASK; - } - - if (BCM590XX_REG_IS_VBUS(i)) - pmu->desc[i].enable_mask =3D BCM590XX_VBUS_ENABLE; - else { - pmu->desc[i].vsel_reg =3D bcm590xx_get_vsel_register(i); - pmu->desc[i].enable_is_inverted =3D true; - pmu->desc[i].enable_mask =3D BCM590XX_REG_ENABLE; - } - pmu->desc[i].enable_reg =3D bcm590xx_get_enable_register(i); - pmu->desc[i].type =3D REGULATOR_VOLTAGE; - pmu->desc[i].owner =3D THIS_MODULE; + /* Register the regulators */ + for (i =3D 0; i < pmu->n_regulators; i++) { + info =3D &pmu->regs[i]; =20 config.dev =3D bcm590xx->dev; config.driver_data =3D pmu; - if (BCM590XX_REG_IS_GPLDO(i) || BCM590XX_REG_IS_VBUS(i)) - config.regmap =3D bcm590xx->regmap_sec; - else + if (info->regmap =3D=3D BCM590XX_REG_REGMAP_PRI) { config.regmap =3D bcm590xx->regmap_pri; + } else if (info->regmap =3D=3D BCM590XX_REG_REGMAP_SEC) { + config.regmap =3D bcm590xx->regmap_sec; + } else { + dev_err(bcm590xx->dev, + "invalid regmap for %s regulator\n", + pdev->name); + return PTR_ERR(rdev); + } =20 - rdev =3D devm_regulator_register(&pdev->dev, &pmu->desc[i], + rdev =3D devm_regulator_register(&pdev->dev, &info->desc, &config); if (IS_ERR(rdev)) { dev_err(bcm590xx->dev, --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D2991F37BB; Fri, 31 Jan 2025 18:14:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347247; cv=none; b=DzwjQ9EKcjC/7woMJOBdMSXI2wa655Ahahix6PRi9nc8ZFH8hTI3zrSLghtuZd321dYAb6ZtCUe00vx5v5YDeswYV4FFfLFegnU3NDeZlGu5bVULPepkcTlW2X1tLF2XMwY7V1OZyCJcXlbb6fryD2+PSnKh6LJPwGPF2F/g+z8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347247; c=relaxed/simple; bh=bF7UqowP0EnW+aVGNb3fd2Srae1RJp+v4FuJZ/DIZ6E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZNIqSzSwSXgPAq1WjhDuAq5cUkl9QXPEvYYFk1ciV1bpR6xBywgutXGEbRAwRNnhFl+Rx6juG97fN6ti62vxIjumRsSPXvx9zDiC/KDmGJfR08K7Sp/Xw+m8fJdppU9wYGZN/aECn/XNy2Nm6YEvwnv5Sp69zmvYQQ8PBwsk1/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kuGEHlJc; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kuGEHlJc" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5d3d0205bd5so3416261a12.3; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ghflrqq/EporWqaPzkgt/ShlMxv0aJQrsUmK5HuVBms=; b=kuGEHlJcKAS/Y3mHfnuCki/YydbYbpb26EpZaRSOjNJ1E2NSoSya5phX89DLvZwixz UElky/9Nk5XYXgFU0gGvsCbrW88lgsihJ7nrO0Bvg+fvcRmpiMsVExJeUTyvPNkSpTe8 WfNNm1ySylIVLqOgEu2xJ9sWHdGPDBlTgIyTAqIQ1XUx7KJi8D8gNh8+IIQfAR3TVete aXJEqvenNbiWfvWSmfqppOeU3721hBJWoVvIgsMe6CN/xPLiRnzKKg1PhVX3mpS6uRD8 CB2EhcjOo4MSVt36C1SJ82wXm/pbNelW3uT21scZb/3PnX719Bcabah3Z9b5DnqwvWLg xbJA== 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=hUyZoumvkS0V4VcN/sZVq6h2PiIVqxqgLe6mykwcmrbm1yduR6FBvF6UA26z2ViVpi rcHu5I3in6AupJv0E+qlzgcDRFU3URN3QbRP7+lbaMSWBrYt4CZfJxk/Xvst86p2E6bH fIkUHzB6YQ/y3ooMhhVWclst89ZsEf3Oyl9J5vJSC7o2azsH3F/r4mVUSlCPYZiatGB5 wCf3QwlAxBgBjr5MJx0crmn427pMx7ToiCegSgiTgM//DPqsi9SJhDLSgA5wUp32VJPt yTCGriDdOqM3kH4Y29NTfUJ0fAAd5DchC4yfzXv24ydKgSyaQJGA6hlSYDrgmp/vk96n WD2A== X-Forwarded-Encrypted: i=1; AJvYcCWKKzPbFNtiK032vGeQPfSr8d5YkrOMitezNpQdv/TDFavyJ4dib8a03XKGHwVvnmlNbDBRY+4Pchlv@vger.kernel.org, AJvYcCX947y6Fawq9ippaUuJXbnXz1RsxOtwyk7j6Vx7GJfoYssZRMT6Rg2V0AX8amR0OIm4L9HyNrBnSxXi+LsL@vger.kernel.org X-Gm-Message-State: AOJu0YxjtMhqQzymDBwtUI2cVXRMR4HgISo/xt52y0/U8tPGCYl9xwSk DkeDlbie/PzW8QsoPfcuswgKJh7dkxo7760IGrGN8ST5dm1FG8puexWZ5Q== X-Gm-Gg: ASbGncvRSPAhDQUA0ddpbpCCn3K+Rw0PGTy2hDzS2tZzaqMkISlDmCjBq3IpHjcXd3W 87AR0dOiBblqV10FFTFEy5aTop1CFArQ48aaKO8hgEKeKFRZhWrrcgs1c0IoLuFJ3U1uOdKvivq OSm1IUbtr0lFn3lvgVi4ndZpRB2Qw6g7nKvlmyqus8ZK2MMzww7awgbhcqzBX7rUgdeVijlb099 U1taYZzQnc7Woqf/4SUkZzN5O/2gDl3H6xn3/09orfuC0FSy/Vzd0wuorr3H5oetV92jDwYwl8i 7pKV2NseWp3eLCE3leY9t0H+ZpO4aAI1f5XqZ8YTywg5qRDaxrI2TfzBbQGSNw== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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/bcm= 590xx-regulator.c index 6548653a6fb7207a5aa8e006a005553bfb7b1d69..1cc46b32572beae24890ede9edb= f0fb460bf31cd 100644 --- a/drivers/regulator/bcm590xx-regulator.c +++ b/drivers/regulator/bcm590xx-regulator.c @@ -18,146 +18,13 @@ #include #include =20 -/* 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 =20 #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) =20 -/* - * 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[] =3D { - 1200000, 1800000, 2500000, 2700000, 2800000, - 2900000, 3000000, 3300000, -}; - -/* LDO group C: supported voltages in microvolts */ -static const unsigned int ldo_c_table[] =3D { - 3100000, 1800000, 2500000, 2700000, 2800000, - 2900000, 3000000, 3300000, -}; - -/* DCDC group CSR: supported voltages in microvolts */ -static const struct linear_range dcdc_csr_ranges[] =3D { - 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[] =3D { - 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[] =3D { - 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 = =3D { .disable =3D regulator_disable_regmap, }; =20 -#define BCM590XX_REG_DESC(_name, _name_lower) \ - .id =3D BCM590XX_REG_##_name, \ +#define BCM590XX_REG_DESC(_model, _name, _name_lower) \ + .id =3D _model##_REG_##_name, \ .name =3D #_name_lower, \ .of_match =3D of_match_ptr(#_name_lower), \ .regulators_node =3D of_match_ptr("regulators"), \ .type =3D REGULATOR_VOLTAGE, \ .owner =3D THIS_MODULE \ =20 -#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 =3D &bcm590xx_ops_ldo, \ - .n_voltages =3D ARRAY_SIZE(_table), \ - .volt_table =3D _table, \ - .vsel_reg =3D BCM590XX_##_name##CTRL, \ + .n_voltages =3D ARRAY_SIZE(_model_lower##_##_table), \ + .volt_table =3D _model_lower##_##_table, \ + .vsel_reg =3D _model##_##_name##CTRL, \ .vsel_mask =3D BCM590XX_LDO_VSEL_MASK, \ - .enable_reg =3D BCM590XX_##_name##PMCTRL1, \ + .enable_reg =3D _model##_##_name##PMCTRL1, \ .enable_mask =3D BCM590XX_REG_ENABLE, \ .enable_is_inverted =3D true =20 -#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 =3D &bcm590xx_ops_dcdc, \ .n_voltages =3D 64, \ - .linear_ranges =3D _ranges, \ - .n_linear_ranges =3D ARRAY_SIZE(_ranges), \ - .vsel_reg =3D BCM590XX_##_name##VOUT1, \ + .linear_ranges =3D _model_lower##_##_ranges, \ + .n_linear_ranges =3D ARRAY_SIZE(_model_lower##_##_ranges), \ + .vsel_reg =3D _model##_##_name##VOUT1, \ .vsel_mask =3D BCM590XX_SR_VSEL_MASK, \ - .enable_reg =3D BCM590XX_##_name##PMCTRL1, \ + .enable_reg =3D _model##_##_name##PMCTRL1, \ .enable_mask =3D BCM590XX_REG_ENABLE, \ .enable_is_inverted =3D true =20 -static const struct bcm590xx_reg_info bcm590xx_regs[BCM590XX_NUM_REGS] =3D= { +#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[] =3D { + 1200000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group C: supported voltages in microvolts */ +static const unsigned int bcm59056_ldo_c_table[] =3D { + 3100000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* DCDC group CSR: supported voltages in microvolts */ +static const struct linear_range bcm59056_dcdc_csr_ranges[] =3D { + 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[] =3D { + 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[] =3D { + 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] =3D= { { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(RFLDO, rfldo, ldo_a_table), + BCM59056_LDO_DESC(RFLDO, rfldo, ldo_a_table), }, }, =20 @@ -252,7 +263,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), + BCM59056_LDO_DESC(CAMLDO1, camldo1, ldo_c_table), }, }, =20 @@ -260,7 +271,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), + BCM59056_LDO_DESC(CAMLDO2, camldo2, ldo_c_table), }, }, =20 @@ -268,7 +279,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), + BCM59056_LDO_DESC(SIMLDO1, simldo1, ldo_a_table), }, }, =20 @@ -276,7 +287,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), + BCM59056_LDO_DESC(SIMLDO2, simldo2, ldo_a_table), }, }, =20 @@ -284,7 +295,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(SDLDO, sdldo, ldo_c_table), + BCM59056_LDO_DESC(SDLDO, sdldo, ldo_c_table), }, }, =20 @@ -292,7 +303,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), + BCM59056_LDO_DESC(SDXLDO, sdxldo, ldo_a_table), }, }, =20 @@ -300,7 +311,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), + BCM59056_LDO_DESC(MMCLDO1, mmcldo1, ldo_a_table), }, }, =20 @@ -308,7 +319,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), + BCM59056_LDO_DESC(MMCLDO2, mmcldo2, ldo_a_table), }, }, =20 @@ -316,7 +327,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(AUDLDO, audldo, ldo_a_table), + BCM59056_LDO_DESC(AUDLDO, audldo, ldo_a_table), }, }, =20 @@ -324,7 +335,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(MICLDO, micldo, ldo_a_table), + BCM59056_LDO_DESC(MICLDO, micldo, ldo_a_table), }, }, =20 @@ -332,7 +343,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(USBLDO, usbldo, ldo_a_table), + BCM59056_LDO_DESC(USBLDO, usbldo, ldo_a_table), }, }, =20 @@ -340,7 +351,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_LDO, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_LDO_DESC(VIBLDO, vibldo, ldo_c_table), + BCM59056_LDO_DESC(VIBLDO, vibldo, ldo_c_table), }, }, =20 @@ -348,7 +359,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(CSR, csr, dcdc_csr_ranges), + BCM59056_SR_DESC(CSR, csr, dcdc_csr_ranges), }, }, =20 @@ -356,7 +367,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), + BCM59056_SR_DESC(IOSR1, iosr1, dcdc_iosr1_ranges), }, }, =20 @@ -364,7 +375,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), + BCM59056_SR_DESC(IOSR2, iosr2, dcdc_iosr1_ranges), }, }, =20 @@ -372,7 +383,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(MSR, msr, dcdc_iosr1_ranges), + BCM59056_SR_DESC(MSR, msr, dcdc_iosr1_ranges), }, }, =20 @@ -380,7 +391,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), + BCM59056_SR_DESC(SDSR1, sdsr1, dcdc_sdsr1_ranges), }, }, =20 @@ -388,7 +399,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), + BCM59056_SR_DESC(SDSR2, sdsr2, dcdc_iosr1_ranges), }, }, =20 @@ -396,7 +407,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_SR, .regmap =3D BCM590XX_REG_REGMAP_PRI, .desc =3D { - BCM590XX_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), + BCM59056_SR_DESC(VSR, vsr, dcdc_iosr1_ranges), }, }, =20 @@ -404,7 +415,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), + BCM59056_LDO_DESC(GPLDO1, gpldo1, ldo_a_table), }, }, =20 @@ -412,7 +423,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), + BCM59056_LDO_DESC(GPLDO2, gpldo2, ldo_a_table), }, }, =20 @@ -420,7 +431,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), + BCM59056_LDO_DESC(GPLDO3, gpldo3, ldo_a_table), }, }, =20 @@ -428,7 +439,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), + BCM59056_LDO_DESC(GPLDO4, gpldo4, ldo_a_table), }, }, =20 @@ -436,7 +447,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), + BCM59056_LDO_DESC(GPLDO5, gpldo5, ldo_a_table), }, }, =20 @@ -444,7 +455,7 @@ static const struct bcm590xx_reg_info bcm590xx_regs[BCM= 590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_GPLDO, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), + BCM59056_LDO_DESC(GPLDO6, gpldo6, ldo_a_table), }, }, =20 @@ -452,11 +463,11 @@ static const struct bcm590xx_reg_info bcm590xx_regs[B= CM590XX_NUM_REGS] =3D { .type =3D BCM590XX_REG_TYPE_VBUS, .regmap =3D BCM590XX_REG_REGMAP_SEC, .desc =3D { - BCM590XX_REG_DESC(VBUS, vbus), + BCM59056_REG_DESC(VBUS, vbus), .ops =3D &bcm590xx_ops_vbus, .n_voltages =3D 1, .fixed_uV =3D 5000000, - .enable_reg =3D BCM590XX_OTG_CTRL, + .enable_reg =3D BCM59056_OTG_CTRL, .enable_mask =3D BCM590XX_VBUS_ENABLE, }, }, @@ -476,8 +487,8 @@ static int bcm590xx_probe(struct platform_device *pdev) return -ENOMEM; =20 pmu->mfd =3D bcm590xx; - pmu->n_regulators =3D BCM590XX_NUM_REGS; - pmu->regs =3D bcm590xx_regs; + pmu->n_regulators =3D BCM59056_NUM_REGS; + pmu->regs =3D bcm59056_regs; =20 platform_set_drvdata(pdev, pmu); =20 --=20 2.48.1 From nobody Tue Feb 10 02:59:25 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01D681F3D2A; Fri, 31 Jan 2025 18:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347249; cv=none; b=f24jtLrb9uDJwN4Zzkip2sR3SlOXSRUEF54pejUuDl4xvFPe110/ZA1SkHEGpGS4E+8k6pCgCziSW3ts/zv7Plc1SDJDzc3YOLxzZuxXxIwMpuAeOeaRlejhSI5SWp7foxRsEouXi6nLZUgrBhdKs8VgLpSqPLuwS1JZyIHEpzo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738347249; c=relaxed/simple; bh=pBCfGKkeGMipb9ovlUaMugCq3/Vs7bm2Pri7eB6WPKE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZDE04aQaxLmUo0cUelcMQUcN+d2v/m7Ay2c5yjI1FPqZ7PCffSu2wz/H7/vBZzhlCN8PuJzkxY/8QBTPbjGOISipFj7TB9UP097jof5l9lGCSl6wCu+TPD0p88V1JCgbdgDnt4qdxgc/8mOnNCtxHCYCVk/2CacTRGOiLvIFVQo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=g75rZiLi; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g75rZiLi" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-5d3d0205bd5so3416315a12.3; 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=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Fax9kdvN216AxxcqVrOAKn7muyCEAfP6SvOfhWX/p7o=; b=g75rZiLiU7i91won0Kt6lyDHy8wd4Z4cvE81N2cBifgYM9bYQqkakFfACAZyFiJoCN WJYuqZYVpuqlmWy6MoGInMDOVNysshrJ+8Bi8g5iJdB4j12FJWTw9Xvh1gjEcUyg2URP 6NYhK0Z41T/bekbk28N3C1oF6tAyw9jFzJmjqMiHblHswMzKgCp2ZMjQKnAP4IDcuK3o 3S9gWmabjkcC8Id1mxWSSmcD6SnyOb+wXhjICRQmF7wgBBbXL6yYGm98hxfLv3225Gcn 8yYhI/R2fwjalS0ycUqcaSduZlbn3pY4OOTtAfeRXoilnYF0zYWcoSVGG0hHA0KQJLa4 r7dQ== 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=QVhPizhoFlyaPlwbYXsH03A88pXXD0On8kWs7IxHBxjUL9FOwPxP6Kf+KqfFnfUchG gMxv3/5WYu7ZnseaUFAVHPb8ADtGJAZk3DSVFiJLa+LS4iL3f3fJlSMlaHzZj1o1hj+k ANsTbpB+uQEswjEIkxhJkr1u+2bAm47CTHYOwhnDOwdavERRNqVLlr7HutUAm3ncoaV+ 1j1qyzwxFOAqaS6KHgCqE7g0znpHkf6GKN8VZyX7O7eaV04F/V+/l7gRvQJ4FVBxznX8 sORaP9YWDNxZWG16RmHEwhbXTMMVyLrWFIR2qW04A0eINFgeHnhIkyjAB11Lv/YbTUeW +yYw== X-Forwarded-Encrypted: i=1; AJvYcCUC2cEvRQgjNnwmq3JnKnkUkAg+xJGXiVajILiAdRNjAg2FFvx+dKAS7csfUYHXE8KArQQcM1fsc9Tf@vger.kernel.org, AJvYcCWNIA70wPShB50j1E2yLlrvus4Rnl4QJdL46mTsGOiNn2dqfz0/S/3dcpCLYyKjAgPplJwx9fRePwfxrXIR@vger.kernel.org X-Gm-Message-State: AOJu0YwOd42SyTTqBq9LjVPvYRrwiOU4rJYujCURLtnaKe/VGrsXW3ZU klbv5l4udo0H/59zgzba1YRLMHrnDFurp/41r3IbSrIP8w5dnKKlfdw1RA== X-Gm-Gg: ASbGnctTy0iY7q7oHMJiq8+hYDP9YWXY8Mvc6bHsnneAfNWE5RCkmllReNyd4s5onrw /lGUR6f9EaqyDzvbOeImO6Z9Tmehv6VQvdwiNms8xSOTe9rt9eC0eoiD8YNL1Ev/f0wS00uq4dI VEB8uNhmBBB5jJ9i3fPJQvldbeqCUE5ugj66Ujf2ck3+4a3/2LXdoqGWjymt9GHZDiwA86gjRiF A4Cyekzw8C6lRtNoKl+yM+SUg0riijALTjIHCDn5fzjNy051YjhNFsM5XMKFEawjQuQQn3nwPWl DBUTisgwTKmKCys5SgOgSbtep2yus96jEFNj+zxz94iF8p2MqW62uRq8cyeKVA== 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <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= 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/bcm= 590xx-regulator.c index 1cc46b32572beae24890ede9edbf0fb460bf31cd..73219fdb3c92948e8796f5765ba= 429878d84d69d 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 = =3D { #define BCM59056_SR_DESC(_name, _name_lower, _ranges) \ BCM590XX_SR_DESC(BCM59056, bcm59056, _name, _name_lower, _ranges) =20 +#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 */ =20 /* I2C slave 0 registers */ @@ -473,6 +480,376 @@ static const struct bcm590xx_reg_info bcm59056_regs[B= CM59056_NUM_REGS] =3D { }, }; =20 +/* 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[] =3D { + 1200000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group 2: supported voltages in microvolts */ +static const unsigned int bcm59054_ldo_2_table[] =3D { + 3100000, 1800000, 2500000, 2700000, 2800000, + 2900000, 3000000, 3300000, +}; + +/* LDO group 3: supported voltages in microvolts */ +static const unsigned int bcm59054_ldo_3_table[] =3D { + 1000000, 1107000, 1143000, 1214000, 1250000, + 1464000, 1500000, 1786000, +}; + +/* DCDC group SR: supported voltages in microvolts */ +static const struct linear_range bcm59054_dcdc_sr_ranges[] =3D { + 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[] =3D { + 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[] =3D { + 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] =3D= { + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(RFLDO, rfldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(CAMLDO1, camldo1, ldo_2_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(CAMLDO2, camldo2, ldo_2_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(SIMLDO1, simldo1, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(SIMLDO2, simldo2, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(SDLDO, sdldo, ldo_2_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(SDXLDO, sdxldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(MMCLDO1, mmcldo1, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(MMCLDO2, mmcldo2, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(AUDLDO, audldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(MICLDO, micldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(USBLDO, usbldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_LDO, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_LDO_DESC(VIBLDO, vibldo, ldo_2_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(CSR, csr, dcdc_csr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(IOSR1, iosr1, dcdc_sr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(IOSR2, iosr2, dcdc_sr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(MMSR, mmsr, dcdc_sr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(SDSR1, sdsr1, dcdc_sr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(SDSR2, sdsr2, dcdc_sr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_SR, + .regmap =3D BCM590XX_REG_REGMAP_PRI, + .desc =3D { + BCM59054_SR_DESC(VSR, vsr, dcdc_vsr_ranges), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(GPLDO1, gpldo1, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(GPLDO2, gpldo2, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(GPLDO3, gpldo3, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(TCXLDO, tcxldo, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(LVLDO1, lvldo1, ldo_1_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_GPLDO, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_LDO_DESC(LVLDO2, lvldo2, ldo_3_table), + }, + }, + + { + .type =3D BCM590XX_REG_TYPE_VBUS, + .regmap =3D BCM590XX_REG_REGMAP_SEC, + .desc =3D { + BCM59054_REG_DESC(VBUS, vbus), + .ops =3D &bcm590xx_ops_vbus, + .n_voltages =3D 1, + .fixed_uV =3D 5000000, + .enable_reg =3D BCM59054_OTG_CTRL, + .enable_mask =3D BCM590XX_VBUS_ENABLE, + }, + }, +}; + static int bcm590xx_probe(struct platform_device *pdev) { struct bcm590xx *bcm590xx =3D dev_get_drvdata(pdev->dev.parent); @@ -487,8 +864,21 @@ static int bcm590xx_probe(struct platform_device *pdev) return -ENOMEM; =20 pmu->mfd =3D bcm590xx; - pmu->n_regulators =3D BCM59056_NUM_REGS; - pmu->regs =3D bcm59056_regs; + + switch (pmu->mfd->device_type) { + case BCM59054_TYPE: + pmu->n_regulators =3D BCM59054_NUM_REGS; + pmu->regs =3D bcm59054_regs; + break; + case BCM59056_TYPE: + pmu->n_regulators =3D BCM59056_NUM_REGS; + pmu->regs =3D bcm59056_regs; + break; + default: + dev_err(bcm590xx->dev, + "unknown device type, could not initialize"); + return -EINVAL; + } =20 platform_set_drvdata(pdev, pmu); =20 --=20 2.48.1