All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PULL 3/8] ati-vga: Fix GPIO_MONID register write
Date: Thu, 22 Aug 2019 10:04:57 +0200	[thread overview]
Message-ID: <20190822080503.12063-4-kraxel@redhat.com> (raw)
In-Reply-To: <20190822080503.12063-1-kraxel@redhat.com>

From: BALATON Zoltan <balaton@eik.bme.hu>

Also update bitbang_i2c state when output bits are changed while
enable bits are set. This fixes EDID access by the ATI FCode ROM.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Message-id: 292e70a92b7fbfd9a4120d433dbdcfda4e5f6c3c.1565558093.git.balaton@eik.bme.hu
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/display/ati.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/hw/display/ati.c b/hw/display/ati.c
index 6cdcbef238fe..eb54f6842fed 100644
--- a/hw/display/ati.c
+++ b/hw/display/ati.c
@@ -564,12 +564,15 @@ static void ati_mm_write(void *opaque, hwaddr addr,
                                addr - GPIO_MONID, data, size);
             /*
              * Rage128p accesses DDC used to get EDID via these bits.
-             * Only touch i2c when write overlaps 3rd byte because some
-             * drivers access this reg via multiple partial writes and
-             * without this spurious bits would be sent.
+             * Because some drivers access this via multiple byte writes
+             * we have to be careful when we send bits to avoid spurious
+             * changes in bitbang_i2c state. So only do it when mask is set
+             * and either the enable bits are changed or output bits changed
+             * while enabled.
              */
             if ((s->regs.gpio_monid & BIT(25)) &&
-                addr <= GPIO_MONID + 2 && addr + size > GPIO_MONID + 2) {
+                ((addr <= GPIO_MONID + 2 && addr + size > GPIO_MONID + 2) ||
+                 (addr == GPIO_MONID && (s->regs.gpio_monid & 0x60000)))) {
                 s->regs.gpio_monid = ati_i2c(&s->bbi2c, s->regs.gpio_monid, 1);
             }
         }
-- 
2.18.1



  parent reply	other threads:[~2019-08-22  8:07 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-22  8:04 [Qemu-devel] [PULL 0/8] Vga 20190822 patches Gerd Hoffmann
2019-08-22  8:04 ` [Qemu-devel] [PULL 1/8] ati-vga: Add registers for getting apertures Gerd Hoffmann
2019-08-22  8:04 ` [Qemu-devel] [PULL 2/8] ati-vga: Add some register definitions for debugging Gerd Hoffmann
2019-08-22  8:04 ` Gerd Hoffmann [this message]
2019-08-22  8:04 ` [Qemu-devel] [PULL 4/8] ati-vga: Fix cursor color with guest_hwcursor=true Gerd Hoffmann
2019-08-22  8:04 ` [Qemu-devel] [PULL 5/8] ati-vga: Fix hardware cursor image offset Gerd Hoffmann
2019-08-22  8:05 ` [Qemu-devel] [PULL 6/8] ati-vga: Attempt to handle CRTC offset not exact multiple of stride Gerd Hoffmann
2019-08-22  8:05 ` [Qemu-devel] [PULL 7/8] ati-vga: Add limited support for big endian frame buffer aperture Gerd Hoffmann
2019-08-22  8:05 ` [Qemu-devel] [PULL 8/8] ati-vga: Implement dummy VBlank IRQ Gerd Hoffmann
2019-08-22 16:01 ` [Qemu-devel] [PULL 0/8] Vga 20190822 patches 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=20190822080503.12063-4-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=qemu-devel@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.