diff options
Diffstat (limited to 'arch/arm/mach-at91')
70 files changed, 669 insertions, 905 deletions
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 45db05d8d94..98a42f3472d 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig @@ -9,15 +9,6 @@ config HAVE_AT91_DBGU0  config HAVE_AT91_DBGU1  	bool -config HAVE_AT91_USART3 -	bool - -config HAVE_AT91_USART4 -	bool - -config HAVE_AT91_USART5 -	bool -  config AT91_SAM9_ALT_RESET  	bool  	default !ARCH_AT91X40 @@ -26,87 +17,121 @@ config AT91_SAM9G45_RESET  	bool  	default !ARCH_AT91X40 +config SOC_AT91SAM9 +	bool +	select GENERIC_CLOCKEVENTS +	select CPU_ARM926T +  menu "Atmel AT91 System-on-Chip" -choice -	prompt "Atmel AT91 Processor" +comment "Atmel AT91 Processor" -config ARCH_AT91RM9200 +config SOC_AT91SAM9 +	bool +	select CPU_ARM926T +	select AT91_SAM9_TIME +	select AT91_SAM9_SMC + +config SOC_AT91RM9200  	bool "AT91RM9200"  	select CPU_ARM920T  	select GENERIC_CLOCKEVENTS  	select HAVE_AT91_DBGU0 -	select HAVE_AT91_USART3 -config ARCH_AT91SAM9260 -	bool "AT91SAM9260 or AT91SAM9XE" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS +config SOC_AT91SAM9260 +	bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20" +	select SOC_AT91SAM9  	select HAVE_AT91_DBGU0 -	select HAVE_AT91_USART3 -	select HAVE_AT91_USART4 -	select HAVE_AT91_USART5  	select HAVE_NET_MACB +	help +	  Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE +	  or AT91SAM9G20 SoC. -config ARCH_AT91SAM9261 -	bool "AT91SAM9261" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS +config SOC_AT91SAM9261 +	bool "AT91SAM9261 or AT91SAM9G10" +	select SOC_AT91SAM9 +	select HAVE_AT91_DBGU0  	select HAVE_FB_ATMEL +	help +	  Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC. + +config SOC_AT91SAM9263 +	bool "AT91SAM9263" +	select SOC_AT91SAM9 +	select HAVE_AT91_DBGU1 +	select HAVE_FB_ATMEL +	select HAVE_NET_MACB + +config SOC_AT91SAM9RL +	bool "AT91SAM9RL" +	select SOC_AT91SAM9  	select HAVE_AT91_DBGU0 +	select HAVE_FB_ATMEL -config ARCH_AT91SAM9G10 -	bool "AT91SAM9G10" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS +config SOC_AT91SAM9G45 +	bool "AT91SAM9G45 or AT91SAM9M10 families" +	select SOC_AT91SAM9 +	select HAVE_AT91_DBGU1 +	select HAVE_FB_ATMEL +	select HAVE_NET_MACB +	help +	  Select this if you are using one of Atmel's AT91SAM9G45 family SoC. +	  This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11. + +config SOC_AT91SAM9X5 +	bool "AT91SAM9x5 family" +	select SOC_AT91SAM9  	select HAVE_AT91_DBGU0  	select HAVE_FB_ATMEL +	select HAVE_NET_MACB +	help +	  Select this if you are using one of Atmel's AT91SAM9x5 family SoC. +	  This means that your SAM9 name finishes with a '5' (except if it is +	  AT91SAM9G45!). +	  This support covers AT91SAM9G15, AT91SAM9G25, AT91SAM9X25, AT91SAM9G35 +	  and AT91SAM9X35. + +choice +	prompt "Atmel AT91 Processor Devices for non DT boards" + +config ARCH_AT91_NONE +	bool "None" + +config ARCH_AT91RM9200 +	bool "AT91RM9200" +	select SOC_AT91RM9200 + +config ARCH_AT91SAM9260 +	bool "AT91SAM9260 or AT91SAM9XE" +	select SOC_AT91SAM9260 + +config ARCH_AT91SAM9261 +	bool "AT91SAM9261" +	select SOC_AT91SAM9261 + +config ARCH_AT91SAM9G10 +	bool "AT91SAM9G10" +	select SOC_AT91SAM9261  config ARCH_AT91SAM9263  	bool "AT91SAM9263" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS -	select HAVE_FB_ATMEL -	select HAVE_NET_MACB -	select HAVE_AT91_DBGU1 +	select SOC_AT91SAM9263  config ARCH_AT91SAM9RL  	bool "AT91SAM9RL" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS -	select HAVE_AT91_USART3 -	select HAVE_FB_ATMEL -	select HAVE_AT91_DBGU0 +	select SOC_AT91SAM9RL  config ARCH_AT91SAM9G20  	bool "AT91SAM9G20" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS -	select HAVE_AT91_DBGU0 -	select HAVE_AT91_USART3 -	select HAVE_AT91_USART4 -	select HAVE_AT91_USART5 -	select HAVE_NET_MACB +	select SOC_AT91SAM9260  config ARCH_AT91SAM9G45  	bool "AT91SAM9G45" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS -	select HAVE_AT91_USART3 -	select HAVE_FB_ATMEL -	select HAVE_NET_MACB -	select HAVE_AT91_DBGU1 - -config ARCH_AT91SAM9X5 -	bool "AT91SAM9x5 family" -	select CPU_ARM926T -	select GENERIC_CLOCKEVENTS -	select HAVE_FB_ATMEL -	select HAVE_NET_MACB -	select HAVE_AT91_DBGU0 +	select SOC_AT91SAM9G45  config ARCH_AT91X40  	bool "AT91x40" +	depends on !MMU  	select ARCH_USES_GETTIMEOFFSET  endchoice @@ -364,6 +389,7 @@ config MACH_AT91SAM9G20EK_2MMC  	  Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit  	  with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and  	  onwards. +	  <http://www.atmel.com/tools/SAM9G20-EK.aspx>  config MACH_CPU9G20  	bool "Eukrea CPU9G20 board" @@ -433,9 +459,10 @@ comment "AT91SAM9G45 Board Type"  config MACH_AT91SAM9M10G45EK  	bool "Atmel AT91SAM9M10G45-EK Evaluation Kits"  	help -	  Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit. -	  "ES" at the end of the name means that this board is an -	  Engineering Sample. +	  Select this if you are using Atmel's AT91SAM9M10G45-EK Evaluation Kit. +	  Those boards can be populated with any SoC of AT91SAM9G45 or AT91SAM9M10 +	  families: AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11. +	  <http://www.atmel.com/tools/SAM9M10-G45-EK.aspx>  endif @@ -515,41 +542,6 @@ config AT91_TIMER_HZ  	  system clock (of at least several MHz), rounding is less of a  	  problem so it can be safer to use a decimal values like 100. -choice -	prompt "Select a UART for early kernel messages" - -config AT91_EARLY_DBGU0 -	bool "DBGU on rm9200, 9260/9g20, 9261/9g10 and 9rl" -	depends on HAVE_AT91_DBGU0 - -config AT91_EARLY_DBGU1 -	bool "DBGU on 9263 and 9g45" -	depends on HAVE_AT91_DBGU1 - -config AT91_EARLY_USART0 -	bool "USART0" - -config AT91_EARLY_USART1 -	bool "USART1" - -config AT91_EARLY_USART2 -	bool "USART2" -	depends on ! ARCH_AT91X40 - -config AT91_EARLY_USART3 -	bool "USART3" -	depends on HAVE_AT91_USART3 - -config AT91_EARLY_USART4 -	bool "USART4" -	depends on HAVE_AT91_USART4 - -config AT91_EARLY_USART5 -	bool "USART5" -	depends on HAVE_AT91_USART5 - -endchoice -  endmenu  endif diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index 8512e53bed9..79d0f60af0b 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile @@ -10,17 +10,25 @@ obj-		:=  obj-$(CONFIG_AT91_PMC_UNIT)	+= clock.o  obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o  obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o +obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam926x_time.o sam9_smc.o  # CPU-specific support -obj-$(CONFIG_ARCH_AT91RM9200)	+= at91rm9200.o at91rm9200_time.o at91rm9200_devices.o -obj-$(CONFIG_ARCH_AT91SAM9260)	+= at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9261)	+= at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9G10)	+= at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9263)	+= at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9RL)	+= at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9G20)	+= at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9G45)	+= at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o -obj-$(CONFIG_ARCH_AT91SAM9X5)	+= at91sam9x5.o at91sam926x_time.o sam9_smc.o +obj-$(CONFIG_SOC_AT91RM9200)	+= at91rm9200.o at91rm9200_time.o +obj-$(CONFIG_SOC_AT91SAM9260)	+= at91sam9260.o +obj-$(CONFIG_SOC_AT91SAM9261)	+= at91sam9261.o +obj-$(CONFIG_SOC_AT91SAM9263)	+= at91sam9263.o +obj-$(CONFIG_SOC_AT91SAM9G45)	+= at91sam9g45.o +obj-$(CONFIG_SOC_AT91SAM9X5)	+= at91sam9x5.o +obj-$(CONFIG_SOC_AT91SAM9RL)	+= at91sam9rl.o + +obj-$(CONFIG_ARCH_AT91RM9200)	+= at91rm9200_devices.o +obj-$(CONFIG_ARCH_AT91SAM9260)	+= at91sam9260_devices.o +obj-$(CONFIG_ARCH_AT91SAM9261)	+= at91sam9261_devices.o +obj-$(CONFIG_ARCH_AT91SAM9G10)	+= at91sam9261_devices.o +obj-$(CONFIG_ARCH_AT91SAM9263)	+= at91sam9263_devices.o +obj-$(CONFIG_ARCH_AT91SAM9RL)	+= at91sam9rl_devices.o +obj-$(CONFIG_ARCH_AT91SAM9G20)	+= at91sam9260_devices.o +obj-$(CONFIG_ARCH_AT91SAM9G45)	+= at91sam9g45_devices.o  obj-$(CONFIG_ARCH_AT91X40)	+= at91x40.o at91x40_time.o  # AT91RM9200 board-specific support diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index 364c19357e6..d50da1a9d0b 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c @@ -258,18 +258,6 @@ static void __init at91rm9200_register_clocks(void)  	clk_register(&pck3);  } -static struct clk_lookup console_clock_lookup; - -void __init at91rm9200_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 99ce5c955e3..99affb5d056 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c @@ -1152,14 +1152,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91rm9200_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1168,14 +1160,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else -void __init __deprecated at91_init_serial(struct at91_uart_config *config) {}  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c index dd7f782b0b9..104ca40d8d1 100644 --- a/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c @@ -23,6 +23,7 @@  #include <linux/interrupt.h>  #include <linux/irq.h>  #include <linux/clockchips.h> +#include <linux/export.h>  #include <asm/mach/time.h> @@ -176,6 +177,7 @@ static struct clock_event_device clkevt = {  };  void __iomem *at91_st_base; +EXPORT_SYMBOL_GPL(at91_st_base);  void __init at91rm9200_ioremap_st(u32 addr)  { diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 46f77423329..a27bbec50ca 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c @@ -268,18 +268,6 @@ static void __init at91sam9260_register_clocks(void)  	clk_register(&pck1);  } -static struct clk_lookup console_clock_lookup; - -void __init at91sam9260_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 5652dde4bbe..ad00fe91d37 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c @@ -1229,14 +1229,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91sam9260_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1245,13 +1237,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index 7de81e6222f..c77d503d09d 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c @@ -239,18 +239,6 @@ static void __init at91sam9261_register_clocks(void)  	clk_register(&hck1);  } -static struct clk_lookup console_clock_lookup; - -void __init at91sam9261_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 4db961a9308..9295e90b08f 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c @@ -1051,14 +1051,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91sam9261_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1067,13 +1059,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index ef301be6657..7fae36502fb 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c @@ -255,18 +255,6 @@ static void __init at91sam9263_register_clocks(void)  	clk_register(&pck3);  } -static struct clk_lookup console_clock_lookup; - -void __init at91sam9263_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index fe99206de88..dfe5bc006d5 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c @@ -1461,14 +1461,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91sam9263_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1477,13 +1469,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index d222f8333da..f2054495a65 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c @@ -288,18 +288,6 @@ static void __init at91sam9g45_register_clocks(void)  	clk_register(&pck1);  } -static struct clk_lookup console_clock_lookup; - -void __init at91sam9g45_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 6b008aee1df..db2f88c246f 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c @@ -1741,14 +1741,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91sam9g45_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1757,13 +1749,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index d9f2774f385..e420085a57e 100644 --- a/arch/arm/mach-at91/at91sam9rl.c +++ b/arch/arm/mach-at91/at91sam9rl.c @@ -232,18 +232,6 @@ static void __init at91sam9rl_register_clocks(void)  	clk_register(&pck1);  } -static struct clk_lookup console_clock_lookup; - -void __init at91sam9rl_set_console_clock(int id) -{ -	if (id >= ARRAY_SIZE(usart_clocks_lookups)) -		return; - -	console_clock_lookup.con_id = "usart"; -	console_clock_lookup.clk = usart_clocks_lookups[id].clk; -	clkdev_add(&console_clock_lookup); -} -  /* --------------------------------------------------------------------   *  GPIO   * -------------------------------------------------------------------- */ diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index fe4ae22e856..9c0b1481a9a 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c @@ -1192,14 +1192,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)  		at91_uarts[portnr] = pdev;  } -void __init at91_set_serial_console(unsigned portnr) -{ -	if (portnr < ATMEL_MAX_UART) { -		atmel_default_console_device = at91_uarts[portnr]; -		at91sam9rl_set_console_clock(at91_uarts[portnr]->id); -	} -} -  void __init at91_add_device_serial(void)  {  	int i; @@ -1208,13 +1200,9 @@ void __init at91_add_device_serial(void)  		if (at91_uarts[i])  			platform_device_register(at91_uarts[i]);  	} - -	if (!atmel_default_console_device) -		printk(KERN_INFO "AT91: No default serial console defined.\n");  }  #else  void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} -void __init at91_set_serial_console(unsigned portnr) {}  void __init at91_add_device_serial(void) {}  #endif diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c index 2628384aaae..271f994314a 100644 --- a/arch/arm/mach-at91/board-1arm.c +++ b/arch/arm/mach-at91/board-1arm.c @@ -47,20 +47,6 @@ static void __init onearm_init_early(void)  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata onearm_eth_data = { @@ -82,6 +68,16 @@ static struct at91_udc_data __initdata onearm_udc_data = {  static void __init onearm_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); + +	/* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&onearm_eth_data); diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c index 161efbaa102..b7d8aa7b81e 100644 --- a/arch/arm/mach-at91/board-afeb-9260v1.c +++ b/arch/arm/mach-at91/board-afeb-9260v1.c @@ -52,22 +52,6 @@ static void __init afeb9260_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, -			     ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR -			   | ATMEL_UART_DCD | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, -			ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -183,6 +167,18 @@ static struct at91_cf_data afeb9260_cf_data = {  static void __init afeb9260_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, +			     ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR +			   | ATMEL_UART_DCD | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, +			ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&afeb9260_usbh_data); diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c index c6d44ee0c77..29d3ef0a50f 100644 --- a/arch/arm/mach-at91/board-cam60.c +++ b/arch/arm/mach-at91/board-cam60.c @@ -49,12 +49,6 @@ static void __init cam60_init_early(void)  {  	/* Initialize processor: 10 MHz crystal */  	at91_initialize(10000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -175,6 +169,8 @@ static void __init cam60_add_device_nand(void)  static void __init cam60_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* SPI */  	at91_add_device_spi(cam60_spi_devices, ARRAY_SIZE(cam60_spi_devices)); diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c index 59d9cf99753..44328a6d460 100644 --- a/arch/arm/mach-at91/board-carmeva.c +++ b/arch/arm/mach-at91/board-carmeva.c @@ -44,17 +44,6 @@ static void __init carmeva_init_early(void)  {  	/* Initialize processor: 20.000 MHz crystal */  	at91_initialize(20000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata carmeva_eth_data = { @@ -139,6 +128,13 @@ static struct gpio_led carmeva_leds[] = {  static void __init carmeva_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&carmeva_eth_data); diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c index 5f3680e7c88..69951ec7dbf 100644 --- a/arch/arm/mach-at91/board-cpu9krea.c +++ b/arch/arm/mach-at91/board-cpu9krea.c @@ -52,34 +52,6 @@ static void __init cpu9krea_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DGBU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | -		ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | -		ATMEL_UART_DCD | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | -		ATMEL_UART_RTS); - -	/* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | -		ATMEL_UART_RTS); - -	/* USART3 on ttyS4. (Rx, Tx) */ -	at91_register_uart(AT91SAM9260_ID_US3, 4, 0); - -	/* USART4 on ttyS5. (Rx, Tx) */ -	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); - -	/* USART5 on ttyS6. (Rx, Tx) */ -	at91_register_uart(AT91SAM9260_ID_US5, 6, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -352,6 +324,30 @@ static void __init cpu9krea_board_init(void)  	/* NOR */  	cpu9krea_add_device_nor();  	/* Serial */ +	/* DGBU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | +		ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | +		ATMEL_UART_DCD | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | +		ATMEL_UART_RTS); + +	/* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | +		ATMEL_UART_RTS); + +	/* USART3 on ttyS4. (Rx, Tx) */ +	at91_register_uart(AT91SAM9260_ID_US3, 4, 0); + +	/* USART4 on ttyS5. (Rx, Tx) */ +	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); + +	/* USART5 on ttyS6. (Rx, Tx) */ +	at91_register_uart(AT91SAM9260_ID_US5, 6, 0);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&cpu9krea_usbh_data); diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c index e094cc81fe2..895cf2dba61 100644 --- a/arch/arm/mach-at91/board-cpuat91.c +++ b/arch/arm/mach-at91/board-cpuat91.c @@ -59,28 +59,6 @@ static void __init cpuat91_init_early(void)  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | -		ATMEL_UART_RTS); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | -		ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | -		ATMEL_UART_DCD | ATMEL_UART_RI); - -	/* USART2 on ttyS3 (Rx, Tx) */ -	at91_register_uart(AT91RM9200_ID_US2, 3, 0); - -	/* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS | -		ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata cpuat91_eth_data = { @@ -161,6 +139,24 @@ static struct platform_device *platform_devices[] __initdata = {  static void __init cpuat91_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | +		ATMEL_UART_RTS); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | +		ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | +		ATMEL_UART_DCD | ATMEL_UART_RI); + +	/* USART2 on ttyS3 (Rx, Tx) */ +	at91_register_uart(AT91RM9200_ID_US2, 3, 0); + +	/* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS | +		ATMEL_UART_RTS);  	at91_add_device_serial();  	/* LEDs. */  	at91_gpio_leds(cpuat91_leds, ARRAY_SIZE(cpuat91_leds)); diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c index 1a1547b1ce4..cd813361cd2 100644 --- a/arch/arm/mach-at91/board-csb337.c +++ b/arch/arm/mach-at91/board-csb337.c @@ -47,15 +47,6 @@ static void __init csb337_init_early(void)  {  	/* Initialize processor: 3.6864 MHz crystal */  	at91_initialize(3686400); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1); - -	/* DBGU on ttyS0 */ -	at91_register_uart(0, 0, 0); - -	/* make console=ttyS0 the default */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata csb337_eth_data = { @@ -228,7 +219,11 @@ static struct gpio_led csb_leds[] = {  static void __init csb337_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);  	/* Serial */ +	/* DBGU on ttyS0 */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&csb337_eth_data); diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c index f650bf39455..7c8b05a57d7 100644 --- a/arch/arm/mach-at91/board-csb637.c +++ b/arch/arm/mach-at91/board-csb637.c @@ -44,12 +44,6 @@ static void __init csb637_init_early(void)  {  	/* Initialize processor: 3.6864 MHz crystal */  	at91_initialize(3686400); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* make console=ttyS0 (ie, DBGU) the default */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata csb637_eth_data = { @@ -118,6 +112,8 @@ static void __init csb637_board_init(void)  	/* LED(s) */  	at91_gpio_leds(csb_leds, ARRAY_SIZE(csb_leds));  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&csb637_eth_data); diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c index c18d4d30780..a1fce05aa7a 100644 --- a/arch/arm/mach-at91/board-dt.c +++ b/arch/arm/mach-at91/board-dt.c @@ -1,10 +1,6 @@  /*   *  Setup code for AT91SAM Evaluation Kits with Device Tree support   * - *  Covers: * AT91SAM9G45-EKES  board - *          * AT91SAM9M10-EKES  board - *          * AT91SAM9M10G45-EK board - *   *  Copyright (C) 2011 Atmel,   *                2011 Nicolas Ferre <nicolas.ferre@atmel.com>   * @@ -49,9 +45,7 @@ static void __init at91_dt_device_init(void)  }  static const char *at91_dt_board_compat[] __initdata = { -	"atmel,at91sam9m10g45ek", -	"atmel,at91sam9x5ek", -	"calao,usb-a9g20", +	"atmel,at91sam9",  	NULL  }; diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c index d302ca3eeb6..bd101729798 100644 --- a/arch/arm/mach-at91/board-eb9200.c +++ b/arch/arm/mach-at91/board-eb9200.c @@ -44,20 +44,6 @@ static void __init eb9200_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			| ATMEL_UART_RI); - -	/* USART2 on ttyS2. (Rx, Tx) - IRDA */ -	at91_register_uart(AT91RM9200_ID_US2, 2, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata eb9200_eth_data = { @@ -101,6 +87,16 @@ static struct i2c_board_info __initdata eb9200_i2c_devices[] = {  static void __init eb9200_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			| ATMEL_UART_RI); + +	/* USART2 on ttyS2. (Rx, Tx) - IRDA */ +	at91_register_uart(AT91RM9200_ID_US2, 2, 0);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&eb9200_eth_data); diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c index 69966ce4d77..89cc3726a9c 100644 --- a/arch/arm/mach-at91/board-ecbat91.c +++ b/arch/arm/mach-at91/board-ecbat91.c @@ -50,18 +50,6 @@ static void __init ecb_at91init_early(void)  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx & Tx only) */ -	at91_register_uart(AT91RM9200_ID_US0, 1, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata ecb_at91eth_data = { @@ -151,7 +139,15 @@ static struct spi_board_info __initdata ecb_at91spi_devices[] = {  static void __init ecb_at91board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx & Tx only) */ +	at91_register_uart(AT91RM9200_ID_US0, 1, 0);  	at91_add_device_serial();  	/* Ethernet */ diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c index f23aabef855..558546cf63f 100644 --- a/arch/arm/mach-at91/board-eco920.c +++ b/arch/arm/mach-at91/board-eco920.c @@ -37,15 +37,6 @@ static void __init eco920_init_early(void)  	at91rm9200_set_type(ARCH_REVISON_9200_PQFP);  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1); - -	/* DBGU on ttyS0. (Rx & Tx only */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata eco920_eth_data = { @@ -103,6 +94,10 @@ static struct spi_board_info eco920_spi_devices[] = {  static void __init eco920_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1); +	/* DBGU on ttyS0. (Rx & Tx only */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	at91_add_device_eth(&eco920_eth_data);  	at91_add_device_usbh(&eco920_usbh_data); diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c index 1815152001f..47658f78105 100644 --- a/arch/arm/mach-at91/board-flexibity.c +++ b/arch/arm/mach-at91/board-flexibity.c @@ -41,12 +41,6 @@ static void __init flexibity_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* USB Host port */ @@ -143,6 +137,8 @@ static struct gpio_led flexibity_leds[] = {  static void __init flexibity_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&flexibity_usbh_data); diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c index caf017f0f4e..33411e6ecb1 100644 --- a/arch/arm/mach-at91/board-foxg20.c +++ b/arch/arm/mach-at91/board-foxg20.c @@ -61,44 +61,6 @@ static void __init foxg20_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, -				ATMEL_UART_CTS -				| ATMEL_UART_RTS -				| ATMEL_UART_DTR -				| ATMEL_UART_DSR -				| ATMEL_UART_DCD -				| ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, -		ATMEL_UART_CTS -		| ATMEL_UART_RTS); - -	/* USART2 on ttyS3. (Rx & Tx only) */ -	at91_register_uart(AT91SAM9260_ID_US2, 3, 0); - -	/* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US3, 4, -		ATMEL_UART_CTS -		| ATMEL_UART_RTS); - -	/* USART4 on ttyS5. (Rx & Tx only) */ -	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); - -	/* USART5 on ttyS6. (Rx & Tx only) */ -	at91_register_uart(AT91SAM9260_ID_US5, 6, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0); - -	/* Set the internal pull-up resistor on DRXD */ -	at91_set_A_periph(AT91_PIN_PB14, 1); -  }  /* @@ -241,6 +203,39 @@ static struct i2c_board_info __initdata foxg20_i2c_devices[] = {  static void __init foxg20_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, +				ATMEL_UART_CTS +				| ATMEL_UART_RTS +				| ATMEL_UART_DTR +				| ATMEL_UART_DSR +				| ATMEL_UART_DCD +				| ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, +		ATMEL_UART_CTS +		| ATMEL_UART_RTS); + +	/* USART2 on ttyS3. (Rx & Tx only) */ +	at91_register_uart(AT91SAM9260_ID_US2, 3, 0); + +	/* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US3, 4, +		ATMEL_UART_CTS +		| ATMEL_UART_RTS); + +	/* USART4 on ttyS5. (Rx & Tx only) */ +	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); + +	/* USART5 on ttyS6. (Rx & Tx only) */ +	at91_register_uart(AT91SAM9260_ID_US5, 6, 0); + +	/* Set the internal pull-up resistor on DRXD */ +	at91_set_A_periph(AT91_PIN_PB14, 1);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&foxg20_usbh_data); diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c index 230e71969fb..3e0dfa643a8 100644 --- a/arch/arm/mach-at91/board-gsia18s.c +++ b/arch/arm/mach-at91/board-gsia18s.c @@ -41,38 +41,6 @@  static void __init gsia18s_init_early(void)  {  	stamp9g20_init_early(); - -	/* -	 * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI). -	 * Used for Internal Analog Modem. -	 */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, -				ATMEL_UART_CTS | ATMEL_UART_RTS | -				ATMEL_UART_DTR | ATMEL_UART_DSR | -				ATMEL_UART_DCD | ATMEL_UART_RI); -	/* -	 * USART1 on ttyS2 (Rx, Tx, CTS, RTS). -	 * Used for GPS or WiFi or Data stream. -	 */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, -				ATMEL_UART_CTS | ATMEL_UART_RTS); -	/* -	 * USART2 on ttyS3 (Rx, Tx, CTS, RTS). -	 * Used for External Modem. -	 */ -	at91_register_uart(AT91SAM9260_ID_US2, 3, -				ATMEL_UART_CTS | ATMEL_UART_RTS); -	/* -	 * USART3 on ttyS4 (Rx, Tx, RTS). -	 * Used for RS-485. -	 */ -	at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS); - -	/* -	 * USART4 on ttyS5 (Rx, Tx). -	 * Used for TRX433 Radio Module. -	 */ -	at91_register_uart(AT91SAM9260_ID_US4, 5, 0);  }  /* @@ -558,6 +526,37 @@ static int __init gsia18s_power_off_init(void)  static void __init gsia18s_board_init(void)  { +	/* +	 * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI). +	 * Used for Internal Analog Modem. +	 */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, +				ATMEL_UART_CTS | ATMEL_UART_RTS | +				ATMEL_UART_DTR | ATMEL_UART_DSR | +				ATMEL_UART_DCD | ATMEL_UART_RI); +	/* +	 * USART1 on ttyS2 (Rx, Tx, CTS, RTS). +	 * Used for GPS or WiFi or Data stream. +	 */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, +				ATMEL_UART_CTS | ATMEL_UART_RTS); +	/* +	 * USART2 on ttyS3 (Rx, Tx, CTS, RTS). +	 * Used for External Modem. +	 */ +	at91_register_uart(AT91SAM9260_ID_US2, 3, +				ATMEL_UART_CTS | ATMEL_UART_RTS); +	/* +	 * USART3 on ttyS4 (Rx, Tx, RTS). +	 * Used for RS-485. +	 */ +	at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS); + +	/* +	 * USART4 on ttyS5 (Rx, Tx). +	 * Used for TRX433 Radio Module. +	 */ +	at91_register_uart(AT91SAM9260_ID_US4, 5, 0);  	stamp9g20_board_init();  	at91_add_device_usbh(&usbh_data);  	at91_add_device_udc(&udc_data); diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c index efde1b2327c..f260657f32b 100644 --- a/arch/arm/mach-at91/board-kafa.c +++ b/arch/arm/mach-at91/board-kafa.c @@ -47,18 +47,6 @@ static void __init kafa_init_early(void)  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Set up the LEDs */ -	at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata kafa_eth_data = { @@ -79,7 +67,15 @@ static struct at91_udc_data __initdata kafa_udc_data = {  static void __init kafa_board_init(void)  { +	/* Set up the LEDs */ +	at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&kafa_eth_data); diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index 59b92aab9bc..ba39db5482b 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c @@ -50,24 +50,6 @@ static void __init kb9202_init_early(void)  	/* Initialize processor: 10 MHz crystal */  	at91_initialize(10000000); - -	/* Set up the LEDs */ -	at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1 (Rx & Tx only) */ -	at91_register_uart(AT91RM9200_ID_US0, 1, 0); - -	/* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */ -	at91_register_uart(AT91RM9200_ID_US1, 2, 0); - -	/* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */ -	at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata kb9202_eth_data = { @@ -115,7 +97,21 @@ static struct atmel_nand_data __initdata kb9202_nand_data = {  static void __init kb9202_board_init(void)  { +	/* Set up the LEDs */ +	at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1 (Rx & Tx only) */ +	at91_register_uart(AT91RM9200_ID_US0, 1, 0); + +	/* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */ +	at91_register_uart(AT91RM9200_ID_US1, 2, 0); + +	/* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */ +	at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&kb9202_eth_data); diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c index 57d5f6a4726..d2f4cc16176 100644 --- a/arch/arm/mach-at91/board-neocore926.c +++ b/arch/arm/mach-at91/board-neocore926.c @@ -55,15 +55,6 @@ static void __init neocore926_init_early(void)  {  	/* Initialize processor: 20 MHz crystal */  	at91_initialize(20000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -341,6 +332,11 @@ static struct ac97c_platform_data neocore926_ac97_data = {  static void __init neocore926_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */ diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c index b4a12fc184c..7fe63834242 100644 --- a/arch/arm/mach-at91/board-pcontrol-g20.c +++ b/arch/arm/mach-at91/board-pcontrol-g20.c @@ -40,17 +40,6 @@  static void __init pcontrol_g20_init_early(void)  {  	stamp9g20_init_early(); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback  A2 */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS -						| ATMEL_UART_RTS); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485  X5 */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS -						| ATMEL_UART_RTS); - -	/* USART2 on ttyS3. (Rx, Tx)  9bit-Bus  Multidrop-mode  X4 */ -	at91_register_uart(AT91SAM9260_ID_US4, 3, 0);  }  static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { { @@ -199,6 +188,16 @@ static struct spi_board_info pcontrol_g20_spi_devices[] = {  static void __init pcontrol_g20_board_init(void)  { +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback  A2 */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS +						| ATMEL_UART_RTS); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485  X5 */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS +						| ATMEL_UART_RTS); + +	/* USART2 on ttyS3. (Rx, Tx)  9bit-Bus  Multidrop-mode  X4 */ +	at91_register_uart(AT91SAM9260_ID_US4, 3, 0);  	stamp9g20_board_init();  	at91_add_device_usbh(&usbh_data);  	at91_add_device_eth(&macb_data); diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index 59e35dd1486..b45c0a5d5ca 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c @@ -48,17 +48,6 @@ static void __init picotux200_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			  | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			  | ATMEL_UART_RI); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata picotux200_eth_data = { @@ -106,6 +95,13 @@ static struct platform_device picotux200_flash = {  static void __init picotux200_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			  | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			  | ATMEL_UART_RI);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&picotux200_eth_data); diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c index b6ed5ed7081..0c61bf0d272 100644 --- a/arch/arm/mach-at91/board-qil-a9260.c +++ b/arch/arm/mach-at91/board-qil-a9260.c @@ -52,24 +52,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 12.000 MHz crystal */  	at91_initialize(12000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS1 (ie, USART0) */ -	at91_set_serial_console(1); -  }  /* @@ -235,6 +217,19 @@ static struct gpio_led ek_leds[] = {  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); + +	/* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c index 01332aa538b..afd7a471376 100644 --- a/arch/arm/mach-at91/board-rm9200dk.c +++ b/arch/arm/mach-at91/board-rm9200dk.c @@ -50,20 +50,6 @@ static void __init dk_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata dk_eth_data = { @@ -190,7 +176,17 @@ static struct gpio_led dk_leds[] = {  static void __init dk_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&dk_eth_data); diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c index 11cbaa8946f..2b15b8adec4 100644 --- a/arch/arm/mach-at91/board-rm9200ek.c +++ b/arch/arm/mach-at91/board-rm9200ek.c @@ -50,20 +50,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  static struct macb_platform_data __initdata ek_eth_data = { @@ -117,7 +103,7 @@ static struct i2c_board_info __initdata ek_i2c_devices[] = {  };  #define EK_FLASH_BASE	AT91_CHIPSELECT_0 -#define EK_FLASH_SIZE	SZ_2M +#define EK_FLASH_SIZE	SZ_8M  static struct physmap_flash_data ek_flash_data = {  	.width		= 2, @@ -161,7 +147,17 @@ static struct gpio_led ek_leds[] = {  static void __init ek_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&ek_eth_data); diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c index af0750fafa2..24ab9be7510 100644 --- a/arch/arm/mach-at91/board-rsi-ews.c +++ b/arch/arm/mach-at91/board-rsi-ews.c @@ -35,26 +35,6 @@ static void __init rsi_ews_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	/* This one is for debugging */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	/* Dialin/-out modem interface */ -	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* USART3 on ttyS4. (Rx, Tx, RTS) */ -	/* RS485 communication */ -	at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -204,7 +184,23 @@ static struct platform_device rsiews_nor_flash = {   */  static void __init rsi_ews_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	/* This one is for debugging */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	/* Dialin/-out modem interface */ +	at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI); + +	/* USART3 on ttyS4. (Rx, Tx, RTS) */ +	/* RS485 communication */ +	at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS);  	at91_add_device_serial();  	at91_set_gpio_output(AT91_PIN_PA21, 0);  	/* Ethernet */ diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c index e8b116b6cba..cdd21f2595d 100644 --- a/arch/arm/mach-at91/board-sam9-l9260.c +++ b/arch/arm/mach-at91/board-sam9-l9260.c @@ -48,23 +48,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -184,7 +167,20 @@ static struct at91_mmc_data __initdata ek_mmc_data = {  static void __init ek_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index d5aec55b0eb..7b3c3913551 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c @@ -54,20 +54,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -320,6 +306,16 @@ static void __init ek_add_device_buttons(void) {}  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index c3f99446286..2736453821b 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c @@ -58,15 +58,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs */ -	at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -85,8 +76,6 @@ static struct resource dm9000_resource[] = {  		.flags	= IORESOURCE_MEM  	},  	[2] = { -		.start	= AT91_PIN_PC11, -		.end	= AT91_PIN_PC11,  		.flags	= IORESOURCE_IRQ  			| IORESOURCE_IRQ_LOWEDGE | IORESOURCE_IRQ_HIGHEDGE,  	} @@ -130,6 +119,8 @@ static struct sam9_smc_config __initdata dm9000_smc_config = {  static void __init ek_add_device_dm9000(void)  { +	struct resource *r = &dm9000_resource[2]; +  	/* Configure chip-select 2 (DM9000) */  	sam9_smc_configure(0, 2, &dm9000_smc_config); @@ -139,6 +130,7 @@ static void __init ek_add_device_dm9000(void)  	/* Configure Interrupt pin as input, no pull-up */  	at91_set_gpio_input(AT91_PIN_PC11, 0); +	r->start = r->end = gpio_to_irq(AT91_PIN_PC11);  	platform_device_register(&dm9000_device);  }  #else @@ -576,7 +568,12 @@ static struct gpio_led ek_leds[] = {  static void __init ek_board_init(void)  { +	/* Setup the LEDs */ +	at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 2ffe50f3a9e..983cb98d246 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c @@ -57,15 +57,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 16.367 MHz crystal */  	at91_initialize(16367660); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -412,6 +403,11 @@ static struct at91_can_data ek_can_data = {  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index 8923ec9f583..3d615532ae5 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c @@ -65,20 +65,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			   | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -372,6 +358,16 @@ static struct i2c_board_info __initdata ek_i2c_devices[] = {  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			   | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			   | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index c88e908ddd8..9a87f0b072f 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c @@ -53,16 +53,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 12.000 MHz crystal */  	at91_initialize(12000000); - -	/* DGBU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 not connected on the -EK board */ -	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ -	at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -457,6 +447,12 @@ static struct platform_device *devices[] __initdata = {  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DGBU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 not connected on the -EK board */ +	/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ +	at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB HS Host */  	at91_add_device_usbh_ohci(&ek_usbh_hs_data); diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index b109ce2ba86..be3239f13da 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c @@ -42,15 +42,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 12.000 MHz crystal */  	at91_initialize(12000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -296,6 +287,11 @@ static void __init ek_add_device_buttons(void) {}  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);  	at91_add_device_serial();  	/* USB HS */  	at91_add_device_usba(&ek_usba_udc_data); diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c index ebc9d01ce74..9d446f1bb45 100644 --- a/arch/arm/mach-at91/board-snapper9260.c +++ b/arch/arm/mach-at91/board-snapper9260.c @@ -43,16 +43,6 @@  static void __init snapper9260_init_early(void)  {  	at91_initialize(18432000); - -	/* Debug on ttyS0 */ -	at91_register_uart(0, 0, 0); -	at91_set_serial_console(0); - -	at91_register_uart(AT91SAM9260_ID_US0, 1, -			   ATMEL_UART_CTS | ATMEL_UART_RTS); -	at91_register_uart(AT91SAM9260_ID_US1, 2, -			   ATMEL_UART_CTS | ATMEL_UART_RTS); -	at91_register_uart(AT91SAM9260_ID_US2, 3, 0);  }  static struct at91_usbh_data __initdata snapper9260_usbh_data = { @@ -168,6 +158,14 @@ static void __init snapper9260_board_init(void)  	snapper9260_i2c_isl1208.irq = gpio_to_irq(AT91_PIN_PA31);  	i2c_register_board_info(0, &snapper9260_i2c_isl1208, 1); +	/* Debug on ttyS0 */ +	at91_register_uart(0, 0, 0); + +	at91_register_uart(AT91SAM9260_ID_US0, 1, +			   ATMEL_UART_CTS | ATMEL_UART_RTS); +	at91_register_uart(AT91SAM9260_ID_US1, 2, +			   ATMEL_UART_CTS | ATMEL_UART_RTS); +	at91_register_uart(AT91SAM9260_ID_US2, 3, 0);  	at91_add_device_serial();  	at91_add_device_usbh(&snapper9260_usbh_data);  	at91_add_device_udc(&snapper9260_udc_data); diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c index 7640049410a..ee86f9d7ee7 100644 --- a/arch/arm/mach-at91/board-stamp9g20.c +++ b/arch/arm/mach-at91/board-stamp9g20.c @@ -36,44 +36,6 @@ void __init stamp9g20_init_early(void)  {  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* DGBU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0); -} - -static void __init stamp9g20evb_init_early(void) -{ -	stamp9g20_init_early(); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -						| ATMEL_UART_DTR | ATMEL_UART_DSR -						| ATMEL_UART_DCD | ATMEL_UART_RI); -} - -static void __init portuxg20_init_early(void) -{ -	stamp9g20_init_early(); - -	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -						| ATMEL_UART_DTR | ATMEL_UART_DSR -						| ATMEL_UART_DCD | ATMEL_UART_RI); - -	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */ -	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); - -	/* USART4 on ttyS5. (Rx, Tx only) */ -	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); - -	/* USART5 on ttyS6. (Rx, Tx only) */ -	at91_register_uart(AT91SAM9260_ID_US5, 6, 0);  }  /* @@ -254,6 +216,8 @@ void add_w1(void)  void __init stamp9g20_board_init(void)  {  	/* Serial */ +	/* DGBU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* NAND */  	add_device_nand(); @@ -269,6 +233,22 @@ void __init stamp9g20_board_init(void)  static void __init portuxg20_board_init(void)  { +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +						| ATMEL_UART_DTR | ATMEL_UART_DSR +						| ATMEL_UART_DCD | ATMEL_UART_RI); + +	/* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); + +	/* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */ +	at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); + +	/* USART4 on ttyS5. (Rx, Tx only) */ +	at91_register_uart(AT91SAM9260_ID_US4, 5, 0); + +	/* USART5 on ttyS6. (Rx, Tx only) */ +	at91_register_uart(AT91SAM9260_ID_US5, 6, 0);  	stamp9g20_board_init();  	/* USB Host */  	at91_add_device_usbh(&usbh_data); @@ -286,6 +266,10 @@ static void __init portuxg20_board_init(void)  static void __init stamp9g20evb_board_init(void)  { +	/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +						| ATMEL_UART_DTR | ATMEL_UART_DSR +						| ATMEL_UART_DCD | ATMEL_UART_RI);  	stamp9g20_board_init();  	/* USB Host */  	at91_add_device_usbh(&usbh_data); @@ -303,7 +287,7 @@ MACHINE_START(PORTUXG20, "taskit PortuxG20")  	/* Maintainer: taskit GmbH */  	.timer		= &at91sam926x_timer,  	.map_io		= at91_map_io, -	.init_early	= portuxg20_init_early, +	.init_early	= stamp9g20_init_early,  	.init_irq	= at91_init_irq_default,  	.init_machine	= portuxg20_board_init,  MACHINE_END @@ -312,7 +296,7 @@ MACHINE_START(STAMP9G20, "taskit Stamp9G20")  	/* Maintainer: taskit GmbH */  	.timer		= &at91sam926x_timer,  	.map_io		= at91_map_io, -	.init_early	= stamp9g20evb_init_early, +	.init_early	= stamp9g20_init_early,  	.init_irq	= at91_init_irq_default,  	.init_machine	= stamp9g20evb_board_init,  MACHINE_END diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c index b7483a3d098..332ecd40bd0 100644 --- a/arch/arm/mach-at91/board-usb-a926x.c +++ b/arch/arm/mach-at91/board-usb-a926x.c @@ -53,12 +53,6 @@ static void __init ek_init_early(void)  {  	/* Initialize processor: 12.00 MHz crystal */  	at91_initialize(12000000); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -325,6 +319,8 @@ static void __init ek_add_device_leds(void)  static void __init ek_board_init(void)  {  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index 38dd279d30b..d56665ea4b5 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c @@ -58,26 +58,6 @@ static void __init yl9200_init_early(void)  	/* Initialize processor: 18.432 MHz crystal */  	at91_initialize(18432000); - -	/* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */ -	at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17); - -	/* DBGU on ttyS0. (Rx & Tx only) */ -	at91_register_uart(0, 0, 0); - -	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ -	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS -			| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD -			| ATMEL_UART_RI); - -	/* USART0 on ttyS2. (Rx & Tx only to JP3) */ -	at91_register_uart(AT91RM9200_ID_US0, 2, 0); - -	/* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */ -	at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS); - -	/* set serial console to ttyS0 (ie, DBGU) */ -	at91_set_serial_console(0);  }  /* @@ -560,7 +540,23 @@ void __init yl9200_add_device_video(void) {}  static void __init yl9200_board_init(void)  { +	/* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */ +	at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17); +  	/* Serial */ +	/* DBGU on ttyS0. (Rx & Tx only) */ +	at91_register_uart(0, 0, 0); + +	/* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ +	at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS +			| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD +			| ATMEL_UART_RI); + +	/* USART0 on ttyS2. (Rx & Tx only to JP3) */ +	at91_register_uart(AT91RM9200_ID_US0, 2, 0); + +	/* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */ +	at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS);  	at91_add_device_serial();  	/* Ethernet */  	at91_add_device_eth(&yl9200_eth_data); diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c index a0f4d7424cd..6b692824c98 100644 --- a/arch/arm/mach-at91/clock.c +++ b/arch/arm/mach-at91/clock.c @@ -35,6 +35,7 @@  #include "generic.h"  void __iomem *at91_pmc_base; +EXPORT_SYMBOL_GPL(at91_pmc_base);  /*   * There's a lot more which can be done with clocks, including cpufreq diff --git a/arch/arm/mach-at91/cpuidle.c b/arch/arm/mach-at91/cpuidle.c index ece1f9aefb4..0c6381516a5 100644 --- a/arch/arm/mach-at91/cpuidle.c +++ b/arch/arm/mach-at91/cpuidle.c @@ -21,6 +21,7 @@  #include <linux/export.h>  #include <asm/proc-fns.h>  #include <asm/cpuidle.h> +#include <mach/cpu.h>  #include "pm.h" @@ -33,7 +34,12 @@ static int at91_enter_idle(struct cpuidle_device *dev,  			struct cpuidle_driver *drv,  			       int index)  { -	at91_standby(); +	if (cpu_is_at91rm9200()) +		at91rm9200_standby(); +	else if (cpu_is_at91sam9g45()) +		at91sam9g45_standby(); +	else +		at91sam9_standby();  	return index;  } diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index dd9b346c451..0a60bf83703 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h @@ -40,17 +40,6 @@ extern struct sys_timer at91sam926x_timer;  extern struct sys_timer at91x40_timer;   /* Clocks */ -/* - * function to specify the clock of the default console. As we do not - * use the device/driver bus, the dev_name is not intialize. So we need - * to link the clock to a specific con_id only "usart" - */ -extern void __init at91rm9200_set_console_clock(int id); -extern void __init at91sam9260_set_console_clock(int id); -extern void __init at91sam9261_set_console_clock(int id); -extern void __init at91sam9263_set_console_clock(int id); -extern void __init at91sam9rl_set_console_clock(int id); -extern void __init at91sam9g45_set_console_clock(int id);  #ifdef CONFIG_AT91_PMC_UNIT  extern int __init at91_clock_init(unsigned long main_clock);  extern int __init at91_dt_clock_init(void); diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h index 36604782a78..ea2c57a86ca 100644 --- a/arch/arm/mach-at91/include/mach/at91_pmc.h +++ b/arch/arm/mach-at91/include/mach/at91_pmc.h @@ -25,7 +25,7 @@ extern void __iomem *at91_pmc_base;  #define at91_pmc_write(field, value) \  	__raw_writel(value, at91_pmc_base + field)  #else -.extern at91_aic_base +.extern at91_pmc_base  #endif  #define	AT91_PMC_SCER		0x00			/* System Clock Enable Register */ diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h index 603e6aac2a4..e67317c6776 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h @@ -88,11 +88,6 @@  #define AT91RM9200_BASE_RTC	0xfffffe00	/* Real-Time Clock */  #define AT91RM9200_BASE_MC	0xffffff00	/* Memory Controllers */ -#define AT91_USART0	AT91RM9200_BASE_US0 -#define AT91_USART1	AT91RM9200_BASE_US1 -#define AT91_USART2	AT91RM9200_BASE_US2 -#define AT91_USART3	AT91RM9200_BASE_US3 -  /*   * Internal Memory.   */ diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h index 08ae9afd00f..416c7b6c56d 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260.h @@ -95,13 +95,6 @@  #define AT91SAM9260_BASE_WDT	0xfffffd40  #define AT91SAM9260_BASE_GPBR	0xfffffd50 -#define AT91_USART0	AT91SAM9260_BASE_US0 -#define AT91_USART1	AT91SAM9260_BASE_US1 -#define AT91_USART2	AT91SAM9260_BASE_US2 -#define AT91_USART3	AT91SAM9260_BASE_US3 -#define AT91_USART4	AT91SAM9260_BASE_US4 -#define AT91_USART5	AT91SAM9260_BASE_US5 -  /*   * Internal Memory. diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h index 44fbdc12ee6..a041406d06e 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261.h @@ -79,10 +79,6 @@  #define AT91SAM9261_BASE_WDT	0xfffffd40  #define AT91SAM9261_BASE_GPBR	0xfffffd50 -#define AT91_USART0	AT91SAM9261_BASE_US0 -#define AT91_USART1	AT91SAM9261_BASE_US1 -#define AT91_USART2	AT91SAM9261_BASE_US2 -  /*   * Internal Memory. diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h index d96cbb2e03c..d201029d60b 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263.h @@ -95,10 +95,6 @@  #define AT91SAM9263_BASE_RTT1	0xfffffd50  #define AT91SAM9263_BASE_GPBR	0xfffffd60 -#define AT91_USART0	AT91SAM9263_BASE_US0 -#define AT91_USART1	AT91SAM9263_BASE_US1 -#define AT91_USART2	AT91SAM9263_BASE_US2 -  #define AT91_SMC	AT91_SMC0  /* diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h index d052abcff85..3a4da24d591 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h @@ -106,11 +106,6 @@  #define AT91SAM9G45_BASE_RTC	0xfffffdb0  #define AT91SAM9G45_BASE_GPBR	0xfffffd60 -#define AT91_USART0	AT91SAM9G45_BASE_US0 -#define AT91_USART1	AT91SAM9G45_BASE_US1 -#define AT91_USART2	AT91SAM9G45_BASE_US2 -#define AT91_USART3	AT91SAM9G45_BASE_US3 -  /*   * Internal Memory.   */ diff --git a/arch/arm/mach-at91/include/mach/at91sam9rl.h b/arch/arm/mach-at91/include/mach/at91sam9rl.h index e0073eb1014..a15db56d33f 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9rl.h +++ b/arch/arm/mach-at91/include/mach/at91sam9rl.h @@ -89,11 +89,6 @@  #define AT91SAM9RL_BASE_GPBR	0xfffffd60  #define AT91SAM9RL_BASE_RTC	0xfffffe00 -#define AT91_USART0	AT91SAM9RL_BASE_US0 -#define AT91_USART1	AT91SAM9RL_BASE_US1 -#define AT91_USART2	AT91SAM9RL_BASE_US2 -#define AT91_USART3	AT91SAM9RL_BASE_US3 -  /*   * Internal Memory. diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h index 88e43d534cd..c75ee19b58d 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9x5.h +++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h @@ -55,14 +55,6 @@  #define AT91SAM9X5_BASE_USART2	0xf8024000  /* - * Base addresses for early serial code (uncompress.h) - */ -#define AT91_DBGU	AT91_BASE_DBGU0 -#define AT91_USART0	AT91SAM9X5_BASE_USART0 -#define AT91_USART1	AT91SAM9X5_BASE_USART1 -#define AT91_USART2	AT91SAM9X5_BASE_USART2 - -/*   * Internal Memory.   */  #define AT91SAM9X5_SRAM_BASE	0x00300000	/* Internal SRAM base address */ diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index 49a821192c6..369afc2ffc5 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h @@ -121,7 +121,6 @@ extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_de  #define ATMEL_UART_RI	0x20  extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins); -extern void __init at91_set_serial_console(unsigned portnr);  extern struct platform_device *atmel_default_console_device; diff --git a/arch/arm/mach-at91/include/mach/cpu.h b/arch/arm/mach-at91/include/mach/cpu.h index 0118c333855..73d2fd209ce 100644 --- a/arch/arm/mach-at91/include/mach/cpu.h +++ b/arch/arm/mach-at91/include/mach/cpu.h @@ -54,6 +54,7 @@  #define ARCH_REVISON_9200_BGA	(0 << 0)  #define ARCH_REVISON_9200_PQFP	(1 << 0) +#ifndef __ASSEMBLY__  enum at91_soc_type {  	/* 920T */  	AT91_SOC_RM9200, @@ -106,7 +107,7 @@ static inline int at91_soc_is_detected(void)  	return at91_soc_initdata.type != AT91_SOC_NONE;  } -#ifdef CONFIG_ARCH_AT91RM9200 +#ifdef CONFIG_SOC_AT91RM9200  #define cpu_is_at91rm9200()	(at91_soc_initdata.type == AT91_SOC_RM9200)  #define cpu_is_at91rm9200_bga()	(at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA)  #define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP) @@ -116,45 +117,37 @@ static inline int at91_soc_is_detected(void)  #define cpu_is_at91rm9200_pqfp() (0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9260 +#ifdef CONFIG_SOC_AT91SAM9260  #define cpu_is_at91sam9xe()	(at91_soc_initdata.subtype == AT91_SOC_SAM9XE)  #define cpu_is_at91sam9260()	(at91_soc_initdata.type == AT91_SOC_SAM9260) +#define cpu_is_at91sam9g20()	(at91_soc_initdata.type == AT91_SOC_SAM9G20)  #else  #define cpu_is_at91sam9xe()	(0)  #define cpu_is_at91sam9260()	(0) -#endif - -#ifdef CONFIG_ARCH_AT91SAM9G20 -#define cpu_is_at91sam9g20()	(at91_soc_initdata.type == AT91_SOC_SAM9G20) -#else  #define cpu_is_at91sam9g20()	(0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9261 +#ifdef CONFIG_SOC_AT91SAM9261  #define cpu_is_at91sam9261()	(at91_soc_initdata.type == AT91_SOC_SAM9261) -#else -#define cpu_is_at91sam9261()	(0) -#endif - -#ifdef CONFIG_ARCH_AT91SAM9G10  #define cpu_is_at91sam9g10()	(at91_soc_initdata.type == AT91_SOC_SAM9G10)  #else +#define cpu_is_at91sam9261()	(0)  #define cpu_is_at91sam9g10()	(0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9263 +#ifdef CONFIG_SOC_AT91SAM9263  #define cpu_is_at91sam9263()	(at91_soc_initdata.type == AT91_SOC_SAM9263)  #else  #define cpu_is_at91sam9263()	(0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9RL +#ifdef CONFIG_SOC_AT91SAM9RL  #define cpu_is_at91sam9rl()	(at91_soc_initdata.type == AT91_SOC_SAM9RL)  #else  #define cpu_is_at91sam9rl()	(0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9G45 +#ifdef CONFIG_SOC_AT91SAM9G45  #define cpu_is_at91sam9g45()	(at91_soc_initdata.type == AT91_SOC_SAM9G45)  #define cpu_is_at91sam9g45es()	(at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES)  #define cpu_is_at91sam9m10()	(at91_soc_initdata.subtype == AT91_SOC_SAM9M10) @@ -168,7 +161,7 @@ static inline int at91_soc_is_detected(void)  #define cpu_is_at91sam9m11()	(0)  #endif -#ifdef CONFIG_ARCH_AT91SAM9X5 +#ifdef CONFIG_SOC_AT91SAM9X5  #define cpu_is_at91sam9x5()	(at91_soc_initdata.type == AT91_SOC_SAM9X5)  #define cpu_is_at91sam9g15()	(at91_soc_initdata.subtype == AT91_SOC_SAM9G15)  #define cpu_is_at91sam9g35()	(at91_soc_initdata.subtype == AT91_SOC_SAM9G35) @@ -189,5 +182,6 @@ static inline int at91_soc_is_detected(void)   * definitions may reduce clutter in common drivers.   */  #define cpu_is_at32ap7000()	(0) +#endif /* __ASSEMBLY__ */  #endif /* __MACH_CPU_H__ */ diff --git a/arch/arm/mach-at91/include/mach/hardware.h b/arch/arm/mach-at91/include/mach/hardware.h index e9e29a6c386..3a01f8ff7e7 100644 --- a/arch/arm/mach-at91/include/mach/hardware.h +++ b/arch/arm/mach-at91/include/mach/hardware.h @@ -22,27 +22,17 @@  /* 9263, 9g45 */  #define AT91_BASE_DBGU1	0xffffee00 -#if defined(CONFIG_ARCH_AT91RM9200) +#if defined(CONFIG_ARCH_AT91X40) +#include <mach/at91x40.h> +#else  #include <mach/at91rm9200.h> -#elif defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)  #include <mach/at91sam9260.h> -#elif defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)  #include <mach/at91sam9261.h> -#elif defined(CONFIG_ARCH_AT91SAM9263)  #include <mach/at91sam9263.h> -#elif defined(CONFIG_ARCH_AT91SAM9RL)  #include <mach/at91sam9rl.h> -#elif defined(CONFIG_ARCH_AT91SAM9G45)  #include <mach/at91sam9g45.h> -#elif defined(CONFIG_ARCH_AT91SAM9X5)  #include <mach/at91sam9x5.h> -#elif defined(CONFIG_ARCH_AT91X40) -#include <mach/at91x40.h> -#else -#error "Unsupported AT91 processor" -#endif -#if !defined(CONFIG_ARCH_AT91X40)  /*   * On all at91 except rm9200 and x40 have the System Controller starts   * at address 0xffffc000 and has a size of 16KiB. diff --git a/arch/arm/mach-at91/include/mach/uncompress.h b/arch/arm/mach-at91/include/mach/uncompress.h index 4218647c1fc..6f6118d1576 100644 --- a/arch/arm/mach-at91/include/mach/uncompress.h +++ b/arch/arm/mach-at91/include/mach/uncompress.h @@ -1,7 +1,8 @@  /*   * arch/arm/mach-at91/include/mach/uncompress.h   * - *  Copyright (C) 2003 SAN People + * Copyright (C) 2003 SAN People + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>   *   * 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 @@ -25,22 +26,147 @@  #include <linux/atmel_serial.h>  #include <mach/hardware.h> -#if defined(CONFIG_AT91_EARLY_DBGU0) -#define UART_OFFSET AT91_BASE_DBGU0 -#elif defined(CONFIG_AT91_EARLY_DBGU1) -#define UART_OFFSET AT91_BASE_DBGU1 -#elif defined(CONFIG_AT91_EARLY_USART0) -#define UART_OFFSET AT91_USART0 -#elif defined(CONFIG_AT91_EARLY_USART1) -#define UART_OFFSET AT91_USART1 -#elif defined(CONFIG_AT91_EARLY_USART2) -#define UART_OFFSET AT91_USART2 -#elif defined(CONFIG_AT91_EARLY_USART3) -#define UART_OFFSET AT91_USART3 -#elif defined(CONFIG_AT91_EARLY_USART4) -#define UART_OFFSET AT91_USART4 -#elif defined(CONFIG_AT91_EARLY_USART5) -#define UART_OFFSET AT91_USART5 +#include <mach/at91_dbgu.h> +#include <mach/cpu.h> + +void __iomem *at91_uart; + +#if !defined(CONFIG_ARCH_AT91X40) +static const u32 uarts_rm9200[] = { +	AT91_BASE_DBGU0, +	AT91RM9200_BASE_US0, +	AT91RM9200_BASE_US1, +	AT91RM9200_BASE_US2, +	AT91RM9200_BASE_US3, +	0, +}; + +static const u32 uarts_sam9260[] = { +	AT91_BASE_DBGU0, +	AT91SAM9260_BASE_US0, +	AT91SAM9260_BASE_US1, +	AT91SAM9260_BASE_US2, +	AT91SAM9260_BASE_US3, +	AT91SAM9260_BASE_US4, +	AT91SAM9260_BASE_US5, +	0, +}; + +static const u32 uarts_sam9261[] = { +	AT91_BASE_DBGU0, +	AT91SAM9261_BASE_US0, +	AT91SAM9261_BASE_US1, +	AT91SAM9261_BASE_US2, +	0, +}; + +static const u32 uarts_sam9263[] = { +	AT91_BASE_DBGU1, +	AT91SAM9263_BASE_US0, +	AT91SAM9263_BASE_US1, +	AT91SAM9263_BASE_US2, +	0, +}; + +static const u32 uarts_sam9g45[] = { +	AT91_BASE_DBGU1, +	AT91SAM9G45_BASE_US0, +	AT91SAM9G45_BASE_US1, +	AT91SAM9G45_BASE_US2, +	AT91SAM9G45_BASE_US3, +	0, +}; + +static const u32 uarts_sam9rl[] = { +	AT91_BASE_DBGU0, +	AT91SAM9RL_BASE_US0, +	AT91SAM9RL_BASE_US1, +	AT91SAM9RL_BASE_US2, +	AT91SAM9RL_BASE_US3, +	0, +}; + +static const u32 uarts_sam9x5[] = { +	AT91_BASE_DBGU0, +	AT91SAM9X5_BASE_USART0, +	AT91SAM9X5_BASE_USART1, +	AT91SAM9X5_BASE_USART2, +	0, +}; + +static inline const u32* decomp_soc_detect(u32 dbgu_base) +{ +	u32 cidr, socid; + +	cidr = __raw_readl(dbgu_base + AT91_DBGU_CIDR); +	socid = cidr & ~AT91_CIDR_VERSION; + +	switch (socid) { +	case ARCH_ID_AT91RM9200: +		return uarts_rm9200; + +	case ARCH_ID_AT91SAM9G20: +	case ARCH_ID_AT91SAM9260: +		return uarts_sam9260; + +	case ARCH_ID_AT91SAM9261: +		return uarts_sam9261; + +	case ARCH_ID_AT91SAM9263: +		return uarts_sam9263; + +	case ARCH_ID_AT91SAM9G45: +		return uarts_sam9g45; + +	case ARCH_ID_AT91SAM9RL64: +		return uarts_sam9rl; + +	case ARCH_ID_AT91SAM9X5: +		return uarts_sam9x5; +	} + +	/* at91sam9g10 */ +	if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) { +		return uarts_sam9261; +	} +	/* at91sam9xe */ +	else if ((cidr & AT91_CIDR_ARCH) == ARCH_FAMILY_AT91SAM9XE) { +		return uarts_sam9260; +	} + +	return NULL; +} + +static inline void arch_decomp_setup(void) +{ +	int i = 0; +	const u32* usarts; + +	usarts = decomp_soc_detect(AT91_BASE_DBGU0); + +	if (!usarts) +		usarts = decomp_soc_detect(AT91_BASE_DBGU1); +	if (!usarts) { +		at91_uart = NULL; +		return; +	} + +	do { +		/* physical address */ +		at91_uart = (void __iomem *)usarts[i]; + +		if (__raw_readl(at91_uart + ATMEL_US_BRGR)) +			return; +		i++; +	} while (usarts[i]); + +	at91_uart = NULL; +} +#else +static inline void arch_decomp_setup(void) +{ +	at91_uart = NULL; +}  #endif  /* @@ -52,28 +178,24 @@   */  static void putc(int c)  { -#ifdef UART_OFFSET -	void __iomem *sys = (void __iomem *) UART_OFFSET;	/* physical address */ +	if (!at91_uart) +		return; -	while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXRDY)) +	while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXRDY))  		barrier(); -	__raw_writel(c, sys + ATMEL_US_THR); -#endif +	__raw_writel(c, at91_uart + ATMEL_US_THR);  }  static inline void flush(void)  { -#ifdef UART_OFFSET -	void __iomem *sys = (void __iomem *) UART_OFFSET;	/* physical address */ +	if (!at91_uart) +		return;  	/* wait for transmission to complete */ -	while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXEMPTY)) +	while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXEMPTY))  		barrier(); -#endif  } -#define arch_decomp_setup() -  #define arch_decomp_wdog()  #endif diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index f630250c6b8..1bfaad62873 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -261,7 +261,12 @@ static int at91_pm_enter(suspend_state_t state)  			 * For ARM 926 based chips, this requirement is weaker  			 * as at91sam9 can access a RAM in self-refresh mode.  			 */ -			at91_standby(); +			if (cpu_is_at91rm9200()) +				at91rm9200_standby(); +			else if (cpu_is_at91sam9g45()) +				at91sam9g45_standby(); +			else +				at91sam9_standby();  			break;  		case PM_SUSPEND_ON: @@ -307,10 +312,9 @@ static int __init at91_pm_init(void)  	pr_info("AT91: Power Management%s\n", (slow_clock ? " (with slow clock mode)" : "")); -#ifdef CONFIG_ARCH_AT91RM9200  	/* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ -	at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0); -#endif +	if (cpu_is_at91rm9200()) +		at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0);  	suspend_set_ops(&at91_pm_ops); diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h index 89f56f3a802..38f467c6b71 100644 --- a/arch/arm/mach-at91/pm.h +++ b/arch/arm/mach-at91/pm.h @@ -12,7 +12,6 @@  #define __ARCH_ARM_MACH_AT91_PM  #include <mach/at91_ramc.h> -#ifdef CONFIG_ARCH_AT91RM9200  #include <mach/at91rm9200_sdramc.h>  /* @@ -43,10 +42,6 @@ static inline void at91rm9200_standby(void)  		  "r" (lpr));  } -#define at91_standby at91rm9200_standby - -#elif defined(CONFIG_ARCH_AT91SAM9G45) -  /* We manage both DDRAM/SDRAM controllers, we need more than one value to   * remember.   */ @@ -75,11 +70,7 @@ static inline void at91sam9g45_standby(void)  	at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);  } -#define at91_standby at91sam9g45_standby - -#else - -#ifdef CONFIG_ARCH_AT91SAM9263 +#ifdef CONFIG_SOC_AT91SAM9263  /*   * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;   * handle those cases both here and in the Suspend-To-RAM support. @@ -102,8 +93,4 @@ static inline void at91sam9_standby(void)  	at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr);  } -#define at91_standby at91sam9_standby - -#endif -  #endif diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S index db5452123f1..098c28ddf02 100644 --- a/arch/arm/mach-at91/pm_slowclock.S +++ b/arch/arm/mach-at91/pm_slowclock.S @@ -18,7 +18,7 @@  #include <mach/at91_ramc.h> -#ifdef CONFIG_ARCH_AT91SAM9263 +#ifdef CONFIG_SOC_AT91SAM9263  /*   * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;   * handle those cases both here and in the Suspend-To-RAM support. diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index 97cc04dc807..f44a2e7272e 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c @@ -54,6 +54,7 @@ void __init at91_init_interrupts(unsigned int *priority)  }  void __iomem *at91_ramc_base[2]; +EXPORT_SYMBOL_GPL(at91_ramc_base);  void __init at91_ioremap_ramc(int id, u32 addr, u32 size)  { @@ -292,6 +293,7 @@ void __init at91_ioremap_rstc(u32 base_addr)  }  void __iomem *at91_matrix_base; +EXPORT_SYMBOL_GPL(at91_matrix_base);  void __init at91_ioremap_matrix(u32 base_addr)  { diff --git a/arch/arm/mach-at91/soc.h b/arch/arm/mach-at91/soc.h index 5db4aa45404..683dddfd8b1 100644 --- a/arch/arm/mach-at91/soc.h +++ b/arch/arm/mach-at91/soc.h @@ -26,30 +26,30 @@ static inline int at91_soc_is_enabled(void)  	return at91_boot_soc.init != NULL;  } -#if !defined(CONFIG_ARCH_AT91RM9200) +#if !defined(CONFIG_SOC_AT91RM9200)  #define at91rm9200_soc	at91_boot_soc  #endif -#if !(defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)) +#if !defined(CONFIG_SOC_AT91SAM9260)  #define at91sam9260_soc	at91_boot_soc  #endif -#if !(defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)) +#if !defined(CONFIG_SOC_AT91SAM9261)  #define at91sam9261_soc	at91_boot_soc  #endif -#if !defined(CONFIG_ARCH_AT91SAM9263) +#if !defined(CONFIG_SOC_AT91SAM9263)  #define at91sam9263_soc	at91_boot_soc  #endif -#if !defined(CONFIG_ARCH_AT91SAM9G45) +#if !defined(CONFIG_SOC_AT91SAM9G45)  #define at91sam9g45_soc	at91_boot_soc  #endif -#if !defined(CONFIG_ARCH_AT91SAM9RL) +#if !defined(CONFIG_SOC_AT91SAM9RL)  #define at91sam9rl_soc	at91_boot_soc  #endif -#if !defined(CONFIG_ARCH_AT91SAM9X5) +#if !defined(CONFIG_SOC_AT91SAM9X5)  #define at91sam9x5_soc	at91_boot_soc  #endif  |