Skip to content

Commit

Permalink
hw/input/lm832x: Convert reset handler to DeviceReset
Browse files Browse the repository at this point in the history
The LM8323 key-scan controller is a I2C device, it will be reset
when the I2C bus it stands on is reset.

Convert its reset handler into a proper Device reset method.

Reviewed-by: Li Qiang <liq3ea@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20191010131527.32513-8-philmd@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
  • Loading branch information
philmd authored and ehabkost committed Oct 15, 2019
1 parent 9dc1a76 commit f7030d0
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions hw/input/lm832x.c
Expand Up @@ -24,7 +24,6 @@
#include "migration/vmstate.h"
#include "qemu/module.h"
#include "qemu/timer.h"
#include "sysemu/reset.h"
#include "ui/console.h"

#define TYPE_LM8323 "lm8323"
Expand Down Expand Up @@ -94,8 +93,10 @@ static void lm_kbd_gpio_update(LM823KbdState *s)
{
}

static void lm_kbd_reset(LM823KbdState *s)
static void lm_kbd_reset(DeviceState *dev)
{
LM823KbdState *s = LM8323(dev);

s->config = 0x80;
s->status = INT_NOINIT;
s->acttime = 125;
Expand Down Expand Up @@ -273,7 +274,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)

case LM832x_CMD_RESET:
if (value == 0xaa)
lm_kbd_reset(s);
lm_kbd_reset(DEVICE(s));
else
lm_kbd_error(s, ERR_BADPAR);
s->reg = LM832x_GENERAL_ERROR;
Expand Down Expand Up @@ -476,10 +477,6 @@ static void lm8323_realize(DeviceState *dev, Error **errp)
s->pwm.tm[1] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm1_tick, s);
s->pwm.tm[2] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm2_tick, s);
qdev_init_gpio_out(dev, &s->nirq, 1);

lm_kbd_reset(s);

qemu_register_reset((void *) lm_kbd_reset, s);
}

void lm832x_key_event(DeviceState *dev, int key, int state)
Expand Down Expand Up @@ -507,6 +504,7 @@ static void lm8323_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
I2CSlaveClass *k = I2C_SLAVE_CLASS(klass);

dc->reset = lm_kbd_reset;
dc->realize = lm8323_realize;
k->event = lm_i2c_event;
k->recv = lm_i2c_rx;
Expand Down

0 comments on commit f7030d0

Please sign in to comment.