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