at91: Add new board
PATCH 5/5 at91: Add new board
Hi,
I'd like to add support for our board based up on Telit's module GE863 Pro3. Its like AT91SAM9260EK with 64MB RAM and 128MB NAND FLASH, many uarts, SD slot, eth phy...
--- arch/arm/mach-at91/Kconfig | 6 + arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/board-cdu.c | 301 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 308 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-at91/board-cdu.c
arch/arm/mach-at91/Kconfig +6 -0
@@ -260,6 +260,12 @@ config MACH_AT91SAM9260EK Select this if you are using Atmel's AT91SAM9260-EK or AT91SAM9XE Evaluation Kit <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933> +config MACH_CDU + bool "CDU AKsignal board" + help + Select this if you are using AKsignal CDU board + <http://www.aksignal.cz> + config MACH_CAM60 bool "KwikByte KB9260 (CAM60) board" help
arch/arm/mach-at91/Makefile +1 -0
@@ -51,6 +51,7 @@ obj-$(CONFIG_MACH_RSI_EWS) += board-rsi-ews.o # AT91SAM9260 board-specific support obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o +obj-$(CONFIG_MACH_CDU) += board-cdu.o obj-$(CONFIG_MACH_CAM60) += board-cam60.o obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o obj-$(CONFIG_MACH_USB_A9260) += board-usb-a926x.o
arch/arm/mach-at91/board-cdu.c new file +301 -0
301 lines not on this page · raw message
Signature · 1 line
1.7.7
PATCH 5/5 at91: Add new board
On 06/29/2012 01:32 PM, Prchal Ji?? :
Quoted 5 lines
Hi,
I'd like to add support for our board based up on Telit's module GE863 Pro3.
Its like AT91SAM9260EK with 64MB RAM and 128MB NAND FLASH, many uarts, SD slot, eth phy...
Prchal,
It seems that Telit's module is submitted as a Device Tree machine as submitted by Fabio Porcedda a few weeks ago.
AT91 will not include in mainline more boards based on previous descriptions. We are moving to device tree infrastructure when possible.
Please check the AT91 git tree:git://github.com/at91linux/linux-at91.git at91-3.6-dt
And see if you can add your board on top of it...
Best regards,
Quoted 350 lines
Signed-off-by Jiri Prchal <[email protected]>--- arch/arm/mach-at91/Kconfig | 6 + arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/board-cdu.c | 301 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 308 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-at91/board-cdu.carch/arm/mach-at91/Kconfig +0
-0@@ -260,6 +260,12 @@ config MACH_AT91SAM9260EK Select this if you are using Atmel's AT91SAM9260-EK or AT91SAM9XEEvaluation Kit
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933>arch/arm/mach-at91/Kconfig +6
-0+config MACH_CDU + bool "CDU AKsignal board" + help + Select this if you are using AKsignal CDU board + <http://www.aksignal.cz> + config MACH_CAM60 bool "KwikByte KB9260 (CAM60) board" helparch/arm/mach-at91/Makefile +1
-0@@ -51,6 +51,7 @@ obj-$(CONFIG_MACH_RSI_EWS) += board-rsi-ews.o # AT91SAM9260 board-specific support obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o +obj-$(CONFIG_MACH_CDU) += board-cdu.o obj-$(CONFIG_MACH_CAM60) += board-cam60.o obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o obj-$(CONFIG_MACH_USB_A9260) += board-usb-a926x.oarch/arm/mach-at91/board-cdu.c new file +21
-0@@ -0,0 +1,301 @@ +/* +* linux/arch/arm/mach-at91/board-cdu.c +* +* Copyright (C) 2005 SAN People +* Copyright (C) 2006 Atmel +* Copyright (C) 2011 AKsignal Brno +* jiri.prchal at aksignal.cz +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */arch/arm/mach-at91/board-cdu.c new file +41
-0+ +#include <linux/types.h> +#include <linux/gpio.h> +#include <linux/init.h> +#include <linux/mm.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/spi/spi.h> +#include <linux/clk.h> +#include <linux/spi/mcp23s08.h> +#include <linux/dma-mapping.h> + +#include <asm/setup.h> +#include <asm/mach-types.h> +#include <asm/irq.h> + +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#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 "sam9_smc.h" +#include "generic.h" + +static void __init cdu_init_early (void ) +{ +/* Initialize processor: 6 MHz crystal */ +at91_initialize (6000000 ); + +/* DBGU on ttyS0. (Rx & Tx only) */ +at91_register_uart (0 ,0 ,0 ); + +/* modem */ +/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ + at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS |
ATMEL_UART_RTSarch/arm/mach-at91/board-cdu.c new file +225
-0+ | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD + | ATMEL_UART_RI); + +/* sbus */ +/* USART1 on ttyS2. (Rx, Tx, RTS) */ +at91_register_uart (AT91SAM9260_ID_US1 ,2 ,ATMEL_UART_RTS ); + +/* aux RS485, pins 01,02 */ +/* USART2 on ttyS3. (Rx, Tx, RTS) */ +at91_register_uart (AT91SAM9260_ID_US2 ,3 ,ATMEL_UART_RTS ); + +/* aux RS485, pins 05,06 */ +/* USART3 on ttyS4. (Rx, Tx, RTS) */ +at91_register_uart (AT91SAM9260_ID_US3 ,4 ,ATMEL_UART_RTS ); +} + +/* +* USB Host port +*/ +static struct at91_usbh_data __initdata cdu_usbh_data = { + .ports =2 , + .vbus_pin = {-EINVAL , -EINVAL }, + .overcurrent_pin= {-EINVAL , -EINVAL }, +}; + +/* +* USB Device port +*/ +static struct at91_udc_data __initdata cdu_udc_data = { + .vbus_pin =AT91_PIN_PC15 , + .pullup_pin = -EINVAL ,/* pull-up driven by UDC */ +}; + +/* +* SPI devices. +*/ +static struct spi_board_info cdu_spi_devices[] = { + {/* ADC LTC2488 */ + .modalias ="spidev" , + .bus_num =1 , + .chip_select =0 , + .max_speed_hz =1 *1000000 , + }, + {/* GPIO expander MCP23S08 */ + .modalias ="spidev" , + .bus_num =1 , + .chip_select =1 , + .max_speed_hz =10 *1000000 , + .mode =SPI_MODE_3 , + }, + {/* non volatile memory (F-RAM) FM25VN10 */ + .modalias ="spidev" , + .bus_num =1 , + .chip_select =2 , + .max_speed_hz =10 *1000000 , + }, +}; + +/* +* MACB Ethernet device +*/ +static struct macb_platform_data __initdata cdu_macb_data = { + .phy_irq_pin = -EINVAL , + .is_rmii =1 , +}; + +/* +* NAND flash +*/ +static struct mtd_partition __initdata cdu_nand_partition[] = { + { + .name ="bootstrap" , + .offset =0 , + .size =SZ_256K , + }, + { + .name ="uboot" , + .offset =MTDPART_OFS_APPEND , + .size =SZ_512K , + }, + { + .name ="ubootenv" , + .offset =MTDPART_OFS_APPEND , + .size =SZ_256K , + }, + { + .name ="kernel" , + .offset =MTDPART_OFS_APPEND , + .size =SZ_4M , + }, + { + .name ="rootfs" , + .offset =MTDPART_OFS_APPEND , + .size =MTDPART_SIZ_FULL , + }, +}; + +static struct atmel_nand_data __initdata cdu_nand_data = { + .ale =21 , + .cle =22 , + .det_pin = -EINVAL , + .rdy_pin =AT91_PIN_PC13 , + .enable_pin =AT91_PIN_PC14 , + .bus_width_16 =0 , + .ecc_mode =NAND_ECC_SOFT , + .parts = cdu_nand_partition, + .num_parts =ARRAY_SIZE (cdu_nand_partition), +}; + +static struct sam9_smc_config __initdata cdu_nand_smc_config = { + .ncs_read_setup =0 , + .nrd_setup =1 , + .ncs_write_setup =0 , + .nwe_setup =1 , + + .ncs_read_pulse =3 , + .nrd_pulse =3 , + .ncs_write_pulse =3 , + .nwe_pulse =3 , + + .read_cycle =5 , + .write_cycle =5 , + + .tdf_cycles =2 , + + .mode =AT91_SMC_READMODE |AT91_SMC_WRITEMODE | +AT91_SMC_EXNWMODE_DISABLE | +AT91_SMC_DBW_8 , +}; + +static void __init cdu_add_device_nand (void ) +{ +sam9_smc_configure (0 ,3 , &cdu_nand_smc_config); +at91_add_device_nand (&cdu_nand_data); +} + +/* +* MCI (SD/MMC) +*/ +static struct mci_platform_data __initdata cdu_mmc_data = { + .slot[0 ] = { + .bus_width =4 , + .detect_pin =-1 , + .wp_pin =-1 , + }, +}; + +/* +* LEDs +*/ +static struct gpio_led cdu_leds[] = { + { + .name ="red" , + .gpio =AT91_PIN_PC10 , + }, + { + .name ="green" , + .gpio =AT91_PIN_PA5 , + .active_low =1 , + }, + { + .name ="yellow" , + .gpio =AT91_PIN_PB20 , + .active_low =1 , + }, + { + .name ="blue" , + .gpio =AT91_PIN_PB21 , + .active_low =1 , + .default_state =LEDS_GPIO_DEFSTATE_ON , + }, +}; + +/* +* GPIOs +*/ +static struct gpio gpios[] = { + {AT91_PIN_PA0 ,GPIOF_OUT_INIT_LOW ,"ebus_dir" }, + {AT91_PIN_PA1 ,GPIOF_OUT_INIT_LOW ,"time_dir" }, + {AT91_PIN_PB12 ,GPIOF_OUT_INIT_LOW ,"gsm_rst" }, + {AT91_PIN_PB13 ,GPIOF_OUT_INIT_LOW ,"gsm_on" }, + {AT91_PIN_PC2 ,GPIOF_IN ,"por" }, + {AT91_PIN_PC7 ,GPIOF_OUT_INIT_HIGH ,"spk_shdn" }, + + {AT91_PIN_PC0 ,GPIOF_IN ,"in13" }, + {AT91_PIN_PC1 ,GPIOF_IN ,"in14" }, + {AT91_PIN_PA22 ,GPIOF_IN ,"in17" }, + {AT91_PIN_PA23 ,GPIOF_IN ,"in18" }, + {AT91_PIN_PA24 ,GPIOF_IN ,"in19" }, + {AT91_PIN_PA25 ,GPIOF_IN ,"in20" }, + + {AT91_PIN_PA26 ,GPIOF_OUT_INIT_LOW ,"out15" }, + {AT91_PIN_PA27 ,GPIOF_OUT_INIT_LOW ,"out16" }, + {AT91_PIN_PA28 ,GPIOF_OUT_INIT_LOW ,"out17" }, + {AT91_PIN_PA29 ,GPIOF_OUT_INIT_LOW ,"out18" }, + {AT91_PIN_PA30 ,GPIOF_OUT_INIT_LOW ,"out19" }, + {AT91_PIN_PB29 ,GPIOF_OUT_INIT_LOW ,"out20" }, +}; + +static void __init cdu_add_gpio (void ) +{ +int i; + +for (i =0 ; i <ARRAY_SIZE (gpios); i++) { +gpio_request_one (gpios[i].gpio, gpios[i].flags, gpios[i].label); +gpio_export (gpios[i].gpio,0 ); +/* all inputs are active low */ +if (gpios[i].label ==strstr (gpios[i].label,"in" )) +gpio_sysfs_set_active_low (gpios[i].gpio,1 ); + } +} + +/* +* init +*/ +static void __init cdu_board_init (void ) +{ +at91_add_device_serial (); +at91_add_device_usbh (&cdu_usbh_data); +at91_add_device_udc (&cdu_udc_data); +at91_add_device_spi (cdu_spi_devices,ARRAY_SIZE (cdu_spi_devices)); +cdu_add_device_nand (); +at91_add_device_eth (&cdu_macb_data); +at91_add_device_mci (0 , &cdu_mmc_data); + at91_add_device_ssc(AT91SAM9260_ID_SSC, (ATMEL_SSC_TF |
ATMEL_SSC_TK|ATMEL_SSC_TD|ATMEL_SSC_RD));arch/arm/mach-at91/board-cdu.c new file +13
-0+at91_gpio_leds (cdu_leds,ARRAY_SIZE (cdu_leds)); +cdu_add_gpio (); +} + +MACHINE_START (AT91SAM9260EK ,"CDU" ) +/* Maintainer: AKsignal Brno */ +/* Jiri Prchal <[email protected]> */ + .timer = &at91sam926x_timer, + .map_io = at91_map_io, + .init_early = cdu_init_early, + .init_irq = at91_init_irq_default, + .init_machine = cdu_board_init, +MACHINE_END
Signature · 1 line
Nicolas Ferre