From a43278a43d522fba7fea0ed3045b718a9c8d22ac Mon Sep 17 00:00:00 2001 From: wdenk Date: Thu, 11 Sep 2003 19:48:06 +0000 Subject: * 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 --- CHANGELOG | 11 +++++++++++ board/at91rm9200dk/at91rm9200dk.c | 10 ++++++---- board/dave/PPChameleonEVB/PPChameleonEVB.c | 10 +++++++--- board/esd/ash405/ash405.c | 10 +++------- board/mpl/vcma9/vcma9.c | 9 +++++++-- board/netvia/netvia.c | 11 ++++------- board/sixnet/sixnet.c | 8 +++----- common/cmd_nand.c | 16 +++++++++++----- common/usb_storage.c | 4 ++-- cpu/arm920t/usb_ohci.c | 9 ++++++++- fs/fat/fat.c | 6 ++++-- include/linux/mtd/nand.h | 2 +- include/version.h | 2 +- lib_arm/board.c | 1 + lib_ppc/board.c | 2 +- 15 files changed, 70 insertions(+), 41 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 232a48597..29c5a2fb4 100644 --- a/CHANGELOG +++ b/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: ====================================================================== diff --git a/board/at91rm9200dk/at91rm9200dk.c b/board/at91rm9200dk/at91rm9200dk.c index ffd9687bf..8a05c5321 100644 --- a/board/at91rm9200dk/at91rm9200dk.c +++ b/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 diff --git a/board/dave/PPChameleonEVB/PPChameleonEVB.c b/board/dave/PPChameleonEVB/PPChameleonEVB.c index d015f69a9..47670fa21 100644 --- a/board/dave/PPChameleonEVB/PPChameleonEVB.c +++ b/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 diff --git a/board/esd/ash405/ash405.c b/board/esd/ash405/ash405.c index 50dbadedd..edca8b28c 100644 --- a/board/esd/ash405/ash405.c +++ b/board/esd/ash405/ash405.c @@ -239,15 +239,11 @@ int testdram (void) /* ------------------------------------------------------------------------- */ #if (CONFIG_COMMANDS & CFG_CMD_NAND) -#include -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 diff --git a/board/mpl/vcma9/vcma9.c b/board/mpl/vcma9/vcma9.c index 1df5c38fa..359e56576 100644 --- a/board/mpl/vcma9/vcma9.c +++ b/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 diff --git a/board/netvia/netvia.c b/board/netvia/netvia.c index 9dd732b3c..db36b228b 100644 --- a/board/netvia/netvia.c +++ b/board/netvia/netvia.c @@ -420,16 +420,13 @@ int board_pre_init(void) #include -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 diff --git a/board/sixnet/sixnet.c b/board/sixnet/sixnet.c index 4025b4789..63c57c93f 100644 --- a/board/sixnet/sixnet.c +++ b/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 diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 60cdd8eb4..0e49e9f08 100644 --- a/common/cmd_nand.c +++ b/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; iChipID = 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 diff --git a/common/usb_storage.c b/common/usb_storage.c index 70890361b..f95a1d39b 100644 --- a/common/usb_storage.c +++ b/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; } diff --git a/cpu/arm920t/usb_ohci.c b/cpu/arm920t/usb_ohci.c index 41ba233c4..55af0348d 100644 --- a/cpu/arm920t/usb_ohci.c +++ b/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(); diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 6a6c5be01..972ef33d0 100644 --- a/fs/fat/fat.c +++ b/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) { diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index bb13431dd..af2033c5b 100644 --- a/include/linux/mtd/nand.h +++ b/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 */ diff --git a/include/version.h b/include/version.h index f0e19d5bf..ef22f7ac0 100644 --- a/include/version.h +++ b/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__ */ diff --git a/lib_arm/board.c b/lib_arm/board.c index eebf5e40d..6e19ddc8c 100644 --- a/lib_arm/board.c +++ b/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 diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 6a2686aa3..329bc0a2f 100644 --- a/lib_ppc/board.c +++ b/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 -- cgit v1.2.3