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 04/14] sm501: Get rid of base address in draw_hwc_line
Date: Thu, 2 Mar 2017 21:06:36 +0100 (CET) [thread overview]
Message-ID: <alpine.BSF.2.20.1703022059050.83701@zero.eik.bme.hu> (raw)
In-Reply-To: <CAFEAcA-01wdWYs_F-Maxoq7Wa=Xo1J1iaheEQFUdVL1G4PDG7w@mail.gmail.com>
On Thu, 2 Mar 2017, Peter Maydell wrote:
> On 25 February 2017 at 18:23, BALATON Zoltan <balaton@eik.bme.hu> wrote:
>> Do not use the base address to access data in local memory. This is in
>> preparation to allow chip connected via PCI where base address depends
>> on where the BAR is mapped so it will be unknown.
>>
>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>> ---
>> hw/display/sm501.c | 6 ++----
>> hw/display/sm501_template.h | 8 ++++----
>> 2 files changed, 6 insertions(+), 8 deletions(-)
>>
>> diff --git a/hw/display/sm501.c b/hw/display/sm501.c
>> index 22cac97..1cda127 100644
>> --- a/hw/display/sm501.c
>> +++ b/hw/display/sm501.c
>> @@ -460,7 +460,6 @@ typedef struct SM501State {
>> QemuConsole *con;
>>
>> /* status & internal resources */
>> - hwaddr base;
>> uint32_t local_mem_size_index;
>> uint8_t *local_mem;
>> MemoryRegion local_mem_region;
>> @@ -1400,10 +1399,9 @@ static const GraphicHwOps sm501_ops = {
>> .gfx_update = sm501_update_display,
>> };
>>
>> -static void sm501_init(SM501State *s, DeviceState *dev, uint32_t base,
>> +static void sm501_init(SM501State *s, DeviceState *dev,
>> uint32_t local_mem_bytes)
>> {
>> - s->base = base;
>> s->local_mem_size_index = get_local_mem_size_index(local_mem_bytes);
>> SM501_DPRINTF("sm501 local mem size=%x. index=%d\n", get_local_mem_size(s),
>> s->local_mem_size_index);
>> @@ -1461,7 +1459,7 @@ static void sm501_realize_sysbus(DeviceState *dev, Error **errp)
>> SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
>> DeviceState *usb_dev;
>>
>> - sm501_init(&s->state, dev, s->base, s->vram_size);
>> + sm501_init(&s->state, dev, s->vram_size);
>> sysbus_init_mmio(sbd, &s->state.local_mem_region);
>> sysbus_init_mmio(sbd, &s->state.mmio_region);
>>
>> diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h
>> index 16e500b..832ee61 100644
>> --- a/hw/display/sm501_template.h
>> +++ b/hw/display/sm501_template.h
>> @@ -103,13 +103,13 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(SM501State *s, int crt,
>> uint8_t *palette, int c_y, uint8_t *d, int width)
>> {
>> int x, i;
>> - uint8_t bitset = 0;
>> + uint8_t *pixval, bitset = 0;
>>
>> /* get hardware cursor pattern */
>> uint32_t cursor_addr = get_hwc_address(s, crt);
>> assert(0 <= c_y && c_y < SM501_HWC_HEIGHT);
>> cursor_addr += SM501_HWC_WIDTH * c_y / 4; /* 4 pixels per byte */
>> - cursor_addr += s->base;
>> + pixval = s->local_mem + cursor_addr;
>>
>> /* get cursor position */
>> x = get_hwc_x(s, crt);
>> @@ -120,8 +120,8 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(SM501State *s, int crt,
>>
>> /* get pixel value */
>> if (i % 4 == 0) {
>> - bitset = ldub_phys(&address_space_memory, cursor_addr);
>> - cursor_addr++;
>> + bitset = ldub_p(pixval);
>> + pixval++;
>> }
>> v = bitset & 3;
>> bitset >>= 2;
>> --
>> 2.7.4
>
> (The data sheet suggests that the hardware cursor can also be in
> "external memory", but it looks like we never supported that
> previously and I can't figure out how it is supposed to work either.
Yes and as you say this was not implemented before and I haven't
implemented it because no known client seems to use this. If found to be
needed later, the Fix hardware cursor patch in this series cleans this up
so the cursor data address is passed from the caller where it could
possibly pass the external address that can be handled in get_hwc_address
which is also changed to return the address instead of offset so
dependency on local_memory is removed.
> So no problem with restricting it to be in the local video ram blob.)
>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>
> thanks
> -- PMM
>
>
next prev parent reply other threads:[~2017-03-02 20:06 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 [this message]
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
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.1703022059050.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.