This initial port adds support of ARC HS Development Kit board with some
basic features such serial port, USB, SD/MMC and Ethernet.
Essentially we run Linux kernel on all 4 cores (i.e. utilize SMP) and
heavily use IO Coherency for speeding-up DMA-aware peripherals.
Note as opposed to other ARC boards we link Linux kernel to
0x9000_0000 intentionally because cores 1 and 3 configured with DCCM
situated at our more usual link base 0x8000_0000.
Signed-off-by: Eugeniy Paltsev <paltsev@xxxxxxxxxxxx>
Signed-off-by: Alexey Brodkin <abrodkin@xxxxxxxxxxxx>
Cc: Vineet Gupta <vgupta@xxxxxxxxxxxx>
Cc: Rob Herring <robh+dt@xxxxxxxxxx>
---
Changes v3 -> v4:
* Removed senseless "ranges" property from "memory" node in .dts
* Refined early-boot code:
- CREG_PAE should be set only once thus master does that in init_early()
- ICCM relocation should be done on each and every core that sports ICCM
so we leave it in init_per_cpu(). Even though init_per_cpu() gets called
on the master core pretty late still it is way much earlier than that
moment when it might affect us - as it only huts us when addresses in
0x7z-0x7fff_ffff range are used, i.e. virtual addresses that we don't
use during init. This also makes code much cleaner compared to
additional check in case of master etc.