eMMC configuration to operate in HS200 mode

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

eMMC configuration to operate in HS200 mode

Jump to solution
12,380 Views
nirmalluhana
Contributor IV

Hi,

Release: Yocto-Morty (4.9.51_GA)

Board: i.MX8MQ EVK

I am using iMX8MQ EVK and while booting it from eMMC it's eMMC operated in HS400 mode.

I want to operate eMMC in HS200 mode. So, for that which configurations I have to change? 

Best,

Nirmal

Labels (1)
Tags (2)
1 Solution
10,724 Views
igorpadykov
NXP Employee
NXP Employee

Hi Nirmal

first question was:

>to switch it on HS400 mode which pin controls or configurations I have to change?

now question is:

>Actually, I want to fetch data on one edge (need to operate it in HS200) mode. So, what changes required for it?

so what it exactly your problem.

eMMC works according to emmc specs, in HS400 mode it samples in both edges, there is

no way to make it work violating specifications (sample in one edge).

Best regards
igor

View solution in original post

6 Replies
5,923 Views
pawasthi
Contributor I

Hi @nirmalluhana  

I was also having the same issue, I was able to operate in HS400 mode, but not HS200 mode 

The steps followed for HS200 mode are:

Kernel Changes:
drivers/mmc/host/sdhci-esdhc-imx.c file
Comment the probe function
//host->quirks2 |= SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400;

 
U-boot Changes
In u-boot defconfig
Comment CONFIG_MMC_HS400_SUPPORT=y and add support for HS200 
CONFIG_MMC_HS200_SUPPORT=y
 
In u-boot dts, add this line under &usdhc1 
mmc-hs200-1_8v;
 
(&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
bus-width = <8>;
non-removable;
mmc-hs200-1_8v;
max-frequency = <200000000>;
status = "okay";
};)
0 Kudos
Reply
10,724 Views
igorpadykov
NXP Employee
NXP Employee

Hi Nirmal

one can try to select appropriate dts pinctrl, like pinctrl_usdhc1_200mhz: usdhc1grp200mhz :

fsl-imx8mq-evk.dts\freescale\dts\boot\arm64\arch - linux-imx - i.MX Linux kernel 

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

0 Kudos
Reply
10,724 Views
nirmalluhana
Contributor IV

Hi Igor,

 

Thanks a lot for your quick response.

Previously I was made mistake. Actually, my EVK  board works on 200Mhz clock which is confirmed.

root@imx8mqevk:~# cat /sys/kernel/debug/mmc0/clock
200000000
root@imx8mqevk:~# cat /sys/kernel/debug/mmc0/ios   
clock:          200000000 Hz
actual clock:   200000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      3 (8 bits)
timing spec:    10 (mmc HS400)
signal voltage: 1 (1.80 V)
driver type:    0 (driver type B)

Now, I want to operate iton HS400 mode but in dts file it supports pin control for 100Mhz & 200Mhz.

So, to switch it on HS400 mode which pin controls or configurations I have to change?

Best,

Nirmal

0 Kudos
Reply
10,724 Views
igorpadykov
NXP Employee
NXP Employee

Hi Nirmal

in HS400 mode frequency also 200MHz (only data is sampled on both edges of the clock)

according to Table 42. HS400 interface timing specification i.MX8MDQ Datasheet
https://www.nxp.com/docs/en/data-sheet/IMX8MDQLQCEC.pdf

Best regards
igor

0 Kudos
Reply
10,724 Views
nirmalluhana
Contributor IV

Hi Igor,

Thanks for your quick support.

I understood the point how eMMC sampled data in HS400 mode. But as in my last post, I have mentioned that when I check mmc0(eMMC) information as below:

root@imx8mqevk:~# cat /sys/kernel/debug/mmc0/ios   
clock:          200000000 Hz
actual clock:   200000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      3 (8 bits)
timing spec:    10 (mmc HS400)
signal voltage: 1 (1.80 V)
driver type:    0 (driver type B)

Now, from that information my eMMC working on the 200Mhz frequency which is right as per datasheet timing specification. There was also mmc HS400 mentioned in timing specification so it fetches data on both edges.

Actually, I want to fetch data on one edge (need to operate it in HS200) mode. So, what changes required for it?

Best regards,

Nirmal

0 Kudos
Reply
10,725 Views
igorpadykov
NXP Employee
NXP Employee

Hi Nirmal

first question was:

>to switch it on HS400 mode which pin controls or configurations I have to change?

now question is:

>Actually, I want to fetch data on one edge (need to operate it in HS200) mode. So, what changes required for it?

so what it exactly your problem.

eMMC works according to emmc specs, in HS400 mode it samples in both edges, there is

no way to make it work violating specifications (sample in one edge).

Best regards
igor