diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-13 15:00:22 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-13 15:00:22 +0000 | 
| commit | 4de3a8e101150feaefa1139611a50ff37467f33e (patch) | |
| tree | daada742542518b02d7db7c5d32e715eaa5f166d /arch/arm/mach-at91/setup.c | |
| parent | 294064f58953f9964e5945424b09c51800330a83 (diff) | |
| parent | 099469502f62fbe0d7e4f0b83a2f22538367f734 (diff) | |
| download | olio-linux-3.10-4de3a8e101150feaefa1139611a50ff37467f33e.tar.xz olio-linux-3.10-4de3a8e101150feaefa1139611a50ff37467f33e.zip  | |
Merge branch 'master' into fixes
Diffstat (limited to 'arch/arm/mach-at91/setup.c')
| -rw-r--r-- | arch/arm/mach-at91/setup.c | 26 | 
1 files changed, 21 insertions, 5 deletions
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index cf98a8f94dc..8bdcc3cb601 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c @@ -8,6 +8,7 @@  #include <linux/module.h>  #include <linux/io.h>  #include <linux/mm.h> +#include <linux/pm.h>  #include <asm/mach/map.h> @@ -15,6 +16,7 @@  #include <mach/cpu.h>  #include <mach/at91_dbgu.h>  #include <mach/at91_pmc.h> +#include <mach/at91_shdwc.h>  #include "soc.h"  #include "generic.h" @@ -73,9 +75,6 @@ static struct map_desc at91_io_desc __initdata = {  	.type		= MT_DEVICE,  }; -#define AT91_DBGU0	0xfffff200 -#define AT91_DBGU1	0xffffee00 -  static void __init soc_detect(u32 dbgu_base)  {  	u32 cidr, socid; @@ -248,9 +247,9 @@ void __init at91_map_io(void)  	at91_soc_initdata.type = AT91_SOC_NONE;  	at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE; -	soc_detect(AT91_DBGU0); +	soc_detect(AT91_BASE_DBGU0);  	if (!at91_soc_is_detected()) -		soc_detect(AT91_DBGU1); +		soc_detect(AT91_BASE_DBGU1);  	if (!at91_soc_is_detected())  		panic("AT91: Impossible to detect the SOC type"); @@ -267,8 +266,25 @@ void __init at91_map_io(void)  		at91_boot_soc.map_io();  } +void __iomem *at91_shdwc_base = NULL; + +static void at91sam9_poweroff(void) +{ +	at91_shdwc_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); +} + +void __init at91_ioremap_shdwc(u32 base_addr) +{ +	at91_shdwc_base = ioremap(base_addr, 16); +	if (!at91_shdwc_base) +		panic("Impossible to ioremap at91_shdwc_base\n"); +	pm_power_off = at91sam9_poweroff; +} +  void __init at91_initialize(unsigned long main_clock)  { +	at91_boot_soc.ioremap_registers(); +  	/* Init clock subsystem */  	at91_clock_init(main_clock);  |