diff options
Diffstat (limited to 'arch/arm/mach-at91/board-sam9rlek.c')
| -rw-r--r-- | arch/arm/mach-at91/board-sam9rlek.c | 93 | 
1 files changed, 44 insertions, 49 deletions
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 3bf3408e94c..b64648b4a1f 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c @@ -8,6 +8,7 @@   */  #include <linux/types.h> +#include <linux/gpio.h>  #include <linux/init.h>  #include <linux/mm.h>  #include <linux/module.h> @@ -17,6 +18,7 @@  #include <linux/clk.h>  #include <linux/input.h>  #include <linux/gpio_keys.h> +#include <linux/platform_data/at91_adc.h>  #include <video/atmel_lcdc.h> @@ -29,36 +31,23 @@  #include <asm/mach/irq.h>  #include <mach/hardware.h> -#include <mach/board.h> -#include <mach/gpio.h>  #include <mach/at91sam9_smc.h> -#include <mach/at91_shdwc.h> + +#include "at91_aic.h" +#include "at91_shdwc.h" +#include "board.h"  #include "sam9_smc.h"  #include "generic.h" +#include "gpio.h" -static void __init ek_map_io(void) +static void __init ek_init_early(void)  {  	/* Initialize processor: 12.000 MHz crystal */ -	at91sam9rl_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); -} - -static void __init ek_init_irq(void) -{ -	at91sam9rl_init_interrupts(NULL); +	at91_initialize(12000000);  } -  /*   * USB HS Device port   */ @@ -70,11 +59,12 @@ static struct usba_platform_data __initdata ek_usba_udc_data = {  /*   * MCI (SD/MMC)   */ -static struct at91_mmc_data __initdata ek_mmc_data = { -	.wire4		= 1, -	.det_pin	= AT91_PIN_PA15, -//	.wp_pin		= ... not connected -//	.vcc_pin	= ... not connected +static struct mci_platform_data __initdata mci0_data = { +	.slot[0] = { +		.bus_width	= 4, +		.detect_pin	= AT91_PIN_PA15, +		.wp_pin		= -EINVAL, +	},  }; @@ -94,19 +84,16 @@ static struct mtd_partition __initdata ek_nand_partition[] = {  	},  }; -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions) -{ -	*num_partitions = ARRAY_SIZE(ek_nand_partition); -	return ek_nand_partition; -} -  static struct atmel_nand_data __initdata ek_nand_data = {  	.ale		= 21,  	.cle		= 22, -//	.det_pin	= ... not connected +	.det_pin	= -EINVAL,  	.rdy_pin	= AT91_PIN_PD17,  	.enable_pin	= AT91_PIN_PB6, -	.partition_info	= nand_partitions, +	.ecc_mode	= NAND_ECC_SOFT, +	.on_flash_bbt	= 1, +	.parts		= ek_nand_partition, +	.num_parts	= ARRAY_SIZE(ek_nand_partition),  };  static struct sam9_smc_config __initdata ek_nand_smc_config = { @@ -130,7 +117,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {  static void __init ek_add_device_nand(void)  {  	/* configure chip-select 3 (NAND) */ -	sam9_smc_configure(3, &ek_nand_smc_config); +	sam9_smc_configure(0, 3, &ek_nand_smc_config);  	at91_add_device_nand(&ek_nand_data);  } @@ -185,7 +172,7 @@ static struct fb_monspecs at91fb_default_monspecs = {  					| ATMEL_LCDC_DISTYPE_TFT \  					| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) -static void at91_lcdc_power_control(int on) +static void at91_lcdc_power_control(struct atmel_lcdfb_pdata *pdata, int on)  {  	if (on)  		at91_set_gpio_value(AT91_PIN_PC1, 0);	/* power up */ @@ -194,7 +181,7 @@ static void at91_lcdc_power_control(int on)  }  /* Driver datas */ -static struct atmel_lcdfb_info __initdata ek_lcdc_data = { +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {  	.lcdcon_is_backlight            = true,  	.default_bpp			= 16,  	.default_dmacon			= ATMEL_LCDC_DMAEN, @@ -206,7 +193,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {  };  #else -static struct atmel_lcdfb_info __initdata ek_lcdc_data; +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;  #endif @@ -215,6 +202,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data;   * reset_pin is not connected: NRST   */  static struct ac97c_platform_data ek_ac97_data = { +	.reset_pin	= -EINVAL,  }; @@ -243,12 +231,13 @@ static struct gpio_led ek_leds[] = {  /* - * Touchscreen + * ADC + Touchscreen   */ -static struct at91_tsadcc_data ek_tsadcc_data = { -	.adc_clock		= 1000000, -	.pendet_debounce	= 0x0f, -	.ts_sample_hold_time	= 0x03, +static struct at91_adc_data ek_adc_data = { +	.channels_used = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5), +	.use_external_triggers = true, +	.vref = 3300, +	.touchscreen_type = ATMEL_ADC_TOUCHSCREEN_4WIRE,  }; @@ -304,6 +293,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); @@ -314,13 +308,13 @@ static void __init ek_board_init(void)  	/* SPI */  	at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));  	/* MMC */ -	at91_add_device_mmc(0, &ek_mmc_data); +	at91_add_device_mci(0, &mci0_data);  	/* LCD Controller */  	at91_add_device_lcdc(&ek_lcdc_data);  	/* AC97 */  	at91_add_device_ac97(&ek_ac97_data); -	/* Touch Screen Controller */ -	at91_add_device_tsadcc(&ek_tsadcc_data); +	/* Touch Screen Controller + ADC */ +	at91_add_device_adc(&ek_adc_data);  	/* LEDs */  	at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));  	/* Push Buttons */ @@ -329,9 +323,10 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")  	/* Maintainer: Atmel */ -	.boot_params	= AT91_SDRAM_BASE + 0x100, -	.timer		= &at91sam926x_timer, -	.map_io		= ek_map_io, -	.init_irq	= ek_init_irq, +	.init_time	= at91sam926x_pit_init, +	.map_io		= at91_map_io, +	.handle_irq	= at91_aic_handle_irq, +	.init_early	= ek_init_early, +	.init_irq	= at91_init_irq_default,  	.init_machine	= ek_board_init,  MACHINE_END  | 
