aboutsummaryrefslogtreecommitdiff
path: root/include/fw_cfg.h
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2016-09-06 15:05:08 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2016-09-06 15:57:15 +0200
commit14b459a6f9c9c02a0901a8a3de5e7c706305ffdd (patch)
tree0cdc0dc8eff9dcc73c8b1d40cbe635342b6738c3 /include/fw_cfg.h
parent96dbb2c0a24fdc6bbe4d8d834f0b879e01fdcae3 (diff)
downloadqboot-14b459a6f9c9c02a0901a8a3de5e7c706305ffdd.zip
qboot-14b459a6f9c9c02a0901a8a3de5e7c706305ffdd.tar.gz
qboot-14b459a6f9c9c02a0901a8a3de5e7c706305ffdd.tar.bz2
use fw_cfg DMA for fw_cfg_read_entry
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/fw_cfg.h')
-rw-r--r--include/fw_cfg.h31
1 files changed, 16 insertions, 15 deletions
diff --git a/include/fw_cfg.h b/include/fw_cfg.h
index 46fa869..52ed4e3 100644
--- a/include/fw_cfg.h
+++ b/include/fw_cfg.h
@@ -36,8 +36,18 @@
#define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
#define FW_CFG_E820_TABLE (FW_CFG_ARCH_LOCAL + 3)
-#define FW_CFG_CTL 0x510
-#define FW_CFG_DATA 0x511
+#define FW_CFG_VERSION 0x01
+#define FW_CFG_VERSION_DMA 0x02
+
+#define FW_CFG_DMA_CTL_ERROR 0x01
+#define FW_CFG_DMA_CTL_READ 0x02
+#define FW_CFG_DMA_CTL_SKIP 0x04
+#define FW_CFG_DMA_CTL_SELECT 0x08
+
+#define FW_CFG_CTL 0x510
+#define FW_CFG_DATA 0x511
+#define FW_CFG_DMA_ADDR_HIGH 0x514
+#define FW_CFG_DMA_ADDR_LOW 0x518
#include "ioport.h"
@@ -102,23 +112,14 @@ static inline void fw_cfg_skip(int len)
inb(FW_CFG_DATA);
}
-static inline void
-fw_cfg_read_entry(int e, void *buf, int len)
-{
- fw_cfg_select(e);
- fw_cfg_read(buf, len);
-}
-
void fw_cfg_setup(void);
int fw_cfg_file_id(char *name);
uint32_t fw_cfg_file_size(int id);
void fw_cfg_file_select(int id);
-static inline void
-fw_cfg_read_file(int id, void *buf, int len)
-{
- fw_cfg_file_select(id);
- fw_cfg_read(buf, len);
-}
+void fw_cfg_read(void *buf, int len);
+void fw_cfg_read_entry(int e, void *buf, int len);
+void fw_cfg_dma(int control, void *buf, int len);
+void fw_cfg_read_file(int e, void *buf, int len);
#endif