diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-11-05 20:50:39 +0100 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-11-05 20:50:39 +0100 | 
| commit | c0e5dd88c438a41bf180dde0c2dc4c67dcd8058d (patch) | |
| tree | da81a7a9b2616bfb0db1331089b390c7c92af247 | |
| parent | f6723794fd8f3362c4f3b5d0f36607a6a6f107b2 (diff) | |
| parent | c12f941bece9ed79efccfe9e4a9fd977da6975f9 (diff) | |
| download | olio-uboot-2014.01-c0e5dd88c438a41bf180dde0c2dc4c67dcd8058d.tar.xz olio-uboot-2014.01-c0e5dd88c438a41bf180dde0c2dc4c67dcd8058d.zip | |
Merge branch 'u-boot-atmel/master' into 'u-boot-arm/master'
28 files changed, 97 insertions, 12 deletions
| diff --git a/arch/arm/include/asm/arch-at91/at91_pmc.h b/arch/arm/include/asm/arch-at91/at91_pmc.h index 003920cd8..7b36f74f8 100644 --- a/arch/arm/include/asm/arch-at91/at91_pmc.h +++ b/arch/arm/include/asm/arch-at91/at91_pmc.h @@ -233,6 +233,8 @@ typedef struct at91_pmc {  #endif  #define		AT91_PMC_USBS_USB_PLLA		(0x0)		/* USB Clock Input is PLLA */  #define		AT91_PMC_USBS_USB_UPLL		(0x1)		/* USB Clock Input is UPLL */ +#define		AT91_PMC_USBS_USB_PLLB		(0x1)		/* USB Clock Input is PLLB, AT91SAM9N12 only */ +#define		AT91_PMC_USB_DIV_2		(0x1 <<  8)	/* USB Clock divided by 2 */  #define		AT91_PMC_USBDIV_8		(0x7 <<  8)	/* USB Clock divided by 8 */  #define		AT91_PMC_USBDIV_10		(0x9 <<  8)	/* USB Clock divided by 10 */ diff --git a/arch/arm/include/asm/arch-at91/at91_rstc.h b/arch/arm/include/asm/arch-at91/at91_rstc.h index 423cf515d..a9423428e 100644 --- a/arch/arm/include/asm/arch-at91/at91_rstc.h +++ b/arch/arm/include/asm/arch-at91/at91_rstc.h @@ -38,4 +38,11 @@ typedef struct at91_rstc {  #define AT91_RSTC_SR_NRSTL	0x00010000 +#define AT91_RSTC_RSTTYP		(7 << 8)	/* Reset Type */ +#define AT91_RSTC_RSTTYP_GENERAL	(0 << 8) +#define AT91_RSTC_RSTTYP_WAKEUP	(1 << 8) +#define AT91_RSTC_RSTTYP_WATCHDOG	(2 << 8) +#define AT91_RSTC_RSTTYP_SOFTWARE	(3 << 8) +#define AT91_RSTC_RSTTYP_USER		(4 << 8) +  #endif diff --git a/board/atmel/at91sam9n12ek/at91sam9n12ek.c b/board/atmel/at91sam9n12ek/at91sam9n12ek.c index 2ec32ebc2..9adc9920b 100644 --- a/board/atmel/at91sam9n12ek/at91sam9n12ek.c +++ b/board/atmel/at91sam9n12ek/at91sam9n12ek.c @@ -199,6 +199,13 @@ void at91sam9n12ek_ks8851_hw_init(void)  }  #endif +#ifdef CONFIG_USB_ATMEL +void at91sam9n12ek_usb_hw_init(void) +{ +	at91_set_pio_output(AT91_PIO_PORTB, 7, 0); +} +#endif +  int board_early_init_f(void)  {  	/* Enable clocks for all PIOs */ @@ -230,6 +237,10 @@ int board_init(void)  	at91sam9n12ek_ks8851_hw_init();  #endif +#ifdef CONFIG_USB_ATMEL +	at91sam9n12ek_usb_hw_init(); +#endif +  	return 0;  } diff --git a/drivers/net/macb.c b/drivers/net/macb.c index bf3983a00..781a272cf 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -621,6 +621,24 @@ static u32 gem_mdc_clk_div(int id, struct macb_device *macb)  	return config;  } +/* + * Get the DMA bus width field of the network configuration register that we + * should program. We find the width from decoding the design configuration + * register to find the maximum supported data bus width. + */ +static u32 macb_dbw(struct macb_device *macb) +{ +	switch (GEM_BFEXT(DBWDEF, gem_readl(macb, DCFG1))) { +	case 4: +		return GEM_BF(DBW, GEM_DBW128); +	case 2: +		return GEM_BF(DBW, GEM_DBW64); +	case 1: +	default: +		return GEM_BF(DBW, GEM_DBW32); +	} +} +  int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)  {  	struct macb_device *macb; @@ -665,7 +683,7 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)  	 */  	if (macb_is_gem(macb)) {  		ncfgr = gem_mdc_clk_div(id, macb); -		ncfgr |= GEM_BF(DBW, 1); +		ncfgr |= macb_dbw(macb);  	} else {  		ncfgr = macb_mdc_clk_div(id, macb);  	} diff --git a/drivers/net/macb.h b/drivers/net/macb.h index de5214fe6..06f7c66df 100644 --- a/drivers/net/macb.h +++ b/drivers/net/macb.h @@ -58,6 +58,9 @@  #define MACB_WOL				0x00c4  #define MACB_MID				0x00fc +/* GEM specific register offsets */ +#define GEM_DCFG1				0x0280 +  /* Bitfields in NCR */  #define MACB_LB_OFFSET				0  #define MACB_LB_SIZE				1 @@ -242,6 +245,14 @@  #define MACB_IDNUM_SIZE				16  /* Bitfields in DCFG1 */ +#define GEM_DBWDEF_OFFSET			25 +#define GEM_DBWDEF_SIZE				3 + +/* constants for data bus width */ +#define GEM_DBW32				0 +#define GEM_DBW64				1 +#define GEM_DBW128				2 +  /* Constants for CLK */  #define MACB_CLK_DIV8				0  #define MACB_CLK_DIV16				1 diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 9e90d5908..c24505e78 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -18,15 +18,15 @@ int usb_cpu_init(void)  {  	at91_pmc_t *pmc	= (at91_pmc_t *)ATMEL_BASE_PMC; -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ -    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \ -    defined(CONFIG_AT91SAM9261) +#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB  	/* Enable PLLB */  	writel(get_pllb_init(), &pmc->pllbr);  	while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB)  		; -#elif defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \ -	defined(CONFIG_AT91SAM9X5) || defined(CONFIG_SAMA5D3) +#ifdef CONFIG_AT91SAM9N12 +	writel(AT91_PMC_USBS_USB_PLLB | AT91_PMC_USB_DIV_2, &pmc->usb); +#endif +#elif defined(CONFIG_USB_ATMEL_CLK_SEL_UPLL)  	/* Enable UPLL */  	writel(readl(&pmc->uckr) | AT91_PMC_UPLLEN | AT91_PMC_BIASEN,  		&pmc->uckr); @@ -70,14 +70,15 @@ int usb_cpu_stop(void)  	writel(ATMEL_PMC_UHP, &pmc->scdr);  #endif -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ -    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) +#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB +#ifdef CONFIG_AT91SAM9N12 +	writel(0, &pmc->usb); +#endif  	/* Disable PLLB */  	writel(0, &pmc->pllbr);  	while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != 0)  		; -#elif defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \ -	defined(CONFIG_AT91SAM9X5) || defined(CONFIG_SAMA5D3) +#elif defined(CONFIG_USB_ATMEL_CLK_SEL_UPLL)  	/* Disable UPLL */  	writel(readl(&pmc->uckr) & (~AT91_PMC_UPLLEN), &pmc->uckr);  	while ((readl(&pmc->sr) & AT91_PMC_LOCKU) == AT91_PMC_LOCKU) diff --git a/include/configs/afeb9260.h b/include/configs/afeb9260.h index be2f20705..d99d6719a 100644 --- a/include/configs/afeb9260.h +++ b/include/configs/afeb9260.h @@ -112,6 +112,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/at91rm9200ek.h b/include/configs/at91rm9200ek.h index e158b0dd2..27e32e24e 100644 --- a/include/configs/at91rm9200ek.h +++ b/include/configs/at91rm9200ek.h @@ -154,6 +154,7 @@   * USB Config   */  #define CONFIG_USB_ATMEL			1 +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW			1  #define CONFIG_USB_KEYBOARD			1  #define CONFIG_USB_STORAGE			1 diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h index d7fd6b089..248d6ee73 100644 --- a/include/configs/at91sam9260ek.h +++ b/include/configs/at91sam9260ek.h @@ -185,6 +185,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW		1  #define CONFIG_SYS_USB_OHCI_CPU_INIT		1  #define CONFIG_SYS_USB_OHCI_REGS_BASE		0x00500000	/* AT91SAM9260_UHP_BASE */ diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h index af5660439..819ae72bc 100644 --- a/include/configs/at91sam9261ek.h +++ b/include/configs/at91sam9261ek.h @@ -146,6 +146,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h index 40e167c10..e3faec729 100644 --- a/include/configs/at91sam9263ek.h +++ b/include/configs/at91sam9263ek.h @@ -279,6 +279,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW		1  #define CONFIG_DOS_PARTITION		1  #define CONFIG_SYS_USB_OHCI_CPU_INIT		1 diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h index 28a79258d..4cdaed178 100644 --- a/include/configs/at91sam9n12ek.h +++ b/include/configs/at91sam9n12ek.h @@ -83,6 +83,7 @@  #define CONFIG_CMD_SF  #define CONFIG_CMD_MMC  #define CONFIG_CMD_FAT +#define CONFIG_CMD_USB  #define CONFIG_NR_DRAM_BANKS		1  #define CONFIG_SYS_SDRAM_BASE		0x20000000 @@ -163,6 +164,18 @@  #define CONFIG_SYS_MEMTEST_START	CONFIG_SYS_SDRAM_BASE  #define CONFIG_SYS_MEMTEST_END		0x26e00000 +/* USB host */ +#ifdef CONFIG_CMD_USB +#define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB +#define CONFIG_USB_OHCI_NEW +#define CONFIG_SYS_USB_OHCI_CPU_INIT +#define CONFIG_SYS_USB_OHCI_REGS_BASE	ATMEL_BASE_OHCI +#define CONFIG_SYS_USB_OHCI_SLOT_NAME	"at91sam9n12" +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	1 +#define CONFIG_USB_STORAGE +#endif +  #ifdef CONFIG_SYS_USE_SPIFLASH  /* bootstrap + u-boot + env + linux in dataflash on CS0 */ diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h index 4a2ac9aab..cb57be0b5 100644 --- a/include/configs/at91sam9x5ek.h +++ b/include/configs/at91sam9x5ek.h @@ -159,13 +159,14 @@  #define CONFIG_USB_EHCI_ATMEL  #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS	2  #else +#define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_UPLL  #define CONFIG_USB_OHCI_NEW  #define CONFIG_SYS_USB_OHCI_CPU_INIT  #define CONFIG_SYS_USB_OHCI_REGS_BASE		ATMEL_BASE_OHCI  #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9x5"  #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	3  #endif -#define CONFIG_USB_ATMEL  #define CONFIG_USB_STORAGE  #endif diff --git a/include/configs/cpu9260.h b/include/configs/cpu9260.h index 5b79ace5f..796dfc39a 100644 --- a/include/configs/cpu9260.h +++ b/include/configs/cpu9260.h @@ -346,6 +346,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/cpuat91.h b/include/configs/cpuat91.h index 6742dbcd9..67732de3a 100644 --- a/include/configs/cpuat91.h +++ b/include/configs/cpuat91.h @@ -160,6 +160,7 @@  #if defined(CONFIG_CMD_USB)  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_USB_STORAGE  #define CONFIG_DOS_PARTITION diff --git a/include/configs/eb_cpux9k2.h b/include/configs/eb_cpux9k2.h index b8e672f82..5c2c73ad4 100644 --- a/include/configs/eb_cpux9k2.h +++ b/include/configs/eb_cpux9k2.h @@ -36,7 +36,7 @@  #define CONFIG_SYS_TEXT_BASE		0x00000000  #else  #define CONFIG_SKIP_LOWLEVEL_INIT -#define CONFIG_SYS_TEXT_BASE		0x21f00000 +#define CONFIG_SYS_TEXT_BASE		0x21800000  #endif  #define CONFIG_SYS_LOAD_ADDR		0x21000000  /* default load address */  #define CONFIG_STANDALONE_LOAD_ADDR	0x21000000 @@ -133,6 +133,7 @@  #define CONFIG_CMD_UBI  #define CONFIG_CMD_MTDPARTS  #define CONFIG_CMD_UBIFS +  #define CONFIG_SYS_LONGHELP  /* @@ -162,6 +163,7 @@   * Hardware drivers   */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_AT91C_PQFP_UHPBUG  #define CONFIG_USB_STORAGE diff --git a/include/configs/ethernut5.h b/include/configs/ethernut5.h index adf14be36..7fd0b5186 100644 --- a/include/configs/ethernut5.h +++ b/include/configs/ethernut5.h @@ -178,6 +178,7 @@  /* USB */  #ifdef CONFIG_CMD_USB  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_SYS_USB_OHCI_CPU_INIT  #define CONFIG_SYS_USB_OHCI_REGS_BASE	0x00500000 diff --git a/include/configs/meesc.h b/include/configs/meesc.h index d2ec83cd1..46a8e012c 100644 --- a/include/configs/meesc.h +++ b/include/configs/meesc.h @@ -157,6 +157,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/otc570.h b/include/configs/otc570.h index 543209cb9..d5eba587e 100644 --- a/include/configs/otc570.h +++ b/include/configs/otc570.h @@ -207,6 +207,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/pm9261.h b/include/configs/pm9261.h index 67b40b2fc..792f4cd41 100644 --- a/include/configs/pm9261.h +++ b/include/configs/pm9261.h @@ -245,6 +245,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW			1  #define CONFIG_DOS_PARTITION			1  #define CONFIG_SYS_USB_OHCI_CPU_INIT		1 diff --git a/include/configs/pm9263.h b/include/configs/pm9263.h index 2b4335e78..ff379a54b 100644 --- a/include/configs/pm9263.h +++ b/include/configs/pm9263.h @@ -272,6 +272,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW			1  #define CONFIG_DOS_PARTITION			1  #define CONFIG_SYS_USB_OHCI_CPU_INIT		1 diff --git a/include/configs/pm9g45.h b/include/configs/pm9g45.h index 7d16bd8b2..f15ae6dd7 100644 --- a/include/configs/pm9g45.h +++ b/include/configs/pm9g45.h @@ -120,6 +120,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_UPLL  #define CONFIG_USB_OHCI_NEW		1  #define CONFIG_DOS_PARTITION		1  #define CONFIG_SYS_USB_OHCI_CPU_INIT	1 diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h index 79c00684d..924d7faba 100644 --- a/include/configs/sama5d3xek.h +++ b/include/configs/sama5d3xek.h @@ -153,6 +153,7 @@  #ifdef CONFIG_CMD_USB  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_UPLL  #define CONFIG_USB_OHCI_NEW  #define CONFIG_SYS_USB_OHCI_CPU_INIT  #define CONFIG_SYS_USB_OHCI_REGS_BASE		ATMEL_BASE_OHCI diff --git a/include/configs/sbc35_a9g20.h b/include/configs/sbc35_a9g20.h index 4ba224252..3cf693bdc 100644 --- a/include/configs/sbc35_a9g20.h +++ b/include/configs/sbc35_a9g20.h @@ -119,6 +119,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/snapper9260.h b/include/configs/snapper9260.h index 17eb5f245..c5de89e1f 100644 --- a/include/configs/snapper9260.h +++ b/include/configs/snapper9260.h @@ -65,6 +65,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/stamp9g20.h b/include/configs/stamp9g20.h index a9973315c..95fc26ba9 100644 --- a/include/configs/stamp9g20.h +++ b/include/configs/stamp9g20.h @@ -165,6 +165,7 @@  /* USB configuration */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_USB_STORAGE  #define CONFIG_DOS_PARTITION diff --git a/include/configs/top9000.h b/include/configs/top9000.h index a6d692872..159a8bca1 100644 --- a/include/configs/top9000.h +++ b/include/configs/top9000.h @@ -174,6 +174,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT diff --git a/include/configs/vl_ma2sc.h b/include/configs/vl_ma2sc.h index e171ae4c4..f5d856493 100644 --- a/include/configs/vl_ma2sc.h +++ b/include/configs/vl_ma2sc.h @@ -116,6 +116,7 @@  /* USB */  #define CONFIG_USB_ATMEL +#define CONFIG_USB_ATMEL_CLK_SEL_PLLB  #define CONFIG_USB_OHCI_NEW  #define CONFIG_DOS_PARTITION  #define CONFIG_SYS_USB_OHCI_CPU_INIT |