On 12 May 2014 02:03, Peter Crosthwaite <peter.crosthwa...@xilinx.com> wrote:
> 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.crosthwa...@xilinx.com>

Two very minor nits involving comments below, but otherwise

Reviewed-by: Peter Maydell <peter.mayd...@linaro.org>

and I would be happy for these patches to be committed
(through the QOM tree?)

> @@ -854,10 +907,19 @@ 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);

I think we could use a comment along the lines of
    /* ngl->out irqs are owned by the other end and should not be freed here */

to stop somebody later on wondering whether it's a bug
that we don't clean up that field in NamedGPIOList.

> @@ -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 dont support intercept of named GPIOs yet */

"don't".

thanks
-- PMM

Reply via email to