Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21f47fbc authored by Alexey Charkov's avatar Alexey Charkov Committed by Russell King
Browse files

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: default avatarAlexey Charkov <alchark@gmail.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 1bae4ce2
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -875,6 +875,16 @@ config PLAT_SPEAR
	help
	  Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).

config ARCH_VT8500
	bool "VIA/WonderMedia 85xx"
	select CPU_ARM926T
	select GENERIC_GPIO
	select ARCH_HAS_CPUFREQ
	select GENERIC_CLOCKEVENTS
	select ARCH_REQUIRE_GPIOLIB
	select HAVE_PWM
	help
	  Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
endchoice

#
@@ -1007,6 +1017,8 @@ source "arch/arm/mach-versatile/Kconfig"

source "arch/arm/mach-vexpress/Kconfig"

source "arch/arm/mach-vt8500/Kconfig"

source "arch/arm/mach-w90x900/Kconfig"

# Definitions to make life easier
+1 −0
Original line number Diff line number Diff line
@@ -190,6 +190,7 @@ machine-$(CONFIG_ARCH_U300) := u300
machine-$(CONFIG_ARCH_U8500)		:= ux500
machine-$(CONFIG_ARCH_VERSATILE)	:= versatile
machine-$(CONFIG_ARCH_VEXPRESS)		:= vexpress
machine-$(CONFIG_ARCH_VT8500)		:= vt8500
machine-$(CONFIG_ARCH_W90X900)		:= w90x900
machine-$(CONFIG_ARCH_NUC93X)		:= nuc93x
machine-$(CONFIG_FOOTBRIDGE)		:= footbridge
+4 −0
Original line number Diff line number Diff line
@@ -29,6 +29,10 @@ ifeq ($(CONFIG_ARCH_SA1100),y)
OBJS		+= head-sa1100.o
endif

ifeq ($(CONFIG_ARCH_VT8500),y)
OBJS		+= head-vt8500.o
endif

ifeq ($(CONFIG_CPU_XSCALE),y)
OBJS		+= head-xscale.o
endif
+46 −0
Original line number Diff line number Diff line
/*
 * linux/arch/arm/boot/compressed/head-vt8500.S
 *
 * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com>
 *
 * VIA VT8500 specific tweaks. This is merged into head.S by the linker.
 *
 */

#include <linux/linkage.h>
#include <asm/mach-types.h>

		.section        ".start", "ax"

__VT8500_start:
	@ Compare the SCC ID register against a list of known values
	ldr	r1, .SCCID
	ldr	r3, [r1]

	@ VT8500 override
	ldr	r4, .VT8500SCC
	cmp	r3, r4
	ldreq	r7, .ID_BV07
	beq	.Lendvt8500

	@ WM8505 override
	ldr	r4, .WM8505SCC
	cmp	r3, r4
	ldreq	r7, .ID_8505
	beq	.Lendvt8500

	@ Otherwise, leave the bootloader's machine id untouched

.SCCID:
	.word	0xd8120000
.VT8500SCC:
	.word	0x34000102
.WM8505SCC:
	.word	0x34260103

.ID_BV07:
	.word	MACH_TYPE_BV07
.ID_8505:
	.word	MACH_TYPE_WM8505_7IN_NETBOOK

.Lendvt8500:
+73 −0
Original line number Diff line number Diff line
if ARCH_VT8500

config VTWM_VERSION_VT8500
	bool

config VTWM_VERSION_WM8505
	bool

config MACH_BV07
	bool "Benign BV07-8500 Mini Netbook"
	depends on ARCH_VT8500
	select VTWM_VERSION_VT8500
	help
	  Add support for the inexpensive 7-inch netbooks sold by many
	  Chinese distributors under various names. Note that there are
	  many hardware implementations in identical exterior, make sure
	  that yours is indeed based on a VIA VT8500 chip.

config MACH_WM8505_7IN_NETBOOK
	bool "WM8505 7-inch generic netbook"
	depends on ARCH_VT8500
	select VTWM_VERSION_WM8505
	help
	  Add support for the inexpensive 7-inch netbooks sold by many
	  Chinese distributors under various names. Note that there are
	  many hardware implementations in identical exterior, make sure
	  that yours is indeed based on a WonderMedia WM8505 chip.

comment "LCD panel size"

config WMT_PANEL_800X480
	bool "7-inch with 800x480 resolution"
	depends on (FB_VT8500 || FB_WM8505)
	default y
	help
	  These are found in most of the netbooks in generic cases, as
	  well as in Eken M001 tablets and possibly elsewhere.

	  To select this panel at runtime, say y here and append
	  'panel=800x480' to your kernel command line. Otherwise, the
	  largest one available will be used.

config WMT_PANEL_800X600
	bool "8-inch with 800x600 resolution"
	depends on (FB_VT8500 || FB_WM8505)
	help
	  These are found in Eken M003 tablets and possibly elsewhere.

	  To select this panel at runtime, say y here and append
	  'panel=800x600' to your kernel command line. Otherwise, the
	  largest one available will be used.

config WMT_PANEL_1024X576
	bool "10-inch with 1024x576 resolution"
	depends on (FB_VT8500 || FB_WM8505)
	help
	  These are found in CherryPal netbooks and possibly elsewhere.

	  To select this panel at runtime, say y here and append
	  'panel=1024x576' to your kernel command line. Otherwise, the
	  largest one available will be used.

config WMT_PANEL_1024X600
	bool "10-inch with 1024x600 resolution"
	depends on (FB_VT8500 || FB_WM8505)
	help
	  These are found in Eken M006 tablets and possibly elsewhere.

	  To select this panel at runtime, say y here and append
	  'panel=1024x600' to your kernel command line. Otherwise, the
	  largest one available will be used.

endif
Loading