diff mbox

[v3,16/16] hw/timer: QOM'ify tusb6010

Message ID 1455621027-13927-7-git-send-email-zxq_yx_007@163.com
State New
Headers show

Commit Message

zhao xiao qiang Feb. 16, 2016, 11:10 a.m. UTC
assign tusb6010_init to tusb6010_info.instance_init and drop
the SysBusDeviceClass::init

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/timer/tusb6010.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

Comments

Peter Maydell Feb. 18, 2016, 1:48 p.m. UTC | #1
On 16 February 2016 at 11:10, xiaoqiang zhao <zxq_yx_007@163.com> wrote:
> assign tusb6010_init to tusb6010_info.instance_init and drop
> the SysBusDeviceClass::init
>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

(Again, I didn't review this patch.)

> ---
>  hw/timer/tusb6010.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/hw/timer/tusb6010.c b/hw/timer/tusb6010.c
> index 9f6af90..205127c 100644
> --- a/hw/timer/tusb6010.c
> +++ b/hw/timer/tusb6010.c
> @@ -776,29 +776,27 @@ static void tusb6010_reset(DeviceState *dev)
>      musb_reset(s->musb);
>  }
>
> -static int tusb6010_init(SysBusDevice *sbd)
> +static void tusb6010_init(Object *obj)
>  {
> -    DeviceState *dev = DEVICE(sbd);
> -    TUSBState *s = TUSB(dev);
> +    DeviceState *dev = DEVICE(obj);
> +    TUSBState *s = TUSB(obj);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>
>      s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s);
>      s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s);
> -    memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s,
> +    memory_region_init_io(&s->iomem[1], obj, &tusb_async_ops, s,
>                            "tusb-async", UINT32_MAX);
>      sysbus_init_mmio(sbd, &s->iomem[0]);
>      sysbus_init_mmio(sbd, &s->iomem[1]);
>      sysbus_init_irq(sbd, &s->irq);
>      qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1);
>      s->musb = musb_init(dev, 1);
> -    return 0;
>  }
>
>  static void tusb6010_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = tusb6010_init;
>      dc->reset = tusb6010_reset;
>  }
>
> @@ -806,6 +804,7 @@ static const TypeInfo tusb6010_info = {
>      .name          = TYPE_TUSB6010,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(TUSBState),
> +    .instance_init = tusb6010_init,
>      .class_init    = tusb6010_class_init,
>  };

This patch seems to break "make check":

TEST: tests/device-introspect-test... (pid=6070)
  /arm/device/introspect/list:                                         OK
  /arm/device/introspect/none:                                         OK
  /arm/device/introspect/abstract:                                     OK
  /arm/device/introspect/concrete:                                     **
ERROR:/home/petmay01/linaro/qemu-from-laptop/qemu/qom/object.c:1576:object_get_canonical_path_component:
assertion failed: (obj->parent != NULL)
Broken pipe
FAIL
GTester: last random seed: R02S57c9475befd55374bcf61f6f190cd8ad
(pid=6093)
FAIL: tests/device-introspect-test

thanks
-- PMM
zhao xiao qiang Feb. 18, 2016, 2:27 p.m. UTC | #2
Ok, I will take a look!



