qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 3/4] hw/char: QOM'ify lm32_juart.c


From: xiaoqiang zhao
Subject: Re: [Qemu-devel] [PATCH v5 3/4] hw/char: QOM'ify lm32_juart.c
Date: Mon, 23 May 2016 19:34:54 +0800


> 在 2016年5月23日,19:18,Michael Walle <address@hidden> 写道:
> 
> Am 2016-05-23 12:24, schrieb xiaoqiang zhao:
>> * Drop the old SysBus init function
>> * Call qemu_chr_add_handlers in the realize callback
>> * Use qdev chardev prop instead of qemu_char_get_next_serial
>> Signed-off-by: xiaoqiang zhao <address@hidden>
>> ---
>> hw/char/lm32_juart.c | 17 ++++++++---------
>> hw/lm32/lm32.h       |  2 ++
>> 2 files changed, 10 insertions(+), 9 deletions(-)
>> diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
>> index 5bf8acf..28c2cf7 100644
>> --- a/hw/char/lm32_juart.c
>> +++ b/hw/char/lm32_juart.c
>> @@ -114,17 +114,13 @@ static void juart_reset(DeviceState *d)
>>     s->jrx = 0;
>> }
>> -static int lm32_juart_init(SysBusDevice *dev)
>> +static void lm32_juart_realize(DeviceState *dev, Error **errp)
>> {
>>     LM32JuartState *s = LM32_JUART(dev);
>> -    /* FIXME use a qdev chardev prop instead of qemu_char_get_next_serial() 
>> */
>> -    s->chr = qemu_char_get_next_serial();
>>     if (s->chr) {
>>         qemu_chr_add_handlers(s->chr, juart_can_rx, juart_rx, juart_event, 
>> s);
>>     }
>> -
>> -    return 0;
>> }
>> static const VMStateDescription vmstate_lm32_juart = {
>> @@ -138,16 +134,19 @@ static const VMStateDescription vmstate_lm32_juart = {
>>     }
>> };
>> +static Property lm32_juart_properties[] = {
>> +    DEFINE_PROP_CHR("chardev", LM32JuartState, chr),
>> +    DEFINE_PROP_END_OF_LIST(),
>> +};
>> +
>> static void lm32_juart_class_init(ObjectClass *klass, void *data)
>> {
>>     DeviceClass *dc = DEVICE_CLASS(klass);
>> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>> -    k->init = lm32_juart_init;
>>     dc->reset = juart_reset;
>>     dc->vmsd = &vmstate_lm32_juart;
>> -    /* Reason: init() method uses qemu_char_get_next_serial() */
>> -    dc->cannot_instantiate_with_device_add_yet = true;
>> +    dc->props = lm32_juart_properties;
>> +    dc->realize = lm32_juart_realize;
>> }
>> static const TypeInfo lm32_juart_info = {
>> diff --git a/hw/lm32/lm32.h b/hw/lm32/lm32.h
>> index 18aa6fd..6761518 100644
>> --- a/hw/lm32/lm32.h
>> +++ b/hw/lm32/lm32.h
>> @@ -2,6 +2,7 @@
>> #define HW_LM32_H 1
>> #include "hw/char/lm32_juart.h"
>> +#include "sysemu/sysemu.h"
>> static inline DeviceState *lm32_pic_init(qemu_irq cpu_irq)
>> {
>> @@ -21,6 +22,7 @@ static inline DeviceState *lm32_juart_init(void)
>>     DeviceState *dev;
>>     dev = qdev_create(NULL, TYPE_LM32_JUART);
>> +    qdev_prop_set_chr(dev, "chardev", serial_hds[1]);
> 
> Please make the serial_hds[1] a parameter to this function, like you did with 
> the lm32_uart_create(). Then the serial_hds[] assignements will be in one 
> place in lm32_boards.c.
> 
> Mhh, i guess for this to work with the milkymist board, milkymist-uart 
> (hw/char/milkymist-uart.c) has to be converted too, because it still uses the 
> qemu_char_get_next_serial() function. So if you like you may also convert 
> this model. If not, I'll do it myself after picking your patches.
> 
>>     qdev_init_nofail(dev);
>>     return dev;
> 
> -michael

Yes, i will do it.  Happy to contribute ;-)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]