mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
ARM: sunxi: Add basic support for Allwinner A1x SoCs
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
afd24e1468
commit
3b52634f0b
19
Documentation/arm/sunxi/README
Normal file
19
Documentation/arm/sunxi/README
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
ARM Allwinner SoCs
|
||||||
|
==================
|
||||||
|
|
||||||
|
This document lists all the ARM Allwinner SoCs that are currently
|
||||||
|
supported in mainline by the Linux kernel. This document will also
|
||||||
|
provide links to documentation and or datasheet for these SoCs.
|
||||||
|
|
||||||
|
SunXi family
|
||||||
|
------------
|
||||||
|
|
||||||
|
Flavors:
|
||||||
|
Allwinner A10 (sun4i)
|
||||||
|
Datasheet : http://dl.linux-sunxi.org/A10/A10%20Datasheet%20-%20v1.21%20%282012-04-06%29.pdf
|
||||||
|
|
||||||
|
Allwinner A13 (sun5i)
|
||||||
|
Datasheet : http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf
|
||||||
|
|
||||||
|
Core: Cortex A8
|
||||||
|
Linux kernel mach directory: arch/arm/mach-sunxi
|
@ -1113,6 +1113,8 @@ source "arch/arm/mach-exynos/Kconfig"
|
|||||||
|
|
||||||
source "arch/arm/mach-shmobile/Kconfig"
|
source "arch/arm/mach-shmobile/Kconfig"
|
||||||
|
|
||||||
|
source "arch/arm/mach-sunxi/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-prima2/Kconfig"
|
source "arch/arm/mach-prima2/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-tegra/Kconfig"
|
source "arch/arm/mach-tegra/Kconfig"
|
||||||
|
@ -193,6 +193,7 @@ machine-$(CONFIG_ARCH_SPEAR13XX) += spear13xx
|
|||||||
machine-$(CONFIG_ARCH_SPEAR3XX) += spear3xx
|
machine-$(CONFIG_ARCH_SPEAR3XX) += spear3xx
|
||||||
machine-$(CONFIG_MACH_SPEAR600) += spear6xx
|
machine-$(CONFIG_MACH_SPEAR600) += spear6xx
|
||||||
machine-$(CONFIG_ARCH_ZYNQ) += zynq
|
machine-$(CONFIG_ARCH_ZYNQ) += zynq
|
||||||
|
machine-$(CONFIG_ARCH_SUNXI) += sunxi
|
||||||
|
|
||||||
# Platform directory name. This list is sorted alphanumerically
|
# Platform directory name. This list is sorted alphanumerically
|
||||||
# by CONFIG_* macro name.
|
# by CONFIG_* macro name.
|
||||||
|
9
arch/arm/mach-sunxi/Kconfig
Normal file
9
arch/arm/mach-sunxi/Kconfig
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
config ARCH_SUNXI
|
||||||
|
bool "Allwinner A1X SOCs" if ARCH_MULTI_V7
|
||||||
|
select CLKSRC_MMIO
|
||||||
|
select COMMON_CLK
|
||||||
|
select GENERIC_CLOCKEVENTS
|
||||||
|
select GENERIC_IRQ_CHIP
|
||||||
|
select PINCTRL
|
||||||
|
select SPARSE_IRQ
|
||||||
|
select SUNXI_TIMER
|
1
arch/arm/mach-sunxi/Makefile
Normal file
1
arch/arm/mach-sunxi/Makefile
Normal file
@ -0,0 +1 @@
|
|||||||
|
obj-$(CONFIG_ARCH_SUNXI) += sunxi.o
|
1
arch/arm/mach-sunxi/Makefile.boot
Normal file
1
arch/arm/mach-sunxi/Makefile.boot
Normal file
@ -0,0 +1 @@
|
|||||||
|
zreladdr-$(CONFIG_ARCH_SUNXI) += 0x40008000
|
60
arch/arm/mach-sunxi/sunxi.c
Normal file
60
arch/arm/mach-sunxi/sunxi.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree support for Allwinner A1X SoCs
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Maxime Ripard
|
||||||
|
*
|
||||||
|
* Maxime Ripard <maxime.ripard@free-electrons.com>
|
||||||
|
*
|
||||||
|
* This file is licensed under the terms of the GNU General Public
|
||||||
|
* License version 2. This program is licensed "as is" without any
|
||||||
|
* warranty of any kind, whether express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/of_irq.h>
|
||||||
|
#include <linux/of_platform.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/sunxi_timer.h>
|
||||||
|
|
||||||
|
#include <linux/irqchip/sunxi.h>
|
||||||
|
|
||||||
|
#include <asm/hardware/vic.h>
|
||||||
|
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include "sunxi.h"
|
||||||
|
|
||||||
|
static struct map_desc sunxi_io_desc[] __initdata = {
|
||||||
|
{
|
||||||
|
.virtual = (unsigned long) SUNXI_REGS_VIRT_BASE,
|
||||||
|
.pfn = __phys_to_pfn(SUNXI_REGS_PHYS_BASE),
|
||||||
|
.length = SUNXI_REGS_SIZE,
|
||||||
|
.type = MT_DEVICE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init sunxi_map_io(void)
|
||||||
|
{
|
||||||
|
iotable_init(sunxi_io_desc, ARRAY_SIZE(sunxi_io_desc));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init sunxi_dt_init(void)
|
||||||
|
{
|
||||||
|
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char * const sunxi_board_dt_compat[] = {
|
||||||
|
"allwinner,sun5i",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
DT_MACHINE_START(SUNXI_DT, "Allwinner A1X (Device Tree)")
|
||||||
|
.init_machine = sunxi_dt_init,
|
||||||
|
.map_io = sunxi_map_io,
|
||||||
|
.init_irq = sunxi_init_irq,
|
||||||
|
.handle_irq = sunxi_handle_irq,
|
||||||
|
.timer = &sunxi_timer,
|
||||||
|
.dt_compat = sunxi_board_dt_compat,
|
||||||
|
MACHINE_END
|
20
arch/arm/mach-sunxi/sunxi.h
Normal file
20
arch/arm/mach-sunxi/sunxi.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Generic definitions for Allwinner SunXi SoCs
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Maxime Ripard
|
||||||
|
*
|
||||||
|
* Maxime Ripard <maxime.ripard@free-electrons.com>
|
||||||
|
*
|
||||||
|
* This file is licensed under the terms of the GNU General Public
|
||||||
|
* License version 2. This program is licensed "as is" without any
|
||||||
|
* warranty of any kind, whether express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MACH_SUNXI_H
|
||||||
|
#define __MACH_SUNXI_H
|
||||||
|
|
||||||
|
#define SUNXI_REGS_PHYS_BASE 0x01c00000
|
||||||
|
#define SUNXI_REGS_VIRT_BASE IOMEM(0xf1c00000)
|
||||||
|
#define SUNXI_REGS_SIZE (SZ_2M + SZ_1M)
|
||||||
|
|
||||||
|
#endif /* __MACH_SUNXI_H */
|
Loading…
Reference in New Issue
Block a user