[U-Boot-Users] pcmcia card not set up by u-boot on tqm823l

Seb James seb at peak.uklinux.net
Tue Sep 9 13:48:16 CEST 2003


Dear all,

I am having problems with u-boot setting up a pcmcia card on a tqm823l
on an Stk8xxl starter board. From a "make TQM823L_config; make" version
of u-boot 0.4.0, I get the following output when booting the board:


U-Boot 0.4.0 (Sep  9 2003 - 12:27:42)
 
CPU:   PPC823EZTnnB2 at 50 MHz: 16 kB I-Cache 8 kB D-Cache
Board: TQM823LDBBA3-E50.308
I2C:   ready
DRAM:  16 MB
FLASH:  8 MB
In:    serial
Out:   serial
Err:   serial
Net:   SCC ETHERNET
PCMCIA: 3.3V card found: SunDisk SDP 5/3 0.6
            Fixed Disk Card
            IDE interface
            [silicon] [unique] [single] [sleep] [standby] [idle] [low power]
Bus 0: ............................................................** Timeout ** 
Type "run flash_nfs" to mount root filesystem over NFS
 
Hit any key to stop autoboot:  0
=>


The same is seen with another flash card. The code that times out is in
common/cmd_ide.c (at bottom of message) and it looks like the card is
saying it's busy. Does anyone have a suggestion as to why the cards
aren't being correctly set up/recognized?

regards,

Seb James.





---------- cmd_ide.c Lines 564 - 604 -----------------------------

		printf ("Bus %d: ", bus);

		ide_bus_ok[bus] = 0;

		/* Select device
		 */
		udelay (100000);		/* 100 ms */
		ide_outb (dev, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(dev));
		udelay (100000);		/* 100 ms */
#ifdef CONFIG_AMIGAONEG3SE
		ata_reset_time = ATA_RESET_TIME;
		s = getenv("ide_reset_timeout");
		if (s) ata_reset_time = 2*simple_strtol(s, NULL, 10);
#endif
		i = 0;
		do {
			udelay (10000);		/* 10 ms */

			c = ide_inb (dev, ATA_STATUS);
			i++;
#ifdef CONFIG_AMIGAONEG3SE
			if (i > (ata_reset_time * 100)) {
#else
			if (i > (ATA_RESET_TIME * 100)) {
#endif
				puts ("** Timeout **\n");
				ide_led ((LED_IDE1 | LED_IDE2), 0); /* LED's off */
#ifdef CONFIG_AMIGAONEG3SE
				/* If this is the second bus, the first one was OK */
				if (bus != 0)
				{
				    ide_bus_ok[bus] = 0;
				    goto skip_bus;
				}
#endif
				return;
			}
			if ((i >= 100) && ((i%100)==0)) {
				putc ('.');
			}
		} while (c & ATA_STAT_BUSY)





More information about the U-Boot mailing list