All of lore.kernel.org
 help / color / mirror / Atom feed
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	QEMU Trivial <qemu-trivial@nongnu.org>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH v2 05/14] sm501: Add emulation of chip connected via PCI
Date: Thu, 2 Mar 2017 21:13:19 +0100 (CET)	[thread overview]
Message-ID: <alpine.BSF.2.20.1703022107450.83701@zero.eik.bme.hu> (raw)
In-Reply-To: <CAFEAcA-G8_yOjmHBb9S+ErCoxSAje4gr1S0Y=FQjwCsxK+GYGw@mail.gmail.com>

On Thu, 2 Mar 2017, Peter Maydell wrote:
> On 25 February 2017 at 18:31, BALATON Zoltan <balaton@eik.bme.hu> wrote:
>> Only the display controller part is created automatically on PCI
>>
>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>> ---
>>
>> v2: Split off removing dependency on base address to separate patch
>>
>>  hw/display/sm501.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 52 insertions(+)
>>
>> diff --git a/hw/display/sm501.c b/hw/display/sm501.c
>> index 1cda127..d9219bd 100644
>> --- a/hw/display/sm501.c
>> +++ b/hw/display/sm501.c
>> @@ -31,6 +31,7 @@
>>  #include "ui/console.h"
>>  #include "hw/devices.h"
>>  #include "hw/sysbus.h"
>> +#include "hw/pci/pci.h"
>>  #include "qemu/range.h"
>>  #include "ui/pixel_ops.h"
>>  #include "exec/address-spaces.h"
>> @@ -1507,9 +1508,60 @@ static const TypeInfo sm501_sysbus_info = {
>>      .class_init    = sm501_sysbus_class_init,
>>  };
>>
>> +#define TYPE_PCI_SM501 "sm501"
>> +#define PCI_SM501(obj) OBJECT_CHECK(SM501PCIState, (obj), TYPE_PCI_SM501)
>> +
>> +typedef struct {
>> +    /*< private >*/
>> +    PCIDevice parent_obj;
>> +    /*< public >*/
>> +    SM501State state;
>> +    uint32_t vram_size;
>> +} SM501PCIState;
>> +
>> +static void sm501_realize_pci(PCIDevice *dev, Error **errp)
>> +{
>> +    SM501PCIState *s = PCI_SM501(dev);
>> +
>> +    sm501_init(&s->state, DEVICE(dev), s->vram_size);
>> +    pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY,
>> +                     &s->state.local_mem_region);
>> +    pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_MEMORY,
>> +                     &s->state.mmio_region);
>> +}
>> +
>> +static Property sm501_pci_properties[] = {
>> +    DEFINE_PROP_UINT32("vram-size", SM501PCIState, vram_size,
>> +                       64 * 1024 * 1024),
>
> Something needs to sanity check this value, because it's
> user settable in the PCI device. (In the sysbus version you
> can only create it from board code, and we can assume board
> code doesn't pass us silly values.)
>
> Or you could just hardcode the PCI device to always be 64MB,
> I guess :-)

Maybe a check could be added to get_local_mem_size_index(). What should it 
do for invalid values?

>> +    DEFINE_PROP_END_OF_LIST(),
>> +};
>> +
>> +static void sm501_pci_class_init(ObjectClass *klass, void *data)
>> +{
>> +    DeviceClass *dc = DEVICE_CLASS(klass);
>> +    PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>> +
>> +    k->realize = sm501_realize_pci;
>> +    k->vendor_id = 0x126f;
>> +    k->device_id = 0x0501;
>
> We could define some constants in include/hw/pci/pci_ids.h
> for these, I suppose.

Should I add that as well? Should it be in this or separate patch?

>> +    k->class_id = PCI_CLASS_DISPLAY_OTHER;
>> +    set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
>> +    dc->desc = "SM501 Display Controller";
>> +    dc->props = sm501_pci_properties;
>> +    dc->hotpluggable = false;
>
> This needs a reset and vmsd as well.

Why? OK reset makes sense but if this is only used in sh and I think that 
might have other devices that don't support migration then adding a vmsd 
here only achieves that if we ever change anything in the state the vmsd 
needs to be changed, compatibility ensured, etc. And that's for nothing if 
the sh machine cannot be migrated anyway. There seems to be a lot of 
boilerplate already, it may exceed the actual code at some point.

But I can add vmstate for sysbus version if you think it's needed, I just 
don't see the point.

>> +}
>> +
>> +static const TypeInfo sm501_pci_info = {
>> +    .name          = TYPE_PCI_SM501,
>> +    .parent        = TYPE_PCI_DEVICE,
>> +    .instance_size = sizeof(SM501PCIState),
>> +    .class_init    = sm501_pci_class_init,
>> +};
>> +
>>  static void sm501_register_types(void)
>>  {
>>      type_register_static(&sm501_sysbus_info);
>> +    type_register_static(&sm501_pci_info);
>>  }
>>
>>  type_init(sm501_register_types)
>> --
>> 2.7.4
>
> thanks
> -- PMM
>
>

  reply	other threads:[~2017-03-02 20:13 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-26  0:17 [Qemu-devel] [PATCH v2 00/14] Improvements for SM501 display controller emulation BALATON Zoltan
2017-02-25 18:23 ` [Qemu-devel] [PATCH v2 04/14] sm501: Get rid of base address in draw_hwc_line BALATON Zoltan
2017-03-02 19:14   ` Peter Maydell
2017-03-02 20:06     ` BALATON Zoltan
2017-02-25 18:31 ` [Qemu-devel] [PATCH v2 05/14] sm501: Add emulation of chip connected via PCI BALATON Zoltan
2017-03-02 19:22   ` Peter Maydell
2017-03-02 20:13     ` BALATON Zoltan [this message]
2017-03-02 20:43       ` Peter Maydell
2017-03-03  1:53         ` BALATON Zoltan
2017-02-25 18:46 ` [Qemu-devel] [PATCH v2 07/14] sm501: Fix device endianness BALATON Zoltan
2017-03-02 21:04   ` Peter Maydell
2017-03-03  2:15     ` BALATON Zoltan
2017-03-03 18:49       ` Peter Maydell
2017-03-03 20:11         ` BALATON Zoltan
2017-03-04 12:40           ` Peter Maydell
2017-03-04 22:58             ` BALATON Zoltan
2017-03-06 10:32               ` Peter Maydell
2017-03-06 18:46                 ` BALATON Zoltan
2017-02-25 19:19 ` [Qemu-devel] [PATCH v2 09/14] sm501: Misc clean ups BALATON Zoltan
2017-03-02 19:35   ` Peter Maydell
2017-02-25 19:25 ` [Qemu-devel] [PATCH v2 10/14] sm501: Add support for panel layer BALATON Zoltan
2017-03-02 19:44   ` Peter Maydell
2017-03-02 20:15     ` BALATON Zoltan
2017-03-02 20:46       ` Peter Maydell
2017-02-25 21:47 ` [Qemu-devel] [PATCH v2 12/14] sm501: Implement reading 2D engine registers BALATON Zoltan
2017-03-02 20:00   ` Peter Maydell
2017-03-02 20:22     ` BALATON Zoltan
2017-03-02 20:50       ` Peter Maydell
2017-02-25 23:53 ` [Qemu-devel] [PATCH v2 13/14] sm501: Add reset function and vmstate descriptor BALATON Zoltan
2017-03-02 19:51   ` Peter Maydell
2017-03-02 20:18     ` BALATON Zoltan
2017-03-02 20:49       ` Peter Maydell
2017-03-02 20:55         ` BALATON Zoltan
2017-03-02 21:05           ` BALATON Zoltan
2017-03-02 21:06           ` Peter Maydell
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 02/14] sm501: Use defines instead of constants where available BALATON Zoltan
2017-03-02 18:53   ` Peter Maydell
2017-03-02 19:03     ` Peter Maydell
2017-03-02 19:58       ` BALATON Zoltan
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 14/14] ppc: Add SM501 device in config for ppc and ppcemb targets BALATON Zoltan
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 06/14] sm501: Add missing arbitration control register BALATON Zoltan
2017-03-02 20:08   ` Peter Maydell
2017-03-02 20:09     ` Peter Maydell
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 11/14] sm501: Add some more missing registers BALATON Zoltan
2017-03-02 19:59   ` Peter Maydell
2017-03-02 20:21     ` BALATON Zoltan
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 03/14] sm501: QOMify BALATON Zoltan
2017-03-02 19:55   ` Peter Maydell
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 08/14] sm501: Fix hardware cursor BALATON Zoltan
2017-03-02 19:35   ` Peter Maydell
2017-02-26  0:31 ` [Qemu-devel] [PATCH v2 01/14] sm501: Fixed code style and a few typos in comments BALATON Zoltan
2017-02-27 18:11 ` [Qemu-devel] [PATCH v2 00/14] Improvements for SM501 display controller emulation Michael Tokarev
2017-02-27 19:03   ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.BSF.2.20.1703022107450.83701@zero.eik.bme.hu \
    --to=balaton@eik.bme.hu \
    --cc=aurelien@aurel32.net \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.