AM2634: EMMC high speed not working - sdk 10.1

Part Number: AM2634

Tool/software:

Hi

Usual EMMC needs a frequency switch between identification and data transfer - identification has to run on low freq and only after that the high clock is permitted. As far as I know this is part of the JEDEC to ensure compatibility.

On my Swissbit SFEM005GB1ED1TO-I-5E-31P-STD the datasheet looks like this (checked several other datasheets and have something similar):

Basically most of the MMCSD_initEMMC with MMCSD_CMD(0)-(6) have to be run on a low frequency and high one is permitted only after that is completed.

This does not works with sdk 10.1 (tried "Auto Assign Maximum Speed", direct HS or DS - none of them works).
Is there support or how this can be achieved?

NOTE: this does not worked in sdk 9.x either but there I made a tweak - using MMCSD_Config.outputClk I added another function based on MMCSD_switchCardSpeed which permitted clock switching before and after MMCSD_initEMMC to ensure it starts 400Khz and than if all is ok switching to HS400.

With this solution and sdk 9.2 the same prototype works ok so the wiring is ok and the EMMC is ok too.

Now I want to achieve the same with sdk 10.1 but MMCSD_Config.outputClk was removed and there are quite big changes in that driver so my sdk 9.x solution does not works anymore.

Before I go back to zero and trying to modify the driver again I would like to know if somehow this clock switch is supported by the new SDK (I would expect "Auto assign maximum speed" is this but it doesn't works for me).

Best regards,

Barna Csenteri

  • It seems the driver does not even try to init EMMC but returns error instead:

    static int32_t MMCSD_lld_initMMC(MMCSDLLD_Handle handle)
    {
    return MMCSD_STS_ERR;
    }

    Any fix on this?

    The v2 driver seems to have some kind of EMMC code - that should be used? How can be selected? Did tried to switch from soc_config.h to DRV_VERSION_MMCSD_V2 but searches for lld v2 version which is not included in the sdk.

    I need a solution to have a support for EMMC which was sort of working on 9.2 and now it is missing from 10.1