Message ID | 7df309d19cf7f311afe736c95666afe8697e1e5a.1555077720.git.leonard.crestez@nxp.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | imx8mm-evk: Enable CPU freq and voltage switching | expand |
On Fri, 2019-04-12 at 14:10 +0000, Leonard Crestez wrote: > The BUCK2 regulator is used for cpufreq voltage control, otherwise > configuration is mostly static. > > This uses the newly-implemented rohm,reset-snvs-powered property to > properly handle the SNVS state of imx8mm. > > Between BD71837 and BD71847 the BUCK3/4 regulators were removed but > datasheet and board schematics kept the names for BUCK5/6/7/8. The > driver however renumbered 5/6/7/8 to 3/4/5/6. Use the names from DT > bindings and add comments to signal this. Yep. I had hard time when deciding the naming for bucks. But I found leaving the gap in buck names confusing, it makes only sense if BD71847 user also knows the BD71837. Also, I had only seen the draft version of BD71847 data-sheet (draft derived from BD71837 data-sheet) back then. I thought the naming of bucks would be changed in final version... > Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Acked-By: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Br, Matti Vaittinen
On Fri, Apr 12, 2019 at 02:10:05PM +0000, Leonard Crestez wrote: > The BUCK2 regulator is used for cpufreq voltage control, otherwise > configuration is mostly static. > > This uses the newly-implemented rohm,reset-snvs-powered property to > properly handle the SNVS state of imx8mm. > > Between BD71837 and BD71847 the BUCK3/4 regulators were removed but > datasheet and board schematics kept the names for BUCK5/6/7/8. The > driver however renumbered 5/6/7/8 to 3/4/5/6. Use the names from DT > bindings and add comments to signal this. > > Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> > --- > arch/arm64/boot/dts/freescale/imx8mm-evk.dts | 145 +++++++++++++++++++ > 1 file changed, 145 insertions(+) > > diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts > index 2d5d89475b76..098ccaefd169 100644 > --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts > +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts > @@ -37,10 +37,14 @@ > gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; > enable-active-high; > }; > }; > > +&A53_0 { > + cpu-supply = <&buck2_reg>; > +}; > + > &fec1 { > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_fec1>; > phy-mode = "rgmii-id"; > phy-handle = <ðphy0>; > @@ -93,10 +97,138 @@ > pinctrl-0 = <&pinctrl_wdog>; > fsl,ext-reset-output; > status = "okay"; > }; > > +&i2c1 { > + clock-frequency = <400000>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_i2c1>; > + status = "okay"; > + > + pmic@4b { > + reg = <0x4b>; > + compatible = "rohm,bd71847"; We usually start properties with 'compatible' than anything else. So please move 'reg' afterwards. > + pinctrl-0 = <&pinctrl_pmic>; > + interrupt-parent = <&gpio1>; > + interrupts = <3 GPIO_ACTIVE_LOW>; > + rohm,reset-snvs-powered; > + > + regulators { > + #address-cells = <1>; > + #size-cells = <0>; Looking at bindings doc, I'm not sure if we want the artificial address cell (unit address and 'reg' property). I think node names like regulator-xxx should just work? Shawn > + > + buck1_reg: regulator@0 { > + reg = <0>; > + regulator-compatible = "BUCK1"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + }; > + > + buck2_reg: regulator@1 { > + reg = <1>; > + regulator-compatible = "BUCK2"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + rohm,dvs-run-voltage = <1000000>; > + rohm,dvs-idle-voltage = <900000>; > + }; > + > + buck3_reg: regulator@2 { > + // BUCK5 in datasheet > + reg = <2>; > + regulator-compatible = "BUCK3"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1350000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + buck4_reg: regulator@3 { > + // BUCK6 in datasheet > + reg = <3>; > + regulator-compatible = "BUCK4"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + buck5_reg: regulator@4 { > + // BUCK7 in datasheet > + reg = <4>; > + regulator-compatible = "BUCK5"; > + regulator-min-microvolt = <1605000>; > + regulator-max-microvolt = <1995000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + buck6_reg: regulator@5 { > + // BUCK8 in datasheet > + reg = <5>; > + regulator-compatible = "BUCK6"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1400000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo1_reg: regulator@6 { > + reg = <6>; > + regulator-compatible = "LDO1"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo2_reg: regulator@7 { > + reg = <7>; > + regulator-compatible = "LDO2"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo3_reg: regulator@8 { > + reg = <8>; > + regulator-compatible = "LDO3"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo4_reg: regulator@9 { > + reg = <9>; > + regulator-compatible = "LDO4"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ldo6_reg: regulator@11 { > + reg = <11>; > + regulator-compatible = "LDO6"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + }; > + }; > +}; > + > &iomuxc { > pinctrl-names = "default"; > > pinctrl_fec1: fec1grp { > fsl,pins = < > @@ -122,10 +254,23 @@ > fsl,pins = < > MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16 0x19 > >; > }; > > + pinctrl_i2c1: i2c1grp { > + fsl,pins = < > + MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3 > + MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3 > + >; > + }; > + > + pinctrl_pmic: pmicirq { > + fsl,pins = < > + MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41 > + >; > + }; > + > pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc { > fsl,pins = < > MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 > >; > }; > -- > 2.17.1 >
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts index 2d5d89475b76..098ccaefd169 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dts +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dts @@ -37,10 +37,14 @@ gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; +&A53_0 { + cpu-supply = <&buck2_reg>; +}; + &fec1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec1>; phy-mode = "rgmii-id"; phy-handle = <ðphy0>; @@ -93,10 +97,138 @@ pinctrl-0 = <&pinctrl_wdog>; fsl,ext-reset-output; status = "okay"; }; +&i2c1 { + clock-frequency = <400000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c1>; + status = "okay"; + + pmic@4b { + reg = <0x4b>; + compatible = "rohm,bd71847"; + pinctrl-0 = <&pinctrl_pmic>; + interrupt-parent = <&gpio1>; + interrupts = <3 GPIO_ACTIVE_LOW>; + rohm,reset-snvs-powered; + + regulators { + #address-cells = <1>; + #size-cells = <0>; + + buck1_reg: regulator@0 { + reg = <0>; + regulator-compatible = "BUCK1"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + regulator-boot-on; + regulator-always-on; + regulator-ramp-delay = <1250>; + }; + + buck2_reg: regulator@1 { + reg = <1>; + regulator-compatible = "BUCK2"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + regulator-boot-on; + regulator-always-on; + regulator-ramp-delay = <1250>; + rohm,dvs-run-voltage = <1000000>; + rohm,dvs-idle-voltage = <900000>; + }; + + buck3_reg: regulator@2 { + // BUCK5 in datasheet + reg = <2>; + regulator-compatible = "BUCK3"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1350000>; + regulator-boot-on; + regulator-always-on; + }; + + buck4_reg: regulator@3 { + // BUCK6 in datasheet + reg = <3>; + regulator-compatible = "BUCK4"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + buck5_reg: regulator@4 { + // BUCK7 in datasheet + reg = <4>; + regulator-compatible = "BUCK5"; + regulator-min-microvolt = <1605000>; + regulator-max-microvolt = <1995000>; + regulator-boot-on; + regulator-always-on; + }; + + buck6_reg: regulator@5 { + // BUCK8 in datasheet + reg = <5>; + regulator-compatible = "BUCK6"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1400000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_reg: regulator@6 { + reg = <6>; + regulator-compatible = "LDO1"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo2_reg: regulator@7 { + reg = <7>; + regulator-compatible = "LDO2"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo3_reg: regulator@8 { + reg = <8>; + regulator-compatible = "LDO3"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo4_reg: regulator@9 { + reg = <9>; + regulator-compatible = "LDO4"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo6_reg: regulator@11 { + reg = <11>; + regulator-compatible = "LDO6"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; + &iomuxc { pinctrl-names = "default"; pinctrl_fec1: fec1grp { fsl,pins = < @@ -122,10 +254,23 @@ fsl,pins = < MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16 0x19 >; }; + pinctrl_i2c1: i2c1grp { + fsl,pins = < + MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3 + MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3 + >; + }; + + pinctrl_pmic: pmicirq { + fsl,pins = < + MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41 + >; + }; + pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc { fsl,pins = < MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 >; };
The BUCK2 regulator is used for cpufreq voltage control, otherwise configuration is mostly static. This uses the newly-implemented rohm,reset-snvs-powered property to properly handle the SNVS state of imx8mm. Between BD71837 and BD71847 the BUCK3/4 regulators were removed but datasheet and board schematics kept the names for BUCK5/6/7/8. The driver however renumbered 5/6/7/8 to 3/4/5/6. Use the names from DT bindings and add comments to signal this. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> --- arch/arm64/boot/dts/freescale/imx8mm-evk.dts | 145 +++++++++++++++++++ 1 file changed, 145 insertions(+)