mbox series

[RESEND,v2,0/4] Add Support for MediaTek PMIC MT6359 Regulator

Message ID 1592808050-14260-1-git-send-email-Wen.Su@mediatek.com (mailing list archive)
Headers show
Series Add Support for MediaTek PMIC MT6359 Regulator | expand

Message

Wen Su June 22, 2020, 6:40 a.m. UTC
This patchset add support to MT6359 PMIC regulator. MT6359 is primary
PMIC for MT6779 platform.

Changes since v2:
- remove open coding in the mt6359 regulator for volt_table type regulators
- refine coding style in the mt6359 regulator to avoid using ternery operator
- remove unnecessary reject operation in mt6359 regulator set mode function

wen.su (4):
  dt-bindings: regulator: Add document for MT6359 regulator
  mfd: Add for PMIC MT6359 registers definition
  regulator: mt6359: Add support for MT6359 regulator
  arm64: dts: mt6359: add PMIC MT6359 related nodes

 .../bindings/regulator/mt6359-regulator.txt        |  59 ++
 arch/arm64/boot/dts/mediatek/mt6359.dtsi           | 312 ++++++++
 drivers/regulator/Kconfig                          |   9 +
 drivers/regulator/Makefile                         |   1 +
 drivers/regulator/mt6359-regulator.c               | 859 +++++++++++++++++++++
 include/linux/mfd/mt6359/registers.h               | 531 +++++++++++++
 include/linux/regulator/mt6359-regulator.h         |  58 ++
 7 files changed, 1829 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/regulator/mt6359-regulator.txt
 create mode 100644 arch/arm64/boot/dts/mediatek/mt6359.dtsi
 create mode 100644 drivers/regulator/mt6359-regulator.c
 create mode 100644 include/linux/mfd/mt6359/registers.h
 create mode 100644 include/linux/regulator/mt6359-regulator.h

Comments

Mark Brown June 22, 2020, 1:31 p.m. UTC | #1
On Mon, Jun 22, 2020 at 02:40:49PM +0800, Wen Su wrote:
> From: "Wen Su" <wen.su@mediatek.com>
> 
> The MT6359 is a regulator found on boards based on MediaTek MT6779 and
> probably other SoCs. It is a so called pmic and connects as a slave to
> SoC using SPI, wrapped inside the pmic-wrapper.

