Переглянути джерело

* Patch by Gary Jennejohn, 11 Sep 2003:
- allow for longer timeouts for USB mass storage devices

* Patch by Denis Peter, 11 Sep 2003:
- fix USB data pointer assignment for bulk only transfer.
- prevent to display erased directories in FAT filesystem.

* Change output format for NAND flash - make it look like for other
memory, too

wdenk 21 роки тому
батько
коміт
a43278a43d

+ 11 - 0
CHANGELOG

@@ -1,3 +1,14 @@
+======================================================================
+Changes for U-Boot 1.0.0:
+======================================================================
+
+* Patch by Denis Peter, 11 Sep 2003:
+  - fix USB data pointer assignment for bulk only transfer.
+  - prevent to display erased directories in FAT filesystem.
+
+* Change output format for NAND flash - make it look like for other
+  memory, too
+
 ======================================================================
 Changes for U-Boot 0.4.8:
 ======================================================================

+ 6 - 4
board/at91rm9200dk/at91rm9200dk.c

@@ -66,7 +66,7 @@ int dram_init (void)
  * The NAND lives in the CS2* space
  */
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern void nand_probe (ulong physadr);
+extern ulong nand_probe (ulong physadr);
 
 #define AT91_SMARTMEDIA_BASE 0x40000000	/* physical address to access memory on NCS3 */
 void nand_init (void)
@@ -103,10 +103,12 @@ void nand_init (void)
 	*AT91C_PIOB_ODR = AT91C_PIO_PB1;	/* disable output */
 
 	if (*AT91C_PIOB_PDSR & AT91C_PIO_PB1)
-		printf ("No ");
-	printf ("SmartMedia card inserted\n");
+		printf ("  No SmartMedia card inserted\n");
+#ifdef DEBUG
+	printf ("  SmartMedia card inserted\n");
 
 	printf ("Probing at 0x%.8x\n", AT91_SMARTMEDIA_BASE);
-	nand_probe (AT91_SMARTMEDIA_BASE);
+#endif
+	printf ("%4lu MB\n", nand_probe(AT91_SMARTMEDIA_BASE) >> 20);
 }
 #endif

+ 7 - 3
board/dave/PPChameleonEVB/PPChameleonEVB.c

@@ -255,16 +255,20 @@ int testdram (void)
 /* ------------------------------------------------------------------------- */
 
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern void
+extern ulong
 nand_probe(ulong physadr);
 
 void
 nand_init(void)
 {
+	ulong totlen;
+
 	debug ("Probing at 0x%.8x\n", CFG_NAND0_BASE);
-	nand_probe (CFG_NAND0_BASE);
+	totlen = nand_probe (CFG_NAND0_BASE);
 
 	debug ("Probing at 0x%.8x\n", CFG_NAND1_BASE);
-	nand_probe (CFG_NAND1_BASE);
+	totlen += nand_probe (CFG_NAND1_BASE);
+
+	printf ("%4lu MB\n", totlen >>20);
 }
 #endif

+ 3 - 7
board/esd/ash405/ash405.c

@@ -239,15 +239,11 @@ int testdram (void)
 /* ------------------------------------------------------------------------- */
 
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
 
 void nand_init(void)
 {
-	nand_probe(CFG_NAND_BASE);
-	if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
-		puts("NAND:  ");
-		print_size(nand_dev_desc[0].totlen, "\n");
-	}
+	unsigned long totlen = nand_probe(CFG_NAND_BASE);
+
+	printf ("%4lu MB\n", totlen >> 20);
 }
 #endif

+ 7 - 2
board/mpl/vcma9/vcma9.c

@@ -144,7 +144,7 @@ int dram_init(void)
  * NAND flash initialization.
  */
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern void
+extern ulong
 nand_probe(ulong physadr);
 
 
@@ -177,10 +177,15 @@ void
 nand_init(void)
 {
 	S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
+	unsigned totlen;
 
 	NF_Init();
+#ifdef DEBUG
 	printf("NAND flash probing at 0x%.8lX\n", (ulong)nand);
-	nand_probe((ulong)nand);
+#endif
+	totlen = nand_probe((ulong)nand) >> 20;
+
+	printf ("%4lu MB\n", totlen >> 20);
 }
 #endif
 

+ 4 - 7
board/netvia/netvia.c

@@ -420,16 +420,13 @@ int board_pre_init(void)
 
 #include <linux/mtd/nand.h>
 
-extern void nand_probe(ulong physadr);
+extern ulong nand_probe(ulong physadr);
 extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
 
 void nand_init(void)
 {
-	nand_probe(CFG_NAND_BASE);
-	if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
-		nand_dev_desc[0].name = "NetVia NAND flash";
-		puts("NAND:  ");
-		print_size(nand_dev_desc[0].totlen, "\n");
-	}
+	unsigned long totlen = nand_probe(CFG_NAND_BASE);
+
+	printf ("%4lu MB\n", totlen >> 20);
 }
 #endif

+ 3 - 5
board/sixnet/sixnet.c

@@ -330,11 +330,9 @@ int misc_init_r (void)
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
 void nand_init(void)
 {
-	nand_probe(CFG_DFLASH_BASE);	/* see if any NAND flash present */
-	if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
-		puts("NAND:  ");
-		print_size(nand_dev_desc[0].totlen, "\n");
-	}
+	unsigned long totlen = nand_probe(CFG_NAND_BASE);
+
+	printf ("%4lu MB\n", totlen >> 20);
 }
 #endif
 

+ 11 - 5
common/cmd_nand.c

@@ -38,7 +38,7 @@ struct nand_oob_config {
 	int eccvalid_pos;	/* position of ECC valid flag inside oob -1 = inactive */
 } oob_config = { {0}, 0, 0};
 
