A large number of cleanups, all over the platforms. This is dominated
 largely by the Samsung platforms (s3c, s5p, exynos) and a few of the
 others moving code out of arch/arm into more appropriate subsystems.
 The clocksource and irqchip drivers are now abstracted to the point
 where platforms that are already cleaned up do not need to even specify
 the driver they use, it can all get configured from the device tree
 as we do for normal device drivers. The clocksource changes basically
 touch every single platform in the process.
 
 We further clean up the use of platform specific header files here,
 with the goal of turning more of the platforms over to being
 "multiplatform" enabled, which implies that they cannot expose
 their headers to architecture independent code any more.
 
 It is expected that no functional changes are part of the cleanup.
 The overall reduction in total code lines is mostly the result of
 removing broken and obsolete code.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIVAwUAUSUyKmCrR//JCVInAQIN8RAAnb/uPytmlMjn5yCksF4Mvb/FVbn/TVwz
 KRIGpCHOzyKK1q7pM8NRUVWfjW2SZqbXJFqx6zBGKSlDPvFTOhsLyyupU+Tnyu5W
 IX4eIUBwb+a6H7XDHw0X2YI8uHzi5RNLhne0A1QyDKcnuHs1LDAttXnJHaK4Ap6Y
 NN2YFt3l3ld7DXWXJtMsw5v8lC10aeIFGTvXefaPDAdeMLivmI57qEUMDXknNr7W
 Odz/Rc0/cw3BNBVl/zNHA0jw7FOjKAymCYYNUa4xDCJEr+JnIRTqizd0N/YIIC7x
 aA2xjJ3oKUFyF51yiJE6nFuTyJznhwtehc+uiMOSIkjrPLym52LEHmd7G5Yqlmjz
 oiei09qBb870q3lGxwfht9iaeIwYgQFYGfD0yW5QWArCO5pxhtCPLPH7YZNZtcQd
 ZJRSGGqT/ljBz3bm0K9OLESeeTTN7+Nxvtpiz/CD+Piegz0gWJzDYJRTzkJ3UWpA
 WTVhVQdWUeX2JrNkgM7Z3Tu8iXOe+LIEs7kVXGJZSREmIIZiRvR36UrODZtAkp9I
 7YQ+srX/uaR832pgK0RrHK0zY0psU6MmIvhYxJZFbx7keiPA9eH6drb0x7tGqcUD
 FzEUzvcZvyqppndfBi+R60H/YKAhJDEXdwxzo6dyCpPQaW1T9GnzIqXuE1zin+Aw
 X7Y8YywMbHI=
 =DvgJ
 -----END PGP SIGNATURE-----

Merge tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC cleanups from Arnd Bergmann:
 "A large number of cleanups, all over the platforms.  This is dominated
  largely by the Samsung platforms (s3c, s5p, exynos) and a few of the
  others moving code out of arch/arm into more appropriate subsystems.

  The clocksource and irqchip drivers are now abstracted to the point
  where platforms that are already cleaned up do not need to even
  specify the driver they use, it can all get configured from the device
  tree as we do for normal device drivers.  The clocksource changes
  basically touch every single platform in the process.

  We further clean up the use of platform specific header files here,
  with the goal of turning more of the platforms over to being
  "multiplatform" enabled, which implies that they cannot expose their
  headers to architecture independent code any more.

  It is expected that no functional changes are part of the cleanup.
  The overall reduction in total code lines is mostly the result of
  removing broken and obsolete code."

* tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (133 commits)
  ARM: mvebu: correct gated clock documentation
  ARM: kirkwood: add missing include for nsa310
  ARM: exynos: move exynos4210-combiner to drivers/irqchip
  mfd: db8500-prcmu: update resource passing
  drivers/db8500-cpufreq: delete dangling include
  ARM: at91: remove NEOCORE 926 board
  sunxi: Cleanup the reset code and add meaningful registers defines
  ARM: S3C24XX: header mach/regs-mem.h local
  ARM: S3C24XX: header mach/regs-power.h local
  ARM: S3C24XX: header mach/regs-s3c2412-mem.h local
  ARM: S3C24XX: Remove plat-s3c24xx directory in arch/arm/
  ARM: S3C24XX: transform s3c2443 subirqs into new structure
  ARM: S3C24XX: modify s3c2443 irq init to initialize all irqs
  ARM: S3C24XX: move s3c2443 irq code to irq.c
  ARM: S3C24XX: transform s3c2416 irqs into new structure
  ARM: S3C24XX: modify s3c2416 irq init to initialize all irqs
  ARM: S3C24XX: move s3c2416 irq init to common irq code
  ARM: S3C24XX: Modify s3c_irq_wake to use the hwirq property
  ARM: S3C24XX: Move irq syscore-ops to irq-pm
  clocksource: always define CLOCKSOURCE_OF_DECLARE
  ...
This commit is contained in:
Linus Torvalds 2013-02-21 14:58:40 -08:00
Родитель b24174b0cb 3b1209e799
Коммит b274776c54
847 изменённых файлов: 4319 добавлений и 9436 удалений

Просмотреть файл

@ -89,7 +89,7 @@ ID Clock Peripheral
16 xor1 XOR DMA 1 16 xor1 XOR DMA 1
17 crypto CESA engine 17 crypto CESA engine
18 pex1 PCIe Cntrl 1 18 pex1 PCIe Cntrl 1
19 ge1 Gigabit Ethernet 0 19 ge1 Gigabit Ethernet 1
20 tdm Time Division Mplx 20 tdm Time Division Mplx
Required properties: Required properties:

Просмотреть файл

@ -4231,6 +4231,7 @@ M: Thomas Gleixner <tglx@linutronix.de>
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
F: kernel/irq/ F: kernel/irq/
F: drivers/irqchip/
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY) IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
M: Benjamin Herrenschmidt <benh@kernel.crashing.org> M: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Просмотреть файл

@ -344,10 +344,10 @@ config ARCH_BCM2835
select ARM_ERRATA_411920 select ARM_ERRATA_411920
select ARM_TIMER_SP804 select ARM_TIMER_SP804
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_OF
select COMMON_CLK select COMMON_CLK
select CPU_V6 select CPU_V6
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select MULTI_IRQ_HANDLER select MULTI_IRQ_HANDLER
select PINCTRL select PINCTRL
select PINCTRL_BCM2835 select PINCTRL_BCM2835
@ -642,9 +642,9 @@ config ARCH_TEGRA
select ARCH_HAS_CPUFREQ select ARCH_HAS_CPUFREQ
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO select CLKSRC_MMIO
select CLKSRC_OF
select COMMON_CLK select COMMON_CLK
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_SMP select HAVE_SMP
select MIGHT_HAVE_CACHE_L2X0 select MIGHT_HAVE_CACHE_L2X0
@ -744,7 +744,6 @@ config ARCH_S3C24XX
select ARCH_HAS_CPUFREQ select ARCH_HAS_CPUFREQ
select ARCH_USES_GETTIMEOFFSET select ARCH_USES_GETTIMEOFFSET
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
@ -787,7 +786,6 @@ config ARCH_S5P64X0
select CLKSRC_MMIO select CLKSRC_MMIO
select CPU_V6 select CPU_V6
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
@ -802,7 +800,6 @@ config ARCH_S5PC100
select ARCH_USES_GETTIMEOFFSET select ARCH_USES_GETTIMEOFFSET
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CPU_V7 select CPU_V7
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
@ -820,7 +817,6 @@ config ARCH_S5PV210
select CLKSRC_MMIO select CLKSRC_MMIO
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
@ -838,7 +834,6 @@ config ARCH_EXYNOS
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select HAVE_S3C2410_I2C if I2C select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C2410_WATCHDOG if WATCHDOG
@ -873,7 +868,6 @@ config ARCH_U300
select COMMON_CLK select COMMON_CLK
select CPU_ARM926T select CPU_ARM926T
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_TCM select HAVE_TCM
select SPARSE_IRQ select SPARSE_IRQ
help help
@ -957,7 +951,6 @@ config ARCH_VT8500_SINGLE
select COMMON_CLK select COMMON_CLK
select CPU_ARM926T select CPU_ARM926T
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select HAVE_CLK select HAVE_CLK
select MULTI_IRQ_HANDLER select MULTI_IRQ_HANDLER
select SPARSE_IRQ select SPARSE_IRQ
@ -1086,17 +1079,12 @@ source "arch/arm/mach-realview/Kconfig"
source "arch/arm/mach-sa1100/Kconfig" source "arch/arm/mach-sa1100/Kconfig"
source "arch/arm/plat-samsung/Kconfig" source "arch/arm/plat-samsung/Kconfig"
source "arch/arm/plat-s3c24xx/Kconfig"
source "arch/arm/mach-socfpga/Kconfig" source "arch/arm/mach-socfpga/Kconfig"
source "arch/arm/plat-spear/Kconfig" source "arch/arm/plat-spear/Kconfig"
source "arch/arm/mach-s3c24xx/Kconfig" source "arch/arm/mach-s3c24xx/Kconfig"
if ARCH_S3C24XX
source "arch/arm/mach-s3c2412/Kconfig"
source "arch/arm/mach-s3c2440/Kconfig"
endif
if ARCH_S3C64XX if ARCH_S3C64XX
source "arch/arm/mach-s3c64xx/Kconfig" source "arch/arm/mach-s3c64xx/Kconfig"

