From f6ea67cba17e764ad8a1825e30132b855370bd68 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Tue, 6 Feb 2024 21:28:16 +0300 Subject: 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80365 Tested-by: build bot (Jenkins) Reviewed-by: Martin L Roth Reviewed-by: Matt DeVillier Reviewed-by: Nico Huber Reviewed-by: Felix Singer --- src/mainboard/emulation/qemu-i440fx/fw_cfg.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') 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) -- cgit v1.2.3