qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH qom v5 0/2]  Named GPIOs
@ 2014-05-20  6:30 Peter Crosthwaite
  2014-05-20  6:30 ` [Qemu-devel] [PATCH qom v5 1/2] qdev: Implement named GPIOs Peter Crosthwaite
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Peter Crosthwaite @ 2014-05-20  6:30 UTC (permalink / raw)
  To: qemu-devel, afaerber; +Cc: peter.maydell, edgari, alistai

This series implements Named GPIOs on the qdev level. Patch 1 is the
feature presentation.

Second patch I give a useful example of the feature's use (an SSI
cleanup).

This kinda falls through the cracks between the active maintainerships.
In v4 review, Peter suggested QOM queue, can this go via?

Regards,
Peter

Changed since v4:
Addressed PMM v4 review
Changed since v3:
Addressed PMM v2 review
Changed since v2:
Re-ordered function args (PMM review)
Changed since v1:
use QLIST (AF review)
Dropped former P1 (too far out of scope)


Peter Crosthwaite (2):
  qdev: Implement named GPIOs
  ssi: Name the CS GPIO.

 hw/arm/stellaris.c                  |  7 +--
 hw/arm/xilinx_zynq.c                |  2 +-
 hw/core/qdev.c                      | 85 ++++++++++++++++++++++++++++++++-----
 hw/microblaze/petalogix_ml605_mmu.c |  2 +-
 hw/ssi/ssi.c                        |  4 +-
 include/hw/qdev-core.h              | 24 +++++++++--
 include/hw/ssi.h                    |  2 +
 qdev-monitor.c                      | 16 ++++---
 qtest.c                             | 19 ++++++---
 9 files changed, 130 insertions(+), 31 deletions(-)

-- 
1.9.3.1.ga73a6ad

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH qom v5 1/2] qdev: Implement named GPIOs
  2014-05-20  6:30 [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Peter Crosthwaite
@ 2014-05-20  6:30 ` Peter Crosthwaite
  2014-05-20  6:31 ` [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO Peter Crosthwaite
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Crosthwaite @ 2014-05-20  6:30 UTC (permalink / raw)
  To: qemu-devel, afaerber; +Cc: peter.maydell, edgari, alistai

Implement named GPIOs on the Device layer. Listifies the existing GPIOs
stuff using string keys. Legacy un-named GPIOs are preserved by using
a NULL name string - they are just a single matchable element in the
name list.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---
Changed since v4 (PMM review):
s/dont/son't/ in qtest.c
Commented that finalize is not responsible for out irq freeing
Changed since v3 (PMM review):
Added finalize() cleanup of all allocated mem
Remove %s printf of NULL in info qtree
Restricted Qtest to unnamed GPIOs only
Changed since v2:
Reordered fn args to be name-before-number (PMM review)
changed since v1:
Use QLIST instead of RYO list implementation (AF review)
Reorder struct fields for consistency

 hw/core/qdev.c         | 85 ++++++++++++++++++++++++++++++++++++++++++++------
 include/hw/qdev-core.h | 24 +++++++++++---
 qdev-monitor.c         | 16 +++++++---
 qtest.c                | 19 ++++++++---
 4 files changed, 120 insertions(+), 24 deletions(-)

diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 936eae6..319d442 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -312,30 +312,82 @@ BusState *qdev_get_parent_bus(DeviceState *dev)
     return dev->parent_bus;
 }
 
+static NamedGPIOList *qdev_get_named_gpio_list(DeviceState *dev,
+                                               const char *name)
+{
+    NamedGPIOList *ngl;
+
+    QLIST_FOREACH(ngl, &dev->gpios, node) {
+        /* NULL is a valid and matchable name, otherwise do a normal
+         * strcmp match.
+         */
+        if ((!ngl->name && !name) ||
+                (name && ngl->name && !strcmp(name, ngl->name))) {
+            return ngl;
+        }
+    }
+
+    ngl = g_malloc0(sizeof(*ngl));
+    ngl->name = g_strdup(name);
+    QLIST_INSERT_HEAD(&dev->gpios, ngl, node);
+    return ngl;
+}
+
+void qdev_init_gpio_in_named(DeviceState *dev, qemu_irq_handler handler,
+                             const char *name, int n)
+{
+    NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
+
+    gpio_list->in = qemu_extend_irqs(gpio_list->in, gpio_list->num_in, handler,
+                                     dev, n);
+    gpio_list->num_in += n;
+}
+
 void qdev_init_gpio_in(DeviceState *dev, qemu_irq_handler handler, int n)
 {
-    dev->gpio_in = qemu_extend_irqs(dev->gpio_in, dev->num_gpio_in, handler,
-                                        dev, n);
-    dev->num_gpio_in += n;
+    qdev_init_gpio_in_named(dev, handler, NULL, n);
+}
+
+void qdev_init_gpio_out_named(DeviceState *dev, qemu_irq *pins,
+                              const char *name, int n)
+{
+    NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
+
+    assert(gpio_list->num_out == 0);
+    gpio_list->num_out = n;
+    gpio_list->out = pins;
 }
 
 void qdev_init_gpio_out(DeviceState *dev, qemu_irq *pins, int n)
 {
-    assert(dev->num_gpio_out == 0);
-    dev->num_gpio_out = n;
-    dev->gpio_out = pins;
+    qdev_init_gpio_out_named(dev, pins, NULL, n);
+}
+
+qemu_irq qdev_get_gpio_in_named(DeviceState *dev, const char *name, int n)
+{
+    NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
+
+    assert(n >= 0 && n < gpio_list->num_in);
+    return gpio_list->in[n];
 }
 
 qemu_irq qdev_get_gpio_in(DeviceState *dev, int n)
 {
-    assert(n >= 0 && n < dev->num_gpio_in);
-    return dev->gpio_in[n];
+    return qdev_get_gpio_in_named(dev, NULL, n);
+}
+
+void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,
+                                 qemu_irq pin)
+{
+    NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
+
+    assert(n >= 0 && n < gpio_list->num_out);
+    gpio_list->out[n] = pin;
 }
 
 void qdev_connect_gpio_out(DeviceState * dev, int n, qemu_irq pin)
 {
-    assert(n >= 0 && n < dev->num_gpio_out);
-    dev->gpio_out[n] = pin;
+    qdev_connect_gpio_out_named(dev, NULL, n, pin);
 }
 
 BusState *qdev_get_child_bus(DeviceState *dev, const char *name)
@@ -844,6 +896,7 @@ static void device_initfn(Object *obj)
     object_property_add_link(OBJECT(dev), "parent_bus", TYPE_BUS,
                              (Object **)&dev->parent_bus, NULL, 0,
                              &error_abort);
+    QLIST_INIT(&dev->gpios);
 }
 
 static void device_post_init(Object *obj)
@@ -854,10 +907,22 @@ static void device_post_init(Object *obj)
 /* Unlink device from bus and free the structure.  */
 static void device_finalize(Object *obj)
 {
+    NamedGPIOList *ngl, *next;
+
     DeviceState *dev = DEVICE(obj);
     if (dev->opts) {
         qemu_opts_del(dev->opts);
     }
+
+    QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) {
+        QLIST_REMOVE(ngl, node);
+        qemu_free_irqs(ngl->in);
+        g_free(ngl->name);
+        g_free(ngl);
+        /* ngl->out irqs are owned by the other end and should not be freed
+         * here
+         */
+    }
 }
 
 static void device_class_base_init(ObjectClass *class, void *data)
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index dbe473c..ae31575 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -131,6 +131,17 @@ typedef struct DeviceClass {
     const char *bus_type;
 } DeviceClass;
 
+typedef struct NamedGPIOList NamedGPIOList;
+
+struct NamedGPIOList {
+    char *name;
+    qemu_irq *in;
+    int num_in;
+    qemu_irq *out;
+    int num_out;
+    QLIST_ENTRY(NamedGPIOList) node;
+};
+
 /**
  * DeviceState:
  * @realized: Indicates whether the device has been fully constructed.
@@ -148,10 +159,7 @@ struct DeviceState {
     QemuOpts *opts;
     int hotplugged;
     BusState *parent_bus;
-    int num_gpio_out;
-    qemu_irq *gpio_out;
-    int num_gpio_in;
-    qemu_irq *gpio_in;
+    QLIST_HEAD(, NamedGPIOList) gpios;
     QLIST_HEAD(, BusState) child_bus;
     int num_child_bus;
     int instance_id_alias;
@@ -252,7 +260,11 @@ void qdev_machine_creation_done(void);
 bool qdev_machine_modified(void);
 
 qemu_irq qdev_get_gpio_in(DeviceState *dev, int n);
+qemu_irq qdev_get_gpio_in_named(DeviceState *dev, const char *name, int n);
+
 void qdev_connect_gpio_out(DeviceState *dev, int n, qemu_irq pin);
+void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,
+                                 qemu_irq pin);
 
 BusState *qdev_get_child_bus(DeviceState *dev, const char *name);
 
@@ -262,6 +274,10 @@ BusState *qdev_get_child_bus(DeviceState *dev, const char *name);
 /* GPIO inputs also double as IRQ sinks.  */
 void qdev_init_gpio_in(DeviceState *dev, qemu_irq_handler handler, int n);
 void qdev_init_gpio_out(DeviceState *dev, qemu_irq *pins, int n);
+void qdev_init_gpio_in_named(DeviceState *dev, qemu_irq_handler handler,
+                             const char *name, int n);
+void qdev_init_gpio_out_named(DeviceState *dev, qemu_irq *pins,
+                              const char *name, int n);
 
 BusState *qdev_get_parent_bus(DeviceState *dev);
 
diff --git a/qdev-monitor.c b/qdev-monitor.c
index 02cbe43..f87f3d8 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -613,14 +613,20 @@ static void qdev_print(Monitor *mon, DeviceState *dev, int indent)
 {
     ObjectClass *class;
     BusState *child;
+    NamedGPIOList *ngl;
+
     qdev_printf("dev: %s, id \"%s\"\n", object_get_typename(OBJECT(dev)),
                 dev->id ? dev->id : "");
     indent += 2;
-    if (dev->num_gpio_in) {
-        qdev_printf("gpio-in %d\n", dev->num_gpio_in);
-    }
-    if (dev->num_gpio_out) {
-        qdev_printf("gpio-out %d\n", dev->num_gpio_out);
+    QLIST_FOREACH(ngl, &dev->gpios, node) {
+        if (ngl->num_in) {
+            qdev_printf("gpio-in \"%s\" %d\n", ngl->name ? ngl->name : "",
+                        ngl->num_in);
+        }
+        if (ngl->num_out) {
+            qdev_printf("gpio-out \"%s\" %d\n", ngl->name ? ngl->name : "",
+                        ngl->num_out);
+        }
     }
     class = object_get_class(OBJECT(dev));
     do {
diff --git a/qtest.c b/qtest.c
index 2aba20d..f9695a8 100644
--- a/qtest.c
+++ b/qtest.c
@@ -233,7 +233,8 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
     g_assert(command);
     if (strcmp(words[0], "irq_intercept_out") == 0
         || strcmp(words[0], "irq_intercept_in") == 0) {
-	DeviceState *dev;
+        DeviceState *dev;
+        NamedGPIOList *ngl;
 
         g_assert(words[1]);
         dev = DEVICE(object_resolve_path(words[1], NULL));
@@ -253,10 +254,18 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
 	    return;
         }
 
-        if (words[0][14] == 'o') {
-            qemu_irq_intercept_out(&dev->gpio_out, qtest_irq_handler, dev->num_gpio_out);
-        } else {
-            qemu_irq_intercept_in(dev->gpio_in, qtest_irq_handler, dev->num_gpio_in);
+        QLIST_FOREACH(ngl, &dev->gpios, node) {
+            /* We don't support intercept of named GPIOs yet */
+            if (ngl->name) {
+                continue;
+            }
+            if (words[0][14] == 'o') {
+                qemu_irq_intercept_out(&ngl->out, qtest_irq_handler,
+                                       ngl->num_out);
+            } else {
+                qemu_irq_intercept_in(ngl->in, qtest_irq_handler,
+                                      ngl->num_in);
+            }
         }
         irq_intercept_dev = dev;
         qtest_send_prefix(chr);
-- 
1.9.3.1.ga73a6ad

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO.
  2014-05-20  6:30 [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Peter Crosthwaite
  2014-05-20  6:30 ` [Qemu-devel] [PATCH qom v5 1/2] qdev: Implement named GPIOs Peter Crosthwaite
