Revision 2ce92a11 hw/nvram/fw_cfg.c
b/hw/nvram/fw_cfg.c | ||
---|---|---|
35 | 35 |
#define TYPE_FW_CFG "fw_cfg" |
36 | 36 |
#define FW_CFG_NAME "fw_cfg" |
37 | 37 |
#define FW_CFG_PATH "/machine/" FW_CFG_NAME |
38 |
#define FW_CFG(obj) OBJECT_CHECK(FWCfgState, (obj), TYPE_FW_CFG) |
|
38 | 39 |
|
39 | 40 |
typedef struct FWCfgEntry { |
40 | 41 |
uint32_t len; |
... | ... | |
44 | 45 |
} FWCfgEntry; |
45 | 46 |
|
46 | 47 |
struct FWCfgState { |
47 |
SysBusDevice busdev; |
|
48 |
/*< private >*/ |
|
49 |
SysBusDevice parent_obj; |
|
50 |
/*< public >*/ |
|
51 |
|
|
48 | 52 |
MemoryRegion ctl_iomem, data_iomem, comb_iomem; |
49 | 53 |
uint32_t ctl_iobase, data_iobase; |
50 | 54 |
FWCfgEntry entries[2][FW_CFG_MAX_ENTRY]; |
... | ... | |
326 | 330 |
|
327 | 331 |
static void fw_cfg_reset(DeviceState *d) |
328 | 332 |
{ |
329 |
FWCfgState *s = DO_UPCAST(FWCfgState, busdev.qdev, d);
|
|
333 |
FWCfgState *s = FW_CFG(d);
|
|
330 | 334 |
|
331 | 335 |
fw_cfg_select(s, 0); |
332 | 336 |
} |
... | ... | |
489 | 493 |
SysBusDevice *d; |
490 | 494 |
FWCfgState *s; |
491 | 495 |
|
492 |
dev = qdev_create(NULL, "fw_cfg");
|
|
496 |
dev = qdev_create(NULL, TYPE_FW_CFG);
|
|
493 | 497 |
qdev_prop_set_uint32(dev, "ctl_iobase", ctl_port); |
494 | 498 |
qdev_prop_set_uint32(dev, "data_iobase", data_port); |
495 | 499 |
d = SYS_BUS_DEVICE(dev); |
496 | 500 |
|
497 |
s = DO_UPCAST(FWCfgState, busdev.qdev, dev);
|
|
501 |
s = FW_CFG(dev);
|
|
498 | 502 |
|
499 | 503 |
assert(!object_resolve_path(FW_CFG_PATH, NULL)); |
500 | 504 |
|
... | ... | |
524 | 528 |
|
525 | 529 |
static int fw_cfg_init1(SysBusDevice *dev) |
526 | 530 |
{ |
527 |
FWCfgState *s = FROM_SYSBUS(FWCfgState, dev);
|
|
531 |
FWCfgState *s = FW_CFG(dev);
|
|
528 | 532 |
|
529 | 533 |
memory_region_init_io(&s->ctl_iomem, OBJECT(s), &fw_cfg_ctl_mem_ops, s, |
530 | 534 |
"fwcfg.ctl", FW_CFG_SIZE); |
... | ... | |
557 | 561 |
|
558 | 562 |
FWCfgState *fw_cfg_find(void) |
559 | 563 |
{ |
560 |
return OBJECT_CHECK(FWCfgState, object_resolve_path(FW_CFG_PATH, NULL), |
|
561 |
TYPE_FW_CFG); |
|
564 |
return FW_CFG(object_resolve_path(FW_CFG_PATH, NULL)); |
|
562 | 565 |
} |
563 | 566 |
|
564 | 567 |
static void fw_cfg_class_init(ObjectClass *klass, void *data) |
Also available in: Unified diff