[U-Boot] [PATCH] AT91: Enable PLLB for USB

Stelian Pop stelian at popies.net
Thu Nov 6 22:55:58 CET 2008


Le jeudi 06 novembre 2008 à 20:27 +0100, Jean-Christophe
PLAGNIOL-VILLARD a écrit :
> On 18:07 Tue 21 Oct     , Stelian Pop wrote:
> > 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
> > 
> > This patch also defines CONFIG_USB_STORAGE and CONFIG_CMD_FAT for all
> > the relevant AT91CAP9/AT91SAM9 boards.
> > 
> > Signed-off-by: Stelian Pop <stelian at popies.net>
> > ---
> >  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(-)
> 
> failed to apply
> 
> could you rebase it against u-boot-at91?

Here it is.

Thanks,

Stelian.

--------------------------------
>From 87abe92b4c34d8deb58f0743d2f4ffca3bd8bf6c Mon Sep 17 00:00:00 2001
From: Stelian Pop <stelian at popies.net>
Date: Thu, 6 Nov 2008 22:51:32 +0100
Subject: [PATCH] AT91: Enable PLLB for USB

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

This patch also defines CONFIG_USB_STORAGE and CONFIG_CMD_FAT for all
the relevant AT91CAP9/AT91SAM9 boards.

Signed-off-by: Stelian Pop <stelian at popies.net>
---
 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 7cb082d..2f5c337 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 667e049..aeb06ac 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 CONFIG_SYS_HZ		1000000		/* 1us resolution */
 
 #define AT91_SLOW_CLOCK		32768	/* slow clock */
@@ -137,6 +138,8 @@
 #define CONFIG_SYS_USB_OHCI_REGS_BASE		0x00700000	/* AT91_BASE_UHP */
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91cap9"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
+#define CONFIG_USB_STORAGE		1
+#define CONFIG_CMD_FAT			1
 
 #define CONFIG_SYS_LOAD_ADDR			0x72000000	/* load address */
 
diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
index 81c8d39..fbc470f 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 CONFIG_SYS_HZ		1000000		/* 1us resolution */
 
 #define AT91_SLOW_CLOCK		32768	/* slow clock */
@@ -123,6 +124,7 @@
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9260"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
 #define CONFIG_USB_STORAGE		1
+#define CONFIG_CMD_FAT			1
 
 #define CONFIG_SYS_LOAD_ADDR			0x22000000	/* load address */
 
diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h
index efe35a4..bd66823 100644
--- a/include/configs/at91sam9261ek.h
+++ b/include/configs/at91sam9261ek.h
@@ -137,6 +137,7 @@
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9261"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
 #define CONFIG_USB_STORAGE		1
+#define CONFIG_CMD_FAT			1
 
 #define CONFIG_SYS_LOAD_ADDR			0x22000000	/* load address */
 
diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h
index ef5b666..a2b09ca 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 CONFIG_SYS_HZ		1000000		/* 1us resolution */
 
 #define AT91_SLOW_CLOCK		32768	/* slow clock */
@@ -143,6 +144,7 @@
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9263"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
 #define CONFIG_USB_STORAGE		1
+#define CONFIG_CMD_FAT			1
 
 #define CONFIG_SYS_LOAD_ADDR			0x22000000	/* load address */
 
-- 
1.5.4.3


-- 
Stelian Pop <stelian at popies.net>



More information about the U-Boot mailing list