Not all of imx6 boards can support SDR104, refer to imx6sx Reference Manual, BOOT_CFG1[2:3] = 11 is SDR104
normally hardware support 3.3v, but SDR104 only supports 1.8v.
refer to the AI board schematic, you can find as below:
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:
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1>;
cd-gpios = <&gpio1 1 0>;
status = "okay";
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
* 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 = <®_sd3_vmmc>; */
status = "okay";
compatible = "regulator-fixed";
regulator-name = "P3V3_SDa_SWITCHED";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
/* remove below line to enable this regulator */