Sooner or later, some board was going to need extra FW_CONFIG bits for
a field that was already in production, so this patch adds support for
adding extra (unused) bits to a field.
The extra are appended via a syntax like:
`field FIELD_NAME START0 END0 | START1 END1 | START2 END2 ...`
and the suffixed bits are all treated as if they are contiguous when
defining option values.
BUG=b:185190978
TEST=Modified volteer fw_config to the following:
field AUDIO 8 10 | 29 29 | 31 31
option NONE 0
option MAX98357_ALC5682I_I2S 1
option MAX98373_ALC5682I_I2S 2
option MAX98373_ALC5682_SNDW 3
option MAX98373_ALC5682I_I2S_UP4 4
option MAX98360_ALC5682I_I2S 5
option RT1011_ALC5682I_I2S 6
option AUDIO_FOO 7
option AUDIO_BAR 8
option AUDIO_QUUX 9
option AUDIO_BLAH1 10
option AUDIO_BLAH2 15
option AUDIO_BLAH3 16
option AUDIO_BLAH4 31
end
which yielded (in static_fw_config.h):
FW_CONFIG_FIELD_AUDIO_MASK 0xa0000700
FW_CONFIG_FIELD_AUDIO_OPTION_NONE_VALUE 0x0
FW_CONFIG_FIELD_AUDIO_OPTION_MAX98357_ALC5682I_I2S_VALUE 0x100
FW_CONFIG_FIELD_AUDIO_OPTION_MAX98373_ALC5682I_I2S_VALUE 0x200
FW_CONFIG_FIELD_AUDIO_OPTION_MAX98373_ALC5682_SNDW_VALUE 0x300
FW_CONFIG_FIELD_AUDIO_OPTION_MAX98373_ALC5682I_I2S_UP4_VALUE 0x400
FW_CONFIG_FIELD_AUDIO_OPTION_MAX98360_ALC5682I_I2S_VALUE 0x500
FW_CONFIG_FIELD_AUDIO_OPTION_RT1011_ALC5682I_I2S_VALUE 0x600
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_FOO_VALUE 0x700
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BAR_VALUE 0x20000000
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_QUUX_VALUE 0x20000100
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BLAH1_VALUE 0x20000200
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BLAH2_VALUE 0x20000700
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BLAH3_VALUE 0x80000000
FW_CONFIG_FIELD_AUDIO_OPTION_AUDIO_BLAH4_VALUE 0xa0000700
Change-Id: I5ed76706347ee9642198efc77139abdc3af1b8a6
Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52747
Reviewed-by: Duncan Laurie <duncan@iceblink.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
- abuild - coreboot autobuild script builds coreboot images for all
available targets.
bash - acpi - Walk through all ACPI tables with their addresses.
bash - amdfwtool - Create AMD Firmware combination
C - amdtools - A set of tools to compare extended) K8 memory
settings.
Perl - apcb - AMD PSP Control Block tools
- apcb_edit.py - This tool allows patching an existing APCB
binary with specific SPDs and GPIO selection pins.
Python3
- apcb_edit.py - This tool allows patching an existing APCB
binary with specific SPDs and GPIO selection pins.
- archive - Concatenate files and create an archive
C - autoport - Automated porting coreboot to Sandy Bridge/Ivy Bridge
platforms
Go - bincfg - Compiler/Decompiler for data blobs with specs
LexYacc - board_status - Tools to collect logs and upload them to the board
status repository
BashGo - bucts - A tool to manipulate the BUC.TS bit on Intel targets.
C - cavium - Devicetree_convert Tool to convert a DTB to a static C
file
Python - cbfstool
- cbfstool - For manipulating CBFS file
C - fmaptool - Converts plaintext fmd files into fmap blobs
C - rmodtool - Creates rmodules
C - ifwitool - For manipulating IFWI
C
- cbfstool - For manipulating CBFS file
- cbmem - CBMEM parser to read e.g. timestamps and console log
C - chromeos - These scripts can be used to access Chrome OS
resources, for example to extract System Agent reference code and other
blobs (e.g. mrc.bin, refcode, VGA option roms) from a Chrome OS
recovery image.
C - crossgcc - A cross toolchain builder for -elf toolchains (ie. no libc support)
- docker - Dockerfiles for coreboot-sdk, coreboot-jenkins-node, coreboot.org-status and docs.coreboot.org
- dtd_parser - DTD structure parser
Python2 - ectool - Dumps the RAM of a laptop's Embedded/Environmental
Controller (EC).
C - exynos - Computes and fills Exynos ROM checksum (for BL1 or BL2).
Python3 - find_usbdebug - Help find USB debug ports
- futility - Firmware utility for signing ChromeOS images
Make - fuzz-tests - Create test cases that crash the jpeg code.
C - genbuild_h - Generate build system definitions
Shell - gitconfig - Initialize git repository submodules install git
hooks
Bash - ifdtool - Extract and dump Intel Firmware Descriptor information
C - intelmetool - Dump interesting things about Management Engine
even if hidden
C - intelp2m - Intel Pad to Macro (intelp2m) converter 'Go'
- inteltool - Provides information about the Intel CPU/chipset
hardware configuration (register contents, MSRs, etc).
C - intelvbttool - Parse VBT from VGA BIOS
C - ipqheader
- createxbl.py - Concatentates XBL segments into one ELF
image
Python - ipqheader.py - Returns a packed MBN header image with the
specified base and size
Python - mbncat.py - Generate ipq8064 uber SBL
Python - mbn_tools.py - Contains all MBN Utilities for image
generation
Python
- createxbl.py - Concatentates XBL segments into one ELF
image
- kbc1126 - Tools used to dump the two blobs from the factory
firmware of many HP laptops with 8051-based SMSC KBC1098/KBC1126
embedded controller and insert them to the firmware image.
C - kconfig - Build system
Make - lint - Source linter and linting rules
Shell - mainboard - mainboard specific scripts
- google - Directory for google mainboard specific scripts
- marvell - Add U-Boot boot loader for Marvell ARMADA38X
C - me_cleaner - Tool for
partial deblobbing of Intel ME/TXE firmware images
Python - mma - Memory Margin Analysis automation tests
Bash - msrtool - Dumps chipset-specific MSR registers.
C - mtkheader - Generate MediaTek bootload header.
Python3 - nvidia - nvidia blob parsers
- nvramtool - Reads and writes coreboot parameters and displaying
information from the coreboot table in CMOS/NVRAM.
C - pgtblgen - Generates page tables based on fixed physical address.
C - pmh7tool - Dumps, reads and writes PMH7 registers on Lenovo
ThinkPads. PMH7 is used for switching on and off the power of some
devices on the board such as dGPU.
C - post - Userspace utility that can be used to test POST cards.
C - qemu - Makefile & comprehensive default config for QEMU Q35 emulation
- qualcomm - CMM script to debug Qualcomm coreboot environments.
CMM - release - Generate coreboot release
Bash - riscv
- make-spike-elf.sh - Converts a flat file into an ELF, that
can be passed to SPIKE, the RISC-V reference emulator.
Bash - sifive-gpt.py - Wraps the bootblock in a GPT partition for
SiFive's bootrom.
Python3
- make-spike-elf.sh - Converts a flat file into an ELF, that
can be passed to SPIKE, the RISC-V reference emulator.
- rockchip - Generate Rockchip idblock bootloader.
Python3 - sconfig - coreboot device tree compiler
LexYacc - scripts
- config - Manipulate options in a .config file from the
command line
Bash - cross-repo-cherrypick - Pull in patches from another tree
from a gerrit repository.
Shell - decode_spd.sh - Decodes Serial Presence Detect (SPD) files into various human readable formats.
- dts-to-fmd.sh -Converts a depthcharge fmap.dts into an
fmaptool compatible .fmd format
Bash - find-unused-kconfig-symbols.sh - Points out Kconfig
variables that may be unused. There are some false positives, but it
serves as a starting point
Shell - gerrit-rebase - Applies all commits that from-branch has
over to-branch, based on a common ancestor and gerrit meta-data
Bash - get_maintainer.pl - Print selected MAINTAINERS information
for the files modified in a patch or for a file
Perl - maintainers.go - Build subsystem Maintainers
Go - no-fsf-addresses.sh - Removes various FSF addresses from
license headers
Shell - parse-maintainers.pl - Script to alphabetize MAINTAINERS
file
Perl - ucode_h_to_bin.sh - Microcode conversion tool
Bash - update_submodules - Check all submodules for updates
Bash
- config - Manipulate options in a .config file from the
command line
- showdevicetree - Compile and dump the device tree
C - spdtool - Dumps SPD ROMs from a given blob to separate files
using known patterns and reserved bits. Useful for analysing firmware
that holds SPDs on boards that have soldered down DRAM.
python - spd_tools - Tools for generating SPD files for DDR4 memory used
in platforms with memory down configuration.
- gen_spd.go - Generates de-duplicated SPD files using a
global memory part list provided by the mainboard in JSON format.
Go - gen_part_id.go - Allocates DRAM strap IDs for different
DDR4 memory parts used by the board.
Go
- gen_spd.go - Generates de-duplicated SPD files using a
global memory part list provided by the mainboard in JSON format.
- spkmodem_recv - Decode spkmodem signals
C - superiotool - A user-space utility to detect Super I/O of a
mainboard and provide detailed information about the register contents
of the Super I/O.
C - supermicro - Tools for supermicro platforms
- smcbiosinfo - Generates SMC biosinfo for BMC BIOS updates
C
- smcbiosinfo - Generates SMC biosinfo for BMC BIOS updates
- testing - coreboot test targets
Make - uio_usbdebug - Debug coreboot's usbdebug driver inside a running
operating system (only Linux at this time).
C - util_readme - Creates README.md of description files in
./utilsubdirectoriesBash - vboot_list - Tools to generate a list of vboot enabled devices to
the documentation
Bash - vgabios - emulated vga driver for qemu
C - x86 - Generates 32-bit PAE page tables based on a CSV input file.
Go - xcompile - Cross compile setup
Bash