Acked-by: Mark Brown <broonie@kernel.org>
Matthias Brugger June 22, 2020, 2:29 p.m. UTC | #2
On 22/06/2020 13:50, Wen Su wrote:
> Hi Matthias,
> 
> On Mon, 2020-06-22 at 12:12 +0200, Matthias Brugger wrote:
>>
>> On 22/06/2020 08:40, Wen Su wrote:
>>> From: "Wen Su" <wen.su@mediatek.com>
>>>
>>> add PMIC MT6359 related nodes which is for MT6779 platform
>>>
>>> Signed-off-by: Wen Su <wen.su@mediatek.com>
>>> ---
>>>  arch/arm64/boot/dts/mediatek/mt6359.dtsi | 306 +++++++++++++++++++++++++++++++
>>>  1 file changed, 306 insertions(+)
>>>  create mode 100644 arch/arm64/boot/dts/mediatek/mt6359.dtsi
>>>
>>> diff --git a/arch/arm64/boot/dts/mediatek/mt6359.dtsi b/arch/arm64/boot/dts/mediatek/mt6359.dtsi
>>> new file mode 100644
>>> index 0000000..4cafe1f
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/mediatek/mt6359.dtsi
>>> @@ -0,0 +1,306 @@
>>> +// SPDX-License-Identifier: GPL-2.0
>>> +/*
>>> + * Copyright (c) 2019 MediaTek Inc.
>>> + */
>>> +
>>> +&pwrap {
>>> +	pmic: pmic {
>>> +		mt6359regulator: mt6359regulator {
>>
>> you are missing:
>> compatible = "mediatek,mt6359";
>> don't you?
> 
> I think this compatible string is for MFD driver.
> And the MFD instantiate the regulator driver when it probes.
> So this regulator patch set remove this compatible string.
> Is it better to add this compatible string in this patch set ?
> Thanks for your suggestion.
> 

Did you test the patch, does the regulator get's initialized? From what I
understand pmic wrapper is looking for a compatible string of the PMIC to get
the pwrap_slv_type.

If this is not the case, then please fix the binding documentation.

Regards,
Matthias

>>
>> Regards,
>> Matthias
>>
>>> +			compatible = "mediatek,mt6359-regulator";
>>> +			mt6359_vs1_buck_reg: buck_vs1 {
>>> +				regulator-name = "vs1";
>>> +				regulator-min-microvolt = <800000>;
>>> +				regulator-max-microvolt = <2200000>;
>>> +				regulator-enable-ramp-delay = <0>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vgpu11_buck_reg: buck_vgpu11 {
>>> +				regulator-name = "vgpu11";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <5000>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-always-on;
>>> +				regulator-allowed-modes = <0 1 2>;
>>> +			};
>>> +			mt6359_vmodem_buck_reg: buck_vmodem {
>>> +				regulator-name = "vmodem";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1100000>;
>>> +				regulator-ramp-delay = <10760>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vpu_buck_reg: buck_vpu {
>>> +				regulator-name = "vpu";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <5000>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-allowed-modes = <0 1 2>;
>>> +			};
>>> +			mt6359_vcore_buck_reg: buck_vcore {
>>> +				regulator-name = "vcore";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <5000>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-always-on;
>>> +				regulator-allowed-modes = <0 1 2>;
>>> +			};
>>> +			mt6359_vs2_buck_reg: buck_vs2 {
>>> +				regulator-name = "vs2";
>>> +				regulator-min-microvolt = <800000>;
>>> +				regulator-max-microvolt = <1600000>;
>>> +				regulator-enable-ramp-delay = <0>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vpa_buck_reg: buck_vpa {
>>> +				regulator-name = "vpa";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <3650000>;
>>> +				regulator-enable-ramp-delay = <300>;
>>> +			};
>>> +			mt6359_vproc2_buck_reg: buck_vproc2 {
>>> +				regulator-name = "vproc2";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <7500>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-always-on;
>>> +				regulator-allowed-modes = <0 1 2>;
>>> +			};
>>> +			mt6359_vproc1_buck_reg: buck_vproc1 {
>>> +				regulator-name = "vproc1";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <7500>;
>>> +				regulator-enable-ramp-delay = <200>;
>>> +				regulator-always-on;
>>> +				regulator-allowed-modes = <0 1 2>;
>>> +			};
>>> +			mt6359_vcore_sshub_buck_reg: buck_vcore_sshub {
>>> +				regulator-name = "vcore_sshub";
>>> +				regulator-min-microvolt = <400000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +			};
>>> +			mt6359_vaud18_ldo_reg: ldo_vaud18 {
>>> +				regulator-name = "vaud18";
>>> +				regulator-min-microvolt = <1800000>;
>>> +				regulator-max-microvolt = <1800000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vsim1_ldo_reg: ldo_vsim1 {
>>> +				regulator-name = "vsim1";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <3100000>;
>>> +				regulator-enable-ramp-delay = <480>;
>>> +			};
>>> +			mt6359_vibr_ldo_reg: ldo_vibr {
>>> +				regulator-name = "vibr";
>>> +				regulator-min-microvolt = <1200000>;
>>> +				regulator-max-microvolt = <3300000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vrf12_ldo_reg: ldo_vrf12 {
>>> +				regulator-name = "vrf12";
>>> +				regulator-min-microvolt = <1100000>;
>>> +				regulator-max-microvolt = <1300000>;
>>> +				regulator-enable-ramp-delay = <120>;
>>> +			};
>>> +			mt6359_vusb_ldo_reg: ldo_vusb {
>>> +				regulator-name = "vusb";
>>> +				regulator-min-microvolt = <3000000>;
>>> +				regulator-max-microvolt = <3000000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vsram_proc2_ldo_reg: ldo_vsram_proc2 {
>>> +				regulator-name = "vsram_proc2";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <7500>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vio18_ldo_reg: ldo_vio18 {
>>> +				regulator-name = "vio18";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <1900000>;
>>> +				regulator-enable-ramp-delay = <960>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vcamio_ldo_reg: ldo_vcamio {
>>> +				regulator-name = "vcamio";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <1900000>;
>>> +				regulator-enable-ramp-delay = <1920>;
>>> +			};
>>> +			mt6359_vcn18_ldo_reg: ldo_vcn18 {
>>> +				regulator-name = "vcn18";
>>> +				regulator-min-microvolt = <1800000>;
>>> +				regulator-max-microvolt = <1800000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vfe28_ldo_reg: ldo_vfe28 {
>>> +				regulator-name = "vfe28";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <2800000>;
>>> +				regulator-enable-ramp-delay = <120>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vcn13_ldo_reg: ldo_vcn13 {
>>> +				regulator-name = "vcn13";
>>> +				regulator-min-microvolt = <900000>;
>>> +				regulator-max-microvolt = <1300000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vcn33_1_bt_ldo_reg: ldo_vcn33_1_bt {
>>> +				regulator-name = "vcn33_1_bt";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <3500000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vcn33_1_wifi_ldo_reg: ldo_vcn33_1_wifi {
>>> +				regulator-name = "vcn33_1_wifi";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <3500000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vaux18_ldo_reg: ldo_vaux18 {
>>> +				regulator-name = "vaux18";
>>> +				regulator-min-microvolt = <1800000>;
>>> +				regulator-max-microvolt = <1800000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vsram_others_ldo_reg: ldo_vsram_others {
>>> +				regulator-name = "vsram_others";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <5000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vefuse_ldo_reg: ldo_vefuse {
>>> +				regulator-name = "vefuse";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <2000000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vxo22_ldo_reg: ldo_vxo22 {
>>> +				regulator-name = "vxo22";
>>> +				regulator-min-microvolt = <1800000>;
>>> +				regulator-max-microvolt = <2200000>;
>>> +				regulator-enable-ramp-delay = <120>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vrfck_ldo_reg: ldo_vrfck {
>>> +				regulator-name = "vrfck";
>>> +				regulator-min-microvolt = <1500000>;
>>> +				regulator-max-microvolt = <1700000>;
>>> +				regulator-enable-ramp-delay = <480>;
>>> +			};
>>> +			mt6359_vbif28_ldo_reg: ldo_vbif28 {
>>> +				regulator-name = "vbif28";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <2800000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vio28_ldo_reg: ldo_vio28 {
>>> +				regulator-name = "vio28";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <3300000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vemc_ldo_reg: ldo_vemc {
>>> +				regulator-name = "vemc";
>>> +				regulator-min-microvolt = <2900000>;
>>> +				regulator-max-microvolt = <3300000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vcn33_2_bt_ldo_reg: ldo_vcn33_2_bt {
>>> +				regulator-name = "vcn33_2_bt";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <3500000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vcn33_2_wifi_ldo_reg: ldo_vcn33_2_wifi {
>>> +				regulator-name = "vcn33_2_wifi";
>>> +				regulator-min-microvolt = <2800000>;
>>> +				regulator-max-microvolt = <3500000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_va12_ldo_reg: ldo_va12 {
>>> +				regulator-name = "va12";
>>> +				regulator-min-microvolt = <1200000>;
>>> +				regulator-max-microvolt = <1300000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_va09_ldo_reg: ldo_va09 {
>>> +				regulator-name = "va09";
>>> +				regulator-min-microvolt = <800000>;
>>> +				regulator-max-microvolt = <1200000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vrf18_ldo_reg: ldo_vrf18 {
>>> +				regulator-name = "vrf18";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <1810000>;
>>> +				regulator-enable-ramp-delay = <120>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vsram_md_ldo_reg: ldo_vsram_md {
>>> +				regulator-name = "vsram_md";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <1100000>;
>>> +				regulator-ramp-delay = <10760>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vufs_ldo_reg: ldo_vufs {
>>> +				regulator-name = "vufs";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <1900000>;
>>> +				regulator-enable-ramp-delay = <1920>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vm18_ldo_reg: ldo_vm18 {
>>> +				regulator-name = "vm18";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <1900000>;
>>> +				regulator-enable-ramp-delay = <1920>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vbbck_ldo_reg: ldo_vbbck {
>>> +				regulator-name = "vbbck";
>>> +				regulator-min-microvolt = <1100000>;
>>> +				regulator-max-microvolt = <1200000>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +			};
>>> +			mt6359_vsram_proc1_ldo_reg: ldo_vsram_proc1 {
>>> +				regulator-name = "vsram_proc1";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +				regulator-ramp-delay = <7500>;
>>> +				regulator-enable-ramp-delay = <240>;
>>> +				regulator-always-on;
>>> +			};
>>> +			mt6359_vsim2_ldo_reg: ldo_vsim2 {
>>> +				regulator-name = "vsim2";
>>> +				regulator-min-microvolt = <1700000>;
>>> +				regulator-max-microvolt = <3100000>;
>>> +				regulator-enable-ramp-delay = <480>;
>>> +			};
>>> +			mt6359_vsram_others_sshub_ldo: ldo_vsram_others_sshub {
>>> +				regulator-name = "vsram_others_sshub";
>>> +				regulator-min-microvolt = <500000>;
>>> +				regulator-max-microvolt = <1193750>;
>>> +			};
>>> +		};
>>> +	};
>>> +};
>>>
>