summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlper Nebi Yasak <alpernebiyasak@gmail.com>2024-02-06 21:28:16 +0300
committerFelix Singer <service+coreboot-gerrit@felixsinger.de>2024-02-29 02:11:01 +0000
commitf6ea67cba17e764ad8a1825e30132b855370bd68 (patch)
tree0997e7d2280fb0520b1ea0753f4c78dca9e960bb /src
parent7b7bddc015a2db82820f55c781106f1bbc24b0c3 (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.c5
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)