Other Parts Discussed in Thread: CSD
Tool/software:
Hi,
From JEDEC doc. CMD6 can be used to modify the value of CSD/ECSD bytes of eMMC.
By looking into mmcsd_v1.c, to me it seems each field are forming differently.
trans.cmd = MMCSD_MMC_CMD(6);
trans.arg = (MMCSD_ECSD_ACCESS_MODE << 24U) | (MMCSD_ECSD_HS_TIMING_INDEX << 16U) | ((((obj->emmcData->driveStrength) << 4U) | 1U) << 8U);
trans.cmd = MMCSD_MMC_CMD(6);
trans.arg = 0x03000000 | (MMCSD_ECSD_BUS_WIDTH_INDEX << 16) | (((0 << MMCSD_ECSD_BUS_WIDTH_ES_SHIFT) | ecsdBusWidth) << 8);
trans.cmd = MMCSD_MMC_CMD(6);
trans.arg = 0x03000000 | (MMCSD_ECSD_HS_TIMING_INDEX << 16U) | ((((obj->emmcData->driveStrength) << 4U) | hsTimingVal) << 8U);
Is there a more generic way/function to modify the value a field? The eMMC I am trying to interact with is the on-EVM one.
Thank you,
Dazong