Dear igor,
sorry for forgetting to mention the processor. I use iMX6 solo processor, the module is uSDHC2.
following is the initialization code, when host_init_active(usdhcBase) is executed, a 80 cycles clock should be observed on SD_CLK, I have see nothing.
int card_init(unsigned int usdhcBase,int bus_width)
{
int init_status = FAIL;
/* Software Reset to Interface Controller */
host_reset(usdhcBase, ESDHC_ONE_BIT_SUPPORT, LITTLEENDIAN);
/* card detect */
if(card_detect_test_en)
{
if(usdhc_card_detected(usdhcBase) == false)
{
printf("*Card on SD is not inserted.\n");
return FAIL;
}
else
printf("Card on SD is inserted.\n");
}
/* write protect */
if(write_protect_test_en)
{
if(usdhc_write_protected(usdhcBase) == true) {
printf("*Card on SD%d is write protected.\n", usdhcBase);
return FAIL;
}
else
printf("Card on SD%d is not write protected.\n", usdhcBase);
}
/* Initialize interrupt */
if (card_init_interrupt(usdhc_device) == FAIL)
{
printf("Interrupt initialize failed.\n");
return FAIL;
}
/* Enable Identification Frequency */
host_cfg_clock(usdhcBase, IDENTIFICATION_FREQ);
/* Send Init 80 Clock */
host_init_active(usdhcBase);
usdhc_printf("Reset card.\n");
/* Issue Software Reset to card */
if (card_software_reset(usdhcBase) == FAIL)
return FAIL;
/* SD Voltage Validation */
if (sd_voltage_validation(usdhcBase) == SUCCESS)
{
usdhc_printf("SD voltage validation passed.\n");
/* SD Initialization */
init_status = sd_init(usdhcBase, bus_width);
}
/* MMC Voltage Validation */
else if (mmc_voltage_validation(usdhcBase) == SUCCESS)
{
usdhc_printf("MMC voltage validation passed.\n");
/* MMC Initialization */
init_status = mmc_init(usdhcBase, bus_width);
}
return init_status;
}