diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-05-25 09:08:15 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-05-29 10:16:35 +0200 |
commit | d72083674ad755125196662c7c6ad7a696a8ae30 (patch) | |
tree | 9ee753493cdb0a72f5c3e22be6fefdabaff70325 /arch/arm/mach-at91/include | |
parent | 1aaa684f6e150e33b331d73af9134b39f45b8a04 (diff) | |
download | barebox-d72083674ad755125196662c7c6ad7a696a8ae30.tar.gz barebox-d72083674ad755125196662c7c6ad7a696a8ae30.tar.xz |
at91: switch uart registration to inline
this allow to save between 100 to 300 bytes
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91/include')
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91rm9200.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9260.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9261.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9263.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9g45.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/at91sam9x5.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/include/mach/board.h | 56 |
7 files changed, 62 insertions, 1 deletions
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h index 39b1e15c44..2850f0d73c 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h @@ -98,6 +98,7 @@ #define AT91_USART1 AT91RM9200_BASE_US1 #define AT91_USART2 AT91RM9200_BASE_US2 #define AT91_USART3 AT91RM9200_BASE_US3 +#define AT91_NB_USART 5 #define AT91_BASE_SPI AT91RM9200_BASE_SPI #define AT91_BASE_TWI AT91RM9200_BASE_TWI @@ -107,6 +108,7 @@ #define AT91_MATRIX 0 /* not supported */ + /* * Internal Memory. */ diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h index ca273cb7df..be07e57267 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260.h @@ -105,6 +105,7 @@ #define AT91_USART3 AT91SAM9260_BASE_US3 #define AT91_USART4 AT91SAM9260_BASE_US4 #define AT91_USART5 AT91SAM9260_BASE_US5 +#define AT91_NB_USART 7 #define AT91_BASE_SPI AT91SAM9260_BASE_SPI0 #define AT91_BASE_TWI AT91SAM9260_BASE_TWI diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h index 3be80870cf..d51673eab6 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261.h @@ -88,6 +88,7 @@ #define AT91_USART0 AT91SAM9261_BASE_US0 #define AT91_USART1 AT91SAM9261_BASE_US1 #define AT91_USART2 AT91SAM9261_BASE_US2 +#define AT91_NB_USART 4 /* diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h index 64f4fccefe..c8374a7e58 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263.h @@ -105,6 +105,7 @@ #define AT91_USART0 AT91SAM9263_BASE_US0 #define AT91_USART1 AT91SAM9263_BASE_US1 #define AT91_USART2 AT91SAM9263_BASE_US2 +#define AT91_NB_USART 4 #define AT91_SMC AT91_SMC0 #define AT91_SDRAMC AT91_SDRAMC0 diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h index 18fa6c50ff..10f31703b7 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h @@ -116,6 +116,7 @@ #define AT91_USART1 AT91SAM9G45_BASE_US1 #define AT91_USART2 AT91SAM9G45_BASE_US2 #define AT91_USART3 AT91SAM9G45_BASE_US3 +#define AT91_NB_USART 5 /* * Internal Memory. diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h index 7d40f7ca60..22407102cf 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9x5.h +++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h @@ -117,6 +117,7 @@ #define AT91_USART1 AT91SAM9X5_BASE_US1 #define AT91_USART2 AT91SAM9X5_BASE_US2 #define AT91_USART3 AT91SAM9X5_BASE_US3 +#define AT91_NB_USART 5 /* diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index f45bad6047..c142feeff8 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h @@ -21,6 +21,8 @@ #ifndef __ASM_ARCH_BOARD_H #define __ASM_ARCH_BOARD_H +#include <mach/hardware.h> +#include <sizes.h> #include <net.h> #include <spi/spi.h> #include <linux/mtd/mtd.h> @@ -83,7 +85,59 @@ void at91_add_device_sdram(u32 size); #define ATMEL_UART_DCD 0x10 #define ATMEL_UART_RI 0x20 -struct device_d * __init at91_register_uart(unsigned id, unsigned pins); +resource_size_t __init at91_configure_dbgu(void); +resource_size_t __init at91_configure_usart0(unsigned pins); +resource_size_t __init at91_configure_usart1(unsigned pins); +resource_size_t __init at91_configure_usart2(unsigned pins); +resource_size_t __init at91_configure_usart3(unsigned pins); +resource_size_t __init at91_configure_usart4(unsigned pins); +resource_size_t __init at91_configure_usart5(unsigned pins); + +#if defined(CONFIG_DRIVER_SERIAL_ATMEL) +static inline struct device_d * at91_register_uart(unsigned id, unsigned pins) +{ + resource_size_t start; + resource_size_t size = SZ_16K; + + if (id >= AT91_NB_USART) + return NULL; + + switch (id) { + case 0: /* DBGU */ + start = at91_configure_dbgu(); + size = 512; + break; + case 1: + start = at91_configure_usart0(pins); + break; + case 2: + start = at91_configure_usart1(pins); + break; + case 3: + start = at91_configure_usart2(pins); + break; + case 4: + start = at91_configure_usart3(pins); + break; + case 5: + start = at91_configure_usart4(pins); + break; + case 6: + start = at91_configure_usart5(pins); + break; + default: + return NULL; + } + + return add_generic_device("atmel_usart", id, NULL, start, size, + IORESOURCE_MEM, NULL); +} +#else +static inline struct device_d * at91_register_uart(unsigned id, unsigned pins) +{ + return NULL; +} +#endif /* Multimedia Card Interface */ struct atmel_mci_platform_data { |