Revision 20be39de

b/hw/etraxfs_ser.c
190 190

  
191 191
}
192 192

  
193
static int etraxfs_ser_init(SysBusDevice *dev)
193
static void etraxfs_ser_reset(DeviceState *d)
194 194
{
195
    struct etrax_serial *s = FROM_SYSBUS(typeof (*s), dev);
196
    int ser_regs;
195
    struct etrax_serial *s = container_of(d, typeof(*s), busdev.qdev);
197 196

  
198 197
    /* transmitter begins ready and idle.  */
199 198
    s->regs[RS_STAT_DIN] |= (1 << STAT_TR_RDY);
200 199
    s->regs[RS_STAT_DIN] |= (1 << STAT_TR_IDLE);
201 200

  
201
    s->regs[RW_REC_CTRL] = 0x10000;
202

  
203
}
204

  
205
static int etraxfs_ser_init(SysBusDevice *dev)
206
{
207
    struct etrax_serial *s = FROM_SYSBUS(typeof (*s), dev);
208
    int ser_regs;
209

  
202 210
    sysbus_init_irq(dev, &s->irq);
203 211
    ser_regs = cpu_register_io_memory(ser_read, ser_write, s,
204 212
                                      DEVICE_NATIVE_ENDIAN);
......
211 219
    return 0;
212 220
}
213 221

  
222
static SysBusDeviceInfo etraxfs_ser_info = {
223
    .init = etraxfs_ser_init,
224
    .qdev.name  = "etraxfs,serial",
225
    .qdev.size  = sizeof(struct etrax_serial),
226
    .qdev.reset = etraxfs_ser_reset,
227
};
228

  
214 229
static void etraxfs_serial_register(void)
215 230
{
216
    sysbus_register_dev("etraxfs,serial", sizeof (struct etrax_serial),
217
                etraxfs_ser_init);
231
    sysbus_register_withprop(&etraxfs_ser_info);
218 232
}
219 233

  
220 234
device_init(etraxfs_serial_register)

Also available in: Unified diff