This series supports running U-Boot as a payload on sc7180 Trogdor Chromebooks like Lazor or Wormdingler. This is a jumble of different patches to get to the final goal of booting a Linux distro from the eMMC on Lazor. I'm able to boot Fedora Workstation 41 from a USB stick on my Lazor.
I moved the reviewed patch to the start. After that one line fix there's a few patches to add support for the particular SoC used on Trogdor devices, sc7180. The next set of patches move the coreboot logic out of arch/x86/ into lib/ to find the coreboot tables on ARM and stash them in global data. Then I have a handful of patches to let the coreboot commands and utilities parse and populate various things like pstore and firmware details into the DTB with the proper data from the coreboot tables. Finally, I add the calls to coreboot dram parsing code in the snapdragon board so that if coreboot tables exist we get the memory info from coreboot instead of from an earlier stage DTB. I tested the SPI driver with the crosec command. The cros bootflow method almost works, but it seems like chromeos userspace blows up spectacularly likely because crossystem can't figure out what board it is running on. I don't really care too much about booting chromeos userspace here so I'm ignoring that problem. I haven't gotten around to working on the display part yet. I want to do that in the next couple weeks. Do I need to add a board/google/trogdor directory? If I don't get the display working then I'll have to figure out how to script the loading process somehow so that it can boot from USB/MMC. TODO: * Get display working * Implement FIT FDT picking similar to depthcharge based on coreboot tables indicating the SKU and board id Changes from v2 https://lore.kernel.org/r/20250226221607.1283592-1-swb...@chromium.org * Check SPI proto in probe * Handle pins differently in pinctrl driver * Pick up tags * Rebase to ToT * Update pinctrl driver for new changes in last few months * Add some more gates to clk driver to handle missing clk warnings * New patch to locate coreboot tables early to fix memory parsing logic Changes from v1 https://lore.kernel.org/r/20250220205900.3127680-1-swb...@chromium.org * Add Kconfig file in lib/coreboot/ to hold the coreboot config stuff similar to EFI * Couple new patches for ximg to support extracting the FDT from chromeos kernel partitions * Move the timestamp file out of arch/x86 as well in a different patch Stephen Boyd (17): bootstd: cros: Return negative error code clk: qcom: Add driver for sc7180 clk/stub: add sc7180-rpmh clock pinctrl: qcom: Add driver for sc7180 spi: Add Qualcomm GENI SPI driver coreboot: Move coreboot logic out of x86 to a generic place coreboot: Locate table earlier than arch_cpu_init() arm: Support running U-Boot as a coreboot payload on ARM64 cmd/cbsysinfo: Skip the CMOS 'option_table' when not present cmd/cbsysinfo: Allow on ARM as well coreboot: Parse sku_id/fw_config from coreboot tables pstore: Add pstore address from coreboot tables coreboot: Add /firmware/coreboot node to DT coreboot: Move timestamp parsing to generic place mach-snapdragon: Support booting as a coreboot payload cmd: ximg: Support LZO compressed images cmd: ximg: Support LZ4 compressed images arch/arm/cpu/armv8/Makefile | 1 + arch/arm/cpu/armv8/coreboot/Makefile | 4 + arch/arm/cpu/armv8/coreboot/cpu.c | 22 + arch/arm/include/asm/global_data.h | 3 + arch/arm/mach-snapdragon/board.c | 23 + arch/x86/Kconfig | 22 - arch/x86/cpu/coreboot/Kconfig | 33 -- arch/x86/cpu/coreboot/Makefile | 1 - arch/x86/cpu/coreboot/coreboot.c | 16 +- arch/x86/cpu/coreboot/sdram.c | 78 +-- arch/x86/cpu/cpu.c | 15 +- arch/x86/cpu/i386/cpu.c | 2 +- arch/x86/lib/bootm.c | 5 +- arch/x86/lib/coreboot/Makefile | 1 - arch/x86/lib/coreboot/cb_support.c | 2 +- arch/x86/lib/coreboot_table.c | 2 +- arch/x86/lib/tables.c | 2 +- arch/x86/lib/zimage.c | 3 - board/coreboot/coreboot/coreboot.c | 2 +- board/coreboot/coreboot/sysinfo.c | 2 +- board/google/chromebook_coral/coral.c | 2 +- boot/Kconfig | 1 + boot/bootmeth_cros.c | 2 +- boot/expo_build_cb.c | 2 +- boot/image-fdt.c | 4 + cmd/Kconfig | 4 +- cmd/Makefile | 1 + cmd/{x86 => }/cbsysinfo.c | 6 +- cmd/pstore.c | 44 +- cmd/version.c | 2 +- cmd/x86/Makefile | 1 - cmd/x86/cbcmos.c | 2 +- cmd/ximg.c | 28 + common/board_f.c | 4 + drivers/clk/clk-stub.c | 1 + drivers/clk/qcom/Kconfig | 8 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/clock-sc7180.c | 153 +++++ drivers/misc/cbmem_console.c | 2 +- drivers/pinctrl/qcom/Kconfig | 8 + drivers/pinctrl/qcom/Makefile | 1 + drivers/pinctrl/qcom/pinctrl-sc7180.c | 131 +++++ drivers/serial/serial_coreboot.c | 2 +- drivers/spi/Kconfig | 10 + drivers/spi/Makefile | 1 + drivers/spi/spi-geni-qcom.c | 545 ++++++++++++++++++ drivers/video/coreboot.c | 2 +- .../x86/include/asm => include}/cb_sysinfo.h | 47 +- .../include/asm => include}/coreboot_tables.h | 11 + .../coreboot_timestamp.h | 9 +- lib/Makefile | 2 + lib/coreboot/Kconfig | 55 ++ {arch/x86/cpu => lib}/coreboot/Makefile | 9 +- {arch/x86/lib => lib}/coreboot/cb_sysinfo.c | 174 +++++- {arch/x86/cpu => lib}/coreboot/sdram.c | 15 +- {arch/x86/cpu => lib}/coreboot/timestamp.c | 15 +- 56 files changed, 1311 insertions(+), 233 deletions(-) create mode 100644 arch/arm/cpu/armv8/coreboot/Makefile create mode 100644 arch/arm/cpu/armv8/coreboot/cpu.c delete mode 100644 arch/x86/cpu/coreboot/Kconfig rename cmd/{x86 => }/cbsysinfo.c (99%) create mode 100644 drivers/clk/qcom/clock-sc7180.c create mode 100644 drivers/pinctrl/qcom/pinctrl-sc7180.c create mode 100644 drivers/spi/spi-geni-qcom.c rename {arch/x86/include/asm => include}/cb_sysinfo.h (88%) rename {arch/x86/include/asm => include}/coreboot_tables.h (98%) rename arch/x86/include/asm/arch-coreboot/timestamp.h => include/coreboot_timestamp.h (63%) create mode 100644 lib/coreboot/Kconfig copy {arch/x86/cpu => lib}/coreboot/Makefile (75%) rename {arch/x86/lib => lib}/coreboot/cb_sysinfo.c (72%) copy {arch/x86/cpu => lib}/coreboot/sdram.c (87%) rename {arch/x86/cpu => lib}/coreboot/timestamp.c (83%) base-commit: 9d3f1ebaf8751f0287b5d02158cc706435f8fb19 -- Sent by a computer, using git, on the internet