xref: /qemu/tests/qtest/libqos/fw_cfg.h (revision 65461d124363d97b387337db9b970df60c31819d)
1234c69c5SAnthony Liguori /*
2234c69c5SAnthony Liguori  * libqos fw_cfg support
3234c69c5SAnthony Liguori  *
4234c69c5SAnthony Liguori  * Copyright IBM, Corp. 2012-2013
5234c69c5SAnthony Liguori  *
6234c69c5SAnthony Liguori  * Authors:
7234c69c5SAnthony Liguori  *  Anthony Liguori   <aliguori@us.ibm.com>
8234c69c5SAnthony Liguori  *
9234c69c5SAnthony Liguori  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10234c69c5SAnthony Liguori  * See the COPYING file in the top-level directory.
11234c69c5SAnthony Liguori  */
12234c69c5SAnthony Liguori 
13234c69c5SAnthony Liguori #ifndef LIBQOS_FW_CFG_H
14234c69c5SAnthony Liguori #define LIBQOS_FW_CFG_H
15234c69c5SAnthony Liguori 
1605e520f1SEric Blake #include "libqtest.h"
17234c69c5SAnthony Liguori 
18234c69c5SAnthony Liguori typedef struct QFWCFG QFWCFG;
19234c69c5SAnthony Liguori 
20234c69c5SAnthony Liguori struct QFWCFG
21234c69c5SAnthony Liguori {
227a100165SMarkus Armbruster     uint64_t base;
2305e520f1SEric Blake     QTestState *qts;
24234c69c5SAnthony Liguori     void (*select)(QFWCFG *fw_cfg, uint16_t key);
25234c69c5SAnthony Liguori     void (*read)(QFWCFG *fw_cfg, void *data, size_t len);
26234c69c5SAnthony Liguori };
27234c69c5SAnthony Liguori 
28234c69c5SAnthony Liguori void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key);
29234c69c5SAnthony Liguori void qfw_cfg_read_data(QFWCFG *fw_cfg, void *data, size_t len);
30234c69c5SAnthony Liguori void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len);
31234c69c5SAnthony Liguori uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key);
32234c69c5SAnthony Liguori uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key);
33234c69c5SAnthony Liguori uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key);
34234c69c5SAnthony Liguori 
3505e520f1SEric Blake QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base);
360729d833SPhilippe Mathieu-Daudé void mm_fw_cfg_uninit(QFWCFG *fw_cfg);
3705e520f1SEric Blake QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base);
380729d833SPhilippe Mathieu-Daudé void io_fw_cfg_uninit(QFWCFG *fw_cfg);
3926491a38SMarkus Armbruster 
4005e520f1SEric Blake static inline QFWCFG *pc_fw_cfg_init(QTestState *qts)
4126491a38SMarkus Armbruster {
4205e520f1SEric Blake     return io_fw_cfg_init(qts, 0x510);
4326491a38SMarkus Armbruster }
447a100165SMarkus Armbruster 
45*65461d12SPhilippe Mathieu-Daudé static inline void pc_fw_cfg_uninit(QFWCFG *fw_cfg)
46*65461d12SPhilippe Mathieu-Daudé {
47*65461d12SPhilippe Mathieu-Daudé     io_fw_cfg_uninit(fw_cfg);
48*65461d12SPhilippe Mathieu-Daudé }
49*65461d12SPhilippe Mathieu-Daudé 
50234c69c5SAnthony Liguori #endif
51