Am 24.07.2013 09:48, schrieb Andreas Färber:
> Signed-off-by: Andreas Färber
> ---
> hw/arm/spitz.c | 17 ++---
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
> index 0bf5c5c..70f23b3 100644
> --- a/hw/arm/spitz.c
> +++ b/hw/arm/spitz.c
> @@ -215,8 +215,13 @@ static const int spitz_gpiomap[5] = {
> SPITZ_GPIO_SWA, SPITZ_GPIO_SWB,
> };
>
> +#define TYPE_SPITZ_KEYBOARD "spitz-keyboard"
> +#define SPITZ_KEYBOARD(obj) \
> +OBJECT_CHECK(SpitzKeyboardState, (obj), TYPE_SPITZ_KEYBOARD)
> +
> typedef struct {
> -SysBusDevice busdev;
> +SysBusDevice parent_obj;
> +
> qemu_irq sense[SPITZ_KEY_SENSE_NUM];
> qemu_irq gpiomap[5];
> int keymap[0x80];
> @@ -461,8 +466,8 @@ static void spitz_keyboard_register(PXA2xxState *cpu)
> DeviceState *dev;
> SpitzKeyboardState *s;
>
> -dev = sysbus_create_simple("spitz-keyboard", -1, NULL);
> -s = FROM_SYSBUS(SpitzKeyboardState, SYS_BUS_DEVICE(dev));
> +dev = sysbus_create_simple(TYPE_SPITZ_KEYBOARD, -1, NULL);
> +s = SPITZ_KEYBOARD(dev);
>
> for (i = 0; i < SPITZ_KEY_SENSE_NUM; i ++)
> qdev_connect_gpio_out(dev, i, qdev_get_gpio_in(cpu->gpio,
> spitz_gpio_key_sense[i]));
> @@ -487,11 +492,9 @@ static void spitz_keyboard_register(PXA2xxState *cpu)
>
> static int spitz_keyboard_init(SysBusDevice *dev)
> {
> -SpitzKeyboardState *s;
> +SpitzKeyboardState *s = SPITZ_KEYBOARD(dev);
> int i, j;
>
> -s = FROM_SYSBUS(SpitzKeyboardState, dev);
> -
> for (i = 0; i < 0x80; i ++)
> s->keymap[i] = -1;
> for (i = 0; i < SPITZ_KEY_SENSE_NUM + 1; i ++)
[snip]
Needs the following addition.
Andreas
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index 70f23b3..34f9582 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -490,8 +490,9 @@ static void spitz_keyboard_register(PXA2xxState *cpu)
qemu_add_kbd_event_handler(spitz_keyboard_handler, s);
}
-static int spitz_keyboard_init(SysBusDevice *dev)
+static int spitz_keyboard_init(SysBusDevice *sbd)
{
+DeviceState *dev = DEVICE(sbd);
SpitzKeyboardState *s = SPITZ_KEYBOARD(dev);
int i, j;
@@ -505,8 +506,8 @@ static int spitz_keyboard_init(SysBusDevice *dev)
spitz_keyboard_pre_map(s);
s->kbdtimer = qemu_new_timer_ns(vm_clock, spitz_keyboard_tick, s);
-qdev_init_gpio_in(&dev->qdev, spitz_keyboard_strobe,
SPITZ_KEY_STROBE_NUM);
-qdev_init_gpio_out(&dev->qdev, s->sense, SPITZ_KEY_SENSE_NUM);
+qdev_init_gpio_in(dev, spitz_keyboard_strobe, SPITZ_KEY_STROBE_NUM);
+qdev_init_gpio_out(dev, s->sense, SPITZ_KEY_SENSE_NUM);
return 0;
}
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg