Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
761092446e |
@@ -4,7 +4,6 @@
|
|||||||
# Ignore aspects we don't follow here.
|
# Ignore aspects we don't follow here.
|
||||||
--ignore C99_COMMENTS
|
--ignore C99_COMMENTS
|
||||||
--ignore GLOBAL_INITIALISERS
|
--ignore GLOBAL_INITIALISERS
|
||||||
--ignore COMPARISON_TO_NULL
|
|
||||||
--ignore INITIALISED_STATIC
|
--ignore INITIALISED_STATIC
|
||||||
--ignore LINE_SPACING
|
--ignore LINE_SPACING
|
||||||
--ignore NEW_TYPEDEFS
|
--ignore NEW_TYPEDEFS
|
||||||
|
1
.gitignore
vendored
@@ -33,7 +33,6 @@ tags
|
|||||||
.clang_complete
|
.clang_complete
|
||||||
.cache
|
.cache
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# Cross-compile toolkits
|
# Cross-compile toolkits
|
||||||
xgcc/
|
xgcc/
|
||||||
|
4
.gitmodules
vendored
@@ -61,7 +61,3 @@
|
|||||||
path = 3rdparty/stm
|
path = 3rdparty/stm
|
||||||
url = ../STM
|
url = ../STM
|
||||||
branch = stmpe
|
branch = stmpe
|
||||||
[submodule "util/goswid"]
|
|
||||||
path = util/goswid
|
|
||||||
url = ../goswid
|
|
||||||
branch = trunk
|
|
||||||
|
2
3rdparty/amd_blobs
vendored
2
3rdparty/arm-trusted-firmware
vendored
2
3rdparty/blobs
vendored
2
3rdparty/fsp
vendored
2
3rdparty/opensbi
vendored
2
3rdparty/vboot
vendored
1
AUTHORS
@@ -108,7 +108,6 @@ Jonas 'Sortie' Termansen
|
|||||||
Jonathan A. Kollasch
|
Jonathan A. Kollasch
|
||||||
Jonathan Neuschäfer
|
Jonathan Neuschäfer
|
||||||
Jordan Crouse
|
Jordan Crouse
|
||||||
Jörg Mische
|
|
||||||
Joseph Smith
|
Joseph Smith
|
||||||
Keith Hui
|
Keith Hui
|
||||||
Keith Packard
|
Keith Packard
|
||||||
|
@@ -1,4 +1,82 @@
|
|||||||
# Driver Devicetree Entries
|
# Adding new devices to a device tree
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
ACPI exposes a platform-independent interface for operating systems to perform
|
||||||
|
power management and other platform-level functions. Some operating systems
|
||||||
|
also use ACPI to enumerate devices that are not immediately discoverable, such
|
||||||
|
as those behind I2C or SPI buses (in contrast to PCI). This document discusses
|
||||||
|
the way that coreboot uses the concept of a "device tree" to generate ACPI
|
||||||
|
tables for usage by the operating system.
|
||||||
|
|
||||||
|
## Devicetree and overridetree (if applicable)
|
||||||
|
|
||||||
|
For mainboards that are organized around a "reference board" or "baseboard"
|
||||||
|
model (see ``src/mainboard/google/octopus`` or ``hatch`` for examples), there is
|
||||||
|
typically a devicetree.cb file that all boards share, and any differences for a
|
||||||
|
specific board ("variant") are captured in the overridetree.cb file. Any
|
||||||
|
settings changed in the overridetree take precedence over those in the main
|
||||||
|
devicetree. Note, not all mainboards will have the devicetree/overridetree
|
||||||
|
distinction, and may only have a devicetree.cb file. Or you can always just
|
||||||
|
write the ASL (ACPI Source Language) code yourself.
|
||||||
|
|
||||||
|
### Naming and referencing devices
|
||||||
|
|
||||||
|
When declaring a device, it can optionally be given an alias that can be
|
||||||
|
referred to elsewhere. This is particularly useful to declare a device in one
|
||||||
|
device tree while allowing its configuration to be more easily changed in an
|
||||||
|
overlay. For instance, the AMD Picasso SoC definition
|
||||||
|
(`soc/amd/picasso/chipset.cb`) declares an IOMMU on a PCI bus that is disabled
|
||||||
|
by default:
|
||||||
|
|
||||||
|
```
|
||||||
|
chip soc/amd/picasso
|
||||||
|
device domain 0 on
|
||||||
|
...
|
||||||
|
device pci 00.2 alias iommu off end
|
||||||
|
...
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
A device based on this SoC can override the configuration for the IOMMU without
|
||||||
|
duplicating addresses, as in
|
||||||
|
`mainboard/google/zork/variants/baseboard/devicetree_trembyle.cb`:
|
||||||
|
|
||||||
|
```
|
||||||
|
chip soc/amd/picasso
|
||||||
|
device domain 0
|
||||||
|
...
|
||||||
|
device ref iommu on end
|
||||||
|
...
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example the override simply enables the IOMMU, but it could also
|
||||||
|
set additional properties (or even add child devices) inside the IOMMU `device`
|
||||||
|
block.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
It is important to note that devices that use `device ref` syntax to override
|
||||||
|
previous definitions of a device by alias must be placed at **exactly the same
|
||||||
|
location in the device tree** as the original declaration. If not, this will
|
||||||
|
actually create another device rather than overriding the properties of the
|
||||||
|
existing one. For instance, if the above snippet from `devicetree_trembyle.cb`
|
||||||
|
were written as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
chip soc/amd/picasso
|
||||||
|
# NOTE: not inside domain 0!
|
||||||
|
device ref iommu on end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Then this would leave the SoC's IOMMU disabled, and instead create a new device
|
||||||
|
with no properties as a direct child of the SoC.
|
||||||
|
|
||||||
|
## Device drivers
|
||||||
|
|
||||||
Let's take a look at an example entry from
|
Let's take a look at an example entry from
|
||||||
``src/mainboard/google/hatch/variants/hatch/overridetree.cb``:
|
``src/mainboard/google/hatch/variants/hatch/overridetree.cb``:
|
||||||
@@ -9,7 +87,6 @@ device pci 15.0 on
|
|||||||
register "hid" = ""ELAN0000""
|
register "hid" = ""ELAN0000""
|
||||||
register "desc" = ""ELAN Touchpad""
|
register "desc" = ""ELAN Touchpad""
|
||||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
||||||
register "detect" = "1"
|
|
||||||
register "wake" = "GPE0_DW0_21"
|
register "wake" = "GPE0_DW0_21"
|
||||||
device i2c 15 on end
|
device i2c 15 on end
|
||||||
end
|
end
|
||||||
@@ -141,31 +218,6 @@ find the names in your SoC's header file. The ACPI_* macros are defined in
|
|||||||
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
||||||
This is often done in a mainboard-specific file named ``gpio.c``.
|
This is often done in a mainboard-specific file named ``gpio.c``.
|
||||||
|
|
||||||
### detect
|
|
||||||
|
|
||||||
The next register is:
|
|
||||||
|
|
||||||
```
|
|
||||||
register "detect" = "1"
|
|
||||||
```
|
|
||||||
|
|
||||||
This flag tells the I2C driver that it should attempt to detect the presence of
|
|
||||||
the device (using an I2C zero-byte write), and only generate a SSDT entry if the
|
|
||||||
device is actually present. This alleviates the OS from having to determine if
|
|
||||||
a device is present or not (ChromeOS/Linux) and prevents resource conflict/
|
|
||||||
driver issues (Windows).
|
|
||||||
|
|
||||||
Currently, the detect feature works and is hooked up for all I2C touchpads,
|
|
||||||
and should be used any time a board has multiple touchpad options.
|
|
||||||
I2C audio devices should also work without issue.
|
|
||||||
|
|
||||||
Touchscreens can use this feature as well, but special care is needed to
|
|
||||||
implement the proper power sequencing for the device to be detected. Generally,
|
|
||||||
this means driving the enable GPIO high and holding the reset GPIO low in early
|
|
||||||
GPIO init (bootblock/romstage), then releasing reset in ramstage. While no
|
|
||||||
boards in the tree currently implement this, it has been used in downstream
|
|
||||||
forks without issue for some time now.
|
|
||||||
|
|
||||||
### wake
|
### wake
|
||||||
|
|
||||||
The last register is:
|
The last register is:
|
||||||
@@ -232,7 +284,7 @@ Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
|||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- **All device driver entries in devicetrees end up in the SSDT table, and are
|
- **All fields that are left unspecified in the devicetree are initialized to
|
||||||
generated in coreboot's ramstage**
|
zero.**
|
||||||
(The lone exception to this rule is i2c touchpads with the 'detect' flag set;
|
- **All devices in devicetrees end up in the SSDT table, and are generated in
|
||||||
in this case, devices not present will not be added to the SSDT)
|
coreboot's ramstage**
|
@@ -10,3 +10,7 @@ upwards.
|
|||||||
## GPIO
|
## GPIO
|
||||||
|
|
||||||
- [GPIO toggling in ACPI AML](gpio.md)
|
- [GPIO toggling in ACPI AML](gpio.md)
|
||||||
|
|
||||||
|
## devicetree
|
||||||
|
|
||||||
|
- [Adding devices to a device tree](devicetree.md)
|
||||||
|
@@ -278,7 +278,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* ECC - [**Error Correction Code**](https://en.wikipedia.org/wiki/Error_correction_code) - Typically used to refer to a type of
|
* ECC - [**Error Correction Code**](https://en.wikipedia.org/wiki/Error_correction_code) - Typically used to refer to a type of
|
||||||
memory that can detect and correct memory errors.
|
memory that can detect and correct memory errors.
|
||||||
* EDID - [**Extended Display Identification Data**](https://en.wikipedia.org/wiki/Extended_Display_Identification_Data)
|
* EDID - [**Extended Display Identification Data**](https://en.wikipedia.org/wiki/Extended_Display_Identification_Data)
|
||||||
* edk2 - EFI Development Kit 2
|
* EDK2 - EFI Development Kit 2
|
||||||
* EDO - Memory: [**Extended Data
|
* EDO - Memory: [**Extended Data
|
||||||
Out**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory#Extended_data_out_DRAM)
|
Out**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory#Extended_data_out_DRAM)
|
||||||
- A DRAM standard introduced in 1994 that improved upon, but was
|
- A DRAM standard introduced in 1994 that improved upon, but was
|
||||||
|
@@ -31,7 +31,7 @@ topics, including community and technical matters that benefit from
|
|||||||
an official decision.
|
an official decision.
|
||||||
|
|
||||||
We tried a whole lot of different tools, but so far the meetings worked
|
We tried a whole lot of different tools, but so far the meetings worked
|
||||||
best with [Google Meet](https://meet.google.com/pyt-newq-rbb),
|
best with [Google Meet](https://meet.google.com/syn-toap-agu),
|
||||||
using [Google Docs](https://docs.google.com/document/d/1NRXqXcLBp5pFkHiJbrLdv3Spqh1Hu086HYkKrgKjeDQ/edit)
|
using [Google Docs](https://docs.google.com/document/d/1NRXqXcLBp5pFkHiJbrLdv3Spqh1Hu086HYkKrgKjeDQ/edit)
|
||||||
for the agenda and meeting minutes. Neither the video conference nor
|
for the agenda and meeting minutes. Neither the video conference nor
|
||||||
the document require a Google account to participate, although editing
|
the document require a Google account to participate, although editing
|
||||||
|
@@ -1002,7 +1002,7 @@ The C Programming Language, Second Edition by Brian W. Kernighan and
|
|||||||
Dennis M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8
|
Dennis M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8
|
||||||
(paperback), 0-13-110370-9 (hardback). URL:
|
(paperback), 0-13-110370-9 (hardback). URL:
|
||||||
<https://duckduckgo.com/?q=isbn+0-13-110362-8> or
|
<https://duckduckgo.com/?q=isbn+0-13-110362-8> or
|
||||||
<https://www.google.com/search?q=isbn+0-13-110362-8>
|
<https://www.google.com/search?q=isbn+0-13-110362-8.
|
||||||
|
|
||||||
|
|
||||||
The Practice of Programming by Brian W. Kernighan and Rob Pike.
|
The Practice of Programming by Brian W. Kernighan and Rob Pike.
|
||||||
|
@@ -87,7 +87,7 @@ across architectures.
|
|||||||
## Port payloads to ARM, AArch64 or RISC-V
|
## Port payloads to ARM, AArch64 or RISC-V
|
||||||
While we have a rather big set of payloads for x86 based platforms, all other
|
While we have a rather big set of payloads for x86 based platforms, all other
|
||||||
architectures are rather limited. Improve the situation by porting a payload
|
architectures are rather limited. Improve the situation by porting a payload
|
||||||
to one of the platforms, for example GRUB2, U-Boot (the UI part), edk2,
|
to one of the platforms, for example GRUB2, U-Boot (the UI part), Tianocore,
|
||||||
yabits, FILO, or Linux-as-Payload.
|
yabits, FILO, or Linux-as-Payload.
|
||||||
|
|
||||||
Since this is a bit of a catch-all idea, an application to GSoC should pick a
|
Since this is a bit of a catch-all idea, an application to GSoC should pick a
|
||||||
|
Before Width: | Height: | Size: 195 KiB |
@@ -37,15 +37,15 @@ firmware binaries on [GitHub](https://pcengines.github.io).
|
|||||||
|
|
||||||
[Star Labs](https://starlabs.systems/) offers a range of laptops designed and
|
[Star Labs](https://starlabs.systems/) offers a range of laptops designed and
|
||||||
built specifically for Linux that are available with coreboot firmware. They
|
built specifically for Linux that are available with coreboot firmware. They
|
||||||
use edk2 as the payload and include an NVRAM option to disable the Intel
|
use Tianocore as the payload and include an NVRAM option to disable the
|
||||||
Management Engine.
|
Intel Management Engine.
|
||||||
|
|
||||||
### System76
|
### System76
|
||||||
|
|
||||||
[System76](https://system76.com/) manufactures Linux laptops, desktops, and
|
[System76](https://system76.com/) manufactures Linux laptops, desktops, and
|
||||||
servers. Some models are sold with [System76 Open
|
servers. Some models are sold with [System76 Open
|
||||||
Firmware](https://github.com/system76/firmware-open), an open source
|
Firmware](https://github.com/system76/firmware-open), an open source
|
||||||
distribution of coreboot, edk2, and System76 firmware applications.
|
distribution of coreboot, EDK2, and System76 firmware applications.
|
||||||
|
|
||||||
### Purism
|
### Purism
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ trustworthiness for all.
|
|||||||
|
|
||||||
[MrChromebox](https://mrchromebox.tech/) provides upstream coreboot firmware
|
[MrChromebox](https://mrchromebox.tech/) provides upstream coreboot firmware
|
||||||
images for the vast majority of x86-based Chromebooks and Chromeboxes, using
|
images for the vast majority of x86-based Chromebooks and Chromeboxes, using
|
||||||
edk2 as the payload to provide a modern UEFI bootloader. Why replace
|
Tianocore as the payload to provide a modern UEFI bootloader. Why replace
|
||||||
coreboot with coreboot? Mr Chromebox's images are built using upstream
|
coreboot with coreboot? Mr Chromebox's images are built using upstream
|
||||||
coreboot (vs Google's older, static tree/branch), include many features and
|
coreboot (vs Google's older, static tree/branch), include many features and
|
||||||
fixes not found in the stock firmware, and offer much broader OS compatibility
|
fixes not found in the stock firmware, and offer much broader OS compatibility
|
||||||
|
@@ -1,65 +0,0 @@
|
|||||||
# CBFS SMBIOS hooks
|
|
||||||
|
|
||||||
The document describes the coreboot options how to make CBFS files populate
|
|
||||||
platform-unique SMBIOS data.
|
|
||||||
|
|
||||||
## SMBIOS System UUID
|
|
||||||
|
|
||||||
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
|
||||||
Information Structure called System UUID. It is a 16 bytes value compliant with
|
|
||||||
[RFC4122] and assumed to be unique per platform. Certain mainboard ports have
|
|
||||||
SMBIOS hooks to generate the UUID from external data, e.g. Lenovo Thinkpads
|
|
||||||
(see DRIVER_LENOVO_SERIALS). This driver aims to provide an option to populate
|
|
||||||
the UUID from CBFS for boards that can't generate the UUID from any source.
|
|
||||||
|
|
||||||
### Usage
|
|
||||||
|
|
||||||
In the coreboot configuration menu (`make menuconfig`) go to `Generic Drivers`
|
|
||||||
and select an option `System UUID in CBFS`. The Kconfig system will enable
|
|
||||||
`DRIVERS_GENERIC_CBFS_UUID` and the relevant code parts will be compiled into
|
|
||||||
coreboot image.
|
|
||||||
|
|
||||||
After the coreboot build for your board completes, use the cbfstool to include
|
|
||||||
the file containing the UUID:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw -f /path/to/uuid_file.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
Where `uuid_file.txt` is the unterminated string representation of the SMBIOS
|
|
||||||
type 1 UUID, e.g. `4c4c4544-0051-3410-8051-b5c04f375931`. If you use vboot with
|
|
||||||
1 or 2 RW partitions you will have to specify the RW regions where the file is
|
|
||||||
going to be added too. By default the RW CBFS partitions are truncated, so the
|
|
||||||
files would probably not fit, one needs to expand them first.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_A
|
|
||||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw \
|
|
||||||
-f /path/to/uuid_file.txt -r FW_MAIN_A
|
|
||||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_A
|
|
||||||
|
|
||||||
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_B
|
|
||||||
./build/cbfstool build/coreboot.rom add -n system_uuid -t raw \
|
|
||||||
-f /path/to/uuid_file.txt -r FW_MAIN_B
|
|
||||||
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_B
|
|
||||||
```
|
|
||||||
|
|
||||||
By default cbfstool adds files to COREBOOT region only, so when vboot is
|
|
||||||
enabled and the platform is booting from RW partition, the file would not be
|
|
||||||
picked up by the driver.
|
|
||||||
|
|
||||||
One may retrieve the UUID from running system (if it exists) using the
|
|
||||||
following command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
echo -n `sudo dmidecode -s system-uuid` > uuid_file.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
The above command ensures the file does not end with whitespaces like LF and/or
|
|
||||||
CR. The above command will not add any whitespaces. But the driver will handle
|
|
||||||
situations where up to 2 additional bytes like CR and LF will be included in
|
|
||||||
the file. Any more than that will make the driver fail to populate UUID in
|
|
||||||
SMBIOS.
|
|
||||||
|
|
||||||
[DMTF SMBIOS specification]: https://www.dmtf.org/standards/smbios
|
|
||||||
[RFC4122]: https://www.ietf.org/rfc/rfc4122.txt
|
|
@@ -43,7 +43,7 @@ This policy monitors the temperature of participants and controls fans to spin
|
|||||||
at varying speeds. These speeds are defined by the platform, and will be enabled
|
at varying speeds. These speeds are defined by the platform, and will be enabled
|
||||||
depending on the various temperatures reported by participants.
|
depending on the various temperatures reported by participants.
|
||||||
|
|
||||||
## Note about units
|
# Note about units
|
||||||
|
|
||||||
ACPI uses unusual units for specifying various physical measurements. For
|
ACPI uses unusual units for specifying various physical measurements. For
|
||||||
example, temperatures are specified in 10ths of a degree K, and time is measured
|
example, temperatures are specified in 10ths of a degree K, and time is measured
|
||||||
@@ -69,7 +69,7 @@ data was a 0). The following Methods were removed:
|
|||||||
2) There is no more implicit inclusion of _ACn methods for TCPU (these must be
|
2) There is no more implicit inclusion of _ACn methods for TCPU (these must be
|
||||||
specified in the devicetree entries or by calling the DPTF acpigen API).
|
specified in the devicetree entries or by calling the DPTF acpigen API).
|
||||||
|
|
||||||
## ACPI Tables
|
# ACPI Tables
|
||||||
|
|
||||||
DPTF relies on an assortment of ACPI tables to provide parameters to the DPTF
|
DPTF relies on an assortment of ACPI tables to provide parameters to the DPTF
|
||||||
application. We will discuss the more important ones here.
|
application. We will discuss the more important ones here.
|
||||||
@@ -108,7 +108,7 @@ various informational properties.
|
|||||||
This table describes performance states supported by a participant (typically
|
This table describes performance states supported by a participant (typically
|
||||||
the battery charger).
|
the battery charger).
|
||||||
|
|
||||||
## ACPI Methods
|
# ACPI Methods
|
||||||
|
|
||||||
The Active and Passive policies also provide for short Methods to define
|
The Active and Passive policies also provide for short Methods to define
|
||||||
different kinds of temperature thresholds.
|
different kinds of temperature thresholds.
|
||||||
@@ -141,7 +141,7 @@ a "graceful shutdown".
|
|||||||
|
|
||||||
These are optional, and are enabled by selecting the Critical Policy.
|
These are optional, and are enabled by selecting the Critical Policy.
|
||||||
|
|
||||||
## How to use the devicetree entries
|
# How to use the devicetree entries
|
||||||
|
|
||||||
The `drivers/intel/dptf` chip driver is organized into several sections:
|
The `drivers/intel/dptf` chip driver is organized into several sections:
|
||||||
- Policies
|
- Policies
|
||||||
@@ -151,7 +151,7 @@ The `drivers/intel/dptf` chip driver is organized into several sections:
|
|||||||
The Policies section (`policies.active`, `policies.passive`, and
|
The Policies section (`policies.active`, `policies.passive`, and
|
||||||
`policies.critical`) is where the components of each policy are defined.
|
`policies.critical`) is where the components of each policy are defined.
|
||||||
|
|
||||||
### Active Policy
|
## Active Policy
|
||||||
|
|
||||||
Each Active Policy is defined in terms of 4 parts:
|
Each Active Policy is defined in terms of 4 parts:
|
||||||
1) A Source (this is implicitly defined as TFN1, the system fan)
|
1) A Source (this is implicitly defined as TFN1, the system fan)
|
||||||
@@ -182,7 +182,7 @@ the CPU's active cooling capability). When the CPU temperature first crosses
|
|||||||
rest of the table (note that it *must* be defined from highest temperature/
|
rest of the table (note that it *must* be defined from highest temperature/
|
||||||
percentage on down to the lowest).
|
percentage on down to the lowest).
|
||||||
|
|
||||||
### Passive Policy
|
## Passive Policy
|
||||||
|
|
||||||
Each Passive Policy is defined in terms of 5 parts:
|
Each Passive Policy is defined in terms of 5 parts:
|
||||||
1) Source - The device that can be throttled
|
1) Source - The device that can be throttled
|
||||||
@@ -201,7 +201,7 @@ This example sets up a policy to begin throttling the charger performance when
|
|||||||
temperature sensor 1 reaches 65C. The sampling period here is 60000 ms (60 s).
|
temperature sensor 1 reaches 65C. The sampling period here is 60000 ms (60 s).
|
||||||
The Priority is defaulted to 100 in this case.
|
The Priority is defaulted to 100 in this case.
|
||||||
|
|
||||||
### Critical Policy
|
## Critical Policy
|
||||||
|
|
||||||
Each Critical Policy is defined in terms of 3 parts:
|
Each Critical Policy is defined in terms of 3 parts:
|
||||||
1) Source - A device that can trigger a critical event
|
1) Source - A device that can trigger a critical event
|
||||||
@@ -218,7 +218,7 @@ register "policies.critical[1]" = "DPTF_CRITICAL(CPU, 75, SHUTDOWN)"
|
|||||||
This example sets up a policy wherein ACPI will cause the system to shutdown
|
This example sets up a policy wherein ACPI will cause the system to shutdown
|
||||||
(in a "graceful" manner) when the CPU temperature reaches 75C.
|
(in a "graceful" manner) when the CPU temperature reaches 75C.
|
||||||
|
|
||||||
### Power Limits
|
## Power Limits
|
||||||
|
|
||||||
Control over the SoC's Running Average Power Limits (RAPL) is one of the tools
|
Control over the SoC's Running Average Power Limits (RAPL) is one of the tools
|
||||||
that DPTF uses to enact Passive policies. DPTF can control both PL1 and PL2, if
|
that DPTF uses to enact Passive policies. DPTF can control both PL1 and PL2, if
|
||||||
@@ -244,7 +244,7 @@ This example allow DPTF to control the SoC's PL1 level to between 3W and 15W,
|
|||||||
over a time interval ranging from 28 to 32 seconds, and it can move PL1 in
|
over a time interval ranging from 28 to 32 seconds, and it can move PL1 in
|
||||||
increments of 200 mW.
|
increments of 200 mW.
|
||||||
|
|
||||||
### Charger Performance
|
## Charger Performance
|
||||||
|
|
||||||
The battery charger can be a large contributor of unwanted heat in a system that
|
The battery charger can be a large contributor of unwanted heat in a system that
|
||||||
has one. Controlling the rate of charging is another tool that DPTF uses to enact
|
has one. Controlling the rate of charging is another tool that DPTF uses to enact
|
||||||
@@ -266,7 +266,7 @@ register "controls.charger_perf[3]" = "{ 8, 500 }"
|
|||||||
In this example, when DPTF decides to throttle the charger, it has four different
|
In this example, when DPTF decides to throttle the charger, it has four different
|
||||||
performance states to choose from.
|
performance states to choose from.
|
||||||
|
|
||||||
### Fan Performance
|
## Fan Performance
|
||||||
|
|
||||||
When using DPTF, the system fan (`TFN1`) is the device responsible for actively
|
When using DPTF, the system fan (`TFN1`) is the device responsible for actively
|
||||||
cooling the other temperature sensors on the mainboard. A fan speed table can be
|
cooling the other temperature sensors on the mainboard. A fan speed table can be
|
||||||
@@ -298,21 +298,21 @@ increment of 10 percentage points. This is common when specifying fine-grained
|
|||||||
control of the fan, wherein DPTF will interpolate between the percentages in the
|
control of the fan, wherein DPTF will interpolate between the percentages in the
|
||||||
table for a given temperature threshold.
|
table for a given temperature threshold.
|
||||||
|
|
||||||
### Options
|
## Options
|
||||||
|
|
||||||
#### Fan
|
### Fan
|
||||||
1) Fine-grained control - a boolean (see Fan Performance section above)
|
1) Fine-grained control - a boolean (see Fan Performance section above)
|
||||||
2) Step-size - Recommended minimum step size (in percentage points) to adjust
|
2) Step-size - Recommended minimum step size (in percentage points) to adjust
|
||||||
the fan speed when using fine-grained control (ranges from 1 - 9).
|
the fan speed when using fine-grained control (ranges from 1 - 9).
|
||||||
3) Low-speed notify - If true, the platform will issue a `Notify (0x80)` to the
|
3) Low-speed notify - If true, the platform will issue a `Notify (0x80)` to the
|
||||||
fan device if a low fan speed is detected.
|
fan device if a low fan speed is detected.
|
||||||
|
|
||||||
#### Temperature sensors
|
### Temperature sensors
|
||||||
1) Hysteresis - The amount of hysteresis implemented in either circuitry or
|
1) Hysteresis - The amount of hysteresis implemented in either circuitry or
|
||||||
the firmware that reads the temperature sensor (in degrees C).
|
the firmware that reads the temperature sensor (in degrees C).
|
||||||
2) Name - This name is applied to the _STR property of the sensor
|
2) Name - This name is applied to the _STR property of the sensor
|
||||||
|
|
||||||
### OEM Variables
|
## OEM Variables
|
||||||
Platform vendors can define an array of OEM-specific values as OEM variables
|
Platform vendors can define an array of OEM-specific values as OEM variables
|
||||||
to be used under DPTF policy. There are total six OEM variables available.
|
to be used under DPTF policy. There are total six OEM variables available.
|
||||||
These can be used in AP policy for more specific actions. These OEM variables
|
These can be used in AP policy for more specific actions. These OEM variables
|
||||||
|
@@ -4,14 +4,9 @@ The drivers can be found in `src/drivers`. They are intended for onboard
|
|||||||
and plugin devices, significantly reducing integration complexity and
|
and plugin devices, significantly reducing integration complexity and
|
||||||
they allow to easily reuse existing code across platforms.
|
they allow to easily reuse existing code across platforms.
|
||||||
|
|
||||||
For details on how to connect device drivers to a mainboard, see [Driver Devicetree Entries](dt_entries.md).
|
|
||||||
|
|
||||||
Some of the drivers currently available include:
|
|
||||||
|
|
||||||
* [Intel DPTF](dptf.md)
|
* [Intel DPTF](dptf.md)
|
||||||
* [IPMI KCS](ipmi_kcs.md)
|
* [IPMI KCS](ipmi_kcs.md)
|
||||||
* [SMMSTORE](smmstore.md)
|
* [SMMSTORE](smmstore.md)
|
||||||
* [SMMSTOREv2](smmstorev2.md)
|
|
||||||
* [SoundWire](soundwire.md)
|
* [SoundWire](soundwire.md)
|
||||||
|
* [SMMSTOREv2](smmstorev2.md)
|
||||||
* [USB4 Retimer](retimer.md)
|
* [USB4 Retimer](retimer.md)
|
||||||
* [CBFS SMBIOS hooks](cbfs_smbios.md)
|
|
||||||
|
@@ -42,15 +42,6 @@ The following registers can be set:
|
|||||||
* `gpe_interrupt`
|
* `gpe_interrupt`
|
||||||
* Integer
|
* Integer
|
||||||
* The bit in GPE (SCI) used to notify about a change on the KCS.
|
* The bit in GPE (SCI) used to notify about a change on the KCS.
|
||||||
* `wait_for_bmc`
|
|
||||||
* Boolean
|
|
||||||
* Wait for BMC to boot. This can be used if the BMC takes a long time to boot
|
|
||||||
after PoR:
|
|
||||||
- AST2400 on Supermicro X11SSH: 34 s
|
|
||||||
* `bmc_boot_timeout`
|
|
||||||
* Integer
|
|
||||||
* The timeout in seconds to wait for the IPMI service to be loaded.
|
|
||||||
Will be used if wait_for_bmc is true.
|
|
||||||
|
|
||||||
|
|
||||||
[IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf
|
[IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# USB4 Retimers
|
# USB4 Retimers
|
||||||
|
|
||||||
## Introduction
|
# Introduction
|
||||||
As USB speeds continue to increase (up to 5G, 10G, and even 20G or higher in
|
As USB speeds continue to increase (up to 5G, 10G, and even 20G or higher in
|
||||||
newer revisions of the spec), it becomes more difficult to maintain signal
|
newer revisions of the spec), it becomes more difficult to maintain signal
|
||||||
integrity for longer traces. Devices such as retimers and redrivers can be used
|
integrity for longer traces. Devices such as retimers and redrivers can be used
|
||||||
@@ -17,7 +17,7 @@ by doing CDR and retransmitting the data (i.e., it is protocol-aware). Since
|
|||||||
this is a digital component, it may have firmware.
|
this is a digital component, it may have firmware.
|
||||||
|
|
||||||
|
|
||||||
## Driver Usage
|
# Driver Usage
|
||||||
|
|
||||||
Some operating systems may have the ability to update firmware on USB4 retimers,
|
Some operating systems may have the ability to update firmware on USB4 retimers,
|
||||||
and ultimately will need some way to power the device on and off so that its new
|
and ultimately will need some way to power the device on and off so that its new
|
||||||
|
@@ -21,7 +21,7 @@ operations is desired, as it reduces complexity and potential for bugs.
|
|||||||
|
|
||||||
This can be used by a FTW (FaultTolerantWrite) implementation that uses
|
This can be used by a FTW (FaultTolerantWrite) implementation that uses
|
||||||
at least two regions in an A/B update scheme. The FTW implementation in
|
at least two regions in an A/B update scheme. The FTW implementation in
|
||||||
edk2 uses three different regions in the store:
|
EDK2 uses three different regions in the store:
|
||||||
|
|
||||||
- The variable store
|
- The variable store
|
||||||
- The FTW spare block
|
- The FTW spare block
|
||||||
@@ -35,7 +35,7 @@ With 64 KiB as block size, the minimum size of the FTW-enabled store is:
|
|||||||
- The FTW spare block: 2 blocks = 2 * 64 KiB
|
- The FTW spare block: 2 blocks = 2 * 64 KiB
|
||||||
- The FTW working block: 1 block = 64 KiB
|
- The FTW working block: 1 block = 64 KiB
|
||||||
|
|
||||||
Therefore, the minimum size for edk2 FTW is 4 blocks, or 256 KiB.
|
Therefore, the minimum size for EDK2 FTW is 4 blocks, or 256 KiB.
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -1,87 +0,0 @@
|
|||||||
# Adding new devices to a device tree
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
ACPI exposes a platform-independent interface for operating systems to perform
|
|
||||||
power management and other platform-level functions. Some operating systems
|
|
||||||
also use ACPI to enumerate devices that are not immediately discoverable, such
|
|
||||||
as those behind I2C or SPI buses (in contrast to PCI). This document discusses
|
|
||||||
the way that coreboot uses the concept of a "device tree" to generate ACPI
|
|
||||||
tables for usage by the operating system.
|
|
||||||
|
|
||||||
## Devicetree and overridetree (if applicable)
|
|
||||||
|
|
||||||
For mainboards that are organized around a "reference board" or "baseboard"
|
|
||||||
model (see ``src/mainboard/google/octopus`` or ``hatch`` for examples), there is
|
|
||||||
typically a devicetree.cb file that all boards share, and any differences for a
|
|
||||||
specific board ("variant") are captured in the overridetree.cb file. Any
|
|
||||||
settings changed in the overridetree take precedence over those in the main
|
|
||||||
devicetree. Note, not all mainboards will have the devicetree/overridetree
|
|
||||||
distinction, and may only have a devicetree.cb file. Or you can always just
|
|
||||||
write the ASL (ACPI Source Language) code yourself.
|
|
||||||
|
|
||||||
### Naming and referencing devices
|
|
||||||
|
|
||||||
When declaring a device, it can optionally be given an alias that can be
|
|
||||||
referred to elsewhere. This is particularly useful to declare a device in one
|
|
||||||
device tree while allowing its configuration to be more easily changed in an
|
|
||||||
overlay. For instance, the AMD Picasso SoC definition
|
|
||||||
(`soc/amd/picasso/chipset.cb`) declares an IOMMU on a PCI bus that is disabled
|
|
||||||
by default:
|
|
||||||
|
|
||||||
```
|
|
||||||
chip soc/amd/picasso
|
|
||||||
device domain 0 on
|
|
||||||
...
|
|
||||||
device pci 00.2 alias iommu off end
|
|
||||||
...
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
A device based on this SoC can override the configuration for the IOMMU without
|
|
||||||
duplicating addresses, as in
|
|
||||||
`mainboard/google/zork/variants/baseboard/devicetree_trembyle.cb`:
|
|
||||||
|
|
||||||
```
|
|
||||||
chip soc/amd/picasso
|
|
||||||
device domain 0
|
|
||||||
...
|
|
||||||
device ref iommu on end
|
|
||||||
...
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
In this example the override simply enables the IOMMU, but it could also
|
|
||||||
set additional properties (or even add child devices) inside the IOMMU `device`
|
|
||||||
block.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
It is important to note that devices that use `device ref` syntax to override
|
|
||||||
previous definitions of a device by alias must be placed at **exactly the same
|
|
||||||
location in the device tree** as the original declaration. If not, this will
|
|
||||||
actually create another device rather than overriding the properties of the
|
|
||||||
existing one. For instance, if the above snippet from `devicetree_trembyle.cb`
|
|
||||||
were written as follows:
|
|
||||||
|
|
||||||
```
|
|
||||||
chip soc/amd/picasso
|
|
||||||
# NOTE: not inside domain 0!
|
|
||||||
device ref iommu on end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Then this would leave the SoC's IOMMU disabled, and instead create a new device
|
|
||||||
with no properties as a direct child of the SoC.
|
|
||||||
|
|
||||||
## Device drivers
|
|
||||||
|
|
||||||
Platform independent device drivers are hooked up via entries in a devicetree.
|
|
||||||
See [Driver Devicetree Entries](drivers/dt_entries.md) for more info.
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- **All fields that are left unspecified in the devicetree are initialized to
|
|
||||||
zero.**
|
|
@@ -6,4 +6,3 @@
|
|||||||
* [Kconfig](kconfig.md)
|
* [Kconfig](kconfig.md)
|
||||||
* [Writing Documentation](writing_documentation.md)
|
* [Writing Documentation](writing_documentation.md)
|
||||||
* [Setting up GPIOs](gpio.md)
|
* [Setting up GPIOs](gpio.md)
|
||||||
* [Adding devices to a device tree](devicetree.md)
|
|
||||||
|
@@ -26,7 +26,7 @@ initialization routines across many different use cases, no matter if
|
|||||||
they provide standard interfaces or entirely custom boot flows.
|
they provide standard interfaces or entirely custom boot flows.
|
||||||
|
|
||||||
Popular [payloads](payloads.md) in use with coreboot are SeaBIOS,
|
Popular [payloads](payloads.md) in use with coreboot are SeaBIOS,
|
||||||
which provides PCBIOS services, edk2, which provides UEFI services,
|
which provides PCBIOS services, Tianocore, which provides UEFI services,
|
||||||
GRUB2, the bootloader used by many Linux distributions, or depthcharge,
|
GRUB2, the bootloader used by many Linux distributions, or depthcharge,
|
||||||
a custom boot loader used on Chromebooks.
|
a custom boot loader used on Chromebooks.
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
@@ -1,4 +1,4 @@
|
|||||||
# Pademelon board
|
# Padmelon board
|
||||||
|
|
||||||
## Specs (with Merlin Falcon SOC)
|
## Specs (with Merlin Falcon SOC)
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
## Mainboard
|
## Mainboard
|
||||||
|
|
||||||
![mainboard][pademelon]
|
![mainboard][padmelon]
|
||||||
|
|
||||||
Three items are marked in this picture
|
Three items are marked in this picture
|
||||||
1. dediprog header
|
1. dediprog header
|
||||||
@@ -27,7 +27,7 @@ Three items are marked in this picture
|
|||||||
|
|
||||||
## Back panel
|
## Back panel
|
||||||
|
|
||||||
![back panel][pademelon_io]
|
![back panel][padmelon_io]
|
||||||
|
|
||||||
* The lower serial port is UART A (debug serial)
|
* The lower serial port is UART A (debug serial)
|
||||||
|
|
||||||
@@ -65,9 +65,9 @@ Three items are marked in this picture
|
|||||||
|
|
||||||
```eval_rst
|
```eval_rst
|
||||||
+----------------------------+----------------------------------------+
|
+----------------------------+----------------------------------------+
|
||||||
|pademelon.jpg | Motherboard with components identified |
|
|padmelon.jpg | Motherboard with components identified |
|
||||||
+----------------------------+----------------------------------------+
|
+----------------------------+----------------------------------------+
|
||||||
|pademelon_io.jpg | Back panel picture |
|
|padmelon_io.jpg | Back panel picture |
|
||||||
+----------------------------+----------------------------------------+
|
+----------------------------+----------------------------------------+
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -76,5 +76,5 @@ Three items are marked in this picture
|
|||||||
[Merlin Falcon BKDG][merlinfalcon]
|
[Merlin Falcon BKDG][merlinfalcon]
|
||||||
|
|
||||||
[merlinfalcon]: ../../../soc/amd/family15h.md
|
[merlinfalcon]: ../../../soc/amd/family15h.md
|
||||||
[pademelon]: pademelon.jpg
|
[padmelon]: padmelon.jpg
|
||||||
[pademelon_io]: pademelon_io.jpg
|
[padmelon_io]: padmelon_io.jpg
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
@@ -37,7 +37,7 @@ easy to remove and reflash.
|
|||||||
|
|
||||||
## Working
|
## Working
|
||||||
|
|
||||||
- PS/2 keyboard with SeaBIOS & edk2 (in Mint 18.3/19.1)
|
- PS/2 keyboard with SeaBIOS & Tianocore (in Mint 18.3/19.1)
|
||||||
|
|
||||||
- Rear/front headphones connector audio & mic
|
- Rear/front headphones connector audio & mic
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ easy to remove and reflash.
|
|||||||
port 3 port 5 port 1 port 8
|
port 3 port 5 port 1 port 8
|
||||||
port 4 port 6 port 2 port 7
|
port 4 port 6 port 2 port 7
|
||||||
|
|
||||||
- NVME SSD boot on PCIe-x16/x8/4x slot using edk2
|
- NVME SSD boot on PCIe-x16/x8/4x slot using Tianocore
|
||||||
(tested with M.2-to-PCIe adapter and a M.2 Samsung EVO 970 SSD)
|
(tested with M.2-to-PCIe adapter and a M.2 Samsung EVO 970 SSD)
|
||||||
|
|
||||||
- CPU Temp sensors (tested PSensor on linux + HWINFO64 on Win10)
|
- CPU Temp sensors (tested PSensor on linux + HWINFO64 on Win10)
|
||||||
@@ -89,7 +89,7 @@ easy to remove and reflash.
|
|||||||
- If you use the MRC.bin, the NVRAM variable gfx_uma_size may be ignored
|
- If you use the MRC.bin, the NVRAM variable gfx_uma_size may be ignored
|
||||||
as IGP's UMA could be reconfigured by the blob
|
as IGP's UMA could be reconfigured by the blob
|
||||||
|
|
||||||
- Using edk2 + a PCIe GPU under Windows crashes with an
|
- Using TianoCore + a PCIe GPU under Windows crashes with an
|
||||||
ACPI_BIOS_ERROR fatal code, not sure why. Using just the IGP
|
ACPI_BIOS_ERROR fatal code, not sure why. Using just the IGP
|
||||||
works perfectly
|
works perfectly
|
||||||
|
|
||||||
@@ -105,9 +105,9 @@ easy to remove and reflash.
|
|||||||
|
|
||||||
## Not working
|
## Not working
|
||||||
|
|
||||||
- PS/2 keyboard in Win10 using edk2 (please see [Known issues])
|
- PS/2 keyboard in Win10 using Tianocore (please see [Known issues])
|
||||||
- PS/2 mouse using edk2
|
- PS/2 mouse using Tianocore
|
||||||
- PCIe graphics card on Windows and edk2 (throws critical ACPI_BIOS_ERROR)
|
- PCIe graphics card on Windows and Tianocore (throws critical ACPI_BIOS_ERROR)
|
||||||
|
|
||||||
## Native raminit compatibility
|
## Native raminit compatibility
|
||||||
|
|
||||||
|
@@ -104,11 +104,11 @@ solution. Wires need to be connected to be able to flash using an external progr
|
|||||||
- SMBus
|
- SMBus
|
||||||
- Initialization with FSP
|
- Initialization with FSP
|
||||||
- SeaBIOS payload (commit a5cab58e9a3fb6e168aba919c5669bea406573b4)
|
- SeaBIOS payload (commit a5cab58e9a3fb6e168aba919c5669bea406573b4)
|
||||||
- edk2 payload (commit 860a8d95c2ee89c9916d6e11230f246afa1cd629)
|
- TianoCore payload (commit 860a8d95c2ee89c9916d6e11230f246afa1cd629)
|
||||||
- LinuxBoot (kernel kernel-4_19_97) (uroot commit 9c9db9dbd6b532f5f91a511a0de885c6562aadd7)
|
- LinuxBoot (kernel kernel-4_19_97) (uroot commit 9c9db9dbd6b532f5f91a511a0de885c6562aadd7)
|
||||||
- eMMC
|
- eMMC
|
||||||
|
|
||||||
All of the above has been briefly tested by booting Linux from eMMC using the edk2 payload
|
All of the above has been briefly tested by booting Linux from eMMC using the TianoCore payload
|
||||||
and LinuxBoot.
|
and LinuxBoot.
|
||||||
|
|
||||||
SeaBios has been checked to the extend that it runs to the boot selection and provides display
|
SeaBios has been checked to the extend that it runs to the boot selection and provides display
|
||||||
|
@@ -130,7 +130,7 @@ The board can be debugged with EHCI debug. The EHCI debug port is the USB port o
|
|||||||
- Arch Linux with Linux 5.8.9
|
- Arch Linux with Linux 5.8.9
|
||||||
- Memory initialization with mrc.bin version 1.6.1 Build 2
|
- Memory initialization with mrc.bin version 1.6.1 Build 2
|
||||||
- Graphics initialization with libgfxinit
|
- Graphics initialization with libgfxinit
|
||||||
- Payload: SeaBIOS, edk2
|
- Payload: SeaBIOS, Tianocore
|
||||||
- EC firmware
|
- EC firmware
|
||||||
- KBC Revision 92.15 from OEM firmware version 01.33
|
- KBC Revision 92.15 from OEM firmware version 01.33
|
||||||
- KBC Revision 92.17 from OEM firmware version 01.50
|
- KBC Revision 92.17 from OEM firmware version 01.50
|
||||||
|
@@ -44,17 +44,8 @@ The SPI flash can be accessed using [flashrom].
|
|||||||
External programming with an SPI adapter and [flashrom] does work, but it powers the
|
External programming with an SPI adapter and [flashrom] does work, but it powers the
|
||||||
whole southbridge complex. You need to supply enough current through the programming adapter.
|
whole southbridge complex. You need to supply enough current through the programming adapter.
|
||||||
|
|
||||||
If you want to use a SOIC pomona test clip, you have to cut the 2nd DRAM DIMM holder, as
|
If you want to use a SOIC pomona test clip, you have to cut the 2nd DRAM DIMM holder,
|
||||||
otherwise there's not enough space near the flash.
|
as otherwise there's not enough space near the flash.
|
||||||
|
|
||||||
In both case, if ME has not been completely disabled, ME/AMT Flash Override jumper had better
|
|
||||||
be temporary closed for flashing to disable the locking of regions, and prevent ME to run and
|
|
||||||
interfere.
|
|
||||||
|
|
||||||
## Side note
|
|
||||||
The mainboard of [HP Compaq Elite 8300 SFF] is very similar to the one of Z220 SFF, except
|
|
||||||
that Compaq Elite 8300 uses Q77 instead of C216 for its PCH, and their boot firmwares are
|
|
||||||
even interchangeable, so should do coreboot images built for them.
|
|
||||||
|
|
||||||
## Technology
|
## Technology
|
||||||
|
|
||||||
@@ -75,6 +66,5 @@ even interchangeable, so should do coreboot images built for them.
|
|||||||
```
|
```
|
||||||
|
|
||||||
[HP Z220 SFF Workstation]: https://support.hp.com/za-en/document/c03386950
|
[HP Z220 SFF Workstation]: https://support.hp.com/za-en/document/c03386950
|
||||||
[HP Compaq Elite 8300 SFF]: https://support.hp.com/us-en/document/c03345460
|
|
||||||
[HP]: https://www.hp.com/
|
[HP]: https://www.hp.com/
|
||||||
[flashrom]: https://flashrom.org/Flashrom
|
[flashrom]: https://flashrom.org/Flashrom
|
||||||
|
@@ -11,7 +11,7 @@ This section contains documentation about coreboot on specific mainboards.
|
|||||||
- [G43T-AM3](acer/g43t-am3.md)
|
- [G43T-AM3](acer/g43t-am3.md)
|
||||||
|
|
||||||
## AMD
|
## AMD
|
||||||
- [pademelon](amd/pademelon/pademelon.md)
|
- [padmelon](amd/padmelon/padmelon.md)
|
||||||
|
|
||||||
## ASRock
|
## ASRock
|
||||||
|
|
||||||
@@ -146,6 +146,7 @@ The boards in this section are not real mainboards, but emulators.
|
|||||||
## Open Cellular
|
## Open Cellular
|
||||||
|
|
||||||
- [Elgon](opencellular/elgon.md)
|
- [Elgon](opencellular/elgon.md)
|
||||||
|
- [Rotundu](opencellular/rotundu.md)
|
||||||
|
|
||||||
## PC Engines
|
## PC Engines
|
||||||
|
|
||||||
|
@@ -45,7 +45,7 @@ make
|
|||||||
```
|
```
|
||||||
## Payloads
|
## Payloads
|
||||||
- SeaBIOS
|
- SeaBIOS
|
||||||
- edk2
|
- Tianocore
|
||||||
- Linux as payload
|
- Linux as payload
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
76
Documentation/mainboard/opencellular/rotundu.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Rutundu
|
||||||
|
|
||||||
|
This page describes how to run coreboot on the [Rotundu] compute board
|
||||||
|
from [OpenCellular].
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
* Configure UART
|
||||||
|
* EC interface
|
||||||
|
|
||||||
|
## Flashing coreboot
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+---------------------+------------+
|
||||||
|
| Type | Value |
|
||||||
|
+=====================+============+
|
||||||
|
| Socketed flash | no |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Model | W25Q128 |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Size | 16 MiB |
|
||||||
|
+---------------------+------------+
|
||||||
|
| In circuit flashing | yes |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Package | SOIC-8 |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Write protection | No |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Dual BIOS feature | No |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Internal flashing | yes |
|
||||||
|
+---------------------+------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
### Internal programming
|
||||||
|
|
||||||
|
The SPI flash can be accessed using [flashrom].
|
||||||
|
|
||||||
|
### External programming
|
||||||
|
|
||||||
|
The GBCv1 board does have a pinheader to flash the SOIC-8 in circuit.
|
||||||
|
Directly connecting a Pomona test-clip on the flash is also possible.
|
||||||
|
|
||||||
|
**Closeup view of SOIC-8 flash IC**
|
||||||
|
|
||||||
|
![][rotundu_flash]
|
||||||
|
|
||||||
|
[rotundu_flash]: rotundu_flash.jpg
|
||||||
|
|
||||||
|
**SPI header**
|
||||||
|
|
||||||
|
![][rotundu_header2]
|
||||||
|
|
||||||
|
[rotundu_header2]: rotundu_header2.jpg
|
||||||
|
|
||||||
|
**SPI header pinout**
|
||||||
|
|
||||||
|
Dediprog compatible pinout.
|
||||||
|
|
||||||
|
![][rotundu_j16]
|
||||||
|
|
||||||
|
[rotundu_j16]: rotundu_j16.png
|
||||||
|
|
||||||
|
## Technology
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+------------------+--------------------------------------------------+
|
||||||
|
| SoC | Intel Baytrail |
|
||||||
|
+------------------+--------------------------------------------------+
|
||||||
|
| Coprocessor | Intel ME |
|
||||||
|
+------------------+--------------------------------------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
[Rotundu]: https://github.com/Telecominfraproject/OpenCellular
|
||||||
|
[OpenCellular]: https://code.fb.com/connectivity/introducing-opencellular-an-open-source-wireless-access-platform/
|
||||||
|
[flashrom]: https://flashrom.org/Flashrom
|
BIN
Documentation/mainboard/opencellular/rotundu_flash.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
Documentation/mainboard/opencellular/rotundu_header2.jpg
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
Documentation/mainboard/opencellular/rotundu_j16.png
Normal file
After Width: | Height: | Size: 20 KiB |
@@ -92,7 +92,7 @@ located underneath the Wi-Fi module, below the left cooling fan.
|
|||||||
|
|
||||||
* Internal display with libgfxinit, VGA option ROM, or FSP/GOP init
|
* Internal display with libgfxinit, VGA option ROM, or FSP/GOP init
|
||||||
* External displays via HDMI, USB-C Alt-Mode
|
* External displays via HDMI, USB-C Alt-Mode
|
||||||
* SeaBIOS (1.14), edk2 (CorebootPayloadPkg), and Heads payloads
|
* SeaBIOS (1.14), Tianocore (CorebootPayloadPkg), and Heads payloads
|
||||||
* Ethernet, m.2 2230 Wi-Fi
|
* Ethernet, m.2 2230 Wi-Fi
|
||||||
* System firmware updates via flashrom
|
* System firmware updates via flashrom
|
||||||
* M.2 storage (NVMe, SATA III)
|
* M.2 storage (NVMe, SATA III)
|
||||||
|
@@ -107,7 +107,7 @@ desoldering it from the mainboard.
|
|||||||
|
|
||||||
* External displays via HDMI/DisplayPort with VGA option ROM or FSP/GOP init
|
* External displays via HDMI/DisplayPort with VGA option ROM or FSP/GOP init
|
||||||
(no libgfxinit support yet)
|
(no libgfxinit support yet)
|
||||||
* SeaBIOS (1.14), edk2 (CorebootPayloadPkg), Heads (Purism downstream) payloads
|
* SeaBIOS (1.14), Tianocore (CorebootPayloadPkg), Heads (Purism downstream) payloads
|
||||||
* Ethernet, m.2 2230 Wi-Fi
|
* Ethernet, m.2 2230 Wi-Fi
|
||||||
* System firmware updates via flashrom
|
* System firmware updates via flashrom
|
||||||
* PCIe NVMe
|
* PCIe NVMe
|
||||||
|
@@ -23,11 +23,13 @@ When chainloaded from GRUB2, the following menuentry could be used:
|
|||||||
module /vgaroms/seavgabios.bin
|
module /vgaroms/seavgabios.bin
|
||||||
}
|
}
|
||||||
|
|
||||||
## edk2
|
## Tianocore
|
||||||
|
|
||||||
[edk2](https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II) is an open-source modern, feature-rich,
|
[Tianocore](https://www.tianocore.org) is the open source reference
|
||||||
cross-platform firmware development environment for the UEFI and UEFI
|
implementation of the UEFI Specifications that modern firmware for PCs is
|
||||||
Platform Initialization (PI) specifications.
|
based on. There were various projects in the past to make it suitable as a
|
||||||
|
coreboot payload, but these days this function is available directly in the
|
||||||
|
UefiPayloadPkg part of its source tree.
|
||||||
|
|
||||||
## GRUB2
|
## GRUB2
|
||||||
|
|
||||||
|
@@ -42,449 +42,249 @@ Branch created, builder configured
|
|||||||
|
|
||||||
## [4.13 Release](coreboot-4.13-relnotes.md)
|
## [4.13 Release](coreboot-4.13-relnotes.md)
|
||||||
Tag only
|
Tag only
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| intel/cannonlake_rvp | INTEL_CANNONLAKE | 2017-07-19 | eval |
|
| intel/cannonlake_rvp | INTEL_CANNONLAKE | 2017-07-19 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
## [4.12 Release](coreboot-4.12-relnotes.md)
|
## [4.12 Release](coreboot-4.12-relnotes.md)
|
||||||
|
|
||||||
Branch created, builder configured
|
Branch created, builder configured
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| bap/ode_e21XX | AMD_PI_00730F01 | 2016-07-30 | eval |
|
| bap/ode_e21XX | AMD_PI_00730F01 | 2016-07-30 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/toucan-af | AMD_FAMILY14 | 2013-03-02 | half |
|
| lippert/toucan-af | AMD_FAMILY14 | 2013-03-02 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ocp/sonorapass | INTEL_COOPERLAKE_SP | 2020-05-01 | server |
|
| ocp/sonorapass | INTEL_COOPERLAKE_SP | 2020-05-01 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
## [4.11 Release](coreboot-4.11-relnotes.md)
|
## [4.11 Release](coreboot-4.11-relnotes.md)
|
||||||
|
|
||||||
Branch created, builder configured
|
Branch created, builder configured
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| adi/rcc-dff | INTEL_FSP_RANGELEY | 2016-06-08 | eval |
|
| adi/rcc-dff | INTEL_FSP_RANGELEY | 2016-06-08 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| advansus/a785e-i | AMD_AMDFAM10 | 2011-05-07 | mini |
|
| advansus/a785e-i | AMD_AMDFAM10 | 2011-05-07 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/bettong | AMD_PI_00660F01 | 2015-06-23 | eval |
|
| amd/bettong | AMD_PI_00660F01 | 2015-06-23 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/bimini_fam10 | AMD_AMDFAM10 | 2011-01-01 | eval |
|
| amd/bimini_fam10 | AMD_AMDFAM10 | 2011-01-01 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/db-ft3b-lc | AMD_PI_00730F01 | 2016-07-20 | eval |
|
| amd/db-ft3b-lc | AMD_PI_00730F01 | 2016-07-20 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/gardenia | AMD_STONEYRIDGE_FP4 | 2016-12-16 | eval |
|
| amd/gardenia | AMD_STONEYRIDGE_FP4 | 2016-12-16 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/lamar | AMD_PI_00630F01 | 2015-04-23 | eval |
|
| amd/lamar | AMD_PI_00630F01 | 2015-04-23 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/mahogany_fam10 | AMD_AMDFAM10 | 2010-03-16 | eval |
|
| amd/mahogany_fam10 | AMD_AMDFAM10 | 2010-03-16 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/olivehillplus | AMD_PI_00730F01 | 2014-09-04 | eval |
|
| amd/olivehillplus | AMD_PI_00730F01 | 2014-09-04 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/serengeti_cheetah_fam10 | AMD_AMDFAM10 | 2009-10-09 | server |
|
| amd/serengeti_cheetah_fam10 | AMD_AMDFAM10 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/tilapia_fam10 | AMD_AMDFAM10 | 2010-04-23 | eval |
|
| amd/tilapia_fam10 | AMD_AMDFAM10 | 2010-04-23 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/torpedo | AMD_FAMILY12 | 2011-06-28 | eval |
|
| amd/torpedo | AMD_FAMILY12 | 2011-06-28 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/kcma-d8 | AMD_AMDFAM10 | 2016-02-05 | server |
|
| asus/kcma-d8 | AMD_AMDFAM10 | 2016-02-05 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/kfsn4-dre | AMD_AMDFAM10 | 2015-01-28 | server |
|
| asus/kfsn4-dre | AMD_AMDFAM10 | 2015-01-28 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/kgpe-d16 | AMD_AMDFAM10 | 2015-10-28 | server |
|
| asus/kgpe-d16 | AMD_AMDFAM10 | 2015-10-28 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m4a785-m | AMD_AMDFAM10 | 2010-09-13 | desktop |
|
| asus/m4a785-m | AMD_AMDFAM10 | 2010-09-13 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m4a785t-m | AMD_AMDFAM10 | 2011-12-02 | desktop |
|
| asus/m4a785t-m | AMD_AMDFAM10 | 2011-12-02 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m4a78-em | AMD_AMDFAM10 | 2010-12-06 | desktop |
|
| asus/m4a78-em | AMD_AMDFAM10 | 2010-12-06 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m5a88-v | AMD_AMDFAM10 | 2011-10-28 | desktop |
|
| asus/m5a88-v | AMD_AMDFAM10 | 2011-10-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| avalue/eax-785e | AMD_AMDFAM10 | 2011-09-14 | desktop |
|
| avalue/eax-785e | AMD_AMDFAM10 | 2011-09-14 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| esd/atom15 | INTEL_FSP_BAYTRAIL | 2015-12-04 | sbc |
|
| esd/atom15 | INTEL_FSP_BAYTRAIL | 2015-12-04 | sbc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| facebook/watson | INTEL_FSP_BROADWELL_DE | 2018-06-26 | server |
|
| facebook/watson | INTEL_FSP_BROADWELL_DE | 2018-06-26 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ma785gm | AMD_AMDFAM10 | 2012-04-23 | desktop |
|
| gigabyte/ma785gm | AMD_AMDFAM10 | 2012-04-23 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ma785gmt | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
| gigabyte/ma785gmt | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ma78gm | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
| gigabyte/ma78gm | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/urara | IMGTEC_PISTACHIO | 2015-03-27 | eval |
|
| google/urara | IMGTEC_PISTACHIO | 2015-03-27 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| hp/dl165_g6_fam10 | AMD_AMDFAM10 | 2010-09-24 | server |
|
| hp/dl165_g6_fam10 | AMD_AMDFAM10 | 2010-09-24 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iei/kino-780am2-fam10 | AMD_AMDFAM10 | 2010-09-13 | half |
|
| iei/kino-780am2-fam10 | AMD_AMDFAM10 | 2010-09-13 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/bayleybay_fsp | INTEL_FSP_BAYTRAIL | 2014-05-30 | eval |
|
| intel/bayleybay_fsp | INTEL_FSP_BAYTRAIL | 2014-05-30 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/camelbackmountain_fsp | INTEL_FSP_BROADWELL_DE | 2016-04-15 | eval |
|
| intel/camelbackmountain_fsp | INTEL_FSP_BROADWELL_DE | 2016-04-15 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/littleplains | INTEL_FSP_RANGELEY | 2015-11-30 | eval |
|
| intel/littleplains | INTEL_FSP_RANGELEY | 2015-11-30 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/minnowmax | INTEL_FSP_BAYTRAIL | 2014-08-11 | sbc |
|
| intel/minnowmax | INTEL_FSP_BAYTRAIL | 2014-08-11 | sbc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/mohonpeak | INTEL_FSP_RANGELEY | 2014-07-30 | eval |
|
| intel/mohonpeak | INTEL_FSP_RANGELEY | 2014-07-30 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| jetway/pa78vm5 | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
| jetway/pa78vm5 | AMD_AMDFAM10 | 2010-08-17 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms9652_fam10 | AMD_AMDFAM10 | 2010-03-01 | desktop |
|
| msi/ms9652_fam10 | AMD_AMDFAM10 | 2010-03-01 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ocp/monolake | INTEL_FSP_BROADWELL_DE | 2018-05-05 | server |
|
| ocp/monolake | INTEL_FSP_BROADWELL_DE | 2018-05-05 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ocp/wedge100s | INTEL_FSP_BROADWELL_DE | 2018-05-05 | server |
|
| ocp/wedge100s | INTEL_FSP_BROADWELL_DE | 2018-05-05 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| opencellular/rotundu | INTEL_FSP_BAYTRAIL | 2018-06-26 | sbc |
|
| opencellular/rotundu | INTEL_FSP_BAYTRAIL | 2018-06-26 | sbc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| siemens/mc_bdx1 | INTEL_FSP_BROADWELL_DE | 2016-04-29 | misc |
|
| siemens/mc_bdx1 | INTEL_FSP_BROADWELL_DE | 2016-04-29 | misc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| siemens/mc_tcu3 | INTEL_FSP_BAYTRAIL | 2015-03-05 | misc |
|
| siemens/mc_tcu3 | INTEL_FSP_BAYTRAIL | 2015-03-05 | misc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| siemens/mc_tcu3 | INTEL_FSP_BAYTRAIL_MD | 2015-03-05 | misc |
|
| siemens/mc_tcu3 | INTEL_FSP_BAYTRAIL_MD | 2015-03-05 | misc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8dmr_fam10 | AMD_AMDFAM10 | 2009-10-09 | server |
|
| supermicro/h8dmr_fam10 | AMD_AMDFAM10 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8qme_fam10 | AMD_AMDFAM10 | 2010-02-03 | server |
|
| supermicro/h8qme_fam10 | AMD_AMDFAM10 | 2010-02-03 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8scm_fam10 | AMD_AMDFAM10 | 2011-03-28 | server |
|
| supermicro/h8scm_fam10 | AMD_AMDFAM10 | 2011-03-28 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2912_fam10 | AMD_AMDFAM10 | 2009-10-08 | server |
|
| tyan/s2912_fam10 | AMD_AMDFAM10 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/epia-m850 | VIA_NANO | 2013-06-10 | mini |
|
| via/epia-m850 | VIA_NANO | 2013-06-10 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/epia-m850 | VIA_VX900 | 2013-06-10 | mini |
|
| via/epia-m850 | VIA_VX900 | 2013-06-10 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.10 Release](coreboot-4.10-relnotes.md)
|
## [4.10 Release](coreboot-4.10-relnotes.md)
|
||||||
Branch created
|
Branch created
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| cubietech/cubieboard | ALLWINNER_A10 | 2014-01-08 | sbc |
|
| cubietech/cubieboard | ALLWINNER_A10 | 2014-01-08 | sbc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.9 Release](coreboot-4.9-relnotes.md)
|
## [4.9 Release](coreboot-4.9-relnotes.md)
|
||||||
Tag only
|
Tag only
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| pcengines/alix1c | AMD_GEODE_LX | 2009-10-08 | half |
|
| pcengines/alix1c | AMD_GEODE_LX | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| pcengines/alix1c | AMD_LX | 2009-10-08 | half |
|
| pcengines/alix1c | AMD_LX | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| pcengines/alix2d | AMD_GEODE_LX | 2010-08-31 | half |
|
| pcengines/alix2d | AMD_GEODE_LX | 2010-08-31 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| pcengines/alix2d | AMD_LX | 2010-08-31 | half |
|
| pcengines/alix2d | AMD_LX | 2010-08-31 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.8.1 Release](coreboot-4.8.1-relnotes.md)
|
## [4.8.1 Release](coreboot-4.8.1-relnotes.md)
|
||||||
Branch created
|
Branch created
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| aaeon/pfm-540i_revb | AMD_GEODE_LX | 2011-06-29 | half |
|
| aaeon/pfm-540i_revb | AMD_GEODE_LX | 2011-06-29 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/db800 | AMD_GEODE_LX | 2009-10-09 | eval |
|
| amd/db800 | AMD_GEODE_LX | 2009-10-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/dbm690t | AMD_AMDK8 | 2009-10-09 | eval |
|
| amd/dbm690t | AMD_AMDK8 | 2009-10-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/f2950 | AMD_GEODE_LX | 2016-07-17 | mini |
|
| amd/f2950 | AMD_GEODE_LX | 2016-07-17 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/mahogany | AMD_AMDK8 | 2010-03-16 | eval |
|
| amd/mahogany | AMD_AMDK8 | 2010-03-16 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/norwich | AMD_GEODE_LX | 2009-10-09 | eval |
|
| amd/norwich | AMD_GEODE_LX | 2009-10-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/pistachio | AMD_AMDK8 | 2009-10-09 | eval |
|
| amd/pistachio | AMD_AMDK8 | 2009-10-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/serengeti_cheetah | AMD_AMDK8 | 2009-08-12 | server |
|
| amd/serengeti_cheetah | AMD_AMDK8 | 2009-08-12 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| artecgroup/dbe61 | AMD_GEODE_LX | 2009-10-08 | settop |
|
| artecgroup/dbe61 | AMD_GEODE_LX | 2009-10-08 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asrock/939a785gmh | AMD_AMDK8 | 2010-04-05 | desktop |
|
| asrock/939a785gmh | AMD_AMDK8 | 2010-04-05 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/a8n_e | AMD_AMDK8 | 2009-10-09 | desktop |
|
| asus/a8n_e | AMD_AMDK8 | 2009-10-09 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/a8v-e_deluxe | AMD_AMDK8 | 2010-11-14 | desktop |
|
| asus/a8v-e_deluxe | AMD_AMDK8 | 2010-11-14 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/a8v-e_se | AMD_AMDK8 | 2009-10-09 | desktop |
|
| asus/a8v-e_se | AMD_AMDK8 | 2009-10-09 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/k8v-x | AMD_AMDK8 | 2011-12-02 | desktop |
|
| asus/k8v-x | AMD_AMDK8 | 2011-12-02 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/kfsn4-dre_k8 | AMD_AMDK8 | 2015-10-30 | server |
|
| asus/kfsn4-dre_k8 | AMD_AMDK8 | 2015-10-30 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m2n-e | AMD_AMDK8 | 2010-12-13 | desktop |
|
| asus/m2n-e | AMD_AMDK8 | 2010-12-13 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m2v | AMD_AMDK8 | 2010-11-07 | desktop |
|
| asus/m2v | AMD_AMDK8 | 2010-11-07 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/m2v-mx_se | AMD_AMDK8 | 2009-08-26 | desktop |
|
| asus/m2v-mx_se | AMD_AMDK8 | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| bachmann/ot200 | AMD_GEODE_LX | 2012-07-13 | settop |
|
| bachmann/ot200 | AMD_GEODE_LX | 2012-07-13 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| bcom/winnetp680 | VIA_C7 | 2009-10-07 | settop |
|
| bcom/winnetp680 | VIA_C7 | 2009-10-07 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| broadcom/blast | AMD_AMDK8 | 2009-10-09 | eval |
|
| broadcom/blast | AMD_AMDK8 | 2009-10-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| digitallogic/msm800sev | AMD_GEODE_LX | 2009-10-09 | half |
|
| digitallogic/msm800sev | AMD_GEODE_LX | 2009-10-09 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ga_2761gxdk | AMD_AMDK8 | 2009-10-07 | desktop |
|
| gigabyte/ga_2761gxdk | AMD_AMDK8 | 2009-10-07 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/m57sli | AMD_AMDK8 | 2009-10-03 | desktop |
|
| gigabyte/m57sli | AMD_AMDK8 | 2009-10-03 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/purin | BROADCOM_CYGNUS | 2015-04-17 | eval |
|
| google/purin | BROADCOM_CYGNUS | 2015-04-17 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/rotor | MARVELL_MVMAP2315 | 2016-09-13 | laptop |
|
| google/rotor | MARVELL_MVMAP2315 | 2016-09-13 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/zoombini | INTEL_CANNONLAKE | 2017-09-28 | laptop |
|
| google/zoombini | INTEL_CANNONLAKE | 2017-09-28 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| hp/dl145_g1 | AMD_AMDK8 | 2010-08-20 | server |
|
| hp/dl145_g1 | AMD_AMDK8 | 2010-08-20 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| hp/dl145_g3 | AMD_AMDK8 | 2009-10-09 | server |
|
| hp/dl145_g3 | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iei/pcisa-lx-800-r10 | AMD_GEODE_LX | 2009-10-08 | half |
|
| iei/pcisa-lx-800-r10 | AMD_GEODE_LX | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iei/pm-lx2-800-r10 | AMD_GEODE_LX | 2012-10-28 | half |
|
| iei/pm-lx2-800-r10 | AMD_GEODE_LX | 2012-10-28 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iei/pm-lx-800-r11 | AMD_GEODE_LX | 2012-07-06 | half |
|
| iei/pm-lx-800-r11 | AMD_GEODE_LX | 2012-07-06 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/cougar_canyon2 | INTEL_FSP_IVYBRIDGE | 2013-12-04 | eval |
|
| intel/cougar_canyon2 | INTEL_FSP_IVYBRIDGE | 2013-12-04 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/stargo2 | INTEL_FSP_IVYBRIDGE | 2015-11-10 | eval |
|
| intel/stargo2 | INTEL_FSP_IVYBRIDGE | 2015-11-10 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iwill/dk8_htx | AMD_AMDK8 | 2009-10-09 | server |
|
| iwill/dk8_htx | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| jetway/j7f2 | VIA_C7 | 2014-01-19 | mini |
|
| jetway/j7f2 | VIA_C7 | 2014-01-19 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| kontron/kt690 | AMD_AMDK8 | 2009-10-15 | mini |
|
| kontron/kt690 | AMD_AMDK8 | 2009-10-15 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/hurricane-lx | AMD_GEODE_LX | 2010-09-10 | half |
|
| lippert/hurricane-lx | AMD_GEODE_LX | 2010-09-10 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/literunner-lx | AMD_GEODE_LX | 2010-09-07 | half |
|
| lippert/literunner-lx | AMD_GEODE_LX | 2010-09-07 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/roadrunner-lx | AMD_GEODE_LX | 2009-10-08 | half |
|
| lippert/roadrunner-lx | AMD_GEODE_LX | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/spacerunner-lx | AMD_GEODE_LX | 2009-10-08 | half |
|
| lippert/spacerunner-lx | AMD_GEODE_LX | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lowrisc/nexys4ddr | LOWRISC_LOWRISC | 2016-10-28 | eval |
|
| lowrisc/nexys4ddr | LOWRISC_LOWRISC | 2016-10-28 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms7135 | AMD_AMDK8 | 2009-10-07 | desktop |
|
| msi/ms7135 | AMD_AMDK8 | 2009-10-07 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms7260 | AMD_AMDK8 | 2009-10-07 | desktop |
|
| msi/ms7260 | AMD_AMDK8 | 2009-10-07 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms9185 | AMD_AMDK8 | 2009-10-07 | server |
|
| msi/ms9185 | AMD_AMDK8 | 2009-10-07 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms9282 | AMD_AMDK8 | 2009-10-07 | server |
|
| msi/ms9282 | AMD_AMDK8 | 2009-10-07 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| nvidia/l1_2pvv | AMD_AMDK8 | 2009-10-07 | eval |
|
| nvidia/l1_2pvv | AMD_AMDK8 | 2009-10-07 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| siemens/sitemp_g1p1 | AMD_AMDK8 | 2011-05-11 | half |
|
| siemens/sitemp_g1p1 | AMD_AMDK8 | 2011-05-11 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| sunw/ultra40 | AMD_AMDK8 | 2009-09-25 | desktop |
|
| sunw/ultra40 | AMD_AMDK8 | 2009-09-25 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| sunw/ultra40m2 | AMD_AMDK8 | 2015-11-10 | desktop |
|
| sunw/ultra40m2 | AMD_AMDK8 | 2015-11-10 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8dme | AMD_AMDK8 | 2009-09-25 | server |
|
| supermicro/h8dme | AMD_AMDK8 | 2009-09-25 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8dmr | AMD_AMDK8 | 2009-10-09 | server |
|
| supermicro/h8dmr | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| technexion/tim5690 | AMD_AMDK8 | 2009-10-13 | half |
|
| technexion/tim5690 | AMD_AMDK8 | 2009-10-13 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| technexion/tim8690 | AMD_AMDK8 | 2009-10-08 | half |
|
| technexion/tim8690 | AMD_AMDK8 | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| traverse/geos | AMD_GEODE_LX | 2010-05-20 | half |
|
| traverse/geos | AMD_GEODE_LX | 2010-05-20 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2912 | AMD_AMDK8 | 2009-10-08 | server |
|
| tyan/s2912 | AMD_AMDK8 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/epia-cn | VIA_C7 | 2009-09-25 | mini |
|
| via/epia-cn | VIA_C7 | 2009-09-25 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/epia-m700 | VIA_C7 | 2009-09-25 | mini |
|
| via/epia-m700 | VIA_C7 | 2009-09-25 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/pc2500e | VIA_C7 | 2009-09-25 | mini |
|
| via/pc2500e | VIA_C7 | 2009-09-25 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| via/vt8454c | VIA_C7 | 2009-08-20 | eval |
|
| via/vt8454c | VIA_C7 | 2009-08-20 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| winent/mb6047 | AMD_AMDK8 | 2013-10-19 | half |
|
| winent/mb6047 | AMD_AMDK8 | 2013-10-19 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| winent/pl6064 | AMD_GEODE_LX | 2010-02-24 | desktop |
|
| winent/pl6064 | AMD_GEODE_LX | 2010-02-24 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| winnet/g170 | VIA_C7 | 2017-08-28 | mini |
|
| winnet/g170 | VIA_C7 | 2017-08-28 | mini |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.7 Release](coreboot-4.7-relnotes.md)
|
## [4.7 Release](coreboot-4.7-relnotes.md)
|
||||||
Tag only
|
Tag only
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| abit/be6-ii_v2_0 | INTEL_I440BX | 2009-08-26 | desktop |
|
| abit/be6-ii_v2_0 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/dinar | AMD_FAMILY15 | 2012-02-17 | eval |
|
| amd/dinar | AMD_FAMILY15 | 2012-02-17 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| amd/rumba | AMD_GEODE_GX2 | 2009-08-29 | half |
|
| amd/rumba | AMD_GEODE_GX2 | 2009-08-29 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/dsbf | INTEL_I5000 | 2012-07-14 | server |
|
| asus/dsbf | INTEL_I5000 | 2012-07-14 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/mew-am | INTEL_I82810 | 2009-08-28 | desktop |
|
| asus/mew-am | INTEL_I82810 | 2009-08-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| asus/mew-vm | INTEL_I82810 | 2009-08-28 | desktop |
|
| asus/mew-vm | INTEL_I82810 | 2009-08-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| a-trend/atc-6220 | INTEL_I440BX | 2009-08-26 | desktop |
|
| a-trend/atc-6220 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| a-trend/atc-6240 | INTEL_I440BX | 2009-08-26 | desktop |
|
| a-trend/atc-6240 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| azza/pt-6ibd | INTEL_I440BX | 2009-08-26 | desktop |
|
| azza/pt-6ibd | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| biostar/m6tba | INTEL_I440BX | 2009-08-26 | desktop |
|
| biostar/m6tba | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| compaq/deskpro_en_sff_p600 | INTEL_I440BX | 2009-08-26 | desktop |
|
| compaq/deskpro_en_sff_p600 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| dmp/vortex86ex | DMP_VORTEX86EX | 2013-07-05 | sbc |
|
| dmp/vortex86ex | DMP_VORTEX86EX | 2013-07-05 | sbc |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ecs/p6iwp-fe | INTEL_I82810 | 2010-06-09 | desktop |
|
| ecs/p6iwp-fe | INTEL_I82810 | 2010-06-09 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ga-6bxc | INTEL_I440BX | 2009-08-26 | desktop |
|
| gigabyte/ga-6bxc | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| gigabyte/ga-6bxe | INTEL_I440BX | 2010-05-14 | desktop |
|
| gigabyte/ga-6bxe | INTEL_I440BX | 2010-05-14 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| hp/e_vectra_p2706t | INTEL_I82810 | 2009-10-20 | desktop |
|
| hp/e_vectra_p2706t | INTEL_I82810 | 2009-10-20 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/d810e2cb | INTEL_I82810 | 2010-06-21 | desktop |
|
| intel/d810e2cb | INTEL_I82810 | 2010-06-21 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/eagleheights | INTEL_I3100 | 2009-09-25 | eval |
|
| intel/eagleheights | INTEL_I3100 | 2009-09-25 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/mtarvon | INTEL_I3100 | 2009-09-25 | eval |
|
| intel/mtarvon | INTEL_I3100 | 2009-09-25 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/truxton | INTEL_I3100 | 2009-09-25 | eval |
|
| intel/truxton | INTEL_I3100 | 2009-09-25 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iwave/iWRainbowG6 | INTEL_SCH | 2010-12-18 | half |
|
| iwave/iWRainbowG6 | INTEL_SCH | 2010-12-18 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lanner/em8510 | INTEL_I855 | 2010-08-30 | desktop |
|
| lanner/em8510 | INTEL_I855 | 2010-08-30 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| lippert/frontrunner | AMD_GEODE_GX2 | 2009-10-08 | half |
|
| lippert/frontrunner | AMD_GEODE_GX2 | 2009-10-08 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| mitac/6513wu | INTEL_I82810 | 2009-08-28 | desktop |
|
| mitac/6513wu | INTEL_I82810 | 2009-08-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms6119 | INTEL_I440BX | 2009-08-26 | desktop |
|
| msi/ms6119 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms6147 | INTEL_I440BX | 2009-08-26 | desktop |
|
| msi/ms6147 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms6156 | INTEL_I440BX | 2009-10-13 | desktop |
|
| msi/ms6156 | INTEL_I440BX | 2009-10-13 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| msi/ms6178 | INTEL_I82810 | 2009-08-28 | desktop |
|
| msi/ms6178 | INTEL_I82810 | 2009-08-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| nec/powermate2000 | INTEL_I82810 | 2009-08-28 | desktop |
|
| nec/powermate2000 | INTEL_I82810 | 2009-08-28 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| nokia/ip530 | INTEL_I440BX | 2010-04-19 | server |
|
| nokia/ip530 | INTEL_I440BX | 2010-04-19 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| rca/rm4100 | INTEL_I82830 | 2009-10-07 | settop |
|
| rca/rm4100 | INTEL_I82830 | 2009-10-07 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| soyo/sy-6ba-plus-iii | INTEL_I440BX | 2009-08-26 | desktop |
|
| soyo/sy-6ba-plus-iii | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8qgi | AMD_FAMILY15 | 2011-07-22 | server |
|
| supermicro/h8qgi | AMD_FAMILY15 | 2011-07-22 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/h8scm | AMD_FAMILY15 | 2012-11-30 | server |
|
| supermicro/h8scm | AMD_FAMILY15 | 2012-11-30 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| supermicro/x7db8 | INTEL_I5000 | 2012-06-23 | server |
|
| supermicro/x7db8 | INTEL_I5000 | 2012-06-23 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| thomson/ip1000 | INTEL_I82830 | 2009-10-08 | settop |
|
| thomson/ip1000 | INTEL_I82830 | 2009-10-08 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s1846 | INTEL_I440BX | 2009-08-26 | desktop |
|
| tyan/s1846 | INTEL_I440BX | 2009-08-26 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s8226 | AMD_FAMILY15 | 2012-10-04 | server |
|
| tyan/s8226 | AMD_FAMILY15 | 2012-10-04 | server |
|
||||||
| wyse/s50 | AMD_GEODE_GX2 | 2010-05-08 | settop |
|
| wyse/s50 | AMD_GEODE_GX2 | 2010-05-08 | settop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.6](coreboot-4.6-relnotes.md)
|
## [4.6](coreboot-4.6-relnotes.md)
|
||||||
Tag only
|
Tag only
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| bifferos/bifferboard | RDC_R8610 | 2012-03-27 | half |
|
| bifferos/bifferboard | RDC_R8610 | 2012-03-27 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/cosmos | MARVELL_BG4CD | 2015-04-09 | eval |
|
| google/cosmos | MARVELL_BG4CD | 2015-04-09 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/bakersport_fsp | INTEL_FSP_BAYTRAIL | 2014-08-11 | eval |
|
| intel/bakersport_fsp | INTEL_FSP_BAYTRAIL | 2014-08-11 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.5](coreboot-4.5-relnotes.md)
|
## [4.5](coreboot-4.5-relnotes.md)
|
||||||
Tag only
|
Tag only
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| google/enguarde | INTEL_BAYTRAIL | 2016-09-21 | laptop |
|
| google/enguarde | INTEL_BAYTRAIL | 2016-09-21 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/falco | INTEL_HASWELL | 2013-11-25 | laptop |
|
| google/falco | INTEL_HASWELL | 2013-11-25 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/guado | INTEL_BROADWELL | 2016-01-12 | half |
|
| google/guado | INTEL_BROADWELL | 2016-01-12 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/ninja | INTEL_BAYTRAIL | 2016-05-31 | half |
|
| google/ninja | INTEL_BAYTRAIL | 2016-05-31 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/panther | INTEL_HASWELL | 2014-07-12 | half |
|
| google/panther | INTEL_HASWELL | 2014-07-12 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/peppy | INTEL_HASWELL | 2013-11-25 | laptop |
|
| google/peppy | INTEL_HASWELL | 2013-11-25 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/rikku | INTEL_BROADWELL | 2016-06-16 | half |
|
| google/rikku | INTEL_BROADWELL | 2016-06-16 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/samus | INTEL_BROADWELL | 2014-08-29 | laptop |
|
| google/samus | INTEL_BROADWELL | 2014-08-29 | laptop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/tidus | INTEL_BROADWELL | 2016-01-21 | half |
|
| google/tidus | INTEL_BROADWELL | 2016-01-21 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.4](coreboot-4.4-relnotes.md)
|
## [4.4](coreboot-4.4-relnotes.md)
|
||||||
Branch created
|
Branch created
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| google/bolt | INTEL_HASWELL | 2013-12-12 | eval |
|
| google/bolt | INTEL_HASWELL | 2013-12-12 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/rush | NVIDIA_TEGRA132 | 2015-01-26 | eval |
|
| google/rush | NVIDIA_TEGRA132 | 2015-01-26 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/rush_ryu | NVIDIA_TEGRA132 | 2015-03-05 | eval |
|
| google/rush_ryu | NVIDIA_TEGRA132 | 2015-03-05 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| google/slippy | INTEL_HASWELL | 2013-11-24 | eval |
|
| google/slippy | INTEL_HASWELL | 2013-11-24 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/amenia | INTEL_APOLLOLAKE | 2016-04-20 | eval |
|
| intel/amenia | INTEL_APOLLOLAKE | 2016-04-20 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.3](coreboot-4.3-relnotes.md)
|
## [4.3](coreboot-4.3-relnotes.md)
|
||||||
@@ -496,51 +296,28 @@ Branch created
|
|||||||
## [4.2](coreboot-4.2-relnotes.md)
|
## [4.2](coreboot-4.2-relnotes.md)
|
||||||
Branch created
|
Branch created
|
||||||
|
|
||||||
```eval_rst
|
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| Vendor/Board | Processor | Date added | Brd type |
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
+=============================+========================+============+==========+
|
|-----------------------------|------------------------|------------|----------|
|
||||||
| arima/hdama | AMD_AMDK8 | 2009-10-09 | server |
|
| arima/hdama | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| digitallogic/adl855pc | INTEL_I855 | 2009-10-09 | half |
|
| digitallogic/adl855pc | INTEL_I855 | 2009-10-09 | half |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ibm/e325 | AMD_AMDK8 | 2009-10-09 | server |
|
| ibm/e325 | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| ibm/e326 | AMD_AMDK8 | 2009-10-09 | server |
|
| ibm/e326 | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| intel/sklrvp | INTEL_SKYLAKE | 2015-07-17 | eval |
|
| intel/sklrvp | INTEL_SKYLAKE | 2015-07-17 | eval |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iwill/dk8s2 | AMD_AMDK8 | 2009-10-09 | server |
|
| iwill/dk8s2 | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| iwill/dk8x | AMD_AMDK8 | 2009-10-09 | server |
|
| iwill/dk8x | AMD_AMDK8 | 2009-10-09 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| newisys/khepri | AMD_AMDK8 | 2009-10-07 | server |
|
| newisys/khepri | AMD_AMDK8 | 2009-10-07 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2735 | INTEL_E7501 | 2009-10-08 | server |
|
| tyan/s2735 | INTEL_E7501 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2850 | AMD_AMDK8 | 2009-09-25 | server |
|
| tyan/s2850 | AMD_AMDK8 | 2009-09-25 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2875 | AMD_AMDK8 | 2009-09-25 | desktop |
|
| tyan/s2875 | AMD_AMDK8 | 2009-09-25 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2880 | AMD_AMDK8 | 2009-10-08 | server |
|
| tyan/s2880 | AMD_AMDK8 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2881 | AMD_AMDK8 | 2009-09-23 | server |
|
| tyan/s2881 | AMD_AMDK8 | 2009-09-23 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2882 | AMD_AMDK8 | 2009-10-08 | server |
|
| tyan/s2882 | AMD_AMDK8 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2885 | AMD_AMDK8 | 2009-10-08 | desktop |
|
| tyan/s2885 | AMD_AMDK8 | 2009-10-08 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2891 | AMD_AMDK8 | 2009-09-22 | server |
|
| tyan/s2891 | AMD_AMDK8 | 2009-09-22 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2892 | AMD_AMDK8 | 2009-09-22 | server |
|
| tyan/s2892 | AMD_AMDK8 | 2009-09-22 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s2895 | AMD_AMDK8 | 2009-09-22 | desktop |
|
| tyan/s2895 | AMD_AMDK8 | 2009-09-22 | desktop |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s4880 | AMD_AMDK8 | 2009-10-08 | server |
|
| tyan/s4880 | AMD_AMDK8 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
| tyan/s4882 | AMD_AMDK8 | 2009-10-08 | server |
|
| tyan/s4882 | AMD_AMDK8 | 2009-10-08 | server |
|
||||||
+-----------------------------+------------------------+------------+----------+
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## [4.1](coreboot-4.1-relnotes.md)
|
## [4.1](coreboot-4.1-relnotes.md)
|
||||||
|
@@ -52,9 +52,9 @@ Deprecations and incompatible changes
|
|||||||
|
|
||||||
Drop the deprecated COREBOOTPAYLOAD option, and replace it with MrChromebox's
|
Drop the deprecated COREBOOTPAYLOAD option, and replace it with MrChromebox's
|
||||||
updated UefiPayloadPkg option. Simplify the Kconfig options to make it easier
|
updated UefiPayloadPkg option. Simplify the Kconfig options to make it easier
|
||||||
to build from upstream edk2 master. Drop the EDK2_USE_8254_TIMER Kconfig
|
to build from upstream edk2 master. Drop the TIANOCORE_USE_8254_TIMER Kconfig
|
||||||
option since it applies only to CorebootPayloadPkg. Clean up the Makefile now
|
option since it applies only to CorebootPayloadPkg. Clean up the Makefile now
|
||||||
that we're only building from a single edk2 package/target.
|
that we're only building from a single Tianocore package/target.
|
||||||
|
|
||||||
### Remove old lp4x and ddr4 versions of spd_tools
|
### Remove old lp4x and ddr4 versions of spd_tools
|
||||||
|
|
||||||
|
@@ -1,190 +1,51 @@
|
|||||||
Upcoming release - coreboot 4.18 release
|
Upcoming release - coreboot 4.18
|
||||||
========================================================================
|
================================
|
||||||
|
|
||||||
The 4.18 release is quite late, but is now planned for October 16, 2022.
|
The 4.18 release is planned for August 2022.
|
||||||
|
|
||||||
In the past 4 months since the 4.17 release, the coreboot project has
|
Update this document with changes that should be in the release notes.
|
||||||
merged more than 1800 commits from over 200 different authors. Over 50
|
|
||||||
of those authors submitted their first patches.
|
|
||||||
|
|
||||||
Welcome and thank you to all of our new contributors, and of course the
|
* Please use Markdown.
|
||||||
work of all of the seasoned contributors is greatly appreciated.
|
* See the past few release notes for the general format.
|
||||||
|
* The chip and board additions and removals will be updated right
|
||||||
|
before the release, so those do not need to be added.
|
||||||
|
|
||||||
|
Significant changes
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
### Add significant changes here
|
||||||
|
|
||||||
|
|
||||||
Significant or interesting changes
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
### sconfig: Allow to specify device operations
|
|
||||||
|
|
||||||
Currently we only have runtime mechanisms to assign device operations to
|
|
||||||
a node in our devicetree (with one exception: the root device). The most
|
|
||||||
common method is to map PCI IDs to the device operations with a `struct
|
|
||||||
pci_driver`. Another accustomed way is to let a chip driver assign them.
|
|
||||||
|
|
||||||
For very common drivers, e.g. those in soc/intel/common/blocks/, the PCI
|
|
||||||
ID lists grew very large and are incredibly error-prone. Often, IDs are
|
|
||||||
missing and sometimes IDs are added almost mechanically without checking
|
|
||||||
the code for compatibility. Maintaining these lists in a central place
|
|
||||||
also reduces flexibility.
|
|
||||||
|
|
||||||
Now, for onboard devices it is actually unnecessary to assign the device
|
|
||||||
operations at runtime. We already know exactly what operations should be
|
|
||||||
assigned. And since we are using chipset devicetrees, we have a perfect
|
|
||||||
place to put that information.
|
|
||||||
|
|
||||||
This patch adds a simple mechanism to `sconfig`. It allows us to speci-
|
|
||||||
fy operations per device, e.g.
|
|
||||||
|
|
||||||
device pci 00.0 alias system_agent on
|
|
||||||
ops system_agent_ops
|
|
||||||
end
|
|
||||||
|
|
||||||
The operations are given as a C identifier. In this example, we simply
|
|
||||||
assume that a global `struct device_operations system_agent_ops` exists.
|
|
||||||
|
|
||||||
|
|
||||||
### Set touchpads to use detect (vs probed) flag
|
|
||||||
|
|
||||||
Historically, ChromeOS devices have worked around the problem of OEMs
|
|
||||||
using several different parts for touchpads/touchscreens by using a
|
|
||||||
ChromeOS kernel-specific 'probed' flag (rejected by the upstream kernel)
|
|
||||||
to indicate that the device may or may not be present, and that the
|
|
||||||
driver should probe to confirm device presence.
|
|
||||||
|
|
||||||
Since release 4.18, coreboot supports detection for i2c devices at
|
|
||||||
runtime when creating the device entries for the ACPI/SSDT tables,
|
|
||||||
rendering the 'probed' flag obsolete for touchpads. Switch all touchpads
|
|
||||||
in the tree from using the 'probed' flag to the 'detect' flag.
|
|
||||||
|
|
||||||
Touchscreens require more involved power sequencing, which will be done
|
|
||||||
at some future time, after which they will switch over as well.
|
|
||||||
|
|
||||||
|
|
||||||
### Add SBOM (Software Bill of Materials) Generation
|
|
||||||
|
|
||||||
Firmware is typically delivered as one large binary image that gets
|
|
||||||
flashed. Since this final image consists of binaries and data from a
|
|
||||||
vast number of different people and companies, it's hard to determine
|
|
||||||
what all the small parts included in it are. The goal of the software
|
|
||||||
bill of materials (SBOM) is to take a firmware image and make it easy to
|
|
||||||
find out what it consists of and where those pieces came from.
|
|
||||||
|
|
||||||
Basically, this answers the question, who supplied the code that's
|
|
||||||
running on my system right now? For example, buyers of a system can use
|
|
||||||
an SBOM to perform an automated vulnerability check or license analysis,
|
|
||||||
both of which can be used to evaluate risk in a product. Furthermore,
|
|
||||||
one can quickly check to see if the firmware is subject to a new
|
|
||||||
vulnerability included in one of the software parts (with the specified
|
|
||||||
version) of the firmware.
|
|
||||||
|
|
||||||
Further reference:
|
|
||||||
https://web.archive.org/web/20220310104905/https://blogs.gnome.org/hughsie/2022/03/10/firmware-software-bill-of-materials/
|
|
||||||
|
|
||||||
- Add Makefile.inc to generate and build coswid tags
|
|
||||||
- Add templates for most payloads, coreboot, intel-microcode,
|
|
||||||
amd-microcode. intel FSP-S/M/T, EC, BIOS_ACM, SINIT_ACM,
|
|
||||||
intel ME and compiler (gcc,clang,other)
|
|
||||||
- Add Kconfig entries to optionally supply a path to CoSWID tags
|
|
||||||
instead of using the default CoSWID tags
|
|
||||||
- Add CBFS entry called SBOM to each build via Makefile.inc
|
|
||||||
- Add goswid utility tool to generate SBOM data
|
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
The following are changes across a number of patches, or changes worth
|
|
||||||
noting, but not needing a full description.
|
|
||||||
|
|
||||||
* Allocator v4 is not yet ready, but received significant work.
|
|
||||||
* Console: create an [smbus console driver](https://doc.coreboot.org/technotes/console.html)
|
|
||||||
* pciexp_device: Numerous updates and fixes
|
|
||||||
* Update checkpatch to match Linux v5.19
|
|
||||||
* Continue updating ACPI to ASL 2.0 syntax
|
|
||||||
* arch/x86: Add a common romstage entry point
|
|
||||||
* Documentation: Add a list of [acronyms](https://doc.coreboot.org/acronyms.html)
|
|
||||||
* Start hooking up ops in devicetree
|
|
||||||
* Large amounts of general code cleanup and improvement, as always
|
|
||||||
* Work to make sure all files have licenses
|
|
||||||
|
|
||||||
|
|
||||||
Payloads
|
|
||||||
--------
|
|
||||||
|
|
||||||
### EDK II (TianoCore)
|
|
||||||
|
|
||||||
coreboot uses TianoCore interchangeably with EDK II, and whilst the
|
|
||||||
meaning is generally clear, it's not the payload it uses.
|
|
||||||
Consequentially, TianoCore has been renamed to EDK II (2).
|
|
||||||
|
|
||||||
The option to use the already deprecated CorebootPayloadPkg has been
|
|
||||||
removed.
|
|
||||||
|
|
||||||
Recent changes to both coreboot and EDK means that UefiPayloadPkg seems
|
|
||||||
to work on all hardware. It has been tested on:
|
|
||||||
|
|
||||||
* Intel Core 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 8th, 9th, 10th,
|
|
||||||
11th and 12th generation processors
|
|
||||||
* Intel Small Core BYT, BSW, APL, GLK and GLK-R processors
|
|
||||||
* AMD Stoney Ridge and Picasso
|
|
||||||
|
|
||||||
CorebootPayloadPkg can still be found [here](https://github.com/MrChromebox/edk2/tree/coreboot_fb).
|
|
||||||
|
|
||||||
The recommended option to use is `EDK2_UEFIPAYLOAD_MRCHROMEBOX` as
|
|
||||||
`EDK2_UEFIPAYLOAD_OFFICIAL` will no longer work on any SoC.
|
|
||||||
|
|
||||||
|
|
||||||
New Mainboards
|
|
||||||
--------------
|
|
||||||
|
|
||||||
* AMD Birman
|
|
||||||
* AMD Pademelon renamed from Padmelon
|
|
||||||
* Google Evoker
|
|
||||||
* Google Frostflow
|
|
||||||
* Google Gaelin4ADL
|
|
||||||
* Google Geralt
|
|
||||||
* Google Joxer
|
|
||||||
* Google Lisbon
|
|
||||||
* Google Magikarp
|
|
||||||
* Google Morthal
|
|
||||||
* Google Pujjo
|
|
||||||
* Google Rex 0
|
|
||||||
* Google Shotzo
|
|
||||||
* Google Skolas
|
|
||||||
* Google Tentacruel
|
|
||||||
* Google Winterhold
|
|
||||||
* Google Xivu
|
|
||||||
* Google Yaviks
|
|
||||||
* Google Zoglin
|
|
||||||
* Google Zombie
|
|
||||||
* Google Zydron
|
|
||||||
* MSI PRO Z690-A WIFI DDR4
|
|
||||||
* Siemens MC APL7
|
|
||||||
|
|
||||||
|
|
||||||
Removed Mainboards
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Google Brya4ES
|
|
||||||
|
|
||||||
|
|
||||||
Updated SoCs
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Added Intel Meteor Lake
|
|
||||||
* Added Mediatek Mt8188
|
|
||||||
* Renamed AMD Sabrina to Mendocino
|
|
||||||
* Added AMD Morgana
|
|
||||||
|
|
||||||
|
|
||||||
Plans for Code Deprecation
|
Plans for Code Deprecation
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
|
||||||
|
### Intel Icelake
|
||||||
|
|
||||||
|
Intel Icelake code will be removed following the 4.19 release, planned
|
||||||
|
for November 2022. This consists of the Intel Icelake SOC and Intel
|
||||||
|
Icelake RVP mainboard
|
||||||
|
|
||||||
|
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
||||||
|
was the CRB board. From the looks of it the code never was ready for
|
||||||
|
production as only engineering sample CPUIDs are supported. This reduces
|
||||||
|
the maintanence overhead for the coreboot project.
|
||||||
|
|
||||||
|
|
||||||
### LEGACY_SMP_INIT
|
### LEGACY_SMP_INIT
|
||||||
|
|
||||||
Legacy SMP init will be removed from the coreboot master branch
|
Legacy SMP init will be removed from the coreboot master branch
|
||||||
immediately following this release. Anyone looking for the latest
|
immediately following this release. Anyone looking for the latest
|
||||||
version of the code should find it on the 4.18 branch or tag.
|
version of the code should find it on the 4.18 branch.
|
||||||
|
|
||||||
This also includes the codepath for SMM_ASEG. This code is used to start
|
This also includes the codepath for SMM_ASEG. This code is used to start
|
||||||
APs and do some feature programming on each AP, but also set up SMM.
|
APs and do some feature programming on each AP, but also set up SMM.
|
||||||
@@ -193,44 +54,3 @@ cover all use cases of LEGACY_SMP_INIT, with little code changes. The
|
|||||||
reason for deprecation is that having 2 codepaths to do the virtually
|
reason for deprecation is that having 2 codepaths to do the virtually
|
||||||
the same increases maintenance burden on the community a lot, while also
|
the same increases maintenance burden on the community a lot, while also
|
||||||
being rather confusing.
|
being rather confusing.
|
||||||
|
|
||||||
|
|
||||||
### Intel Icelake SoC & Icelake RVP mainboard
|
|
||||||
|
|
||||||
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
|
||||||
was the Intel CRB (Customer Reference Board). From the looks of it the
|
|
||||||
code was never ready for production as only engineering sample CPUIDs
|
|
||||||
are supported. This reduces the maintanence overhead for the coreboot
|
|
||||||
project.
|
|
||||||
|
|
||||||
Intel Icelake code will be removed with release 4.19 and any maintenence
|
|
||||||
will be done on the 4.19 branch. This consists of the Intel Icelake SoC
|
|
||||||
and Intel Icelake RVP mainboard.
|
|
||||||
|
|
||||||
|
|
||||||
### Intel Quark SoC & Galileo mainboard
|
|
||||||
|
|
||||||
The SoC Intel Quark is unmaintained and different efforts to revive it
|
|
||||||
failed. Also, the only user of this platform ever was the Galileo
|
|
||||||
board.
|
|
||||||
|
|
||||||
Thus, to reduce the maintanence overhead for the community, support for
|
|
||||||
the following components will be removed from the master branch and will
|
|
||||||
be maintained on the release 4.20 branch.
|
|
||||||
|
|
||||||
* Intel Quark SoC
|
|
||||||
* Intel Galileo mainboard
|
|
||||||
|
|
||||||
|
|
||||||
Statistics
|
|
||||||
----------
|
|
||||||
|
|
||||||
- Total Commits: 1819
|
|
||||||
- Average Commits per day: 13.44
|
|
||||||
- Total lines added: 150195
|
|
||||||
- Average lines added per commit: 82.57
|
|
||||||
- Number of patches adding more than 100 lines: 127
|
|
||||||
- Average lines added per small commit: 38.38
|
|
||||||
- Total lines removed: 33788
|
|
||||||
- Average lines removed per commit: 18.58
|
|
||||||
- Total difference between added and removed: 116407
|
|
||||||
|
@@ -1,64 +0,0 @@
|
|||||||
Upcoming release - coreboot 4.19
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
The 4.19 release is planned for January 2023.
|
|
||||||
|
|
||||||
Update this document with changes that should be in the release notes.
|
|
||||||
|
|
||||||
* Please use Markdown.
|
|
||||||
* See the past few release notes for the general format.
|
|
||||||
* The chip and board additions and removals will be updated right
|
|
||||||
before the release, so those do not need to be added.
|
|
||||||
* Note that all changes before the release are done are marked upcoming.
|
|
||||||
A final version of the notes are done after the release.
|
|
||||||
|
|
||||||
Significant changes
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
### Add significant changes here
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
* One or two line change comments go here
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Payloads
|
|
||||||
--------
|
|
||||||
|
|
||||||
### Payload changes go here
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Plans for Code Deprecation
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
|
|
||||||
### Intel Icelake SoC & Icelake RVP mainboard
|
|
||||||
|
|
||||||
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
|
||||||
was the Intel CRB (Customer Reference Board). From the looks of it the
|
|
||||||
code was never ready for production as only engineering sample CPUIDs
|
|
||||||
are supported. This reduces the maintanence overhead for the coreboot
|
|
||||||
project.
|
|
||||||
|
|
||||||
Intel Icelake code will be removed with release 4.19 and any maintenence
|
|
||||||
will be done on the 4.19 branch. This consists of the Intel Icelake SoC
|
|
||||||
and Intel Icelake RVP mainboard.
|
|
||||||
|
|
||||||
|
|
||||||
### Intel Quark SoC & Galileo mainboard
|
|
||||||
|
|
||||||
The SoC Intel Quark is unmaintained and different efforts to revive it
|
|
||||||
failed. Also, the only user of this platform ever was the Galileo
|
|
||||||
board.
|
|
||||||
|
|
||||||
Thus, to reduce the maintanence overhead for the community, support for
|
|
||||||
the following components will be removed from the master branch and will
|
|
||||||
be maintained on the release 4.20 branch.
|
|
||||||
|
|
||||||
* Intel Quark SoC
|
|
||||||
* Intel Galileo mainboard
|
|
@@ -55,15 +55,15 @@ is here: https://github.com/siro20/coreboot/tree/cbui/payloads/cbui
|
|||||||
|
|
||||||
### UEFI support: A long road to go
|
### UEFI support: A long road to go
|
||||||
|
|
||||||
coreboot can be used with the edk2 UEFI implementation which
|
coreboot can be used with the Tianocore EDK2 UEFI implementation which
|
||||||
is open source and available at Github. Sadly it is not currently
|
is open source and available at Github. Sadly it is not currently
|
||||||
integrated into the coreboot build. This has several reasons:
|
integrated into the coreboot build. This has several reasons:
|
||||||
|
|
||||||
* edk2 only supports GCC 4.8 profile. coreboot is now running on GCC 6.3.0.
|
* EDK2 only supports GCC 4.8 profile. coreboot is now running on GCC 6.3.0.
|
||||||
* Incompatibilities with code inside the edk2 which has not been updated.
|
* Incompatibilities with code inside the EDK2 which has not been updated.
|
||||||
|
|
||||||
We started to make progress with the integration into our sources and
|
We started to make progress with the integration into our sources and
|
||||||
the hope is that by the end of the summer, we finally support the edk2
|
the hope is that by the end of the summer, we finally support the EDK2
|
||||||
payload out-of-the- box. See the current patch state at
|
payload out-of-the- box. See the current patch state at
|
||||||
http://review.coreboot.org/#/c/15057/
|
http://review.coreboot.org/#/c/15057/
|
||||||
|
|
||||||
|
@@ -84,7 +84,7 @@ General changes
|
|||||||
|
|
||||||
* Integrate me_cleaner
|
* Integrate me_cleaner
|
||||||
* Add flashconsole implementation
|
* Add flashconsole implementation
|
||||||
* Build edk2 UEFI payload from upstream source
|
* Build Tianocore UEFI payload from upstream source
|
||||||
* Remove CMOS NVRAM configurable baud rates
|
* Remove CMOS NVRAM configurable baud rates
|
||||||
* A common mrc_cache driver to store romstage settings in SPI flash
|
* A common mrc_cache driver to store romstage settings in SPI flash
|
||||||
|
|
||||||
|
@@ -71,7 +71,7 @@ detection
|
|||||||
Payloads
|
Payloads
|
||||||
--------
|
--------
|
||||||
* Bumped SeaBIOS to 1.11.1
|
* Bumped SeaBIOS to 1.11.1
|
||||||
* Improved edk2 integration
|
* Improved TianoCore integration
|
||||||
|
|
||||||
Security
|
Security
|
||||||
--------
|
--------
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
## Upcoming release
|
## Upcoming release
|
||||||
|
|
||||||
Please add to the release notes as changes are added:
|
Please add to the release notes as changes are added:
|
||||||
* [4.19 - Jan 2023](coreboot-4.19-relnotes.md)
|
* [4.18 - Aug 2022](coreboot-4.18-relnotes.md)
|
||||||
|
|
||||||
The [checklist] contains instructions to ensure that a release covers all
|
The [checklist] contains instructions to ensure that a release covers all
|
||||||
important things and provides a reliable format for tarballs, branch
|
important things and provides a reliable format for tarballs, branch
|
||||||
@@ -15,7 +15,6 @@ important is taken care of.
|
|||||||
|
|
||||||
## Previous releases
|
## Previous releases
|
||||||
|
|
||||||
* [4.18 - Oct 2022](coreboot-4.18-relnotes.md)
|
|
||||||
* [4.17 - May 2022](coreboot-4.17-relnotes.md)
|
* [4.17 - May 2022](coreboot-4.17-relnotes.md)
|
||||||
* [4.16 - Feb 2022](coreboot-4.16-relnotes.md)
|
* [4.16 - Feb 2022](coreboot-4.16-relnotes.md)
|
||||||
* [4.15 - November 2021](coreboot-4.15-relnotes.md)
|
* [4.15 - November 2021](coreboot-4.15-relnotes.md)
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
# vboot-enabled devices
|
# vboot-enabled devices
|
||||||
|
|
||||||
## AMD
|
## AMD
|
||||||
- Birman
|
|
||||||
- Chausie
|
- Chausie
|
||||||
- Majolica
|
- Majolica
|
||||||
|
|
||||||
@@ -36,6 +35,7 @@
|
|||||||
- Anahera4ES
|
- Anahera4ES
|
||||||
- Brask
|
- Brask
|
||||||
- Brya 0
|
- Brya 0
|
||||||
|
- Brya4ES
|
||||||
- Felwinter
|
- Felwinter
|
||||||
- Gimble
|
- Gimble
|
||||||
- Gimble4ES
|
- Gimble4ES
|
||||||
@@ -46,8 +46,6 @@
|
|||||||
- Primus4ES
|
- Primus4ES
|
||||||
- Redrix
|
- Redrix
|
||||||
- Redrix4ES
|
- Redrix4ES
|
||||||
- Skolas
|
|
||||||
- Skolas4ES
|
|
||||||
- Taeko
|
- Taeko
|
||||||
- Taeko4ES
|
- Taeko4ES
|
||||||
- Taniks
|
- Taniks
|
||||||
@@ -57,26 +55,12 @@
|
|||||||
- Crota
|
- Crota
|
||||||
- Moli
|
- Moli
|
||||||
- Kinox
|
- Kinox
|
||||||
- Craask
|
|
||||||
- Osiris
|
|
||||||
- Mithrax
|
|
||||||
- Kuldax
|
|
||||||
- Joxer
|
|
||||||
- Pujjo
|
|
||||||
- Xivu
|
|
||||||
- Gaelin4ADL
|
|
||||||
- Yaviks
|
|
||||||
- Lisbon
|
|
||||||
- Zydron
|
|
||||||
- Butterfly (HP Pavilion Chromebook 14)
|
- Butterfly (HP Pavilion Chromebook 14)
|
||||||
- Cherry
|
- Cherry
|
||||||
- Dojo
|
- Dojo
|
||||||
- Tomato
|
- Tomato
|
||||||
- Kingler
|
- Kingler
|
||||||
- Steelix
|
|
||||||
- Krabby
|
- Krabby
|
||||||
- Tentacruel
|
|
||||||
- Magikarp
|
|
||||||
- Banon (Acer Chromebook 15 (CB3-532))
|
- Banon (Acer Chromebook 15 (CB3-532))
|
||||||
- Celes (Samsung Chromebook 3)
|
- Celes (Samsung Chromebook 3)
|
||||||
- Cyan (Acer Chromebook R11 (C738T))
|
- Cyan (Acer Chromebook R11 (C738T))
|
||||||
@@ -88,6 +72,7 @@
|
|||||||
- Terra (ASUS Chromebook C202SA/C300SA/C301SA)
|
- Terra (ASUS Chromebook C202SA/C300SA/C301SA)
|
||||||
- Ultima (Lenovo Yoga 11e G3)
|
- Ultima (Lenovo Yoga 11e G3)
|
||||||
- Wizpig
|
- Wizpig
|
||||||
|
- Daisy (Samsung Chromebook (2012))
|
||||||
- Drallion
|
- Drallion
|
||||||
- Eve (Google Pixelbook)
|
- Eve (Google Pixelbook)
|
||||||
- Fizz
|
- Fizz
|
||||||
@@ -95,7 +80,6 @@
|
|||||||
- Endeavour
|
- Endeavour
|
||||||
- Foster
|
- Foster
|
||||||
- Gale (Google WiFi)
|
- Gale (Google WiFi)
|
||||||
- Geralt
|
|
||||||
- Asuka (Dell Chromebook 13 3380)
|
- Asuka (Dell Chromebook 13 3380)
|
||||||
- Caroline (Samsung Chromebook Pro)
|
- Caroline (Samsung Chromebook Pro)
|
||||||
- Cave (Asus Chromebook Flip C302SA)
|
- Cave (Asus Chromebook Flip C302SA)
|
||||||
@@ -113,25 +97,34 @@
|
|||||||
- Nipperkin
|
- Nipperkin
|
||||||
- Dewatt
|
- Dewatt
|
||||||
- Akemi (IdeaPad Flex 5/5i Chromebook)
|
- Akemi (IdeaPad Flex 5/5i Chromebook)
|
||||||
|
- Ambassador
|
||||||
|
- Dooly
|
||||||
- Dratini (HP Pro c640 Chromebook)
|
- Dratini (HP Pro c640 Chromebook)
|
||||||
|
- Duffy Legacy (32MB)
|
||||||
|
- Duffy (ASUS Chromebox 4)
|
||||||
|
- Faffy (ASUS Fanless Chromebox)
|
||||||
|
- Genesis
|
||||||
- Hatch
|
- Hatch
|
||||||
- Helios (ASUS Chromebook Flip C436FA)
|
- Helios (ASUS Chromebook Flip C436FA)
|
||||||
- Helios_Diskswap
|
- Helios_Diskswap
|
||||||
- Jinlon (HP Elite c1030 Chromebook)
|
- Jinlon (HP Elite c1030 Chromebook)
|
||||||
|
- Kaisa Legacy (32MB)
|
||||||
|
- Kaisa (Acer Chromebox CXI4)
|
||||||
- Kindred (Acer Chromebook 712)
|
- Kindred (Acer Chromebook 712)
|
||||||
- Kohaku (Samsung Galaxy Chromebook)
|
- Kohaku (Samsung Galaxy Chromebook)
|
||||||
|
- Moonbuggy
|
||||||
- Mushu
|
- Mushu
|
||||||
- Nightfury (Samsung Galaxy Chromebook 2)
|
- Nightfury (Samsung Galaxy Chromebook 2)
|
||||||
|
- Noibat (HP Chromebox G3)
|
||||||
- Palkia
|
- Palkia
|
||||||
|
- Puff
|
||||||
|
- Scout
|
||||||
|
- Wyvern (CTL Chromebox CBx2)
|
||||||
- Herobrine
|
- Herobrine
|
||||||
- Herobrine_Rev0
|
- Herobrine_Rev0
|
||||||
- Senor
|
- Senor
|
||||||
- Piglin
|
- Piglin
|
||||||
- Hoglin
|
- Hoglin
|
||||||
- Villager
|
|
||||||
- Evoker
|
|
||||||
- Zoglin
|
|
||||||
- Zombie
|
|
||||||
- Guado (ASUS Chromebox CN62)
|
- Guado (ASUS Chromebox CN62)
|
||||||
- Jecht
|
- Jecht
|
||||||
- Rikku (Acer Chromebox CXI2)
|
- Rikku (Acer Chromebox CXI2)
|
||||||
@@ -171,26 +164,14 @@
|
|||||||
- Elm (Acer Chromebook R13)
|
- Elm (Acer Chromebook R13)
|
||||||
- Hana (Lenovo N23 Yoga Chromebook)
|
- Hana (Lenovo N23 Yoga Chromebook)
|
||||||
- Parrot (Acer C7/C710 Chromebook)
|
- Parrot (Acer C7/C710 Chromebook)
|
||||||
|
- Peach Pit (Samsung Chromebook 2 11\")
|
||||||
- Atlas (Google Pixelbook Go)
|
- Atlas (Google Pixelbook Go)
|
||||||
- Poppy
|
- Poppy
|
||||||
- Nami
|
- Nami
|
||||||
- Nautilus (Samsung Chromebook Plus V2, V2 LTE)
|
- Nautilus (Samsung Chromebook Plus V2, V2 LTE)
|
||||||
- Nocturne (Google Pixel Slate)
|
- Nocturne (Google Pixel Slate)
|
||||||
- Rammus
|
- Rammus (Asus Chromebook C425, Flip C433, Flip C434)
|
||||||
- Soraka (HP Chromebook x2)
|
- Soraka (HP Chromebook x2)
|
||||||
- Ambassador
|
|
||||||
- Dooly
|
|
||||||
- Duffy Legacy (32MB)
|
|
||||||
- Duffy (ASUS Chromebox 4)
|
|
||||||
- Faffy (ASUS Fanless Chromebox)
|
|
||||||
- Genesis
|
|
||||||
- Kaisa Legacy (32MB)
|
|
||||||
- Kaisa (Acer Chromebox CXI4)
|
|
||||||
- Moonbuggy
|
|
||||||
- Noibat (HP Chromebox G3)
|
|
||||||
- Puff
|
|
||||||
- Scout
|
|
||||||
- Wyvern (CTL Chromebox CBx2)
|
|
||||||
- Banjo (Acer Chromebook 15 (CB3-531))
|
- Banjo (Acer Chromebook 15 (CB3-531))
|
||||||
- Candy (Dell Chromebook 11 3120)
|
- Candy (Dell Chromebook 11 3120)
|
||||||
- Clapper (Lenovo N20 Chromebook)
|
- Clapper (Lenovo N20 Chromebook)
|
||||||
@@ -212,13 +193,8 @@
|
|||||||
- Sand (Acer Chromebook 15 CB515-1HT/1H)
|
- Sand (Acer Chromebook 15 CB515-1HT/1H)
|
||||||
- Snappy (HP Chromebook x360 11 G1 EE)
|
- Snappy (HP Chromebook x360 11 G1 EE)
|
||||||
- Coral
|
- Coral
|
||||||
- Rex 0
|
|
||||||
- Arcada (Latitude 5300 2-in-1 Chromebook Enterprise)
|
- Arcada (Latitude 5300 2-in-1 Chromebook Enterprise)
|
||||||
- Sarien (Dell Latitude 5400 Chromebook Enterprise)
|
- Sarien (Dell Latitude 5400 Chromebook Enterprise)
|
||||||
- Skyrim
|
|
||||||
- Winterhold
|
|
||||||
- Morthal
|
|
||||||
- Frostflow
|
|
||||||
- Falco (HP Chromebook 14)
|
- Falco (HP Chromebook 14)
|
||||||
- Leon (Toshiba Chromebook)
|
- Leon (Toshiba Chromebook)
|
||||||
- Peppy (Acer C720/C720P Chromebook)
|
- Peppy (Acer C720/C720P Chromebook)
|
||||||
@@ -246,25 +222,6 @@
|
|||||||
- Veyron_Speedy (ASUS C201 Chromebook)
|
- Veyron_Speedy (ASUS C201 Chromebook)
|
||||||
- Veyron_Mickey (Asus Chromebit CS10)
|
- Veyron_Mickey (Asus Chromebit CS10)
|
||||||
- Veyron_Rialto
|
- Veyron_Rialto
|
||||||
- Delbin (ASUS Chromebook Flip CX5)
|
|
||||||
- Eldrid
|
|
||||||
- Halvor
|
|
||||||
- Lindar
|
|
||||||
- Malefor
|
|
||||||
- Terrador
|
|
||||||
- Todor
|
|
||||||
- Trondo
|
|
||||||
- Volteer
|
|
||||||
- Volteer2
|
|
||||||
- Volteer2_Ti50
|
|
||||||
- Voxel (Acer Chromebook Spin 713 (CP713-3W))
|
|
||||||
- Elemi (HP Pro c640 G2 Chromebook)
|
|
||||||
- Voema
|
|
||||||
- Drobit (ASUS Chromebook CX9400)
|
|
||||||
- Copano (ASUS Chromebook Flip CX5400)
|
|
||||||
- Collis
|
|
||||||
- Volet
|
|
||||||
- Chronicler
|
|
||||||
- Dalboz
|
- Dalboz
|
||||||
- Vilboz (Lenovo 100e/300e Gen3 AMD)
|
- Vilboz (Lenovo 100e/300e Gen3 AMD)
|
||||||
- Ezkinil (Acer Chromebook Spin 514)
|
- Ezkinil (Acer Chromebook Spin 514)
|
||||||
@@ -277,7 +234,6 @@
|
|||||||
- Gumboz (HP Chromebook x360 14a)
|
- Gumboz (HP Chromebook x360 14a)
|
||||||
|
|
||||||
## HP
|
## HP
|
||||||
- Z220 CMT Workstation
|
|
||||||
- Z220 SFF Workstation
|
- Z220 SFF Workstation
|
||||||
|
|
||||||
## Intel
|
## Intel
|
||||||
@@ -288,7 +244,6 @@
|
|||||||
- Alderlake-M RVP with Chrome EC
|
- Alderlake-M RVP with Chrome EC
|
||||||
- Alderlake-N RVP
|
- Alderlake-N RVP
|
||||||
- Alderlake-N RVP with Chrome EC
|
- Alderlake-N RVP with Chrome EC
|
||||||
- Raptorlake silicon with Alderlake-P RVP and Chrome EC
|
|
||||||
- Basking Ridge CRB
|
- Basking Ridge CRB
|
||||||
- Coffeelake U SO-DIMM DDR4 RVP
|
- Coffeelake U SO-DIMM DDR4 RVP
|
||||||
- Coffeelake H SO-DIMM DDR4 RVP11
|
- Coffeelake H SO-DIMM DDR4 RVP11
|
||||||
@@ -315,8 +270,6 @@
|
|||||||
- Whitetip Mountain 2 CRB
|
- Whitetip Mountain 2 CRB
|
||||||
|
|
||||||
## Lenovo
|
## Lenovo
|
||||||
- ThinkPad T440p
|
|
||||||
- ThinkPad W541
|
|
||||||
- ThinkPad T400
|
- ThinkPad T400
|
||||||
- ThinkPad T500
|
- ThinkPad T500
|
||||||
- ThinkPad R400
|
- ThinkPad R400
|
||||||
@@ -328,6 +281,7 @@
|
|||||||
- ThinkPad T430
|
- ThinkPad T430
|
||||||
- ThinkPad T430s
|
- ThinkPad T430s
|
||||||
- ThinkPad T431s
|
- ThinkPad T431s
|
||||||
|
- ThinkPad T440p
|
||||||
- ThinkPad T520
|
- ThinkPad T520
|
||||||
- ThinkPad W520
|
- ThinkPad W520
|
||||||
- ThinkPad T530
|
- ThinkPad T530
|
||||||
@@ -345,9 +299,6 @@
|
|||||||
- ThinkPad X230s
|
- ThinkPad X230s
|
||||||
- ThinkPad X60 / X60s / X60t
|
- ThinkPad X60 / X60s / X60t
|
||||||
|
|
||||||
## MSI
|
|
||||||
- PRO Z690-A WIFI DDR4
|
|
||||||
|
|
||||||
## OpenCellular
|
## OpenCellular
|
||||||
- Elgon (GBCv2)
|
- Elgon (GBCv2)
|
||||||
|
|
||||||
@@ -362,11 +313,6 @@
|
|||||||
- MC APL4
|
- MC APL4
|
||||||
- MC APL5
|
- MC APL5
|
||||||
- MC APL6
|
- MC APL6
|
||||||
- MC APL7
|
|
||||||
|
|
||||||
## Star Labs
|
|
||||||
- Star Labs Lite Mk III (N5000)
|
|
||||||
- Star Labs Lite Mk IV (N5030)
|
|
||||||
|
|
||||||
## Supermicro
|
## Supermicro
|
||||||
- X11SSH-TF
|
- X11SSH-TF
|
||||||
|
@@ -117,23 +117,14 @@ implementations currently use combo tables.
|
|||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Size | 0x04 | 32 | Size of PSP entry in bytes |
|
| Size | 0x04 | 32 | Size of PSP entry in bytes |
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Location / | 0x08 | 62 | Location: Physical Address |
|
| Location / | 0x08 | 64 | Location: Physical Address |
|
||||||
| Value | | | of SPIROM location where |
|
| Value | | | of SPIROM location where |
|
||||||
| | | | corresponding PSP entry |
|
| | | | corresponding PSP entry |
|
||||||
| | | | located. |
|
| | | | located. |
|
||||||
| | | | |
|
| | | | |
|
||||||
| | | | Value: 62-bit value for the|
|
| | | | Value: 64-bit value for the|
|
||||||
| | | | PSP Entry |
|
| | | | PSP Entry |
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Address Mode | 0x0F[7:6] | 2 | 00: x86 Physical address |
|
|
||||||
| | | | 01: offset from start of |
|
|
||||||
| | | | BIOS (flash offset) |
|
|
||||||
| | | | 02: offset from start of |
|
|
||||||
| | | | directory header |
|
|
||||||
| | | | 03: offset from start of |
|
|
||||||
| | | | partition |
|
|
||||||
+--------------+---------------+------------------+----------------------------+
|
|
||||||
|
|
||||||
```
|
```
|
||||||
### PSP Directory Table Types
|
### PSP Directory Table Types
|
||||||
|
|
||||||
@@ -181,10 +172,6 @@ implementations currently use combo tables.
|
|||||||
* Intermediate Key Encryption Key, used to decrypt encrypted firmware images.
|
* Intermediate Key Encryption Key, used to decrypt encrypted firmware images.
|
||||||
This is mandatory in order to support encrypted firmware.
|
This is mandatory in order to support encrypted firmware.
|
||||||
|
|
||||||
**0x22**: PSP Token Unlock data
|
|
||||||
* Used to support time-bound Secure Debug unlock during boot. This entry may
|
|
||||||
be omitted if the Token Unlock debug feature is not required.
|
|
||||||
|
|
||||||
**0x24**: Security policy binary
|
**0x24**: Security policy binary
|
||||||
* A security policy is applied to restrict the untrusted access to security
|
* A security policy is applied to restrict the untrusted access to security
|
||||||
sensitive regions.
|
sensitive regions.
|
||||||
@@ -213,6 +200,10 @@ implementations currently use combo tables.
|
|||||||
**0x52**: PSP boot loader usermode OEM application
|
**0x52**: PSP boot loader usermode OEM application
|
||||||
* Supported only in certain SKUs.
|
* Supported only in certain SKUs.
|
||||||
|
|
||||||
|
**0x22**: PSP Token Unlock data
|
||||||
|
* Used to support time-bound Secure Debug unlock during boot. This entry may
|
||||||
|
be omitted if the Token Unlock debug feature is not required.
|
||||||
|
|
||||||
### Firmware Version of Binaries
|
### Firmware Version of Binaries
|
||||||
|
|
||||||
Every firmware binary contains 256 bytes of a PSP Header, which includes
|
Every firmware binary contains 256 bytes of a PSP Header, which includes
|
||||||
@@ -311,25 +302,15 @@ The BIOS Directory table structure is slightly different from the PSP Directory:
|
|||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| SubProgram | 0x03[2:0] | 3 | Specify the SubProgram |
|
| SubProgram | 0x03[2:0] | 3 | Specify the SubProgram |
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| RomId | 0x03[4:3] | 2 | Which SPI device the |
|
| Reserved | 0x03[7:3] | 5 | Reserved - Set to zero |
|
||||||
| | | | content is placed in |
|
|
||||||
+--------------+---------------+------------------+----------------------------+
|
|
||||||
| Writeable | 0x03[5] | 1 | Region is writable or read |
|
|
||||||
| | | | only |
|
|
||||||
+--------------+---------------+------------------+----------------------------+
|
|
||||||
| Reserved | 0x03[7:6] | 2 | Reserved - Set to zero |
|
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Size | 0x04 | 32 | Memory Region Size |
|
| Size | 0x04 | 32 | Memory Region Size |
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Source | 0x08 | 62 | Physical Address of SPIROM |
|
| Source | 0x08 | 64 | Physical Address of SPIROM |
|
||||||
| Address | | | location where the data for|
|
| Address | | | location where the data for|
|
||||||
| | | | the corresponding entry is |
|
| | | | the corresponding entry is |
|
||||||
| | | | located |
|
| | | | located |
|
||||||
+--------------+---------------+------------------+----------------------------+
|
+--------------+---------------+------------------+----------------------------+
|
||||||
| Entry Address| 0x0F[7:6] | 2 | Same as Entry Address Mode |
|
|
||||||
| Mode | | | in PSP directory table |
|
|
||||||
| | | | entry fields |
|
|
||||||
+--------------+---------------+------------------+----------------------------+
|
|
||||||
| Destination | 0x10 | 64 | Destination Address of |
|
| Destination | 0x10 | 64 | Destination Address of |
|
||||||
| Address | | | memory location where the |
|
| Address | | | memory location where the |
|
||||||
| | | | data for the corresponding |
|
| | | | data for the corresponding |
|
||||||
|
@@ -1,66 +0,0 @@
|
|||||||
# coreboot Console
|
|
||||||
|
|
||||||
coreboot supports multiple ways to access its console.
|
|
||||||
https://www.coreboot.org/Console_and_outputs
|
|
||||||
|
|
||||||
|
|
||||||
## SMBus Console
|
|
||||||
|
|
||||||
SMBus is a two-wire interface which is based on the principles of
|
|
||||||
operation of I2C. SMBus, was first was designed to allow a battery to
|
|
||||||
communicate with the charger, the system host, and/or other
|
|
||||||
power-related components in the system.
|
|
||||||
|
|
||||||
Enable the SMBus console with `CONSOLE_I2C_SMBUS` Kconfig. Set
|
|
||||||
`CONSOLE_I2C_SMBUS_SLAVE_ADDRESS` and
|
|
||||||
`CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER` configuration values of the
|
|
||||||
slave I2C device which you will use to capture I2C packets.
|
|
||||||
|
|
||||||
Modern computer Random Access Memory (RAM) slot has SMBus in it
|
|
||||||
according to the JEDEC standards. We can use a breakout-board to expose
|
|
||||||
those SMBus pins. Some mainboard have SMBus pins in the PCIe slot as
|
|
||||||
well.
|
|
||||||
|
|
||||||
This feature has been tested on the following platforms:
|
|
||||||
```eval_rst
|
|
||||||
+------------------------------------+
|
|
||||||
| Tested platforms |
|
|
||||||
+====================================+
|
|
||||||
| GA-H61M-S2PV + Intel Ivy Bridge |
|
|
||||||
+---------------------+---------------
|
|
||||||
```
|
|
||||||
|
|
||||||
A minimal DDR3 DIMM breakout board PCB design with only the
|
|
||||||
SDA(Data line) and SCL(Clock line) pins of I2C/SMBus can be found
|
|
||||||
[here](https://github.com/drac98/ram-breakout-board).
|
|
||||||
See the PCB layout [here](https://archive.org/details/ddr3-dimm-F_Cu)
|
|
||||||
|
|
||||||
NOTE:
|
|
||||||
To capture the I2C packets, an I2C slave device is required. The easiest
|
|
||||||
way to capture the log message is to use a I2C to UART converter chip
|
|
||||||
with a UART to USB converter chip. The setup would be as follows.
|
|
||||||
```text
|
|
||||||
+---------+ +-------------+ +-------------+
|
|
||||||
+ PC +----+ UART to USB +----+ I2C to UART |
|
|
||||||
+---------+ +-------------+ +-------------+
|
|
||||||
| |
|
|
||||||
------------------------------------------------+-- System Management
|
|
||||||
----------------------------------------------+---- Bus
|
|
||||||
```
|
|
||||||
|
|
||||||
Watch this [video](https://youtu.be/Q0dK41n9db8) to see how it is set
|
|
||||||
up. A backup of the video is available
|
|
||||||
[here](https://web.archive.org/web/20220916172605/https://www.youtube.com/watch?v=Q0dK41n9db8)
|
|
||||||
|
|
||||||
If you are using any of the `SC16IS740/750/760` I2C to UART converter
|
|
||||||
chip, you can enable the `SC16IS7XX_INIT` option to initialize the chip.
|
|
||||||
|
|
||||||
If not we can use other I2C slave devices like an Arduino or a
|
|
||||||
Beagleboard.
|
|
||||||
* [Linux I2C Slave interface](https://web.archive.org/web/20220926173943/https://www.kernel.org/doc/html/latest/i2c/slave-interface.html)
|
|
||||||
* [BeagleBone Black I2C Slave](https://web.archive.org/web/20220926171211/https://forum.beagleboard.org/t/beaglebone-black-and-arduino-uno-i2c-communication-using-c/29990/8)
|
|
||||||
|
|
||||||
This feature was added as part of a GSoC 2022 project. Checkout the
|
|
||||||
following blog posts for more details.
|
|
||||||
* [coreboot Console via SMBus — Part I](https://medium.com/@husnifaiz/coreboot-console-via-smbus-introduction-38273691a8ac)
|
|
||||||
* [coreboot Console via SMBus — Part II](https://medium.com/@husnifaiz/coreboot-console-via-smbus-part-ii-bc324fdd2f24)
|
|
@@ -5,4 +5,3 @@
|
|||||||
* [Unit testing coreboot](2020-03-unit-testing-coreboot.md)
|
* [Unit testing coreboot](2020-03-unit-testing-coreboot.md)
|
||||||
* [Unit Test Code Coverage](2021-05-code-coverage.md)
|
* [Unit Test Code Coverage](2021-05-code-coverage.md)
|
||||||
* [Address Sanitizer](asan.md)
|
* [Address Sanitizer](asan.md)
|
||||||
* [coreboot Consoles](console.md)
|
|
||||||
|
@@ -19,45 +19,5 @@ It is possible to set the onboard flash on hold and use another flash chip.
|
|||||||
Connect all lines one-to-one, except /HOLD. Pull /HOLD of the soldered flash IC
|
Connect all lines one-to-one, except /HOLD. Pull /HOLD of the soldered flash IC
|
||||||
low, and /HOLD of your replacement flash IC high.
|
low, and /HOLD of your replacement flash IC high.
|
||||||
|
|
||||||
### SPI header
|
|
||||||
Some boards feature a pin header which is connected to the SPI bus. This can
|
|
||||||
also be used to connect a secondary flash chip.
|
|
||||||
|
|
||||||
#### HP boards
|
|
||||||
Many HP desktop mainboards have a 2x8 or 2x10 block of header pins which
|
|
||||||
can be used to connect a second flash chip. One pin is connected to the
|
|
||||||
onboard flash's /CS pin, and another is connected to the chipset's /CS
|
|
||||||
pin. Normally a jumper cap is placed between these pins, allowing the
|
|
||||||
chipset to access the onboard flash. To use this header, remove this
|
|
||||||
jumper and connect all lines except /CS one-to-one with the
|
|
||||||
corresponding pin on the header. The secondary flash chip's /CS line
|
|
||||||
should be connected to the chipset /CS pin on the header. By doing this
|
|
||||||
the secondary SPI flash, rather than the onboard flash, will respond to
|
|
||||||
accesses from the chipset.
|
|
||||||
|
|
||||||
![][hp_spi_header_pinout]
|
|
||||||
|
|
||||||
![][hp_spi_header_mainboard]
|
|
||||||
|
|
||||||
Note that on boards where this header is unpopulated, a jumper resistor
|
|
||||||
will be populated nearby which serves the purpose of the jumper cap. One
|
|
||||||
end should have continuity with the /CS pin on the flash, and the other
|
|
||||||
end should have continuity with the chipset /CS pin on the unpopulated
|
|
||||||
header. It may also be possible to find this resistor through visual
|
|
||||||
inspection of the traces on the /CS pins. This resistor should be
|
|
||||||
desoldered if you wish to solder a pin header to the board and connect a
|
|
||||||
secondary flash, otherwise the onboard flash will always respond to
|
|
||||||
accesses.
|
|
||||||
|
|
||||||
#### Other boards
|
|
||||||
Other boards may have similar headers, but will likely use a different
|
|
||||||
pinout than the ones explicitly mentioned here. Usually such a header
|
|
||||||
will be located near the onboard SPI flash. If schematics are available,
|
|
||||||
the pinout for the header will likely be found in it, but it could also
|
|
||||||
be determined using a multimeter in continuity mode to map out the
|
|
||||||
connections between the SPI flash and the header.
|
|
||||||
|
|
||||||
|
|
||||||
[EM100Pro]: https://www.dediprog.com/product/EM100Pro
|
[EM100Pro]: https://www.dediprog.com/product/EM100Pro
|
||||||
[hp_spi_header_pinout]: hp_spi_header.svg
|
|
||||||
[hp_spi_header_mainboard]: hp_spi_header_mb.jpg
|
|
||||||
|
@@ -1,109 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="40.266247mm"
|
|
||||||
height="20.267391mm"
|
|
||||||
viewBox="0 0 40.266247 20.267391"
|
|
||||||
version="1.1"
|
|
||||||
id="svg5"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs2" />
|
|
||||||
<g
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(0.1322915,0.1322915)">
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.264583"
|
|
||||||
d="M 0,0 C 0,6.6676027 0,13.335205 0,20.002808"
|
|
||||||
id="path500" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.264583"
|
|
||||||
d="m 0,20.002808 c 13.333889,0 26.667777,0 40.001666,0 0,-6.667603 0,-13.3352053 0,-20.002808 -6.665673,0 -13.331347,0 -19.99702,0 0,6.6676027 0,13.335205 0,20.002808"
|
|
||||||
id="path506" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.264583"
|
|
||||||
d="m 0,0 c 3.3327445,0 6.6654889,0 9.9982334,0 0,6.6676027 0,13.335205 0,20.002808"
|
|
||||||
id="path508" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.264583"
|
|
||||||
d="m 0,10.001404 c 13.333889,0 26.667777,0 40.001666,0"
|
|
||||||
id="path510" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.264583"
|
|
||||||
d="m 30.003154,0 c 0,6.6676027 0,13.335205 0,20.002808"
|
|
||||||
id="path512" />
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="22.156124"
|
|
||||||
y="6.3107877"
|
|
||||||
id="text676"><tspan
|
|
||||||
x="22.156124"
|
|
||||||
y="6.3107877">VCC</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="31.972855"
|
|
||||||
y="6.3107877"
|
|
||||||
id="text730"><tspan
|
|
||||||
id="tspan728"
|
|
||||||
x="31.972855"
|
|
||||||
y="6.3107877">GND</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="32.398666"
|
|
||||||
y="16.285427"
|
|
||||||
id="text734"><tspan
|
|
||||||
id="tspan732"
|
|
||||||
x="32.398666"
|
|
||||||
y="16.285427">CLK</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="22.770041"
|
|
||||||
y="16.285427"
|
|
||||||
id="text738"><tspan
|
|
||||||
id="tspan736"
|
|
||||||
x="22.770041"
|
|
||||||
y="16.285427">DO</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="13.605446"
|
|
||||||
y="16.286804"
|
|
||||||
id="text742"><tspan
|
|
||||||
id="tspan740"
|
|
||||||
x="13.605446"
|
|
||||||
y="16.286804">DI</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.82222px"
|
|
||||||
style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="2.5204566"
|
|
||||||
y="6.1998558"
|
|
||||||
id="text746"><tspan
|
|
||||||
id="tspan744"
|
|
||||||
x="2.5204566"
|
|
||||||
y="6.1998558">/CS</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
font-size="2.5px"
|
|
||||||
style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
|
|
||||||
x="5.0321894"
|
|
||||||
y="14.500522"
|
|
||||||
id="text750"><tspan
|
|
||||||
id="tspan748"
|
|
||||||
x="5.0321894"
|
|
||||||
y="14.500522">/CS</tspan><tspan
|
|
||||||
x="5.0321894"
|
|
||||||
y="17.146358"
|
|
||||||
id="tspan752">chipset</tspan></text>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 21 KiB |
@@ -23,10 +23,10 @@ though TDD has a different work flow of building tests first, followed
|
|||||||
by the code that satisfies them, the process of writing tests and adding
|
by the code that satisfies them, the process of writing tests and adding
|
||||||
them to the tree is the same.
|
them to the tree is the same.
|
||||||
|
|
||||||
## Analysis of unit under test
|
## Analysis of unit under test First of all, it is necessary to
|
||||||
First of all, it is necessary to precisely establish what we want to
|
precisely establish what we want to test in a particular module. Usually
|
||||||
test in a particular module. Usually this will be an externally exposed
|
this will be an externally exposed API, which can be used by other
|
||||||
API, which can be used by other modules.
|
modules.
|
||||||
|
|
||||||
```eval_rst
|
```eval_rst
|
||||||
.. admonition:: i2c-test example
|
.. admonition:: i2c-test example
|
||||||
|
@@ -29,7 +29,7 @@ way to categorize anything required by the SoC but not provided by coreboot.
|
|||||||
+------------+------------------+-----------+-------------------------------------------+
|
+------------+------------------+-----------+-------------------------------------------+
|
||||||
| 4 | Platform Data | SI_PDR | |
|
| 4 | Platform Data | SI_PDR | |
|
||||||
+------------+------------------+-----------+-------------------------------------------+
|
+------------+------------------+-----------+-------------------------------------------+
|
||||||
| 8 | EC Firmware | SI_EC | Most ChromeOS devices do not use this |
|
| 8 | EC Firmware | SI_EC | Most ChromeOS devices do not use this |
|
||||||
| | | | region; EC firmware is stored in BIOS |
|
| | | | region; EC firmware is stored in BIOS |
|
||||||
| | | | region of flash |
|
| | | | region of flash |
|
||||||
+------------+------------------+-----------+-------------------------------------------+
|
+------------+------------------+-----------+-------------------------------------------+
|
||||||
|
@@ -1,49 +0,0 @@
|
|||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this license, each copyright
|
|
||||||
holder and contributor hereby grants to those receiving rights under
|
|
||||||
this license a perpetual, worldwide, non-exclusive, no-charge,
|
|
||||||
royalty-free, irrevocable (except for failure to satisfy the conditions
|
|
||||||
of this license) patent license to make, have made, use, offer to sell,
|
|
||||||
sell, import, and otherwise transfer this software, where such license
|
|
||||||
applies only to those patent claims, already acquired or hereafter
|
|
||||||
acquired, licensable by such copyright holder or contributor that are
|
|
||||||
necessarily infringed by:
|
|
||||||
|
|
||||||
(a) their Contribution(s) (the licensed copyrights of copyright holders
|
|
||||||
and non-copyrightable additions of contributors, in source or binary
|
|
||||||
form) alone;
|
|
||||||
or
|
|
||||||
(b) combination of their Contribution(s) with the work of authorship to
|
|
||||||
which such Contribution(s) was added by such copyright holder or
|
|
||||||
contributor, if, at the time the Contribution is added, such addition
|
|
||||||
causes such combination to be necessarily infringed. The patent
|
|
||||||
license shall not apply to any other combinations which include the
|
|
||||||
Contribution.
|
|
||||||
|
|
||||||
Except as expressly stated above, no rights or licenses from any
|
|
||||||
copyright holder or contributor is granted under this license, whether
|
|
||||||
expressly, by implication, estoppel or otherwise.
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
||||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,23 +0,0 @@
|
|||||||
Copyright (c) <year> <owner>.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
||||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,31 +0,0 @@
|
|||||||
Copyright [various years] The Regents of the University of California.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
3. All advertising materials mentioning features or use of this software
|
|
||||||
must display the following acknowledgement: This product includes
|
|
||||||
software developed by the University of California, Berkeley and its
|
|
||||||
contributors.
|
|
||||||
4. Neither the name of the University nor the names of its contributors
|
|
||||||
may be used to endorse or promote products derived from this software
|
|
||||||
without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,28 +0,0 @@
|
|||||||
The person or persons who have associated work with this document (the
|
|
||||||
"Dedicator" or "Certifier") hereby either (a) certifies that, to the
|
|
||||||
best of his knowledge, the work of authorship identified is in the
|
|
||||||
public domain of the country from which the work is published, or (b)
|
|
||||||
hereby dedicates whatever copyright the dedicators holds in the work of
|
|
||||||
authorship identified below (the "Work") to the public domain. A
|
|
||||||
certifier, moreover, dedicates any copyright interest he may have in the
|
|
||||||
associated work, and for these purposes, is described as a "dedicator"
|
|
||||||
below.
|
|
||||||
|
|
||||||
A certifier has taken reasonable steps to verify the copyright status of
|
|
||||||
this work. Certifier recognizes that his good faith efforts may not
|
|
||||||
shield him from liability if in fact the work certified is not in the
|
|
||||||
public domain.
|
|
||||||
|
|
||||||
Dedicator makes this dedication for the benefit of the public at large
|
|
||||||
and to the detriment of the Dedicator's heirs and successors. Dedicator
|
|
||||||
intends this dedication to be an overt act of relinquishment in
|
|
||||||
perpetuity of all present and future rights under copyright law, whether
|
|
||||||
vested or contingent, in the Work. Dedicator understands that such
|
|
||||||
relinquishment of all rights includes the relinquishment of all rights
|
|
||||||
to enforce (by lawsuit or otherwise) those copyrights in the Work.
|
|
||||||
|
|
||||||
Dedicator recognizes that, once placed in the public domain, the Work
|
|
||||||
may be freely reproduced, distributed, transmitted, used, modified,
|
|
||||||
built upon, or otherwise exploited by anyone for any purpose, commercial
|
|
||||||
or non-commercial, and in any way, including by methods that have not
|
|
||||||
yet been invented or conceived.
|
|
@@ -1,18 +0,0 @@
|
|||||||
Permission to use, copy, modify, distribute, and sell this software and
|
|
||||||
its documentation for any purpose is hereby granted without fee,
|
|
||||||
provided that the above copyright notice appears in all copies, and that
|
|
||||||
both that the copyright notice and this permission notice appear in
|
|
||||||
supporting documentation, and that the name of <copyright holder> <or
|
|
||||||
related entities> not be used in advertising or publicity pertaining to
|
|
||||||
distribution of the software without specific, written prior permission
|
|
||||||
. <copyright holder> makes no representations about the suitability of
|
|
||||||
this software for any purpose. It is provided "as is" without express or
|
|
||||||
implied warranty.
|
|
||||||
|
|
||||||
<copyright holder> DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
|
||||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS . IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
|
||||||
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
|
||||||
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
|
||||||
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,20 +0,0 @@
|
|||||||
<copyright notice>
|
|
||||||
|
|
||||||
Permission to use, copy, modify and distribute this software and its
|
|
||||||
documentation for any purpose and without fee is hereby granted,
|
|
||||||
provided that the above copyright notice appear in all copies, and that
|
|
||||||
both that the copyright notice and this permission notice appear in
|
|
||||||
supporting documentation , and that the name of <copyright holder> <or
|
|
||||||
related entities> not be used in advertising or publicity pertaining to
|
|
||||||
distribution of the software without specific, written prior permission.
|
|
||||||
<copyright holder> makes no representations about the suitability of
|
|
||||||
this software for any purpose. It is provided "as is" without express or
|
|
||||||
implied warranty.
|
|
||||||
|
|
||||||
<copyright holder> DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
|
||||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS . IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
|
||||||
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
|
||||||
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
|
||||||
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -1,74 +0,0 @@
|
|||||||
GCC RUNTIME LIBRARY EXCEPTION
|
|
||||||
|
|
||||||
Version 3.1, 31 March 2009
|
|
||||||
|
|
||||||
General information: http://www.gnu.org/licenses/gcc-exception.html
|
|
||||||
|
|
||||||
Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this
|
|
||||||
license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
This GCC Runtime Library Exception ("Exception") is an additional
|
|
||||||
permission under section 7 of the GNU General Public License, version 3
|
|
||||||
("GPLv3"). It applies to a given file (the "Runtime Library") that bears
|
|
||||||
a notice placed by the copyright holder of the file stating that the
|
|
||||||
file is governed by GPLv3 along with this Exception.
|
|
||||||
|
|
||||||
When you use GCC to compile a program, GCC may combine portions of
|
|
||||||
certain GCC header files and runtime libraries with the compiled
|
|
||||||
program. The purpose of this Exception is to allow compilation of
|
|
||||||
non-GPL (including proprietary) programs to use, in this way, the header
|
|
||||||
files and runtime libraries covered by this Exception.
|
|
||||||
|
|
||||||
0. Definitions.
|
|
||||||
|
|
||||||
A file is an "Independent Module" if it either requires the Runtime
|
|
||||||
Library for execution after a Compilation Process, or makes use of an
|
|
||||||
interface provided by the Runtime Library, but is not otherwise based
|
|
||||||
on the Runtime Library.
|
|
||||||
|
|
||||||
"GCC" means a version of the GNU Compiler Collection, with or without
|
|
||||||
modifications, governed by version 3 (or a specified later version) of
|
|
||||||
the GNU General Public License (GPL) with the option of using any
|
|
||||||
subsequent versions published by the FSF.
|
|
||||||
|
|
||||||
"GPL-compatible Software" is software whose conditions of propagation,
|
|
||||||
modification and use would permit combination with GCC in accord with
|
|
||||||
the license of GCC.
|
|
||||||
|
|
||||||
"Target Code" refers to output from any compiler for a real or virtual
|
|
||||||
target processor architecture, in executable form or suitable for
|
|
||||||
input to an assembler, loader, linker and/or execution phase.
|
|
||||||
Notwithstanding that, Target Code does not include data in any format
|
|
||||||
that is used as a compiler intermediate representation, or used for
|
|
||||||
producing a compiler intermediate representation.
|
|
||||||
|
|
||||||
The "Compilation Process" transforms code entirely represented in
|
|
||||||
non-intermediate languages designed for human-written code, and/or in
|
|
||||||
Java Virtual Machine byte code, into Target Code. Thus, for example,
|
|
||||||
use of source code generators and preprocessors need not be considered
|
|
||||||
part of the Compilation Process, since the Compilation Process can be
|
|
||||||
understood as starting with the output of the generators or
|
|
||||||
preprocessors.
|
|
||||||
|
|
||||||
A Compilation Process is "Eligible" if it is done using GCC, alone or
|
|
||||||
with other GPL-compatible software, or if it is done without using any
|
|
||||||
work based on GCC. For example, using non-GPL-compatible Software to
|
|
||||||
optimize any GCC intermediate representations would not qualify as an
|
|
||||||
Eligible Compilation Process.
|
|
||||||
|
|
||||||
1. Grant of Additional Permission.
|
|
||||||
|
|
||||||
You have permission to propagate a work of Target Code formed by
|
|
||||||
combining the Runtime Library with Independent Modules, even if such
|
|
||||||
propagation would otherwise violate the terms of GPLv3, provided that
|
|
||||||
all Target Code was generated by Eligible Compilation Processes. You
|
|
||||||
may then convey such a combination under terms of your choice,
|
|
||||||
consistent with the licensing of the Independent Modules.
|
|
||||||
|
|
||||||
2. No Weakening of GCC Copyleft.
|
|
||||||
|
|
||||||
The availability of this Exception does not imply any general
|
|
||||||
presumption that third-party software is unaffected by the copyleft
|
|
||||||
requirements of the license of GCC.
|
|
@@ -1,12 +0,0 @@
|
|||||||
NOTE! This copyright does *not* cover user programs that use kernel
|
|
||||||
services by normal system calls - this is merely considered normal use
|
|
||||||
of the kernel, and does *not* fall under the heading of "derived work".
|
|
||||||
Also note that the GPL below is copyrighted by the Free Software
|
|
||||||
Foundation, but the instance of code that it refers to (the Linux
|
|
||||||
kernel) is copyrighted by me and others who actually wrote it.
|
|
||||||
|
|
||||||
Also note that the only valid version of the GPL as far as the kernel is
|
|
||||||
concerned is _this_ particular version of the license (ie v2, not v2.2
|
|
||||||
or v3.x or whatever), unless explicitly otherwise stated.
|
|
||||||
|
|
||||||
Linus Torvalds
|
|
99
MAINTAINERS
@@ -138,30 +138,15 @@ Maintainers List (try to look for most precise areas first)
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
AMD family 17h and 19h reference boards
|
AMD family 17h and 19h reference boards
|
||||||
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
M: Fred Reitberger <reitbergerfred@gmail.com>
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/amd/bilby/
|
|
||||||
F: src/mainboard/amd/chausie/
|
F: src/mainboard/amd/chausie/
|
||||||
F: src/mainboard/amd/majolica/
|
F: src/mainboard/amd/majolica/
|
||||||
F: src/mainboard/amd/mandolin/
|
F: src/mainboard/amd/mandolin/
|
||||||
|
|
||||||
AMD reference boards outside of family 17h and 19h
|
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
F: src/mainboard/amd/gardenia/
|
|
||||||
F: src/mainboard/amd/inagua/
|
|
||||||
F: src/mainboard/amd/olivehill/
|
|
||||||
F: src/mainboard/amd/pademelon/
|
|
||||||
F: src/mainboard/amd/parmer/
|
|
||||||
F: src/mainboard/amd/persimmon/
|
|
||||||
F: src/mainboard/amd/south_station/
|
|
||||||
F: src/mainboard/amd/thatcher/
|
|
||||||
F: src/mainboard/amd/union_station/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
APPLE MAINBOARDS
|
APPLE MAINBOARDS
|
||||||
M: Evgeny Zinoviev <me@ch1p.io>
|
M: Evgeny Zinoviev <me@ch1p.io>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -263,20 +248,14 @@ M: Angel Pons <th3fanbus@gmail.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/gigabyte/ga-h61m-series/
|
F: src/mainboard/gigabyte/ga-h61m-series/
|
||||||
|
|
||||||
GOOGLE REX MAINBOARDS
|
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
|
||||||
M: Kapil Porwal <kapilporwal@google.com>
|
|
||||||
S: Maintained
|
|
||||||
F: src/mainboard/google/rex/
|
|
||||||
|
|
||||||
GOOGLE BRYA MAINBOARDS
|
GOOGLE BRYA MAINBOARDS
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/google/brya/
|
F: src/mainboard/google/brya/
|
||||||
|
|
||||||
GOOGLE HATCH MAINBOARDS
|
GOOGLE HATCH MAINBOARDS
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/google/hatch/
|
F: src/mainboard/google/hatch/
|
||||||
|
|
||||||
@@ -286,6 +265,7 @@ S: Supported
|
|||||||
F: src/mainboard/google/panther/
|
F: src/mainboard/google/panther/
|
||||||
|
|
||||||
GOOGLE VOLTEER MAINBOARDS
|
GOOGLE VOLTEER MAINBOARDS
|
||||||
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
M: Nick Vaccaro <nvaccaro@chromium.org>
|
M: Nick Vaccaro <nvaccaro@chromium.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/google/volteer/
|
F: src/mainboard/google/volteer/
|
||||||
@@ -304,15 +284,6 @@ F: src/mainboard/google/parrot/
|
|||||||
F: src/mainboard/google/slippy/
|
F: src/mainboard/google/slippy/
|
||||||
F: src/mainboard/google/stout/
|
F: src/mainboard/google/stout/
|
||||||
|
|
||||||
GOOGLE AMD-BASED MAINBOARDS
|
|
||||||
M: Martin Roth <martin.roth@amd.corp-partner.google.com>
|
|
||||||
M: Jason Nien <jason.nien@amd.corp-partner.google.com>
|
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Supported
|
|
||||||
F: src/mainboard/google/kahlee/
|
|
||||||
F: src/mainboard/google/zork/
|
|
||||||
F: src/mainboard/google/guybrush/
|
|
||||||
F: src/mainboard/google/skyrim/
|
|
||||||
|
|
||||||
|
|
||||||
HP 280 G2 MAINBOARD
|
HP 280 G2 MAINBOARD
|
||||||
@@ -391,11 +362,7 @@ M: Angel Pons <th3fanbus@gmail.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/msi/h81m-p33/
|
F: src/mainboard/msi/h81m-p33/
|
||||||
|
|
||||||
MSI MS-7D25 MAINBOARDS
|
|
||||||
M: Michał Żygowski <michal.zygowski@3mdeb.com>
|
|
||||||
M: Michał Kopeć <michal.kopec@3mdeb.com>
|
|
||||||
S: Maintained
|
|
||||||
F: src/mainboard/msi/ms7d25/
|
|
||||||
|
|
||||||
OCP DELTALAKE MAINBOARD
|
OCP DELTALAKE MAINBOARD
|
||||||
M: Arthur Heymans <arthur@aheymans.xyz>
|
M: Arthur Heymans <arthur@aheymans.xyz>
|
||||||
@@ -466,7 +433,7 @@ F: src/mainboard/prodrive/hermes/
|
|||||||
|
|
||||||
|
|
||||||
PURISM MAINBOARDS
|
PURISM MAINBOARDS
|
||||||
M: Jonathon Hall <jonathon.hall@puri.sm>
|
M: Matt DeVillier <matt.devillier@puri.sm>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: src/mainboard/purism/
|
F: src/mainboard/purism/
|
||||||
|
|
||||||
@@ -564,8 +531,7 @@ F: src/include/cpu/x86/
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
CHROME EC
|
CHROME EC
|
||||||
M: Boris Mittelberg <bmbm@google.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
M: Caveh Jalali <caveh@chromium.org>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/ec/google/chromeec/
|
F: src/ec/google/chromeec/
|
||||||
|
|
||||||
@@ -616,7 +582,6 @@ F: src/northbridge/intel/x4x/
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
AMD SUPPORT
|
AMD SUPPORT
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
F: src/vendorcode/amd/
|
F: src/vendorcode/amd/
|
||||||
F: src/cpu/amd/
|
F: src/cpu/amd/
|
||||||
F: src/northbridge/amd/
|
F: src/northbridge/amd/
|
||||||
@@ -650,64 +615,57 @@ F: src/drivers/intel/fsp2_0/
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
AMD Cezanne
|
AMD Cezanne
|
||||||
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
M: Raul E Rangel <rrangel@chromium.org>
|
M: Raul E Rangel <rrangel@chromium.org>
|
||||||
M: Fred Reitberger <reitbergerfred@gmail.com>
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/amd/cezanne/
|
F: src/soc/amd/cezanne/
|
||||||
F: src/vendorcode/amd/fsp/cezanne/
|
F: src/vendorcode/amd/fsp/cezanne/
|
||||||
|
|
||||||
AMD common SoC code
|
AMD common SoC code
|
||||||
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
M: Raul E Rangel <rrangel@chromium.org>
|
M: Raul E Rangel <rrangel@chromium.org>
|
||||||
M: Fred Reitberger <reitbergerfred@gmail.com>
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/amd/common/
|
F: src/soc/amd/common/
|
||||||
|
|
||||||
AMD Picasso
|
AMD Picasso
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
|
||||||
M: Fred Reitberger <reitbergerfred@gmail.com>
|
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Maintained
|
|
||||||
F: src/soc/amd/picasso/
|
|
||||||
F: src/vendorcode/amd/fsp/picasso/
|
|
||||||
|
|
||||||
AMD Mendocino
|
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
M: Raul E Rangel <rrangel@chromium.org>
|
M: Raul E Rangel <rrangel@chromium.org>
|
||||||
M: Fred Reitberger <reitbergerfred@gmail.com>
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
S: Maintained
|
||||||
S: Supported
|
F: src/soc/amd/picasso/
|
||||||
F: src/soc/amd/mendocino/
|
F: src/vendorcode/amd/fsp/picasso/
|
||||||
F: src/vendorcode/amd/fsp/mendocino/
|
|
||||||
|
AMD Sabrina
|
||||||
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
|
M: Raul E Rangel <rrangel@chromium.org>
|
||||||
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
|
S: Maintained
|
||||||
|
F: src/soc/amd/sabrina/
|
||||||
|
F: src/vendorcode/amd/fsp/sabrina/
|
||||||
|
|
||||||
AMD Stoneyridge
|
AMD Stoneyridge
|
||||||
|
M: Marshall Dawson <marshalldawson3rd@gmail.com>
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: src/soc/amd/stoneyridge/
|
F: src/soc/amd/stoneyridge/
|
||||||
|
|
||||||
INTEL METEORLAKE SOC
|
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
|
||||||
M: Kapil Porwal <kapilporwal@google.com>
|
|
||||||
S: Maintained
|
|
||||||
F: src/soc/intel/meteorlake/
|
|
||||||
|
|
||||||
INTEL ALDERLAKE SOC
|
INTEL ALDERLAKE SOC
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/intel/alderlake/
|
F: src/soc/intel/alderlake/
|
||||||
|
|
||||||
@@ -739,8 +697,7 @@ S: Maintained
|
|||||||
F: src/soc/intel/elkhartlake/
|
F: src/soc/intel/elkhartlake/
|
||||||
|
|
||||||
INTEL TIGERLAKE SOC
|
INTEL TIGERLAKE SOC
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/intel/tigerlake/
|
F: src/soc/intel/tigerlake/
|
||||||
|
|
||||||
@@ -881,7 +838,7 @@ F: src/drivers/aspeed/ast2050/
|
|||||||
|
|
||||||
ACPI
|
ACPI
|
||||||
M: Lance Zhao <lance.zhao@gmail.com>
|
M: Lance Zhao <lance.zhao@gmail.com>
|
||||||
M: Tim Wawrzynczak <inforichland@gmail.com>
|
M: Tim Wawrzynczak <twawrzynczak@chromium.org>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: src/acpi/
|
F: src/acpi/
|
||||||
F: src/arch/x86/acpi/
|
F: src/arch/x86/acpi/
|
||||||
|
@@ -93,7 +93,6 @@ subdirs-y += $(wildcard src/arch/*)
|
|||||||
subdirs-y += src/mainboard/$(MAINBOARDDIR)
|
subdirs-y += src/mainboard/$(MAINBOARDDIR)
|
||||||
subdirs-y += src/security
|
subdirs-y += src/security
|
||||||
subdirs-y += payloads payloads/external
|
subdirs-y += payloads payloads/external
|
||||||
subdirs-$(CONFIG_SBOM) += src/sbom
|
|
||||||
|
|
||||||
subdirs-y += site-local
|
subdirs-y += site-local
|
||||||
subdirs-y += util/checklist util/testing
|
subdirs-y += util/checklist util/testing
|
||||||
@@ -153,7 +152,7 @@ int-gt=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(wor
|
|||||||
int-eq=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) = $(call _toint,$(word 2,$1))))
|
int-eq=$(if $(filter 1,$(words $1)),$(strip $1),$(shell expr $(call _toint,$(word 1,$1)) = $(call _toint,$(word 2,$1))))
|
||||||
int-align=$(shell A=$(call _toint,$1) B=$(call _toint,$2); expr $$A + \( \( $$B - \( $$A % $$B \) \) % $$B \) )
|
int-align=$(shell A=$(call _toint,$1) B=$(call _toint,$2); expr $$A + \( \( $$B - \( $$A % $$B \) \) % $$B \) )
|
||||||
int-align-down=$(shell A=$(call _toint,$1) B=$(call _toint,$2); expr $$A - \( $$A % $$B \) )
|
int-align-down=$(shell A=$(call _toint,$1) B=$(call _toint,$2); expr $$A - \( $$A % $$B \) )
|
||||||
file-size=$(strip $(shell wc -c "$1" | cut -f 1 -d ' '))
|
file-size=$(strip $(shell cat $1 | wc -c))
|
||||||
tolower=$(shell echo '$1' | tr '[:upper:]' '[:lower:]')
|
tolower=$(shell echo '$1' | tr '[:upper:]' '[:lower:]')
|
||||||
toupper=$(shell echo '$1' | tr '[:lower:]' '[:upper:]')
|
toupper=$(shell echo '$1' | tr '[:lower:]' '[:upper:]')
|
||||||
ws_to_under=$(shell echo '$1' | tr ' \t' '_')
|
ws_to_under=$(shell echo '$1' | tr ' \t' '_')
|
||||||
@@ -443,7 +442,7 @@ ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
|
|||||||
CFLAGS_common += -Wno-packed-not-aligned
|
CFLAGS_common += -Wno-packed-not-aligned
|
||||||
CFLAGS_common += -fconserve-stack
|
CFLAGS_common += -fconserve-stack
|
||||||
CFLAGS_common += -Wnull-dereference -Wreturn-type
|
CFLAGS_common += -Wnull-dereference -Wreturn-type
|
||||||
CFLAGS_common += -Wlogical-op -Wduplicated-cond -Wno-array-compare
|
CFLAGS_common += -Wlogical-op -Wduplicated-cond
|
||||||
# cf. commit f69a99db (coreboot: x86: enable gc-sections)
|
# cf. commit f69a99db (coreboot: x86: enable gc-sections)
|
||||||
CFLAGS_common += -Wno-unused-but-set-variable
|
CFLAGS_common += -Wno-unused-but-set-variable
|
||||||
endif
|
endif
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
CONFIG_INCLUDE_COREBOOT_SBOM=y
|
|
||||||
CONFIG_INCLUDE_PAYLOAD_SBOM=y
|
|
||||||
CONFIG_INCLUDE_ME_SBOM=y
|
|
||||||
CONFIG_INCLUDE_MICROCODE_SBOM=y
|
|
||||||
CONFIG_VENDOR_FACEBOOK=y
|
|
||||||
CONFIG_BOARD_FACEBOOK_FBG1701=y
|
|
@@ -1,7 +1,7 @@
|
|||||||
CONFIG_VENDOR_MSI=y
|
CONFIG_VENDOR_MSI=y
|
||||||
CONFIG_CBFS_SIZE=0x1000000
|
CONFIG_CBFS_SIZE=0x1000000
|
||||||
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
|
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
|
||||||
CONFIG_EDK2_BOOT_TIMEOUT=3
|
CONFIG_TIANOCORE_BOOT_TIMEOUT=3
|
||||||
CONFIG_BOARD_MSI_Z690_A_PRO_WIFI_DDR4=y
|
CONFIG_BOARD_MSI_Z690_A_PRO_WIFI_DDR4=y
|
||||||
CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
|
CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
|
||||||
CONFIG_PCIEXP_HOTPLUG=y
|
CONFIG_PCIEXP_HOTPLUG=y
|
||||||
@@ -9,13 +9,11 @@ CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G=y
|
|||||||
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0=y
|
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0=y
|
||||||
CONFIG_POST_DEVICE_PCI_PCIE=y
|
CONFIG_POST_DEVICE_PCI_PCIE=y
|
||||||
CONFIG_POST_IO_PORT=0x80
|
CONFIG_POST_IO_PORT=0x80
|
||||||
CONFIG_PAYLOAD_EDK2=y
|
CONFIG_PAYLOAD_TIANOCORE=y
|
||||||
CONFIG_EDK2_REPOSITORY="https://github.com/Dasharo/edk2.git"
|
CONFIG_TIANOCORE_REPOSITORY="https://github.com/Dasharo/edk2.git"
|
||||||
CONFIG_EDK2_TAG_OR_REV="origin/dasharo"
|
CONFIG_TIANOCORE_TAG_OR_REV="origin/dasharo"
|
||||||
CONFIG_EDK2_CBMEM_LOGGING=y
|
CONFIG_TIANOCORE_CBMEM_LOGGING=y
|
||||||
CONFIG_EDK2_FOLLOW_BGRT_SPEC=y
|
CONFIG_TIANOCORE_FOLLOW_BGRT_SPEC=y
|
||||||
CONFIG_EDK2_SD_MMC_TIMEOUT=1000
|
CONFIG_TIANOCORE_SD_MMC_TIMEOUT=1000
|
||||||
CONFIG_TPM2=y
|
CONFIG_TPM2=y
|
||||||
CONFIG_TPM_MEASURED_BOOT=y
|
CONFIG_TPM_MEASURED_BOOT=y
|
||||||
CONFIG_DRIVERS_GENERIC_CBFS_SERIAL=y
|
|
||||||
CONFIG_DRIVERS_GENERIC_CBFS_UUID=y
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
# Settings used by Prodrive to build coreboot for the Hermes
|
# Settings used by Prodrive to build coreboot for the Hermes
|
||||||
CONFIG_VENDOR_PRODRIVE=y
|
CONFIG_VENDOR_PRODRIVE=y
|
||||||
CONFIG_BOARD_PRODRIVE_HERMES=y
|
CONFIG_BOARD_PRODRIVE_HERMES=y
|
||||||
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Prodrive Technologies B.V."
|
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Prodrive Techonologies B.V."
|
||||||
CONFIG_POST_IO=y
|
CONFIG_POST_IO=y
|
||||||
CONFIG_USE_LEGACY_8254_TIMER=y
|
CONFIG_USE_LEGACY_8254_TIMER=y
|
||||||
CONFIG_HERMES_USES_SPS_FIRMWARE=y
|
CONFIG_HERMES_USES_SPS_FIRMWARE=y
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
CONFIG_VENDOR_SYSTEM76=y
|
CONFIG_VENDOR_SYSTEM76=y
|
||||||
CONFIG_BOARD_SYSTEM76_GAZE15=y
|
CONFIG_BOARD_SYSTEM76_GAZE15=y
|
||||||
CONFIG_PAYLOAD_EDK2=y
|
CONFIG_PAYLOAD_TIANOCORE=y
|
||||||
CONFIG_RUN_FSP_GOP=y
|
CONFIG_RUN_FSP_GOP=y
|
||||||
CONFIG_SMMSTORE=y
|
CONFIG_SMMSTORE=y
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
CONFIG_VENDOR_SYSTEM76=y
|
CONFIG_VENDOR_SYSTEM76=y
|
||||||
CONFIG_BOARD_SYSTEM76_LEMP9=y
|
CONFIG_BOARD_SYSTEM76_LEMP9=y
|
||||||
CONFIG_PAYLOAD_EDK2=y
|
CONFIG_PAYLOAD_TIANOCORE=y
|
||||||
CONFIG_RUN_FSP_GOP=y
|
CONFIG_RUN_FSP_GOP=y
|
||||||
CONFIG_SMMSTORE=y
|
CONFIG_SMMSTORE=y
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
CONFIG_VENDOR_SYSTEM76=y
|
CONFIG_VENDOR_SYSTEM76=y
|
||||||
CONFIG_BOARD_SYSTEM76_ORYP5=y
|
CONFIG_BOARD_SYSTEM76_ORYP5=y
|
||||||
CONFIG_PAYLOAD_EDK2=y
|
CONFIG_PAYLOAD_TIANOCORE=y
|
||||||
CONFIG_POST_IO=n
|
CONFIG_POST_IO=n
|
||||||
CONFIG_RUN_FSP_GOP=y
|
CONFIG_RUN_FSP_GOP=y
|
||||||
CONFIG_SMMSTORE=y
|
CONFIG_SMMSTORE=y
|
||||||
|
@@ -24,7 +24,7 @@ payloads/external/U-Boot \
|
|||||||
payloads/external/Memtest86Plus \
|
payloads/external/Memtest86Plus \
|
||||||
payloads/external/iPXE \
|
payloads/external/iPXE \
|
||||||
payloads/external/tint \
|
payloads/external/tint \
|
||||||
payloads/external/edk2 \
|
payloads/external/tianocore \
|
||||||
payloads/external/GRUB2 \
|
payloads/external/GRUB2 \
|
||||||
payloads/external/LinuxBoot \
|
payloads/external/LinuxBoot \
|
||||||
payloads/external/Yabits \
|
payloads/external/Yabits \
|
||||||
|
@@ -68,7 +68,7 @@ static struct cbfile *firstfile(void)
|
|||||||
|
|
||||||
static struct cbfile *nextfile(struct cbfile *f)
|
static struct cbfile *nextfile(struct cbfile *f)
|
||||||
{
|
{
|
||||||
f = (struct cbfile *)((u8 *)f + ALIGN_UP(ntohl(f->len) + ntohl(f->offset),
|
f = (struct cbfile *)((u8 *)f + ALIGN(ntohl(f->len) + ntohl(f->offset),
|
||||||
ntohl(header->align)));
|
ntohl(header->align)));
|
||||||
return getfile(f);
|
return getfile(f);
|
||||||
}
|
}
|
||||||
|
2
payloads/external/.gitignore
vendored
@@ -3,7 +3,7 @@ FILO/filo/
|
|||||||
GRUB2/grub2/
|
GRUB2/grub2/
|
||||||
LinuxBoot/linuxboot/
|
LinuxBoot/linuxboot/
|
||||||
SeaBIOS/seabios/
|
SeaBIOS/seabios/
|
||||||
edk2/workspace
|
tianocore/tianocore/
|
||||||
tint/tint/
|
tint/tint/
|
||||||
U-Boot/u-boot/
|
U-Boot/u-boot/
|
||||||
Memtest86Plus/memtest86plus/
|
Memtest86Plus/memtest86plus/
|
||||||
|
51
payloads/external/Makefile.inc
vendored
@@ -152,37 +152,35 @@ payloads/external/depthcharge/depthcharge/build/depthcharge.elf depthcharge: $(D
|
|||||||
DEPTHCHARGE_REVISION_ID=$(CONFIG_DEPTHCHARGE_REVISION_ID) \
|
DEPTHCHARGE_REVISION_ID=$(CONFIG_DEPTHCHARGE_REVISION_ID) \
|
||||||
OVERRIDE_DEFCONFIG=$(CONFIG_LP_DEFCONFIG_OVERRIDE)
|
OVERRIDE_DEFCONFIG=$(CONFIG_LP_DEFCONFIG_OVERRIDE)
|
||||||
|
|
||||||
# edk2
|
# Tianocore
|
||||||
|
|
||||||
$(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
|
$(obj)/UEFIPAYLOAD.fd tianocore: $(DOTCONFIG)
|
||||||
$(MAKE) -C payloads/external/edk2 UefiPayloadPkg \
|
$(MAKE) -C payloads/external/tianocore all \
|
||||||
HOSTCC="$(HOSTCC)" \
|
HOSTCC="$(HOSTCC)" \
|
||||||
CC="$(HOSTCC)" \
|
CC="$(HOSTCC)" \
|
||||||
CONFIG_EDK2_REPOSITORY=$(CONFIG_EDK2_REPOSITORY) \
|
CONFIG_TIANOCORE_REPOSITORY=$(CONFIG_TIANOCORE_REPOSITORY) \
|
||||||
CONFIG_EDK2_TAG_OR_REV=$(CONFIG_EDK2_TAG_OR_REV) \
|
CONFIG_TIANOCORE_TAG_OR_REV=$(CONFIG_TIANOCORE_TAG_OR_REV) \
|
||||||
CONFIG_EDK2_UEFIPAYLOAD=$(CONFIG_EDK2_UEFIPAYLOAD) \
|
CONFIG_TIANOCORE_UEFIPAYLOAD=$(CONFIG_TIANOCORE_UEFIPAYLOAD) \
|
||||||
CONFIG_EDK2_REPO_OFFICIAL=$(CONFIG_EDK2_REPO_OFFICIAL) \
|
CONFIG_TIANOCORE_UPSTREAM=$(CONFIG_TIANOCORE_UPSTREAM) \
|
||||||
CONFIG_EDK2_REPO_MRCHROMEBOX=$(CONFIG_EDK2_REPO_MRCHROMEBOX) \
|
CONFIG_TIANOCORE_CUSTOM=$(CONFIG_TIANOCORE_CUSTOM) \
|
||||||
CONFIG_EDK2_REPO_CUSTOM=$(CONFIG_EDK2_REPO_CUSTOM) \
|
CONFIG_TIANOCORE_CUSTOM_BUILD_PARAMS=$(CONFIG_TIANOCORE_CUSTOM_BUILD_PARAMS) \
|
||||||
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \
|
CONFIG_TIANOCORE_COREBOOTPAYLOAD=$(CONFIG_TIANOCORE_COREBOOTPAYLOAD) \
|
||||||
CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \
|
CONFIG_TIANOCORE_DEBUG=$(CONFIG_TIANOCORE_DEBUG) \
|
||||||
CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \
|
CONFIG_TIANOCORE_RELEASE=$(CONFIG_TIANOCORE_RELEASE) \
|
||||||
CONFIG_EDK2_VERBOSE_BUILD=$(CONFIG_EDK2_VERBOSE_BUILD) \
|
CONFIG_TIANOCORE_ABOVE_4G_MEMORY=$(CONFIG_TIANOCORE_ABOVE_4G_MEMORY) \
|
||||||
CONFIG_EDK2_ABOVE_4G_MEMORY=$(CONFIG_EDK2_ABOVE_4G_MEMORY) \
|
CONFIG_TIANOCORE_BOOTSPLASH_FILE=$(CONFIG_TIANOCORE_BOOTSPLASH_FILE) \
|
||||||
CONFIG_EDK2_BOOTSPLASH_FILE=$(CONFIG_EDK2_BOOTSPLASH_FILE) \
|
CONFIG_TIANOCORE_BOOT_MANAGER_ESCAPE=$(CONFIG_TIANOCORE_BOOT_MANAGER_ESCAPE) \
|
||||||
CONFIG_EDK2_BOOT_MANAGER_ESCAPE=$(CONFIG_EDK2_BOOT_MANAGER_ESCAPE) \
|
CONFIG_TIANOCORE_BOOT_TIMEOUT=$(CONFIG_TIANOCORE_BOOT_TIMEOUT) \
|
||||||
CONFIG_EDK2_BOOT_TIMEOUT=$(CONFIG_EDK2_BOOT_TIMEOUT) \
|
CONFIG_TIANOCORE_CBMEM_LOGGING=$(CONFIG_TIANOCORE_CBMEM_LOGGING) \
|
||||||
CONFIG_EDK2_CBMEM_LOGGING=$(CONFIG_EDK2_CBMEM_LOGGING) \
|
CONFIG_TIANOCORE_FOLLOW_BGRT_SPEC=$(CONFIG_TIANOCORE_FOLLOW_BGRT_SPEC) \
|
||||||
CONFIG_EDK2_FOLLOW_BGRT_SPEC=$(CONFIG_EDK2_FOLLOW_BGRT_SPEC) \
|
CONFIG_TIANOCORE_HAVE_EFI_SHELL=$(CONFIG_TIANOCORE_HAVE_EFI_SHELL) \
|
||||||
CONFIG_EDK2_FULL_SCREEN_SETUP=$(CONFIG_EDK2_FULL_SCREEN_SETUP) \
|
CONFIG_TIANOCORE_PRIORITIZE_INTERNAL=$(CONFIG_TIANOCORE_PRIORITIZE_INTERNAL) \
|
||||||
CONFIG_EDK2_HAVE_EFI_SHELL=$(CONFIG_EDK2_HAVE_EFI_SHELL) \
|
CONFIG_TIANOCORE_PS2_SUPPORT=$(CONFIG_TIANOCORE_PS2_SUPPORT) \
|
||||||
CONFIG_EDK2_PRIORITIZE_INTERNAL=$(CONFIG_EDK2_PRIORITIZE_INTERNAL) \
|
CONFIG_TIANOCORE_SERIAL_SUPPORT=$(TIANOCORE_SERIAL_SUPPORT) \
|
||||||
CONFIG_EDK2_PS2_SUPPORT=$(CONFIG_EDK2_PS2_SUPPORT) \
|
CONFIG_TIANOCORE_SD_MMC_TIMEOUT=$(CONFIG_TIANOCORE_SD_MMC_TIMEOUT) \
|
||||||
CONFIG_EDK2_SERIAL_SUPPORT=$(CONFIG_EDK2_SERIAL_SUPPORT) \
|
CONFIG_TIANOCORE_USE_8254_TIMER=$(CONFIG_TIANOCORE_USE_8254_TIMER) \
|
||||||
CONFIG_EDK2_SD_MMC_TIMEOUT=$(CONFIG_EDK2_SD_MMC_TIMEOUT) \
|
|
||||||
CONFIG_ECAM_MMCONF_BASE_ADDRESS=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS) \
|
CONFIG_ECAM_MMCONF_BASE_ADDRESS=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS) \
|
||||||
CONFIG_ECAM_MMCONF_LENGTH=$(CONFIG_ECAM_MMCONF_LENGTH) \
|
CONFIG_ECAM_MMCONF_LENGTH=$(CONFIG_ECAM_MMCONF_LENGTH) \
|
||||||
CONFIG_SMMSTORE_V2=$(CONFIG_SMMSTORE_v2) \
|
|
||||||
GCC_CC_x86_32=$(GCC_CC_x86_32) \
|
GCC_CC_x86_32=$(GCC_CC_x86_32) \
|
||||||
GCC_CC_x86_64=$(GCC_CC_x86_64) \
|
GCC_CC_x86_64=$(GCC_CC_x86_64) \
|
||||||
GCC_CC_arm=$(GCC_CC_arm) \
|
GCC_CC_arm=$(GCC_CC_arm) \
|
||||||
@@ -192,6 +190,7 @@ $(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
|
|||||||
OBJCOPY_arm=$(OBJCOPY_arm) \
|
OBJCOPY_arm=$(OBJCOPY_arm) \
|
||||||
OBJCOPY_arm64=$(OBJCOPY_arm64) \
|
OBJCOPY_arm64=$(OBJCOPY_arm64) \
|
||||||
MFLAGS= MAKEFLAGS=
|
MFLAGS= MAKEFLAGS=
|
||||||
|
mv payloads/external/tianocore/output/UEFIPAYLOAD.fd $@
|
||||||
|
|
||||||
# FILO
|
# FILO
|
||||||
|
|
||||||
|
217
payloads/external/edk2/Kconfig
vendored
@@ -1,217 +0,0 @@
|
|||||||
if PAYLOAD_EDK2
|
|
||||||
|
|
||||||
config PAYLOAD_FILE
|
|
||||||
string "edk2 binary"
|
|
||||||
default "$(obj)/UEFIPAYLOAD.fd" if EDK2_UEFIPAYLOAD
|
|
||||||
help
|
|
||||||
The result of a UefiPayloadPkg build
|
|
||||||
|
|
||||||
config EDK2_UEFIPAYLOAD
|
|
||||||
bool "Build UefiPayloadPkg"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Build the standard UefiPayloadPkg
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Tianocore's EDK II payload"
|
|
||||||
default EDK2_REPO_MRCHROMEBOX
|
|
||||||
help
|
|
||||||
Select which type of payload edk2 will build (default is UefiPayload)
|
|
||||||
UefiPayload: MrChromebox's customized fork of edk2 which works on most
|
|
||||||
x86_64 devices
|
|
||||||
Upstream: Use upstream edk2 payload from https://github.com/tianocore/edk2
|
|
||||||
|
|
||||||
config EDK2_REPO_MRCHROMEBOX
|
|
||||||
bool "MrChromebox' edk2 fork"
|
|
||||||
help
|
|
||||||
Select this option to build using MrChromebox's custom edk2 fork,
|
|
||||||
which incorporates fixes/improvements from System 76's and 9elements' trees.
|
|
||||||
|
|
||||||
config EDK2_REPO_OFFICIAL
|
|
||||||
bool "Official edk2 repository"
|
|
||||||
help
|
|
||||||
Select this option if you want to use the official edk2 repository to build
|
|
||||||
edk2.
|
|
||||||
|
|
||||||
Please note, this option will not work on any SOC without modification.
|
|
||||||
|
|
||||||
config EDK2_REPO_CUSTOM
|
|
||||||
bool "Specify your own repository"
|
|
||||||
help
|
|
||||||
Specify your own edk2 repository and branch to use.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config EDK2_REPOSITORY
|
|
||||||
string "URL to git repository for edk2"
|
|
||||||
default "https://github.com/mrchromebox/edk2" if EDK2_REPO_MRCHROMEBOX
|
|
||||||
default "https://github.com/tianocore/edk2" if EDK2_REPO_OFFICIAL
|
|
||||||
default "" if EDK2_REPO_CUSTOM
|
|
||||||
help
|
|
||||||
coreboot supports an array of build options which can be found below. These options
|
|
||||||
will only have an effect if the relevant options exist in the target repository.
|
|
||||||
|
|
||||||
config EDK2_TAG_OR_REV
|
|
||||||
string "Insert a commit's SHA-1 or a branch name"
|
|
||||||
default "origin/uefipayload_202207" if EDK2_REPO_MRCHROMEBOX
|
|
||||||
default "origin/master" if EDK2_REPO_OFFICIAL
|
|
||||||
default "" if EDK2_REPO_CUSTOM
|
|
||||||
help
|
|
||||||
The commit's SHA-1 or branch name of the revision to use. This must exist in
|
|
||||||
EDK2_REPOSITORY, and in the case of a branch name, prefixed with origin i.e.
|
|
||||||
"origin/uefipayload_202202"
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "edk2 build"
|
|
||||||
default EDK2_RELEASE
|
|
||||||
help
|
|
||||||
Select whether to generate a debug or release build for
|
|
||||||
edk2; default is to generate a release build.
|
|
||||||
|
|
||||||
config EDK2_DEBUG
|
|
||||||
bool "Generate edk2 debug build"
|
|
||||||
help
|
|
||||||
Generate a debug build.
|
|
||||||
|
|
||||||
config EDK2_RELEASE
|
|
||||||
bool "Generate edk2 release build"
|
|
||||||
help
|
|
||||||
Generate a release build.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config EDK2_VERBOSE_BUILD
|
|
||||||
bool "Output verbose build log for troubleshooting build failures"
|
|
||||||
help
|
|
||||||
Switch off the `-q` (quiet) and `-s` (silent) build arguments which makes the
|
|
||||||
build log extremely verbose. This can be used to troubleshoot failed builds
|
|
||||||
which are usually down to missing tools or toolchain.
|
|
||||||
|
|
||||||
config EDK2_ABOVE_4G_MEMORY
|
|
||||||
bool "Enable above 4G memory"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Select this option to enable Above 4G Decode. This will allow the
|
|
||||||
payload to use all of the memory, rather than an maximum of 4G.
|
|
||||||
|
|
||||||
Disabling memory above 4G is useful for bootloaders that are not
|
|
||||||
fully 64-bit aware such as Qubes R4.0.4 bootloader.
|
|
||||||
|
|
||||||
config EDK2_BOOTSPLASH_FILE
|
|
||||||
string "edk2 Bootsplash path and filename"
|
|
||||||
default "Documentation/coreboot_logo.bmp"
|
|
||||||
help
|
|
||||||
The path and filename of the file to use as graphical bootsplash
|
|
||||||
image. If this option is not configured, the default
|
|
||||||
coreboot logo (European Brown Hare) will used.
|
|
||||||
|
|
||||||
You can use any image format supported by imagemagick, a list of which
|
|
||||||
can be found [here](https://imagemagick.org/script/formats.php).
|
|
||||||
|
|
||||||
The build process will automatically convert this to the format that
|
|
||||||
edk2 requires, which is an uncompressed BMP, in BMP3 format. It does
|
|
||||||
this using imagemagick (`convert splosh.bmp BMP3:splash.bmp`).
|
|
||||||
|
|
||||||
The newly formatted file will be the dimensions size as the original
|
|
||||||
one.
|
|
||||||
|
|
||||||
The build process will automatically do this conversion, so it can
|
|
||||||
be supplied with any format that imagemagick can process (which is
|
|
||||||
pretty much any!).
|
|
||||||
|
|
||||||
This image will also be used as the BGRT boot image, which may
|
|
||||||
persist through your OS boot process.
|
|
||||||
|
|
||||||
See ACPI spec 6.3, 5.2.22 Boot Graphics Resource Table (BGRT), and
|
|
||||||
Microsoft's documentation on BGRT positioning:
|
|
||||||
Docs/Windows/Windows Drivers/Bring up guide/Boot screen components
|
|
||||||
|
|
||||||
Accordingly, the image used should be no taller/wider than 40% of
|
|
||||||
the display panel's native pixel height/width (or resolution set).
|
|
||||||
|
|
||||||
If an absolute path is not given, the path will assumed to be
|
|
||||||
relative to the coreboot root directory.
|
|
||||||
|
|
||||||
config EDK2_BOOT_MANAGER_ESCAPE
|
|
||||||
bool "Use Escape key for Boot Manager"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Use Escape as the hot-key to access the Boot Manager. This replaces
|
|
||||||
the default key of F2.
|
|
||||||
|
|
||||||
config EDK2_BOOT_TIMEOUT
|
|
||||||
int "Set the timeout for boot menu prompt"
|
|
||||||
default 2
|
|
||||||
help
|
|
||||||
The length of time in seconds for which the boot splash/menu prompt will be displayed.
|
|
||||||
For boards with an internal display, the default value of 2s is generally sufficient.
|
|
||||||
For boards with an external display, a value of 5s is generally sufficient.
|
|
||||||
|
|
||||||
config EDK2_CBMEM_LOGGING
|
|
||||||
bool "Enable edk2 logging to CBMEM"
|
|
||||||
help
|
|
||||||
Select this option if you want to enable edk2 logging to CBMEM.
|
|
||||||
You may want to increase the default cbmem buffer size when selecting
|
|
||||||
this option, especially if using a debug (vs release) build.
|
|
||||||
Selecting this option will increase the payload size in CBFS by 0x10000.
|
|
||||||
|
|
||||||
config EDK2_FOLLOW_BGRT_SPEC
|
|
||||||
bool "Center logo 38.2% from the top of screen"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Follow the BGRT Specification implemented by Microsoft and
|
|
||||||
the Boot Logo 38.2% will be vertically centered 38.2% from
|
|
||||||
the top of the display.
|
|
||||||
|
|
||||||
config EDK2_FULL_SCREEN_SETUP
|
|
||||||
bool "Use the full screen for the edk2 frontpage"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Allow edk2 to use the full screen to display the frontpage
|
|
||||||
(aka "Boot Menu"). With this option disable, it will be
|
|
||||||
limited to 640x480.
|
|
||||||
|
|
||||||
config EDK2_HAVE_EFI_SHELL
|
|
||||||
bool "Include EFI Shell"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Include the EFI shell Binary
|
|
||||||
|
|
||||||
config EDK2_PRIORITIZE_INTERNAL
|
|
||||||
bool "Prioritize internal boot devices"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Prioritize internal boot devices over external devices
|
|
||||||
|
|
||||||
config EDK2_PS2_SUPPORT
|
|
||||||
bool "Support PS/2 Keyboards"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Include support for PS/2 keyboards
|
|
||||||
|
|
||||||
config EDK2_SD_MMC_TIMEOUT
|
|
||||||
int "Timeout in ms for initializing SD and eMMC devices"
|
|
||||||
default 10
|
|
||||||
help
|
|
||||||
The amount of time allowed to initialize the SD Card reader and/or eMMC drive.
|
|
||||||
Most only require 10ms, but certain readers can take 1s.
|
|
||||||
|
|
||||||
config EDK2_SERIAL_SUPPORT
|
|
||||||
bool "Support serial output"
|
|
||||||
default y if EDK2_DEBUG
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Enable serial port output in edk2. Serial output limits the performance of edk2's
|
|
||||||
FrontPage.
|
|
||||||
|
|
||||||
config EDK2_CUSTOM_BUILD_PARAMS
|
|
||||||
string "edk2 additional custom build parameters"
|
|
||||||
default "-D VARIABLE_SUPPORT=SMMSTORE" if EDK2_REPO_MRCHROMEBOX && SMMSTORE_V2
|
|
||||||
help
|
|
||||||
edk2 has build options that are not modified by coreboot, and these can be
|
|
||||||
found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support
|
|
||||||
additional build options that should have been upstreamed but have not.
|
|
||||||
|
|
||||||
This option can support both macros `-D` and Pcds `--pcd`.
|
|
||||||
|
|
||||||
endif
|
|
238
payloads/external/edk2/Makefile
vendored
@@ -1,238 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
# force the shell to bash - the edksetup.sh script doesn't work with dash
|
|
||||||
export SHELL := env bash
|
|
||||||
|
|
||||||
project_name = edk2
|
|
||||||
export WORKSPACE := $(CURDIR)/workspace
|
|
||||||
export EDK2_PATH := $(WORKSPACE)/$(word 3,$(subst /, ,$(CONFIG_EDK2_REPOSITORY)))
|
|
||||||
export PACKAGES_PATH := $(EDK2_PATH)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
|
|
||||||
BUILD_STR = -p UefiPayloadPkg/UefiPayloadPkg.dsc
|
|
||||||
endif
|
|
||||||
BUILD_STR += -t COREBOOT
|
|
||||||
BUILD_STR += -D BOOTLOADER=COREBOOT
|
|
||||||
ifneq ($(CONFIG_EDK2_VERBOSE_BUILD),y)
|
|
||||||
BUILD_STR += -q
|
|
||||||
ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
|
|
||||||
BUILD_STR += -s
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
#
|
|
||||||
# EDK II has the following build options relevant to coreboot:
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# OPTION = DEFAULT_VALUE
|
|
||||||
#
|
|
||||||
# ABOVE_4G_MEMORY = TRUE
|
|
||||||
ifneq ($(CONFIG_EDK2_ABOVE_4G_MEMORY),y)
|
|
||||||
BUILD_STR += -D ABOVE_4G_MEMORY=FALSE
|
|
||||||
endif
|
|
||||||
# BOOTSPLASH_IMAGE = FALSE
|
|
||||||
ifneq ($(CONFIG_EDK2_BOOTSPLASH_FILE),)
|
|
||||||
BUILD_STR += -D BOOTSPLASH_IMAGE=TRUE
|
|
||||||
endif
|
|
||||||
# BOOT_MANAGER_ESCAPE = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_BOOT_MANAGER_ESCAPE),y)
|
|
||||||
BUILD_STR += -D BOOT_MANAGER_ESCAPE=TRUE
|
|
||||||
endif
|
|
||||||
# BUILD_TARGETS = DEBUG
|
|
||||||
ifeq ($(CONFIG_EDK2_DEBUG),y)
|
|
||||||
RELEASE_STR = DEBUG
|
|
||||||
else
|
|
||||||
RELEASE_STR = RELEASE
|
|
||||||
endif
|
|
||||||
# DISABLE_SERIAL_TERMINAL = FALSE
|
|
||||||
ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
|
|
||||||
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
|
||||||
endif
|
|
||||||
# FOLLOW_BGRT_SPEC = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_FOLLOW_BGRT_SPEC),y)
|
|
||||||
BUILD_STR += -D FOLLOW_BGRT_SPEC=TRUE
|
|
||||||
endif
|
|
||||||
# PCIE_BASE_ADDRESS = 0
|
|
||||||
ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
|
|
||||||
BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS)
|
|
||||||
endif
|
|
||||||
# PCIE_BASE_LENGTH = 0
|
|
||||||
ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
|
|
||||||
BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize=$(CONFIG_ECAM_MMCONF_LENGTH)
|
|
||||||
endif
|
|
||||||
# PRIORITIZE_INTERNAL = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_PRIORITIZE_INTERNAL),y)
|
|
||||||
BUILD_STR += -D PRIORITIZE_INTERNAL=TRUE
|
|
||||||
endif
|
|
||||||
# PS2_KEYBOARD_ENABLE = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
|
|
||||||
BUILD_STR += -D PS2_KEYBOARD_ENABLE=TRUE
|
|
||||||
endif
|
|
||||||
# PLATFORM_BOOT_TIMEOUT = 3
|
|
||||||
ifneq ($(CONFIG_EDK2_BOOT_TIMEOUT),)
|
|
||||||
BUILD_STR += -D PLATFORM_BOOT_TIMEOUT=$(CONFIG_EDK2_BOOT_TIMEOUT)
|
|
||||||
endif
|
|
||||||
# SIO_BUS_ENABLE = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_PS2_SUPPORT),y)
|
|
||||||
BUILD_STR += -D SIO_BUS_ENABLE=TRUE
|
|
||||||
endif
|
|
||||||
# SHELL_TYPE = BUILD_SHELL
|
|
||||||
ifneq ($(CONFIG_EDK2_HAVE_EFI_SHELL),y)
|
|
||||||
BUILD_STR += -D SHELL_TYPE=NONE
|
|
||||||
endif
|
|
||||||
# USE_CBMEM_FOR_CONSOLE = FALSE
|
|
||||||
ifeq ($(CONFIG_EDK2_CBMEM_LOGGING),y)
|
|
||||||
BUILD_STR += -D USE_CBMEM_FOR_CONSOLE=TRUE
|
|
||||||
endif
|
|
||||||
# SD_MMC_TIMEOUT = 1000000
|
|
||||||
ifneq ($(CONFIG_EDK2_SD_MMC_TIMEOUT),)
|
|
||||||
BUILD_STR += -D SD_MMC_TIMEOUT=$(shell echo $$(( $(CONFIG_EDK2_SD_MMC_TIMEOUT) * 1000)) )
|
|
||||||
endif
|
|
||||||
|
|
||||||
#
|
|
||||||
# EDKII has the below PCDs that are relevant to coreboot:
|
|
||||||
#
|
|
||||||
# Allows EDKII to use the full framebuffer
|
|
||||||
ifeq ($(CONFIG_EDK2_FULL_SCREEN_SETUP),y)
|
|
||||||
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow=0
|
|
||||||
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn=0
|
|
||||||
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow=0
|
|
||||||
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn=0
|
|
||||||
endif
|
|
||||||
|
|
||||||
bootloader = $(word 8,$(subst /, ,$(BUILD_STR)))
|
|
||||||
|
|
||||||
ifneq ($(CONFIG_EDK2_CUSTOM_BUILD_PARAMS),)
|
|
||||||
BUILD_STR += $(CONFIG_EDK2_CUSTOM_BUILD_PARAMS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: UefiPayloadPkg
|
|
||||||
|
|
||||||
$(WORKSPACE):
|
|
||||||
mkdir $(WORKSPACE)
|
|
||||||
|
|
||||||
$(EDK2_PATH): $(WORKSPACE)
|
|
||||||
if [ ! -d "$(EDK2_PATH)" ]; then \
|
|
||||||
git clone --recurse-submodules $(CONFIG_EDK2_REPOSITORY) $(EDK2_PATH) -j5; \
|
|
||||||
fi
|
|
||||||
cd $(EDK2_PATH); \
|
|
||||||
git checkout MdeModulePkg/Logo/Logo.bmp > /dev/null 2>&1 || true; \
|
|
||||||
if [ -e UefiPayloadPkg/ShimLayer/UniversalPayload.o ]; then \
|
|
||||||
rm UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
|
|
||||||
fi; \
|
|
||||||
echo " Fetching new commits from $(CONFIG_EDK2_REPOSITORY)"; \
|
|
||||||
git fetch origin 2>/dev/null; \
|
|
||||||
if ! git rev-parse --verify -q $(CONFIG_EDK2_TAG_OR_REV) >/dev/null; then \
|
|
||||||
echo " $(CONFIG_EDK2_TAG_OR_REV) is not a valid git reference"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
if git status --ignore-submodules=dirty | grep -q clean; then \
|
|
||||||
echo " Checking out $(project_name) revision $(CONFIG_EDK2_TAG_OR_REV)"; \
|
|
||||||
git checkout --detach $(CONFIG_EDK2_TAG_OR_REV) -f; \
|
|
||||||
else \
|
|
||||||
echo " Working directory not clean; will not overwrite"; \
|
|
||||||
fi; \
|
|
||||||
git submodule update --init --checkout
|
|
||||||
|
|
||||||
logo: $(EDK2_PATH)
|
|
||||||
case "$(CONFIG_EDK2_BOOTSPLASH_FILE)" in \
|
|
||||||
"") ;; \
|
|
||||||
/*) convert -background None $(CONFIG_EDK2_BOOTSPLASH_FILE) \
|
|
||||||
BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
|
|
||||||
*) convert -background None $(top)/$(CONFIG_EDK2_BOOTSPLASH_FILE) \
|
|
||||||
BMP3:$(EDK2_PATH)/MdeModulePkg/Logo/Logo.bmp;; \
|
|
||||||
esac \
|
|
||||||
|
|
||||||
checktools:
|
|
||||||
echo -n "EDK2: Checking uuid-dev:"
|
|
||||||
echo "#include <uuid/uuid.h>" > libtest.c
|
|
||||||
echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c
|
|
||||||
$(HOSTCC) $(HOSTCCFLAGS) libtest.c -o libtest >/dev/null 2>&1 && echo " Found!" || \
|
|
||||||
( echo " Not found!"; \
|
|
||||||
echo "ERROR: please_install uuid-dev (libuuid-devel)"; exit 1 )
|
|
||||||
rm -rf libtest.c libtest
|
|
||||||
echo -n "EDK2: Checking nasm:"
|
|
||||||
type nasm > /dev/null 2>&1 && echo " Found!" || \
|
|
||||||
( echo " Not found!"; echo "ERROR: Please install nasm."; exit 1 )
|
|
||||||
echo -n "EDK2: Checking imagemagick:"
|
|
||||||
-convert -size 1x1 xc: test.png &> /dev/null;
|
|
||||||
if [ -f test.png ]; then \
|
|
||||||
rm test.png && echo " Found!"; \
|
|
||||||
else \
|
|
||||||
echo " Not found!"; \
|
|
||||||
echo "ERROR: Please install imagemagick"; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
print:
|
|
||||||
echo " ##### $(project_name) Build Summary #####"
|
|
||||||
echo " Repository: $(CONFIG_EDK2_REPOSITORY)"
|
|
||||||
echo " Branch: $(CONFIG_EDK2_TAG_OR_REV)"
|
|
||||||
echo " $(BUILD_STR)" | \
|
|
||||||
sed -e 's/--/-/g' -e 's/-/\n /g' | sort | sed \
|
|
||||||
-e 's/a /Architecture: /g' \
|
|
||||||
-e 's/b /Release: /g' \
|
|
||||||
-e 's/D /Option: /g' \
|
|
||||||
-e 's/pcd /Pcd: /g' \
|
|
||||||
-e 's/p /Payload: /g' \
|
|
||||||
-e 's/q /Build: Quiet/' \
|
|
||||||
-e 's/s /Build: Silent/' \
|
|
||||||
-e 's/t /Toolchain: /'
|
|
||||||
|
|
||||||
prep: $(EDK2_PATH) clean checktools logo
|
|
||||||
cd $(WORKSPACE); \
|
|
||||||
source $(EDK2_PATH)/edksetup.sh; \
|
|
||||||
unset CC; $(MAKE) -C $(EDK2_PATH)/BaseTools 2>&1; \
|
|
||||||
grep -q "COREBOOT" $(EDK2_PATH)/Conf/tools_def.txt; \
|
|
||||||
if [ $$? -ne 0 ]; then \
|
|
||||||
cat ../tools_def.txt >> $(EDK2_PATH)/Conf/tools_def.txt; \
|
|
||||||
fi; \
|
|
||||||
|
|
||||||
$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd: \
|
|
||||||
prep print
|
|
||||||
cd $(WORKSPACE); \
|
|
||||||
source $(EDK2_PATH)/edksetup.sh; \
|
|
||||||
echo -n "EDK2: Building... "; \
|
|
||||||
build -a IA32 -a X64 -b $(RELEASE_STR) $(BUILD_STR) \
|
|
||||||
-y $(WORKSPACE)/Build/UefiPayloadPkgX64/UEFIPAYLOAD.txt; \
|
|
||||||
if [ ! -f $@ ]; then \
|
|
||||||
echo "Failed!"; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
echo "Success!"; \
|
|
||||||
|
|
||||||
$(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf: \
|
|
||||||
prep print
|
|
||||||
cd $(WORKSPACE); \
|
|
||||||
source $(EDK2_PATH)/edksetup.sh; \
|
|
||||||
echo -n "EDK2: Building... "; \
|
|
||||||
$(EDK2_PATH)/UefiPayloadPkg/UniversalPayloadBuild.sh -a IA32 -a X64 -b $(RELEASE_STR) $(BUILD_STR)
|
|
||||||
if [ ! -f $@ ]; then \
|
|
||||||
echo "Failed!"; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
echo "Success!"; \
|
|
||||||
|
|
||||||
$(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll: \
|
|
||||||
$(WORKSPACE)/Build/UefiPayloadPkgX64/UniversalPayload.elf prep
|
|
||||||
cd $(WORKSPACE)/Build/UefiPayloadPkgX64 && \
|
|
||||||
$(OBJCOPY) -I binary UniversalPayload.elf -O elf32-i386 -B i386 \
|
|
||||||
$(EDK2_PATH)/UefiPayloadPkg/ShimLayer/UniversalPayload.o; \
|
|
||||||
cd $(WORKSPACE) && \
|
|
||||||
source $(EDK2_PATH)/edksetup.sh; \
|
|
||||||
build -p UefiPayloadPkg/UefiPayloadPkg.dsc -b $(RELEASE_STR) -a IA32 -a X64 \
|
|
||||||
-m UefiPayloadPkg/ShimLayer/ShimLayer.inf \
|
|
||||||
-t COREBOOT -D BOOTLOADER=COREBOOT -D SHIMLAYER=TRUE \
|
|
||||||
-y $(WORKSPACE)/Build/UefiPayloadPkgX64/ShimLayer.txt
|
|
||||||
|
|
||||||
UefiPayloadPkg: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd
|
|
||||||
mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd \
|
|
||||||
../../../build/UEFIPAYLOAD.fd
|
|
||||||
|
|
||||||
clean:
|
|
||||||
test -d $(WORKSPACE) && (cd $(WORKSPACE); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
|
|
||||||
|
|
||||||
distclean:
|
|
||||||
rm -rf $(WORKSPACE)
|
|
||||||
|
|
||||||
.PHONY: $(EDK2_PATH) checktools logo UefiPayloadPkg clean distclean
|
|
3
payloads/external/skiboot/Makefile
vendored
@@ -32,6 +32,5 @@ distclean: clean
|
|||||||
clean:
|
clean:
|
||||||
# Redefine RM because it's used like `$(RM) non-existent-file`
|
# Redefine RM because it's used like `$(RM) non-existent-file`
|
||||||
# Also ignore useless messages about removing test files
|
# Also ignore useless messages about removing test files
|
||||||
[ ! -d $(skiboot_dir) ] || \
|
[ ! -d $(skiboot_dir) ] || $(MAKE) -C $(skiboot_dir) RM="rm -rf" clean > /dev/null
|
||||||
$(MAKE) -C $(skiboot_dir) RM="rm -rf" CROSS="$(skiboot_cross)" clean > /dev/null
|
|
||||||
rm -rf $(build_dir)
|
rm -rf $(build_dir)
|
||||||
|
208
payloads/external/tianocore/Kconfig
vendored
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
if PAYLOAD_TIANOCORE
|
||||||
|
|
||||||
|
config PAYLOAD_FILE
|
||||||
|
string "Tianocore binary"
|
||||||
|
default "$(obj)/UEFIPAYLOAD.fd"
|
||||||
|
help
|
||||||
|
The result of a UefiPayloadPkg build
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Tianocore payload"
|
||||||
|
default TIANOCORE_UEFIPAYLOAD
|
||||||
|
help
|
||||||
|
Select which type of payload Tianocore will build (default is UefiPayload)
|
||||||
|
UefiPayload: MrChromebox's customized fork of Tianocore which works on most
|
||||||
|
x86_64 devices
|
||||||
|
Upstream: Use upstream Tianocore payload from https://github.com/tianocore/edk2
|
||||||
|
CorebootPayload: MrChromebox's customized fork of the deprecated CorebootPayloadPkg
|
||||||
|
Tianocore build target. It may work better on some older hardware (eg, x230)
|
||||||
|
which does not work properly with the UefiPayloadPkg options.
|
||||||
|
|
||||||
|
config TIANOCORE_UEFIPAYLOAD
|
||||||
|
bool "UEFIPayload"
|
||||||
|
help
|
||||||
|
Select this option to build using MrChromebox's custom Tianocore fork,
|
||||||
|
which incorporates fixes/improvements from System 76's and 9elements' trees.
|
||||||
|
|
||||||
|
config TIANOCORE_UPSTREAM
|
||||||
|
bool "Upstream"
|
||||||
|
help
|
||||||
|
Select this option if you want to use upstream EDK2 to build Tianocore.
|
||||||
|
|
||||||
|
config TIANOCORE_COREBOOTPAYLOAD
|
||||||
|
bool "CorebootPayload"
|
||||||
|
help
|
||||||
|
Select this option to build using MrChromebox's older (now deprecated)
|
||||||
|
CorebootPayloadPkg-based Tianocore branch
|
||||||
|
|
||||||
|
config TIANOCORE_CUSTOM
|
||||||
|
bool "Custom"
|
||||||
|
help
|
||||||
|
Specify your own edk2 repository and branch to use.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config TIANOCORE_REPOSITORY
|
||||||
|
string "URL to git repository for edk2"
|
||||||
|
default "https://github.com/tianocore/edk2" if TIANOCORE_UPSTREAM
|
||||||
|
default "https://github.com/mrchromebox/edk2" if TIANOCORE_UEFIPAYLOAD || TIANOCORE_COREBOOTPAYLOAD
|
||||||
|
help
|
||||||
|
coreboot supports an array of build options which can be found below. These options
|
||||||
|
will only have an effect if the relevant options exist in the target repository.
|
||||||
|
|
||||||
|
config TIANOCORE_TAG_OR_REV
|
||||||
|
string "Insert a commit's SHA-1 or a branch name"
|
||||||
|
default "origin/uefipayload_202107" if TIANOCORE_UEFIPAYLOAD
|
||||||
|
default "origin/master" if TIANOCORE_UPSTREAM
|
||||||
|
default "origin/coreboot_fb" if TIANOCORE_COREBOOTPAYLOAD
|
||||||
|
help
|
||||||
|
The commit's SHA-1 or branch name of the revision to use. This must exist in
|
||||||
|
TIANOCORE_REPOSITORY, and in the case of a branch name, prefixed with origin i.e.
|
||||||
|
"origin/uefipayload_202202"
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Tianocore build"
|
||||||
|
default TIANOCORE_RELEASE
|
||||||
|
help
|
||||||
|
Select whether to generate a debug or release build for
|
||||||
|
Tianocore; default is to generate a release build.
|
||||||
|
|
||||||
|
config TIANOCORE_DEBUG
|
||||||
|
bool "Generate Tianocore debug build"
|
||||||
|
help
|
||||||
|
Generate a debug build.
|
||||||
|
|
||||||
|
config TIANOCORE_RELEASE
|
||||||
|
bool "Generate Tianocore release build"
|
||||||
|
help
|
||||||
|
Generate a release build.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
if TIANOCORE_UEFIPAYLOAD || TIANOCORE_CUSTOM || TIANOCORE_UPSTREAM
|
||||||
|
|
||||||
|
config TIANOCORE_ABOVE_4G_MEMORY
|
||||||
|
bool "Enable above 4G memory"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Select this option to enable Above 4G Decode. This will allow the
|
||||||
|
payload to use all of the memory, rather than an maximum of 4G.
|
||||||
|
|
||||||
|
Disabling memory above 4G is useful for bootloaders that are not
|
||||||
|
fully 64-bit aware such as Qubes R4.0.4 bootloader.
|
||||||
|
|
||||||
|
|
||||||
|
config TIANOCORE_BOOTSPLASH_FILE
|
||||||
|
string "Tianocore Bootsplash path and filename"
|
||||||
|
default "bootsplash.bmp"
|
||||||
|
help
|
||||||
|
Select this option if you have a bootsplash image that you would
|
||||||
|
like to be used. If this option is not selected, the default
|
||||||
|
coreboot logo (European Brown Hare) will used.
|
||||||
|
|
||||||
|
The path and filename of the file to use as graphical bootsplash
|
||||||
|
image. The file must be an uncompressed BMP, in BMP 3 format.
|
||||||
|
|
||||||
|
Linux can create these with the below command:
|
||||||
|
`convert splosh.bmp BMP3:splash.bmp`
|
||||||
|
|
||||||
|
This image will also be used as the BGRT boot image, which may
|
||||||
|
persist through your OS boot process.
|
||||||
|
|
||||||
|
See ACPI spec 6.3, 5.2.22 Boot Graphics Resource Table (BGRT), and
|
||||||
|
Microsoft's documentation on BGRT positioning:
|
||||||
|
Docs/Windows/Windows Drivers/Bring up guide/Boot screen components
|
||||||
|
|
||||||
|
Accordingly, the image used should be no taller/wider than 40% of
|
||||||
|
the display panel's native pixel height/width (or resolution set).
|
||||||
|
|
||||||
|
If an absolute path is not given, the path will assumed to be
|
||||||
|
relative to the coreboot root directory.
|
||||||
|
|
||||||
|
config TIANOCORE_BOOT_MANAGER_ESCAPE
|
||||||
|
bool "Use Escape key for Boot Manager"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Use Escape as the hot-key to access the Boot Manager. This replaces
|
||||||
|
the default key of F2.
|
||||||
|
|
||||||
|
config TIANOCORE_BOOT_TIMEOUT
|
||||||
|
int "Set the timeout for boot menu prompt"
|
||||||
|
default 2
|
||||||
|
help
|
||||||
|
The length of time in seconds for which the boot splash/menu prompt will be displayed.
|
||||||
|
For boards with an internal display, the default value of 2s is generally sufficient.
|
||||||
|
For boards with an external display, a value of 5s is generally sufficient.
|
||||||
|
|
||||||
|
config TIANOCORE_CBMEM_LOGGING
|
||||||
|
bool "Enable Tianocore logging to CBMEM"
|
||||||
|
help
|
||||||
|
Select this option if you want to enable Tianocore logging to CBMEM.
|
||||||
|
You may want to increase the default cbmem buffer size when selecting
|
||||||
|
this option, especially if using a debug (vs release) build.
|
||||||
|
Selecting this option will increase the payload size in CBFS by 0x10000.
|
||||||
|
|
||||||
|
config TIANOCORE_FOLLOW_BGRT_SPEC
|
||||||
|
bool "Center logo 38.2% from the top of screen"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Follow the BGRT Specification implemented by Microsoft and
|
||||||
|
the Boot Logo 38.2% will be vertically centered 38.2% from
|
||||||
|
the top of the display.
|
||||||
|
|
||||||
|
config TIANOCORE_HAVE_EFI_SHELL
|
||||||
|
bool "Include EFI Shell"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Include the EFI shell Binary
|
||||||
|
|
||||||
|
config TIANOCORE_PRIORITIZE_INTERNAL
|
||||||
|
bool "Prioritize internal boot devices"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Prioritize internal boot devices over external devices
|
||||||
|
|
||||||
|
config TIANOCORE_PS2_SUPPORT
|
||||||
|
bool "Support PS/2 Keyboards"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Include support for PS/2 keyboards
|
||||||
|
|
||||||
|
config TIANOCORE_SD_MMC_TIMEOUT
|
||||||
|
int "Timeout in ms for initializing SD and eMMC devices"
|
||||||
|
default 10
|
||||||
|
help
|
||||||
|
The amount of time allowed to initialize the SD Card reader and/or eMMC drive.
|
||||||
|
Most only require 10ms, but certain readers can take 1s.
|
||||||
|
|
||||||
|
config TIANOCORE_SERIAL_SUPPORT
|
||||||
|
bool "Support serial output"
|
||||||
|
default y if TIANOCORE_DEBUG
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enable serial port output in edk2. Serial output limits the performance of edk2's
|
||||||
|
FrontPage.
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if TIANOCORE_COREBOOTPAYLOAD
|
||||||
|
|
||||||
|
config TIANOCORE_USE_8254_TIMER
|
||||||
|
bool "TianoCore 8254 Timer"
|
||||||
|
help
|
||||||
|
Use 8254 Timer for legacy support.
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if TIANOCORE_CUSTOM
|
||||||
|
|
||||||
|
config TIANOCORE_CUSTOM_BUILD_PARAMS
|
||||||
|
string "TianoCore additional custom build parameters"
|
||||||
|
help
|
||||||
|
Custom TianoCore forks may have different sets of parameters passed
|
||||||
|
to build command. You may specify additional parameters to the custom
|
||||||
|
TianoCore build
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
@@ -1,9 +1,9 @@
|
|||||||
config PAYLOAD_EDK2
|
config PAYLOAD_TIANOCORE
|
||||||
bool "edk2 payload"
|
bool "Tianocore payload"
|
||||||
depends on ARCH_X86 || ARCH_ARM64
|
depends on ARCH_X86 || ARCH_ARM64
|
||||||
help
|
help
|
||||||
Select this option if you want to build a coreboot image
|
Select this option if you want to build a coreboot image
|
||||||
with a edk2 payload. If you don't know what this is
|
with a Tianocore payload. If you don't know what this is
|
||||||
about, just leave it enabled.
|
about, just leave it enabled.
|
||||||
|
|
||||||
See https://coreboot.org/Payloads for more information.
|
See https://coreboot.org/Payloads for more information.
|
191
payloads/external/tianocore/Makefile
vendored
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
# force the shell to bash - the edksetup.sh script doesn't work with dash
|
||||||
|
export SHELL := env bash
|
||||||
|
|
||||||
|
project_name = Tianocore
|
||||||
|
project_dir = $(CURDIR)/$(word 3,$(subst /, ,$(CONFIG_TIANOCORE_REPOSITORY)))
|
||||||
|
|
||||||
|
BUILD_STR = -a IA32 -a X64 -t COREBOOT
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_COREBOOTPAYLOAD),y)
|
||||||
|
BUILD_STR += -p CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc
|
||||||
|
else
|
||||||
|
BUILD_STR += -p UefiPayloadPkg/UefiPayloadPkg.dsc
|
||||||
|
endif
|
||||||
|
BUILD_STR += -D BOOTLOADER=COREBOOT -q
|
||||||
|
|
||||||
|
#
|
||||||
|
# EDK II has the following build options relevant to coreboot:
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# OPTION = DEFAULT_VALUE
|
||||||
|
#
|
||||||
|
# ABOVE_4G_MEMORY = TRUE
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_ABOVE_4G_MEMORY),y)
|
||||||
|
BUILD_STR += -D ABOVE_4G_MEMORY=FALSE
|
||||||
|
endif
|
||||||
|
# BOOTSPLASH_IMAGE = FALSE
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_BOOTSPLASH_FILE),)
|
||||||
|
BUILD_STR += -D BOOTSPLASH_IMAGE=TRUE
|
||||||
|
endif
|
||||||
|
# BOOT_MANAGER_ESCAPE = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_BOOT_MANAGER_ESCAPE),y)
|
||||||
|
BUILD_STR += -D BOOT_MANAGER_ESCAPE=TRUE
|
||||||
|
endif
|
||||||
|
# BUILD_TARGETS = DEBUG
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_RELEASE),y)
|
||||||
|
BUILD_STR += -b RELEASE
|
||||||
|
endif
|
||||||
|
# DISABLE_SERIAL_TERMINAL = FALSE
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_SERIAL_SUPPORT),y)
|
||||||
|
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
||||||
|
endif
|
||||||
|
# FOLLOW_BGRT_SPEC = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_FOLLOW_BGRT_SPEC),y)
|
||||||
|
BUILD_STR += -D FOLLOW_BGRT_SPEC=TRUE
|
||||||
|
endif
|
||||||
|
# PCIE_BASE_ADDRESS = 0
|
||||||
|
ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
|
||||||
|
BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS)
|
||||||
|
endif
|
||||||
|
# PCIE_BASE_LENGTH = 0
|
||||||
|
ifneq ($(CONFIG_ECAM_MMCONF_LENGTH),)
|
||||||
|
BUILD_STR += --pcd gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseSize=$(CONFIG_ECAM_MMCONF_LENGTH)
|
||||||
|
endif
|
||||||
|
# PRIORITIZE_INTERNAL = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_PRIORITIZE_INTERNAL),y)
|
||||||
|
BUILD_STR += -D PRIORITIZE_INTERNAL=TRUE
|
||||||
|
endif
|
||||||
|
# PS2_KEYBOARD_ENABLE = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_PS2_SUPPORT),y)
|
||||||
|
BUILD_STR += -D PS2_KEYBOARD_ENABLE=TRUE
|
||||||
|
endif
|
||||||
|
# PLATFORM_BOOT_TIMEOUT = 3
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_BOOT_TIMEOUT),)
|
||||||
|
BUILD_STR += -D PLATFORM_BOOT_TIMEOUT=$(CONFIG_TIANOCORE_BOOT_TIMEOUT)
|
||||||
|
endif
|
||||||
|
# SIO_BUS_ENABLE = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_PS2_SUPPORT),y)
|
||||||
|
BUILD_STR += -D SIO_BUS_ENABLE=TRUE
|
||||||
|
endif
|
||||||
|
# SHELL_TYPE = BUILD_SHELL
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_HAVE_EFI_SHELL),y)
|
||||||
|
BUILD_STR += -D SHELL_TYPE=NONE
|
||||||
|
endif
|
||||||
|
# USE_CBMEM_FOR_CONSOLE = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_CBMEM_LOGGING),y)
|
||||||
|
BUILD_STR += -D USE_CBMEM_FOR_CONSOLE=TRUE
|
||||||
|
endif
|
||||||
|
# SD_MMC_TIMEOUT = 1000000
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_SD_MMC_TIMEOUT),)
|
||||||
|
BUILD_STR += -D SD_MMC_TIMEOUT=$(call int-multiply, $(CONFIG_TIANOCORE_SD_MMC_TIMEOUT) 1000)
|
||||||
|
endif
|
||||||
|
#
|
||||||
|
# EDKII has the below PCDs that are revalant to coreboot:
|
||||||
|
#
|
||||||
|
# Allows EDKII to use the full framebuffer
|
||||||
|
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow=0
|
||||||
|
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn=0
|
||||||
|
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow=0
|
||||||
|
BUILD_STR += --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn=0
|
||||||
|
#
|
||||||
|
# The below are legacy options only available in CorebootPayloadPkg:
|
||||||
|
#
|
||||||
|
# PCIE_BASE = 0
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_COREBOOTPAYLOAD),y)
|
||||||
|
ifneq ($(CONFIG_ECAM_MMCONF_BASE_ADDRESS),)
|
||||||
|
BUILD_STR += -D PCIE_BASE=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS)
|
||||||
|
endif
|
||||||
|
# USE_HPET_TIMER = FALSE
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_USE_8254_TIMER),y)
|
||||||
|
BUILD_STR += -D USE_HPET_TIMER=TRUE
|
||||||
|
endif
|
||||||
|
endif # CONFIG_TIANOCORE_COREBOOTPAYLOAD
|
||||||
|
|
||||||
|
bootloader = $(word 8,$(subst /, ,$(BUILD_STR)))
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_TIANOCORE_CUSTOM),y)
|
||||||
|
ifneq ($(CONFIG_TIANOCORE_CUSTOM_BUILD_PARAMS),)
|
||||||
|
BUILD_STR += $(CONFIG_TIANOCORE_CUSTOM_BUILD_PARAMS)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: clean build
|
||||||
|
|
||||||
|
$(project_dir):
|
||||||
|
echo " Cloning $(project_name) from $(CONFIG_TIANOCORE_REPOSITORY)"
|
||||||
|
git clone $(CONFIG_TIANOCORE_REPOSITORY) $(project_dir); \
|
||||||
|
cd $(project_dir);
|
||||||
|
|
||||||
|
update: $(project_dir)
|
||||||
|
if [ ! -d "$(project_dir)" ]; then \
|
||||||
|
git clone $(CONFIG_TIANOCORE_REPOSITORY) $(project_dir); \
|
||||||
|
fi
|
||||||
|
cd $(project_dir); \
|
||||||
|
echo " Fetching new commits from $(CONFIG_TIANOCORE_REPOSITORY)"; \
|
||||||
|
git fetch origin 2>/dev/null; \
|
||||||
|
if ! git rev-parse --verify -q $(CONFIG_TIANOCORE_TAG_OR_REV) >/dev/null; then \
|
||||||
|
echo " $(CONFIG_TIANOCORE_TAG_OR_REV) is not a valid git reference"; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
if git status --ignore-submodules=dirty | grep -q clean; then \
|
||||||
|
echo " Checking out $(project_name) revision $(CONFIG_TIANOCORE_TAG_OR_REV)"; \
|
||||||
|
git checkout --detach $(CONFIG_TIANOCORE_TAG_OR_REV) -f; \
|
||||||
|
else \
|
||||||
|
echo " Working directory not clean; will not overwrite"; \
|
||||||
|
fi; \
|
||||||
|
git submodule update --init --checkout
|
||||||
|
|
||||||
|
checktools:
|
||||||
|
echo "Checking uuid-dev..."
|
||||||
|
echo "#include <uuid/uuid.h>" > libtest.c
|
||||||
|
echo "int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }" >> libtest.c
|
||||||
|
$(HOSTCC) $(HOSTCCFLAGS) libtest.c -o libtest >/dev/null 2>&1 && echo " found uuid-dev." || \
|
||||||
|
( echo " Not found."; echo "ERROR: please_install uuid-dev (libuuid-devel)"; exit 1 )
|
||||||
|
rm -rf libtest.c libtest
|
||||||
|
echo "Checking nasm..."
|
||||||
|
type nasm > /dev/null 2>&1 && echo " found nasm." || \
|
||||||
|
( echo " Not found."; echo "Error: Please install nasm."; exit 1 )
|
||||||
|
|
||||||
|
build: update checktools
|
||||||
|
echo " ##### $(project_name) Build Summary #####"
|
||||||
|
echo " Repository: $(CONFIG_TIANOCORE_REPOSITORY)"
|
||||||
|
echo " Branch: $(CONFIG_TIANOCORE_TAG_OR_REV)"
|
||||||
|
echo " $(BUILD_STR)" | \
|
||||||
|
sed 's/-/\n /g' | sort | sed \
|
||||||
|
-e 's/a /Architecture: /g' \
|
||||||
|
-e 's/b /Release: /g' \
|
||||||
|
-e 's/D /Option: /g' \
|
||||||
|
-e 's/p /Payload: /g' \
|
||||||
|
-e 's/q /Build: Quiet/' \
|
||||||
|
-e 's/t /Toolchain: /'
|
||||||
|
unset CC; $(MAKE) -C $(project_dir)/BaseTools 2>&1
|
||||||
|
if [ -n "$(CONFIG_TIANOCORE_BOOTSPLASH_FILE)" ]; then \
|
||||||
|
echo " Copying custom bootsplash image"; \
|
||||||
|
case "$(CONFIG_TIANOCORE_BOOTSPLASH_FILE)" in \
|
||||||
|
/*) convert $(CONFIG_TIANOCORE_BOOTSPLASH_FILE) \
|
||||||
|
BMP3:$(project_dir)/MdeModulePkg/Logo/Logo.bmp;; \
|
||||||
|
*) convert $(top)/$(CONFIG_TIANOCORE_BOOTSPLASH_FILE) \
|
||||||
|
BMP3:$(project_dir)/MdeModulePkg/Logo/Logo.bmp;; \
|
||||||
|
esac \
|
||||||
|
fi; \
|
||||||
|
cd $(project_dir); \
|
||||||
|
export EDK_TOOLS_PATH=$(project_dir)/BaseTools; \
|
||||||
|
export WORKSPACE=$(project_dir); \
|
||||||
|
. ./edksetup.sh BaseTools; \
|
||||||
|
grep -q "COREBOOT" $(project_dir)/Conf/tools_def.txt; \
|
||||||
|
if [ $$? -ne 0 ]; then \
|
||||||
|
cat ../tools_def.txt >> $(project_dir)/Conf/tools_def.txt; \
|
||||||
|
fi; \
|
||||||
|
build $(BUILD_STR); \
|
||||||
|
mkdir -p $(project_dir)/../output
|
||||||
|
mv $(project_dir)/Build/$(bootloader)*/*/FV/UEFIPAYLOAD.fd $(project_dir)/../output/UEFIPAYLOAD.fd; \
|
||||||
|
git checkout MdeModulePkg/Logo/Logo.bmp > /dev/null 2>&1 || true
|
||||||
|
|
||||||
|
clean:
|
||||||
|
test -d $(project_dir) && (cd $(project_dir); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
rm -rf */
|
||||||
|
|
||||||
|
.PHONY: all update checktools config build clean distclean
|
@@ -15,7 +15,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
#The following has been adapted from the BaseTools/Conf/tools_def.template file
|
#The following has been adapted from the BaseTools/Conf/tools_def.template file
|
||||||
#and is used to direct the edk2 build to use coreboot's crossgcc toolchain
|
#and is used to direct the Tianocore build to use coreboot's crossgcc toolchain
|
||||||
#rather than the host machine's toolchain
|
#rather than the host machine's toolchain
|
||||||
|
|
||||||
DEFINE COREBOOT_IA32_PREFIX = ENV(GCC_CC_x86_32)
|
DEFINE COREBOOT_IA32_PREFIX = ENV(GCC_CC_x86_32)
|
@@ -418,11 +418,6 @@ config PCIE_MEDIATEK
|
|||||||
depends on PCI && !PCI_IO_OPS
|
depends on PCI && !PCI_IO_OPS
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config PCIE_QCOM
|
|
||||||
bool "Support for PCIe devices on Qualcomm platforms"
|
|
||||||
depends on PCI && !PCI_IO_OPS
|
|
||||||
default n
|
|
||||||
|
|
||||||
config NVRAM
|
config NVRAM
|
||||||
bool "Support for reading/writing NVRAM bytes"
|
bool "Support for reading/writing NVRAM bytes"
|
||||||
depends on ARCH_X86 # for now
|
depends on ARCH_X86 # for now
|
||||||
|
@@ -32,7 +32,7 @@ head.o-y += head.S
|
|||||||
libc-y += main.c sysinfo.c
|
libc-y += main.c sysinfo.c
|
||||||
libc-y += timer.c coreboot.c util.S
|
libc-y += timer.c coreboot.c util.S
|
||||||
libc-y += exec.S virtual.c
|
libc-y += exec.S virtual.c
|
||||||
libc-y += selfboot.c cache.c
|
libc-y += selfboot.c
|
||||||
libc-y += exception_asm.S exception.c
|
libc-y += exception_asm.S exception.c
|
||||||
libc-y += delay.c
|
libc-y += delay.c
|
||||||
|
|
||||||
|
@@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright 2022 Google LLC
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#include <arch/cache.h>
|
|
||||||
#include <arch/cpuid.h>
|
|
||||||
|
|
||||||
unsigned int dcache_line_bytes(void)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* The value returned in EBX[15:8] is in 8-byte increments.
|
|
||||||
* Cache line size is EBX[15:8] * 8
|
|
||||||
*/
|
|
||||||
return (cpuid_ebx(1) & 0xff00) >> 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int cpu_supports_wbnoinvd(void)
|
|
||||||
{
|
|
||||||
return (cpuid_ebx(0x80000008) >> 9) & 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int cpu_supports_clwb(void)
|
|
||||||
{
|
|
||||||
return (cpuid_ebx(7) >> 24) & 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int cpu_supports_clflushopt(void)
|
|
||||||
{
|
|
||||||
return (cpuid_sub_leaf_ebx(7, 0) >> 23) & 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int cpu_supports_clflush(void)
|
|
||||||
{
|
|
||||||
return (cpuid_ebx(1) >> 19) & 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void dcache_invalidate_all(void)
|
|
||||||
{
|
|
||||||
asm volatile("invd" ::: "memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void dcache_clean_invalidate_all(void)
|
|
||||||
{
|
|
||||||
asm volatile("wbinvd" ::: "memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void dcache_clean_all(void)
|
|
||||||
{
|
|
||||||
if (cpu_supports_wbnoinvd()) {
|
|
||||||
asm volatile(
|
|
||||||
"sfence\n\t"
|
|
||||||
"wbnoinvd\n\t"
|
|
||||||
::: "memory");
|
|
||||||
} else {
|
|
||||||
dcache_clean_invalidate_all();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void dcache_clean_by_mva(void const *addr, size_t len)
|
|
||||||
{
|
|
||||||
unsigned long line, linesize;
|
|
||||||
|
|
||||||
linesize = dcache_line_bytes();
|
|
||||||
line = (uintptr_t)addr & ~(linesize - 1);
|
|
||||||
|
|
||||||
if (cpu_supports_clwb()) {
|
|
||||||
asm volatile("sfence");
|
|
||||||
while (line < (uintptr_t)addr + len) {
|
|
||||||
asm volatile("clwb (%0)" : : "r"(line) : "memory");
|
|
||||||
line += linesize;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dcache_clean_invalidate_by_mva(addr, len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void dcache_invalidate_by_mva(void const *addr, size_t len)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* x86 doesn't have a "invalidate without clean" for a cache line, fall
|
|
||||||
* back to both.
|
|
||||||
*/
|
|
||||||
dcache_clean_invalidate_by_mva(addr, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void dcache_clean_invalidate_by_mva(void const *addr, size_t len)
|
|
||||||
{
|
|
||||||
unsigned long line, linesize;
|
|
||||||
|
|
||||||
linesize = dcache_line_bytes();
|
|
||||||
line = (uintptr_t)addr & ~(linesize - 1);
|
|
||||||
|
|
||||||
if (cpu_supports_clflushopt()) {
|
|
||||||
asm volatile("sfence");
|
|
||||||
while (line < (uintptr_t)addr + len) {
|
|
||||||
asm volatile("clflushopt (%0)" ::"r"(line) : "memory");
|
|
||||||
line += linesize;
|
|
||||||
}
|
|
||||||
} else if (cpu_supports_clflush()) {
|
|
||||||
asm volatile("sfence");
|
|
||||||
while (line < (uintptr_t)addr + len) {
|
|
||||||
asm volatile("clflush (%0)" : : "r"(line) : "memory");
|
|
||||||
line += linesize;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dcache_clean_invalidate_all();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -3,5 +3,3 @@ CONFIG_LP_ARCH_ARM64=y
|
|||||||
CONFIG_LP_TIMER_ARM64_ARCH=y
|
CONFIG_LP_TIMER_ARM64_ARCH=y
|
||||||
CONFIG_LP_SERIAL_CONSOLE=y
|
CONFIG_LP_SERIAL_CONSOLE=y
|
||||||
CONFIG_LP_QUALCOMM_QUPV3_SERIAL_CONSOLE=y
|
CONFIG_LP_QUALCOMM_QUPV3_SERIAL_CONSOLE=y
|
||||||
CONFIG_LP_PCI=y
|
|
||||||
CONFIG_LP_PCIE_QCOM=y
|
|
||||||
|
@@ -37,7 +37,6 @@ libc-$(CONFIG_LP_PCI) += pci_map_bus_ops.c
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
libc-$(CONFIG_LP_PCIE_MEDIATEK) += pcie_mediatek.c
|
libc-$(CONFIG_LP_PCIE_MEDIATEK) += pcie_mediatek.c
|
||||||
libc-$(CONFIG_LP_PCIE_QCOM) += pci_qcom.c
|
|
||||||
|
|
||||||
libc-$(CONFIG_LP_SPEAKER) += speaker.c
|
libc-$(CONFIG_LP_SPEAKER) += speaker.c
|
||||||
|
|
||||||
|
@@ -1,126 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <libpayload.h>
|
|
||||||
#include <pci.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* iATU Unroll-specific register definitions
|
|
||||||
*/
|
|
||||||
#define PCIE_ATU_UNR_REGION_CTRL1 0x00
|
|
||||||
#define PCIE_ATU_UNR_REGION_CTRL2 0x04
|
|
||||||
#define PCIE_ATU_UNR_LOWER_BASE 0x08
|
|
||||||
#define PCIE_ATU_UNR_UPPER_BASE 0x0C
|
|
||||||
#define PCIE_ATU_UNR_LIMIT 0x10
|
|
||||||
#define PCIE_ATU_UNR_LOWER_TARGET 0x14
|
|
||||||
#define PCIE_ATU_UNR_UPPER_TARGET 0x18
|
|
||||||
#define PCIE_ATU_REGION_INDEX0 0x0
|
|
||||||
#define PCIE_ATU_TYPE_CFG0 0x4
|
|
||||||
#define PCIE_ATU_TYPE_CFG1 0x5
|
|
||||||
#define PCIE_ATU_ENABLE BIT(31)
|
|
||||||
#define ATU_CTRL2 PCIE_ATU_UNR_REGION_CTRL2
|
|
||||||
#define ATU_ENABLE PCIE_ATU_ENABLE
|
|
||||||
|
|
||||||
#define PCIE_ATU_BUS(x) (((x) & 0xff) << 24)
|
|
||||||
#define PCIE_ATU_DEV(x) (((x) & 0x1f) << 19)
|
|
||||||
#define PCIE_ATU_FUNC(x) (((x) & 0x7) << 16)
|
|
||||||
#define LINK_WAIT_IATU_US 1000
|
|
||||||
#define LINK_WAIT_MAX_IATU_RETRIES 5
|
|
||||||
|
|
||||||
/* Register address builder */
|
|
||||||
#define PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(region) ((region) << 9)
|
|
||||||
|
|
||||||
#define lower_32_bits(n) ((u32)(n))
|
|
||||||
#define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ATU & endpoint config space base address offsets relative to
|
|
||||||
* PCIe controller base address.
|
|
||||||
*/
|
|
||||||
#define QCOM_ATU_BASE_OFFSET 0x1000
|
|
||||||
#define QCOM_EP_CFG_OFFSET 0x100000
|
|
||||||
#define QCOM_EP_CFG_SIZE 0x1000 /* 4K */
|
|
||||||
|
|
||||||
static void dw_pcie_writel_iatu(void *atu_base, unsigned short index,
|
|
||||||
uint32_t reg, uint32_t val)
|
|
||||||
{
|
|
||||||
uint32_t offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index);
|
|
||||||
|
|
||||||
write32(atu_base + offset + reg, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t dw_pcie_readl_iatu(void *atu_base, unsigned short index,
|
|
||||||
uint32_t reg)
|
|
||||||
{
|
|
||||||
uint32_t offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index);
|
|
||||||
|
|
||||||
return read32(atu_base + offset + reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dw_pcie_prog_outbound_atu(void *atu_base, unsigned short index,
|
|
||||||
unsigned int type, uint64_t cfg_addr,
|
|
||||||
uint64_t pcie_addr, uint32_t cfg_size)
|
|
||||||
{
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_LOWER_BASE,
|
|
||||||
lower_32_bits(cfg_addr));
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_UPPER_BASE,
|
|
||||||
upper_32_bits(cfg_addr));
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_LIMIT,
|
|
||||||
lower_32_bits(cfg_addr + cfg_size - 1));
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_LOWER_TARGET,
|
|
||||||
lower_32_bits(pcie_addr));
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_UPPER_TARGET,
|
|
||||||
upper_32_bits(pcie_addr));
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_REGION_CTRL1, type);
|
|
||||||
dw_pcie_writel_iatu(atu_base, index, PCIE_ATU_UNR_REGION_CTRL2,
|
|
||||||
PCIE_ATU_ENABLE);
|
|
||||||
/*
|
|
||||||
* Make sure ATU enable takes effect before any subsequent config
|
|
||||||
* and I/O accesses.
|
|
||||||
*/
|
|
||||||
if (retry(LINK_WAIT_MAX_IATU_RETRIES,
|
|
||||||
(dw_pcie_readl_iatu(atu_base, index, ATU_CTRL2) & ATU_ENABLE),
|
|
||||||
udelay(LINK_WAIT_IATU_US)))
|
|
||||||
return;
|
|
||||||
|
|
||||||
printf("outbound iATU is couldn't be enabled after 5ms\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get PCIe MMIO configuration space base address */
|
|
||||||
uintptr_t pci_map_bus(pcidev_t dev)
|
|
||||||
{
|
|
||||||
unsigned int atu_type, busdev;
|
|
||||||
uint32_t config_size;
|
|
||||||
void *cntrlr_base, *config_base, *atu_base;
|
|
||||||
unsigned int current_bus = PCI_BUS(dev);
|
|
||||||
unsigned int devfn = (PCI_SLOT(dev) << 3) | PCI_FUNC(dev);
|
|
||||||
static pcidev_t current_dev;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Extract PCIe controller base from coreboot and derive the ATU and
|
|
||||||
* endpoint config base addresses from it.
|
|
||||||
*/
|
|
||||||
cntrlr_base = (void *)lib_sysinfo.pcie_ctrl_base;
|
|
||||||
config_base = (void *)cntrlr_base + QCOM_EP_CFG_OFFSET;
|
|
||||||
config_size = (uint32_t)QCOM_EP_CFG_SIZE;
|
|
||||||
atu_base = (void *)cntrlr_base + QCOM_ATU_BASE_OFFSET;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Cache the dev. For same dev, ATU mapping is not needed for each
|
|
||||||
* request.
|
|
||||||
*/
|
|
||||||
if (current_dev == dev)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
current_dev = dev;
|
|
||||||
|
|
||||||
busdev = PCIE_ATU_BUS(current_bus) |
|
|
||||||
PCIE_ATU_DEV(PCI_SLOT(dev)) |
|
|
||||||
PCIE_ATU_FUNC(PCI_FUNC(dev));
|
|
||||||
|
|
||||||
atu_type = current_bus == 1 ? PCIE_ATU_TYPE_CFG0 : PCIE_ATU_TYPE_CFG1;
|
|
||||||
|
|
||||||
dw_pcie_prog_outbound_atu(atu_base, PCIE_ATU_REGION_INDEX0, atu_type,
|
|
||||||
(uint64_t)config_base, busdev, config_size);
|
|
||||||
out:
|
|
||||||
return (uintptr_t)config_base + (QCOM_EP_CFG_SIZE * devfn);
|
|
||||||
}
|
|
@@ -221,10 +221,10 @@ static void advance_endpoint(struct chipidea_pdata *p, int endpoint, int in_dir)
|
|||||||
|
|
||||||
job->tds = tds;
|
job->tds = tds;
|
||||||
job->td_count = td_count;
|
job->td_count = td_count;
|
||||||
|
|
||||||
dcache_clean_by_mva(tds, sizeof(struct td) * td_count);
|
dcache_clean_by_mva(tds, sizeof(struct td) * td_count);
|
||||||
|
dcache_clean_by_mva(job->data, job->length);
|
||||||
dcache_clean_by_mva(qh, sizeof(*qh));
|
dcache_clean_by_mva(qh, sizeof(*qh));
|
||||||
if (!dma_coherent(job->data))
|
|
||||||
dcache_clean_by_mva(job->data, job->length);
|
|
||||||
|
|
||||||
debug("priming EP %d-%d with %zx bytes starting at %x (%p)\n", endpoint,
|
debug("priming EP %d-%d with %zx bytes starting at %x (%p)\n", endpoint,
|
||||||
in_dir, job->length, tds[0].page0, job->data);
|
in_dir, job->length, tds[0].page0, job->data);
|
||||||
@@ -240,7 +240,7 @@ static void handle_endpoint(struct usbdev_ctrl *this, int endpoint, int in_dir)
|
|||||||
struct job *job = SIMPLEQ_FIRST(&p->job_queue[endpoint][in_dir]);
|
struct job *job = SIMPLEQ_FIRST(&p->job_queue[endpoint][in_dir]);
|
||||||
SIMPLEQ_REMOVE_HEAD(&p->job_queue[endpoint][in_dir], queue);
|
SIMPLEQ_REMOVE_HEAD(&p->job_queue[endpoint][in_dir], queue);
|
||||||
|
|
||||||
if (in_dir && !dma_coherent(job->data))
|
if (in_dir)
|
||||||
dcache_invalidate_by_mva(job->data, job->length);
|
dcache_invalidate_by_mva(job->data, job->length);
|
||||||
|
|
||||||
int length = job->length;
|
int length = job->length;
|
||||||
|
@@ -17,6 +17,6 @@
|
|||||||
#include <usb/usb.h>
|
#include <usb/usb.h>
|
||||||
|
|
||||||
hci_t *dwc2_init(void *bar);
|
hci_t *dwc2_init(void *bar);
|
||||||
void dwc2_rh_init(usbdev_t *dev);
|
void dwc2_rh_init (usbdev_t *dev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -119,17 +119,17 @@ static void dump_qh(ehci_qh_t *cur)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void ehci_start(hci_t *controller)
|
static void ehci_start (hci_t *controller)
|
||||||
{
|
{
|
||||||
EHCI_INST(controller)->operation->usbcmd |= HC_OP_RS;
|
EHCI_INST(controller)->operation->usbcmd |= HC_OP_RS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ehci_stop(hci_t *controller)
|
static void ehci_stop (hci_t *controller)
|
||||||
{
|
{
|
||||||
EHCI_INST(controller)->operation->usbcmd &= ~HC_OP_RS;
|
EHCI_INST(controller)->operation->usbcmd &= ~HC_OP_RS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ehci_reset(hci_t *controller)
|
static void ehci_reset (hci_t *controller)
|
||||||
{
|
{
|
||||||
short count = 0;
|
short count = 0;
|
||||||
ehci_stop(controller);
|
ehci_stop(controller);
|
||||||
@@ -148,7 +148,7 @@ static void ehci_reset(hci_t *controller)
|
|||||||
usb_debug("ehci_reset(): reset failed!\n");
|
usb_debug("ehci_reset(): reset failed!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ehci_reinit(hci_t *controller)
|
static void ehci_reinit (hci_t *controller)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ static int ehci_set_periodic_schedule(ehci_t *ehcic, int enable)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ehci_shutdown(hci_t *controller)
|
static void ehci_shutdown (hci_t *controller)
|
||||||
{
|
{
|
||||||
detach_controller(controller);
|
detach_controller(controller);
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ static void ehci_shutdown(hci_t *controller)
|
|||||||
free(controller);
|
free(controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum { EHCI_OUT = 0, EHCI_IN = 1, EHCI_SETUP = 2 };
|
enum { EHCI_OUT=0, EHCI_IN=1, EHCI_SETUP=2 };
|
||||||
|
|
||||||
/* returns handled bytes. assumes that the fields it writes are empty on entry */
|
/* returns handled bytes. assumes that the fields it writes are empty on entry */
|
||||||
static int fill_td(qtd_t *td, void* data, int datalen)
|
static int fill_td(qtd_t *td, void* data, int datalen)
|
||||||
@@ -341,7 +341,7 @@ static int ehci_process_async_schedule(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ehci_bulk(endpoint_t *ep, int size, u8 *src, int finalize)
|
static int ehci_bulk (endpoint_t *ep, int size, u8 *src, int finalize)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
u8 *end = src + size;
|
u8 *end = src + size;
|
||||||
@@ -430,7 +430,7 @@ oom:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Handle control transfers as 3 QHs, so the 2nd stage can be >0x4000 bytes */
|
/* FIXME: Handle control transfers as 3 QHs, so the 2nd stage can be >0x4000 bytes */
|
||||||
static int ehci_control(usbdev_t *dev, direction_t dir, int drlen, void *setup,
|
static int ehci_control (usbdev_t *dev, direction_t dir, int drlen, void *setup,
|
||||||
int dalen, u8 *src)
|
int dalen, u8 *src)
|
||||||
{
|
{
|
||||||
u8 *data = src;
|
u8 *data = src;
|
||||||
@@ -771,11 +771,11 @@ static u8 *ehci_poll_intr_queue(void *const queue)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hci_t *
|
hci_t *
|
||||||
ehci_init(unsigned long physical_bar)
|
ehci_init (unsigned long physical_bar)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
hci_t *controller = new_controller();
|
hci_t *controller = new_controller ();
|
||||||
controller->instance = xzalloc(sizeof(ehci_t));
|
controller->instance = xzalloc(sizeof (ehci_t));
|
||||||
controller->reg_base = (uintptr_t)physical_bar;
|
controller->reg_base = (uintptr_t)physical_bar;
|
||||||
controller->type = EHCI;
|
controller->type = EHCI;
|
||||||
controller->start = ehci_start;
|
controller->start = ehci_start;
|
||||||
@@ -791,7 +791,7 @@ ehci_init(unsigned long physical_bar)
|
|||||||
controller->create_intr_queue = ehci_create_intr_queue;
|
controller->create_intr_queue = ehci_create_intr_queue;
|
||||||
controller->destroy_intr_queue = ehci_destroy_intr_queue;
|
controller->destroy_intr_queue = ehci_destroy_intr_queue;
|
||||||
controller->poll_intr_queue = ehci_poll_intr_queue;
|
controller->poll_intr_queue = ehci_poll_intr_queue;
|
||||||
init_device_entry(controller, 0);
|
init_device_entry (controller, 0);
|
||||||
|
|
||||||
EHCI_INST(controller)->capabilities = phys_to_virt(physical_bar);
|
EHCI_INST(controller)->capabilities = phys_to_virt(physical_bar);
|
||||||
EHCI_INST(controller)->operation = (hc_op_t *)(phys_to_virt(physical_bar) + EHCI_INST(controller)->capabilities->caplength);
|
EHCI_INST(controller)->operation = (hc_op_t *)(phys_to_virt(physical_bar) + EHCI_INST(controller)->capabilities->caplength);
|
||||||
@@ -848,23 +848,23 @@ ehci_init(unsigned long physical_bar)
|
|||||||
|
|
||||||
controller->devices[0]->controller = controller;
|
controller->devices[0]->controller = controller;
|
||||||
controller->devices[0]->init = ehci_rh_init;
|
controller->devices[0]->init = ehci_rh_init;
|
||||||
controller->devices[0]->init(controller->devices[0]);
|
controller->devices[0]->init (controller->devices[0]);
|
||||||
|
|
||||||
return controller;
|
return controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG(LP_USB_PCI)
|
#if CONFIG(LP_USB_PCI)
|
||||||
hci_t *
|
hci_t *
|
||||||
ehci_pci_init(pcidev_t addr)
|
ehci_pci_init (pcidev_t addr)
|
||||||
{
|
{
|
||||||
hci_t *controller;
|
hci_t *controller;
|
||||||
u32 reg_base;
|
u32 reg_base;
|
||||||
|
|
||||||
u16 pci_command = pci_read_config16(addr, PCI_COMMAND);
|
u16 pci_command = pci_read_config16(addr, PCI_COMMAND);
|
||||||
pci_command = (pci_command | PCI_COMMAND_MEMORY) & ~PCI_COMMAND_IO;
|
pci_command = (pci_command | PCI_COMMAND_MEMORY) & ~PCI_COMMAND_IO ;
|
||||||
pci_write_config16(addr, PCI_COMMAND, pci_command);
|
pci_write_config16(addr, PCI_COMMAND, pci_command);
|
||||||
|
|
||||||
reg_base = pci_read_config32(addr, USBBASE);
|
reg_base = pci_read_config32 (addr, USBBASE);
|
||||||
|
|
||||||
/* default value for frame length adjust */
|
/* default value for frame length adjust */
|
||||||
pci_write_config8(addr, FLADJ, FLADJ_framelength(60000));
|
pci_write_config8(addr, FLADJ, FLADJ_framelength(60000));
|
||||||
|
@@ -32,9 +32,9 @@
|
|||||||
#include <pci.h>
|
#include <pci.h>
|
||||||
#include <usb/usb.h>
|
#include <usb/usb.h>
|
||||||
|
|
||||||
hci_t *ehci_pci_init(pcidev_t addr);
|
hci_t *ehci_pci_init (pcidev_t addr);
|
||||||
hci_t *ehci_init(unsigned long physical_bar);
|
hci_t *ehci_init (unsigned long physical_bar);
|
||||||
|
|
||||||
void ehci_rh_init(usbdev_t *dev);
|
void ehci_rh_init (usbdev_t *dev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -46,7 +46,7 @@ typedef struct {
|
|||||||
#define RH_INST(dev) ((rh_inst_t*)(dev)->data)
|
#define RH_INST(dev) ((rh_inst_t*)(dev)->data)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ehci_rh_destroy(usbdev_t *dev)
|
ehci_rh_destroy (usbdev_t *dev)
|
||||||
{
|
{
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
@@ -59,12 +59,12 @@ ehci_rh_destroy(usbdev_t *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(RH_INST(dev)->devices);
|
free (RH_INST(dev)->devices);
|
||||||
free(RH_INST(dev));
|
free (RH_INST(dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ehci_rh_hand_over_port(usbdev_t *dev, int port)
|
ehci_rh_hand_over_port (usbdev_t *dev, int port)
|
||||||
{
|
{
|
||||||
usb_debug("giving up port %x, it's USB1\n", port+1);
|
usb_debug("giving up port %x, it's USB1\n", port+1);
|
||||||
|
|
||||||
@@ -89,14 +89,14 @@ ehci_rh_hand_over_port(usbdev_t *dev, int port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ehci_rh_scanport(usbdev_t *dev, int port)
|
ehci_rh_scanport (usbdev_t *dev, int port)
|
||||||
{
|
{
|
||||||
usb_speed port_speed;
|
usb_speed port_speed;
|
||||||
|
|
||||||
if (RH_INST(dev)->devices[port] != -1) {
|
if (RH_INST(dev)->devices[port]!=-1) {
|
||||||
usb_debug("Unregister device at port %x\n", port+1);
|
usb_debug("Unregister device at port %x\n", port+1);
|
||||||
usb_detach_device(dev->controller, RH_INST(dev)->devices[port]);
|
usb_detach_device(dev->controller, RH_INST(dev)->devices[port]);
|
||||||
RH_INST(dev)->devices[port] = -1;
|
RH_INST(dev)->devices[port]=-1;
|
||||||
}
|
}
|
||||||
/* device connected, handle */
|
/* device connected, handle */
|
||||||
if (RH_INST(dev)->ports[port] & P_CURR_CONN_STATUS) {
|
if (RH_INST(dev)->ports[port] & P_CURR_CONN_STATUS) {
|
||||||
@@ -153,10 +153,10 @@ ehci_rh_scanport(usbdev_t *dev, int port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ehci_rh_report_port_changes(usbdev_t *dev)
|
ehci_rh_report_port_changes (usbdev_t *dev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < RH_INST(dev)->n_ports; i++) {
|
for (i=0; i<RH_INST(dev)->n_ports; i++) {
|
||||||
if (RH_INST(dev)->ports[i] & P_CONN_STATUS_CHANGE)
|
if (RH_INST(dev)->ports[i] & P_CONN_STATUS_CHANGE)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@@ -164,15 +164,15 @@ ehci_rh_report_port_changes(usbdev_t *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ehci_rh_poll(usbdev_t *dev)
|
ehci_rh_poll (usbdev_t *dev)
|
||||||
{
|
{
|
||||||
int port;
|
int port;
|
||||||
while ((port = ehci_rh_report_port_changes(dev)) != -1)
|
while ((port = ehci_rh_report_port_changes (dev)) != -1)
|
||||||
ehci_rh_scanport(dev, port);
|
ehci_rh_scanport (dev, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ehci_rh_init(usbdev_t *dev)
|
ehci_rh_init (usbdev_t *dev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
dev->destroy = ehci_rh_destroy;
|
dev->destroy = ehci_rh_destroy;
|
||||||
@@ -192,7 +192,7 @@ ehci_rh_init(usbdev_t *dev)
|
|||||||
& HCS_PORT_POWER_CONTROL) {
|
& HCS_PORT_POWER_CONTROL) {
|
||||||
usb_debug("host controller has port power control, "
|
usb_debug("host controller has port power control, "
|
||||||
"giving power to all ports.\n");
|
"giving power to all ports.\n");
|
||||||
for (i = 0; i < RH_INST(dev)->n_ports; i++)
|
for (i=0; i < RH_INST(dev)->n_ports; i++)
|
||||||
RH_INST(dev)->ports[i] |= P_PP;
|
RH_INST(dev)->ports[i] |= P_PP;
|
||||||
}
|
}
|
||||||
mdelay(20); // ehci spec 2.3.9
|
mdelay(20); // ehci spec 2.3.9
|
||||||
@@ -201,7 +201,7 @@ ehci_rh_init(usbdev_t *dev)
|
|||||||
dev->address = 0;
|
dev->address = 0;
|
||||||
dev->hub = -1;
|
dev->hub = -1;
|
||||||
dev->port = -1;
|
dev->port = -1;
|
||||||
for (i = 0; i < RH_INST(dev)->n_ports; i++) {
|
for (i=0; i < RH_INST(dev)->n_ports; i++) {
|
||||||
RH_INST(dev)->devices[i] = -1;
|
RH_INST(dev)->devices[i] = -1;
|
||||||
ehci_rh_scanport(dev, i);
|
ehci_rh_scanport(dev, i);
|
||||||
}
|
}
|
||||||
|