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

sh: Add support for AP-SH4AD-0A board.

This adds preliminary support for the alpha project AP-SH4AD-0A reference
platform (SH7786 based).

Additional platform information available at:

http://www.apnet.co.jp/product/superh/ap-sh4ad-0a.html

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

+268
+8
arch/sh/boards/Kconfig
··· 330 330 help 331 331 Select AP-SH4A-3A if configuring for an ALPHAPROJECT AP-SH4A-3A. 332 332 333 + config SH_APSH4AD0A 334 + bool "AP-SH4AD-0A" 335 + select SH_ALPHA_BOARD 336 + select SYS_SUPPORTS_PCI 337 + depends on CPU_SUBTYPE_SH7786 338 + help 339 + Select AP-SH4AD-0A if configuring for an ALPHAPROJECT AP-SH4AD-0A. 340 + 333 341 endmenu 334 342 335 343 source "arch/sh/boards/mach-r2d/Kconfig"
+1
arch/sh/boards/Makefile
··· 14 14 obj-$(CONFIG_SH_TITAN) += board-titan.o 15 15 obj-$(CONFIG_SH_SH7757LCR) += board-sh7757lcr.o 16 16 obj-$(CONFIG_SH_APSH4A3A) += board-apsh4a3a.o 17 + obj-$(CONFIG_SH_APSH4AD0A) += board-apsh4ad0a.o
+125
arch/sh/boards/board-apsh4ad0a.c
··· 1 + /* 2 + * ALPHAPROJECT AP-SH4AD-0A Support. 3 + * 4 + * Copyright (C) 2010 ALPHAPROJECT Co.,Ltd. 5 + * Copyright (C) 2010 Matt Fleming 6 + * Copyright (C) 2010 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/smsc911x.h> 16 + #include <linux/irq.h> 17 + #include <linux/clk.h> 18 + #include <asm/machvec.h> 19 + #include <asm/sizes.h> 20 + 21 + static struct resource smsc911x_resources[] = { 22 + [0] = { 23 + .name = "smsc911x-memory", 24 + .start = 0xA4000000, 25 + .end = 0xA4000000 + SZ_256 - 1, 26 + .flags = IORESOURCE_MEM, 27 + }, 28 + [1] = { 29 + .name = "smsc911x-irq", 30 + .start = evt2irq(0x200), 31 + .end = evt2irq(0x200), 32 + .flags = IORESOURCE_IRQ, 33 + }, 34 + }; 35 + 36 + static struct smsc911x_platform_config smsc911x_config = { 37 + .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, 38 + .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, 39 + .flags = SMSC911X_USE_16BIT, 40 + .phy_interface = PHY_INTERFACE_MODE_MII, 41 + }; 42 + 43 + static struct platform_device smsc911x_device = { 44 + .name = "smsc911x", 45 + .id = -1, 46 + .num_resources = ARRAY_SIZE(smsc911x_resources), 47 + .resource = smsc911x_resources, 48 + .dev = { 49 + .platform_data = &smsc911x_config, 50 + }, 51 + }; 52 + 53 + static struct platform_device *apsh4ad0a_devices[] __initdata = { 54 + &smsc911x_device, 55 + }; 56 + 57 + static int __init apsh4ad0a_devices_setup(void) 58 + { 59 + return platform_add_devices(apsh4ad0a_devices, 60 + ARRAY_SIZE(apsh4ad0a_devices)); 61 + } 62 + device_initcall(apsh4ad0a_devices_setup); 63 + 64 + static int apsh4ad0a_mode_pins(void) 65 + { 66 + int value = 0; 67 + 68 + /* These are the factory default settings of SW1 and SW2. 69 + * If you change these dip switches then you will need to 70 + * adjust the values below as well. 71 + */ 72 + value |= MODE_PIN0; /* Clock Mode 3 */ 73 + value |= MODE_PIN1; 74 + value &= ~MODE_PIN2; 75 + value &= ~MODE_PIN3; 76 + value &= ~MODE_PIN4; /* 16-bit Area0 bus width */ 77 + value |= MODE_PIN5; 78 + value |= MODE_PIN6; 79 + value |= MODE_PIN7; /* Normal mode */ 80 + value |= MODE_PIN8; /* Little Endian */ 81 + value |= MODE_PIN9; /* Crystal resonator */ 82 + value &= ~MODE_PIN10; /* 29-bit address mode */ 83 + value &= ~MODE_PIN11; /* PCI-E Root port */ 84 + value &= ~MODE_PIN12; /* 4 lane + 1 lane */ 85 + value |= MODE_PIN13; /* AUD Enable */ 86 + value &= ~MODE_PIN14; /* Normal Operation */ 87 + 88 + return value; 89 + } 90 + 91 + static int apsh4ad0a_clk_init(void) 92 + { 93 + struct clk *clk; 94 + int ret; 95 + 96 + clk = clk_get(NULL, "extal"); 97 + if (!clk || IS_ERR(clk)) 98 + return PTR_ERR(clk); 99 + ret = clk_set_rate(clk, 33333000); 100 + clk_put(clk); 101 + 102 + return ret; 103 + } 104 + 105 + /* Initialize the board */ 106 + static void __init apsh4ad0a_setup(char **cmdline_p) 107 + { 108 + pr_info("Alpha Project AP-SH4AD-0A support:\n"); 109 + } 110 + 111 + static void __init apsh4ad0a_init_irq(void) 112 + { 113 + plat_irq_setup_pins(IRQ_MODE_IRQ3210); 114 + } 115 + 116 + /* 117 + * The Machine Vector 118 + */ 119 + static struct sh_machine_vector mv_apsh4ad0a __initmv = { 120 + .mv_name = "AP-SH4AD-0A", 121 + .mv_setup = apsh4ad0a_setup, 122 + .mv_mode_pins = apsh4ad0a_mode_pins, 123 + .mv_clk_init = apsh4ad0a_clk_init, 124 + .mv_init_irq = apsh4ad0a_init_irq, 125 + };
+133
arch/sh/configs/apsh4ad0a_defconfig
··· 1 + CONFIG_EXPERIMENTAL=y 2 + CONFIG_SYSVIPC=y 3 + CONFIG_POSIX_MQUEUE=y 4 + CONFIG_BSD_PROCESS_ACCT=y 5 + CONFIG_RCU_TRACE=y 6 + CONFIG_IKCONFIG=y 7 + CONFIG_IKCONFIG_PROC=y 8 + CONFIG_LOG_BUF_SHIFT=14 9 + CONFIG_CGROUPS=y 10 + CONFIG_CGROUP_NS=y 11 + CONFIG_CGROUP_FREEZER=y 12 + CONFIG_CGROUP_DEVICE=y 13 + CONFIG_CGROUP_CPUACCT=y 14 + CONFIG_RESOURCE_COUNTERS=y 15 + CONFIG_CGROUP_MEM_RES_CTLR=y 16 + CONFIG_BLK_CGROUP=y 17 + CONFIG_NAMESPACES=y 18 + CONFIG_BLK_DEV_INITRD=y 19 + CONFIG_KALLSYMS_ALL=y 20 + # CONFIG_COMPAT_BRK is not set 21 + CONFIG_SLAB=y 22 + CONFIG_PROFILING=y 23 + CONFIG_MODULES=y 24 + CONFIG_MODULE_UNLOAD=y 25 + # CONFIG_LBDAF is not set 26 + # CONFIG_BLK_DEV_BSG is not set 27 + CONFIG_CFQ_GROUP_IOSCHED=y 28 + CONFIG_CPU_SUBTYPE_SH7786=y 29 + CONFIG_MEMORY_SIZE=0x10000000 30 + CONFIG_HUGETLB_PAGE_SIZE_1MB=y 31 + CONFIG_MEMORY_HOTPLUG=y 32 + CONFIG_MEMORY_HOTREMOVE=y 33 + CONFIG_KSM=y 34 + CONFIG_SH_STORE_QUEUES=y 35 + CONFIG_SH_APSH4AD0A=y 36 + CONFIG_NO_HZ=y 37 + CONFIG_HIGH_RES_TIMERS=y 38 + CONFIG_CPU_FREQ=y 39 + CONFIG_CPU_FREQ_GOV_POWERSAVE=m 40 + CONFIG_CPU_FREQ_GOV_USERSPACE=m 41 + CONFIG_CPU_FREQ_GOV_ONDEMAND=m 42 + CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m 43 + CONFIG_SH_CPU_FREQ=y 44 + CONFIG_KEXEC=y 45 + CONFIG_SECCOMP=y 46 + CONFIG_PREEMPT=y 47 + # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 48 + CONFIG_BINFMT_MISC=y 49 + CONFIG_PM=y 50 + CONFIG_PM_DEBUG=y 51 + CONFIG_PM_VERBOSE=y 52 + CONFIG_PM_RUNTIME=y 53 + CONFIG_CPU_IDLE=y 54 + CONFIG_NET=y 55 + CONFIG_PACKET=y 56 + CONFIG_UNIX=y 57 + CONFIG_NET_KEY=y 58 + CONFIG_INET=y 59 + # CONFIG_INET_LRO is not set 60 + # CONFIG_IPV6 is not set 61 + # CONFIG_WIRELESS is not set 62 + CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 63 + # CONFIG_FW_LOADER is not set 64 + CONFIG_MTD=y 65 + CONFIG_MTD_CFI=y 66 + CONFIG_BLK_DEV_RAM=y 67 + CONFIG_BLK_DEV_RAM_SIZE=16384 68 + CONFIG_SCSI=y 69 + CONFIG_BLK_DEV_SD=y 70 + CONFIG_SCSI_MULTI_LUN=y 71 + # CONFIG_SCSI_LOWLEVEL is not set 72 + CONFIG_NETDEVICES=y 73 + CONFIG_MDIO_BITBANG=y 74 + CONFIG_NET_ETHERNET=y 75 + CONFIG_SMSC911X=y 76 + # CONFIG_NETDEV_1000 is not set 77 + # CONFIG_NETDEV_10000 is not set 78 + # CONFIG_WLAN is not set 79 + CONFIG_INPUT_EVDEV=y 80 + # CONFIG_INPUT_KEYBOARD is not set 81 + # CONFIG_INPUT_MOUSE is not set 82 + # CONFIG_SERIO is not set 83 + CONFIG_SERIAL_SH_SCI=y 84 + CONFIG_SERIAL_SH_SCI_NR_UARTS=6 85 + CONFIG_SERIAL_SH_SCI_CONSOLE=y 86 + # CONFIG_LEGACY_PTYS is not set 87 + # CONFIG_HW_RANDOM is not set 88 + # CONFIG_HWMON is not set 89 + CONFIG_VIDEO_OUTPUT_CONTROL=y 90 + CONFIG_FB=y 91 + CONFIG_FB_SH7785FB=y 92 + CONFIG_FRAMEBUFFER_CONSOLE=y 93 + CONFIG_FONTS=y 94 + CONFIG_FONT_8x8=y 95 + CONFIG_FONT_8x16=y 96 + CONFIG_LOGO=y 97 + CONFIG_USB=y 98 + CONFIG_USB_DEBUG=y 99 + CONFIG_USB_MON=y 100 + CONFIG_USB_OHCI_HCD=y 101 + CONFIG_USB_STORAGE=y 102 + CONFIG_EXT2_FS=y 103 + CONFIG_EXT3_FS=y 104 + # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 105 + CONFIG_MSDOS_FS=y 106 + CONFIG_VFAT_FS=y 107 + CONFIG_NTFS_FS=y 108 + CONFIG_NTFS_RW=y 109 + CONFIG_PROC_KCORE=y 110 + CONFIG_TMPFS=y 111 + CONFIG_HUGETLBFS=y 112 + CONFIG_JFFS2_FS=y 113 + CONFIG_CRAMFS=y 114 + CONFIG_NFS_FS=y 115 + CONFIG_NFS_V3=y 116 + CONFIG_NFS_V4=y 117 + CONFIG_CIFS=y 118 + CONFIG_NLS_DEFAULT="utf8" 119 + CONFIG_NLS_CODEPAGE_437=y 120 + CONFIG_NLS_CODEPAGE_932=y 121 + CONFIG_NLS_ASCII=y 122 + CONFIG_NLS_ISO8859_1=y 123 + CONFIG_NLS_UTF8=y 124 + # CONFIG_ENABLE_MUST_CHECK is not set 125 + CONFIG_MAGIC_SYSRQ=y 126 + CONFIG_DEBUG_KERNEL=y 127 + CONFIG_DEBUG_SHIRQ=y 128 + CONFIG_DETECT_HUNG_TASK=y 129 + CONFIG_DEBUG_INFO=y 130 + CONFIG_DEBUG_VM=y 131 + # CONFIG_RCU_CPU_STALL_DETECTOR is not set 132 + CONFIG_DWARF_UNWINDER=y 133 + # CONFIG_CRYPTO_ANSI_CPRNG is not set
+1
arch/sh/tools/mach-types
··· 63 63 KFR2R09 SH_KFR2R09 64 64 ECOVEC SH_ECOVEC 65 65 APSH4A3A SH_APSH4A3A 66 + APSH4AD0A SH_APSH4AD0A