[OpenBIOS] [PATCH 1/3] fw_cfg: split fw_cfg_read() into fw_cfg_read() and fw_cfg_read_bytes()
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Sun Mar 19 12:46:52 CET 2017
This is in preparation for calling fw_cfg_read_bytes() separately when
reading data from the fw_cfg interface.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
drivers/fw_cfg.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/drivers/fw_cfg.c b/drivers/fw_cfg.c
index 4027570..7086873 100644
--- a/drivers/fw_cfg.c
+++ b/drivers/fw_cfg.c
@@ -9,26 +9,38 @@
static volatile uint16_t *fw_cfg_cmd;
static volatile uint8_t *fw_cfg_data;
-void
-fw_cfg_read(uint16_t cmd, char *buf, unsigned int nbytes)
+static void
+fw_cfg_read_bytes(char *buf, unsigned int nbytes)
{
unsigned int i;
- *fw_cfg_cmd = cmd;
for (i = 0; i < nbytes; i++)
buf[i] = *fw_cfg_data;
}
-#else
-// XXX depends on PCI bus location, should be removed
+
void
fw_cfg_read(uint16_t cmd, char *buf, unsigned int nbytes)
{
+ *fw_cfg_cmd = cmd;
+ fw_cfg_read_bytes(buf, nbytes);
+}
+#else
+// XXX depends on PCI bus location, should be removed
+static void
+fw_cfg_read_bytes(char *buf, unsigned int nbytes)
+{
unsigned int i;
- outw(cmd, CONFIG_FW_CFG_ADDR);
for (i = 0; i < nbytes; i++)
buf[i] = inb(CONFIG_FW_CFG_ADDR + 1);
}
+
+void
+fw_cfg_read(uint16_t cmd, char *buf, unsigned int nbytes)
+{
+ outw(cmd, CONFIG_FW_CFG_ADDR);
+ fw_cfg_read_bytes(buf, nbytes);
+}
#endif
uint64_t
--
1.7.10.4
More information about the OpenBIOS
mailing list