* [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates
@ 2013-03-04 5:04 Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 1/5] xilinx_spips: Set unused IRQs to NULL Peter Crosthwaite
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, peter.maydell
Few updates to the Zynq SPI controller. Couple of bug-fixes/completions followed
by some QOMifying cleanup.
Changed from v1:
Fixed p5 compile bug.
Nathan Rossi (2):
xilinx_spips: Fix bus setup conditional check
xilinx_spips: Add missing dual-bus snoop commands
Peter Crosthwaite (3):
xilinx_spips: Set unused IRQs to NULL
xilinx_spips: QOM styling fixes
xilinx_spips: seperate SPI and QSPI as two classes
hw/xilinx_spips.c | 124 +++++++++++++++++++++++++++++++++++++++--------------
hw/xilinx_zynq.c | 2 +-
2 files changed, 93 insertions(+), 33 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 1/5] xilinx_spips: Set unused IRQs to NULL
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
@ 2013-03-04 5:04 ` Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 2/5] xilinx_spips: Fix bus setup conditional check Peter Crosthwaite
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, peter.maydell
Unused CS lines should init to 0 to avoid segfaulting when accessing an
unattached QSPI controller.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/xilinx_spips.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 42e019d..3eee828 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -497,7 +497,7 @@ static int xilinx_spips_init(SysBusDevice *dev)
s->spi[i] = ssi_create_bus(&dev->qdev, bus_name);
}
- s->cs_lines = g_new(qemu_irq, s->num_cs * s->num_busses);
+ s->cs_lines = g_new0(qemu_irq, s->num_cs * s->num_busses);
ssi_auto_connect_slaves(DEVICE(s), s->cs_lines, s->spi[0]);
ssi_auto_connect_slaves(DEVICE(s), s->cs_lines, s->spi[1]);
sysbus_init_irq(dev, &s->irq);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 2/5] xilinx_spips: Fix bus setup conditional check
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 1/5] xilinx_spips: Set unused IRQs to NULL Peter Crosthwaite
@ 2013-03-04 5:04 ` Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 3/5] xilinx_spips: Add missing dual-bus snoop commands Peter Crosthwaite
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, Nathan Rossi, peter.maydell
From: Nathan Rossi <nathan.rossi@xilinx.com>
The R_LQPSI_CFG register has the LQSPI_CFG_SEP_BUS and LQSPI_CFG_TWO_MEM bits.
Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/xilinx_spips.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 3eee828..03797c3 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -143,8 +143,8 @@ typedef struct {
static inline int num_effective_busses(XilinxSPIPS *s)
{
- return (s->regs[R_LQSPI_STS] & LQSPI_CFG_SEP_BUS &&
- s->regs[R_LQSPI_STS] & LQSPI_CFG_TWO_MEM) ? s->num_busses : 1;
+ return (s->regs[R_LQSPI_CFG] & LQSPI_CFG_SEP_BUS &&
+ s->regs[R_LQSPI_CFG] & LQSPI_CFG_TWO_MEM) ? s->num_busses : 1;
}
static void xilinx_spips_update_cs_lines(XilinxSPIPS *s)
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 3/5] xilinx_spips: Add missing dual-bus snoop commands
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 1/5] xilinx_spips: Set unused IRQs to NULL Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 2/5] xilinx_spips: Fix bus setup conditional check Peter Crosthwaite
@ 2013-03-04 5:04 ` Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 4/5] xilinx_spips: QOM styling fixes Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes Peter Crosthwaite
4 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, Nathan Rossi, peter.maydell
From: Nathan Rossi <nathan.rossi@xilinx.com>
Added additional commands to the switch to check for when snooping commands in
dual bus mode setups. Cleaned up code to use an enum.
Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/xilinx_spips.c | 29 +++++++++++++++++++++++------
1 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 03797c3..45a1c51 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -115,6 +115,19 @@
#define SNOOP_NONE 0xFE
#define SNOOP_STRIPING 0
+typedef enum {
+ READ = 0x3,
+ FAST_READ = 0xb,
+ DOR = 0x3b,
+ QOR = 0x6b,
+ DIOR = 0xbb,
+ QIOR = 0xeb,
+
+ PP = 0x2,
+ DPP = 0xa2,
+ QPP = 0x32,
+} FlashCMD;
+
typedef struct {
SysBusDevice busdev;
MemoryRegion iomem;
@@ -251,15 +264,19 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s)
switch (s->snoop_state) {
case (SNOOP_CHECKING):
switch (tx) { /* new instruction code */
- case 0x0b: /* dual/quad output read DOR/QOR */
- case 0x6b:
- s->snoop_state = 4;
+ case READ: /* 3 address bytes, no dummy bytes/cycles */
+ case PP:
+ case DPP:
+ case QPP:
+ s->snoop_state = 3;
break;
- /* FIXME: these vary between vendor - set to spansion */
- case 0xbb: /* high performance dual read DIOR */
+ case FAST_READ: /* 3 address bytes, 1 dummy byte */
+ case DOR:
+ case QOR:
+ case DIOR: /* FIXME: these vary between vendor - set to spansion */
s->snoop_state = 4;
break;
- case 0xeb: /* high performance quad read QIOR */
+ case QIOR: /* 3 address bytes, 2 dummy bytes */
s->snoop_state = 6;
break;
default:
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 4/5] xilinx_spips: QOM styling fixes
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
` (2 preceding siblings ...)
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 3/5] xilinx_spips: Add missing dual-bus snoop commands Peter Crosthwaite
@ 2013-03-04 5:04 ` Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes Peter Crosthwaite
4 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, peter.maydell
Few fixes for the latest QOM styling guides.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/xilinx_spips.c | 29 ++++++++++++++++-------------
1 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 45a1c51..530ef47 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -154,6 +154,11 @@ typedef struct {
hwaddr lqspi_cached_addr;
} XilinxSPIPS;
+#define TYPE_XILINX_SPIPS "xilinx,spips"
+
+#define XILINX_SPIPS(obj) \
+ OBJECT_CHECK(XilinxSPIPS, (obj), TYPE_XILINX_SPIPS)
+
static inline int num_effective_busses(XilinxSPIPS *s)
{
return (s->regs[R_LQSPI_CFG] & LQSPI_CFG_SEP_BUS &&
@@ -210,7 +215,7 @@ static void xilinx_spips_update_ixr(XilinxSPIPS *s)
static void xilinx_spips_reset(DeviceState *d)
{
- XilinxSPIPS *s = DO_UPCAST(XilinxSPIPS, busdev.qdev, d);
+ XilinxSPIPS *s = XILINX_SPIPS(d);
int i;
for (i = 0; i < R_MAX; i++) {
@@ -500,9 +505,10 @@ static const MemoryRegionOps lqspi_ops = {
}
};
-static int xilinx_spips_init(SysBusDevice *dev)
+static void xilinx_spips_realize(DeviceState *dev, Error **errp)
{
- XilinxSPIPS *s = FROM_SYSBUS(typeof(*s), dev);
+ XilinxSPIPS *s = XILINX_SPIPS(dev);
+ SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
int i;
DB_PRINT("inited device model\n");
@@ -511,31 +517,29 @@ static int xilinx_spips_init(SysBusDevice *dev)
for (i = 0; i < s->num_busses; ++i) {
char bus_name[16];
snprintf(bus_name, 16, "spi%d", i);
- s->spi[i] = ssi_create_bus(&dev->qdev, bus_name);
+ s->spi[i] = ssi_create_bus(dev, bus_name);
}
s->cs_lines = g_new0(qemu_irq, s->num_cs * s->num_busses);
ssi_auto_connect_slaves(DEVICE(s), s->cs_lines, s->spi[0]);
ssi_auto_connect_slaves(DEVICE(s), s->cs_lines, s->spi[1]);
- sysbus_init_irq(dev, &s->irq);
+ sysbus_init_irq(sbd, &s->irq);
for (i = 0; i < s->num_cs * s->num_busses; ++i) {
- sysbus_init_irq(dev, &s->cs_lines[i]);
+ sysbus_init_irq(sbd, &s->cs_lines[i]);
}
memory_region_init_io(&s->iomem, &spips_ops, s, "spi", R_MAX*4);
- sysbus_init_mmio(dev, &s->iomem);
+ sysbus_init_mmio(sbd, &s->iomem);
memory_region_init_io(&s->mmlqspi, &lqspi_ops, s, "lqspi",
(1 << LQSPI_ADDRESS_BITS) * 2);
- sysbus_init_mmio(dev, &s->mmlqspi);
+ sysbus_init_mmio(sbd, &s->mmlqspi);
s->irqline = -1;
s->lqspi_cached_addr = ~0ULL;
fifo8_create(&s->rx_fifo, RXFF_A);
fifo8_create(&s->tx_fifo, TXFF_A);
-
- return 0;
}
static int xilinx_spips_post_load(void *opaque, int version_id)
@@ -569,16 +573,15 @@ static Property xilinx_spips_properties[] = {
static void xilinx_spips_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
- sdc->init = xilinx_spips_init;
+ dc->realize = xilinx_spips_realize;
dc->reset = xilinx_spips_reset;
dc->props = xilinx_spips_properties;
dc->vmsd = &vmstate_xilinx_spips;
}
static const TypeInfo xilinx_spips_info = {
- .name = "xilinx,spips",
+ .name = TYPE_XILINX_SPIPS,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(XilinxSPIPS),
.class_init = xilinx_spips_class_init,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
` (3 preceding siblings ...)
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 4/5] xilinx_spips: QOM styling fixes Peter Crosthwaite
@ 2013-03-04 5:04 ` Peter Crosthwaite
2013-03-15 15:27 ` Peter Maydell
4 siblings, 1 reply; 7+ messages in thread
From: Peter Crosthwaite @ 2013-03-04 5:04 UTC (permalink / raw)
To: qemu-devel; +Cc: edgar.iglesias, Peter Crosthwaite, peter.maydell
Make SPI and QSPI different classes. QSPIPS is setup as a child of SPIPS.
Only QSPI has the LQSPI functionality, so move all that to the child class.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
Changed from v1:
Fixed compile bug (s/XILINX_SPIPS/XILINX_QSPIPS on QOM cast)
hw/xilinx_spips.c | 66 ++++++++++++++++++++++++++++++++++++++++++----------
hw/xilinx_zynq.c | 2 +-
2 files changed, 54 insertions(+), 14 deletions(-)
diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 530ef47..e5c3e28 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -149,15 +149,23 @@ typedef struct {
uint8_t num_txrx_bytes;
uint32_t regs[R_MAX];
+} XilinxSPIPS;
+
+typedef struct {
+ XilinxSPIPS parent;
uint32_t lqspi_buf[LQSPI_CACHE_SIZE];
hwaddr lqspi_cached_addr;
-} XilinxSPIPS;
+} XilinxQSPIPS;
-#define TYPE_XILINX_SPIPS "xilinx,spips"
+
+#define TYPE_XILINX_SPIPS "xlnx.ps7-spi"
+#define TYPE_XILINX_QSPIPS "xlnx.ps7-qspi"
#define XILINX_SPIPS(obj) \
OBJECT_CHECK(XilinxSPIPS, (obj), TYPE_XILINX_SPIPS)
+#define XILINX_QSPIPS(obj) \
+ OBJECT_CHECK(XilinxQSPIPS, (obj), TYPE_XILINX_QSPIPS)
static inline int num_effective_busses(XilinxSPIPS *s)
{
@@ -436,11 +444,12 @@ static uint64_t
lqspi_read(void *opaque, hwaddr addr, unsigned int size)
{
int i;
+ XilinxQSPIPS *q = opaque;
XilinxSPIPS *s = opaque;
- if (addr >= s->lqspi_cached_addr &&
- addr <= s->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) {
- return s->lqspi_buf[(addr - s->lqspi_cached_addr) >> 2];
+ if (addr >= q->lqspi_cached_addr &&
+ addr <= q->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) {
+ return q->lqspi_buf[(addr - q->lqspi_cached_addr) >> 2];
} else {
int flash_addr = (addr / num_effective_busses(s));
int slave = flash_addr >> LQSPI_ADDRESS_BITS;
@@ -484,14 +493,14 @@ lqspi_read(void *opaque, hwaddr addr, unsigned int size)
for (i = 0; i < LQSPI_CACHE_SIZE / 4; ++i) {
tx_data_bytes(s, 0, 4);
xilinx_spips_flush_txfifo(s);
- rx_data_bytes(s, &s->lqspi_buf[cache_entry], 4);
+ rx_data_bytes(s, &q->lqspi_buf[cache_entry], 4);
cache_entry++;
}
s->regs[R_CONFIG] |= CS;
xilinx_spips_update_cs_lines(s);
- s->lqspi_cached_addr = addr;
+ q->lqspi_cached_addr = addr;
return lqspi_read(opaque, addr, size);
}
}
@@ -511,7 +520,7 @@ static void xilinx_spips_realize(DeviceState *dev, Error **errp)
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
int i;
- DB_PRINT("inited device model\n");
+ DB_PRINT("realized spips\n");
s->spi = g_new(SSIBus *, s->num_busses);
for (i = 0; i < s->num_busses; ++i) {
@@ -531,17 +540,32 @@ static void xilinx_spips_realize(DeviceState *dev, Error **errp)
memory_region_init_io(&s->iomem, &spips_ops, s, "spi", R_MAX*4);
sysbus_init_mmio(sbd, &s->iomem);
- memory_region_init_io(&s->mmlqspi, &lqspi_ops, s, "lqspi",
- (1 << LQSPI_ADDRESS_BITS) * 2);
- sysbus_init_mmio(sbd, &s->mmlqspi);
-
s->irqline = -1;
- s->lqspi_cached_addr = ~0ULL;
fifo8_create(&s->rx_fifo, RXFF_A);
fifo8_create(&s->tx_fifo, TXFF_A);
}
+static void xilinx_qspips_realize(DeviceState *dev, Error **errp)
+{
+ XilinxSPIPS *s = XILINX_SPIPS(dev);
+ XilinxQSPIPS *q = XILINX_QSPIPS(dev);
+ SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
+
+ DB_PRINT("realized qspips\n");
+
+ s->num_busses = 2;
+ s->num_cs = 2;
+ s->num_txrx_bytes = 4;
+
+ xilinx_spips_realize(dev, errp);
+ memory_region_init_io(&s->mmlqspi, &lqspi_ops, s, "lqspi",
+ (1 << LQSPI_ADDRESS_BITS) * 2);
+ sysbus_init_mmio(sbd, &s->mmlqspi);
+
+ q->lqspi_cached_addr = ~0ULL;
+}
+
static int xilinx_spips_post_load(void *opaque, int version_id)
{
xilinx_spips_update_ixr((XilinxSPIPS *)opaque);
@@ -570,6 +594,14 @@ static Property xilinx_spips_properties[] = {
DEFINE_PROP_UINT8("num-txrx-bytes", XilinxSPIPS, num_txrx_bytes, 1),
DEFINE_PROP_END_OF_LIST(),
};
+
+static void xilinx_qspips_class_init(ObjectClass *klass, void * data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+
+ dc->realize = xilinx_qspips_realize;
+}
+
static void xilinx_spips_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -587,9 +619,17 @@ static const TypeInfo xilinx_spips_info = {
.class_init = xilinx_spips_class_init,
};
+static const TypeInfo xilinx_qspips_info = {
+ .name = TYPE_XILINX_QSPIPS,
+ .parent = TYPE_XILINX_SPIPS,
+ .instance_size = sizeof(XilinxQSPIPS),
+ .class_init = xilinx_qspips_class_init,
+};
+
static void xilinx_spips_register_types(void)
{
type_register_static(&xilinx_spips_info);
+ type_register_static(&xilinx_qspips_info);
}
type_init(xilinx_spips_register_types)
diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c
index 2f67d90..9733459 100644
--- a/hw/xilinx_zynq.c
+++ b/hw/xilinx_zynq.c
@@ -62,7 +62,7 @@ static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq,
int num_busses = is_qspi ? NUM_QSPI_BUSSES : 1;
int num_ss = is_qspi ? NUM_QSPI_FLASHES : NUM_SPI_FLASHES;
- dev = qdev_create(NULL, "xilinx,spips");
+ dev = qdev_create(NULL, is_qspi ? "xlnx.ps7-qspi" : "xlnx.ps7-spi");
qdev_prop_set_uint8(dev, "num-txrx-bytes", is_qspi ? 4 : 1);
qdev_prop_set_uint8(dev, "num-ss-bits", num_ss);
qdev_prop_set_uint8(dev, "num-busses", num_busses);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes Peter Crosthwaite
@ 2013-03-15 15:27 ` Peter Maydell
0 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2013-03-15 15:27 UTC (permalink / raw)
To: Peter Crosthwaite; +Cc: edgar.iglesias, qemu-devel
On 4 March 2013 05:04, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote:
> Make SPI and QSPI different classes. QSPIPS is setup as a child of SPIPS.
> Only QSPI has the LQSPI functionality, so move all that to the child class.
>
> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> +typedef struct {
> + XilinxSPIPS parent;
The QOM conventions doc says this field should be named 'parent_obj'.
Otherwise looks OK I think.
Patches 1-4 look good so I've just stuck them into arm-devs.next
(which I think I'll do a pullreq for later today) to save you
having to retransmit them.
thanks
-- PMM
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-03-15 15:28 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-04 5:04 [Qemu-devel] [PATCH v2 0/5] Xilinx SPIPS updates Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 1/5] xilinx_spips: Set unused IRQs to NULL Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 2/5] xilinx_spips: Fix bus setup conditional check Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 3/5] xilinx_spips: Add missing dual-bus snoop commands Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 4/5] xilinx_spips: QOM styling fixes Peter Crosthwaite
2013-03-04 5:04 ` [Qemu-devel] [PATCH v2 5/5] xilinx_spips: seperate SPI and QSPI as two classes Peter Crosthwaite
2013-03-15 15:27 ` Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).