Просмотреть файл

@ -219,12 +219,12 @@ choice
Say Y here if you want kernel low-level debugging support Say Y here if you want kernel low-level debugging support
on i.MX51. on i.MX51.
config DEBUG_IMX50_IMX53_UART config DEBUG_IMX53_UART
bool "i.MX50 and i.MX53 Debug UART" bool "i.MX53 Debug UART"
depends on SOC_IMX50 || SOC_IMX53 depends on SOC_IMX53
help help
Say Y here if you want kernel low-level debugging support Say Y here if you want kernel low-level debugging support
on i.MX50 or i.MX53. on i.MX53.
config DEBUG_IMX6Q_UART config DEBUG_IMX6Q_UART
bool "i.MX6Q Debug UART" bool "i.MX6Q Debug UART"
@ -497,7 +497,7 @@ config DEBUG_LL_INCLUDE
DEBUG_IMX21_IMX27_UART || \ DEBUG_IMX21_IMX27_UART || \
DEBUG_IMX31_IMX35_UART || \ DEBUG_IMX31_IMX35_UART || \
DEBUG_IMX51_UART || \ DEBUG_IMX51_UART || \
DEBUG_IMX50_IMX53_UART ||\ DEBUG_IMX53_UART ||\
DEBUG_IMX6Q_UART DEBUG_IMX6Q_UART
default "debug/highbank.S" if DEBUG_HIGHBANK_UART default "debug/highbank.S" if DEBUG_HIGHBANK_UART
default "debug/mvebu.S" if DEBUG_MVEBU_UART default "debug/mvebu.S" if DEBUG_MVEBU_UART

Просмотреть файл

@ -173,7 +173,7 @@ machine-$(CONFIG_ARCH_PRIMA2) += prima2
machine-$(CONFIG_ARCH_PXA) += pxa machine-$(CONFIG_ARCH_PXA) += pxa
machine-$(CONFIG_ARCH_REALVIEW) += realview machine-$(CONFIG_ARCH_REALVIEW) += realview
machine-$(CONFIG_ARCH_RPC) += rpc machine-$(CONFIG_ARCH_RPC) += rpc
machine-$(CONFIG_ARCH_S3C24XX) += s3c24xx s3c2412 s3c2440 machine-$(CONFIG_ARCH_S3C24XX) += s3c24xx
machine-$(CONFIG_ARCH_S3C64XX) += s3c64xx machine-$(CONFIG_ARCH_S3C64XX) += s3c64xx
machine-$(CONFIG_ARCH_S5P64X0) += s5p64x0 machine-$(CONFIG_ARCH_S5P64X0) += s5p64x0
machine-$(CONFIG_ARCH_S5PC100) += s5pc100 machine-$(CONFIG_ARCH_S5PC100) += s5pc100
@ -204,7 +204,7 @@ plat-$(CONFIG_ARCH_S3C64XX) += samsung
plat-$(CONFIG_PLAT_IOP) += iop plat-$(CONFIG_PLAT_IOP) += iop
plat-$(CONFIG_PLAT_ORION) += orion plat-$(CONFIG_PLAT_ORION) += orion
plat-$(CONFIG_PLAT_PXA) += pxa plat-$(CONFIG_PLAT_PXA) += pxa
plat-$(CONFIG_PLAT_S3C24XX) += s3c24xx samsung plat-$(CONFIG_PLAT_S3C24XX) += samsung
plat-$(CONFIG_PLAT_S5P) += samsung plat-$(CONFIG_PLAT_S5P) += samsung
plat-$(CONFIG_PLAT_SPEAR) += spear plat-$(CONFIG_PLAT_SPEAR) += spear
plat-$(CONFIG_PLAT_VERSATILE) += versatile plat-$(CONFIG_PLAT_VERSATILE) += versatile

Просмотреть файл

@ -13,8 +13,6 @@ extern void error(char *);
#define STATIC static #define STATIC static
#define STATIC_RW_DATA /* non-static please */ #define STATIC_RW_DATA /* non-static please */
#define ARCH_HAS_DECOMP_WDOG
/* Diagnostic functions */ /* Diagnostic functions */
#ifdef DEBUG #ifdef DEBUG
# define Assert(cond,msg) {if(!(cond)) error(msg);} # define Assert(cond,msg) {if(!(cond)) error(msg);}

Просмотреть файл

@ -1,26 +1,3 @@
config ARM_GIC
bool
select IRQ_DOMAIN
select MULTI_IRQ_HANDLER
config GIC_NON_BANKED
bool
config ARM_VIC
bool
select IRQ_DOMAIN
select MULTI_IRQ_HANDLER
config ARM_VIC_NR
int
default 4 if ARCH_S5PV210
default 3 if ARCH_S5PC100
default 2
depends on ARM_VIC
help
The maximum number of VICs available in the system, for
power management.
config ICST config ICST
bool bool

Просмотреть файл

@ -2,8 +2,6 @@
# Makefile for the linux kernel. # Makefile for the linux kernel.
# #
obj-$(CONFIG_ARM_GIC) += gic.o
obj-$(CONFIG_ARM_VIC) += vic.o
obj-$(CONFIG_ICST) += icst.o obj-$(CONFIG_ICST) += icst.o
obj-$(CONFIG_SA1111) += sa1111.o obj-$(CONFIG_SA1111) += sa1111.o
obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o

Просмотреть файл

@ -18,7 +18,6 @@ CONFIG_ARCH_AT91=y
CONFIG_ARCH_AT91SAM9263=y CONFIG_ARCH_AT91SAM9263=y
CONFIG_MACH_AT91SAM9263EK=y CONFIG_MACH_AT91SAM9263EK=y
CONFIG_MACH_USB_A9263=y CONFIG_MACH_USB_A9263=y
CONFIG_MACH_NEOCORE926=y
CONFIG_MTD_AT91_DATAFLASH_CARD=y CONFIG_MTD_AT91_DATAFLASH_CARD=y
# CONFIG_ARM_THUMB is not set # CONFIG_ARM_THUMB is not set
CONFIG_AEABI=y CONFIG_AEABI=y

Просмотреть файл

@ -32,7 +32,6 @@ CONFIG_MACH_PCM043=y
CONFIG_MACH_MX35_3DS=y CONFIG_MACH_MX35_3DS=y
CONFIG_MACH_VPR200=y CONFIG_MACH_VPR200=y
CONFIG_MACH_IMX51_DT=y CONFIG_MACH_IMX51_DT=y
CONFIG_MACH_MX51_3DS=y
CONFIG_MACH_EUKREA_CPUIMX51SD=y CONFIG_MACH_EUKREA_CPUIMX51SD=y
CONFIG_SOC_IMX53=y CONFIG_SOC_IMX53=y
CONFIG_SOC_IMX6Q=y CONFIG_SOC_IMX6Q=y

Просмотреть файл