-#define	NAND_DEBUG
+#undef	NAND_DEBUG
 #undef	PSYCHO_DEBUG
 
 /* ****************** WARNING *********************
@@ -734,7 +734,9 @@ static void NanD_ScanChips(struct nand_chip *nand)
 
 	/* If there are none at all that we recognise, bail */
 	if (!nand->numchips) {
+#ifdef NAND_DEBUG
 		puts ("No NAND flash chips recognised.\n");
+#endif
 		return;
 	}
 
@@ -1408,7 +1410,7 @@ static inline int nandcheck(unsigned long potential, unsigned long physadr)
 	return 0;
 }
 
-void nand_probe(unsigned long physadr)
+unsigned long nand_probe(unsigned long physadr)
 {
 	struct nand_chip *nand = NULL;
 	int i = 0, ChipID = 1;
@@ -1434,10 +1436,12 @@ void nand_probe(unsigned long physadr)
 
 	for (i=0; i<CFG_MAX_NAND_DEVICE; i++) {
 		if (nand_dev_desc[i].ChipID == NAND_ChipID_UNKNOWN) {
-			nand = nand_dev_desc + i;
+			nand = &nand_dev_desc[i];
 			break;
 		}
 	}
+	if (!nand)
+		return (0);
 
 	memset((char *)nand, 0, sizeof(struct nand_chip));
 
@@ -1449,7 +1453,7 @@ void nand_probe(unsigned long physadr)
 		/* no chips found, clean up and quit */
 		memset((char *)nand, 0, sizeof(struct nand_chip));
 		nand->ChipID = NAND_ChipID_UNKNOWN;
-		return;
+		return (0);
 	}
 
 	nand->ChipID = ChipID;
@@ -1459,8 +1463,10 @@ void nand_probe(unsigned long physadr)
 	nand->data_buf = malloc (nand->oobblock + nand->oobsize);
 	if (!nand->data_buf) {
 		puts ("Cannot allocate memory for data structures.\n");
-		return;
+		return (0);
 	}
+
+	return (nand->totlen);
 }
 
 #ifdef CONFIG_MTD_NAND_ECC

+ 2 - 2
common/usb_storage.c

@@ -613,7 +613,7 @@ int usb_stor_BBB_transport(ccb *srb, struct us_data *us)
 	result = usb_bulk_msg(us->pusb_dev, pipe, srb->pdata, srb->datalen, &data_actlen, USB_CNTL_TIMEOUT*5);
 	/* special handling of STALL in DATA phase */
 	if((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) {
-		printf("DATA:stall\n");
+		USB_STOR_PRINTF("DATA:stall\n");
 		/* clear the STALL on the endpoint */
 		result = usb_stor_BBB_clear_endpt_stall(us, dir_in? us->ep_in : us->ep_out);
 		if (result >= 0)
@@ -1081,8 +1081,8 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,struct us_data
 		ss->irqpipe = usb_rcvintpipe(ss->pusb_dev, ss->ep_int);
 		ss->irqmaxp = usb_maxpacket(dev, ss->irqpipe);
 		dev->irq_handle=usb_stor_irq;
-		dev->privptr=(void *)ss;
 	}
+	dev->privptr=(void *)ss;
 	return 1;
 }
 

+ 8 - 1
cpu/arm920t/usb_ohci.c

@@ -1197,8 +1197,15 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
 
 	wait_ms(10);
 	/* ohci_dump_status(&gohci); */
+	
+	/* allow more time for a BULK device to react - some are slow */
+#define BULK_TO	 2000	/* timeout in milliseconds */
+	if (usb_pipetype (pipe) == PIPE_BULK)
+		timeout = BULK_TO;
+	else
+		timeout = 100;
+
 	/* wait for it to complete */
-	timeout = 100;
 	for (;;) {
 		/* check whether the controller is done */
 		stat = hc_interrupt();

+ 4 - 2
fs/fat/fat.c

@@ -860,9 +860,11 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 		int doit = 0;
 
 		if (isdir) {
-		    dirs++;
 		    dirc = '/';
-		    doit = 1;
+		    if (s_name[0] != 0) {
+			dirs++;
+			doit = 1;
+		    }
 		} else {
 		    dirc = ' ';
 		    if (s_name[0] != 0) {

+ 1 - 1
include/linux/mtd/nand.h

@@ -193,6 +193,6 @@ struct nand_flash_dev {
 #define NAND_JFFS2_OOB8_FSDALEN		2
 #define NAND_JFFS2_OOB16_FSDALEN	8
 
-void nand_probe(unsigned long physadr);
+unsigned long nand_probe(unsigned long physadr);
 
 #endif /* __LINUX_MTD_NAND_H */

+ 1 - 1
include/version.h

@@ -24,6 +24,6 @@
 #ifndef	__VERSION_H__
 #define	__VERSION_H__
 
-#define	U_BOOT_VERSION	"U-Boot 0.4.8"
+#define	U_BOOT_VERSION	"U-Boot 1.0.0-pre"
 
 #endif	/* __VERSION_H__ */

+ 1 - 0
lib_arm/board.c

@@ -248,6 +248,7 @@ void start_armboot (void)
 #endif /* CONFIG_VFD */
 
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
+	puts ("NAND:");
 	nand_init();		/* go init the NAND */
 #endif
 

+ 1 - 1
lib_ppc/board.c

@@ -865,7 +865,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
 #if (CONFIG_COMMANDS & CFG_CMD_NAND)
 	WATCHDOG_RESET ();
-	puts ("NAND:  ");
+	puts ("NAND:");
 	nand_init();		/* go init the NAND */
 #endif