xen/arm: Add support for the Odroid-XU board.
authorSuriyan Ramasami <suriyan.r@gmail.com>
Thu, 4 Sep 2014 22:57:23 +0000 (15:57 -0700)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 10 Sep 2014 13:38:21 +0000 (14:38 +0100)
commit0bf8ddecb4df674a9df976f349c98691b2560721
treeeac847e241685954919afede201cf04796c88488
parentc645b32ae1f4f4a0e9bd787cc7aab7e2a6e7593c
xen/arm: Add support for the Odroid-XU board.

The Odroid-XU from hardkernel is an Exynos 5410 based board.

This patch introduces a generic PLATFORM exynos5 which hopefully is
applicable to the majority of  exynos5 based SoCs. It currently has
only been tested on an exynos5410 based (OdroidXU) board and hence
that is the only board listed.

Previously only the Arndale board, based on an exynos5250 was
supported. It was the only exynos based platform that was supported
and it was called exynos5. It has now been renamed to exynos5250. The
Arndale currently is a separate platform mostly cause I do not have
one to test and for the most part the code path for that board is
preserved. To be specific it varies from the generic implementation
as follows:

1. exynos5250 based specific DT mapping for CHIPID and PWM region. I
   believe mainline kernel's DTS for the arndale has those mappings
   already in place.
2. exynos5250 based cpu up code. It appears that exynos5250 already
   has the secondary core powered up and in wfe and hence a
   cpu_up_send_sgi suffices. Here too, I believe that the generic
   code path might be acceptable.

Most of the code for the cpu bring up has been ported over from
mainline linux, and hence should be generic enough for future exynos
based SoCs. All reference to hardcoded memory locations have been
avoided. They are now gleaned from the device tree.

The existing SMP bringup code has been broken since 4557c2292854
"xen: arm: rewrite start of day page table and cpu bring up" which
moved the arndale CPU kick from secure world to non-secure world
without updating it to match the new environment.  Specifically the
sysram address remained hardcoded to the S sysram address and not the
NS sysram address, this is now correctly taken from DT. Secondly the
offset within the sysram where the start address is written is 0x1c
for NS bringup, rather than 0x0 as it is in S bringup.

Signed-off-by: Suriyan Ramasami <suriyan.r@gmail.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
[ ijc -- updated commit log as discussed on list, plus reformatted
         slightly.
         s/exynos5XXXX/exynos5XXX/ in one error message ]
xen/arch/arm/platforms/exynos5.c
xen/include/asm-arm/platforms/exynos5.h