Hello,
i want to access the MMC/SD_1 Interface of the DRA320DM8148. I have done the following prerequisites:
- Pinmux for MMC1
REG(PINCNTL8) |= MUXMODE_SD0_CLK; REG(PINCNTL9) |= MUXMODE_SD0_CMD; REG(PINCNTL10) |= MUXMODE_SD0_DAT0; REG(PINCNTL11) |= MUXMODE_SD0_DAT1; REG(PINCNTL12) |= MUXMODE_SD0_DAT2; REG(PINCNTL13) |= MUXMODE_SD0_DAT3; REG(PINCNTL35) |= MUXMODE_SD0_DAT4; REG(PINCNTL36) |= MUXMODE_SD0_DAT5; REG(PINCNTL41) |= MUXMODE_SD0_DAT6; REG(PINCNTL42) |= MUXMODE_SD0_DAT7; REG(PINCNTL72) |= MUXMODE_SD0_SDCD;
- Enable clocks
tms320dm8148_clock_enable(CM_ALWON_L4LS_CLKCTRL); //L4LS tms320dm8148_clock_enable(CM_ALWON_CONTROL_CLKCTRL); //these functions write 0x2 to the apropriate clk-register REG(PRCM_REGS_BASIS + CM_ALWON + 0x000) = 2; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x004) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x008) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x00c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x010) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x014) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x018) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x01c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x020) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x024) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x028) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x02c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x030) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x140) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x144) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x148) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x14c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x150) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x154) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x158) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x15c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x160) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x164) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x168) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x16c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x170) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x174) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x178) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x180) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x184) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x188) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x18c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x190) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x194) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x198) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x19c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1a8) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1b4) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1b8) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1c4) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1d0) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1d4) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1dc) ; // :O tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1e0) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1e4) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1e8) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1ec) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1f0) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1f4) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1f8) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x1fc) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x200) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x204) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x218) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x21c) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x220) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x224) ; tms320dm8148_clock_enable(PRCM_REGS_BASIS + CM_ALWON + 0x228) ; REG(CM_ALWON_MMCHS_0_CLKCTRL) = MODULEMODE_ENABLE; // reset value 0x30000 // wait for ready set while((REG(CM_ALWON_MMCHS_0_CLKCTRL) & MODULEMODE_IDLEST));
After that I do a reset of the MMC1 Interface. Here is the code
So write SOFTRESET to MMC1_SYSCONFIG and the poll for RESETDONE in SYSSTATUS.
But RESETDONE never goes ready (to 1).
The question is why MMC1-Interface never gets ready. Is there any prerequiste thats not fullfilled?
Is there any StartKit-like software for the TMS329DM8148.
BR Martin