I running imx8 with eMMC. I want to enable SDIO port with 1.8V

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

I running imx8 with eMMC. I want to enable SDIO port with 1.8V

3,932 Views
vikaskolapudi
Contributor I

SDIO port works with 3.3V. I want to enable 1.8V. How can i do that. I have tried many things by changing things in device tree blob. But nothing seems to work. Can you guys please help me out.

Tags (3)
0 Kudos
5 Replies

2,919 Views
igorpadykov
NXP Employee
NXP Employee

Hi Vikas

SD2 port (J1601connector) on i.MX8M EVK has SD2_VSELECT signal.

It can switch to 1.8V, however linux driver is doing that automatically

if attached device supports 1.8V operation. What device is attached to SD2 port,

does it support 1.8V operation.

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,919 Views
vikaskolapudi
Contributor I

Hi Igor,

Yes connected device is 1.8V supported wifi card. We have verified with another platform having SDIO 1.8V. It is working fine. I was curious to know If am using correct configuration or not.

Here is the snippet from my dts file:

 usdhc@30b40000 {
1143                 compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc";
1144                 reg = <0x0 0x30b40000 0x0 0x10000>;
1145                 interrupts = <0x0 0x16 0x4>;
1146                 clocks = <0x4 0x0 0x4 0x72 0x4 0x1ac>;
1147                 clock-names = "ipg", "ahb", "per";
1148                 assigned-clocks = <0x4 0x102>;
1149                 assigned-clock-rates = <0x17d78400>;
1150                 fsl,tuning-start-tap = <0x14>;
1151                 fsl,tuning-step = <0x2>;
1152                 fsl,strobe-dll-delay-target = <0x5>;
1153                 bus-width = <0x8>;
1154                 status = "okay";
1155                 pinctrl-names = "default", "state_100mhz", "state_200mhz";
1156                 pinctrl-0 = <0x33>;
1157                 pinctrl-1 = <0x34>;
1158                 pinctrl-2 = <0x35>;
1159                 non-removable;
1160         };
1161
1162         usdhc@30b50000 {
1163                 compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc";
1164                 reg = <0x0 0x30b50000 0x0 0x10000>;
1165                 interrupts = <0x0 0x17 0x4>;
1166                 clocks = <0x4 0x0 0x4 0x72 0x4 0x1ad>;
1167                 clock-names = "ipg", "ahb", "per";
1168                 fsl,tuning-start-tap = <0x14>;
1169                 fsl,tuning-step = <0x2>;
1170                 bus-width = <0x4>;
1171                 status = "okay";
1172                 pinctrl-names = "default", "state_100mhz", "state_200mhz";
1173                 pinctrl-0 = <0x36 0x37>;
1174                 pinctrl-1 = <0x38 0x37>;
1175                 pinctrl-2 = <0x39 0x37>;
1176                 cd-gpios = <0x3a 0xc 0x1>;
1177                 vmmc-supply = <0x3b>;
1178         };

 regulators {
1750                 compatible = "simple-bus";
1751                 #address-cells = <0x1>;
1752                 #size-cells = <0x0>;
1753
1754                 usdhc2_vmmc {
1755                         compatible = "regulator-fixed";
1756                         regulator-name = "VSD_3V3";
1757                         regulator-min-microvolt = <0x325aa0>;
1758                         regulator-max-microvolt = <0x325aa0>;
1759                         gpio = <0x3a 0x13 0x0>;
1760                         enable-active-high;
1761                         linux,phandle = <0x3b>;
1762                         phandle = <0x3b>;
1763                 };
1764
1765                 regulator-gpio {
1766                         compatible = "regulator-gpio";
1767                         pinctrl-names = "default";
1768                         pinctrl-0 = <0x52>;
1769                         regulator-min-microvolt = <0xdbba0>;
1770                         regulator-max-microvolt = <0xf4240>;
1771                         regulator-name = "gpio_dvfs";
1772                         regulator-type = "voltage";
1773                         gpios = <0x45 0xd 0x0>;
1774                         states = <0xdbba0 0x1 0xf4240 0x0>;
1775                         linux,phandle = <0x5>;
1776                         phandle = <0x5>;

Please let me know if you need more information.

Regards,

Ravi Kant

0 Kudos

2,919 Views
igorpadykov
NXP Employee
NXP Employee

Hi Ravi

one can try sd3.0 card with i.MX8M EVK Demo Image:

Linux Binary Demo Files - i.MX 8MQuad EVK

https://www.nxp.com/webapp/Download?colCode=L4.9.88_2.0.0_MX8MQ&appType=license&location=null&Parent... 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,919 Views
vikaskolapudi
Contributor I

Hi Igor,

Thanks for your response.

I want to make changes in my yocto build. I have some software to cross-compile with it and run with SDIO on imx8 evk. The image you provided will not be of much help in that case. Can you please help me out in changes required for SDIO either in SW or HW?

Regards,

Ravi Kant

0 Kudos

2,919 Views
igorpadykov
NXP Employee
NXP Employee

Hi Ravi

this may be due to this SDIO device, for example there is no driver for it.

One can debug it using Chapter 32 MMC/SD/SDIO Host Driver attached Linux Manual.

According to SD 3.0 specification host starts communication with 3.3V level, then

after receiving answer from card that it is capable of 1.8V operation switches to 1.8V,

this is described in sect.4.2.4 Bus Signal Voltage Switch Sequence SD 3.0 specification

Best regards
igor

0 Kudos