[SeaBIOS] [PATCH] stdvga: Add stdvga_set_vertical_size() helper function

Kevin O'Connor posted 1 patch 1 month ago
Failed in applying to current master (apply log)
vgasrc/bochsvga.c |  8 +-------
vgasrc/stdvga.c   | 11 +++++++++++
vgasrc/stdvga.h   |  1 +
3 files changed, 13 insertions(+), 7 deletions(-)
[SeaBIOS] [PATCH] stdvga: Add stdvga_set_vertical_size() helper function
Posted by Kevin O'Connor 1 month ago
Add helper function and update the bochsvga.c code to use it.  This
emphasizes the relationship between stdvga_get_vertical_size() and
stdvga_set_vertical_size() code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>

--

This patch is on top of the recent "Improve comments in stdvga.c"
series.

-Kevin


---
 vgasrc/bochsvga.c |  8 +-------
 vgasrc/stdvga.c   | 11 +++++++++++
 vgasrc/stdvga.h   |  1 +
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
index ab8f25e..3ef0f18 100644
--- a/vgasrc/bochsvga.c
+++ b/vgasrc/bochsvga.c
@@ -275,13 +275,7 @@ bochsvga_set_mode(struct vgamode_s *vmode_g, int flags)
     stdvga_crtc_write(crtc_addr, 0x11, 0x00);
     stdvga_crtc_write(crtc_addr, 0x01, width / 8 - 1);
     stdvga_set_linelength(vmode_g, width);
-    stdvga_crtc_write(crtc_addr, 0x12, height - 1);
-    u8 v = 0;
-    if ((height - 1) & 0x0100)
-        v |= 0x02;
-    if ((height - 1) & 0x0200)
-        v |= 0x40;
-    stdvga_crtc_mask(crtc_addr, 0x07, 0x42, v);
+    stdvga_set_vertical_size(height);
 
     stdvga_crtc_write(crtc_addr, 0x09, 0x00);
     stdvga_crtc_mask(crtc_addr, 0x17, 0x00, 0x03);
diff --git a/vgasrc/stdvga.c b/vgasrc/stdvga.c
index 4bfa101..afe26db 100644
--- a/vgasrc/stdvga.c
+++ b/vgasrc/stdvga.c
@@ -286,6 +286,17 @@ stdvga_get_vertical_size(void)
     return vde + 1;
 }
 
+// Set vertical screen size (number of horizontal lines in the display)
+void
+stdvga_set_vertical_size(int lines)
+{
+    u16 crtc_addr = stdvga_get_crtc();
+    u16 vde = lines - 1;
+    stdvga_crtc_write(crtc_addr, 0x12, vde);
+    u8 ovl = ((vde >> 7) & 0x02) + ((vde >> 3) & 0x40);
+    stdvga_crtc_mask(crtc_addr, 0x07, 0x42, ovl);
+}
+
 // Get offset into framebuffer accessible from real-mode 64K segment
 int
 stdvga_get_window(struct vgamode_s *curmode_g, int window)
diff --git a/vgasrc/stdvga.h b/vgasrc/stdvga.h
index 1828585..ce5a80a 100644
--- a/vgasrc/stdvga.h
+++ b/vgasrc/stdvga.h
@@ -67,6 +67,7 @@ void stdvga_set_cursor_shape(u16 cursor_type);
 void stdvga_set_cursor_pos(int address);
 void stdvga_set_character_height(u8 lines);
 u16 stdvga_get_vertical_size(void);
+void stdvga_set_vertical_size(int lines);
 int stdvga_get_window(struct vgamode_s *curmode_g, int window);
 int stdvga_set_window(struct vgamode_s *curmode_g, int window, int val);
 int stdvga_minimum_linelength(struct vgamode_s *vmode_g);
-- 
2.44.0

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org
[SeaBIOS] Re: [PATCH] stdvga: Add stdvga_set_vertical_size() helper function
Posted by Kevin O'Connor 3 weeks, 2 days ago
On Tue, Apr 02, 2024 at 02:35:05PM -0400, Kevin O'Connor wrote:
> Add helper function and update the bochsvga.c code to use it.  This
> emphasizes the relationship between stdvga_get_vertical_size() and
> stdvga_set_vertical_size() code.
> 
> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>

I committed this patch.

-Kevin
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org