diff options
author | Alper Nebi Yasak <alpernebiyasak@gmail.com> | 2024-02-06 21:28:16 +0300 |
---|---|---|
committer | Felix Singer <service+coreboot-gerrit@felixsinger.de> | 2024-02-29 02:11:01 +0000 |
commit | f6ea67cba17e764ad8a1825e30132b855370bd68 (patch) | |
tree | 0997e7d2280fb0520b1ea0753f4c78dca9e960bb /src | |
parent | 7b7bddc015a2db82820f55c781106f1bbc24b0c3 (diff) |
mb/qemu/fw_cfg: Support using DMA to select fw_cfg file
Commit 8dc95ddbd4a935 ("emulation/qemu-i440fx: use fw_cfg_dma for
fw_cfg_read") adds DMA support to interface with the QEMU firmware
configuration device, and uses it to read from the "files" exposed by
the device. However, the file selection step still uses port-based IO.
Use DMA for fw_cfg file selection when possible, as a step towards
porting this driver to other architectures.
Change-Id: I46f9915e6df04d371c7084815f16034c7e9879d4
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80365
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/mainboard/emulation/qemu-i440fx/fw_cfg.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mainboard/emulation/qemu-i440fx/fw_cfg.c b/src/mainboard/emulation/qemu-i440fx/fw_cfg.c index a15773c9df..ad664a6ee0 100644 --- a/src/mainboard/emulation/qemu-i440fx/fw_cfg.c +++ b/src/mainboard/emulation/qemu-i440fx/fw_cfg.c @@ -44,7 +44,10 @@ static int fw_cfg_present(void) static void fw_cfg_select(uint16_t entry) { - outw(entry, FW_CFG_PORT_CTL); + if (fw_ver & FW_CFG_VERSION_DMA) + fw_cfg_dma(FW_CFG_DMA_CTL_SELECT | entry << 16, NULL, 0); + else + outw(entry, FW_CFG_PORT_CTL); } static void fw_cfg_read(void *dst, int dstlen) |