aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2012-01-14 23:25:24 -0500
committerKevin O'Connor <kevin@koconnor.net>2012-01-16 12:03:14 -0500
commit69b01cbdb3a1644dc9a8a56e5564339f91b789ab (patch)
tree18b8269dbb079ea09bb97ffceea19060ea0cd8b4
parentb3df857fe6d3fffb108379637ea4a456ce6e09ba (diff)
downloadseabios-hppa-69b01cbdb3a1644dc9a8a56e5564339f91b789ab.zip
seabios-hppa-69b01cbdb3a1644dc9a8a56e5564339f91b789ab.tar.gz
seabios-hppa-69b01cbdb3a1644dc9a8a56e5564339f91b789ab.tar.bz2
vgabios: Don't have geode code peak into stdvga mode struct.
Create a wrapper (stdvga_override_crtc) so the Geode code doesn't need to access the stdvga mode tables directly. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--vgasrc/geodevga.c10
-rw-r--r--vgasrc/stdvga.h1
-rw-r--r--vgasrc/stdvgamodes.c11
3 files changed, 14 insertions, 8 deletions
diff --git a/vgasrc/geodevga.c b/vgasrc/geodevga.c
index 3da1b7c..d326eda 100644
--- a/vgasrc/geodevga.c
+++ b/vgasrc/geodevga.c
@@ -360,14 +360,8 @@ int geodevga_init(void)
int i;
for (i=0; i<ARRAY_SIZE(new_crtc); i++) {
u8 *crtc = GET_GLOBAL(new_crtc[i]);
- if (!crtc)
- continue;
- struct vgamode_s *vmode_g = stdvga_find_mode(i);
- if (!vmode_g)
- continue;
- struct stdvga_mode_s *stdmode_g = container_of(
- vmode_g, struct stdvga_mode_s, info);
- SET_VGA(stdmode_g->crtc_regs, crtc);
+ if (crtc)
+ stdvga_override_crtc(i, crtc);
}
ret |= vp_setup();
diff --git a/vgasrc/stdvga.h b/vgasrc/stdvga.h
index 9372127..c19b21f 100644
--- a/vgasrc/stdvga.h
+++ b/vgasrc/stdvga.h
@@ -85,6 +85,7 @@ struct saveDACcolors {
// stdvgamodes.c
struct vgamode_s *stdvga_find_mode(int mode);
void stdvga_build_video_param(void);
+void stdvga_override_crtc(int mode, u8 *crtc);
// stdvgaio.c
u8 stdvga_pelmask_read(void);
diff --git a/vgasrc/stdvgamodes.c b/vgasrc/stdvgamodes.c
index 94e273f..08c3a58 100644
--- a/vgasrc/stdvgamodes.c
+++ b/vgasrc/stdvgamodes.c
@@ -360,3 +360,14 @@ stdvga_build_video_param(void)
, ARRAY_SIZE(vparam_g->grdc_regs));
}
}
+
+void
+stdvga_override_crtc(int mode, u8 *crtc)
+{
+ struct vgamode_s *vmode_g = stdvga_find_mode(mode);
+ if (!vmode_g)
+ return;
+ struct stdvga_mode_s *stdmode_g = container_of(
+ vmode_g, struct stdvga_mode_s, info);
+ SET_VGA(stdmode_g->crtc_regs, crtc);
+}