]> Git Repo - qemu.git/blame - hw/ssi.c
Fix lance segfaults
[qemu.git] / hw / ssi.c
CommitLineData
90d37239
PB
1/*
2 * QEMU Synchronous Serial Interface support
3 *
4 * Copyright (c) 2009 CodeSourcery.
5 * Written by Paul Brook
6 *
7 * This code is licenced under the GNU GPL v2.
8 */
9
10#include "ssi.h"
11
12struct SSIBus {
13 SSISlave *slave;
14};
15
16static void ssi_slave_init(DeviceState *dev, void *opaque)
17{
18 SSISlaveInfo *info = opaque;
19 SSISlave *s = SSI_SLAVE_FROM_QDEV(dev);
20 SSIBus *bus = qdev_get_bus(dev);
21
22 bus->slave = s;
23 s->info = info;
24 info->init(s);
25}
26
27void ssi_register_slave(const char *name, int size, SSISlaveInfo *info)
28{
29 assert(size >= sizeof(SSISlave));
30 qdev_register(name, size, ssi_slave_init, info);
31}
32
33DeviceState *ssi_create_slave(SSIBus *bus, const char *name)
34{
35 DeviceState *dev;
36 dev = qdev_create(bus, name);
37 qdev_init(dev);
38 return dev;
39}
40
41SSIBus *ssi_create_bus(void)
42{
43 return qemu_mallocz(sizeof(SSIBus));
44}
45
46uint32_t ssi_transfer(SSIBus *bus, uint32_t val)
47{
48 if (!bus->slave) {
49 return 0;
50 }
51 return bus->slave->info->transfer(bus->slave, val);
52}
This page took 0.029969 seconds and 4 git commands to generate.