Commit bc34b0850be0aa99a49b714ea8a495fbe9a8c273
1 parent
704bf317fd
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>
Showing 5 changed files with 286 additions and 0 deletions Side-by-side Diff
arch/sh/boards/Kconfig
... | ... | @@ -323,6 +323,13 @@ |
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" |
arch/sh/boards/Makefile
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 | +}; |
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 |
arch/sh/tools/mach-types