[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