Revision 5c0e12f5
b/hw/misc/mst_fpga.c | ||
---|---|---|
35 | 35 |
#define MST_PCMCIA_CD0_IRQ 9 |
36 | 36 |
#define MST_PCMCIA_CD1_IRQ 13 |
37 | 37 |
|
38 |
#define TYPE_MAINSTONE_FPGA "mainstone-fpga" |
|
39 |
#define MAINSTONE_FPGA(obj) \ |
|
40 |
OBJECT_CHECK(mst_irq_state, (obj), TYPE_MAINSTONE_FPGA) |
|
41 |
|
|
38 | 42 |
typedef struct mst_irq_state{ |
39 |
SysBusDevice busdev; |
|
40 |
MemoryRegion iomem; |
|
41 |
|
|
42 |
qemu_irq parent; |
|
43 |
|
|
44 |
uint32_t prev_level; |
|
45 |
uint32_t leddat1; |
|
46 |
uint32_t leddat2; |
|
47 |
uint32_t ledctrl; |
|
48 |
uint32_t gpswr; |
|
49 |
uint32_t mscwr1; |
|
50 |
uint32_t mscwr2; |
|
51 |
uint32_t mscwr3; |
|
52 |
uint32_t mscrd; |
|
53 |
uint32_t intmskena; |
|
54 |
uint32_t intsetclr; |
|
55 |
uint32_t pcmcia0; |
|
56 |
uint32_t pcmcia1; |
|
43 |
SysBusDevice parent_obj; |
|
44 |
|
|
45 |
MemoryRegion iomem; |
|
46 |
|
|
47 |
qemu_irq parent; |
|
48 |
|
|
49 |
uint32_t prev_level; |
|
50 |
uint32_t leddat1; |
|
51 |
uint32_t leddat2; |
|
52 |
uint32_t ledctrl; |
|
53 |
uint32_t gpswr; |
|
54 |
uint32_t mscwr1; |
|
55 |
uint32_t mscwr2; |
|
56 |
uint32_t mscwr3; |
|
57 |
uint32_t mscrd; |
|
58 |
uint32_t intmskena; |
|
59 |
uint32_t intsetclr; |
|
60 |
uint32_t pcmcia0; |
|
61 |
uint32_t pcmcia1; |
|
57 | 62 |
}mst_irq_state; |
58 | 63 |
|
59 | 64 |
static void |
... | ... | |
194 | 199 |
return 0; |
195 | 200 |
} |
196 | 201 |
|
197 |
static int mst_fpga_init(SysBusDevice *dev)
|
|
202 |
static int mst_fpga_init(SysBusDevice *sbd)
|
|
198 | 203 |
{ |
199 |
mst_irq_state *s; |
|
200 |
|
|
201 |
s = FROM_SYSBUS(mst_irq_state, dev); |
|
204 |
DeviceState *dev = DEVICE(sbd); |
|
205 |
mst_irq_state *s = MAINSTONE_FPGA(dev); |
|
202 | 206 |
|
203 |
s->pcmcia0 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD;
|
|
204 |
s->pcmcia1 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD;
|
|
207 |
s->pcmcia0 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD;
|
|
208 |
s->pcmcia1 = MST_PCMCIAx_READY | MST_PCMCIAx_nCD;
|
|
205 | 209 |
|
206 |
sysbus_init_irq(dev, &s->parent);
|
|
210 |
sysbus_init_irq(sbd, &s->parent);
|
|
207 | 211 |
|
208 |
/* alloc the external 16 irqs */
|
|
209 |
qdev_init_gpio_in(&dev->qdev, mst_fpga_set_irq, MST_NUM_IRQS);
|
|
212 |
/* alloc the external 16 irqs */
|
|
213 |
qdev_init_gpio_in(dev, mst_fpga_set_irq, MST_NUM_IRQS);
|
|
210 | 214 |
|
211 |
memory_region_init_io(&s->iomem, OBJECT(s), &mst_fpga_ops, s,
|
|
212 |
"fpga", 0x00100000);
|
|
213 |
sysbus_init_mmio(dev, &s->iomem);
|
|
214 |
return 0;
|
|
215 |
memory_region_init_io(&s->iomem, OBJECT(s), &mst_fpga_ops, s,
|
|
216 |
"fpga", 0x00100000);
|
|
217 |
sysbus_init_mmio(sbd, &s->iomem);
|
|
218 |
return 0;
|
|
215 | 219 |
} |
216 | 220 |
|
217 | 221 |
static VMStateDescription vmstate_mst_fpga_regs = { |
... | ... | |
249 | 253 |
} |
250 | 254 |
|
251 | 255 |
static const TypeInfo mst_fpga_info = { |
252 |
.name = "mainstone-fpga",
|
|
256 |
.name = TYPE_MAINSTONE_FPGA,
|
|
253 | 257 |
.parent = TYPE_SYS_BUS_DEVICE, |
254 | 258 |
.instance_size = sizeof(mst_irq_state), |
255 | 259 |
.class_init = mst_fpga_class_init, |
Also available in: Unified diff