diff options
Diffstat (limited to 'arch/arm/mach-at91/board-sam9260ek.c')
| -rw-r--r-- | arch/arm/mach-at91/board-sam9260ek.c | 97 | 
1 files changed, 43 insertions, 54 deletions
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index de1816e0e1d..65dea12d685 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c @@ -20,6 +20,7 @@   */  #include <linux/types.h> +#include <linux/gpio.h>  #include <linux/init.h>  #include <linux/mm.h>  #include <linux/module.h> @@ -27,7 +28,7 @@  #include <linux/spi/spi.h>  #include <linux/spi/at73c213.h>  #include <linux/clk.h> -#include <linux/i2c/at24.h> +#include <linux/platform_data/at24.h>  #include <linux/gpio_keys.h>  #include <linux/input.h> @@ -40,46 +41,30 @@  #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 <mach/system_rev.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: 18.432 MHz crystal */ -	at91sam9260_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); +	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},  };  /* @@ -87,7 +72,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 */  }; @@ -124,7 +109,7 @@ static void __init at73c213_set_clk(struct at73c213_board_info *info) {}   * 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, @@ -156,7 +141,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	= 1,  }; @@ -178,24 +163,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_PC13,  	.enable_pin	= AT91_PIN_PC14, -	.partition_info	= nand_partitions, -#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16) -	.bus_width_16	= 1, -#else -	.bus_width_16	= 0, -#endif +	.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 = { @@ -218,6 +195,7 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {  static void __init ek_add_device_nand(void)  { +	ek_nand_data.bus_width_16 = board_have_nand_16bit();  	/* setup bus-width (8 or 16) */  	if (ek_nand_data.bus_width_16)  		ek_nand_smc_config.mode |= AT91_SMC_DBW_16; @@ -225,7 +203,7 @@ static void __init ek_add_device_nand(void)  		ek_nand_smc_config.mode |= AT91_SMC_DBW_8;  	/* 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);  } @@ -234,12 +212,12 @@ 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	= ... not connected -//	.wp_pin		= ... not connected -//	.vcc_pin	= ... not connected +static struct mci_platform_data __initdata ek_mci0_data = { +	.slot[1] = { +		.bus_width	= 4, +		.detect_pin	= -EINVAL, +		.wp_pin		= -EINVAL, +	},  }; @@ -330,6 +308,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); @@ -342,7 +330,7 @@ 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(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));  	/* SSC (to AT73C213) */ @@ -356,9 +344,10 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-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  | 
