
This series adds the first step of bare support for the Intel Quark SoC support which can be validated on Intel Galileo board.
Intel Quark is a line of 32-bit x86 SoCs by Intel, designed for small size and low power consumption, and targeted at new markets including wearable devices. They are smaller and slower than Atom processors and consume less power. They lack support for SIMD instruction sets (such as MMX and SSE) and only support embedded operating systems. Quark powers the Intel Galileo developer microcontroller board. The CPU instruction set is the same as Pentium (P54C/i586) CPU.
Intel decided to completely publish Quark's hardware specification to software developers, which includes an SoC datasheet, a UEFI Firmware Writer's Guide, and a complete reference source code for the UEFI BIOS which is pre-flahsed on the Galileo board. As of today, the only BIOS for Galileo is the Intel one with UEFI inteface only. There is no CSM support yet in that BIOS, neither any 3rd party BIOS vendor provides support to Quark SoC.
Only one binary blob (exactly 8KiB) is needed which is rmu.bin for Remote Management Unit. Not like FSP, U-Boot will not call into the binary. The binary is needed by the Quark SoC itself.
Note there are two generation of Galileo boards, aka gen1 and gen2. Currently the development work is on gen2, but once we get it boot, we can easily add the gen1 board (old version).
With this patch series, the generated u-boot.rom could boot the Intel Galileo board up to fdt relocate, where U-Boot hangs because the DRAM is not initializaed yet. A follow up patch series will be sent soon to add support for Memory Reference Code (MRC).
Changes in v3: - Add several macros for message bus port and registers - Use lower case hex - New patch to define macros for pci configuration space access - Use macros from <asm/pci.h> and <asm/arch/quark.h> - Add simple help for ACPI PM1, PBLK and GEP0
Changes in v2: - Rebase to u-boot-86/master - Add msg_port_setup() and remove MCR_FILL - Add MSG_BYTE_ENABLE define - Wrap function declaraion with __ASSEMBLY__ - Replace upper case register names (EAX etc.) with lower case - Use some macros from <asm/arch/msg_port.h> and <asm/arch/quark.h> - Use machine-specific - Move vairous components' base addresses within Quark SoC to Kconfig - Use Arduino-certified
Bin Meng (7): x86: Add header files for Intel Quark SoC defines x86: quark: Add routines to access message bus registers x86: Define macros for pci configuration space access x86: quark: Add Cache-As-RAM initialization x86: Add basic Intel Quark processor support x86: Add basic Intel Galileo board support x86: Enable the Intel quark/galileo build
arch/x86/Kconfig | 17 ++++ arch/x86/cpu/Makefile | 1 + arch/x86/cpu/quark/Kconfig | 121 +++++++++++++++++++++++++++++ arch/x86/cpu/quark/Makefile | 8 ++ arch/x86/cpu/quark/car.S | 105 +++++++++++++++++++++++++ arch/x86/cpu/quark/dram.c | 39 ++++++++++ arch/x86/cpu/quark/msg_port.c | 77 ++++++++++++++++++ arch/x86/cpu/quark/pci.c | 70 +++++++++++++++++ arch/x86/cpu/quark/quark.c | 44 +++++++++++ arch/x86/dts/Makefile | 1 + arch/x86/dts/galileo.dts | 43 ++++++++++ arch/x86/include/asm/arch-quark/device.h | 28 +++++++ arch/x86/include/asm/arch-quark/gpio.h | 13 ++++ arch/x86/include/asm/arch-quark/msg_port.h | 106 +++++++++++++++++++++++++ arch/x86/include/asm/arch-quark/quark.h | 40 ++++++++++ arch/x86/include/asm/pci.h | 13 +++- arch/x86/lib/pci_type1.c | 7 +- board/intel/galileo/Kconfig | 21 +++++ board/intel/galileo/MAINTAINERS | 6 ++ board/intel/galileo/Makefile | 7 ++ board/intel/galileo/galileo.c | 19 +++++ board/intel/galileo/start.S | 9 +++ configs/galileo_defconfig | 6 ++ include/configs/galileo.h | 53 +++++++++++++ 24 files changed, 847 insertions(+), 7 deletions(-) create mode 100644 arch/x86/cpu/quark/Kconfig create mode 100644 arch/x86/cpu/quark/Makefile create mode 100644 arch/x86/cpu/quark/car.S create mode 100644 arch/x86/cpu/quark/dram.c create mode 100644 arch/x86/cpu/quark/msg_port.c create mode 100644 arch/x86/cpu/quark/pci.c create mode 100644 arch/x86/cpu/quark/quark.c create mode 100644 arch/x86/dts/galileo.dts create mode 100644 arch/x86/include/asm/arch-quark/device.h create mode 100644 arch/x86/include/asm/arch-quark/gpio.h create mode 100644 arch/x86/include/asm/arch-quark/msg_port.h create mode 100644 arch/x86/include/asm/arch-quark/quark.h create mode 100644 board/intel/galileo/Kconfig create mode 100644 board/intel/galileo/MAINTAINERS create mode 100644 board/intel/galileo/Makefile create mode 100644 board/intel/galileo/galileo.c create mode 100644 board/intel/galileo/start.S create mode 100644 configs/galileo_defconfig create mode 100644 include/configs/galileo.h