Lines Matching refs:fw_cfg
23 void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key) in qfw_cfg_select() argument
25 fw_cfg->select(fw_cfg, key); in qfw_cfg_select()
28 void qfw_cfg_read_data(QFWCFG *fw_cfg, void *data, size_t len) in qfw_cfg_read_data() argument
30 fw_cfg->read(fw_cfg, data, len); in qfw_cfg_read_data()
33 void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len) in qfw_cfg_get() argument
35 qfw_cfg_select(fw_cfg, key); in qfw_cfg_get()
36 qfw_cfg_read_data(fw_cfg, data, len); in qfw_cfg_get()
39 uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key) in qfw_cfg_get_u16() argument
42 qfw_cfg_get(fw_cfg, key, &value, sizeof(value)); in qfw_cfg_get_u16()
46 uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key) in qfw_cfg_get_u32() argument
49 qfw_cfg_get(fw_cfg, key, &value, sizeof(value)); in qfw_cfg_get_u32()
53 uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key) in qfw_cfg_get_u64() argument
56 qfw_cfg_get(fw_cfg, key, &value, sizeof(value)); in qfw_cfg_get_u64()
60 static void mm_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) in mm_fw_cfg_select() argument
62 qtest_writew(fw_cfg->qts, fw_cfg->base, key); in mm_fw_cfg_select()
65 static void qfw_cfg_dma_transfer(QFWCFG *fw_cfg, QOSState *qs, void *address, in qfw_cfg_dma_transfer() argument
77 qtest_bufwrite(fw_cfg->qts, gaddr, address, length); in qfw_cfg_dma_transfer()
85 qtest_bufwrite(fw_cfg->qts, guest_access_addr, &access, sizeof(access)); in qfw_cfg_dma_transfer()
89 qtest_outl(fw_cfg->qts, fw_cfg->base + 8, addr); in qfw_cfg_dma_transfer()
93 qtest_outl(fw_cfg->qts, fw_cfg->base + 4, addr); in qfw_cfg_dma_transfer()
98 qtest_bufread(fw_cfg->qts, gaddr, address, length); in qfw_cfg_dma_transfer()
105 static void qfw_cfg_write_entry(QFWCFG *fw_cfg, QOSState *qs, uint16_t key, in qfw_cfg_write_entry() argument
108 qfw_cfg_select(fw_cfg, key); in qfw_cfg_write_entry()
109 qfw_cfg_dma_transfer(fw_cfg, qs, buf, len, FW_CFG_DMA_CTL_WRITE); in qfw_cfg_write_entry()
112 static void qfw_cfg_read_entry(QFWCFG *fw_cfg, QOSState *qs, uint16_t key, in qfw_cfg_read_entry() argument
115 qfw_cfg_select(fw_cfg, key); in qfw_cfg_read_entry()
116 qfw_cfg_dma_transfer(fw_cfg, qs, buf, len, FW_CFG_DMA_CTL_READ); in qfw_cfg_read_entry()
119 static bool find_pdir_entry(QFWCFG *fw_cfg, const char *filename, in find_pdir_entry() argument
132 qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, &count, sizeof(count)); in find_pdir_entry()
136 qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, filesbuf, dsize); in find_pdir_entry()
162 size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, in qfw_cfg_get_file() argument
169 if (find_pdir_entry(fw_cfg, filename, &sel, &len)) { in qfw_cfg_get_file()
174 qfw_cfg_get(fw_cfg, sel, data, len); in qfw_cfg_get_file()
197 size_t qfw_cfg_read_file(QFWCFG *fw_cfg, QOSState *qs, const char *filename, in qfw_cfg_read_file() argument
209 id = qfw_cfg_get_u32(fw_cfg, FW_CFG_ID); in qfw_cfg_read_file()
212 if (find_pdir_entry(fw_cfg, filename, &sel, &len)) { in qfw_cfg_read_file()
216 qfw_cfg_read_entry(fw_cfg, qs, sel, data, len); in qfw_cfg_read_file()
239 size_t qfw_cfg_write_file(QFWCFG *fw_cfg, QOSState *qs, const char *filename, in qfw_cfg_write_file() argument
251 id = qfw_cfg_get_u32(fw_cfg, FW_CFG_ID); in qfw_cfg_write_file()
254 if (find_pdir_entry(fw_cfg, filename, &sel, &len)) { in qfw_cfg_write_file()
258 qfw_cfg_write_entry(fw_cfg, qs, sel, data, len); in qfw_cfg_write_file()
263 static void mm_fw_cfg_read(QFWCFG *fw_cfg, void *data, size_t len) in mm_fw_cfg_read() argument
269 ptr[i] = qtest_readb(fw_cfg->qts, fw_cfg->base + 2); in mm_fw_cfg_read()
275 QFWCFG *fw_cfg = g_malloc0(sizeof(*fw_cfg)); in mm_fw_cfg_init() local
277 fw_cfg->base = base; in mm_fw_cfg_init()
278 fw_cfg->qts = qts; in mm_fw_cfg_init()
279 fw_cfg->select = mm_fw_cfg_select; in mm_fw_cfg_init()
280 fw_cfg->read = mm_fw_cfg_read; in mm_fw_cfg_init()
282 return fw_cfg; in mm_fw_cfg_init()
285 void mm_fw_cfg_uninit(QFWCFG *fw_cfg) in mm_fw_cfg_uninit() argument
287 g_free(fw_cfg); in mm_fw_cfg_uninit()
290 static void io_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) in io_fw_cfg_select() argument
292 qtest_outw(fw_cfg->qts, fw_cfg->base, key); in io_fw_cfg_select()
295 static void io_fw_cfg_read(QFWCFG *fw_cfg, void *data, size_t len) in io_fw_cfg_read() argument
301 ptr[i] = qtest_inb(fw_cfg->qts, fw_cfg->base + 1); in io_fw_cfg_read()
307 QFWCFG *fw_cfg = g_malloc0(sizeof(*fw_cfg)); in io_fw_cfg_init() local
309 fw_cfg->base = base; in io_fw_cfg_init()
310 fw_cfg->qts = qts; in io_fw_cfg_init()
311 fw_cfg->select = io_fw_cfg_select; in io_fw_cfg_init()
312 fw_cfg->read = io_fw_cfg_read; in io_fw_cfg_init()
314 return fw_cfg; in io_fw_cfg_init()
317 void io_fw_cfg_uninit(QFWCFG *fw_cfg) in io_fw_cfg_uninit() argument
319 g_free(fw_cfg); in io_fw_cfg_uninit()