[U-Boot] [PATCH v2 00/51] x86: Add support for samus
Simon Glass
sjg at chromium.org
Sat Mar 12 06:06:45 CET 2016
This series adds support for samus, the Chromebook Pixel 2015. Since it is
only the second board added that does not use an FSP, there is quite a bit
of refactoring involved to avoid code duplication.
Samus uses roughly the same binary blobs as link, except now there is one
more called the reference code binary. The only available binary for this
is a coreboot 'rmodule' extracted from flash. This is a simplified ELF
format so it fairly easy to load and use.
It is also possible to boot U-Boot from coreboot on samus. This works well
but for a delay for non-existent IDE on start-up. The standard build does
not work with binaries taken from flash, so it isn't easy to replicate
this - you'll just have to take my word for it. I am working on getting that
figured out - coreboot recently gained upstream support for loading U-Boot
as a payload, so it should be possible to get this working nicely before
long.
In any case much of the code comes from coreboot - individual files are
credited with their source.
Perhaps the main value of this series is the improved non-FSP support and
additions for broadwell, which samus uses. It should make it easier to add
support for future non-FSP platforms.
Changes in v2:
- Use a #define for the output flush command
- Adjust the code order slightly
- Simplify the code in serial_initialize()
- Use gd->arch.x86_mask to get the stepping value
- Rename microcode_intel.c to microcode.c
- Use capitals for header guard
- Use capitals for header guard
- Move cougarcanyon lpc_common.h include to this patch
- Use capitals for header guard
- Use capitals for header guard
- Rename sdram_common.c to mrc.c
- Rename sdram to mrc
- Use setio_32() instead of setio_le32(), etc.
- Add Kconfig help for the moved options
- Fix tab indentation
- Don't try to read microcode version on quark
- Use gd->arch.x86_device instead of reading the device ID again
- Rename subject to 'core' instead of 'code'
- Fix micrcode typo
- Don't try to update microcode on FSP platforms
- Add GPIO output definition for a1 and a6
- Use setio_32() instead of setio_le32(), etc.
- Fix 'PCB' typo (should be 'PCH')
- Use setio_32() instead of setio_le32(), etc.
- Use capitals for header guard
- Use capitals for header guard
- Use capitals for header guard
- Fix comment style
- Use capitals for header guard
- Rename sdram to mrc
- Use setio_32() instead of setio_le32(), etc.
- Fix 'configure' typo
- Correct naming of Intel platforms
Simon Glass (51):
dm: timer: Correct timer init ordering after relocation
arm: Add a 64-bit division routine to the private library
dhry: Correct dhrystone calculation for fast machines
syscon: Avoid returning a device on failure
input: i8042: Make sure the keyboard is enabled
x86: Allow use of serial soon after relocation
x86: cpu: Add functions to return the family and stepping
x86: Move cache-as-RAM code into a common location
x86: Move microcode code to a common location
x86: Create a common header for Intel register access
x86: Add the root-complex block to common intel registers
x86: Move common LPC code to its own place
x86: Move common CPU code to its own place
x86: Rename PORT_RESET to IO_PORT_RESET
x86: Move Intel Management Engine code to a common place
x86: ivybridge: Drop sandybridge_early_init()
x86: Move common PCH code into a common place
x86: Add common SDRAM-init code
x86: ivybridge: Convert to use the common SDRAM code
x86: dts: Drop memory SPD compatible string
x86: Add macros to clear and set I/O bits
x86: Allow I/O functions to use pointers
x86: Move common MRC Kconfig options to the common file
x86: Record the CPU details when starting each core
x86: ivybridge: Show microcode version for each core
x86: Update microcode for secondary CPUs
x86: link: Add pin configuration to the device tree
x86: Add an ICH6 pin configuration driver
x86: gpio: Allow the pinctrl driver to set up the pin config
x86: Drop all the old pin configuration code
x86: Add support for running Intel reference code
x86: dts: Update the pinctrl binding a little
x86: Add basic support for broadwell
x86: broadwell: Add a PCH driver
x86: broadwell: Add a pinctrl driver
x86: broadwell: Add a SATA driver
x86: broadwell: Add a northbridge driver
x86: broadwell: Add an LPC driver
x86: broadwell: Add reference code support
x86: broadwell: Add power-control support
x86: broadwell: Add support for SDRAM setup
x86: broadwell: Add a GPIO driver
x86: broadwell: Add support for high-speed I/O lane with ME
x86: Support a chained-boot development flow
x86: broadwell: Add video support
x86: Add a default address for reference code
x86: Use white on black for the console on chromebooks
x86: Update README for new developments
x86: Add a function to set the IOAPIC ID
x86: Fix a header nit in x86-chromebook.h
x86: Add support for the samus chromebook
Makefile | 14 +-
arch/arm/lib/Makefile | 3 +-
arch/arm/lib/_uldivmod.S | 245 +++++++
arch/x86/Kconfig | 73 ++
arch/x86/cpu/Makefile | 2 +
arch/x86/cpu/broadwell/Kconfig | 30 +
arch/x86/cpu/broadwell/Makefile | 17 +
arch/x86/cpu/broadwell/cpu.c | 761 ++++++++++++++++++++
arch/x86/cpu/broadwell/iobp.c | 144 ++++
arch/x86/cpu/broadwell/lpc.c | 77 ++
arch/x86/cpu/broadwell/me.c | 57 ++
arch/x86/cpu/broadwell/northbridge.c | 59 ++
arch/x86/cpu/broadwell/pch.c | 540 ++++++++++++++
arch/x86/cpu/broadwell/pinctrl_broadwell.c | 278 +++++++
arch/x86/cpu/broadwell/power_state.c | 89 +++
arch/x86/cpu/broadwell/refcode.c | 113 +++
arch/x86/cpu/broadwell/sata.c | 269 +++++++
arch/x86/cpu/broadwell/sdram.c | 307 ++++++++
arch/x86/cpu/cpu.c | 15 +-
arch/x86/cpu/intel_common/Makefile | 16 +
arch/x86/cpu/{ivybridge => intel_common}/car.S | 4 +-
arch/x86/cpu/intel_common/cpu.c | 111 +++
arch/x86/cpu/intel_common/lpc.c | 100 +++
.../cpu/{ivybridge => intel_common}/me_status.c | 20 +-
.../microcode_intel.c => intel_common/microcode.c} | 11 +-
arch/x86/cpu/intel_common/mrc.c | 271 +++++++
arch/x86/cpu/intel_common/pch_common.c | 25 +
.../{ivybridge => intel_common}/report_platform.c | 2 +-
arch/x86/cpu/ioapic.c | 16 +
arch/x86/cpu/ivybridge/Kconfig | 27 +-
arch/x86/cpu/ivybridge/Makefile | 4 -
arch/x86/cpu/ivybridge/bd82x6x.c | 17 +-
arch/x86/cpu/ivybridge/cpu.c | 86 +--
arch/x86/cpu/ivybridge/early_me.c | 31 +-
arch/x86/cpu/ivybridge/gma.c | 1 +
arch/x86/cpu/ivybridge/lpc.c | 77 +-
arch/x86/cpu/ivybridge/model_206ax.c | 3 +-
arch/x86/cpu/ivybridge/northbridge.c | 5 +-
arch/x86/cpu/ivybridge/sata.c | 47 +-
arch/x86/cpu/ivybridge/sdram.c | 400 +++--------
arch/x86/cpu/mp_init.c | 11 +-
arch/x86/cpu/start.S | 79 ++
arch/x86/dts/Makefile | 1 +
arch/x86/dts/chromebook_link.dts | 156 +++-
arch/x86/dts/chromebook_samus.dts | 628 ++++++++++++++++
arch/x86/include/asm/arch-broadwell/cpu.h | 48 ++
arch/x86/include/asm/arch-broadwell/gpio.h | 91 +++
arch/x86/include/asm/arch-broadwell/iomap.h | 53 ++
arch/x86/include/asm/arch-broadwell/lpc.h | 32 +
arch/x86/include/asm/arch-broadwell/me.h | 200 ++++++
arch/x86/include/asm/arch-broadwell/pch.h | 153 ++++
arch/x86/include/asm/arch-broadwell/pei_data.h | 177 +++++
arch/x86/include/asm/arch-broadwell/pm.h | 129 ++++
arch/x86/include/asm/arch-broadwell/rcb.h | 58 ++
arch/x86/include/asm/arch-broadwell/spi.h | 87 +++
arch/x86/include/asm/arch-ivybridge/me.h | 333 +--------
arch/x86/include/asm/arch-ivybridge/pch.h | 62 --
arch/x86/include/asm/arch-ivybridge/sandybridge.h | 7 -
arch/x86/include/asm/cpu.h | 27 +
arch/x86/include/asm/cpu_common.h | 35 +
arch/x86/include/asm/global_data.h | 24 +
arch/x86/include/asm/gpio.h | 141 ----
arch/x86/include/asm/intel_regs.h | 28 +
arch/x86/include/asm/io.h | 34 +-
arch/x86/include/asm/ioapic.h | 2 +
arch/x86/include/asm/lpc_common.h | 59 ++
arch/x86/include/asm/me_common.h | 372 ++++++++++
.../include/asm/{arch-ivybridge => }/microcode.h | 12 +
arch/x86/include/asm/mrc_common.h | 55 ++
arch/x86/include/asm/pch_common.h | 56 ++
arch/x86/include/asm/processor.h | 2 +-
arch/x86/include/asm/report_platform.h | 19 +
arch/x86/lib/Makefile | 1 +
arch/x86/lib/fsp/fsp_car.S | 2 +
arch/x86/lib/pinctrl_ich6.c | 216 ++++++
board/coreboot/coreboot/coreboot.c | 5 -
board/efi/efi-x86/efi.c | 5 -
board/google/Kconfig | 13 +
board/google/chromebook_link/link.c | 138 ----
board/google/chromebook_samus/Kconfig | 40 ++
board/google/chromebook_samus/MAINTAINERS | 6 +
board/google/chromebook_samus/Makefile | 7 +
board/google/chromebook_samus/samus.c | 18 +
board/google/chromebox_panther/panther.c | 4 -
board/intel/bayleybay/bayleybay.c | 5 -
board/intel/cougarcanyon2/cougarcanyon2.c | 6 +-
board/intel/crownbay/crownbay.c | 5 -
board/intel/galileo/galileo.c | 5 -
board/intel/minnowmax/minnowmax.c | 8 -
common/board_f.c | 7 +
common/board_r.c | 4 +-
configs/bayleybay_defconfig | 2 +
configs/chromebook_samus_defconfig | 51 ++
configs/cougarcanyon2_defconfig | 2 +
configs/crownbay_defconfig | 2 +
configs/galileo_defconfig | 2 +
configs/minnowmax_defconfig | 6 +-
doc/README.x86 | 97 ++-
.../gpio/intel,x86-broadwell-pinctrl.txt | 208 ++++++
.../gpio/intel,x86-pinctrl.txt | 22 +-
drivers/core/syscon-uclass.c | 1 +
drivers/gpio/Kconfig | 9 +
drivers/gpio/Makefile | 1 +
drivers/gpio/intel_broadwell_gpio.c | 198 +++++
drivers/gpio/intel_ich6_gpio.c | 191 +----
drivers/input/i8042.c | 4 +
drivers/serial/serial-uclass.c | 2 +-
drivers/video/Kconfig | 14 +-
drivers/video/Makefile | 2 +
drivers/video/broadwell_igd.c | 797 +++++++++++++++++++++
drivers/video/i915_reg.h | 362 ++++++++++
include/configs/chromebook_samus.h | 29 +
include/configs/x86-chromebook.h | 8 +-
include/dt-bindings/gpio/x86-gpio.h | 12 +
include/fdtdec.h | 2 -
include/i8042.h | 1 +
lib/dhry/cmd_dhry.c | 8 +-
lib/fdtdec.c | 2 -
118 files changed, 8550 insertions(+), 1518 deletions(-)
create mode 100644 arch/arm/lib/_uldivmod.S
create mode 100644 arch/x86/cpu/broadwell/Kconfig
create mode 100644 arch/x86/cpu/broadwell/Makefile
create mode 100644 arch/x86/cpu/broadwell/cpu.c
create mode 100644 arch/x86/cpu/broadwell/iobp.c
create mode 100644 arch/x86/cpu/broadwell/lpc.c
create mode 100644 arch/x86/cpu/broadwell/me.c
create mode 100644 arch/x86/cpu/broadwell/northbridge.c
create mode 100644 arch/x86/cpu/broadwell/pch.c
create mode 100644 arch/x86/cpu/broadwell/pinctrl_broadwell.c
create mode 100644 arch/x86/cpu/broadwell/power_state.c
create mode 100644 arch/x86/cpu/broadwell/refcode.c
create mode 100644 arch/x86/cpu/broadwell/sata.c
create mode 100644 arch/x86/cpu/broadwell/sdram.c
create mode 100644 arch/x86/cpu/intel_common/Makefile
rename arch/x86/cpu/{ivybridge => intel_common}/car.S (98%)
create mode 100644 arch/x86/cpu/intel_common/cpu.c
create mode 100644 arch/x86/cpu/intel_common/lpc.c
rename arch/x86/cpu/{ivybridge => intel_common}/me_status.c (93%)
rename arch/x86/cpu/{ivybridge/microcode_intel.c => intel_common/microcode.c} (96%)
create mode 100644 arch/x86/cpu/intel_common/mrc.c
create mode 100644 arch/x86/cpu/intel_common/pch_common.c
rename arch/x86/cpu/{ivybridge => intel_common}/report_platform.c (98%)
create mode 100644 arch/x86/dts/chromebook_samus.dts
create mode 100644 arch/x86/include/asm/arch-broadwell/cpu.h
create mode 100644 arch/x86/include/asm/arch-broadwell/gpio.h
create mode 100644 arch/x86/include/asm/arch-broadwell/iomap.h
create mode 100644 arch/x86/include/asm/arch-broadwell/lpc.h
create mode 100644 arch/x86/include/asm/arch-broadwell/me.h
create mode 100644 arch/x86/include/asm/arch-broadwell/pch.h
create mode 100644 arch/x86/include/asm/arch-broadwell/pei_data.h
create mode 100644 arch/x86/include/asm/arch-broadwell/pm.h
create mode 100644 arch/x86/include/asm/arch-broadwell/rcb.h
create mode 100644 arch/x86/include/asm/arch-broadwell/spi.h
create mode 100644 arch/x86/include/asm/cpu_common.h
create mode 100644 arch/x86/include/asm/intel_regs.h
create mode 100644 arch/x86/include/asm/lpc_common.h
create mode 100644 arch/x86/include/asm/me_common.h
rename arch/x86/include/asm/{arch-ivybridge => }/microcode.h (63%)
create mode 100644 arch/x86/include/asm/mrc_common.h
create mode 100644 arch/x86/include/asm/pch_common.h
create mode 100644 arch/x86/include/asm/report_platform.h
create mode 100644 arch/x86/lib/pinctrl_ich6.c
create mode 100644 board/google/chromebook_samus/Kconfig
create mode 100644 board/google/chromebook_samus/MAINTAINERS
create mode 100644 board/google/chromebook_samus/Makefile
create mode 100644 board/google/chromebook_samus/samus.c
create mode 100644 configs/chromebook_samus_defconfig
create mode 100644 doc/device-tree-bindings/gpio/intel,x86-broadwell-pinctrl.txt
create mode 100644 drivers/gpio/intel_broadwell_gpio.c
create mode 100644 drivers/video/broadwell_igd.c
create mode 100644 drivers/video/i915_reg.h
create mode 100644 include/configs/chromebook_samus.h
--
2.7.0.rc3.207.g0ac5344
More information about the U-Boot
mailing list