
Currently U-Boot works great on Intel Galileo board, but it still has some issues when booting a Linux kernel. The issues are mainly with Isolated Memory Region (IMR) and thermal sensor support in the Linux kernel for Intel Quark SoC. For example, kernel just hangs after kernel IMR driver is probed.
It turns out U-Boot still misses some key register programming. Add those register initializtion so that Linux kernel can boot succesfully.
Tested on Intel Galileo board, with an AHCI Mini-PCIe card with an SSD attached (to test PCI IRQ behind the root port), as well as a micro-SD card, a USB flash disk and ethernet under Linux.
Note the mainline Linux designware Ethernet driver uses an API dmi_get_system_info() to determine the PHY address. Since U-Boot currently does not support the DMI, to test the Ethernet under Linux we need patch the kernel driver, but in the long term, we should add DMI support in U-Boot. Add a TODO in README.x86 for now.
Bin Meng (8): x86: galileo: Enable random mac address for Quark x86: quark: Add clrbits, setbits, clrsetbits macros for message port access x86: quark: Convert to use clrbits, setbits, clrsetbits macros x86: quark: Lock HMBOUND register before jumping to kernel x86: quark: Initialize thermal sensor properly x86: galileo: Add PCIe root port IRQ routing x86: doc: Document some porting hints about Intel Quark x86: doc: Add DMI to the TODO list
arch/x86/cpu/quark/quark.c | 115 ++++++++++++++++------------- arch/x86/dts/galileo.dts | 12 +++ arch/x86/include/asm/arch-quark/msg_port.h | 39 ++++++++++ arch/x86/include/asm/arch-quark/quark.h | 15 ++++ configs/galileo_defconfig | 1 + doc/README.x86 | 25 +++++++ 6 files changed, 156 insertions(+), 51 deletions(-)