i82374.c (eb1440e7ec522784f4351bb5e88436cc3cd9abd7) i82374.c (db895a1e6a97e919f9b86d60c969377357b05066)
1/*
2 * QEMU Intel 82374 emulation (Enhanced DMA controller)
3 *
4 * Copyright (c) 2010 Hervé Poussineau
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 84 unchanged lines hidden (view full) ---

93 uint32_t val = 0;
94
95 BADF("%s: %08x\n", __func__, nport);
96
97 DPRINTF("%s: %08x=%08x\n", __func__, nport, val);
98 return val;
99}
100
1/*
2 * QEMU Intel 82374 emulation (Enhanced DMA controller)
3 *
4 * Copyright (c) 2010 Hervé Poussineau
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 84 unchanged lines hidden (view full) ---

93 uint32_t val = 0;
94
95 BADF("%s: %08x\n", __func__, nport);
96
97 DPRINTF("%s: %08x=%08x\n", __func__, nport, val);
98 return val;
99}
100
101static void i82374_init(I82374State *s)
101static void i82374_realize(I82374State *s, Error **errp)
102{
103 DMA_init(1, &s->out);
104 memset(s->commands, 0, sizeof(s->commands));
105}
106
107#define TYPE_I82374 "i82374"
108#define I82374(obj) OBJECT_CHECK(ISAi82374State, (obj), TYPE_I82374)
109

--- 9 unchanged lines hidden (view full) ---

119 .version_id = 0,
120 .minimum_version_id = 0,
121 .fields = (VMStateField[]) {
122 VMSTATE_STRUCT(state, ISAi82374State, 0, vmstate_i82374, I82374State),
123 VMSTATE_END_OF_LIST()
124 },
125};
126
102{
103 DMA_init(1, &s->out);
104 memset(s->commands, 0, sizeof(s->commands));
105}
106
107#define TYPE_I82374 "i82374"
108#define I82374(obj) OBJECT_CHECK(ISAi82374State, (obj), TYPE_I82374)
109

--- 9 unchanged lines hidden (view full) ---

119 .version_id = 0,
120 .minimum_version_id = 0,
121 .fields = (VMStateField[]) {
122 VMSTATE_STRUCT(state, ISAi82374State, 0, vmstate_i82374, I82374State),
123 VMSTATE_END_OF_LIST()
124 },
125};
126
127static int i82374_isa_init(ISADevice *dev)
127static void i82374_isa_realize(DeviceState *dev, Error **errp)
128{
129 ISAi82374State *isa = I82374(dev);
130 I82374State *s = &isa->state;
131
132 register_ioport_read(isa->iobase + 0x0A, 1, 1, i82374_read_isr, s);
133 register_ioport_write(isa->iobase + 0x10, 8, 1, i82374_write_command, s);
134 register_ioport_read(isa->iobase + 0x18, 8, 1, i82374_read_status, s);
135 register_ioport_write(isa->iobase + 0x20, 0x20, 1, i82374_write_descriptor, s);
136 register_ioport_read(isa->iobase + 0x20, 0x20, 1, i82374_read_descriptor, s);
137
128{
129 ISAi82374State *isa = I82374(dev);
130 I82374State *s = &isa->state;
131
132 register_ioport_read(isa->iobase + 0x0A, 1, 1, i82374_read_isr, s);
133 register_ioport_write(isa->iobase + 0x10, 8, 1, i82374_write_command, s);
134 register_ioport_read(isa->iobase + 0x18, 8, 1, i82374_read_status, s);
135 register_ioport_write(isa->iobase + 0x20, 0x20, 1, i82374_write_descriptor, s);
136 register_ioport_read(isa->iobase + 0x20, 0x20, 1, i82374_read_descriptor, s);
137
138 i82374_init(s);
138 i82374_realize(s, errp);
139
139
140 qdev_init_gpio_out(&dev->qdev, &s->out, 1);
141
142 return 0;
140 qdev_init_gpio_out(dev, &s->out, 1);
143}
144
145static Property i82374_properties[] = {
146 DEFINE_PROP_HEX32("iobase", ISAi82374State, iobase, 0x400),
147 DEFINE_PROP_END_OF_LIST()
148};
149
150static void i82374_class_init(ObjectClass *klass, void *data)
151{
141}
142
143static Property i82374_properties[] = {
144 DEFINE_PROP_HEX32("iobase", ISAi82374State, iobase, 0x400),
145 DEFINE_PROP_END_OF_LIST()
146};
147
148static void i82374_class_init(ObjectClass *klass, void *data)
149{
152 ISADeviceClass *k = ISA_DEVICE_CLASS(klass);
153 DeviceClass *dc = DEVICE_CLASS(klass);
154
150 DeviceClass *dc = DEVICE_CLASS(klass);
151
155 k->init = i82374_isa_init;
152 dc->realize = i82374_isa_realize;
156 dc->vmsd = &vmstate_isa_i82374;
157 dc->props = i82374_properties;
158}
159
160static const TypeInfo i82374_isa_info = {
161 .name = TYPE_I82374,
162 .parent = TYPE_ISA_DEVICE,
163 .instance_size = sizeof(ISAi82374State),
164 .class_init = i82374_class_init,
165};
166
167static void i82374_register_types(void)
168{
169 type_register_static(&i82374_isa_info);
170}
171
172type_init(i82374_register_types)
153 dc->vmsd = &vmstate_isa_i82374;
154 dc->props = i82374_properties;
155}
156
157static const TypeInfo i82374_isa_info = {
158 .name = TYPE_I82374,
159 .parent = TYPE_ISA_DEVICE,
160 .instance_size = sizeof(ISAi82374State),
161 .class_init = i82374_class_init,
162};
163
164static void i82374_register_types(void)
165{
166 type_register_static(&i82374_isa_info);
167}
168
169type_init(i82374_register_types)