diff options
Diffstat (limited to 'arch/arm/boards/mainstone/board.c')
-rw-r--r-- | arch/arm/boards/mainstone/board.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/arch/arm/boards/mainstone/board.c b/arch/arm/boards/mainstone/board.c new file mode 100644 index 0000000000..c339bb9315 --- /dev/null +++ b/arch/arm/boards/mainstone/board.c @@ -0,0 +1,134 @@ +/* + * (C) 2015 Robert Jarzmik <robert.jarzmik@free.fr> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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. + * + */ + +#include <common.h> +#include <driver.h> +#include <environment.h> +#include <fs.h> +#include <init.h> +#include <partition.h> +#include <led.h> +#include <gpio.h> +#include <pwm.h> +#include <linux/sizes.h> + +#include <mach/devices.h> +#include <mach/mfp-pxa27x.h> +#include <mach/pxa-regs.h> +#include <mach/udc_pxa2xx.h> +#include <mach/mci_pxa2xx.h> + +#include <net/smc91111.h> +#include <asm/armlinux.h> +#include <asm/io.h> +#include <asm/mmu.h> + +#include <generated/mach-types.h> + +static struct smc91c111_pdata smsc91x_pdata = { + .word_aligned_short_writes = true, +}; + +static unsigned long mainstone_pin_config[] = { + GPIO15_nCS_1, /* CS1 - Flash */ + GPIO78_nCS_2, /* CS2 - Baseboard FGPA + SRAM */ + GPIO80_nCS_4, /* CS4 - SMC ethernet */ + + /* Ethernet: static memory VLIO */ + GPIO18_RDY, + + /* PC Card */ + GPIO48_nPOE, + GPIO49_nPWE, + GPIO50_nPIOR, + GPIO51_nPIOW, + GPIO85_nPCE_1, + GPIO54_nPCE_2, + GPIO79_PSKTSEL, + GPIO55_nPREG, + GPIO56_nPWAIT, + GPIO57_nIOIS16, + + /* MMC */ + GPIO32_MMC_CLK, + GPIO112_MMC_CMD, + GPIO92_MMC_DAT_0, + GPIO109_MMC_DAT_1, + GPIO110_MMC_DAT_2, + GPIO111_MMC_DAT_3, + + /* LCD - 16bpp DSTN */ + GPIOxx_LCD_TFT_16BPP, + + /* Backlight */ + GPIO16_PWM0_OUT, + + /* FFUART */ + GPIO34_FFUART_RXD, + GPIO35_FFUART_CTS, + GPIO36_FFUART_DCD, + GPIO37_FFUART_DSR, + GPIO38_FFUART_RI, + GPIO39_FFUART_TXD, + GPIO40_FFUART_DTR, + GPIO41_FFUART_RTS, +}; + +static int mainstone_devices_init(void) +{ + void *nor0_iospace; + + armlinux_set_architecture(MACH_TYPE_MAINSTONE); + + pxa_add_uart((void *)0x40100000, 0); + pxa_add_pwm((void *)0x40b00000, 0); + + nor0_iospace = map_io_sections(0x0, (void *)0xe0000000, SZ_64M); + add_cfi_flash_device(0, (ulong)nor0_iospace, SZ_64M, 0); + add_cfi_flash_device(1, 0x04000000, SZ_64M, 0); + devfs_add_partition("nor0", SZ_2M, SZ_256K, DEVFS_PARTITION_FIXED, + "env0"); + add_generic_device("smc91c111", DEVICE_ID_DYNAMIC, NULL, + 0x10000300, 0xff4000, IORESOURCE_MEM, + &smsc91x_pdata); + return 0; +} + +device_initcall(mainstone_devices_init); + +static int mainstone_coredevice_init(void) +{ + /* + * Put the board in superspeed (520 MHz) to speed-up logo/OS loading. + */ + CCCR = CCCR_A | 0x20290; + + barebox_set_model("Mainstone PXA27x"); + barebox_set_hostname("mainstone"); + pxa2xx_mfp_config(ARRAY_AND_SIZE(mainstone_pin_config)); + return 0; +} +coredevice_initcall(mainstone_coredevice_init); + +static int mainstone_mem_init(void) +{ + arm_add_mem_device("ram0", 0xa0000000, SZ_64M); + add_mem_device("sram0", 0x0a000000, SZ_1M, IORESOURCE_MEM_WRITEABLE); + return 0; +} +mem_initcall(mainstone_mem_init); |