74
74
#define FIFO_CAPACITY 256
76
#define TYPE_XILINX_SPI "xlnx.xps-spi"
77
#define XILINX_SPI(obj) OBJECT_CHECK(XilinxSPI, (obj), TYPE_XILINX_SPI)
76
79
typedef struct XilinxSPI {
80
SysBusDevice parent_obj;
155
159
static void xlx_spi_reset(DeviceState *d)
157
xlx_spi_do_reset(DO_UPCAST(XilinxSPI, busdev.qdev, d));
161
xlx_spi_do_reset(XILINX_SPI(d));
160
164
static inline int spi_master_enabled(XilinxSPI *s)
317
static int xilinx_spi_init(SysBusDevice *dev)
321
static int xilinx_spi_init(SysBusDevice *sbd)
323
DeviceState *dev = DEVICE(sbd);
324
XilinxSPI *s = XILINX_SPI(dev);
320
XilinxSPI *s = FROM_SYSBUS(typeof(*s), dev);
324
s->spi = ssi_create_bus(&dev->qdev, "spi");
329
s->spi = ssi_create_bus(dev, "spi");
326
sysbus_init_irq(dev, &s->irq);
331
sysbus_init_irq(sbd, &s->irq);
327
332
s->cs_lines = g_new(qemu_irq, s->num_cs);
328
ssi_auto_connect_slaves(DEVICE(s), s->cs_lines, s->spi);
333
ssi_auto_connect_slaves(dev, s->cs_lines, s->spi);
329
334
for (i = 0; i < s->num_cs; ++i) {
330
sysbus_init_irq(dev, &s->cs_lines[i]);
335
sysbus_init_irq(sbd, &s->cs_lines[i]);
333
memory_region_init_io(&s->mmio, &spi_ops, s, "xilinx-spi", R_MAX * 4);
334
sysbus_init_mmio(dev, &s->mmio);
338
memory_region_init_io(&s->mmio, OBJECT(s), &spi_ops, s,
339
"xilinx-spi", R_MAX * 4);
340
sysbus_init_mmio(sbd, &s->mmio);
373
379
static const TypeInfo xilinx_spi_info = {
374
.name = "xlnx.xps-spi",
380
.name = TYPE_XILINX_SPI,
375
381
.parent = TYPE_SYS_BUS_DEVICE,
376
382
.instance_size = sizeof(XilinxSPI),
377
383
.class_init = xilinx_spi_class_init,