|
@@ -973,6 +973,8 @@ static void xilinx_spips_write(void *opaque, hwaddr addr,
|
|
|
|
|
|
DB_PRINT_L(0, "addr=" HWADDR_FMT_plx " = %x\n", addr, (unsigned)value);
|
|
DB_PRINT_L(0, "addr=" HWADDR_FMT_plx " = %x\n", addr, (unsigned)value);
|
|
addr >>= 2;
|
|
addr >>= 2;
|
|
|
|
+ assert(addr < XLNX_SPIPS_R_MAX);
|
|
|
|
+
|
|
switch (addr) {
|
|
switch (addr) {
|
|
case R_CONFIG:
|
|
case R_CONFIG:
|
|
mask = ~(R_CONFIG_RSVD | MAN_START_COM);
|
|
mask = ~(R_CONFIG_RSVD | MAN_START_COM);
|
|
@@ -1299,7 +1301,7 @@ static void xilinx_spips_realize(DeviceState *dev, Error **errp)
|
|
}
|
|
}
|
|
|
|
|
|
memory_region_init_io(&s->iomem, OBJECT(s), xsc->reg_ops, s,
|
|
memory_region_init_io(&s->iomem, OBJECT(s), xsc->reg_ops, s,
|
|
- "spi", XLNX_ZYNQMP_SPIPS_R_MAX * 4);
|
|
|
|
|
|
+ "spi", xsc->reg_size);
|
|
sysbus_init_mmio(sbd, &s->iomem);
|
|
sysbus_init_mmio(sbd, &s->iomem);
|
|
|
|
|
|
s->irqline = -1;
|
|
s->irqline = -1;
|
|
@@ -1435,6 +1437,7 @@ static void xilinx_qspips_class_init(ObjectClass *klass, void * data)
|
|
|
|
|
|
dc->realize = xilinx_qspips_realize;
|
|
dc->realize = xilinx_qspips_realize;
|
|
xsc->reg_ops = &qspips_ops;
|
|
xsc->reg_ops = &qspips_ops;
|
|
|
|
+ xsc->reg_size = XLNX_SPIPS_R_MAX * 4;
|
|
xsc->rx_fifo_size = RXFF_A_Q;
|
|
xsc->rx_fifo_size = RXFF_A_Q;
|
|
xsc->tx_fifo_size = TXFF_A_Q;
|
|
xsc->tx_fifo_size = TXFF_A_Q;
|
|
}
|
|
}
|
|
@@ -1450,6 +1453,7 @@ static void xilinx_spips_class_init(ObjectClass *klass, void *data)
|
|
dc->vmsd = &vmstate_xilinx_spips;
|
|
dc->vmsd = &vmstate_xilinx_spips;
|
|
|
|
|
|
xsc->reg_ops = &spips_ops;
|
|
xsc->reg_ops = &spips_ops;
|
|
|
|
+ xsc->reg_size = XLNX_SPIPS_R_MAX * 4;
|
|
xsc->rx_fifo_size = RXFF_A;
|
|
xsc->rx_fifo_size = RXFF_A;
|
|
xsc->tx_fifo_size = TXFF_A;
|
|
xsc->tx_fifo_size = TXFF_A;
|
|
}
|
|
}
|
|
@@ -1464,6 +1468,7 @@ static void xlnx_zynqmp_qspips_class_init(ObjectClass *klass, void * data)
|
|
dc->vmsd = &vmstate_xlnx_zynqmp_qspips;
|
|
dc->vmsd = &vmstate_xlnx_zynqmp_qspips;
|
|
device_class_set_props(dc, xilinx_zynqmp_qspips_properties);
|
|
device_class_set_props(dc, xilinx_zynqmp_qspips_properties);
|
|
xsc->reg_ops = &xlnx_zynqmp_qspips_ops;
|
|
xsc->reg_ops = &xlnx_zynqmp_qspips_ops;
|
|
|
|
+ xsc->reg_size = XLNX_ZYNQMP_SPIPS_R_MAX * 4;
|
|
xsc->rx_fifo_size = RXFF_A_Q;
|
|
xsc->rx_fifo_size = RXFF_A_Q;
|
|
xsc->tx_fifo_size = TXFF_A_Q;
|
|
xsc->tx_fifo_size = TXFF_A_Q;
|
|
}
|
|
}
|