diff mbox series

[27/40] lasips2: add named input gpio to handle incoming port IRQs

Message ID 20220629124026.1077021-28-mark.cave-ayland@ilande.co.uk (mailing list archive)
State New, archived
Headers show
Series PS2 device QOMification - part 2 | expand

Commit Message

Mark Cave-Ayland June 29, 2022, 12:40 p.m. UTC
The LASIPS2 device named input gpio is soon to be connected to the port output
IRQs. Add a new int_status field to LASIPS2State which is a bitmap representing
the port input IRQ status.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/input/lasips2.c         | 15 +++++++++++++++
 include/hw/input/lasips2.h |  1 +
 2 files changed, 16 insertions(+)

Comments

Peter Maydell July 4, 2022, 1:27 p.m. UTC | #1
On Wed, 29 Jun 2022 at 13:41, Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
>
> The LASIPS2 device named input gpio is soon to be connected to the port output
> IRQs. Add a new int_status field to LASIPS2State which is a bitmap representing
> the port input IRQ status.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>  hw/input/lasips2.c         | 15 +++++++++++++++
>  include/hw/input/lasips2.h |  1 +
>  2 files changed, 16 insertions(+)
>
> diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c
> index ec1661a8f1..013d891af6 100644
> --- a/hw/input/lasips2.c
> +++ b/hw/input/lasips2.c
> @@ -125,6 +125,19 @@ static void lasips2_update_irq(LASIPS2State *s)
>                           s->mouse_port.parent_obj.birq);
>  }
>
> +static void lasips2_set_irq(void *opaque, int n, int level)
> +{
> +    LASIPS2State *s = LASIPS2(opaque);
> +
> +    if (level) {
> +        s->int_status |= BIT(n);
> +    } else {
> +        s->int_status &= ~BIT(n);
> +    }
> +
> +    lasips2_update_irq(s);
> +}
> +
>  static void lasips2_reg_write(void *opaque, hwaddr addr, uint64_t val,
>                                unsigned size)
>  {
> @@ -303,6 +316,8 @@ static void lasips2_init(Object *obj)
>                              "ps2-kbd-input-irq", 1);
>      qdev_init_gpio_in_named(DEVICE(obj), lasips2_set_mouse_irq,
>                              "ps2-mouse-input-irq", 1);
> +    qdev_init_gpio_in_named(DEVICE(obj), lasips2_set_irq,
> +                            "lasips2-port-input-irq", 2);
>  }
>
>  static void lasips2_class_init(ObjectClass *klass, void *data)
> diff --git a/include/hw/input/lasips2.h b/include/hw/input/lasips2.h
> index 35e0aa26eb..b79febf64b 100644
> --- a/include/hw/input/lasips2.h
> +++ b/include/hw/input/lasips2.h
> @@ -69,6 +69,7 @@ struct LASIPS2State {
>
>      LASIPS2KbdPort kbd_port;
>      LASIPS2MousePort mouse_port;
> +    uint8_t int_status;
>      qemu_irq irq;

Doesn't this new data field need to be migrated in a vmstate ?

>  };
>

-- PMM
diff mbox series

Patch

diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c
index ec1661a8f1..013d891af6 100644
--- a/hw/input/lasips2.c
+++ b/hw/input/lasips2.c
@@ -125,6 +125,19 @@  static void lasips2_update_irq(LASIPS2State *s)
                          s->mouse_port.parent_obj.birq);
 }
 
+static void lasips2_set_irq(void *opaque, int n, int level)
+{
+    LASIPS2State *s = LASIPS2(opaque);
+
+    if (level) {
+        s->int_status |= BIT(n);
+    } else {
+        s->int_status &= ~BIT(n);
+    }
+
+    lasips2_update_irq(s);
+}
+
 static void lasips2_reg_write(void *opaque, hwaddr addr, uint64_t val,
                               unsigned size)
 {
@@ -303,6 +316,8 @@  static void lasips2_init(Object *obj)
                             "ps2-kbd-input-irq", 1);
     qdev_init_gpio_in_named(DEVICE(obj), lasips2_set_mouse_irq,
                             "ps2-mouse-input-irq", 1);
+    qdev_init_gpio_in_named(DEVICE(obj), lasips2_set_irq,
+                            "lasips2-port-input-irq", 2);
 }
 
 static void lasips2_class_init(ObjectClass *klass, void *data)
diff --git a/include/hw/input/lasips2.h b/include/hw/input/lasips2.h
index 35e0aa26eb..b79febf64b 100644
--- a/include/hw/input/lasips2.h
+++ b/include/hw/input/lasips2.h
@@ -69,6 +69,7 @@  struct LASIPS2State {
 
     LASIPS2KbdPort kbd_port;
     LASIPS2MousePort mouse_port;
+    uint8_t int_status;
     qemu_irq irq;
 };