2016年2月18日 星期四 +0800 21:48 发件人 peter.maydell@linaro.org  <peter.maydell@linaro.org>:
>On 16 February 2016 at 11:10, xiaoqiang zhao < zxq_yx_007@163.com > wrote:
>> assign tusb6010_init to tusb6010_info.instance_init and drop
>> the SysBusDeviceClass::init
>>
>> Reviewed-by: Peter Maydell < peter.maydell@linaro.org >
>> Signed-off-by: xiaoqiang zhao < zxq_yx_007@163.com >
>
>(Again, I didn't review this patch.)
>
>> ---
>>  hw/timer/tusb6010.c | 13 ++++++-------
>>  1 file changed, 6 insertions(+), 7 deletions(-)
>>
>> diff --git a/hw/timer/tusb6010.c b/hw/timer/tusb6010.c
>> index 9f6af90..205127c 100644
>> --- a/hw/timer/tusb6010.c
>> +++ b/hw/timer/tusb6010.c
>> @@ -776,29 +776,27 @@ static void tusb6010_reset(DeviceState *dev)
>>      musb_reset(s->musb);
>>  }
>>
>> -static int tusb6010_init(SysBusDevice *sbd)
>> +static void tusb6010_init(Object *obj)
>>  {
>> -    DeviceState *dev = DEVICE(sbd);
>> -    TUSBState *s = TUSB(dev);
>> +    DeviceState *dev = DEVICE(obj);
>> +    TUSBState *s = TUSB(obj);
>> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>>
>>      s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s);
>>      s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s);
>> -    memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s,
>> +    memory_region_init_io(&s->iomem[1], obj, &tusb_async_ops, s,
>>                            "tusb-async", UINT32_MAX);
>>      sysbus_init_mmio(sbd, &s->iomem[0]);
>>      sysbus_init_mmio(sbd, &s->iomem[1]);
>>      sysbus_init_irq(sbd, &s->irq);
>>      qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1);
>>      s->musb = musb_init(dev, 1);
>> -    return 0;
>>  }
>>
>>  static void tusb6010_class_init(ObjectClass *klass, void *data)
>>  {
>>      DeviceClass *dc = DEVICE_CLASS(klass);
>> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>>
>> -    k->init = tusb6010_init;
>>      dc->reset = tusb6010_reset;
>>  }
>>
>> @@ -806,6 +804,7 @@ static const TypeInfo tusb6010_info = {
>>      .name          = TYPE_TUSB6010,
>>      .parent        = TYPE_SYS_BUS_DEVICE,
>>      .instance_size = sizeof(TUSBState),
>> +    .instance_init = tusb6010_init,
>>      .class_init    = tusb6010_class_init,
>>  };
>
>This patch seems to break "make check":
>
>TEST: tests/device-introspect-test... (pid=6070)
>  /arm/device/introspect/list:                                         OK
>  /arm/device/introspect/none:                                         OK
>  /arm/device/introspect/abstract:                                     OK
>  /arm/device/introspect/concrete:                                     **
>ERROR:/home/petmay01/linaro/qemu-from-laptop/qemu/qom/object.c:1576:object_get_canonical_path_component:
>assertion failed: (obj->parent != NULL)
>Broken pipe
>FAIL
>GTester: last random seed: R02S57c9475befd55374bcf61f6f190cd8ad
>(pid=6093)
>FAIL: tests/device-introspect-test
>
>thanks
>-- PMM
zhao xiao qiang Feb. 19, 2016, 11:02 a.m. UTC | #3
在 2016年02月18日 21:48, Peter Maydell 写道:
> On 16 February 2016 at 11:10, xiaoqiang zhao <zxq_yx_007@163.com> wrote:
>> assign tusb6010_init to tusb6010_info.instance_init and drop
>> the SysBusDeviceClass::init
>>
>> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
> (Again, I didn't review this patch.)
>
>> ---
>>   hw/timer/tusb6010.c | 13 ++++++-------
>>   1 file changed, 6 insertions(+), 7 deletions(-)
>>
>> diff --git a/hw/timer/tusb6010.c b/hw/timer/tusb6010.c
>> index 9f6af90..205127c 100644
>> --- a/hw/timer/tusb6010.c
>> +++ b/hw/timer/tusb6010.c
>> @@ -776,29 +776,27 @@ static void tusb6010_reset(DeviceState *dev)
>>       musb_reset(s->musb);
>>   }
>>
>> -static int tusb6010_init(SysBusDevice *sbd)
>> +static void tusb6010_init(Object *obj)
>>   {
>> -    DeviceState *dev = DEVICE(sbd);
>> -    TUSBState *s = TUSB(dev);
>> +    DeviceState *dev = DEVICE(obj);
>> +    TUSBState *s = TUSB(obj);
>> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>>
>>       s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s);
>>       s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s);
>> -    memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s,
>> +    memory_region_init_io(&s->iomem[1], obj, &tusb_async_ops, s,
>>                             "tusb-async", UINT32_MAX);
>>       sysbus_init_mmio(sbd, &s->iomem[0]);
>>       sysbus_init_mmio(sbd, &s->iomem[1]);
>>       sysbus_init_irq(sbd, &s->irq);
>>       qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1);
>>       s->musb = musb_init(dev, 1);
>> -    return 0;
>>   }
>>
>>   static void tusb6010_class_init(ObjectClass *klass, void *data)
>>   {
>>       DeviceClass *dc = DEVICE_CLASS(klass);
>> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>>
>> -    k->init = tusb6010_init;
>>       dc->reset = tusb6010_reset;
>>   }
>>
>> @@ -806,6 +804,7 @@ static const TypeInfo tusb6010_info = {
>>       .name          = TYPE_TUSB6010,
>>       .parent        = TYPE_SYS_BUS_DEVICE,
>>       .instance_size = sizeof(TUSBState),
>> +    .instance_init = tusb6010_init,
>>       .class_init    = tusb6010_class_init,
>>   };
> This patch seems to break "make check":
>
> TEST: tests/device-introspect-test... (pid=6070)
>    /arm/device/introspect/list:                                         OK
>    /arm/device/introspect/none:                                         OK
>    /arm/device/introspect/abstract:                                     OK
>    /arm/device/introspect/concrete:                                     **
> ERROR:/home/petmay01/linaro/qemu-from-laptop/qemu/qom/object.c:1576:object_get_canonical_path_component:
> assertion failed: (obj->parent != NULL)
> Broken pipe
> FAIL
> GTester: last random seed: R02S57c9475befd55374bcf61f6f190cd8ad
> (pid=6093)
> FAIL: tests/device-introspect-test
>
> thanks
> -- PMM
Hi: peter
After some debug, I found

  s->musb = musb_init(dev, 1);

