[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 8/8] ssi: Name the CS GPIO
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL 8/8] ssi: Name the CS GPIO |
Date: |
Wed, 28 May 2014 19:29:03 +0200 |
From: Peter Crosthwaite <address@hidden>
To get it out of the default GPIO list. This allows child devices to
use the un-named GPIO namespace without having to be SSI aware. That
is, there is no more need for machines to know about the obscure
policy where GPIO 0 is the SSI chip-select and GPIO 1..N are the
concrete class GPIOs (defined locally as 0..N-1).
This is most notable in stellaris, which uses a device which has both
SSI and concrete level GPIOs.
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Peter Crosthwaite <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
hw/arm/stellaris.c | 7 ++++---
hw/arm/xilinx_zynq.c | 2 +-
hw/microblaze/petalogix_ml605_mmu.c | 2 +-
hw/ssi/ssi.c | 4 ++--
include/hw/ssi.h | 2 ++
5 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 3b7a27a..80028e8 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1290,9 +1290,10 @@ static void stellaris_init(const char *kernel_filename,
const char *cpu_model,
sddev = ssi_create_slave(bus, "ssi-sd");
ssddev = ssi_create_slave(bus, "ssd0323");
- gpio_out[GPIO_D][0] = qemu_irq_split(qdev_get_gpio_in(sddev, 0),
- qdev_get_gpio_in(ssddev, 0));
- gpio_out[GPIO_C][7] = qdev_get_gpio_in(ssddev, 1);
+ gpio_out[GPIO_D][0] = qemu_irq_split(
+ qdev_get_gpio_in_named(sddev, SSI_GPIO_CS, 0),
+ qdev_get_gpio_in_named(ssddev, SSI_GPIO_CS, 0));
+ gpio_out[GPIO_C][7] = qdev_get_gpio_in(ssddev, 0);
/* Make sure the select pin is high. */
qemu_irq_raise(gpio_out[GPIO_D][0]);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index bae0416..ba5aa82 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -94,7 +94,7 @@ static inline void zynq_init_spi_flashes(uint32_t base_addr,
qemu_irq irq,
for (j = 0; j < num_ss; ++j) {
flash_dev = ssi_create_slave(spi, "n25q128");
- cs_line = qdev_get_gpio_in(flash_dev, 0);
+ cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0);
sysbus_connect_irq(busdev, i * num_ss + j + 1, cs_line);
}
}
diff --git a/hw/microblaze/petalogix_ml605_mmu.c
b/hw/microblaze/petalogix_ml605_mmu.c
index 496330c..aea9c5b 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -196,7 +196,7 @@ petalogix_ml605_init(MachineState *machine)
qemu_irq cs_line;
dev = ssi_create_slave(spi, "n25q128");
- cs_line = qdev_get_gpio_in(dev, 0);
+ cs_line = qdev_get_gpio_in_named(dev, SSI_GPIO_CS, 0);
sysbus_connect_irq(busdev, i+1, cs_line);
}
}
diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c
index 1c82a93..2aab79b 100644
--- a/hw/ssi/ssi.c
+++ b/hw/ssi/ssi.c
@@ -60,7 +60,7 @@ static int ssi_slave_init(DeviceState *dev)
if (ssc->transfer_raw == ssi_transfer_raw_default &&
ssc->cs_polarity != SSI_CS_NONE) {
- qdev_init_gpio_in(dev, ssi_cs_default, 1);
+ qdev_init_gpio_in_named(dev, ssi_cs_default, SSI_GPIO_CS, 1);
}
return ssc->init(s);
@@ -155,7 +155,7 @@ static int ssi_auto_connect_slave(Object *child, void
*opaque)
return 0;
}
- cs_line = qdev_get_gpio_in(DEVICE(dev), 0);
+ cs_line = qdev_get_gpio_in_named(DEVICE(dev), SSI_GPIO_CS, 0);
qdev_set_parent_bus(DEVICE(dev), BUS(arg->bus));
**arg->cs_linep = cs_line;
(*arg->cs_linep)++;
diff --git a/include/hw/ssi.h b/include/hw/ssi.h
index 6c13fb2..df0f838 100644
--- a/include/hw/ssi.h
+++ b/include/hw/ssi.h
@@ -23,6 +23,8 @@ typedef struct SSISlave SSISlave;
#define SSI_SLAVE_GET_CLASS(obj) \
OBJECT_GET_CLASS(SSISlaveClass, (obj), TYPE_SSI_SLAVE)
+#define SSI_GPIO_CS "ssi-gpio-cs"
+
typedef enum {
SSI_CS_NONE = 0,
SSI_CS_LOW,
--
1.8.4.5
- [Qemu-devel] [PULL 0/8] QOM devices patch queue 2014-05-28, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 1/8] qom-test: Test qom-list on link<> properties, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 3/8] vl.c: Do not set 'type' property in obj_set_property(), Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 7/8] qdev: Implement named GPIOs, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 4/8] qapi: Avoid output visitor crashing if it encounters a NULL value, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 8/8] ssi: Name the CS GPIO,
Andreas Färber <=
- [Qemu-devel] [PULL 6/8] machine: Make -machine opts properties of MachineState, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 5/8] tests: Check empty QMP output visitor, Andreas Färber, 2014/05/28
- [Qemu-devel] [PULL 2/8] machine: Conversion of QEMUMachineInitArgs to MachineState, Andreas Färber, 2014/05/28
- Re: [Qemu-devel] [PULL 0/8] QOM devices patch queue 2014-05-28, Peter Maydell, 2014/05/28