* 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
master
wdenk 21 years ago
parent 7205e4075d
commit a43278a43d
  1. 11
      CHANGELOG
  2. 10
      board/at91rm9200dk/at91rm9200dk.c
  3. 10
      board/dave/PPChameleonEVB/PPChameleonEVB.c
  4. 10
      board/esd/ash405/ash405.c
  5. 9
      board/mpl/vcma9/vcma9.c
  6. 11
      board/netvia/netvia.c
  7. 8
      board/sixnet/sixnet.c
  8. 16
      common/cmd_nand.c
  9. 4
      common/usb_storage.c
  10. 9
      cpu/arm920t/usb_ohci.c
  11. 6
      fs/fat/fat.c
  12. 2
      include/linux/mtd/nand.h
  13. 2
      include/version.h
  14. 1
      lib_arm/board.c
  15. 2
      lib_ppc/board.c

@ -1,4 +1,15 @@
====================================================================== ======================================================================
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: Changes for U-Boot 0.4.8:
====================================================================== ======================================================================

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

@ -255,16 +255,20 @@ int testdram (void)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
#if (CONFIG_COMMANDS & CFG_CMD_NAND) #if (CONFIG_COMMANDS & CFG_CMD_NAND)
extern void extern ulong
nand_probe(ulong physadr); nand_probe(ulong physadr);
void void
nand_init(void) nand_init(void)
{ {
ulong totlen;
debug ("Probing at 0x%.8x\n", CFG_NAND0_BASE); 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); 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 #endif

@ -239,15 +239,11 @@ int testdram (void)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
#if (CONFIG_COMMANDS & CFG_CMD_NAND) #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) void nand_init(void)
{ {
nand_probe(CFG_NAND_BASE); unsigned long totlen = nand_probe(CFG_NAND_BASE);
if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
puts("NAND: "); printf ("%4lu MB\n", totlen >> 20);
print_size(nand_dev_desc[0].totlen, "\n");
}
} }
#endif #endif

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

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

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

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

@ -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); 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 */ /* special handling of STALL in DATA phase */
if((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) { 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 */ /* clear the STALL on the endpoint */
result = usb_stor_BBB_clear_endpt_stall(us, dir_in? us->ep_in : us->ep_out); result = usb_stor_BBB_clear_endpt_stall(us, dir_in? us->ep_in : us->ep_out);
if (result >= 0) 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->irqpipe = usb_rcvintpipe(ss->pusb_dev, ss->ep_int);
ss->irqmaxp = usb_maxpacket(dev, ss->irqpipe); ss->irqmaxp = usb_maxpacket(dev, ss->irqpipe);
dev->irq_handle=usb_stor_irq; dev->irq_handle=usb_stor_irq;
dev->privptr=(void *)ss;
} }
dev->privptr=(void *)ss;
return 1; return 1;
} }

@ -1197,8 +1197,15 @@ int submit_common_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
wait_ms(10); wait_ms(10);
/* ohci_dump_status(&gohci); */ /* 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 */ /* wait for it to complete */
timeout = 100;
for (;;) { for (;;) {
/* check whether the controller is done */ /* check whether the controller is done */
stat = hc_interrupt(); stat = hc_interrupt();

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

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

@ -24,6 +24,6 @@
#ifndef __VERSION_H__ #ifndef __VERSION_H__
#define __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__ */ #endif /* __VERSION_H__ */

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

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

Loading…
Cancel
Save