Revision 074f2fff
b/hw/ads7846.c | ||
---|---|---|
155 | 155 |
} |
156 | 156 |
|
157 | 157 |
static SSISlaveInfo ads7846_info = { |
158 |
.qdev.name ="ads7846", |
|
159 |
.qdev.size = sizeof(ADS7846State), |
|
158 | 160 |
.init = ads7846_init, |
159 | 161 |
.transfer = ads7846_transfer |
160 | 162 |
}; |
161 | 163 |
|
162 | 164 |
static void ads7846_register_devices(void) |
163 | 165 |
{ |
164 |
ssi_register_slave("ads7846", sizeof(ADS7846State), &ads7846_info);
|
|
166 |
ssi_register_slave(&ads7846_info); |
|
165 | 167 |
} |
166 | 168 |
|
167 | 169 |
device_init(ads7846_register_devices) |
b/hw/i2c.c | ||
---|---|---|
152 | 152 |
info->init(s); |
153 | 153 |
} |
154 | 154 |
|
155 |
void i2c_register_slave(const char *name, int size, I2CSlaveInfo *info)
|
|
155 |
void i2c_register_slave(I2CSlaveInfo *info) |
|
156 | 156 |
{ |
157 |
assert(size >= sizeof(i2c_slave)); |
|
157 |
assert(info->qdev.size >= sizeof(i2c_slave));
|
|
158 | 158 |
info->qdev.init = i2c_slave_qdev_init; |
159 | 159 |
info->qdev.bus_type = BUS_TYPE_I2C; |
160 |
qdev_register(name, size, &info->qdev);
|
|
160 |
qdev_register(&info->qdev); |
|
161 | 161 |
} |
162 | 162 |
|
163 | 163 |
DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, int addr) |
b/hw/i2c.h | ||
---|---|---|
57 | 57 |
#define I2C_SLAVE_FROM_QDEV(dev) DO_UPCAST(i2c_slave, qdev, dev) |
58 | 58 |
#define FROM_I2C_SLAVE(type, dev) DO_UPCAST(type, i2c, dev) |
59 | 59 |
|
60 |
void i2c_register_slave(const char *name, int size, I2CSlaveInfo *type);
|
|
60 |
void i2c_register_slave(I2CSlaveInfo *type); |
|
61 | 61 |
|
62 | 62 |
DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, int addr); |
63 | 63 |
|
b/hw/lm832x.c | ||
---|---|---|
526 | 526 |
} |
527 | 527 |
|
528 | 528 |
static I2CSlaveInfo lm8323_info = { |
529 |
.qdev.name = "lm8323", |
|
530 |
.qdev.size = sizeof(LM823KbdState), |
|
529 | 531 |
.init = lm8323_init, |
530 | 532 |
.event = lm_i2c_event, |
531 | 533 |
.recv = lm_i2c_rx, |
... | ... | |
534 | 536 |
|
535 | 537 |
static void lm832x_register_devices(void) |
536 | 538 |
{ |
537 |
i2c_register_slave("lm8323", sizeof(LM823KbdState), &lm8323_info);
|
|
539 |
i2c_register_slave(&lm8323_info); |
|
538 | 540 |
} |
539 | 541 |
|
540 | 542 |
device_init(lm832x_register_devices) |
b/hw/max111x.c | ||
---|---|---|
164 | 164 |
} |
165 | 165 |
|
166 | 166 |
static SSISlaveInfo max1110_info = { |
167 |
.qdev.name = "max1110", |
|
168 |
.qdev.size = sizeof(MAX111xState), |
|
167 | 169 |
.init = max1110_init, |
168 | 170 |
.transfer = max111x_transfer |
169 | 171 |
}; |
170 | 172 |
|
171 | 173 |
static SSISlaveInfo max1111_info = { |
174 |
.qdev.name = "max1111", |
|
175 |
.qdev.size = sizeof(MAX111xState), |
|
172 | 176 |
.init = max1111_init, |
173 | 177 |
.transfer = max111x_transfer |
174 | 178 |
}; |
175 | 179 |
|
176 | 180 |
static void max111x_register_devices(void) |
177 | 181 |
{ |
178 |
ssi_register_slave("max1110", sizeof(MAX111xState), &max1110_info);
|
|
179 |
ssi_register_slave("max1111", sizeof(MAX111xState), &max1111_info);
|
|
182 |
ssi_register_slave(&max1110_info); |
|
183 |
ssi_register_slave(&max1111_info); |
|
180 | 184 |
} |
181 | 185 |
|
182 | 186 |
device_init(max111x_register_devices) |
b/hw/max7310.c | ||
---|---|---|
218 | 218 |
} |
219 | 219 |
|
220 | 220 |
static I2CSlaveInfo max7310_info = { |
221 |
.qdev.name = "max7310", |
|
222 |
.qdev.size = sizeof(MAX7310State), |
|
221 | 223 |
.init = max7310_init, |
222 | 224 |
.event = max7310_event, |
223 | 225 |
.recv = max7310_rx, |
... | ... | |
226 | 228 |
|
227 | 229 |
static void max7310_register_devices(void) |
228 | 230 |
{ |
229 |
i2c_register_slave("max7310", sizeof(MAX7310State), &max7310_info);
|
|
231 |
i2c_register_slave(&max7310_info); |
|
230 | 232 |
} |
231 | 233 |
|
232 | 234 |
device_init(max7310_register_devices) |
b/hw/pci.c | ||
---|---|---|
924 | 924 |
PCIDeviceInfo *info; |
925 | 925 |
|
926 | 926 |
info = qemu_mallocz(sizeof(*info)); |
927 |
info->qdev.name = qemu_strdup(name); |
|
928 |
info->qdev.size = size; |
|
927 | 929 |
info->init = init; |
928 | 930 |
info->qdev.init = pci_qdev_init; |
929 | 931 |
info->qdev.bus_type = BUS_TYPE_PCI; |
930 | 932 |
|
931 |
qdev_register(name, size, &info->qdev);
|
|
933 |
qdev_register(&info->qdev); |
|
932 | 934 |
} |
933 | 935 |
|
934 | 936 |
PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name) |
b/hw/pxa2xx.c | ||
---|---|---|
1485 | 1485 |
} |
1486 | 1486 |
|
1487 | 1487 |
static I2CSlaveInfo pxa2xx_i2c_slave_info = { |
1488 |
.qdev.name = "pxa2xx-i2c-slave", |
|
1489 |
.qdev.size = sizeof(PXA2xxI2CSlaveState), |
|
1488 | 1490 |
.init = pxa2xx_i2c_slave_init, |
1489 | 1491 |
.event = pxa2xx_i2c_event, |
1490 | 1492 |
.recv = pxa2xx_i2c_rx, |
... | ... | |
2258 | 2260 |
|
2259 | 2261 |
static void pxa2xx_register_devices(void) |
2260 | 2262 |
{ |
2261 |
i2c_register_slave("pxa2xx-i2c-slave", sizeof(PXA2xxI2CSlaveState), |
|
2262 |
&pxa2xx_i2c_slave_info); |
|
2263 |
i2c_register_slave(&pxa2xx_i2c_slave_info); |
|
2263 | 2264 |
sysbus_register_dev("pxa2xx-ssp", sizeof(PXA2xxSSPState), pxa2xx_ssp_init); |
2264 | 2265 |
} |
2265 | 2266 |
|
b/hw/qdev.c | ||
---|---|---|
42 | 42 |
}; |
43 | 43 |
|
44 | 44 |
struct DeviceType { |
45 |
const char *name; |
|
46 | 45 |
DeviceInfo *info; |
47 |
int size; |
|
48 | 46 |
DeviceType *next; |
49 | 47 |
}; |
50 | 48 |
|
... | ... | |
54 | 52 |
static DeviceType *device_type_list; |
55 | 53 |
|
56 | 54 |
/* Register a new device type. */ |
57 |
void qdev_register(const char *name, int size, DeviceInfo *info)
|
|
55 |
void qdev_register(DeviceInfo *info) |
|
58 | 56 |
{ |
59 | 57 |
DeviceType *t; |
60 | 58 |
|
61 |
assert(size >= sizeof(DeviceState)); |
|
59 |
assert(info->size >= sizeof(DeviceState));
|
|
62 | 60 |
|
63 | 61 |
t = qemu_mallocz(sizeof(DeviceType)); |
64 | 62 |
t->next = device_type_list; |
65 | 63 |
device_type_list = t; |
66 |
t->name = qemu_strdup(name); |
|
67 |
t->size = size; |
|
68 | 64 |
t->info = info; |
69 | 65 |
} |
70 | 66 |
|
... | ... | |
77 | 73 |
DeviceState *dev; |
78 | 74 |
|
79 | 75 |
for (t = device_type_list; t; t = t->next) { |
80 |
if (strcmp(t->name, name) == 0) { |
|
76 |
if (strcmp(t->info->name, name) == 0) {
|
|
81 | 77 |
break; |
82 | 78 |
} |
83 | 79 |
} |
... | ... | |
85 | 81 |
hw_error("Unknown device '%s'\n", name); |
86 | 82 |
} |
87 | 83 |
|
88 |
dev = qemu_mallocz(t->size); |
|
84 |
dev = qemu_mallocz(t->info->size);
|
|
89 | 85 |
dev->type = t; |
90 | 86 |
|
91 | 87 |
if (!bus) { |
... | ... | |
173 | 169 |
static int next_serial; |
174 | 170 |
static int next_virtconsole; |
175 | 171 |
/* FIXME: This is a nasty hack that needs to go away. */ |
176 |
if (strncmp(dev->type->name, "virtio", 6) == 0) { |
|
172 |
if (strncmp(dev->type->info->name, "virtio", 6) == 0) {
|
|
177 | 173 |
return virtcon_hds[next_virtconsole++]; |
178 | 174 |
} else { |
179 | 175 |
return serial_hds[next_serial++]; |
... | ... | |
355 | 351 |
{ |
356 | 352 |
DeviceProperty *prop; |
357 | 353 |
BusState *child; |
358 |
qdev_printf("dev: %s\n", dev->type->name); |
|
354 |
qdev_printf("dev: %s\n", dev->type->info->name);
|
|
359 | 355 |
indent += 2; |
360 | 356 |
if (dev->num_gpio_in) { |
361 | 357 |
qdev_printf("gpio-in %d\n", dev->num_gpio_in); |
... | ... | |
374 | 370 |
break; |
375 | 371 |
case PROP_TYPE_DEV: |
376 | 372 |
qdev_printf("prop-dev %s %s\n", prop->name, |
377 |
((DeviceState *)prop->value.ptr)->type->name); |
|
373 |
((DeviceState *)prop->value.ptr)->type->info->name);
|
|
378 | 374 |
break; |
379 | 375 |
default: |
380 | 376 |
qdev_printf("prop-unknown%d %s\n", prop->type, prop->name); |
b/hw/qdev.h | ||
---|---|---|
78 | 78 |
int unit); |
79 | 79 |
|
80 | 80 |
struct DeviceInfo { |
81 |
const char *name; |
|
82 |
size_t size; |
|
83 |
DevicePropList *props; |
|
84 |
|
|
85 |
/* Private to qdev / bus. */ |
|
81 | 86 |
qdev_initfn init; |
82 | 87 |
BusType bus_type; |
83 |
DevicePropList *props; |
|
84 | 88 |
}; |
85 | 89 |
|
86 |
void qdev_register(const char *name, int size, DeviceInfo *info);
|
|
90 |
void qdev_register(DeviceInfo *info); |
|
87 | 91 |
|
88 | 92 |
/* Register device properties. */ |
89 | 93 |
/* GPIO inputs also double as IRQ sinks. */ |
b/hw/smbus.c | ||
---|---|---|
206 | 206 |
t->init(dev); |
207 | 207 |
} |
208 | 208 |
|
209 |
void smbus_register_device(const char *name, int size, SMBusDeviceInfo *info)
|
|
209 |
void smbus_register_device(SMBusDeviceInfo *info) |
|
210 | 210 |
{ |
211 |
assert(size >= sizeof(SMBusDevice)); |
|
211 |
assert(info->i2c.qdev.size >= sizeof(SMBusDevice));
|
|
212 | 212 |
info->i2c.init = smbus_device_init; |
213 | 213 |
info->i2c.event = smbus_i2c_event; |
214 | 214 |
info->i2c.recv = smbus_i2c_recv; |
215 | 215 |
info->i2c.send = smbus_i2c_send; |
216 |
i2c_register_slave(name, size, &info->i2c);
|
|
216 |
i2c_register_slave(&info->i2c); |
|
217 | 217 |
} |
218 | 218 |
|
219 | 219 |
/* Master device commands. */ |
b/hw/smbus.h | ||
---|---|---|
53 | 53 |
uint8_t (*read_data)(SMBusDevice *dev, uint8_t cmd, int n); |
54 | 54 |
} SMBusDeviceInfo; |
55 | 55 |
|
56 |
void smbus_register_device(const char *name, int size, SMBusDeviceInfo *info);
|
|
56 |
void smbus_register_device(SMBusDeviceInfo *info); |
|
57 | 57 |
|
58 | 58 |
/* Master device commands. */ |
59 | 59 |
void smbus_quick_command(i2c_bus *bus, int addr, int read); |
b/hw/smbus_eeprom.c | ||
---|---|---|
105 | 105 |
} |
106 | 106 |
|
107 | 107 |
static SMBusDeviceInfo smbus_eeprom_info = { |
108 |
.i2c.qdev.name = "smbus-eeprom", |
|
109 |
.i2c.qdev.size = sizeof(SMBusEEPROMDevice), |
|
108 | 110 |
.init = smbus_eeprom_init, |
109 | 111 |
.quick_cmd = eeprom_quick_cmd, |
110 | 112 |
.send_byte = eeprom_send_byte, |
... | ... | |
115 | 117 |
|
116 | 118 |
static void smbus_eeprom_register_devices(void) |
117 | 119 |
{ |
118 |
smbus_register_device("smbus-eeprom", sizeof(SMBusEEPROMDevice), |
|
119 |
&smbus_eeprom_info); |
|
120 |
smbus_register_device(&smbus_eeprom_info); |
|
120 | 121 |
} |
121 | 122 |
|
122 | 123 |
device_init(smbus_eeprom_register_devices) |
b/hw/spitz.c | ||
---|---|---|
1076 | 1076 |
machine_init(spitz_machine_init); |
1077 | 1077 |
|
1078 | 1078 |
static SSISlaveInfo corgi_ssp_info = { |
1079 |
.qdev.name = "corgi-ssp", |
|
1080 |
.qdev.size = sizeof(CorgiSSPState), |
|
1079 | 1081 |
.init = corgi_ssp_init, |
1080 | 1082 |
.transfer = corgi_ssp_transfer |
1081 | 1083 |
}; |
1082 | 1084 |
|
1083 | 1085 |
static SSISlaveInfo spitz_lcdtg_info = { |
1086 |
.qdev.name = "spitz-lcdtg", |
|
1087 |
.qdev.size = sizeof(SpitzLCDTG), |
|
1084 | 1088 |
.init = spitz_lcdtg_init, |
1085 | 1089 |
.transfer = spitz_lcdtg_transfer |
1086 | 1090 |
}; |
1087 | 1091 |
|
1088 | 1092 |
static void spitz_register_devices(void) |
1089 | 1093 |
{ |
1090 |
ssi_register_slave("corgi-ssp", sizeof(CorgiSSPState), &corgi_ssp_info);
|
|
1091 |
ssi_register_slave("spitz-lcdtg", sizeof(SpitzLCDTG), &spitz_lcdtg_info);
|
|
1094 |
ssi_register_slave(&corgi_ssp_info); |
|
1095 |
ssi_register_slave(&spitz_lcdtg_info); |
|
1092 | 1096 |
} |
1093 | 1097 |
|
1094 | 1098 |
device_init(spitz_register_devices) |
b/hw/ssd0303.c | ||
---|---|---|
316 | 316 |
} |
317 | 317 |
|
318 | 318 |
static I2CSlaveInfo ssd0303_info = { |
319 |
.qdev.name = "ssd0303", |
|
320 |
.qdev.size = sizeof(ssd0303_state), |
|
319 | 321 |
.init = ssd0303_init, |
320 | 322 |
.event = ssd0303_event, |
321 | 323 |
.recv = ssd0303_recv, |
... | ... | |
324 | 326 |
|
325 | 327 |
static void ssd0303_register_devices(void) |
326 | 328 |
{ |
327 |
i2c_register_slave("ssd0303", sizeof(ssd0303_state), &ssd0303_info);
|
|
329 |
i2c_register_slave(&ssd0303_info); |
|
328 | 330 |
} |
329 | 331 |
|
330 | 332 |
device_init(ssd0303_register_devices) |
b/hw/ssd0323.c | ||
---|---|---|
339 | 339 |
} |
340 | 340 |
|
341 | 341 |
static SSISlaveInfo ssd0323_info = { |
342 |
.qdev.name = "ssd0323", |
|
343 |
.qdev.size = sizeof(ssd0323_state), |
|
342 | 344 |
.init = ssd0323_init, |
343 | 345 |
.transfer = ssd0323_transfer |
344 | 346 |
}; |
345 | 347 |
|
346 | 348 |
static void ssd03232_register_devices(void) |
347 | 349 |
{ |
348 |
ssi_register_slave("ssd0323", sizeof(ssd0323_state), &ssd0323_info);
|
|
350 |
ssi_register_slave(&ssd0323_info); |
|
349 | 351 |
} |
350 | 352 |
|
351 | 353 |
device_init(ssd03232_register_devices) |
b/hw/ssi-sd.c | ||
---|---|---|
241 | 241 |
} |
242 | 242 |
|
243 | 243 |
static SSISlaveInfo ssi_sd_info = { |
244 |
.qdev.name = "ssi-sd", |
|
245 |
.qdev.size = sizeof(ssi_sd_state), |
|
244 | 246 |
.init = ssi_sd_init, |
245 | 247 |
.transfer = ssi_sd_transfer |
246 | 248 |
}; |
247 | 249 |
|
248 | 250 |
static void ssi_sd_register_devices(void) |
249 | 251 |
{ |
250 |
ssi_register_slave("ssi-sd", sizeof(ssi_sd_state), &ssi_sd_info);
|
|
252 |
ssi_register_slave(&ssi_sd_info); |
|
251 | 253 |
} |
252 | 254 |
|
253 | 255 |
device_init(ssi_sd_register_devices) |
b/hw/ssi.c | ||
---|---|---|
29 | 29 |
info->init(s); |
30 | 30 |
} |
31 | 31 |
|
32 |
void ssi_register_slave(const char *name, int size, SSISlaveInfo *info)
|
|
32 |
void ssi_register_slave(SSISlaveInfo *info) |
|
33 | 33 |
{ |
34 |
assert(size >= sizeof(SSISlave)); |
|
34 |
assert(info->qdev.size >= sizeof(SSISlave));
|
|
35 | 35 |
info->qdev.init = ssi_slave_init; |
36 | 36 |
info->qdev.bus_type = BUS_TYPE_SSI; |
37 |
qdev_register(name, size, &info->qdev);
|
|
37 |
qdev_register(&info->qdev); |
|
38 | 38 |
} |
39 | 39 |
|
40 | 40 |
DeviceState *ssi_create_slave(SSIBus *bus, const char *name) |
b/hw/ssi.h | ||
---|---|---|
30 | 30 |
#define SSI_SLAVE_FROM_QDEV(dev) DO_UPCAST(SSISlave, qdev, dev) |
31 | 31 |
#define FROM_SSI_SLAVE(type, dev) DO_UPCAST(type, ssidev, dev) |
32 | 32 |
|
33 |
void ssi_register_slave(const char *name, int size, SSISlaveInfo *info);
|
|
33 |
void ssi_register_slave(SSISlaveInfo *info); |
|
34 | 34 |
|
35 | 35 |
DeviceState *ssi_create_slave(SSIBus *bus, const char *name); |
36 | 36 |
|
b/hw/stellaris.c | ||
---|---|---|
1444 | 1444 |
machine_init(stellaris_machine_init); |
1445 | 1445 |
|
1446 | 1446 |
static SSISlaveInfo stellaris_ssi_bus_info = { |
1447 |
.qdev.name = "evb6965-ssi", |
|
1448 |
.qdev.size = sizeof(stellaris_ssi_bus_state), |
|
1447 | 1449 |
.init = stellaris_ssi_bus_init, |
1448 | 1450 |
.transfer = stellaris_ssi_bus_transfer |
1449 | 1451 |
}; |
... | ... | |
1456 | 1458 |
stellaris_gptm_init); |
1457 | 1459 |
sysbus_register_dev("stellaris-adc", sizeof(stellaris_adc_state), |
1458 | 1460 |
stellaris_adc_init); |
1459 |
ssi_register_slave("evb6965-ssi", sizeof(stellaris_ssi_bus_state), |
|
1460 |
&stellaris_ssi_bus_info); |
|
1461 |
ssi_register_slave(&stellaris_ssi_bus_info); |
|
1461 | 1462 |
} |
1462 | 1463 |
|
1463 | 1464 |
device_init(stellaris_register_devices) |
b/hw/syborg_timer.c | ||
---|---|---|
228 | 228 |
|
229 | 229 |
static SysBusDeviceInfo syborg_timer_info = { |
230 | 230 |
.init = syborg_timer_init, |
231 |
.qdev = {
|
|
232 |
.props = (DevicePropList[]) {
|
|
233 |
{.name = "frequency", .type = PROP_TYPE_INT},
|
|
234 |
{.name = NULL}
|
|
235 |
} |
|
231 |
.qdev.name = "syborg,timer",
|
|
232 |
.qdev.size = sizeof(SyborgTimerState),
|
|
233 |
.qdev.props = (DevicePropList[]) {
|
|
234 |
{.name = "frequency", .type = PROP_TYPE_INT},
|
|
235 |
{.name = NULL}
|
|
236 | 236 |
} |
237 | 237 |
}; |
238 | 238 |
|
239 | 239 |
static void syborg_timer_register_devices(void) |
240 | 240 |
{ |
241 |
sysbus_register_withprop("syborg,timer", sizeof(SyborgTimerState), |
|
242 |
&syborg_timer_info); |
|
241 |
sysbus_register_withprop(&syborg_timer_info); |
|
243 | 242 |
} |
244 | 243 |
|
245 | 244 |
device_init(syborg_timer_register_devices) |
b/hw/sysbus.c | ||
---|---|---|
105 | 105 |
info->init(sysbus_from_qdev(dev)); |
106 | 106 |
} |
107 | 107 |
|
108 |
void sysbus_register_withprop(const char *name, size_t size, |
|
109 |
SysBusDeviceInfo *info) |
|
108 |
void sysbus_register_withprop(SysBusDeviceInfo *info) |
|
110 | 109 |
{ |
111 | 110 |
info->qdev.init = sysbus_device_init; |
112 | 111 |
info->qdev.bus_type = BUS_TYPE_SYSTEM; |
113 | 112 |
|
114 |
assert(size >= sizeof(SysBusDevice)); |
|
115 |
qdev_register(name, size, &info->qdev);
|
|
113 |
assert(info->qdev.size >= sizeof(SysBusDevice));
|
|
114 |
qdev_register(&info->qdev); |
|
116 | 115 |
} |
117 | 116 |
|
118 | 117 |
void sysbus_register_dev(const char *name, size_t size, sysbus_initfn init) |
... | ... | |
120 | 119 |
SysBusDeviceInfo *info; |
121 | 120 |
|
122 | 121 |
info = qemu_mallocz(sizeof(*info)); |
122 |
info->qdev.name = qemu_strdup(name); |
|
123 |
info->qdev.size = size; |
|
123 | 124 |
info->init = init; |
124 |
sysbus_register_withprop(name, size, info);
|
|
125 |
sysbus_register_withprop(info); |
|
125 | 126 |
} |
126 | 127 |
|
127 | 128 |
DeviceState *sysbus_create_varargs(const char *name, |
b/hw/sysbus.h | ||
---|---|---|
37 | 37 |
} SysBusDeviceInfo; |
38 | 38 |
|
39 | 39 |
void sysbus_register_dev(const char *name, size_t size, sysbus_initfn init); |
40 |
void sysbus_register_withprop(const char *name, size_t size, |
|
41 |
SysBusDeviceInfo *info); |
|
40 |
void sysbus_register_withprop(SysBusDeviceInfo *info); |
|
42 | 41 |
void *sysbus_new(void); |
43 | 42 |
void sysbus_init_mmio(SysBusDevice *dev, target_phys_addr_t size, int iofunc); |
44 | 43 |
void sysbus_init_mmio_cb(SysBusDevice *dev, target_phys_addr_t size, |
b/hw/tmp105.c | ||
---|---|---|
239 | 239 |
} |
240 | 240 |
|
241 | 241 |
static I2CSlaveInfo tmp105_info = { |
242 |
.qdev.name = "tmp105", |
|
243 |
.qdev.size = sizeof(TMP105State), |
|
242 | 244 |
.init = tmp105_init, |
243 | 245 |
.event = tmp105_event, |
244 | 246 |
.recv = tmp105_rx, |
... | ... | |
247 | 249 |
|
248 | 250 |
static void tmp105_register_devices(void) |
249 | 251 |
{ |
250 |
i2c_register_slave("tmp105", sizeof(TMP105State), &tmp105_info);
|
|
252 |
i2c_register_slave(&tmp105_info); |
|
251 | 253 |
} |
252 | 254 |
|
253 | 255 |
device_init(tmp105_register_devices) |
b/hw/tosa.c | ||
---|---|---|
252 | 252 |
machine_init(tosapda_machine_init); |
253 | 253 |
|
254 | 254 |
static I2CSlaveInfo tosa_dac_info = { |
255 |
.qdev.name = "tosa_dac", |
|
256 |
.qdev.size = sizeof(TosaDACState), |
|
255 | 257 |
.init = tosa_dac_init, |
256 | 258 |
.event = tosa_dac_event, |
257 | 259 |
.recv = tosa_dac_recv, |
... | ... | |
259 | 261 |
}; |
260 | 262 |
|
261 | 263 |
static SSISlaveInfo tosa_ssp_info = { |
264 |
.qdev.name = "tosa-ssp", |
|
265 |
.qdev.size = sizeof(SSISlave), |
|
262 | 266 |
.init = tosa_ssp_init, |
263 | 267 |
.transfer = tosa_ssp_tansfer |
264 | 268 |
}; |
265 | 269 |
|
266 | 270 |
static void tosa_register_devices(void) |
267 | 271 |
{ |
268 |
i2c_register_slave("tosa_dac", sizeof(TosaDACState), &tosa_dac_info);
|
|
269 |
ssi_register_slave("tosa-ssp", sizeof(SSISlave), &tosa_ssp_info);
|
|
272 |
i2c_register_slave(&tosa_dac_info); |
|
273 |
ssi_register_slave(&tosa_ssp_info); |
|
270 | 274 |
} |
271 | 275 |
|
272 | 276 |
device_init(tosa_register_devices) |
b/hw/twl92230.c | ||
---|---|---|
892 | 892 |
} |
893 | 893 |
|
894 | 894 |
static I2CSlaveInfo twl92230_info = { |
895 |
.qdev.name ="twl92230", |
|
896 |
.qdev.size = sizeof(MenelausState), |
|
895 | 897 |
.init = twl92230_init, |
896 | 898 |
.event = menelaus_event, |
897 | 899 |
.recv = menelaus_rx, |
... | ... | |
900 | 902 |
|
901 | 903 |
static void twl92230_register_devices(void) |
902 | 904 |
{ |
903 |
i2c_register_slave("twl92230", sizeof(MenelausState), &twl92230_info);
|
|
905 |
i2c_register_slave(&twl92230_info); |
|
904 | 906 |
} |
905 | 907 |
|
906 | 908 |
device_init(twl92230_register_devices) |
b/hw/wm8750.c | ||
---|---|---|
726 | 726 |
} |
727 | 727 |
|
728 | 728 |
static I2CSlaveInfo wm8750_info = { |
729 |
.qdev.name = "wm8750", |
|
730 |
.qdev.size = sizeof(WM8750State), |
|
729 | 731 |
.init = wm8750_init, |
730 | 732 |
.event = wm8750_event, |
731 | 733 |
.recv = wm8750_rx, |
... | ... | |
734 | 736 |
|
735 | 737 |
static void wm8750_register_devices(void) |
736 | 738 |
{ |
737 |
i2c_register_slave("wm8750", sizeof(WM8750State), &wm8750_info);
|
|
739 |
i2c_register_slave(&wm8750_info); |
|
738 | 740 |
} |
739 | 741 |
|
740 | 742 |
device_init(wm8750_register_devices) |
Also available in: Unified diff