Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: Add support for AP-SH4A-3A board.

This adds preliminary support for the alpha project AP-SH4A-3A reference
platform (SH7785 based).

Additional paltform information available at:

http://www.apnet.co.jp/product/superh/ap-sh4a-3a.html

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

+286
+7
arch/sh/boards/Kconfig
··· 323 323 Compact Flash socket, two serial ports and PC-104 bus. 324 324 More information at <http://sh2000.sh-linux.org>. 325 325 326 + config SH_APSH4A3A 327 + bool "AP-SH4A-3A" 328 + select SH_ALPHA_BOARD 329 + depends on CPU_SUBTYPE_SH7785 330 + help 331 + Select AP-SH4A-3A if configuring for an ALPHAPROJECT AP-SH4A-3A. 332 + 326 333 endmenu 327 334 328 335 source "arch/sh/boards/mach-r2d/Kconfig"
+1
arch/sh/boards/Makefile
··· 13 13 obj-$(CONFIG_SH_POLARIS) += board-polaris.o 14 14 obj-$(CONFIG_SH_TITAN) += board-titan.o 15 15 obj-$(CONFIG_SH_SH7757LCR) += board-sh7757lcr.o 16 + obj-$(CONFIG_SH_APSH4A3A) += board-apsh4a3a.o
+175
arch/sh/boards/board-apsh4a3a.c
··· 1 + /* 2 + * ALPHAPROJECT AP-SH4A-3A Support. 3 + * 4 + * Copyright (C) 2010 ALPHAPROJECT Co.,Ltd. 5 + * Copyright (C) 2008 Yoshihiro Shimoda 6 + * Copyright (C) 2009 Paul Mundt 7 + * 8 + * This file is subject to the terms and conditions of the GNU General Public 9 + * License. See the file "COPYING" in the main directory of this archive 10 + * for more details. 11 + */ 12 + #include <linux/init.h> 13 + #include <linux/platform_device.h> 14 + #include <linux/io.h> 15 + #include <linux/mtd/physmap.h> 16 + #include <linux/smsc911x.h> 17 + #include <linux/irq.h> 18 + #include <linux/clk.h> 19 + #include <asm/machvec.h> 20 + #include <asm/sizes.h> 21 + #include <asm/clock.h> 22 + 23 + static struct mtd_partition nor_flash_partitions[] = { 24 + { 25 + .name = "loader", 26 + .offset = 0x00000000, 27 + .size = 512 * 1024, 28 + }, 29 + { 30 + .name = "bootenv", 31 + .offset = MTDPART_OFS_APPEND, 32 + .size = 512 * 1024, 33 + }, 34 + { 35 + .name = "kernel", 36 + .offset = MTDPART_OFS_APPEND, 37 + .size = 4 * 1024 * 1024, 38 + }, 39 + { 40 + .name = "data", 41 + .offset = MTDPART_OFS_APPEND, 42 + .size = MTDPART_SIZ_FULL, 43 + }, 44 + }; 45 + 46 + static struct physmap_flash_data nor_flash_data = { 47 + .width = 4, 48 + .parts = nor_flash_partitions, 49 + .nr_parts = ARRAY_SIZE(nor_flash_partitions), 50 + }; 51 + 52 + static struct resource nor_flash_resources[] = { 53 + [0] = { 54 + .start = 0x00000000, 55 + .end = 0x01000000 - 1, 56 + .flags = IORESOURCE_MEM, 57 + } 58 + }; 59 + 60 + static struct platform_device nor_flash_device = { 61 + .name = "physmap-flash", 62 + .dev = { 63 + .platform_data = &nor_flash_data, 64 + }, 65 + .num_resources = ARRAY_SIZE(nor_flash_resources), 66 + .resource = nor_flash_resources, 67 + }; 68 + 69 + static struct resource smsc911x_resources[] = { 70 + [0] = { 71 + .name = "smsc911x-memory", 72 + .start = 0xA4000000, 73 + .end = 0xA4000000 + SZ_256 - 1, 74 + .flags = IORESOURCE_MEM, 75 + }, 76 + [1] = { 77 + .name = "smsc911x-irq", 78 + .start = evt2irq(0x200), 79 + .end = evt2irq(0x200), 80 + .flags = IORESOURCE_IRQ, 81 + }, 82 + }; 83 + 84 + static struct smsc911x_platform_config smsc911x_config = { 85 + .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, 86 + .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, 87 + .flags = SMSC911X_USE_16BIT, 88 + .phy_interface = PHY_INTERFACE_MODE_MII, 89 + }; 90 + 91 + static struct platform_device smsc911x_device = { 92 + .name = "smsc911x", 93 + .id = -1, 94 + .num_resources = ARRAY_SIZE(smsc911x_resources), 95 + .resource = smsc911x_resources, 96 + .dev = { 97 + .platform_data = &smsc911x_config, 98 + }, 99 + }; 100 + 101 + static struct platform_device *apsh4a3a_devices[] __initdata = { 102 + &nor_flash_device, 103 + &smsc911x_device, 104 + }; 105 + 106 + static int __init apsh4a3a_devices_setup(void) 107 + { 108 + return platform_add_devices(apsh4a3a_devices, 109 + ARRAY_SIZE(apsh4a3a_devices)); 110 + } 111 + device_initcall(apsh4a3a_devices_setup); 112 + 113 + static int apsh4a3a_clk_init(void) 114 + { 115 + struct clk *clk; 116 + int ret; 117 + 118 + clk = clk_get(NULL, "extal"); 119 + if (!clk || IS_ERR(clk)) 120 + return PTR_ERR(clk); 121 + ret = clk_set_rate(clk, 33333000); 122 + clk_put(clk); 123 + 124 + return ret; 125 + } 126 + 127 + /* Initialize the board */ 128 + static void __init apsh4a3a_setup(char **cmdline_p) 129 + { 130 + printk(KERN_INFO "Alpha Project AP-SH4A-3A support:\n"); 131 + } 132 + 133 + static void __init apsh4a3a_init_irq(void) 134 + { 135 + plat_irq_setup_pins(IRQ_MODE_IRQ7654); 136 + } 137 + 138 + /* Return the board specific boot mode pin configuration */ 139 + static int apsh4a3a_mode_pins(void) 140 + { 141 + int value = 0; 142 + 143 + /* These are the factory default settings of SW1 and SW2. 144 + * If you change these dip switches then you will need to 145 + * adjust the values below as well. 146 + */ 147 + value &= ~MODE_PIN0; /* Clock Mode 16 */ 148 + value &= ~MODE_PIN1; 149 + value &= ~MODE_PIN2; 150 + value &= ~MODE_PIN3; 151 + value |= MODE_PIN4; 152 + value &= ~MODE_PIN5; /* 16-bit Area0 bus width */ 153 + value |= MODE_PIN6; /* Area 0 SRAM interface */ 154 + value |= MODE_PIN7; 155 + value |= MODE_PIN8; /* Little Endian */ 156 + value |= MODE_PIN9; /* Master Mode */ 157 + value |= MODE_PIN10; /* Crystal resonator */ 158 + value |= MODE_PIN11; /* Display Unit */ 159 + value |= MODE_PIN12; 160 + value &= ~MODE_PIN13; /* 29-bit address mode */ 161 + value |= MODE_PIN14; /* No PLL step-up */ 162 + 163 + return value; 164 + } 165 + 166 + /* 167 + * The Machine Vector 168 + */ 169 + static struct sh_machine_vector mv_apsh4a3a __initmv = { 170 + .mv_name = "AP-SH4A-3A", 171 + .mv_setup = apsh4a3a_setup, 172 + .mv_clk_init = apsh4a3a_clk_init, 173 + .mv_init_irq = apsh4a3a_init_irq, 174 + .mv_mode_pins = apsh4a3a_mode_pins, 175 + };
+102
arch/sh/configs/apsh4a3a_defconfig
··· 1 + CONFIG_EXPERIMENTAL=y 2 + CONFIG_SYSVIPC=y 3 + CONFIG_BSD_PROCESS_ACCT=y 4 + CONFIG_IKCONFIG=y 5 + CONFIG_IKCONFIG_PROC=y 6 + CONFIG_LOG_BUF_SHIFT=14 7 + CONFIG_SYSFS_DEPRECATED=y 8 + CONFIG_SYSFS_DEPRECATED_V2=y 9 + CONFIG_BLK_DEV_INITRD=y 10 + CONFIG_SLAB=y 11 + CONFIG_PROFILING=y 12 + CONFIG_MODULES=y 13 + CONFIG_MODULE_UNLOAD=y 14 + # CONFIG_BLK_DEV_BSG is not set 15 + CONFIG_CPU_SUBTYPE_SH7785=y 16 + CONFIG_MEMORY_START=0x0C000000 17 + CONFIG_FLATMEM_MANUAL=y 18 + CONFIG_SH_STORE_QUEUES=y 19 + CONFIG_SH_APSH4A3A=y 20 + CONFIG_HIGH_RES_TIMERS=y 21 + CONFIG_KEXEC=y 22 + CONFIG_PREEMPT=y 23 + # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 24 + CONFIG_NET=y 25 + CONFIG_PACKET=y 26 + CONFIG_UNIX=y 27 + CONFIG_INET=y 28 + CONFIG_IP_ADVANCED_ROUTER=y 29 + CONFIG_IP_PNP=y 30 + CONFIG_IP_PNP_DHCP=y 31 + # CONFIG_INET_LRO is not set 32 + # CONFIG_IPV6 is not set 33 + # CONFIG_WIRELESS is not set 34 + CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 35 + # CONFIG_FW_LOADER is not set 36 + CONFIG_MTD=y 37 + CONFIG_MTD_CONCAT=y 38 + CONFIG_MTD_PARTITIONS=y 39 + CONFIG_MTD_CHAR=y 40 + CONFIG_MTD_BLOCK=y 41 + CONFIG_MTD_CFI=y 42 + CONFIG_MTD_CFI_AMDSTD=y 43 + CONFIG_MTD_PHYSMAP=y 44 + CONFIG_BLK_DEV_RAM=y 45 + CONFIG_BLK_DEV_RAM_SIZE=16384 46 + CONFIG_NETDEVICES=y 47 + CONFIG_NET_ETHERNET=y 48 + CONFIG_SMSC911X=y 49 + # CONFIG_NETDEV_1000 is not set 50 + # CONFIG_NETDEV_10000 is not set 51 + # CONFIG_WLAN is not set 52 + # CONFIG_INPUT_MOUSEDEV is not set 53 + # CONFIG_INPUT_KEYBOARD is not set 54 + # CONFIG_INPUT_MOUSE is not set 55 + # CONFIG_SERIO is not set 56 + CONFIG_VT_HW_CONSOLE_BINDING=y 57 + CONFIG_SERIAL_SH_SCI=y 58 + CONFIG_SERIAL_SH_SCI_NR_UARTS=6 59 + CONFIG_SERIAL_SH_SCI_CONSOLE=y 60 + CONFIG_HW_RANDOM=y 61 + # CONFIG_HWMON is not set 62 + CONFIG_FB=y 63 + CONFIG_FB_SH7785FB=y 64 + CONFIG_FRAMEBUFFER_CONSOLE=y 65 + CONFIG_FONTS=y 66 + CONFIG_FONT_8x8=y 67 + CONFIG_FONT_8x16=y 68 + CONFIG_LOGO=y 69 + # CONFIG_HID_SUPPORT is not set 70 + # CONFIG_USB_SUPPORT is not set 71 + CONFIG_EXT2_FS=y 72 + CONFIG_EXT3_FS=y 73 + # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 74 + CONFIG_MSDOS_FS=y 75 + CONFIG_VFAT_FS=y 76 + CONFIG_NTFS_FS=y 77 + CONFIG_NTFS_RW=y 78 + CONFIG_PROC_KCORE=y 79 + CONFIG_TMPFS=y 80 + CONFIG_JFFS2_FS=y 81 + CONFIG_CRAMFS=y 82 + CONFIG_NFS_FS=y 83 + CONFIG_NFS_V3=y 84 + CONFIG_NFS_V4=y 85 + CONFIG_CIFS=y 86 + CONFIG_NLS_DEFAULT="utf8" 87 + CONFIG_NLS_CODEPAGE_437=y 88 + CONFIG_NLS_CODEPAGE_932=y 89 + CONFIG_NLS_ASCII=y 90 + CONFIG_NLS_ISO8859_1=y 91 + CONFIG_NLS_UTF8=y 92 + # CONFIG_ENABLE_WARN_DEPRECATED is not set 93 + # CONFIG_ENABLE_MUST_CHECK is not set 94 + CONFIG_DEBUG_FS=y 95 + CONFIG_DEBUG_KERNEL=y 96 + # CONFIG_DEBUG_PREEMPT is not set 97 + # CONFIG_DEBUG_BUGVERBOSE is not set 98 + CONFIG_DEBUG_INFO=y 99 + # CONFIG_RCU_CPU_STALL_DETECTOR is not set 100 + # CONFIG_FTRACE is not set 101 + # CONFIG_CRYPTO_ANSI_CPRNG is not set 102 + # CONFIG_CRYPTO_HW is not set
+1
arch/sh/tools/mach-types
··· 62 62 POLARIS SH_POLARIS 63 63 KFR2R09 SH_KFR2R09 64 64 ECOVEC SH_ECOVEC 65 + APSH4A3A SH_APSH4A3A