Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755513Ab1CHPHb (ORCPT ); Tue, 8 Mar 2011 10:07:31 -0500 Received: from mail-wy0-f174.google.com ([74.125.82.174]:57970 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755395Ab1CHPH1 (ORCPT ); Tue, 8 Mar 2011 10:07:27 -0500 From: Jamie Iles To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Jamie Iles Subject: [PATCHv6 5/5] picoxcell: support for the PC7302 development board Date: Tue, 8 Mar 2011 15:06:57 +0000 Message-Id: <1299596817-19879-6-git-send-email-jamie@jamieiles.com> X-Mailer: git-send-email 1.7.4 In-Reply-To: <1299596817-19879-1-git-send-email-jamie@jamieiles.com> References: <1299596817-19879-1-git-send-email-jamie@jamieiles.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4835 Lines: 172 The PC7302 development board is capable of taking both PC3X2 and PC3X3 devices and features NOR flash, NAND flash, SPI NOR flash a serial console, 100Mb Ethernet and a number of picoArray peripherals. This patch provides initial support for running on the PC7302 board. v4: - reduce to the bare minimum for NOR flash booting. v3: - remove redundant __init declarations. v2: - multiplex the NAND CLE pin by pad name. - convert to __raw_ io accessors. Signed-off-by: Jamie Iles --- arch/arm/mach-picoxcell/Kconfig | 11 +++ arch/arm/mach-picoxcell/Makefile | 1 + arch/arm/mach-picoxcell/board_pc7302.c | 109 ++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-picoxcell/board_pc7302.c diff --git a/arch/arm/mach-picoxcell/Kconfig b/arch/arm/mach-picoxcell/Kconfig index 7b74a45..9e08542 100644 --- a/arch/arm/mach-picoxcell/Kconfig +++ b/arch/arm/mach-picoxcell/Kconfig @@ -1,2 +1,13 @@ if ARCH_PICOXCELL + +comment "Picochip picoXcell board selection" + +config BOARD_PC7302 + bool "Support PC7302 Board" + default y + help + Include support for the picoChip PC7302 platform. This platform is + can take any of the PC3X2 or PC3X3 devices and includes SPI NOR + flash, parallel NOR flash and NAND flash. + endif diff --git a/arch/arm/mach-picoxcell/Makefile b/arch/arm/mach-picoxcell/Makefile index f6fc8de..69a9e6b 100644 --- a/arch/arm/mach-picoxcell/Makefile +++ b/arch/arm/mach-picoxcell/Makefile @@ -2,3 +2,4 @@ obj-y := picoxcell_core.o io.o axi2cfg.o \ time.o \ devices.o \ clk.o +obj-$(CONFIG_BOARD_PC7302) += board_pc7302.o diff --git a/arch/arm/mach-picoxcell/board_pc7302.c b/arch/arm/mach-picoxcell/board_pc7302.c new file mode 100644 index 0000000..6d2b5e0 --- /dev/null +++ b/arch/arm/mach-picoxcell/board_pc7302.c @@ -0,0 +1,109 @@ +/* + * linux/arch/arm/mach-picoxcell/board_pc7302.c + * + * Copyright (c) 2010 Picochip Ltd., Jamie Iles + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * All enquiries to support@picochip.com + */ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "picoxcell_core.h" + +static long pc7302_panic_blink(int state) +{ + __raw_writel(state ? 0xFF : 0, IO_ADDRESS(PICOXCELL_GPIO_BASE + + GPIO_SW_PORT_C_DR_REG_OFFSET)); + return 0; +} + +static void pc7302_panic_init(void) +{ + /* + * We have a BOOT_ERROR pin on PC7302. Reuse that for signalling when + * the kernel panics. There is only 1 bit wired up to port C but it + * won't hurt to configure all of them. + */ + __raw_writel(0xF, IO_ADDRESS(PICOXCELL_GPIO_BASE + + GPIO_SW_PORT_C_DDR_REG_OFFSET)); + __raw_writel(0x0, IO_ADDRESS(PICOXCELL_GPIO_BASE + + GPIO_SW_PORT_C_CTL_REG_OFFSET)); + + panic_blink = pc7302_panic_blink; +} + +static struct mtd_partition pc7302_nor_partitions[] = { + { + .name = "Boot", + .size = SZ_128K, + .offset = 0, + }, + { + .name = "Boot Environment", + .size = SZ_128K, + .offset = MTDPART_OFS_APPEND, + }, + { + .name = "Kernel", + .size = SZ_4M, + .offset = MTDPART_OFS_APPEND, + }, + { + .name = "Application", + .size = MTDPART_SIZ_FULL, + .offset = MTDPART_OFS_APPEND, + }, +}; + +static struct physmap_flash_data pc7302_nor_flash_data = { + .width = 1, + .parts = pc7302_nor_partitions, + .nr_parts = ARRAY_SIZE(pc7302_nor_partitions) +}; + +static struct resource pc7302_nor_resource = { + .start = PICOXCELL_FLASH_BASE, + .end = PICOXCELL_FLASH_BASE + SZ_128M - 1, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device pc7302_nor = { + .name = "physmap-flash", + .id = -1, + .dev.platform_data = &pc7302_nor_flash_data, + .resource = &pc7302_nor_resource, + .num_resources = 1, +}; + +static void pc7302_init_nor(void) +{ + platform_device_register(&pc7302_nor); +} + +static void __init pc7302_init(void) +{ + picoxcell_core_init(); + pc7302_init_nor(); + pc7302_panic_init(); +} + +MACHINE_START(PC7302, "PC7302") + .map_io = picoxcell_map_io, + .init_irq = picoxcell_init_irq, + .init_early = picoxcell_init_early, + .timer = &picoxcell_sys_timer, + .init_machine = pc7302_init, +MACHINE_END -- 1.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/