This commit adds different voltage regulators. Tested: This board is tested using the simics simulator. Signed-off-by: Ninad Palsule <ninad@xxxxxxxxxxxxx> --- .../dts/aspeed/aspeed-bmc-ibm-system1.dts | 266 ++++++++++++++++++ 1 file changed, 266 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-system1.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-system1.dts index 0557bff9f36a..b8e7e52d4600 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-system1.dts +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-system1.dts @@ -114,10 +114,127 @@ vga_memory: region@bf000000 { }; }; + iio-hwmon { + compatible = "iio-hwmon"; + io-channels = <&p12v_vd 0>, <&p5v_aux_vd 0>, + <&p5v_bmc_aux_vd 0>, <&p3v3_aux_vd 0>, + <&p3v3_bmc_aux_vd 0>, <&p1v8_bmc_aux_vd 0>, + <&adc1 4>, <&adc0 2>, <&adc1 0>, + <&p2V5_aux_vd 0>, <&adc1 7>; + }; + + p12v_vd: voltage_divider1 { + compatible = "voltage-divider"; + io-channels = <&adc1 3>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 1127/127 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <15>; + full-ohms = <133>; + }; + + p5v_aux_vd: voltage_divider2 { + compatible = "voltage-divider"; + io-channels = <&adc1 5>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 1365/365 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <50>; + full-ohms = <187>; + }; + + p5v_bmc_aux_vd: voltage_divider3 { + compatible = "voltage-divider"; + io-channels = <&adc0 3>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 1365/365 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <50>; + full-ohms = <187>; + }; + + p3v3_aux_vd: voltage_divider4 { + compatible = "voltage-divider"; + io-channels = <&adc1 2>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 1698/698 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <14>; + full-ohms = <34>; + }; + + p3v3_bmc_aux_vd: voltage_divider5 { + compatible = "voltage-divider"; + io-channels = <&adc0 7>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 1698/698 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <14>; + full-ohms = <34>; + }; + + p1v8_bmc_aux_vd: voltage_divider6 { + compatible = "voltage-divider"; + io-channels = <&adc0 6>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 4000/3000 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <3>; + full-ohms = <4>; + }; + + p2V5_aux_vd: voltage_divider7 { + compatible = "voltage-divider"; + io-channels = <&adc1 1>; + #io-channel-cells = <1>; + + /* Scale the system voltage by 2100/1100 to fit the ADC range. + * Use small nominator to prevent integer overflow. + */ + output-ohms = <11>; + full-ohms = <21>; + }; + + p1v8_bmc_aux: fixedregulator-p1v8_bmc_aux { + compatible = "regulator-fixed"; + regulator-name = "p1v8_bmc_aux"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; +}; + +&adc0 { + status = "okay"; + vref-supply = <&p1v8_bmc_aux>; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_adc0_default + &pinctrl_adc1_default + &pinctrl_adc2_default + &pinctrl_adc3_default + &pinctrl_adc4_default + &pinctrl_adc5_default + &pinctrl_adc6_default + &pinctrl_adc7_default>; }; &adc1 { status = "okay"; + vref-supply = <&p1v8_bmc_aux>; + aspeed,battery-sensing; aspeed,int-vref-microvolt = <2500000>; pinctrl-names = "default"; @@ -250,10 +367,32 @@ &kcs3 { &i2c0 { status = "okay"; + + regulator@60 { + compatible = "maxim,max8952"; + reg = <0x60>; + + max8952,default-mode = <0>; + max8952,dvs-mode-microvolt = <1250000>, <1200000>, + <1050000>, <950000>; + max8952,sync-freq = <0>; + max8952,ramp-speed = <0>; + + regulator-name = "VR_1.0V"; + regulator-min-microvolt = <770000>; + regulator-max-microvolt = <1400000>; + regulator-always-on; + regulator-boot-on; + }; }; &i2c1 { status = "okay"; + + regulator@42 { + compatible = "infineon,ir38263"; + reg = <0x42>; + }; }; &i2c2 { @@ -327,6 +466,21 @@ &i2c4 { &i2c5 { status = "okay"; + + regulator@3a { + compatible = "maxim,max5970"; + reg = <0x3a>; + }; + + regulator@42 { + compatible = "infineon,ir38263"; + reg = <0x42>; + }; + + regulator@43 { + compatible = "infineon,ir38060"; + reg = <0x43>; + }; }; &i2c6 { @@ -423,6 +577,11 @@ i2c7mux0chn3: i2c@3 { #address-cells = <1>; #size-cells = <0>; reg = <3>; + + regulator@58 { + compatible = "mps,mp2973"; + reg = <0x58>; + }; }; i2c7mux0chn4: i2c@4 { @@ -435,6 +594,11 @@ i2c7mux0chn5: i2c@5 { #address-cells = <1>; #size-cells = <0>; reg = <5>; + + regulator@40 { + compatible = "infineon,tda38640"; + reg = <0x40>; + }; }; i2c7mux0chn6: i2c@6 { @@ -466,12 +630,37 @@ i2c8mux0chn0: i2c@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; + + regulator@58 { + compatible = "mps,mp2971"; + reg = <0x58>; + }; }; i2c8mux0chn1: i2c@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; + + regulator@40 { + compatible = "infineon,tda38640"; + reg = <0x40>; + }; + + regulator@41 { + compatible = "infineon,tda38640"; + reg = <0x41>; + }; + + regulator@58 { + compatible = "mps,mp2971"; + reg = <0x58>; + }; + + regulator@5b { + compatible = "mps,mp2971"; + reg = <0x5b>; + }; }; i2c8mux0chn2: i2c@2 { @@ -565,12 +754,44 @@ i2c8mux0chn7: i2c@7 { #address-cells = <1>; #size-cells = <0>; reg = <7>; + + regulator@40 { + compatible = "infineon,ir38060"; + reg = <0x40>; + }; }; }; }; &i2c9 { status = "okay"; + + regulator@40 { + compatible = "infineon,ir38263"; + reg = <0x40>; + }; + + regulator@41 { + compatible = "infineon,ir38263"; + reg = <0x41>; + }; + + regulator@60 { + compatible = "maxim,max8952"; + reg = <0x60>; + + max8952,default-mode = <0>; + max8952,dvs-mode-microvolt = <1250000>, <1200000>, + <1050000>, <950000>; + max8952,sync-freq = <0>; + max8952,ramp-speed = <0>; + + regulator-name = "VR_1.2V"; + regulator-min-microvolt = <770000>; + regulator-max-microvolt = <1400000>; + regulator-always-on; + regulator-boot-on; + }; }; &i2c11 { @@ -583,6 +804,11 @@ &i2c12 { &i2c13 { status = "okay"; + + regulator@41 { + compatible = "infineon,ir38263"; + reg = <0x41>; + }; }; &i2c14 { @@ -618,6 +844,11 @@ i2c14mux0chn3: i2c@3 { #address-cells = <1>; #size-cells = <0>; reg = <3>; + + regulator@58 { + compatible = "mps,mp2973"; + reg = <0x58>; + }; }; i2c14mux0chn4: i2c@4 { @@ -630,6 +861,11 @@ i2c14mux0chn5: i2c@5 { #address-cells = <1>; #size-cells = <0>; reg = <5>; + + regulator@40 { + compatible = "infineon,tda38640"; + reg = <0x40>; + }; }; i2c14mux0chn6: i2c@6 { @@ -661,12 +897,37 @@ i2c15mux0chn0: i2c@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; + + regulator@58 { + compatible = "mps,mp2971"; + reg = <0x58>; + }; }; i2c15mux0chn1: i2c@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; + + regulator@40 { + compatible = "infineon,tda38640"; + reg = <0x40>; + }; + + regulator@41 { + compatible = "infineon,tda38640"; + reg = <0x41>; + }; + + regulator@58 { + compatible = "mps,mp2971"; + reg = <0x58>; + }; + + regulator@5b { + compatible = "mps,mp2971"; + reg = <0x5b>; + }; }; i2c15mux0chn2: i2c@2 { @@ -760,6 +1021,11 @@ i2c15mux0chn7: i2c@7 { #address-cells = <1>; #size-cells = <0>; reg = <7>; + + regulator@40 { + compatible = "infineon,ir38060"; + reg = <0x40>; + }; }; }; }; -- 2.39.2