static struct mci_platform_data __initdata mci0_data = { .slot[0] = { .bus_width = 4, #if defined(CONFIG_BOARD_ATNGW100_MKII) .detect_pin = GPIO_PIN_PC(25), .wp_pin = GPIO_PIN_PE(22), #else .detect_pin = GPIO_PIN_PC(25), .wp_pin = GPIO_PIN_PE(0), #endif }, };
static struct spi_board_info __initdata spi0_board_info[] = { { .modalias = "ads7846", .max_speed_hz = 3250000, .chip_select = 0, .bus_num = 0, .platform_data = &ads7846_data, .mode = SPI_MODE_0, }, }; static struct mci_platform_data __initdata mci0_data = { .slot[0] = { .bus_width = 4, .detect_pin = GPIO_PIN_PE(19), .wp_pin = GPIO_PIN_PE(20), .detect_is_active_high = true, }, }; static int __init parse_tag_ethernet(struct tag *tag) { int i; i = tag->u.ethernet.mac_index; if (i < ARRAY_SIZE(hw_addr)) { memcpy(hw_addr[i].addr, tag->u.ethernet.hw_address, sizeof(hw_addr[i].addr)); }
static struct mci_platform_data __initdata mci0_data = { .slot[0] = { .bus_width = 4, #if defined(CONFIG_BOARD_ATNGW100_EVKLCD10X) || defined(CONFIG_BOARD_ATNGW100_MRMT1) .detect_pin = GPIO_PIN_NONE, .wp_pin = GPIO_PIN_NONE, #else .detect_pin = GPIO_PIN_PC(25), .wp_pin = GPIO_PIN_PE(0), #endif }, };
.tdf_mode = 0, }; static struct mtd_partition nand_partitions[] = { { .name = "main", .offset = 0x00000000, .size = MTDPART_SIZ_FULL, }, }; static struct atmel_nand_data atngw100mkii_nand_data __initdata = { .cle = 21, .ale = 22, .rdy_pin = GPIO_PIN_PB(28), .enable_pin = GPIO_PIN_PE(23), .bus_width_16 = true, .ecc_mode = NAND_ECC_SOFT, .parts = nand_partitions, .num_parts = ARRAY_SIZE(nand_partitions), }; #endif /* Initialized by bootloader-specific startup code. */ struct tag *bootloader_tags __initdata; struct eth_addr { u8 addr[6]; }; static struct eth_addr __initdata hw_addr[2]; static struct macb_platform_data __initdata eth_data[2];
static int __init atstk1003_init(void) { /* * ATSTK1000 uses 32-bit SDRAM interface. Reserve the * SDRAM-specific pins so that nobody messes with them. */ at32_reserve_pin(GPIO_PIN_PE(0)); /* DATA[16] */ at32_reserve_pin(GPIO_PIN_PE(1)); /* DATA[17] */ at32_reserve_pin(GPIO_PIN_PE(2)); /* DATA[18] */ at32_reserve_pin(GPIO_PIN_PE(3)); /* DATA[19] */ at32_reserve_pin(GPIO_PIN_PE(4)); /* DATA[20] */ at32_reserve_pin(GPIO_PIN_PE(5)); /* DATA[21] */ at32_reserve_pin(GPIO_PIN_PE(6)); /* DATA[22] */ at32_reserve_pin(GPIO_PIN_PE(7)); /* DATA[23] */ at32_reserve_pin(GPIO_PIN_PE(8)); /* DATA[24] */ at32_reserve_pin(GPIO_PIN_PE(9)); /* DATA[25] */ at32_reserve_pin(GPIO_PIN_PE(10)); /* DATA[26] */ at32_reserve_pin(GPIO_PIN_PE(11)); /* DATA[27] */ at32_reserve_pin(GPIO_PIN_PE(12)); /* DATA[28] */ at32_reserve_pin(GPIO_PIN_PE(13)); /* DATA[29] */ at32_reserve_pin(GPIO_PIN_PE(14)); /* DATA[30] */ at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */ at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */ at32_add_system_devices(); #ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM at32_add_device_usart(1); #else at32_add_device_usart(0); #endif at32_add_device_usart(2); #ifndef CONFIG_BOARD_ATSTK100X_SW1_CUSTOM at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); #endif #ifdef CONFIG_BOARD_ATSTK100X_SPI1 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info)); #endif #ifndef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM at32_add_device_mci(0); #endif at32_add_device_usba(0, NULL); #ifndef CONFIG_BOARD_ATSTK100X_SW3_CUSTOM at32_add_device_ssc(0, ATMEL_SSC_TX); #endif atstk1000_setup_j2_leds(); atstk1003_setup_extdac(); return 0; }