Hello Stelian, 2008/10/21 Stelian Pop <[EMAIL PROTECTED]>: > At least some (old ?) versions of the AT91Bootstrap do not set up the > PLLB correctly to 48 MHz in order to make USB host function correctly. > > This patch sets up the PLLB to the same values Linux uses, and makes USB > work ok on the following CPUs: > - AT91CAP9 > - AT91SAM9260 > - AT91SAM9263
Are all your USB stick problems solved by now? Including that stick that did not work? I noticed that (with my latest patchset) sometimes a cold boot result in a non-working USB stick on my boards, but a hard reset always worked... I will try your patches tomorrow, but I have one question: > #define AT91_MAIN_CLOCK 18432000 /* 18.432 MHz crystal > */ > #define AT91_MASTER_CLOCK 100000000 /* peripheral */ > #define AT91_CPU_CLOCK 200000000 /* cpu */ Are such nice rounded values possible with that unrounded crystal? Looking at sam9261 I see: #define AT91_MAIN_CLOCK 198656000 /* from 18.432 MHz crystal */ #define AT91_MASTER_CLOCK 99328000 /* peripheral = main / 2 This seems more logical to me, but I may be wrong... Kind Regards, Remy > > This patch also defines CONFIG_USB_STORAGE and CONFIG_CMD_FAT for all > the relevant AT91CAP9/AT91SAM9 boards. > > Signed-off-by: Stelian Pop <[EMAIL PROTECTED]> > --- > cpu/arm926ejs/at91/usb.c | 18 ++++++++++++++++++ > include/configs/at91cap9adk.h | 3 +++ > include/configs/at91sam9260ek.h | 2 ++ > include/configs/at91sam9261ek.h | 1 + > include/configs/at91sam9263ek.h | 2 ++ > 5 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/cpu/arm926ejs/at91/usb.c b/cpu/arm926ejs/at91/usb.c > index 2a92f73..c02334f 100644 > --- a/cpu/arm926ejs/at91/usb.c > +++ b/cpu/arm926ejs/at91/usb.c > @@ -31,6 +31,15 @@ > > int usb_cpu_init(void) > { > + > +#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ > + defined(CONFIG_AT91SAM9263) > + /* Enable PLLB */ > + at91_sys_write(AT91_CKGR_PLLBR, CFG_AT91_PLLB); > + while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != > AT91_PMC_LOCKB) > + ; > +#endif > + > /* Enable USB host clock. */ > at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_UHP); > #ifdef CONFIG_AT91SAM9261 > @@ -51,6 +60,15 @@ int usb_cpu_stop(void) > #else > at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP); > #endif > + > +#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ > + defined(CONFIG_AT91SAM9263) > + /* Disable PLLB */ > + at91_sys_write(AT91_CKGR_PLLBR, 0); > + while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != 0) > + ; > +#endif > + > return 0; > } > > diff --git a/include/configs/at91cap9adk.h b/include/configs/at91cap9adk.h > index 1dbd3a4..47145d8 100644 > --- a/include/configs/at91cap9adk.h > +++ b/include/configs/at91cap9adk.h > @@ -32,6 +32,7 @@ > #define AT91_MAIN_CLOCK 12000000 /* 12 MHz crystal */ > #define AT91_MASTER_CLOCK 100000000 /* peripheral */ > #define AT91_CPU_CLOCK 200000000 /* cpu */ > +#define CFG_AT91_PLLB 0x10073e01 /* PLLB settings for USB */ > #define CFG_HZ 1000000 /* 1us resolution */ > > #define AT91_SLOW_CLOCK 32768 /* slow clock */ > @@ -137,6 +138,8 @@ > #define CFG_USB_OHCI_REGS_BASE 0x00700000 /* AT91_BASE_UHP */ > #define CFG_USB_OHCI_SLOT_NAME "at91cap9" > #define CFG_USB_OHCI_MAX_ROOT_PORTS 2 > +#define CONFIG_USB_STORAGE 1 > +#define CONFIG_CMD_FAT 1 > > #define CFG_LOAD_ADDR 0x72000000 /* load address */ > > diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h > index cb8857a..cd09288 100644 > --- a/include/configs/at91sam9260ek.h > +++ b/include/configs/at91sam9260ek.h > @@ -32,6 +32,7 @@ > #define AT91_MAIN_CLOCK 18432000 /* 18.432 MHz crystal > */ > #define AT91_MASTER_CLOCK 100000000 /* peripheral */ > #define AT91_CPU_CLOCK 200000000 /* cpu */ > +#define CFG_AT91_PLLB 0x107c3e18 /* PLLB settings for USB */ > #define CFG_HZ 1000000 /* 1us resolution */ > > #define AT91_SLOW_CLOCK 32768 /* slow clock */ > @@ -123,6 +124,7 @@ > #define CFG_USB_OHCI_SLOT_NAME "at91sam9260" > #define CFG_USB_OHCI_MAX_ROOT_PORTS 2 > #define CONFIG_USB_STORAGE 1 > +#define CONFIG_CMD_FAT 1 > > #define CFG_LOAD_ADDR 0x22000000 /* load address */ > > diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h > index 92e134d..aa6c6ab 100644 > --- a/include/configs/at91sam9261ek.h > +++ b/include/configs/at91sam9261ek.h > @@ -137,6 +137,7 @@ > #define CFG_USB_OHCI_SLOT_NAME "at91sam9261" > #define CFG_USB_OHCI_MAX_ROOT_PORTS 2 > #define CONFIG_USB_STORAGE 1 > +#define CONFIG_CMD_FAT 1 > > #define CFG_LOAD_ADDR 0x22000000 /* load address */ > > diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h > index c914571..1e9c5c5 100644 > --- a/include/configs/at91sam9263ek.h > +++ b/include/configs/at91sam9263ek.h > @@ -32,6 +32,7 @@ > #define AT91_MAIN_CLOCK 16367660 /* 16.367 MHz crystal > */ > #define AT91_MASTER_CLOCK 100000000 /* peripheral */ > #define AT91_CPU_CLOCK 200000000 /* cpu */ > +#define CFG_AT91_PLLB 0x133a3e8d /* PLLB settings for USB */ > #define CFG_HZ 1000000 /* 1us resolution */ > > #define AT91_SLOW_CLOCK 32768 /* slow clock */ > @@ -143,6 +144,7 @@ > #define CFG_USB_OHCI_SLOT_NAME "at91sam9263" > #define CFG_USB_OHCI_MAX_ROOT_PORTS 2 > #define CONFIG_USB_STORAGE 1 > +#define CONFIG_CMD_FAT 1 > > #define CFG_LOAD_ADDR 0x22000000 /* load address */ > > -- > 1.5.4.3 > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot