diff options
author | Bin Meng | 2023-07-23 12:40:27 +0800 |
---|---|---|
committer | Anatolij Gustschin | 2023-08-01 13:31:29 +0200 |
commit | ffe1c8379e824007a7341381e20e9346c7a5c1ec (patch) | |
tree | 2d7b8e62572f7a1791894182b48146c109f0c4bb /drivers/video/bochs.c | |
parent | caae795a1c6a205498470e9dfc2725ae3052ad12 (diff) |
video: bochs: Avoid using IO instructions to access VGA IO port
At present the driver uses IO instructions to access the legacy
VGA IO ports, which unfortunately limits the driver to work only
on x86. It turns out the IO instruction is not necessary as Bochs
VGA card remaps the legacy VGA IO ports (0x3c0 -> 0x3df) to its
memory mapped register space from offset 0x400.
Update the driver to use MMIO access for VGA IO port.
Signed-off-by: Bin Meng <bmeng@tinylab.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org> # qemu-x86_64
Diffstat (limited to 'drivers/video/bochs.c')
-rw-r--r-- | drivers/video/bochs.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/video/bochs.c b/drivers/video/bochs.c index 2d4526c7143..5923ff81c65 100644 --- a/drivers/video/bochs.c +++ b/drivers/video/bochs.c @@ -27,9 +27,9 @@ static int bochs_read(void *mmio, int index) return readw(mmio + MMIO_BASE + index * 2); } -static void bochs_vga_write(uint8_t val) +static void bochs_vga_write(void *mmio, int index, uint8_t val) { - outb(val, VGA_ATT_W); + writeb(val, mmio + VGA_BASE + index); } static int bochs_init_fb(struct udevice *dev) @@ -79,7 +79,7 @@ static int bochs_init_fb(struct udevice *dev) bochs_write(mmio, INDEX_ENABLE, ENABLED | LFB_ENABLED); /* disable blanking */ - bochs_vga_write(VGA_AR_ENABLE_DISPLAY); + bochs_vga_write(mmio, VGA_ATT_W - VGA_INDEX, VGA_AR_ENABLE_DISPLAY); plat->base = fb; |