[U-Boot] [RFC PATCH v3 0/7] x86: New Intel Quark SoC support

Bin Meng bmeng.cn at gmail.com
Mon Feb 2 15:35:22 CET 2015


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

-- 
1.8.2.1



More information about the U-Boot mailing list