Даже если оно и связано с самими чипами emmc, что на самом деле очень даже вероятно т.к. у всех немного разные буфера, лучше исходить из того что это есть и предусматривать его обход.
Будут ли эти же чипы через год-два ... опять настройки пинов подстраивать, хотя, может и усложняю ...
Да, но это скорее вынужденная мера. Все-таки, может быть узнав причину проблемы, можно будет придумать как её можно устранить.
Таким образом я правильно понимаю, что разработчики данного модуля ("SK-iMX6-MB-SODIMM") не знают причину данной проблемы и забили на нее, ввиду того, что ее можно обойти при помощи костылей?
Причина найдена - ручной сброс esdhc приводит к нестабильной работае eMMC. В убуте
u-boot/drivers/mmc/fsl_esdhc.c
#if 0
#if defined(CONFIG_FSL_USDHC)
/* RSTA doesn't reset MMC_BOOT register, so manually reset it */
esdhc_write32(®s->mmcboot, 0x0);
/* Reset MIX_CTRL and CLK_TUNE_CTRL_STATUS regs to 0 */
esdhc_write32(®s->mixctrl, 0x0);
esdhc_write32(®s->clktunectrlstatus, 0x0);
/* Put VEND_SPEC to default value */
esdhc_write32(®s->vendorspec, VENDORSPEC_INIT);
#endif
#endif
в ядре
linux/drivers/mmc/host/sdhci-esdhc-imx.c
#if 0
/*
* The RSTA, reset all, on usdhc will not clear following regs:
* > SDHCI_MIX_CTRL
* > SDHCI_TUNE_CTRL_STATUS
*
* Do it manually here.
*/
if ((rst_bits & ESDHC_SYS_CTRL_RSTA) && is_imx6q_usdhc(imx_data)) {
writel(0, host->ioaddr + ESDHC_MIX_CTRL);
writel(0, host->ioaddr + ESDHC_TUNE_CTRL_STATUS);
/* FIXME: delay for clear tuning status or some cards may not work */
mdelay(1);
}
#endif