@ 2014-05-20  6:31 ` Peter Crosthwaite
  2014-05-20  9:53   ` Andreas Färber
  2014-05-20  9:49 ` [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Andreas Färber
  2014-05-20 22:15 ` Peter Maydell
  3 siblings, 1 reply; 8+ messages in thread
From: Peter Crosthwaite @ 2014-05-20  6:31 UTC (permalink / raw)
  To: qemu-devel, afaerber; +Cc: peter.maydell, edgari, alistai

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 is stellaris, which uses a device which has both
SSI and concrete level GPIOs.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---

 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 a2095c0..f318476 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 9ee21e7..1ce7b79 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 40a9f5c..3d7aa6e 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -196,7 +196,7 @@ petalogix_ml605_init(QEMUMachineInitArgs *args)
             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.9.3.1.ga73a6ad

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH qom v5 0/2]  Named GPIOs
  2014-05-20  6:30 [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Peter Crosthwaite
  2014-05-20  6:30 ` [Qemu-devel] [PATCH qom v5 1/2] qdev: Implement named GPIOs Peter Crosthwaite
  2014-05-20  6:31 ` [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO Peter Crosthwaite
@ 2014-05-20  9:49 ` Andreas Färber
  2014-05-20 22:10   ` Peter Crosthwaite
  2014-05-20 22:15 ` Peter Maydell
  3 siblings, 1 reply; 8+ messages in thread
From: Andreas Färber @ 2014-05-20  9:49 UTC (permalink / raw)
  To: Peter Crosthwaite, qemu-devel; +Cc: peter.maydell, edgari, alistai

Am 20.05.2014 08:30, schrieb Peter Crosthwaite:
> This series implements Named GPIOs on the qdev level. Patch 1 is the
> feature presentation.
> 
> Second patch I give a useful example of the feature's use (an SSI
> cleanup).
> 
> This kinda falls through the cracks between the active maintainerships.
> In v4 review, Peter suggested QOM queue, can this go via?

Thanks for fixing it up yourself. Applied to qom-next:
https://github.com/afaerber/qemu-cpu/commits/qom-next

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO.
  2014-05-20  6:31 ` [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO Peter Crosthwaite
@ 2014-05-20  9:53   ` Andreas Färber
  2014-05-20 22:08     ` Peter Crosthwaite
  0 siblings, 1 reply; 8+ messages in thread
From: Andreas Färber @ 2014-05-20  9:53 UTC (permalink / raw)
  To: Peter Crosthwaite, qemu-devel; +Cc: peter.maydell, edgari, alistai

Am 20.05.2014 08:31, schrieb Peter Crosthwaite:
> 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 is stellaris,

I assumed you meant "in stellaris".

> which uses a device which has both
> SSI and concrete level GPIOs.
> 
> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

I've dropped the trailing dot from the subject. Please also remember to
place your Sob last.

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO.
  2014-05-20  9:53   ` Andreas Färber
@ 2014-05-20 22:08     ` Peter Crosthwaite
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Crosthwaite @ 2014-05-20 22:08 UTC (permalink / raw)
  To: Andreas Färber
  Cc: Peter Maydell, Edgar Iglesias, alistai,
	qemu-devel@nongnu.org Developers

On Tue, May 20, 2014 at 7:53 PM, Andreas Färber <afaerber@suse.de> wrote:
> Am 20.05.2014 08:31, schrieb Peter Crosthwaite:
>> 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 is stellaris,
>
> I assumed you meant "in stellaris".
>
>> which uses a device which has both
>> SSI and concrete level GPIOs.
>>
>> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
>> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>
> I've dropped the trailing dot from the subject. Please also remember to
> place your Sob last.
>

Noted.

Regards,
Peter

> Regards,
> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs
  2014-05-20  9:49 ` [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Andreas Färber
@ 2014-05-20 22:10   ` Peter Crosthwaite
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Crosthwaite @ 2014-05-20 22:10 UTC (permalink / raw)
  To: Andreas Färber
  Cc: Peter Maydell, Edgar Iglesias, alistai,
	qemu-devel@nongnu.org Developers

On Tue, May 20, 2014 at 7:49 PM, Andreas Färber <afaerber@suse.de> wrote:
> Am 20.05.2014 08:30, schrieb Peter Crosthwaite:
>> This series implements Named GPIOs on the qdev level. Patch 1 is the
>> feature presentation.
>>
>> Second patch I give a useful example of the feature's use (an SSI
>> cleanup).
>>
>> This kinda falls through the cracks between the active maintainerships.
>> In v4 review, Peter suggested QOM queue, can this go via?
>
> Thanks for fixing it up yourself. Applied to qom-next:
> https://github.com/afaerber/qemu-cpu/commits/qom-next
>

Thanks,

Regards,
Peter

> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs
  2014-05-20  6:30 [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Peter Crosthwaite
                   ` (2 preceding siblings ...)
  2014-05-20  9:49 ` [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Andreas Färber
@ 2014-05-20 22:15 ` Peter Maydell
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2014-05-20 22:15 UTC (permalink / raw)
  To: Peter Crosthwaite
  Cc: Edgar Iglesias, alistai, QEMU Developers, Andreas Färber

On 20 May 2014 07:30, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote:
> This series implements Named GPIOs on the qdev level. Patch 1 is the
> feature presentation.

I'm way behind on my review queue, but hopefully I can find time
to do the conversion of the GIC GPIOs -- I think that's the major
device with a really cumbersome mapping of different kinds of
input into the single GPIO array.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-05-20 22:16 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-20  6:30 [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Peter Crosthwaite
2014-05-20  6:30 ` [Qemu-devel] [PATCH qom v5 1/2] qdev: Implement named GPIOs Peter Crosthwaite
2014-05-20  6:31 ` [Qemu-devel] [PATCH qom v5 2/2] ssi: Name the CS GPIO Peter Crosthwaite
2014-05-20  9:53   ` Andreas Färber
2014-05-20 22:08     ` Peter Crosthwaite
2014-05-20  9:49 ` [Qemu-devel] [PATCH qom v5 0/2] Named GPIOs Andreas Färber
2014-05-20 22:10   ` Peter Crosthwaite
2014-05-20 22:15 ` 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).