/arch/arm/mach-at91/board-ecbat91.c
C | 178 lines | 119 code | 27 blank | 32 comment | 0 complexity | 9566a8554b599014324a4dd75b67cddb MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
1/* 2 * linux/arch/arm/mach-at91rm9200/board-ecbat91.c 3 * Copyright (C) 2007 emQbit.com. 4 * 5 * We started from board-dk.c, which is Copyright (C) 2005 SAN People. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 */ 21 22#include <linux/types.h> 23#include <linux/init.h> 24#include <linux/mm.h> 25#include <linux/module.h> 26#include <linux/platform_device.h> 27#include <linux/spi/spi.h> 28#include <linux/spi/flash.h> 29 30#include <mach/hardware.h> 31#include <asm/setup.h> 32#include <asm/mach-types.h> 33#include <asm/irq.h> 34 35#include <asm/mach/arch.h> 36#include <asm/mach/map.h> 37#include <asm/mach/irq.h> 38 39#include <mach/board.h> 40#include <mach/gpio.h> 41 42#include "generic.h" 43 44 45static void __init ecb_at91map_io(void) 46{ 47 /* Initialize processor: 18.432 MHz crystal */ 48 at91rm9200_initialize(18432000, AT91RM9200_PQFP); 49 50 /* Setup the LEDs */ 51 at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7); 52 53 /* DBGU on ttyS0. (Rx & Tx only) */ 54 at91_register_uart(0, 0, 0); 55 56 /* USART0 on ttyS1. (Rx & Tx only) */ 57 at91_register_uart(AT91RM9200_ID_US0, 1, 0); 58 59 /* set serial console to ttyS0 (ie, DBGU) */ 60 at91_set_serial_console(0); 61} 62 63static void __init ecb_at91init_irq(void) 64{ 65 at91rm9200_init_interrupts(NULL); 66} 67 68static struct at91_eth_data __initdata ecb_at91eth_data = { 69 .phy_irq_pin = AT91_PIN_PC4, 70 .is_rmii = 0, 71}; 72 73static struct at91_usbh_data __initdata ecb_at91usbh_data = { 74 .ports = 1, 75}; 76 77static struct at91_mmc_data __initdata ecb_at91mmc_data = { 78 .slot_b = 0, 79 .wire4 = 1, 80}; 81 82 83#if defined(CONFIG_MTD_DATAFLASH) 84static struct mtd_partition __initdata my_flash0_partitions[] = 85{ 86 { /* 0x8400 */ 87 .name = "Darrell-loader", 88 .offset = 0, 89 .size = 12 * 1056, 90 }, 91 { 92 .name = "U-boot", 93 .offset = MTDPART_OFS_NXTBLK, 94 .size = 110 * 1056, 95 }, 96 { /* 1336 (167 blocks) pages * 1056 bytes = 0x158700 bytes */ 97 .name = "UBoot-env", 98 .offset = MTDPART_OFS_NXTBLK, 99 .size = 8 * 1056, 100 }, 101 { /* 1336 (167 blocks) pages * 1056 bytes = 0x158700 bytes */ 102 .name = "Kernel", 103 .offset = MTDPART_OFS_NXTBLK, 104 .size = 1534 * 1056, 105 }, 106 { /* 190200 - jffs2 root filesystem */ 107 .name = "Filesystem", 108 .offset = MTDPART_OFS_NXTBLK, 109 .size = MTDPART_SIZ_FULL, /* 26 sectors */ 110 } 111}; 112 113static struct flash_platform_data __initdata my_flash0_platform = { 114 .name = "Removable flash card", 115 .parts = my_flash0_partitions, 116 .nr_parts = ARRAY_SIZE(my_flash0_partitions) 117}; 118 119#endif 120 121static struct spi_board_info __initdata ecb_at91spi_devices[] = { 122 { /* DataFlash chip */ 123 .modalias = "mtd_dataflash", 124 .chip_select = 0, 125 .max_speed_hz = 10 * 1000 * 1000, 126 .bus_num = 0, 127#if defined(CONFIG_MTD_DATAFLASH) 128 .platform_data = &my_flash0_platform, 129#endif 130 }, 131 { /* User accessable spi - cs1 (250KHz) */ 132 .modalias = "spi-cs1", 133 .chip_select = 1, 134 .max_speed_hz = 250 * 1000, 135 }, 136 { /* User accessable spi - cs2 (1MHz) */ 137 .modalias = "spi-cs2", 138 .chip_select = 2, 139 .max_speed_hz = 1 * 1000 * 1000, 140 }, 141 { /* User accessable spi - cs3 (10MHz) */ 142 .modalias = "spi-cs3", 143 .chip_select = 3, 144 .max_speed_hz = 10 * 1000 * 1000, 145 }, 146}; 147 148static void __init ecb_at91board_init(void) 149{ 150 /* Serial */ 151 at91_add_device_serial(); 152 153 /* Ethernet */ 154 at91_add_device_eth(&ecb_at91eth_data); 155 156 /* USB Host */ 157 at91_add_device_usbh(&ecb_at91usbh_data); 158 159 /* I2C */ 160 at91_add_device_i2c(NULL, 0); 161 162 /* MMC */ 163 at91_add_device_mmc(0, &ecb_at91mmc_data); 164 165 /* SPI */ 166 at91_add_device_spi(ecb_at91spi_devices, ARRAY_SIZE(ecb_at91spi_devices)); 167} 168 169MACHINE_START(ECBAT91, "emQbit's ECB_AT91") 170 /* Maintainer: emQbit.com */ 171 .phys_io = AT91_BASE_SYS, 172 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, 173 .boot_params = AT91_SDRAM_BASE + 0x100, 174 .timer = &at91rm9200_timer, 175 .map_io = ecb_at91map_io, 176 .init_irq = ecb_at91init_irq, 177 .init_machine = ecb_at91board_init, 178MACHINE_END