From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55188) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5YRh-00042k-PH for qemu-devel@nongnu.org; Wed, 25 May 2016 09:01:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5YRc-0000yi-Kz for qemu-devel@nongnu.org; Wed, 25 May 2016 09:01:56 -0400 References: <1464173896-4088-1-git-send-email-zxq_yx_007@163.com> <1464173896-4088-2-git-send-email-zxq_yx_007@163.com> From: Paolo Bonzini Message-ID: Date: Wed, 25 May 2016 15:01:34 +0200 MIME-Version: 1.0 In-Reply-To: <1464173896-4088-2-git-send-email-zxq_yx_007@163.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/6] hw/char: QOM'ify pl011 model List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xiaoqiang zhao , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, antonynpavlov@gmail.com, robh@kernel.org, qemu-arm@nongnu.org, edgar.iglesias@gmail.com, alistair.francis@xilinx.com, crosthwaite.peter@gmail.com On 25/05/2016 12:58, xiaoqiang zhao wrote: > #define BCM2835_VC_PERI_BASE 0x7e000000 > @@ -106,7 +107,6 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp) > MemoryRegion *ram; > Error *err = NULL; > uint32_t ram_size, vcram_size; > - CharDriverState *chr; > int n; > > obj = object_property_get_link(OBJECT(dev), "ram", &err); > @@ -147,6 +147,7 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp) > sysbus_pass_irq(SYS_BUS_DEVICE(s), SYS_BUS_DEVICE(&s->ic)); > > /* UART0 */ > + qdev_prop_set_chr(DEVICE(&s->uart0), "chardev", serial_hds[0]); > object_property_set_bool(OBJECT(s->uart0), true, "realized", &err); > if (err) { > error_propagate(errp, err); > @@ -158,17 +159,8 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp) > sysbus_connect_irq(s->uart0, 0, > qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ, > INTERRUPT_UART)); > - > /* AUX / UART1 */ > - /* TODO: don't call qemu_char_get_next_serial() here, instead set > - * chardev properties for each uart at the board level, once pl011 > - * (uart0) has been updated to avoid qemu_char_get_next_serial() > - */ > - chr = qemu_char_get_next_serial(); > - if (chr == NULL) { > - chr = qemu_chr_new("bcm2835.uart1", "null", NULL); > - } > - qdev_prop_set_chr(DEVICE(&s->aux), "chardev", chr); > + qdev_prop_set_chr(DEVICE(&s->aux), "chardev", serial_hds[1]); > > object_property_set_bool(OBJECT(&s->aux), true, "realized", &err); > if (err) { > @@ -292,8 +284,6 @@ static void bcm2835_peripherals_class_init(ObjectClass *oc, void *data) > DeviceClass *dc = DEVICE_CLASS(oc); > > dc->realize = bcm2835_peripherals_realize; > - /* Reason: realize() method uses qemu_char_get_next_serial() */ > - dc->cannot_instantiate_with_device_add_yet = true; This must remain, though the reason is now "realize() method uses serial_hds[]". Otherwise, looks good. Thanks, Paolo > }