must be called in SysBus' init. Otherwise it will break the
  "/arm/device/introspect/concrete" check test.
Peter Maydell Feb. 19, 2016, 11:37 a.m. UTC | #4
On 19 February 2016 at 11:02, hitmoon <zxq_yx_007@163.com> wrote:
> Hi: peter
> After some debug, I found
>
>  s->musb = musb_init(dev, 1);
>
> must be called in SysBus' init. Otherwise it will break the
>  "/arm/device/introspect/concrete" check test.

Mmm, I thought this might be related to the MUSB code.
I think this device cannot be converted properly to current
QOM standards until the MUSB code which it relies on has
been converted first.

(Also, tusb6010 is a USB controller so it shouldn't be in
hw/timer in the first place...)

thanks
-- PMM
zhao xiao qiang Feb. 19, 2016, 11:49 a.m. UTC | #5
> 在 2016年2月19日,19:37,Peter Maydell <peter.maydell@linaro.org> 写道:
> 
> Mmm, I thought this might be related to the MUSB code.
> I think this device cannot be converted properly to current
> QOM standards until the MUSB code which it relies on has
> been converted first.

Reasonable !
diff mbox

Patch

diff --git a/hw/timer/tusb6010.c b/hw/timer/tusb6010.c
index 9f6af90..205127c 100644
--- a/hw/timer/tusb6010.c
+++ b/hw/timer/tusb6010.c
@@ -776,29 +776,27 @@  static void tusb6010_reset(DeviceState *dev)
     musb_reset(s->musb);
 }
 
-static int tusb6010_init(SysBusDevice *sbd)
+static void tusb6010_init(Object *obj)
 {
-    DeviceState *dev = DEVICE(sbd);
-    TUSBState *s = TUSB(dev);
+    DeviceState *dev = DEVICE(obj);
+    TUSBState *s = TUSB(obj);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
 
     s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s);
     s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s);
-    memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s,
+    memory_region_init_io(&s->iomem[1], obj, &tusb_async_ops, s,
                           "tusb-async", UINT32_MAX);
     sysbus_init_mmio(sbd, &s->iomem[0]);
     sysbus_init_mmio(sbd, &s->iomem[1]);
     sysbus_init_irq(sbd, &s->irq);
     qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1);
     s->musb = musb_init(dev, 1);
-    return 0;
 }
 
 static void tusb6010_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = tusb6010_init;
     dc->reset = tusb6010_reset;
 }
 
@@ -806,6 +804,7 @@  static const TypeInfo tusb6010_info = {
     .name          = TYPE_TUSB6010,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(TUSBState),
+    .instance_init = tusb6010_init,
     .class_init    = tusb6010_class_init,
 };