cmd: qfw: make fwcfg_present and fwcfg_dma_present public
authorMiao Yan <yanmiaobest@gmail.com>
Mon, 23 May 2016 02:37:13 +0000 (19:37 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 23 May 2016 07:18:00 +0000 (15:18 +0800)
This patch is part of the qfw refactor work. This patch makes
qemu_fwcfg_present() and qemu_fwcfg_dma_present() public functions.

Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
cmd/qemu_fw_cfg.c
include/qemu_fw_cfg.h

index 9f03ab60ab185555b4c7e22a02040a2f9bdd637f..aab6b1a452604211d8ddc0bd9192d919007ddcb8 100644 (file)
@@ -62,23 +62,14 @@ static void qemu_fwcfg_read_entry_dma(uint16_t entry,
                __asm__ __volatile__ ("pause");
 }
 
-static bool qemu_fwcfg_present(void)
+bool qemu_fwcfg_present(void)
 {
-       uint32_t qemu;
-
-       qemu_fwcfg_read_entry_pio(FW_CFG_SIGNATURE, 4, &qemu);
-       return be32_to_cpu(qemu) == QEMU_FW_CFG_SIGNATURE;
+       return fwcfg_present;
 }
 
-static bool qemu_fwcfg_dma_present(void)
+bool qemu_fwcfg_dma_present(void)
 {
-       uint8_t dma_enabled;
-
-       qemu_fwcfg_read_entry_pio(FW_CFG_ID, 1, &dma_enabled);
-       if (dma_enabled & FW_CFG_DMA_ENABLED)
-               return true;
-
-       return false;
+       return fwcfg_dma_present;
 }
 
 void qemu_fwcfg_read_entry(uint16_t entry, uint32_t length, void *address)
@@ -257,9 +248,21 @@ static int qemu_fwcfg_list_firmware(void)
 
 void qemu_fwcfg_init(void)
 {
-       fwcfg_present = qemu_fwcfg_present();
-       if (fwcfg_present)
-               fwcfg_dma_present = qemu_fwcfg_dma_present();
+       uint32_t qemu;
+       uint32_t dma_enabled;
+
+       fwcfg_present = false;
+       fwcfg_dma_present = false;
+
+       qemu_fwcfg_read_entry_pio(FW_CFG_SIGNATURE, 4, &qemu);
+       if (be32_to_cpu(qemu) == QEMU_FW_CFG_SIGNATURE)
+               fwcfg_present = true;
+
+       if (fwcfg_present) {
+               qemu_fwcfg_read_entry_pio(FW_CFG_ID, 1, &dma_enabled);
+               if (dma_enabled & FW_CFG_DMA_ENABLED)
+                       fwcfg_dma_present = true;
+       }
 }
 
 static int qemu_fwcfg_do_list(cmd_tbl_t *cmdtp, int flag,
@@ -323,7 +326,7 @@ static int do_qemu_fw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        int ret;
        cmd_tbl_t *fwcfg_cmd;
 
-       if (!fwcfg_present) {
+       if (!qemu_fwcfg_present()) {
                printf("QEMU fw_cfg interface not found\n");
                return CMD_RET_USAGE;
        }
index 986f4b2e5ac7f6d9a06a96f7ff83af1db0e5cdab..f718e09e315c0ae4cae606e4d4a0766634c4ad73 100644 (file)
@@ -167,4 +167,7 @@ struct fw_file *qemu_fwcfg_file_iter_init(struct fw_cfg_file_iter *iter);
 struct fw_file *qemu_fwcfg_file_iter_next(struct fw_cfg_file_iter *iter);
 bool qemu_fwcfg_file_iter_end(struct fw_cfg_file_iter *iter);
 
+bool qemu_fwcfg_present(void);
+bool qemu_fwcfg_dma_present(void);
+
 #endif