How to recognize LS1012A SDHC2 emmc in Linux?

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

How to recognize LS1012A SDHC2 emmc in Linux?

Jump to solution
691 Views
gyosunshim
Contributor III

Hello,

 

The existing problem is not resolved, so I ask again.

https://community.nxp.com/t5/Layerscape/How-to-add-FRWY-LS1012A-SDHC2-emmc/td-p/1158935  

 

sdhc2 is recognized in u-boot, but not in Linux.

=> mmc list
FSL_SDHC: 0 (SD)
FSL_SDHC: 1 (eMMC)

arch/arm64/boot/dts/freescale/fsl-ls1012a-frwy.dts 파일에서,

&esdhc0 {
sd-uhs-sdr104;
sd-uhs-sdr50;
sd-uhs-sdr25;
sd-uhs-sdr12;
status = "okay";
};

&esdhc1 {
mmc-hs200-1_8v;
mmc-hs400-1_8v;
bus-width = <4>;
status = "okay";
};

Add and in the build/rfs folder

sudo tar xf ../images/bootpartition_LS_arm64_lts_4.9.tgz -C /media/sd/boot/

I did the same as above.

I also downloaded the firmware_ls1012afrwy_uboot_qspiboot.img file,

However, it is not recognized by the device.

[root@LSDK ~]# ls /dev/mmcblk*
/dev/mmcblk0 /dev/mmcblk0p1 /dev/mmcblk0p2 /dev/mmcblk0p3

[root@LSDK ~]# dmesg | grep mmc
[ 2.497483] mmc0: SDHCI controller on 1560000.esdhc [1560000.esdhc] using ADMA 64-bit
[ 2.711128] mmc0: new high speed SDHC card at address 59b4
[ 2.726114] mmcblk0: mmc0:59b4 USDU1 7.51 GiB
[ 2.731350] mmcblk0: p1 p2 p3

[root@LSDK ~]# dmesg | grep sdhci
[ 2.432678] sdhci: Secure Digital Host Controller Interface driver
[ 2.439276] sdhci: Copyright(c) Pierre Ossman
[ 2.450769] sdhci-pltfm: SDHCI platform and OF driver helper

What more to do? We ask for your desperate help.

 

Thank you,

Best Regards,

Gyosun.

 

0 Kudos
1 Solution
682 Views
gyosunshim
Contributor III

I solved it myself.

In the u-boot code, "disabled" was changed to "okay" and it was recognized normally.

vi board/freescale/ls1012afrdm/ls1012afrdm.c

#ifdef CONFIG_TARGET_LS1012AFRWY
int esdhc_status_fixup(void *blob, const char *compat)
{
char esdhc0_path[] = "/soc/esdhc@1560000";
char esdhc1_path[] = "/soc/esdhc@1580000";

do_fixup_by_path(blob, esdhc0_path, "status", "okay",
sizeof("okay"), 1);

#if 0
do_fixup_by_path(blob, esdhc1_path, "status", "disabled",sizeof("disabled"), 1);
#else
do_fixup_by_path(blob, esdhc1_path, "status", "okay",sizeof("okay"), 1);
#endif
return 0;
}
#endif

[root@LSDK ~]# ls /dev/mmcblk*
/dev/mmcblk0 /dev/mmcblk0p3 /dev/mmcblk1boot1
/dev/mmcblk0p1 /dev/mmcblk1 /dev/mmcblk1p1
/dev/mmcblk0p2 /dev/mmcblk1boot0 /dev/mmcblk1rpmb

 

Best Regards,

Gyosun.

View solution in original post

0 Kudos
1 Reply
683 Views
gyosunshim
Contributor III

I solved it myself.

In the u-boot code, "disabled" was changed to "okay" and it was recognized normally.

vi board/freescale/ls1012afrdm/ls1012afrdm.c

#ifdef CONFIG_TARGET_LS1012AFRWY
int esdhc_status_fixup(void *blob, const char *compat)
{
char esdhc0_path[] = "/soc/esdhc@1560000";
char esdhc1_path[] = "/soc/esdhc@1580000";

do_fixup_by_path(blob, esdhc0_path, "status", "okay",
sizeof("okay"), 1);

#if 0
do_fixup_by_path(blob, esdhc1_path, "status", "disabled",sizeof("disabled"), 1);
#else
do_fixup_by_path(blob, esdhc1_path, "status", "okay",sizeof("okay"), 1);
#endif
return 0;
}
#endif

[root@LSDK ~]# ls /dev/mmcblk*
/dev/mmcblk0 /dev/mmcblk0p3 /dev/mmcblk1boot1
/dev/mmcblk0p1 /dev/mmcblk1 /dev/mmcblk1p1
/dev/mmcblk0p2 /dev/mmcblk1boot0 /dev/mmcblk1rpmb

 

Best Regards,

Gyosun.

0 Kudos