[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 07/13] pckbd: handle A20 IRQ as GPIO
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-block] [PATCH 07/13] pckbd: handle A20 IRQ as GPIO |
Date: |
Fri, 17 Jun 2016 15:23:55 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 |
On 17/06/2016 15:11, Efimov Vasily wrote:
> The i8042 device has outgouing IRQ line A20. Currently the IRQ is referenced
> by a pointer which normally is set during machine initialization. The pointer
> is never changed at runtime. So common GPIO model can be applied to A20 IRQ
> line. Note that checking for IRQ to be connected as in previous version
> of code is not required because qemu_set_irq will do it.
>
> Signed-off-by: Efimov Vasily <address@hidden>
> ---
> hw/input/pckbd.c | 21 +++++++--------------
> 1 file changed, 7 insertions(+), 14 deletions(-)
>
> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
> index 1d932ec..1406b6b 100644
> --- a/hw/input/pckbd.c
> +++ b/hw/input/pckbd.c
> @@ -146,7 +146,7 @@ typedef struct KBDState {
>
> qemu_irq irq_kbd;
> qemu_irq irq_mouse;
> - qemu_irq *a20_out;
> + qemu_irq a20_out;
> hwaddr mask;
> } KBDState;
>
> @@ -224,9 +224,7 @@ static void outport_write(KBDState *s, uint32_t val)
> {
> DPRINTF("kbd: write outport=0x%02x\n", val);
> s->outport = val;
> - if (s->a20_out) {
> - qemu_set_irq(*s->a20_out, (val >> 1) & 1);
> - }
> + qemu_set_irq(s->a20_out, (val >> 1) & 1);
> if (!(val & 1)) {
> qemu_system_reset_request();
> }
> @@ -295,15 +293,11 @@ static void kbd_write_command(void *opaque, hwaddr addr,
> kbd_queue(s, s->outport, 0);
> break;
> case KBD_CCMD_ENABLE_A20:
> - if (s->a20_out) {
> - qemu_irq_raise(*s->a20_out);
> - }
> + qemu_irq_raise(s->a20_out);
> s->outport |= KBD_OUT_A20;
> break;
> case KBD_CCMD_DISABLE_A20:
> - if (s->a20_out) {
> - qemu_irq_lower(*s->a20_out);
> - }
> + qemu_irq_lower(s->a20_out);
> s->outport &= ~KBD_OUT_A20;
> break;
> case KBD_CCMD_RESET:
> @@ -507,10 +501,7 @@ void i8042_isa_mouse_fake_event(void *opaque)
>
> void i8042_setup_a20_line(ISADevice *dev, qemu_irq *a20_out)
> {
> - ISAKBDState *isa = I8042(dev);
> - KBDState *s = &isa->kbd;
> -
> - s->a20_out = a20_out;
> + qdev_connect_gpio_out(DEVICE(dev), 0, *a20_out);
> }
>
> static const VMStateDescription vmstate_kbd_isa = {
> @@ -552,6 +543,8 @@ static void i8042_initfn(Object *obj)
> "i8042-data", 1);
> memory_region_init_io(isa_s->io + 1, obj, &i8042_cmd_ops, s,
> "i8042-cmd", 1);
> +
> + qdev_init_gpio_out(DEVICE(obj), &s->a20_out, 1);
While at it, please use qdev_init_gpio_out_named and
qdev_connect_gpio_out_named with "a20" as the name.
Paolo
> }
>
> static void i8042_realizefn(DeviceState *dev, Error **errp)
>
- Re: [Qemu-block] [PATCH 09/13] ICH9 SMB: make TYPE_ICH9_SMB_DEVICE macro public, (continued)
- [Qemu-block] [PATCH 10/13] ICH9 LPC: handle PIC and I/O APIC IRQs as qdev GPIO, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 05/13] Q35: implement property interfece to several parameters, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 08/13] port92: handle A20 IRQ as GPIO, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 13/13] ICH9 LPC: configure PCI IRQs routing internally, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 07/13] pckbd: handle A20 IRQ as GPIO, Efimov Vasily, 2016/06/17
- Re: [Qemu-block] [PATCH 07/13] pckbd: handle A20 IRQ as GPIO,
Paolo Bonzini <=
- [Qemu-block] [PATCH 02/13] pcspk: convert "pit" property type from ptr to link, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 06/13] pc_q35: configure Q35 instance using properties, Efimov Vasily, 2016/06/17
- [Qemu-block] [PATCH 11/13] ICH9 LPC: move call of isa_bus_irqs to 'realize' method, Efimov Vasily, 2016/06/17