Forums › Devices › OSD32MP15x › Configure OSD32MP15x for 1.8V I/O operation
Tagged: OSD32MP15x 1.8V
Hi,
We are trying to enable 1.8V on our custom board based on OSD32MP157F SiP.
We are not using MicroSD card at sdmmc1. Only using eMMC at sdmmc2 and WiFi module LBEE5HY1MW at sdmmc3.
We’ve made all the required changes in hardware, PMIC NVM registers and device tree but its not working and appears to be stuck at u-boot.
We’ve made following hardware changes (with respect to OSD32MP1 RED board)
We’ve made following kernel and tfa devcie tree changes. U-Boot device tree is same as Kernel device tree.
Kernel device tree changes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | /* Kernel device tree changes code snippet */ /* PMIC */ &i2c4{ u-boot,dm-pre-reloc; pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c4_pins_z_mx>; pinctrl-1 = <&i2c4_sleep_pins_z_mx>; status = "okay"; i2c-scl-rising-time-ns = <185>; i2c-scl-falling-time-ns = <20>; clock-frequency = <400000>; /delete-property/ dmas; /delete-property/ dma-names; pmic:stpmic@33{ compatible = "st,stpmic1"; reg = <0x33>; interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <2>; status = "okay"; st,main-control-register = <0x04>; st,vin-control-register = <0xc0>; st,usb-control-register = <0x20>; regulators{ compatible = "st,stpmic1-regulators"; buck1-supply = <&vin>; buck2-supply = <&vin>; buck3-supply = <&vin>; buck4-supply = <&vin>; ldo1-supply = <&v3v3>; ldo2-supply = <&vin>; ldo3-supply = <&vdd_ddr>; ldo4-supply = <&vin>; ldo5-supply = <&vin>; ldo6-supply = <&v3v3>; vref_ddr-supply = <&vin>; boost-supply = <&vin>; pwr_sw1-supply = <&bst_out>; pwr_sw2-supply = <&bst_out>; vddcore:buck1{ regulator-name = "vddcore"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; }; vdd_ddr:buck2{ regulator-name = "vdd_ddr"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; }; vdd:buck3{ regulator-name = "vdd"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; st,mask-reset; regulator-initial-mode = <0>; regulator-over-current-protection; }; v3v3:buck4{ regulator-name = "v3v3"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-over-current-protection; regulator-initial-mode = <0>; }; v1v8_audio:ldo1{ regulator-name = "v1v8_audio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; interrupts = ; }; v3v3_hdmi:ldo2{ regulator-name = "v3v3_hdmi"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; interrupts = ; }; vtt_ddr:ldo3{ regulator-name = "vtt_ddr"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <750000>; regulator-always-on; regulator-over-current-protection; }; vdd_usb:ldo4{ regulator-name = "vdd_usb"; interrupts = ; }; v3v3_eth:ldo5{ regulator-name = "v3v3_eth"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; interrupts = ; }; v3v3_dsi:ldo6{ regulator-name = "v3v3_dsi"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; interrupts = ; }; vref_ddr:vref_ddr{ regulator-name = "vref_ddr"; regulator-always-on; regulator-over-current-protection; }; bst_out:boost{ regulator-name = "bst_out"; interrupts = ; regulator-always-on; }; vbus_otg:pwr_sw1{ regulator-name = "vbus_otg"; interrupts = ; regulator-active-discharge; regulator-always-on; }; vbus_sw:pwr_sw2{ regulator-name = "vbus_sw"; interrupts = ; regulator-active-discharge = <1>; regulator-always-on; }; }; onkey{ compatible = "st,stpmic1-onkey"; interrupts = , ; interrupt-names = "onkey-falling", "onkey-rising"; power-off-time-sec = <10>; status = "okay"; }; watchdog { compatible = "st,stpmic1-wdt"; status = "disabled"; }; }; eeprom@50 { compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; }; }; &pwr_regulators { vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; }; /* eMMC */ &sdmmc2{ u-boot,dm-pre-reloc; pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc2_pins_mx>; pinctrl-1 = <&sdmmc2_opendrain_pins_mx>; pinctrl-2 = <&sdmmc2_sleep_pins_mx>; status = "okay"; non-removable; no-sd; no-sdio; st,neg-edge; bus-width = <8>; vmmc-supply = <&v3v3_eth>; vqmmc-supply = <&v3v3>; max-frequency = <150000000>; mmc-hs200-1_8v; }; /* WiFi */ &sdmmc3{ pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc3_pins_mx>; pinctrl-1 = <&sdmmc3_opendrain_pins_mx>; pinctrl-2 = <&sdmmc3_sleep_pins_mx>; arm,primecell-periphid = <0x10153180>; non-removable; st,neg-edge; bus-width = <4>; vmmc-supply = <&v3v3>; mmc-pwrseq = <&wifi_pwrseq>; #address-cells = <1>; #size-cells = <0>; keep-power-in-suspend; mmc-ddr-1_8v; max-frequency = <50000000>; status = "okay"; brcmf: bcrmf@1 { reg = <1>; compatible = "brcm,bcm4329-fmac"; }; }; |
TFA device tree changes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | /* TFA device tree changes code snippet */ /* PMIC */ &i2c4 { pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins_z_mx>; i2c-scl-rising-time-ns = <185>; i2c-scl-falling-time-ns = <20>; clock-frequency = <400000>; status = "okay"; secure-status = "okay"; pmic: stpmic@33 { compatible = "st,stpmic1"; reg = <0x33>; interrupts-extended = <&exti_pwr 55 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <2>; status = "okay"; secure-status = "okay"; regulators { compatible = "st,stpmic1-regulators"; buck1-supply = <&vin>; buck2-supply = <&vin>; buck3-supply = <&vin>; buck4-supply = <&vin>; ldo1-supply = <&v3v3>; ldo2-supply = <&vin>; ldo3-supply = <&vdd_ddr>; ldo4-supply = <&vin>; ldo5-supply = <&vin>; ldo6-supply = <&v3v3>; vref_ddr-supply = <&vin>; boost-supply = <&vin>; pwr_sw1-supply = <&bst_out>; pwr_sw2-supply = <&bst_out>; vddcore: buck1 { regulator-name = "vddcore"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; lp-stop{ regulator-on-in-suspend; regulator-suspend-microvolt = <1200000>; }; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vdd_ddr: buck2 { regulator-name = "vdd_ddr"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; lp-stop{ regulator-suspend-microvolt = <1350000>; regulator-on-in-suspend; }; standby-ddr-sr{ regulator-suspend-microvolt = <1350000>; regulator-on-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vdd: buck3 { regulator-name = "vdd"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; st,mask-reset; regulator-initial-mode = <0>; regulator-over-current-protection; lp-stop{ regulator-suspend-microvolt = <1800000>; regulator-on-in-suspend; }; standby-ddr-sr{ regulator-suspend-microvolt = <1800000>; regulator-on-in-suspend; }; standby-ddr-off{ regulator-suspend-microvolt = <1800000>; regulator-on-in-suspend; }; }; v3v3: buck4 { regulator-name = "v3v3"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-over-current-protection; regulator-initial-mode = <0>; lp-stop{ regulator-suspend-microvolt = <1800000>; regulator-on-in-suspend; }; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; v1v8_ldo1: ldo1 { regulator-name = "v1v8_audio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; v3v3_ldo2: ldo2 { regulator-name = "v3v3_hdmi"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vtt_ddr: ldo3 { regulator-name = "vtt_ddr"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <750000>; regulator-always-on; regulator-over-current-protection; lp-stop{ regulator-off-in-suspend; }; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vdd_usb: ldo4 { regulator-name = "vdd_usb"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; standby-ddr-sr{ regulator-on-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vdda: ldo5 { regulator-name = "vdda"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; standby-ddr-sr{ regulator-suspend-microvolt = <3300000>; regulator-on-in-suspend; }; standby-ddr-off{ regulator-suspend-microvolt = <3300000>; regulator-on-in-suspend; }; }; v1v2_ldo6: ldo6 { regulator-name = "v1v2_ldo6"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-always-on; standby-ddr-sr{ regulator-off-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; vref_ddr: vref_ddr { regulator-name = "vref_ddr"; regulator-always-on; regulator-over-current-protection; lp-stop{ regulator-on-in-suspend; }; standby-ddr-sr{ regulator-on-in-suspend; }; standby-ddr-off{ regulator-off-in-suspend; }; }; bst_out: boost { regulator-name = "bst_out"; }; vbus_otg: pwr_sw1 { regulator-name = "vbus_otg"; }; vbus_sw: pwr_sw2 { regulator-name = "vbus_sw"; regulator-active-discharge = <1>; }; }; }; }; &pwr_regulators { system_suspend_supported_soc_modes = < STM32_PM_CSLEEP_RUN STM32_PM_CSTOP_ALLOW_LP_STOP STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR >; system_off_soc_mode = ; vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; }; /* eMMC */ &sdmmc2{ pinctrl-names = "default"; pinctrl-0 = <&sdmmc2_pins_mx>; bus-width = <8>; vmmc-supply = <&vdda>; vqmmc-supply = <&v3v3>; max-frequency = <150000000>; mmc-hs200-1_8v; status = "okay"; }; |
We have verified the correct output voltages are there.
Power-up sequence stuck at uboot prompt STM32MP> after generating gollowing messages…
invalid MAC address in OTP 00:00:00:00:00:00
Net: No ethernet found.
Hit any key to stop autoboot: 0
STM32MP>
Would appreciate any help resolving this issue.
/Farid
Board has started booting up in kernel but failing to initialize WiFi module.
Its generating following error and $ ifconfig is not showing up wlan0 interface.
[ 3.204544] mmc0: error -22 whilst initialising SDIO card
few more mmc logs ..
$ dmesg | grep -i mmc
[ 3.146380] mmci-pl18x 48004000.sdmmc: allocated mmc-pwrseq
[ 3.151679] mmci-pl18x 48004000.sdmmc: mmc0: PL180 manf 53 rev1 at 0x48004000 irq 48,0 (pio)
[ 3.187294] mmci-pl18x 58007000.sdmmc: mmc1: PL180 manf 53 rev2 at 0x58007000 irq 54,0 (pio)
[ 3.201548] mmci-pl18x 48004000.sdmmc: no support for card’s volts
[ 3.206280] mmc0: error -22 whilst initialising SDIO card
[ 3.261074] mmci-pl18x 48004000.sdmmc: no support for card’s volts
[ 3.267396] mmc0: error -22 whilst initialising SDIO card
[ 3.327512] mmc1: new HS200 MMC card at address 0001
[ 3.332902] mmcblk1: mmc1:0001 X29128 117 GiB
[ 3.337005] mmcblk1boot0: mmc1:0001 X29128 partition 1 4.00 MiB
[ 3.343798] mmcblk1boot1: mmc1:0001 X29128 partition 2 4.00 MiB
[ 3.348819] mmcblk1rpmb: mmc1:0001 X29128 partition 3 4.00 MiB, chardev (243:0)
[ 3.359377] mmci-pl18x 48004000.sdmmc: no support for card’s volts
[ 3.364471] mmc0: error -22 whilst initialising SDIO card
[ 3.381567] mmcblk1: p1 p2 p3 p4 p5 p6
[ 3.424181] mmci-pl18x 48004000.sdmmc: no support for card’s volts
[ 3.428925] mmc0: error -22 whilst initialising SDIO card
Hey Farid,
The kernel messages indicate an issue with voltage selection settings in the device tree. In the sdmmc3 node, an IO VCC supply may be needed. See example here: https://wiki.st.com/stm32mpu/wiki/SDMMC_device_tree_configuration. The property needed could be vqmmc-supply.
I am assuming you have VIO for the WiFi module set to 1.8V and the IOs of the MMC interface are pulled to 1.8V and not 3.3V.
If you have some time, please post some info about how you were able to resolve your earlier boot issue.
Thanks and Best,
Neeraj
Hi Neeraj,
Thanks for your response. We found the problem and fixed it.
The WiFi module’s VBAT supply needs 3.3V to operate but in our device tree it was powered by 1.8V from buck4 that’s why it was failing to initialize.
We changed the VBAT supply to 3.3V (ldo5) and WiFi module initialize and works OK.
We don’t need vqmmc-supply for WiFi module, leaving the strapping option pin (GPIO_7) unconnected sets it for 1.8V.
Regarding the earlier boot issue, we didn’t change anything in software. Just clean the area on board around strapping option pin (GPIO_7) may be it was shorting, not sure, but board starts booting with eMMC working at 1.8V.
Thanks again for your help.
/Farid
Octavo Systems LLC all rights reserved
OCTAVO is registered in the U.S. Patent and Trademark Office. OSD, C-SiP, and the Octavo Logo are trademarks of Octavo Systems LLC.
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields