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