diff options
| author | Wolfgang Denk <wd@denx.de> | 2010-11-17 20:54:39 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-11-17 20:54:39 +0100 | 
| commit | d7b1970015e62d37b26bb6b94b64ae36728c63cc (patch) | |
| tree | 616f994080fb1c0c204e2a77d7a2bb574ba9521d /arch/arm | |
| parent | 8ad25bf8d9233eb7d0b614612108622a59069354 (diff) | |
| parent | 858ecd9ac3434e011e84d5fd9013bd1ee199dbdc (diff) | |
| download | olio-uboot-2014.01-d7b1970015e62d37b26bb6b94b64ae36728c63cc.tar.xz olio-uboot-2014.01-d7b1970015e62d37b26bb6b94b64ae36728c63cc.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/cpu/arm1136/start.S | 16 | ||||
| -rw-r--r-- | arch/arm/cpu/arm1136/u-boot.lds | 38 | ||||
| -rw-r--r-- | arch/arm/cpu/arm1176/u-boot.lds | 37 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/u-boot.lds | 30 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/omap3/sdrc.c | 7 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/start.S | 24 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/u-boot.lds | 46 | ||||
| -rw-r--r-- | arch/arm/cpu/pxa/u-boot.lds | 35 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/at91_shdwn.h | 38 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/at91sam9260.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/hardware.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/memory-map.h | 1 | ||||
| -rw-r--r-- | arch/arm/lib/cache.c | 2 | 
13 files changed, 154 insertions, 122 deletions
| diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S index aecc943c8..eec8bee7e 100644 --- a/arch/arm/cpu/arm1136/start.S +++ b/arch/arm/cpu/arm1136/start.S @@ -104,22 +104,6 @@ _bss_start_ofs:  _bss_end_ofs:  	.word _end - _start -.globl _datarel_start_ofs -_datarel_start_ofs: -	.word __datarel_start - _start - -.globl _datarelrolocal_start_ofs -_datarelrolocal_start_ofs: -	.word __datarelrolocal_start - _start - -.globl _datarellocal_start_ofs -_datarellocal_start_ofs: -	.word __datarellocal_start - _start - -.globl _datarelro_start_ofs -_datarelro_start_ofs: -	.word __datarelro_start - _start -  #ifdef CONFIG_USE_IRQ  /* IRQ stack memory (calculated at run-time) */  .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm1136/u-boot.lds b/arch/arm/cpu/arm1136/u-boot.lds index 31f43f0e0..253adbe47 100644 --- a/arch/arm/cpu/arm1136/u-boot.lds +++ b/arch/arm/cpu/arm1136/u-boot.lds @@ -20,7 +20,8 @@   *   * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   * GNU General Public License for more details.   *   * You should have received a copy of the GNU General Public License @@ -49,23 +50,9 @@ SECTIONS  	. = ALIGN(4);  	.data : {  		*(.data) -	__datarel_start = .; -		*(.data.rel) -	__datarelrolocal_start = .; -		*(.data.rel.ro.local) -	__datarellocal_start = .; -		*(.data.rel.local) -	__datarelro_start = .; -		*(.data.rel.ro)  	}  	. = ALIGN(4); -	__rel_dyn_start = .; -	.rel.dyn : { *(.rel.dyn) } -	__rel_dyn_end = .; - -	__dynsym_start = .; -	.dynsym : { *(.dynsym) }  	. = .;  	__u_boot_cmd_start = .; @@ -73,9 +60,24 @@ SECTIONS  	__u_boot_cmd_end = .;  	. = ALIGN(4); -	__bss_start = .; -	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } -	_end = .; + +	.rel.dyn : { +		__rel_dyn_start = .; +		*(.rel*) +		__rel_dyn_end = .; +	} + +	.dynsym : { +		__dynsym_start = .; +		*(.dynsym) +	} + +	.bss __rel_dyn_start (OVERLAY) : { +		__bss_start = .; +		*(.bss) +		 . = ALIGN(4); +		_end = .; +	}  	/DISCARD/ : { *(.dynstr*) }  	/DISCARD/ : { *(.dynamic*) } diff --git a/arch/arm/cpu/arm1176/u-boot.lds b/arch/arm/cpu/arm1176/u-boot.lds index d9ed95405..fe3180053 100644 --- a/arch/arm/cpu/arm1176/u-boot.lds +++ b/arch/arm/cpu/arm1176/u-boot.lds @@ -41,33 +41,32 @@ SECTIONS  	. = ALIGN(4);  	.data : {  		*(.data) -	__datarel_start = .; -		*(.data.rel) -	__datarelrolocal_start = .; -		*(.data.rel.ro.local) -	__datarellocal_start = .; -		*(.data.rel.local) -	__datarelro_start = .; -		*(.data.rel.ro)  	} -	. = ALIGN(4); -	__rel_dyn_start = .; -	.rel.dyn : { *(.rel.dyn) } -	__rel_dyn_end = .; - -	__dynsym_start = .; -	.dynsym : { *(.dynsym) } -  	. = .;  	__u_boot_cmd_start = .;  	.u_boot_cmd : { *(.u_boot_cmd) }  	__u_boot_cmd_end = .;  	. = ALIGN(4); -	__bss_start = .; -	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } -	_end = .; + +	.rel.dyn : { +		__rel_dyn_start = .; +		*(.rel*) +		__rel_dyn_end = .; +	} + +	.dynsym : { +		__dynsym_start = .; +		*(.dynsym) +	} + +	.bss __rel_dyn_start (OVERLAY) : { +		__bss_start = .; +		*(.bss) +		 . = ALIGN(4); +		_end = .; +	}  	/DISCARD/ : { *(.dynstr*) }  	/DISCARD/ : { *(.dynamic*) } diff --git a/arch/arm/cpu/arm926ejs/u-boot.lds b/arch/arm/cpu/arm926ejs/u-boot.lds index 72f45f800..28c91f937 100644 --- a/arch/arm/cpu/arm926ejs/u-boot.lds +++ b/arch/arm/cpu/arm926ejs/u-boot.lds @@ -45,24 +45,30 @@ SECTIONS  	. = ALIGN(4); -	__rel_dyn_start = .; -	.rel.dyn : { *(.rel.dyn) } -	__rel_dyn_end = .; - -	__dynsym_start = .; -	.dynsym : { *(.dynsym) } - -	. = ALIGN(4); -  	. = .;  	__u_boot_cmd_start = .;  	.u_boot_cmd : { *(.u_boot_cmd) }  	__u_boot_cmd_end = .;  	. = ALIGN(4); -	__bss_start = .; -	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } -	_end = .; + +	.rel.dyn : { +		__rel_dyn_start = .; +		*(.rel*) +		__rel_dyn_end = .; +	} + +	.dynsym : { +		__dynsym_start = .; +		*(.dynsym) +	} + +	.bss __rel_dyn_start (OVERLAY) : { +		__bss_start = .; +		*(.bss) +		 . = ALIGN(4); +		_end = .; +	}  	/DISCARD/ : { *(.dynstr*) }  	/DISCARD/ : { *(.dynamic*) } diff --git a/arch/arm/cpu/armv7/omap3/sdrc.c b/arch/arm/cpu/armv7/omap3/sdrc.c index c75aa1d11..a4979ce61 100644 --- a/arch/arm/cpu/armv7/omap3/sdrc.c +++ b/arch/arm/cpu/armv7/omap3/sdrc.c @@ -149,6 +149,13 @@ void do_sdrc_init(u32 cs, u32 early)  			&sdrc_actim_base1->ctrla);  		writel(readl(&sdrc_actim_base0->ctrlb),  			&sdrc_actim_base1->ctrlb); + +		writel(CMD_NOP, &sdrc_base->cs[cs].manual); +		writel(CMD_PRECHARGE, &sdrc_base->cs[cs].manual); +		writel(CMD_AUTOREFRESH, &sdrc_base->cs[cs].manual); +		writel(CMD_AUTOREFRESH, &sdrc_base->cs[cs].manual); +		writel(readl(&sdrc_base->cs[CS0].mr), +			&sdrc_base->cs[CS1].mr);  	}  	/* diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index bb3948d40..2dfdafe98 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -98,30 +98,6 @@ FIQ_STACK_START:  IRQ_STACK_START_IN:  	.word	0x0badc0de -.globl _datarel_start_ofs -_datarel_start_ofs: -	.word __datarel_start - _start - -.globl _datarelrolocal_start_ofs -_datarelrolocal_start_ofs: -	.word __datarelrolocal_start - _start - -.globl _datarellocal_start_ofs -_datarellocal_start_ofs: -	.word __datarellocal_start - _start - -.globl _datarelro_start_ofs -_datarelro_start_ofs: -	.word __datarelro_start - _start - -.globl _got_start_ofs -_got_start_ofs: -	.word __got_start - _start - -.globl _got_end_Ofs -_got_end_ofs: -	.word __got_end - _start -  /*   * the actual reset code   */ diff --git a/arch/arm/cpu/armv7/u-boot.lds b/arch/arm/cpu/armv7/u-boot.lds index 88a0fecd8..5725c30c6 100644 --- a/arch/arm/cpu/armv7/u-boot.lds +++ b/arch/arm/cpu/armv7/u-boot.lds @@ -44,34 +44,38 @@ SECTIONS  	. = ALIGN(4);  	.data : {  		*(.data) -	__datarel_start = .; -		*(.data.rel) -	__datarelrolocal_start = .; -		*(.data.rel.ro.local) -	__datarellocal_start = .; -		*(.data.rel.local) -	__datarelro_start = .; -		*(.data.rel.ro)  	} -	. = ALIGN(4); -	__rel_dyn_start = .; -	.rel.dyn : { *(.rel.dyn) } -	__rel_dyn_end = .; - -	__dynsym_start = .; -	.dynsym : { *(.dynsym) } -	__got_start = .;  	. = ALIGN(4); -	.got : { *(.got) } -	__got_end = .; +	. = .;  	__u_boot_cmd_start = .;  	.u_boot_cmd : { *(.u_boot_cmd) }  	__u_boot_cmd_end = .;  	. = ALIGN(4); -	__bss_start = .; -	.bss : { *(.bss) } -	_end = .; + +	.rel.dyn : { +		__rel_dyn_start = .; +		*(.rel*) +		__rel_dyn_end = .; +	} + +	.dynsym : { +		__dynsym_start = .; +		*(.dynsym) +	} + +	.bss __rel_dyn_start (OVERLAY) : { +		__bss_start = .; +		*(.bss) +		 . = ALIGN(4); +		_end = .; +	} + +	/DISCARD/ : { *(.dynstr*) } +	/DISCARD/ : { *(.dynamic*) } +	/DISCARD/ : { *(.plt*) } +	/DISCARD/ : { *(.interp*) } +	/DISCARD/ : { *(.gnu*) }  } diff --git a/arch/arm/cpu/pxa/u-boot.lds b/arch/arm/cpu/pxa/u-boot.lds index d6643f952..0818d0b6e 100644 --- a/arch/arm/cpu/pxa/u-boot.lds +++ b/arch/arm/cpu/pxa/u-boot.lds @@ -44,14 +44,6 @@ SECTIONS  	}  	. = ALIGN(4); -	__rel_dyn_start = .; -	.rel.dyn : { *(.rel.dyn) } -	__rel_dyn_end = .; - -	__dynsym_start = .; -	.dynsym : { *(.dynsym) } - -	. = ALIGN(4);  	. = .;  	__u_boot_cmd_start = .; @@ -59,7 +51,28 @@ SECTIONS  	__u_boot_cmd_end = .;  	. = ALIGN(4); -	__bss_start = .; -	.bss (NOLOAD) : { *(.bss) . = ALIGN(4); } -	_end = .; + +	.rel.dyn : { +		__rel_dyn_start = .; +		*(.rel*) +		__rel_dyn_end = .; +	} + +	.dynsym : { +		__dynsym_start = .; +		*(.dynsym) +	} + +	.bss __rel_dyn_start (OVERLAY) : { +		__bss_start = .; +		*(.bss) +		 . = ALIGN(4); +		_end = .; +	} + +	/DISCARD/ : { *(.dynstr*) } +	/DISCARD/ : { *(.dynamic*) } +	/DISCARD/ : { *(.plt*) } +	/DISCARD/ : { *(.interp*) } +	/DISCARD/ : { *(.gnu*) }  } diff --git a/arch/arm/include/asm/arch-at91/at91_shdwn.h b/arch/arm/include/asm/arch-at91/at91_shdwn.h new file mode 100644 index 000000000..874f98870 --- /dev/null +++ b/arch/arm/include/asm/arch-at91/at91_shdwn.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 + * Reinhard Meyer, reinhard.meyer@emk-elektronik.de + * + * Shutdown Controller + * Based on AT91SAM9XE datasheet + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef AT91_SHDWN_H +#define AT91_SHDWN_H + +#ifndef __ASSEMBLY__ + +struct at91_shdwn { +	u32	cr;	/* Control Rer.    WO */ +	u32	mr;	/* Mode Register   RW 0x00000003 */ +	u32	sr;	/* Status Register RO 0x00000000 */ +}; + +#endif /* __ASSEMBLY__ */ + +#define AT91_SHDW_CR_KEY	0xa5000000 +#define AT91_SHDW_CR_SHDW	0x00000001 + +#define AT91_SHDW_MR_RTTWKEN	0x00010000 +#define AT91_SHDW_MR_CPTWK0	0x000000f0 +#define AT91_SHDW_MR_WKMODE0H2L	0x00000002 +#define AT91_SHDW_MR_WKMODE0L2H	0x00000001 + +#define AT91_SHDW_SR_RTTWK	0x00010000 +#define AT91_SHDW_SR_WAKEUP0	0x00000001 + +#endif diff --git a/arch/arm/include/asm/arch-at91/at91sam9260.h b/arch/arm/include/asm/arch-at91/at91sam9260.h index cb34a94a3..7fd60b74f 100644 --- a/arch/arm/include/asm/arch-at91/at91sam9260.h +++ b/arch/arm/include/asm/arch-at91/at91sam9260.h @@ -56,6 +56,7 @@  #define AT91_PIO_BASE		0xfffff400  #define AT91_PMC_BASE		0xfffffc00  #define AT91_RSTC_BASE		0xfffffd00 +#define AT91_SHDWN_BASE		0xfffffd10  #define AT91_RTT_BASE		0xfffffd20  #define AT91_PIT_BASE		0xfffffd30  #define AT91_WDT_BASE		0xfffffd40 diff --git a/arch/arm/include/asm/arch-at91/hardware.h b/arch/arm/include/asm/arch-at91/hardware.h index f5f80e0b1..6b44d6120 100644 --- a/arch/arm/include/asm/arch-at91/hardware.h +++ b/arch/arm/include/asm/arch-at91/hardware.h @@ -23,6 +23,7 @@  #include <asm/arch/at91sam9260.h>  #define AT91_BASE_MCI	AT91SAM9260_BASE_MCI  #define AT91_BASE_SPI	AT91SAM9260_BASE_SPI0 +#define AT91_BASE_SPI1	AT91SAM9260_BASE_SPI1  #define AT91_ID_UHP	AT91SAM9260_ID_UHP  #define AT91_PMC_UHP	AT91SAM926x_PMC_UHP  #elif defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) diff --git a/arch/arm/include/asm/arch-at91/memory-map.h b/arch/arm/include/asm/arch-at91/memory-map.h index f605f37fd..d489fa215 100644 --- a/arch/arm/include/asm/arch-at91/memory-map.h +++ b/arch/arm/include/asm/arch-at91/memory-map.h @@ -31,5 +31,6 @@  #define USART2_BASE AT91_USART2  #define USART3_BASE (AT91_BASE_SYS + AT91_DBGU)  #define SPI0_BASE	AT91_BASE_SPI +#define SPI1_BASE	AT91_BASE_SPI1  #endif /* __ASM_ARM_ARCH_MEMORYMAP_H__ */ diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c index 57151689a..30686fe69 100644 --- a/arch/arm/lib/cache.c +++ b/arch/arm/lib/cache.c @@ -38,7 +38,7 @@ void  flush_cache (unsigned long dummy1, unsigned long dummy2)  	/* disable write buffer as well (page 2-22) */  	asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));  #endif -#ifdef CONFIG_ARMV7 +#ifdef CONFIG_OMAP34XX  	void v7_flush_cache_all(void);  	v7_flush_cache_all(); |