summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwdenk <wdenk>2003-09-11 19:48:06 +0000
committerwdenk <wdenk>2003-09-11 19:48:06 +0000
commita43278a43d522fba7fea0ed3045b718a9c8d22ac (patch)
treec21920a271992ce76e5e679c3e3e8bb11054d356
parent7205e4075d8b50e4dd89fe39ed03860b23cbb704 (diff)
downloadu-boot-imx-a43278a43d522fba7fea0ed3045b718a9c8d22ac.zip
u-boot-imx-a43278a43d522fba7fea0ed3045b718a9c8d22ac.tar.gz
u-boot-imx-a43278a43d522fba7fea0ed3045b718a9c8d22ac.tar.bz2
* 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
-rw-r--r--CHANGELOG11
-rw-r--r--board/at91rm9200dk/at91rm9200dk.c10
-rw-r--r--board/dave/PPChameleonEVB/PPChameleonEVB.c10
-rw-r--r--board/esd/ash405/ash405.c10
-rw-r--r--board/mpl/vcma9/vcma9.c9
-rw-r--r--board/netvia/netvia.c11
-rw-r--r--board/sixnet/sixnet.c8
-rw-r--r--common/cmd_nand.c16
-rw-r--r--common/usb_storage.c4
-rw-r--r--cpu/arm920t/usb_ohci.c9
-rw-r--r--fs/fat/fat.c6
-rw-r--r--include/linux/mtd/nand.h2
-rw-r--r--include/version.h2
-rw-r--r--lib_arm/board.c1
-rw-r--r--lib_ppc/board.c2
15 files changed, 70 insertions, 41 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 232a485..29c5a2f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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:
======================================================================
diff --git a/board/at91rm9200dk/at91rm9200dk.c b/board/at91rm9200dk/at91rm9200dk.c
index ffd9687..8a05c53 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 d015f69..47670fa 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 50dbade..edca8b2 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 <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
diff --git a/board/mpl/vcma9/vcma9.c b/board/mpl/vcma9/vcma9.c
index 1df5c38..359e565 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 9dd732b..db36b22 100644
--- a/board/netvia/netvia.c
+++ b/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
diff --git a/board/sixnet/sixnet.c b/board/sixnet/sixnet.c
index 4025b47..63c57c9 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 60cdd8e..0e49e9f 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; 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
diff --git a/common/usb_storage.c b/common/usb_storage.c
index 7089036..f95a1d3 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 41ba233..55af034 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 6a6c5be..972ef33 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 bb13431..af2033c 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 f0e19d5..ef22f7a 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 eebf5e4..6e19ddc 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 6a2686a..329bc0a 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