supporting SDR104 in imx6 board by yocto

cancel
Showing results for 
Search instead for 
Did you mean: 

supporting SDR104 in imx6 board by yocto

supporting SDR104 in imx6 board by yocto

Not all of imx6 boards can support SDR104, refer to imx6sx Reference Manual, BOOT_CFG1[2:3] = 11 is SDR104

pastedImage_0.png

normally hardware support 3.3v, but SDR104 only supports 1.8v.

refer to the AI board schematic, you can find as below:

pastedImage_3.png

For current yocto driver, which already supports sd3.0 standard, but kernel should change something to support this, for customer, one can refer to the source code in the yocto, the path:root/arch/arm/boot/dts/imx6sx-sdb.dts or path:root/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi

For supporting SDR104, should change the dts file, because of 1.8v only, should remove no-1-8-v in the source code, then add vmmc-supply according to the dts file above.

for example, based on the schematic, you can find:

&usdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1>;
cd-gpios = <&gpio1 1 0>;
no-1-8-v;
keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";

};

&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
cd-gpios = <&gpio6 15 0>;
wp-gpios = <&gpio1 13 0>;
/*
* Due to board issue, we can not use external regulator for card slot
* by default since the card power is shared with card detect pullup.
* Disabling the vmmc regulator will cause unexpected card detect
* interrupts.
* HW rework is needed to fix this isssue. Remove R695 first, then you
* can open below line to enable the using of external regulator.
* Then you will be able to power off the card during suspend. This is
* especially needed for a SD3.0 card re-enumeration working on UHS mode
* Note: reg_sd3_vmmc is also need to be enabled
*/
/* vmmc-supply = <&reg_sd3_vmmc>; */
keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";
};

reg_sd3_vmmc: sd3_vmmc{
compatible = "regulator-fixed";
regulator-name = "P3V3_SDa_SWITCHED";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
enable-active-high;
/* remove below line to enable this regulator */
status="disabled";
};

Comments

Hi Guanqiong,

     I'm use your step to support UHS-I TF card on my IMX6 solo board.

1. good news: 

          kernel - recognized my TF card as SDR104 ultra high speed card.

          we measured the Voltage to TF controller- switched from 3.3v to 1.8v

          performance bench mark use hdparam - increased from 20MB/s to 56MB/s

2. bad news

         The SD card access seems very unstable now, I always get following error when read TF card

mmcblk0: error -84 transferring data, sector 3072008, nr 8, cmd response 0x900, card status 0xc00

end_request: I/O error, dev mmcblk0, sector 3072008

         Sometimes my board cannot boot up anymore (I suspect it is caused by the file system sync when power off board latest time). Do you met similar case before?

Regards,

Edison

Version history
Revision #:
1 of 1
Last update:
‎03-30-2016 05:13 AM
Updated by: