diff options
author | Ahmad Fatoum <ahmad@a3f.at> | 2021-04-16 08:24:35 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-05-03 14:06:30 +0200 |
commit | ffdb6a435e7ed5576f37d6cea14157d6ce51e16b (patch) | |
tree | d53a4d9175c919fca307f45190b9d17e960f9f3f /drivers/watchdog | |
parent | c3a53742f3ae16443ee80dfe3c525a863c577e40 (diff) | |
download | barebox-ffdb6a435e7ed5576f37d6cea14157d6ce51e16b.tar.gz barebox-ffdb6a435e7ed5576f37d6cea14157d6ce51e16b.tar.xz |
pci: add EFI PCI root bridge IO protocol driver
UEFI specifies two protocols for abstracting both the PCI host bus
controller and for PCI devices. The protocol for PCI devices provides
function pointers for accessing IO Port, Memory and PCI configuration
space, among others. The protocol for bus controllers provides the
ability to read the root bridge's PCI configuration space and to query
resources.
In barebox, we would want to reuse existing PCI drivers unmodified, so
we utilize the root bridge protocol, unlike most other EFI payloads.
We still utilize the PCI (device) IO protocol, but not for core
functionality: EFI has already enumerated the bus for us and allocated
the EFI handles. It thus makes sense to have the new pci device have the
EFI handle as parent and the controller as grand parent instead of
being sibling with the EFI handles. This is done with an early PCI fixup
that patches the device's parent pointer after consulting the PCI IO
GetLocation.
Driver is written from scratch and hasn't seen heavy usage yet, so it
should be used with care. It was written while consulting the UEFI
2.1D specification.
Signed-off-by: Ahmad Fatoum <ahmad@a3f.at>
Link: https://lore.barebox.org/20210416062436.332665-4-ahmad@a3f.at
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/watchdog')
0 files changed, 0 insertions, 0 deletions