diff options
| author | Alexey Charkov <alchark@gmail.com> | 2010-12-23 07:11:21 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-01-25 10:07:01 -0500 |
| commit | 21f47fbc5b18da4a3db680959aee887612ec9a72 (patch) | |
| tree | 46dd2d4010c5c258f30e2dfeb1ea6d9d2404a845 | |
| parent | 1bae4ce27c9c90344f23c65ea6966c50ffeae2f5 (diff) | |
ARM: 6597/1: Add basic architecture support for VIA/WonderMedia 85xx SoC's
This adds support for the family of Systems-on-Chip produced initially
by VIA and now its subsidiary WonderMedia that have recently become
widespread in lower-end Chinese ARM-based tablets and netbooks.
Support is included for both VT8500 and WM8505, selectable by a
configuration switch at kernel build time.
Included are basic machine initialization files, register and
interrupt definitions, support for the on-chip interrupt controller,
high-precision OS timer, GPIO lines, necessary macros for early debug,
pulse-width-modulated outputs control, as well as platform device
configurations for the specific drivers implemented elsewhere.
Signed-off-by: Alexey Charkov <alchark@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
34 files changed, 2356 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5cff165b7eb0..cab466fc5ae6 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -875,6 +875,16 @@ config PLAT_SPEAR | |||
| 875 | help | 875 | help |
| 876 | Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx). | 876 | Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx). |
| 877 | 877 | ||
| 878 | config ARCH_VT8500 | ||
| 879 | bool "VIA/WonderMedia 85xx" | ||
| 880 | select CPU_ARM926T | ||
| 881 | select GENERIC_GPIO | ||
| 882 | select ARCH_HAS_CPUFREQ | ||
| 883 | select GENERIC_CLOCKEVENTS | ||
| 884 | select ARCH_REQUIRE_GPIOLIB | ||
| 885 | select HAVE_PWM | ||
| 886 | help | ||
| 887 | Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip. | ||
| 878 | endchoice | 888 | endchoice |
| 879 | 889 | ||
| 880 | # | 890 | # |
| @@ -1007,6 +1017,8 @@ source "arch/arm/mach-versatile/Kconfig" | |||
| 1007 | 1017 | ||
| 1008 | source "arch/arm/mach-vexpress/Kconfig" | 1018 | source "arch/arm/mach-vexpress/Kconfig" |
| 1009 | 1019 | ||
| 1020 | source "arch/arm/mach-vt8500/Kconfig" | ||
| 1021 | |||
| 1010 | source "arch/arm/mach-w90x900/Kconfig" | 1022 | source "arch/arm/mach-w90x900/Kconfig" |
| 1011 | 1023 | ||
| 1012 | # Definitions to make life easier | 1024 | # Definitions to make life easier |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c22c1adfedd6..bd3b13e37178 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
| @@ -190,6 +190,7 @@ machine-$(CONFIG_ARCH_U300) := u300 | |||
| 190 | machine-$(CONFIG_ARCH_U8500) := ux500 | 190 | machine-$(CONFIG_ARCH_U8500) := ux500 |
| 191 | machine-$(CONFIG_ARCH_VERSATILE) := versatile | 191 | machine-$(CONFIG_ARCH_VERSATILE) := versatile |
| 192 | machine-$(CONFIG_ARCH_VEXPRESS) := vexpress | 192 | machine-$(CONFIG_ARCH_VEXPRESS) := vexpress |
| 193 | machine-$(CONFIG_ARCH_VT8500) := vt8500 | ||
| 193 | machine-$(CONFIG_ARCH_W90X900) := w90x900 | 194 | machine-$(CONFIG_ARCH_W90X900) := w90x900 |
| 194 | machine-$(CONFIG_ARCH_NUC93X) := nuc93x | 195 | machine-$(CONFIG_ARCH_NUC93X) := nuc93x |
| 195 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 196 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 0a8f748e506a..78fe31a4f503 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile | |||
| @@ -29,6 +29,10 @@ ifeq ($(CONFIG_ARCH_SA1100),y) | |||
| 29 | OBJS += head-sa1100.o | 29 | OBJS += head-sa1100.o |
| 30 | endif | 30 | endif |
| 31 | 31 | ||
| 32 | ifeq ($(CONFIG_ARCH_VT8500),y) | ||
| 33 | OBJS += head-vt8500.o | ||
| 34 | endif | ||
| 35 | |||
| 32 | ifeq ($(CONFIG_CPU_XSCALE),y) | 36 | ifeq ($(CONFIG_CPU_XSCALE),y) |
| 33 | OBJS += head-xscale.o | 37 | OBJS += head-xscale.o |
| 34 | endif | 38 | endif |
diff --git a/arch/arm/boot/compressed/head-vt8500.S b/arch/arm/boot/compressed/head-vt8500.S new file mode 100644 index 000000000000..1dc1e21a3be3 --- /dev/null +++ b/arch/arm/boot/compressed/head-vt8500.S | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/boot/compressed/head-vt8500.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com> | ||
| 5 | * | ||
| 6 | * VIA VT8500 specific tweaks. This is merged into head.S by the linker. | ||
| 7 | * | ||
| 8 | */ | ||
| 9 | |||
| 10 | #include <linux/linkage.h> | ||
| 11 | #include <asm/mach-types.h> | ||
| 12 | |||
| 13 | .section ".start", "ax" | ||
| 14 | |||
| 15 | __VT8500_start: | ||
| 16 | @ Compare the SCC ID register against a list of known values | ||
| 17 | ldr r1, .SCCID | ||
| 18 | ldr r3, [r1] | ||
| 19 | |||
| 20 | @ VT8500 override | ||
| 21 | ldr r4, .VT8500SCC | ||
| 22 | cmp r3, r4 | ||
| 23 | ldreq r7, .ID_BV07 | ||
| 24 | beq .Lendvt8500 | ||
| 25 | |||
| 26 | @ WM8505 override | ||
| 27 | ldr r4, .WM8505SCC | ||
| 28 | cmp r3, r4 | ||
| 29 | ldreq r7, .ID_8505 | ||
| 30 | beq .Lendvt8500 | ||
| 31 | |||
| 32 | @ Otherwise, leave the bootloader's machine id untouched | ||
| 33 | |||
| 34 | .SCCID: | ||
| 35 | .word 0xd8120000 | ||
| 36 | .VT8500SCC: | ||
| 37 | .word 0x34000102 | ||
| 38 | .WM8505SCC: | ||
| 39 | .word 0x34260103 | ||
| 40 | |||
| 41 | .ID_BV07: | ||
| 42 | .word MACH_TYPE_BV07 | ||
| 43 | .ID_8505: | ||
| 44 | .word MACH_TYPE_WM8505_7IN_NETBOOK | ||
| 45 | |||
| 46 | .Lendvt8500: | ||
diff --git a/arch/arm/mach-vt8500/Kconfig b/arch/arm/mach-vt8500/Kconfig new file mode 100644 index 000000000000..2c20a341c11a --- /dev/null +++ b/arch/arm/mach-vt8500/Kconfig | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | if ARCH_VT8500 | ||
| 2 | |||
| 3 | config VTWM_VERSION_VT8500 | ||
| 4 | bool | ||
| 5 | |||
| 6 | config VTWM_VERSION_WM8505 | ||
| 7 | bool | ||
| 8 | |||
| 9 | config MACH_BV07 | ||
| 10 | bool "Benign BV07-8500 Mini Netbook" | ||
| 11 | depends on ARCH_VT8500 | ||
| 12 | select VTWM_VERSION_VT8500 | ||
| 13 | help | ||
| 14 | Add support for the inexpensive 7-inch netbooks sold by many | ||
| 15 | Chinese distributors under various names. Note that there are | ||
| 16 | many hardware implementations in identical exterior, make sure | ||
| 17 | that yours is indeed based on a VIA VT8500 chip. | ||
| 18 | |||
| 19 | config MACH_WM8505_7IN_NETBOOK | ||
| 20 | bool "WM8505 7-inch generic netbook" | ||
| 21 | depends on ARCH_VT8500 | ||
| 22 | select VTWM_VERSION_WM8505 | ||
| 23 | help | ||
| 24 | Add support for the inexpensive 7-inch netbooks sold by many | ||
| 25 | Chinese distributors under various names. Note that there are | ||
| 26 | many hardware implementations in identical exterior, make sure | ||
| 27 | that yours is indeed based on a WonderMedia WM8505 chip. | ||
| 28 | |||
| 29 | comment "LCD panel size" | ||
| 30 | |||
| 31 | config WMT_PANEL_800X480 | ||
| 32 | bool "7-inch with 800x480 resolution" | ||
