lm832x: Take DeviceState pointer in lm832x_key_event()
Since lm832x has been qdev'ified, its users will generally have a DeviceState pointer rather than an i2c_slave pointer, so adjust lm832x_key_event's prototype to suit. This allows the n810 (its only user) to actually pass a correct pointer to it rather than NULL. The effect is that we no longer segfault when a key is pressed. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
This commit is contained in:
parent
77831c204f
commit
c4f05c8cf7
2
hw/i2c.h
2
hw/i2c.h
|
@ -72,6 +72,6 @@ void wm8750_set_bclk_in(void *opaque, int new_hz);
|
||||||
void tmp105_set(i2c_slave *i2c, int temp);
|
void tmp105_set(i2c_slave *i2c, int temp);
|
||||||
|
|
||||||
/* lm832x.c */
|
/* lm832x.c */
|
||||||
void lm832x_key_event(i2c_slave *i2c, int key, int state);
|
void lm832x_key_event(DeviceState *dev, int key, int state);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -474,9 +474,9 @@ static int lm8323_init(i2c_slave *i2c)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lm832x_key_event(struct i2c_slave *i2c, int key, int state)
|
void lm832x_key_event(DeviceState *dev, int key, int state)
|
||||||
{
|
{
|
||||||
LM823KbdState *s = (LM823KbdState *) i2c;
|
LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, I2C_SLAVE_FROM_QDEV(dev));
|
||||||
|
|
||||||
if ((s->status & INT_ERROR) && (s->error & ERR_FIFOOVR))
|
if ((s->status & INT_ERROR) && (s->error & ERR_FIFOOVR))
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct n800_s {
|
||||||
i2c_bus *i2c;
|
i2c_bus *i2c;
|
||||||
|
|
||||||
int keymap[0x80];
|
int keymap[0x80];
|
||||||
i2c_slave *kbd;
|
DeviceState *kbd;
|
||||||
|
|
||||||
TUSBState *usb;
|
TUSBState *usb;
|
||||||
void *retu;
|
void *retu;
|
||||||
|
@ -362,7 +362,6 @@ static int n810_keys[0x80] = {
|
||||||
static void n810_kbd_setup(struct n800_s *s)
|
static void n810_kbd_setup(struct n800_s *s)
|
||||||
{
|
{
|
||||||
qemu_irq kbd_irq = qdev_get_gpio_in(s->cpu->gpio, N810_KEYBOARD_GPIO);
|
qemu_irq kbd_irq = qdev_get_gpio_in(s->cpu->gpio, N810_KEYBOARD_GPIO);
|
||||||
DeviceState *dev;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 0x80; i ++)
|
for (i = 0; i < 0x80; i ++)
|
||||||
|
@ -375,8 +374,8 @@ static void n810_kbd_setup(struct n800_s *s)
|
||||||
|
|
||||||
/* Attach the LM8322 keyboard to the I2C bus,
|
/* Attach the LM8322 keyboard to the I2C bus,
|
||||||
* should happen in n8x0_i2c_setup and s->kbd be initialised here. */
|
* should happen in n8x0_i2c_setup and s->kbd be initialised here. */
|
||||||
dev = i2c_create_slave(s->i2c, "lm8323", N810_LM8323_ADDR);
|
s->kbd = i2c_create_slave(s->i2c, "lm8323", N810_LM8323_ADDR);
|
||||||
qdev_connect_gpio_out(dev, 0, kbd_irq);
|
qdev_connect_gpio_out(s->kbd, 0, kbd_irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LCD MIPI DBI-C controller (URAL) */
|
/* LCD MIPI DBI-C controller (URAL) */
|
||||||
|
|
Loading…
Reference in New Issue