diff options
Diffstat (limited to 'arch/arm/mach-at91/board-sam9-l9260.c')
| -rw-r--r-- | arch/arm/mach-at91/board-sam9-l9260.c | 108 | 
1 files changed, 58 insertions, 50 deletions
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c index 25a26beaa72..d24dda67e2d 100644 --- a/arch/arm/mach-at91/board-sam9-l9260.c +++ b/arch/arm/mach-at91/board-sam9-l9260.c @@ -21,6 +21,7 @@   */  #include <linux/types.h> +#include <linux/gpio.h>  #include <linux/init.h>  #include <linux/mm.h>  #include <linux/module.h> @@ -36,48 +37,28 @@  #include <asm/mach/map.h>  #include <asm/mach/irq.h> -#include <mach/board.h> -#include <mach/gpio.h>  #include <mach/at91sam9_smc.h> +#include "at91_aic.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: 18.432 MHz crystal */ -	at91sam9260_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); +	at91_initialize(18432000);  } -static void __init ek_init_irq(void) -{ -	at91sam9260_init_interrupts(NULL); -} - -  /*   * USB Host port   */  static struct at91_usbh_data __initdata ek_usbh_data = {  	.ports		= 2, +	.vbus_pin	= {-EINVAL, -EINVAL}, +	.overcurrent_pin= {-EINVAL, -EINVAL},  };  /* @@ -85,7 +66,7 @@ static struct at91_usbh_data __initdata ek_usbh_data = {   */  static struct at91_udc_data __initdata ek_udc_data = {  	.vbus_pin	= AT91_PIN_PC5, -	.pullup_pin	= 0,		/* pull-up driven by UDC */ +	.pullup_pin	= -EINVAL,		/* pull-up driven by UDC */  }; @@ -93,7 +74,7 @@ static struct at91_udc_data __initdata ek_udc_data = {   * SPI devices.   */  static struct spi_board_info ek_spi_devices[] = { -#if !defined(CONFIG_MMC_AT91) +#if !IS_ENABLED(CONFIG_MMC_ATMELMCI)  	{	/* DataFlash chip */  		.modalias	= "mtd_dataflash",  		.chip_select	= 1, @@ -115,7 +96,7 @@ static struct spi_board_info ek_spi_devices[] = {  /*   * MACB Ethernet device   */ -static struct at91_eth_data __initdata ek_macb_data = { +static struct macb_platform_data __initdata ek_macb_data = {  	.phy_irq_pin	= AT91_PIN_PA7,  	.is_rmii	= 0,  }; @@ -137,19 +118,15 @@ 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_PC13,  	.enable_pin	= AT91_PIN_PC14, -	.partition_info	= nand_partitions, +	.ecc_mode	= NAND_ECC_SOFT, +	.parts		= ek_nand_partition, +	.num_parts	= ARRAY_SIZE(ek_nand_partition),  };  static struct sam9_smc_config __initdata ek_nand_smc_config = { @@ -173,7 +150,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);  } @@ -182,17 +159,45 @@ static void __init ek_add_device_nand(void)  /*   * MCI (SD/MMC)   */ -static struct at91_mmc_data __initdata ek_mmc_data = { -	.slot_b		= 1, -	.wire4		= 1, -	.det_pin	= AT91_PIN_PC8, -	.wp_pin		= AT91_PIN_PC4, -//	.vcc_pin	= ... not connected +static struct mci_platform_data __initdata ek_mci0_data = { +	.slot[1] = { +		.bus_width	= 4, +		.detect_pin	= AT91_PIN_PC8, +		.wp_pin		= AT91_PIN_PC4, +	}, +}; + +/* + * LEDs + */ +static struct gpio_led ek_leds[] = { +	{	/* D1 */ +		.name			= "led1", +		.gpio			= AT91_PIN_PA9, +		.active_low		= 1, +		.default_trigger	= "heartbeat", +	}, +	{	/* D2 */ +		.name			= "led2", +		.gpio			= AT91_PIN_PA6, +		.active_low		= 1, +		.default_trigger	= "timer", +	}  };  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);  	at91_add_device_serial();  	/* USB Host */  	at91_add_device_usbh(&ek_usbh_data); @@ -205,16 +210,19 @@ static void __init ek_board_init(void)  	/* Ethernet */  	at91_add_device_eth(&ek_macb_data);  	/* MMC */ -	at91_add_device_mmc(0, &ek_mmc_data); +	at91_add_device_mci(0, &ek_mci0_data);  	/* I2C */  	at91_add_device_i2c(NULL, 0); +	/* LEDs */ +	at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));  }  MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")  	/* Maintainer: Olimex */ -	.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  | 