@ -12,7 +12,6 @@
struct tag; struct tag;
struct meminfo; struct meminfo;
struct sys_timer;
struct pt_regs; struct pt_regs;
struct smp_operations; struct smp_operations;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
@ -48,7 +47,7 @@ struct machine_desc {
void (*map_io)(void);/* IO mapping function */ void (*map_io)(void);/* IO mapping function */
void (*init_early)(void); void (*init_early)(void);
void (*init_irq)(void); void (*init_irq)(void);
struct sys_timer *timer; /* system tick timer */ void (*init_time)(void);
void (*init_machine)(void); void (*init_machine)(void);
void (*init_late)(void); void (*init_late)(void);
#ifdef CONFIG_MULTI_IRQ_HANDLER #ifdef CONFIG_MULTI_IRQ_HANDLER

Просмотреть файл

@ -22,6 +22,7 @@ extern int show_fiq_list(struct seq_file *, int);
#ifdef CONFIG_MULTI_IRQ_HANDLER #ifdef CONFIG_MULTI_IRQ_HANDLER
extern void (*handle_arch_irq)(struct pt_regs *); extern void (*handle_arch_irq)(struct pt_regs *);
extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
#endif #endif
/* /*

Просмотреть файл

@ -10,36 +10,6 @@
#ifndef __ASM_ARM_MACH_TIME_H #ifndef __ASM_ARM_MACH_TIME_H
#define __ASM_ARM_MACH_TIME_H #define __ASM_ARM_MACH_TIME_H
/*
* This is our kernel timer structure.
*
* - init
* Initialise the kernels jiffy timer source, claim interrupt
* using setup_irq. This is called early on during initialisation
* while interrupts are still disabled on the local CPU.
* - suspend
* Suspend the kernel jiffy timer source, if necessary. This
* is called with interrupts disabled, after all normal devices
* have been suspended. If no action is required, set this to
* NULL.
* - resume
* Resume the kernel jiffy timer source, if necessary. This
* is called with interrupts disabled before any normal devices
* are resumed. If no action is required, set this to NULL.
* - offset
* Return the timer offset in microseconds since the last timer
* interrupt. Note: this must take account of any unprocessed
* timer interrupt which may be pending.
*/
struct sys_timer {
void (*init)(void);
void (*suspend)(void);
void (*resume)(void);
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
unsigned long (*offset)(void);
#endif
};
extern void timer_tick(void); extern void timer_tick(void);
struct timespec; struct timespec;

Просмотреть файл

@ -34,7 +34,7 @@
#define UART_PADDR 0x43f90000 #define UART_PADDR 0x43f90000
#elif defined (CONFIG_DEBUG_IMX51_UART) #elif defined (CONFIG_DEBUG_IMX51_UART)
#define UART_PADDR 0x73fbc000 #define UART_PADDR 0x73fbc000
#elif defined (CONFIG_DEBUG_IMX50_IMX53_UART) #elif defined (CONFIG_DEBUG_IMX53_UART)
#define UART_PADDR 0x53fbc000 #define UART_PADDR 0x53fbc000
#elif defined (CONFIG_DEBUG_IMX6Q_UART) #elif defined (CONFIG_DEBUG_IMX6Q_UART)
#define UART_PADDR IMX6Q_DEBUG_UART_BASE #define UART_PADDR IMX6Q_DEBUG_UART_BASE

Просмотреть файл

@ -117,6 +117,16 @@ void __init init_IRQ(void)
machine_desc->init_irq(); machine_desc->init_irq();
} }
#ifdef CONFIG_MULTI_IRQ_HANDLER
void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
{
if (handle_arch_irq)
return;
handle_arch_irq = handle_irq;
}
#endif
#ifdef CONFIG_SPARSE_IRQ #ifdef CONFIG_SPARSE_IRQ
int __init arch_probe_nr_irqs(void) int __init arch_probe_nr_irqs(void)
{ {

Просмотреть файл

@ -401,7 +401,8 @@ static void (*smp_cross_call)(const struct cpumask *, unsigned int);
void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int)) void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))
{ {
smp_cross_call = fn; if (!smp_cross_call)
smp_cross_call = fn;
} }
void arch_send_call_function_ipi_mask(const struct cpumask *mask) void arch_send_call_function_ipi_mask(const struct cpumask *mask)

Просмотреть файл

@ -24,7 +24,6 @@
#include <asm/smp_twd.h> #include <asm/smp_twd.h>
#include <asm/localtimer.h> #include <asm/localtimer.h>
#include <asm/hardware/gic.h>
/* set up by the platform code */ /* set up by the platform code */
static void __iomem *twd_base; static void __iomem *twd_base;

Просмотреть файл

@ -21,7 +21,6 @@
#include <linux/timex.h> #include <linux/timex.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/syscore_ops.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/irq.h> #include <linux/irq.h>
@ -31,11 +30,6 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
/*
* Our system timer.
*/
static struct sys_timer *system_timer;
#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \ #if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \
defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE) defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE)
/* this needs a better home */ /* this needs a better home */
@ -69,16 +63,6 @@ unsigned long profile_pc(struct pt_regs *regs)
EXPORT_SYMBOL(profile_pc); EXPORT_SYMBOL(profile_pc);
#endif #endif
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
u32 arch_gettimeoffset(void)
{
if (system_timer->offset != NULL)
return system_timer->offset() * 1000;
return 0;
}
#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */
#ifndef CONFIG_GENERIC_CLOCKEVENTS #ifndef CONFIG_GENERIC_CLOCKEVENTS
/* /*
* Kernel system timer support. * Kernel system timer support.
@ -129,43 +113,8 @@ int __init register_persistent_clock(clock_access_fn read_boot,
return -EINVAL; return -EINVAL;
} }
#if defined(CONFIG_PM) && !defined(CONFIG_GENERIC_CLOCKEVENTS)
static int timer_suspend(void)
{
if (system_timer->suspend)
system_timer->suspend();
return 0;
}
static void timer_resume(void)
{
if (system_timer->resume)
system_timer->resume();
}
#else
#define timer_suspend NULL
#define timer_resume NULL
#endif
static struct syscore_ops timer_syscore_ops = {
.suspend = timer_suspend,
.resume = timer_resume,
};
static int __init timer_init_syscore_ops(void)
{
register_syscore_ops(&timer_syscore_ops);
return 0;
}
device_initcall(timer_init_syscore_ops);
void __init time_init(void) void __init time_init(void)
{ {
system_timer = machine_desc->timer; machine_desc->init_time();
system_timer->init();
sched_clock_postinit(); sched_clock_postinit();
} }

Просмотреть файл

@ -352,12 +352,6 @@ config MACH_USB_A9263
Select this if you are using a Calao Systems USB-A9263. Select this if you are using a Calao Systems USB-A9263.
<http://www.calao-systems.com> <http://www.calao-systems.com>
config MACH_NEOCORE926
bool "Adeneo NEOCORE926"
select HAVE_AT91_DATAFLASH_CARD
help
Select this if you are using the Adeneo Neocore 926 board.
endif endif
# ---------------------------------------------------------- # ----------------------------------------------------------

Просмотреть файл

@ -66,7 +66,6 @@ obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
# AT91SAM9263 board-specific support # AT91SAM9263 board-specific support
obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
obj-$(CONFIG_MACH_USB_A9263) += board-usb-a926x.o obj-$(CONFIG_MACH_USB_A9263) += board-usb-a926x.o
obj-$(CONFIG_MACH_NEOCORE926) += board-neocore926.o
# AT91SAM9RL board-specific support # AT91SAM9RL board-specific support
obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o

Просмотреть файл

@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev)
static struct clock_event_device clkevt = { static struct clock_event_device clkevt = {
.name = "at91_tick", .name = "at91_tick",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
.rating = 150, .rating = 150,
.set_next_event = clkevt32k_next_event, .set_next_event = clkevt32k_next_event,
.set_mode = clkevt32k_mode, .set_mode = clkevt32k_mode,
@ -265,17 +264,10 @@ void __init at91rm9200_timer_init(void)
at91_st_write(AT91_ST_RTMR, 1); at91_st_write(AT91_ST_RTMR, 1);
/* Setup timer clockevent, with minimum of two ticks (important!!) */ /* Setup timer clockevent, with minimum of two ticks (important!!) */
clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift);
clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt);
clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1;
clkevt.cpumask = cpumask_of(0); clkevt.cpumask = cpumask_of(0);
clockevents_register_device(&clkevt); clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK,
2, AT91_ST_ALMV);
/* register clocksource */ /* register clocksource */
clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);
} }
struct sys_timer at91rm9200_timer = {
.init = at91rm9200_timer_init,
};

Просмотреть файл

@ -104,12 +104,38 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
} }
} }
static void at91sam926x_pit_suspend(struct clock_event_device *cedev)
{
/* Disable timer */
pit_write(AT91_PIT_MR, 0);
}
static void at91sam926x_pit_reset(void)
{
/* Disable timer and irqs */
pit_write(AT91_PIT_MR, 0);
/* Clear any pending interrupts, wait for PIT to stop counting */
while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
cpu_relax();
/* Start PIT but don't enable IRQ */
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
}
static void at91sam926x_pit_resume(struct clock_event_device *cedev)
{
at91sam926x_pit_reset();
}
static struct clock_event_device pit_clkevt = { static struct clock_event_device pit_clkevt = {
.name = "pit", .name = "pit",
.features = CLOCK_EVT_FEAT_PERIODIC, .features = CLOCK_EVT_FEAT_PERIODIC,
.shift = 32, .shift = 32,
.rating = 100, .rating = 100,
.set_mode = pit_clkevt_mode, .set_mode = pit_clkevt_mode,
.suspend = at91sam926x_pit_suspend,
.resume = at91sam926x_pit_resume,
}; };
@ -150,19 +176,6 @@ static struct irqaction at91sam926x_pit_irq = {
.irq = NR_IRQS_LEGACY + AT91_ID_SYS, .irq = NR_IRQS_LEGACY + AT91_ID_SYS,
}; };
static void at91sam926x_pit_reset(void)
{
/* Disable timer and irqs */
pit_write(AT91_PIT_MR, 0);
/* Clear any pending interrupts, wait for PIT to stop counting */
while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
cpu_relax();
/* Start PIT but don't enable IRQ */
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
}
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_device_id pit_timer_ids[] = { static struct of_device_id pit_timer_ids[] = {
{ .compatible = "atmel,at91sam9260-pit" }, { .compatible = "atmel,at91sam9260-pit" },
@ -211,7 +224,7 @@ static int __init of_at91sam926x_pit_init(void)
/* /*
* Set up both clocksource and clockevent support. * Set up both clocksource and clockevent support.
*/ */
static void __init at91sam926x_pit_init(void) void __init at91sam926x_pit_init(void)
{ {
unsigned long pit_rate; unsigned long pit_rate;
unsigned bits; unsigned bits;
@ -250,12 +263,6 @@ static void __init at91sam926x_pit_init(void)
clockevents_register_device(&pit_clkevt); clockevents_register_device(&pit_clkevt);
} }
static void at91sam926x_pit_suspend(void)
{
/* Disable timer */
pit_write(AT91_PIT_MR, 0);
}
void __init at91sam926x_ioremap_pit(u32 addr) void __init at91sam926x_ioremap_pit(u32 addr)
{ {
#if defined(CONFIG_OF) #if defined(CONFIG_OF)
@ -272,9 +279,3 @@ void __init at91sam926x_ioremap_pit(u32 addr)
if (!pit_base_addr) if (!pit_base_addr)
panic("Impossible to ioremap PIT\n"); panic("Impossible to ioremap PIT\n");
} }
struct sys_timer at91sam926x_timer = {
.init = at91sam926x_pit_init,
.suspend = at91sam926x_pit_suspend,
.resume = at91sam926x_pit_reset,
};

Просмотреть файл

@ -42,9 +42,10 @@
#define AT91_TC_CLK1BASE 0x40 #define AT91_TC_CLK1BASE 0x40
#define AT91_TC_CLK2BASE 0x80 #define AT91_TC_CLK2BASE 0x80
static unsigned long at91x40_gettimeoffset(void) static u32 at91x40_gettimeoffset(void)
{ {
return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 /
(AT91X40_MASTER_CLOCK / 128)) * 1000;
} }
static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id)
@ -64,6 +65,8 @@ void __init at91x40_timer_init(void)
{ {
unsigned int v; unsigned int v;
arch_gettimeoffset = at91x40_gettimeoffset;
at91_tc_write(AT91_TC_BCR, 0); at91_tc_write(AT91_TC_BCR, 0);
v = at91_tc_read(AT91_TC_BMR); v = at91_tc_read(AT91_TC_BMR);
v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE;
@ -79,9 +82,3 @@ void __init at91x40_timer_init(void)
at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN)); at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN));
} }
struct sys_timer at91x40_timer = {
.init = at91x40_timer_init,
.offset = at91x40_gettimeoffset,
};

Просмотреть файл

@ -90,7 +90,7 @@ static void __init onearm_board_init(void)
MACHINE_START(ONEARM, "Ajeco 1ARM single board computer") MACHINE_START(ONEARM, "Ajeco 1ARM single board computer")
/* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = onearm_init_early, .init_early = onearm_init_early,

Просмотреть файл

@ -210,7 +210,7 @@ static void __init afeb9260_board_init(void)
MACHINE_START(AFEB9260, "Custom afeb9260 board") MACHINE_START(AFEB9260, "Custom afeb9260 board")
/* Maintainer: Sergey Lapin <slapin@ossfans.org> */ /* Maintainer: Sergey Lapin <slapin@ossfans.org> */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = afeb9260_init_early, .init_early = afeb9260_init_early,

Просмотреть файл

@ -187,7 +187,7 @@ static void __init cam60_board_init(void)
MACHINE_START(CAM60, "KwikByte CAM60") MACHINE_START(CAM60, "KwikByte CAM60")
/* Maintainer: KwikByte */ /* Maintainer: KwikByte */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cam60_init_early, .init_early = cam60_init_early,

Просмотреть файл

@ -157,7 +157,7 @@ static void __init carmeva_board_init(void)
MACHINE_START(CARMEVA, "Carmeva") MACHINE_START(CARMEVA, "Carmeva")
/* Maintainer: Conitec Datasystems */ /* Maintainer: Conitec Datasystems */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = carmeva_init_early, .init_early = carmeva_init_early,

Просмотреть файл

@ -374,7 +374,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260")
MACHINE_START(CPUAT9G20, "Eukrea CPU9G20") MACHINE_START(CPUAT9G20, "Eukrea CPU9G20")
#endif #endif
/* Maintainer: Eric Benard - EUKREA Electromatique */ /* Maintainer: Eric Benard - EUKREA Electromatique */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cpu9krea_init_early, .init_early = cpu9krea_init_early,

Просмотреть файл

@ -178,7 +178,7 @@ static void __init cpuat91_board_init(void)
MACHINE_START(CPUAT91, "Eukrea") MACHINE_START(CPUAT91, "Eukrea")
/* Maintainer: Eric Benard - EUKREA Electromatique */ /* Maintainer: Eric Benard - EUKREA Electromatique */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cpuat91_init_early, .init_early = cpuat91_init_early,

Просмотреть файл

@ -251,7 +251,7 @@ static void __init csb337_board_init(void)
MACHINE_START(CSB337, "Cogent CSB337") MACHINE_START(CSB337, "Cogent CSB337")
/* Maintainer: Bill Gatliff */ /* Maintainer: Bill Gatliff */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = csb337_init_early, .init_early = csb337_init_early,

Просмотреть файл

@ -132,7 +132,7 @@ static void __init csb637_board_init(void)
MACHINE_START(CSB637, "Cogent CSB637") MACHINE_START(CSB637, "Cogent CSB637")
/* Maintainer: Bill Gatliff */ /* Maintainer: Bill Gatliff */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = csb637_init_early, .init_early = csb637_init_early,

Просмотреть файл

@ -49,7 +49,7 @@ static const char *at91_dt_board_compat[] __initdata = {
DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)") DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91_dt_initialize, .init_early = at91_dt_initialize,

Просмотреть файл

@ -44,7 +44,7 @@ static void __init at91eb01_init_early(void)
MACHINE_START(AT91EB01, "Atmel AT91 EB01") MACHINE_START(AT91EB01, "Atmel AT91 EB01")
/* Maintainer: Greg Ungerer <gerg@snapgear.com> */ /* Maintainer: Greg Ungerer <gerg@snapgear.com> */
.timer = &at91x40_timer, .init_time = at91x40_timer_init,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91eb01_init_early, .init_early = at91eb01_init_early,
.init_irq = at91eb01_init_irq, .init_irq = at91eb01_init_irq,

Просмотреть файл

@ -116,7 +116,7 @@ static void __init eb9200_board_init(void)
} }
MACHINE_START(ATEB9200, "Embest ATEB9200") MACHINE_START(ATEB9200, "Embest ATEB9200")
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = eb9200_init_early, .init_early = eb9200_init_early,

Просмотреть файл

@ -181,7 +181,7 @@ static void __init ecb_at91board_init(void)
MACHINE_START(ECBAT91, "emQbit's ECB_AT91") MACHINE_START(ECBAT91, "emQbit's ECB_AT91")
/* Maintainer: emQbit.com */ /* Maintainer: emQbit.com */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ecb_at91init_early, .init_early = ecb_at91init_early,

Просмотреть файл

@ -149,7 +149,7 @@ static void __init eco920_board_init(void)
MACHINE_START(ECO920, "eco920") MACHINE_START(ECO920, "eco920")
/* Maintainer: Sascha Hauer */ /* Maintainer: Sascha Hauer */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = eco920_init_early, .init_early = eco920_init_early,

Просмотреть файл

@ -159,7 +159,7 @@ static void __init flexibity_board_init(void)
MACHINE_START(FLEXIBITY, "Flexibity Connect") MACHINE_START(FLEXIBITY, "Flexibity Connect")
/* Maintainer: Maxim Osipov */ /* Maintainer: Maxim Osipov */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = flexibity_init_early, .init_early = flexibity_init_early,

Просмотреть файл

@ -261,7 +261,7 @@ static void __init foxg20_board_init(void)
MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20") MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20")
/* Maintainer: Sergio Tanzilli */ /* Maintainer: Sergio Tanzilli */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = foxg20_init_early, .init_early = foxg20_init_early,

Просмотреть файл

@ -574,7 +574,7 @@ static void __init gsia18s_board_init(void)
} }
MACHINE_START(GSIA18S, "GS_IA18_S") MACHINE_START(GSIA18S, "GS_IA18_S")
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = gsia18s_init_early, .init_early = gsia18s_init_early,

Просмотреть файл

@ -103,7 +103,7 @@ static void __init kafa_board_init(void)
MACHINE_START(KAFA, "Sperry-Sun KAFA") MACHINE_START(KAFA, "Sperry-Sun KAFA")
/* Maintainer: Sergei Sharonov */ /* Maintainer: Sergei Sharonov */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = kafa_init_early, .init_early = kafa_init_early,

Просмотреть файл

@ -149,7 +149,7 @@ static void __init kb9202_board_init(void)
MACHINE_START(KB9200, "KB920x") MACHINE_START(KB9200, "KB920x")
/* Maintainer: KwikByte, Inc. */ /* Maintainer: KwikByte, Inc. */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = kb9202_init_early, .init_early = kb9202_init_early,

Просмотреть файл

@ -1,387 +0,0 @@
/*
* linux/arch/arm/mach-at91/board-neocore926.c
*
* Copyright (C) 2005 SAN People
* Copyright (C) 2007 Atmel Corporation
* Copyright (C) 2008 ADENEO.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/types.h>
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/spi/spi.h>
#include <linux/spi/ads7846.h>
#include <linux/fb.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <video/atmel_lcdc.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/irq.h>
#include <asm/sizes.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <mach/hardware.h>
#include <mach/at91sam9_smc.h>
#include "at91_aic.h"
#include "board.h"
#include "sam9_smc.h"
#include "generic.h"
static void __init neocore926_init_early(void)
{
/* Initialize processor: 20 MHz crystal */
at91_initialize(20000000);
}
/*
* USB Host port
*/
static struct at91_usbh_data __initdata neocore926_usbh_data = {
.ports = 2,
.vbus_pin = { AT91_PIN_PA24, AT91_PIN_PA21 },
.overcurrent_pin= {-EINVAL, -EINVAL},
};
/*
* USB Device port
*/
static struct at91_udc_data __initdata neocore926_udc_data = {
.vbus_pin = AT91_PIN_PA25,
.pullup_pin = -EINVAL, /* pull-up driven by UDC */
};
/*
* ADS7846 Touchscreen
*/
#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
static int ads7843_pendown_state(void)
{
return !at91_get_gpio_value(AT91_PIN_PA15); /* Touchscreen PENIRQ */
}
static struct ads7846_platform_data ads_info = {
.model = 7843,
.x_min = 150,
.x_max = 3830,
.y_min = 190,
.y_max = 3830,
.vref_delay_usecs = 100,
.x_plate_ohms = 450,
.y_plate_ohms = 250,
.pressure_max = 15000,
.debounce_max = 1,
.debounce_rep = 0,
.debounce_tol = (~0),
.get_pendown_state = ads7843_pendown_state,
};
static void __init neocore926_add_device_ts(void)
{
at91_set_B_periph(AT91_PIN_PA15, 1); /* External IRQ1, with pullup */
at91_set_gpio_input(AT91_PIN_PC13, 1); /* Touchscreen BUSY signal */
}
#else
static void __init neocore926_add_device_ts(void) {}
#endif
/*
* SPI devices.
*/
static struct spi_board_info neocore926_spi_devices[] = {
#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
{ /* DataFlash card */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 0,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
{
.modalias = "ads7846",
.chip_select = 1,
.max_speed_hz = 125000 * 16,
.bus_num = 0,
.platform_data = &ads_info,
.irq = NR_IRQS_LEGACY + AT91SAM9263_ID_IRQ1,
},
#endif
};
/*
* MCI (SD/MMC)
*/
static struct mci_platform_data __initdata neocore926_mci0_data = {
.slot[0] = {
.bus_width = 4,
.detect_pin = AT91_PIN_PE18,
.wp_pin = AT91_PIN_PE19,
},
};
/*
* MACB Ethernet device
*/
static struct macb_platform_data __initdata neocore926_macb_data = {
.phy_irq_pin = AT91_PIN_PE31,
.is_rmii = 1,
};
/*
* NAND flash
*/
static struct mtd_partition __initdata neocore926_nand_partition[] = {
{
.name = "Linux Kernel", /* "Partition 1", */
.offset = 0,
.size = SZ_8M,
},
{
.name = "Filesystem", /* "Partition 2", */
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_32M,
},
{
.name = "Free", /* "Partition 3", */
.offset = MTDPART_OFS_NXTBLK,
.size = MTDPART_SIZ_FULL,
},
};
static struct atmel_nand_data __initdata neocore926_nand_data = {
.ale = 21,
.cle = 22,
.rdy_pin = AT91_PIN_PB19,
.rdy_pin_active_low = 1,
.enable_pin = AT91_PIN_PD15,
.ecc_mode = NAND_ECC_SOFT,
.parts = neocore926_nand_partition,
.num_parts = ARRAY_SIZE(neocore926_nand_partition),
.det_pin = -EINVAL,
};
static struct sam9_smc_config __initdata neocore926_nand_smc_config = {
.ncs_read_setup = 0,
.nrd_setup = 1,
.ncs_write_setup = 0,
.nwe_setup = 1,
.ncs_read_pulse = 4,
.nrd_pulse = 4,
.ncs_write_pulse = 4,
.nwe_pulse = 4,
.read_cycle = 6,
.write_cycle = 6,
.mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
.tdf_cycles = 2,
};
static void __init neocore926_add_device_nand(void)
{
/* configure chip-select 3 (NAND) */
sam9_smc_configure(0, 3, &neocore926_nand_smc_config);
at91_add_device_nand(&neocore926_nand_data);
}
/*
* LCD Controller
*/
#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static struct fb_videomode at91_tft_vga_modes[] = {
{
.name = "TX09D50VM1CCA @ 60",
.refresh = 60,
.xres = 240, .yres = 320,
.pixclock = KHZ2PICOS(5000),
.left_margin = 1, .right_margin = 33,
.upper_margin = 1, .lower_margin = 0,
.hsync_len = 5, .vsync_len = 1,
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
.vmode = FB_VMODE_NONINTERLACED,
},
};
static struct fb_monspecs at91fb_default_monspecs = {
.manufacturer = "HIT",
.monitor = "TX09D70VM1CCA",
.modedb = at91_tft_vga_modes,
.modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
.hfmin = 15000,
.hfmax = 64000,
.vfmin = 50,
.vfmax = 150,
};
#define AT91SAM9263_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
| ATMEL_LCDC_DISTYPE_TFT \
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
static void at91_lcdc_power_control(int on)
{
at91_set_gpio_value(AT91_PIN_PA30, on);
}
/* Driver datas */
static struct atmel_lcdfb_info __initdata neocore926_lcdc_data = {
.lcdcon_is_backlight = true,
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN,
.default_lcdcon2 = AT91SAM9263_DEFAULT_LCDCON2,
.default_monspecs = &at91fb_default_monspecs,
.atmel_lcdfb_power_control = at91_lcdc_power_control,
.guard_time = 1,
.lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB555,
};
#else
static struct atmel_lcdfb_info __initdata neocore926_lcdc_data;
#endif
/*
* GPIO Buttons
*/
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static struct gpio_keys_button neocore926_buttons[] = {
{ /* BP1, "leftclic" */
.code = BTN_LEFT,
.gpio = AT91_PIN_PC5,
.active_low = 1,
.desc = "left_click",
.wakeup = 1,
},
{ /* BP2, "rightclic" */
.code = BTN_RIGHT,
.gpio = AT91_PIN_PC4,
.active_low = 1,
.desc = "right_click",
.wakeup = 1,
},
};
static struct gpio_keys_platform_data neocore926_button_data = {
.buttons = neocore926_buttons,
.nbuttons = ARRAY_SIZE(neocore926_buttons),
};
static struct platform_device neocore926_button_device = {
.name = "gpio-keys",
.id = -1,
.num_resources = 0,
.dev = {
.platform_data = &neocore926_button_data,
}
};
static void __init neocore926_add_device_buttons(void)
{
at91_set_GPIO_periph(AT91_PIN_PC5, 0); /* left button */
at91_set_deglitch(AT91_PIN_PC5, 1);
at91_set_GPIO_periph(AT91_PIN_PC4, 0); /* right button */
at91_set_deglitch(AT91_PIN_PC4, 1);
platform_device_register(&neocore926_button_device);
}
#else
static void __init neocore926_add_device_buttons(void) {}
#endif
/*
* AC97
*/
static struct ac97c_platform_data neocore926_ac97_data = {
.reset_pin = AT91_PIN_PA13,
};
static void __init neocore926_board_init(void)
{
/* Serial */
/* DBGU on ttyS0. (Rx & Tx only) */
at91_register_uart(0, 0, 0);
/* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
at91_add_device_serial();
/* USB Host */
at91_add_device_usbh(&neocore926_usbh_data);
/* USB Device */
at91_add_device_udc(&neocore926_udc_data);
/* SPI */
at91_set_gpio_output(AT91_PIN_PE20, 1); /* select spi0 clock */
at91_add_device_spi(neocore926_spi_devices, ARRAY_SIZE(neocore926_spi_devices));
/* Touchscreen */
neocore926_add_device_ts();
/* MMC */
at91_add_device_mci(0, &neocore926_mci0_data);
/* Ethernet */
at91_add_device_eth(&neocore926_macb_data);
/* NAND */
neocore926_add_device_nand();
/* I2C */
at91_add_device_i2c(NULL, 0);
/* LCD Controller */
at91_add_device_lcdc(&neocore926_lcdc_data);
/* Push Buttons */
neocore926_add_device_buttons();
/* AC97 */
at91_add_device_ac97(&neocore926_ac97_data);
}
MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926")
/* Maintainer: ADENEO */
.timer = &at91sam926x_timer,
.map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq,
.init_early = neocore926_init_early,
.init_irq = at91_init_irq_default,
.init_machine = neocore926_board_init,
MACHINE_END

Просмотреть файл

@ -217,7 +217,7 @@ static void __init pcontrol_g20_board_init(void)
MACHINE_START(PCONTROL_G20, "PControl G20") MACHINE_START(PCONTROL_G20, "PControl G20")
/* Maintainer: pgsellmann@portner-elektronik.at */ /* Maintainer: pgsellmann@portner-elektronik.at */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = pcontrol_g20_init_early, .init_early = pcontrol_g20_init_early,

Просмотреть файл

@ -119,7 +119,7 @@ static void __init picotux200_board_init(void)
MACHINE_START(PICOTUX2XX, "picotux 200") MACHINE_START(PICOTUX2XX, "picotux 200")
/* Maintainer: Kleinhenz Elektronik GmbH */ /* Maintainer: Kleinhenz Elektronik GmbH */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = picotux200_init_early, .init_early = picotux200_init_early,

Просмотреть файл

@ -257,7 +257,7 @@ static void __init ek_board_init(void)
MACHINE_START(QIL_A9260, "CALAO QIL_A9260") MACHINE_START(QIL_A9260, "CALAO QIL_A9260")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -47,7 +47,7 @@ static const char *at91rm9200_dt_board_compat[] __initdata = {
}; };
DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)") DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91rm9200_dt_initialize, .init_early = at91rm9200_dt_initialize,

Просмотреть файл

@ -219,7 +219,7 @@ static void __init dk_board_init(void)
MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK") MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
/* Maintainer: SAN People/Atmel */ /* Maintainer: SAN People/Atmel */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = dk_init_early, .init_early = dk_init_early,

Просмотреть файл

@ -186,7 +186,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK") MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")
/* Maintainer: SAN People/Atmel */ /* Maintainer: SAN People/Atmel */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -222,7 +222,7 @@ static void __init rsi_ews_board_init(void)
MACHINE_START(RSI_EWS, "RSI EWS") MACHINE_START(RSI_EWS, "RSI EWS")
/* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */ /* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = rsi_ews_init_early, .init_early = rsi_ews_init_early,

Просмотреть файл

@ -218,7 +218,7 @@ static void __init ek_board_init(void)
MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260") MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")
/* Maintainer: Olimex */ /* Maintainer: Olimex */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -343,7 +343,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -612,7 +612,7 @@ MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")
MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK") MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")
#endif #endif
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -443,7 +443,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -409,7 +409,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
@ -419,7 +419,7 @@ MACHINE_END
MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod") MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -502,7 +502,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -320,7 +320,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK") MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -177,7 +177,7 @@ static void __init snapper9260_board_init(void)
} }
MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module") MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module")
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = snapper9260_init_early, .init_early = snapper9260_init_early,

Просмотреть файл

@ -272,7 +272,7 @@ static void __init stamp9g20evb_board_init(void)
MACHINE_START(PORTUXG20, "taskit PortuxG20") MACHINE_START(PORTUXG20, "taskit PortuxG20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,
@ -282,7 +282,7 @@ MACHINE_END
MACHINE_START(STAMP9G20, "taskit Stamp9G20") MACHINE_START(STAMP9G20, "taskit Stamp9G20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,

Просмотреть файл

@ -355,7 +355,7 @@ static void __init ek_board_init(void)
MACHINE_START(USB_A9263, "CALAO USB_A9263") MACHINE_START(USB_A9263, "CALAO USB_A9263")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
@ -365,7 +365,7 @@ MACHINE_END
MACHINE_START(USB_A9260, "CALAO USB_A9260") MACHINE_START(USB_A9260, "CALAO USB_A9260")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
@ -375,7 +375,7 @@ MACHINE_END
MACHINE_START(USB_A9G20, "CALAO USB_A92G0") MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
/* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */ /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,

Просмотреть файл

@ -587,7 +587,7 @@ static void __init yl9200_board_init(void)
MACHINE_START(YL9200, "uCdragon YL-9200") MACHINE_START(YL9200, "uCdragon YL-9200")
/* Maintainer: S.Birtles */ /* Maintainer: S.Birtles */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = yl9200_init_early, .init_early = yl9200_init_early,

Просмотреть файл

@ -36,12 +36,11 @@ extern int __init at91_aic5_of_init(struct device_node *node,
/* Timer */ /* Timer */
struct sys_timer;
extern void at91rm9200_ioremap_st(u32 addr); extern void at91rm9200_ioremap_st(u32 addr);
extern struct sys_timer at91rm9200_timer; extern void at91rm9200_timer_init(void);
extern void at91sam926x_ioremap_pit(u32 addr); extern void at91sam926x_ioremap_pit(u32 addr);
extern struct sys_timer at91sam926x_timer; extern void at91sam926x_pit_init(void);
extern struct sys_timer at91x40_timer; extern void at91x40_timer_init(void);
/* Clocks */ /* Clocks */
#ifdef CONFIG_AT91_PMC_UNIT #ifdef CONFIG_AT91_PMC_UNIT

Просмотреть файл

@ -196,6 +196,4 @@ static inline void flush(void)
barrier(); barrier();
} }
#define arch_decomp_wdog()
#endif #endif

Просмотреть файл

@ -7,7 +7,6 @@ config ARCH_BCM
select ARM_GIC select ARM_GIC
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select GENERIC_TIME select GENERIC_TIME
select GPIO_BCM select GPIO_BCM
select SPARSE_IRQ select SPARSE_IRQ

Просмотреть файл

@ -11,34 +11,19 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <linux/of_irq.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/irqchip.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
static const struct of_device_id irq_match[] = {
{.compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
{}
};
static void timer_init(void) static void timer_init(void)
{ {
} }
static struct sys_timer timer = {
.init = timer_init,
};
static void __init init_irq(void)
{
of_irq_init(irq_match);
}
static void __init board_init(void) static void __init board_init(void)
{ {
@ -49,9 +34,8 @@ static void __init board_init(void)
static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, }; static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, };
DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor")
.init_irq = init_irq, .init_irq = irqchip_init,
.timer = &timer, .init_time = timer_init,
.init_machine = board_init, .init_machine = board_init,
.dt_compat = bcm11351_dt_compat, .dt_compat = bcm11351_dt_compat,
.handle_irq = gic_handle_irq,
MACHINE_END MACHINE_END

Просмотреть файл

@ -17,8 +17,8 @@
#include <linux/irqchip/bcm2835.h> #include <linux/irqchip/bcm2835.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/bcm2835_timer.h>
#include <linux/clk/bcm2835.h> #include <linux/clk/bcm2835.h>
#include <linux/clocksource.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
@ -104,7 +104,7 @@ DT_MACHINE_START(BCM2835, "BCM2835")
.init_irq = bcm2835_init_irq, .init_irq = bcm2835_init_irq,
.handle_irq = bcm2835_handle_irq, .handle_irq = bcm2835_handle_irq,
.init_machine = bcm2835_init, .init_machine = bcm2835_init,
.timer = &bcm2835_timer, .init_time = clocksource_of_init,
.restart = bcm2835_restart, .restart = bcm2835_restart,
.dt_compat = bcm2835_compat .dt_compat = bcm2835_compat
MACHINE_END MACHINE_END

Просмотреть файл

@ -42,4 +42,3 @@ static inline void flush(void)
} }
#define arch_decomp_setup() #define arch_decomp_setup()
#define arch_decomp_wdog()

Просмотреть файл

@ -170,7 +170,7 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
.nr_irqs = CLPS711X_NR_IRQS, .nr_irqs = CLPS711X_NR_IRQS,
.map_io = clps711x_map_io, .map_io = clps711x_map_io,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.init_machine = autcpu12_init, .init_machine = autcpu12_init,
.init_late = autcpu12_init_late, .init_late = autcpu12_init_late,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,

Просмотреть файл

@ -140,7 +140,7 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")
.nr_irqs = CLPS711X_NR_IRQS, .nr_irqs = CLPS711X_NR_IRQS,
.map_io = clps711x_map_io, .map_io = clps711x_map_io,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.init_machine = cdb89712_init, .init_machine = cdb89712_init,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,
.restart = clps711x_restart, .restart = clps711x_restart,

Просмотреть файл

@ -40,7 +40,7 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
.fixup = fixup_clep7312, .fixup = fixup_clep7312,
.map_io = clps711x_map_io, .map_io = clps711x_map_io,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,
.restart = clps711x_restart, .restart = clps711x_restart,
MACHINE_END MACHINE_END

Просмотреть файл

@ -173,7 +173,7 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
.reserve = edb7211_reserve, .reserve = edb7211_reserve,
.map_io = edb7211_map_io, .map_io = edb7211_map_io,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.init_machine = edb7211_init, .init_machine = edb7211_init,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,
.restart = clps711x_restart, .restart = clps711x_restart,

Просмотреть файл

@ -78,7 +78,7 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")
.fixup = fortunet_fixup, .fixup = fortunet_fixup,
.map_io = clps711x_map_io, .map_io = clps711x_map_io,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,
.restart = clps711x_restart, .restart = clps711x_restart,
MACHINE_END MACHINE_END

Просмотреть файл

@ -224,7 +224,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")
.map_io = p720t_map_io, .map_io = p720t_map_io,
.init_early = p720t_init_early, .init_early = p720t_init_early,
.init_irq = clps711x_init_irq, .init_irq = clps711x_init_irq,
.timer = &clps711x_timer, .init_time = clps711x_timer_init,
.init_machine = p720t_init, .init_machine = p720t_init,
.init_late = p720t_init_late, .init_late = p720t_init_late,
.handle_irq = clps711x_handle_irq, .handle_irq = clps711x_handle_irq,

Просмотреть файл

@ -282,7 +282,7 @@ static void add_fixed_clk(struct clk *clk, const char *name, int rate)
clk_register_clkdev(clk, name, NULL); clk_register_clkdev(clk, name, NULL);
} }
static void __init clps711x_timer_init(void) void __init clps711x_timer_init(void)
{ {
int osc, ext, pll, cpu, bus, timl, timh, uart, spi; int osc, ext, pll, cpu, bus, timl, timh, uart, spi;
u32 tmp; u32 tmp;
@ -345,10 +345,6 @@ static void __init clps711x_timer_init(void)
setup_irq(IRQ_TC2OI, &clps711x_timer_irq); setup_irq(IRQ_TC2OI, &clps711x_timer_irq);
} }
struct sys_timer clps711x_timer = {
.init = clps711x_timer_init,
};
void clps711x_restart(char mode, const char *cmd) void clps711x_restart(char mode, const char *cmd)
{ {
soft_restart(0); soft_restart(0);

Просмотреть файл

@ -8,10 +8,8 @@
#define CLPS711X_NR_GPIO (4 * 8 + 3) #define CLPS711X_NR_GPIO (4 * 8 + 3)
#define CLPS711X_GPIO(prt, bit) ((prt) * 8 + (bit)) #define CLPS711X_GPIO(prt, bit) ((prt) * 8 + (bit))
struct sys_timer;
extern void clps711x_map_io(void); extern void clps711x_map_io(void);
extern void clps711x_init_irq(void); extern void clps711x_init_irq(void);
extern void clps711x_timer_init(void);
extern void clps711x_handle_irq(struct pt_regs *regs); extern void clps711x_handle_irq(struct pt_regs *regs);
extern void clps711x_restart(char mode, const char *cmd); extern void clps711x_restart(char mode, const char *cmd);
extern struct sys_timer clps711x_timer;

Просмотреть файл

@ -53,5 +53,3 @@ static inline void flush(void)
* nothing to do * nothing to do
*/ */
#define arch_decomp_setup() #define arch_decomp_setup()
#define arch_decomp_wdog()

Просмотреть файл

@ -28,7 +28,6 @@
#include <linux/usb/ohci_pdriver.h> #include <linux/usb/ohci_pdriver.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/hardware/gic.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
@ -250,8 +249,7 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = cns3420_map_io, .map_io = cns3420_map_io,
.init_irq = cns3xxx_init_irq, .init_irq = cns3xxx_init_irq,
.timer = &cns3xxx_timer, .init_time = cns3xxx_timer_init,
.handle_irq = gic_handle_irq,
.init_machine = cns3420_init, .init_machine = cns3420_init,
.restart = cns3xxx_restart, .restart = cns3xxx_restart,
MACHINE_END MACHINE_END

Просмотреть файл

@ -12,10 +12,10 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/clockchips.h> #include <linux/clockchips.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/irqchip/arm-gic.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <asm/hardware/gic.h>
#include <asm/hardware/cache-l2x0.h> #include <asm/hardware/cache-l2x0.h>
#include <mach/cns3xxx.h> #include <mach/cns3xxx.h>
#include "core.h" #include "core.h"
@ -134,7 +134,6 @@ static int cns3xxx_timer_set_next_event(unsigned long evt,
static struct clock_event_device cns3xxx_tmr1_clockevent = { static struct clock_event_device cns3xxx_tmr1_clockevent = {
.name = "cns3xxx timer1", .name = "cns3xxx timer1",
.shift = 8,
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.set_mode = cns3xxx_timer_set_mode, .set_mode = cns3xxx_timer_set_mode,
.set_next_event = cns3xxx_timer_set_next_event, .set_next_event = cns3xxx_timer_set_next_event,
@ -145,15 +144,9 @@ static struct clock_event_device cns3xxx_tmr1_clockevent = {
static void __init cns3xxx_clockevents_init(unsigned int timer_irq) static void __init cns3xxx_clockevents_init(unsigned int timer_irq)
{ {
cns3xxx_tmr1_clockevent.irq = timer_irq; cns3xxx_tmr1_clockevent.irq = timer_irq;
cns3xxx_tmr1_clockevent.mult = clockevents_config_and_register(&cns3xxx_tmr1_clockevent,
div_sc((cns3xxx_cpu_clock() >> 3) * 1000000, NSEC_PER_SEC, (cns3xxx_cpu_clock() >> 3) * 1000000,
cns3xxx_tmr1_clockevent.shift); 0xf, 0xffffffff);
cns3xxx_tmr1_clockevent.max_delta_ns =
clockevent_delta2ns(0xffffffff, &cns3xxx_tmr1_clockevent);
cns3xxx_tmr1_clockevent.min_delta_ns =
clockevent_delta2ns(0xf, &cns3xxx_tmr1_clockevent);
clockevents_register_device(&cns3xxx_tmr1_clockevent);
} }
/* /*
@ -235,17 +228,13 @@ static void __init __cns3xxx_timer_init(unsigned int timer_irq)
cns3xxx_clockevents_init(timer_irq); cns3xxx_clockevents_init(timer_irq);
} }
static void __init cns3xxx_timer_init(void) void __init cns3xxx_timer_init(void)
{ {
cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT); cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT);
__cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0); __cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0);
} }
struct sys_timer cns3xxx_timer = {
.init = cns3xxx_timer_init,
};
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
void __init cns3xxx_l2x0_init(void) void __init cns3xxx_l2x0_init(void)

Просмотреть файл

@ -11,7 +11,7 @@
#ifndef __CNS3XXX_CORE_H #ifndef __CNS3XXX_CORE_H
#define __CNS3XXX_CORE_H #define __CNS3XXX_CORE_H
extern struct sys_timer cns3xxx_timer; extern void cns3xxx_timer_init(void);
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
void __init cns3xxx_l2x0_init(void); void __init cns3xxx_l2x0_init(void);

Просмотреть файл

@ -51,4 +51,3 @@ static inline void flush(void)
* nothing to do * nothing to do
*/ */
#define arch_decomp_setup() #define arch_decomp_setup()
#define arch_decomp_wdog()

Просмотреть файл

@ -679,7 +679,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = da830_evm_map_io, .map_io = da830_evm_map_io,
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = da830_evm_init, .init_machine = da830_evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -1599,7 +1599,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = da850_evm_map_io, .map_io = da850_evm_map_io,
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = da850_evm_init, .init_machine = da850_evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -355,7 +355,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = dm355_evm_map_io, .map_io = dm355_evm_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = dm355_evm_init, .init_machine = dm355_evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -274,7 +274,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = dm355_leopard_map_io, .map_io = dm355_leopard_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = dm355_leopard_init, .init_machine = dm355_leopard_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -616,7 +616,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = dm365_evm_map_io, .map_io = dm365_evm_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = dm365_evm_init, .init_machine = dm365_evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -825,7 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = davinci_evm_map_io, .map_io = davinci_evm_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = davinci_evm_init, .init_machine = davinci_evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -818,7 +818,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = davinci_map_io, .map_io = davinci_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = evm_init, .init_machine = evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
@ -829,7 +829,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = davinci_map_io, .map_io = davinci_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = evm_init, .init_machine = evm_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -570,7 +570,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = mityomapl138_map_io, .map_io = mityomapl138_map_io,
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = mityomapl138_init, .init_machine = mityomapl138_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -237,7 +237,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = davinci_ntosd2_map_io, .map_io = davinci_ntosd2_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = davinci_ntosd2_init, .init_machine = davinci_ntosd2_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -341,7 +341,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = omapl138_hawk_map_io, .map_io = omapl138_hawk_map_io,
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = omapl138_hawk_init, .init_machine = omapl138_hawk_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -155,7 +155,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = davinci_sffsdr_map_io, .map_io = davinci_sffsdr_map_io,
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = davinci_sffsdr_init, .init_machine = davinci_sffsdr_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -280,7 +280,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = tnetv107x_init, .map_io = tnetv107x_init,
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = tnetv107x_evm_board_init, .init_machine = tnetv107x_evm_board_init,
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,

Просмотреть файл

@ -56,7 +56,7 @@ static const char *da850_boards_compat[] __initdata = {
DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x") DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
.map_io = da850_init, .map_io = da850_init,
.init_irq = da8xx_init_irq, .init_irq = da8xx_init_irq,
.timer = &davinci_timer, .init_time = davinci_timer_init,
.init_machine = da850_init_machine, .init_machine = da850_init_machine,
.dt_compat = da850_boards_compat, .dt_compat = da850_boards_compat,
.init_late = davinci_init_late, .init_late = davinci_init_late,

Просмотреть файл

@ -15,9 +15,7 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/types.h> #include <linux/types.h>
struct sys_timer; extern void davinci_timer_init(void);
extern struct sys_timer davinci_timer;
extern void davinci_irq_init(void); extern void davinci_irq_init(void);
extern void __iomem *davinci_intc_base; extern void __iomem *davinci_intc_base;

Просмотреть файл

@ -101,4 +101,3 @@ static inline void __arch_decomp_setup(unsigned long arch_id)
} }
#define arch_decomp_setup() __arch_decomp_setup(arch_id) #define arch_decomp_setup() __arch_decomp_setup(arch_id)
#define arch_decomp_wdog()

Просмотреть файл

@ -337,7 +337,7 @@ static struct clock_event_device clockevent_davinci = {
}; };
static void __init davinci_timer_init(void) void __init davinci_timer_init(void)
{ {
struct clk *timer_clk; struct clk *timer_clk;
struct davinci_soc_info *soc_info = &davinci_soc_info; struct davinci_soc_info *soc_info = &davinci_soc_info;
@ -410,11 +410,6 @@ static void __init davinci_timer_init(void)
timer32_config(&timers[i]); timer32_config(&timers[i]);
} }
struct sys_timer davinci_timer = {
.init = davinci_timer_init,
};
/* reset board using watchdog timer */ /* reset board using watchdog timer */
void davinci_watchdog_reset(struct platform_device *pdev) void davinci_watchdog_reset(struct platform_device *pdev)
{ {

Просмотреть файл

@ -92,6 +92,6 @@ MACHINE_START(CM_A510, "Compulab CM-A510 Board")
.map_io = dove_map_io, .map_io = dove_map_io,
.init_early = dove_init_early, .init_early = dove_init_early,
.init_irq = dove_init_irq, .init_irq = dove_init_irq,
.timer = &dove_timer, .init_time = dove_timer_init,
.restart = dove_restart, .restart = dove_restart,
MACHINE_END MACHINE_END

Просмотреть файл

@ -8,35 +8,24 @@
* warranty of any kind, whether express or implied. * warranty of any kind, whether express or implied.
*/ */
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/clk-provider.h> #include <linux/clk-provider.h>
#include <linux/clk/mvebu.h> #include <linux/clk/mvebu.h>
#include <linux/ata_platform.h> #include <linux/dma-mapping.h>
#include <linux/gpio.h> #include <linux/init.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <asm/page.h> #include <linux/platform_data/dma-mv_xor.h>
#include <asm/setup.h> #include <linux/platform_data/usb-ehci-orion.h>
#include <asm/timex.h> #include <linux/platform_device.h>
#include <asm/hardware/cache-tauros2.h> #include <asm/hardware/cache-tauros2.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/mach/pci.h>
#include <mach/dove.h>
#include <mach/pm.h>
#include <mach/bridge-regs.h> #include <mach/bridge-regs.h>
#include <asm/mach/arch.h> #include <mach/pm.h>
#include <linux/irq.h>
#include <plat/time.h>
#include <linux/platform_data/usb-ehci-orion.h>
#include <linux/platform_data/dma-mv_xor.h>
#include <plat/irq.h>
#include <plat/common.h> #include <plat/common.h>
#include <plat/addr-map.h> #include <plat/irq.h>
#include <plat/time.h>
#include "common.h" #include "common.h"
/***************************************************************************** /*****************************************************************************
@ -242,17 +231,13 @@ static int __init dove_find_tclk(void)
return 166666667; return 166666667;
} }
static void __init dove_timer_init(void) void __init dove_timer_init(void)
{ {
dove_tclk = dove_find_tclk(); dove_tclk = dove_find_tclk();
orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR, orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
IRQ_DOVE_BRIDGE, dove_tclk); IRQ_DOVE_BRIDGE, dove_tclk);
} }
struct sys_timer dove_timer = {
.init = dove_timer_init,
};
/***************************************************************************** /*****************************************************************************
* Cryptographic Engines and Security Accelerator (CESA) * Cryptographic Engines and Security Accelerator (CESA)
****************************************************************************/ ****************************************************************************/
@ -454,7 +439,7 @@ DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)")
.map_io = dove_map_io, .map_io = dove_map_io,
.init_early = dove_init_early, .init_early = dove_init_early,
.init_irq = orion_dt_init_irq, .init_irq = orion_dt_init_irq,
.timer = &dove_timer, .init_time = dove_timer_init,
.init_machine = dove_dt_init, .init_machine = dove_dt_init,
.restart = dove_restart, .restart = dove_restart,
.dt_compat = dove_dt_board_compat, .dt_compat = dove_dt_board_compat,

Просмотреть файл

@ -14,7 +14,7 @@
struct mv643xx_eth_platform_data; struct mv643xx_eth_platform_data;
struct mv_sata_platform_data; struct mv_sata_platform_data;
extern struct sys_timer dove_timer; extern void dove_timer_init(void);
/* /*
* Basic Dove init functions used early by machine-setup. * Basic Dove init functions used early by machine-setup.

Просмотреть файл

@ -98,6 +98,6 @@ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")
.map_io = dove_map_io, .map_io = dove_map_io,
.init_early = dove_init_early, .init_early = dove_init_early,
.init_irq = dove_init_irq, .init_irq = dove_init_irq,
.timer = &dove_timer, .init_time = dove_timer_init,
.restart = dove_restart, .restart = dove_restart,
MACHINE_END MACHINE_END

Просмотреть файл

@ -34,4 +34,3 @@ static void flush(void)
* nothing to do * nothing to do
*/ */
#define arch_decomp_setup() #define arch_decomp_setup()
#define arch_decomp_wdog()

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше