[ARM] Make generic timer self initializing

We use newly introduced VMM_CLOCKSOURCE_INIT_DECLARE() and
VMM_CLOCKCHIP_INIT_DECLARE() macros for declaring init
functions of generic timer.

Now we don't need explictily initialize generic timer from
board specific code. In fact, we can totally remove the
arch_clockchip_init() and arch_clocksource_init() functions
for generic-v8 board.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] generic-v8: Fix GIC compatible string

We should be using "arm,cortex-a15-gic" as GIC compatible string
for Generic-v8 board instead of "arm,cortex-a9-gic" because GIC
with virtualization extension is only available for Cortex-A15
GIC or later GIC versions.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Make GIC self initializing

We use newly introduced VMM_HOST_IRQ_INIT_DECLARE() macro for
declaring init function of GIC driver.

Now we don't need to explictily initialize GIC from board specific
code. In fact, we can totally remove the arch_host_irq_init()
function for boards using GIC.

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] rtc: Fix compile error in rtc-s3c

Recent changes in linux/clk.h and drv/clk.h broke rtc-s3c compilation.

This patch fixes compilation for rtc-s3c.

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] clk: Don't need to provide dummy clocks for sp804

We had hacked realview_clk_init() to provide dummy clocks for
sp804 but it seems we can easily provide sp804 clocks using
device tree and common device tree based framework.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Make sp804 timer self initializing

We use newly introduced macros VMM_CLOCKSOURCE_INIT_DECLARE() and
VMM_CLOCKCHIP_INIT_DECLARE() to make sp804 timer code self initializing.

This means we don't need explictily initialize sp804 timer from board
specific code.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Make local timer self initializing

We use VMM_CLOCKCHIP_INIT_DECLARE() to make per-CPU local timer
clockchip self initializing

This means we don't need to explicitly initialize local timer
clockchip from board specific code.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] bcm2835: Make intc, timer, and pm driver self initializing

We use VMM_CLOCKSOURCE_INIT_DECLARE, VMM_CLOCKCHIP_INIT_DECLARE(),
and VMM_HOST_IRQ_INIT_DECLARE() to make timer and intc drivers
self initializing.

This helps us remove arch_clocksource_init(), arch_clockchip_init(),
and arch_host_irq_init() for bcm2835 SOC support.

Also, we start using common device tree based clocking framework
for bcm2835 SOC support.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Introduce common SMP IPI implementation

All ARM/ARM64 boards having SMP support were having excat same
GIC-based IPI implementation. To reduce code duplicacy, we move
this GIC-based IPI implementation to arch/arm/board/common.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] Move rtc, input, and fb frameworks to drivers

The prime purpose of keeping rtc, input, and fb device frameworks
in core code was a potential future change which will make these
framework implementation very virtualization (and/or Xvisor) centric.

Currently, we use vmm_wallclock to emulate rtc devices. In future,
we will have per-guest input event listeners and per-guest display
for keyboard, mouse, and frame-buffer emulation. This facts provide
enough motivation to move rtc, input, and fb device frameworks to
drivers.

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] mfd: Introduce sysreg driver for Realview boards

This patch moves the sysreg programming to mfd drivers for
ARM Ltd. Realview boards.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vmm_devtree: Add macros to iterate over child nodes and attributes

Iterating over child nodes or attributes of given node is a fairely
common operations hence this patch adds for-loop helper macros for
iterating over child nodes and attributes.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vmm_devtree: Add cpu-clear-addr attribute

We will be using cpu-clear-addr attribute for each host CPU nodes
for implementing generic SMP operations hence this patch adds
cpu-clear-addr to list of known attributes in vmm_devtree.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Introduce SMP operations common for all boards

The architecture SMP callbacks implemented by various boards
have lot of similarities. Further, we did not use any host CPU
related info passed to Xvisor via DTB.

This patch introduces common SMP operations framework for
all ARM boards. The patch also adds common implemenation of
SMP operations for SCU and Spin Table SMP booting methods.

Signed-off-by: Anup Patel <anup@brainfault.org>
Merge remote-tracking branch 'upstream/master' into A20