This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MMC2 boot problem with transceiver

Other Parts Discussed in Thread: OMAP3530

Hello,


We are trying to boot OMAP3530 from MMC2 interface. I've searched the e2e database and found only 1 relative discussion on MMC2 boot: http://e2e.ti.com/support/dsp/sitara_arm174_microprocessors/f/416/p/116485/417725.aspx#417725


Tony asked about the mmc2_dir_dat (0-1-2-3) and mmc2_dir_cmd signals and pointed out a mismatch between the Technical reference manual (TRM) and the wiki: http://processors.wiki.ti.com/index.php/SD-MMC_Usage_Notes_on_AM35x . mmc2_dir_dat and mmc2_dir_cmd (direction control) signals are multiplexed with mmc2_dat (4-5-6) and sys_boot (4-5) signals using the MUXMODE field of the related configuration register. TRM says when booting from MMC2, MUXMODE is set to 0 which sets our muxed pins to mmc2_dat  and sys_boot signals. This should probably be wrong as the wiki states that the ROM code sets the MUXMODE to 1 for related pins. This is confirmed by Brad Griffis

.


Getting to our problem, we configured the sysboot pins [5-0] as 0b110111 to boot from  UART3 and then MMC2. We don't use the UART3 interface so we expect the OMAP to read from the SDcard we plug into the SDcard reader which we connected to MMC2 interface of OMAP3530 through a level shifter. All our direction control, data, clk signals of the MMC2 interface go through the level shifter. We route the feedback clock from the level shifter back to MMC2 controller into the MMC2 clk_in port.

 

During the boot process we observe the behavior of mmc2_dir_cmd signal using an oscilloscope and we expect to see this signal change as it determines the direction of flow on the mmc2_dir_cmd signal. We see no change on mmc2_dir_cmd signal which implies OMAP sends commands to SDcard but it never reads a response back since responses are sent through the same bus.

 

We also checked the value of CONTROL_DEVCONF1.MMCSDIO2ADPCLKISEL which tells the ROM code where to get feedback clock, and we read 1 which tells us it reads the internal clock where instead it must read from the pin we connected to the feedback clock output of the level shifter.

 

So, two findings:

1. mmc2_dir_cmd does not change when we try to boot from MMC2.

2. CONTROL_DEVCONF1.MMCSDIO2ADPCLKISEL is 1 during boot which means that our feedback clock is not used.  for MMC2.

 

What makes me wonder is that we can use the MMC2 interface either with an external transceiver or without a one. If I don't use a transceiver then I wouldn't need the direction control signals and I would have set the MUXMODE to 0 to use the extra data signals of MMC2; so there must be some setting that I should do to make OMAP aware that there is a transceiver outside. Where and how do I do this?

 

I also wonder if I could use MLO and u-boot that I use for MMC1 without any change for MMC2?

 

Any help is greatly appreciated.

 

Thank you

  • I've found the "SD-MMC Usage Notes on OMAP35x and AM37x" @ http://processors.wiki.ti.com/index.php/SD-MMC_Usage_Notes_on_OMAP35x_and_AM37x

    According to the wiki, it is not possible to boot from an MMC2 which is configured to work with an external transceiver. I quoted the part below:

    ti_wiki said:

    Note that booting from MMC2 precludes the use of MMC2_CLKIN (the boot ROM uses CONTROL_DEVCONF.MMCSDIO2ADPCLKISEL=1). Thus, you cannot boot from MMC2 if you use a tranceiver that feeds back the clock with MMC2_CLKIN. You must use MMC2 at 1.8V with no transceiver, or one of the auto direction sensing transceivers with the above mentioned restrictions (ideally, you should use MMC1 if you need to boot from a 3.0V MMC/SD source).

    In the last sentence, the wiki uses the word ideally. Can it mean there could be a non-ideal case where the bootROM code uses CONTROL_DEVCONF.MMCSDIO2ADPCLKISEL=0 and therefore MMC2 boot is possible?

     

  • We have only got boot to work with no trransciever, or an auto sense device