public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] gen_atmel_mci freeze on at91sam9g45
@ 2010-12-04 17:08 eric cariat
  2010-12-05  8:30 ` Reinhard Meyer
  0 siblings, 1 reply; 4+ messages in thread
From: eric cariat @ 2010-12-04 17:08 UTC (permalink / raw)
  To: u-boot

Hi,

I'm currently working on a custom board with an at91sam9g45 : I followed the
instruction in README.atmel_mci. In U-boot, if I use the command mmcinfo,
the system hang. The uSD is working correctly with at91bootstrap and linux.
In U-boot everything seems fine, the card exchange a few command and
response, and then freeze on the command 55 51 (the first command that will
receive some data on DAT0 ) :

U-Boot> mmcinfo
mci: bus_hz is 133333333, setting clock 150000 Hz, block size 512
mci: setting clock 260416 Hz, block size 512
mci: bus_hz is 133333333, setting clock 0 Hz, block size 512
mci: setting clock 260416 Hz, block size 512
mci: bus_hz is 133333333, setting clock 260416 Hz, block size 512
mci: setting clock 260416 Hz, block size 512
gen_atmel_mci: CMDR 00001000 ( 0) ARGR 00000000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001048 ( 8) ARGR 000001aa (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001077 (55) ARGR 00000000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001069 (41) ARGR 40300000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001077 (55) ARGR 00000000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001069 (41) ARGR 40300000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001082 ( 2) ARGR 00000000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001043 ( 3) ARGR 00000000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001089 ( 9) ARGR 88f70000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 000010c7 ( 7) ARGR 88f70000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00001077 (55) ARGR 88f70000 (SR: 00000000) DEBUG
gen_atmel_mci: CMDR 00051073 (51) ARGR 00000000 (SR: 00000000) DEBUG
Read Data:
00000000: 02 25 00 00 00 00 00 00    .%......
filling rest of block...

then everything freeze ...
But if I add some printf to debug , just after the
mci_data_op=mci_data_read() in gen_atmel_mci, then everything is OK and I
can now use the uSD without any problem.
Here is where I add the printf, so uSD is correctly handled :

diff -crbN u-boot-2010.09.orig/drivers/mmc/gen_atmel_mci.c
u-boot-2010.09/drivers/mmc/gen_atmel_mci.c
*** u-boot-2010.09.orig/drivers/mmc/gen_atmel_mci.c    2010-09-28
23:20:55.000000000 +0200
--- u-boot-2010.09/drivers/mmc/gen_atmel_mci.c    2010-12-04
17:52:59.092770689 +0100
***************
*** 252,257 ****
--- 252,258 ----
              while (!status && word_count < (sys_blocksize / 4)) {
                  status = mci_data_op(mci, &dummy,
                      error_flags);
+                 printf("status=%x\n",status);
                  word_count++;
              }
              if (status) {

 The result (status) from mci_data_op (=mci_data_read()) is always 0.  It's
a bit like if there was a timeout not correctly handled. I had the same
sympton on different uSD. Actually U-boot is started by At91Bootstrap, so
some HMCI register are probably not@there default value ?
Any advice to investigate further ?

best regards,

Eric Cariat

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-12-08 20:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-04 17:08 [U-Boot] gen_atmel_mci freeze on at91sam9g45 eric cariat
2010-12-05  8:30 ` Reinhard Meyer
2010-12-07 17:23   ` eric cariat
2010-12-08 20:15     ` Reinhard Meyer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox