[SeaBIOS] [PATCH 3/4] Unlock CRTC access and use Standard VGA IO port

Christian Gmeiner christian.gmeiner at gmail.com
Sat Sep 1 12:02:20 CEST 2012


Ignore this one one... will rework it
---
Christian Gmeiner, MSc


2012/8/31 Christian Gmeiner <christian.gmeiner at gmail.com>:
> If we unlock CRTC access once we can simply make use of standard
> VGA IO port access functions.
> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> ---
>  vgasrc/geodevga.c | 38 ++++++--------------------------------
>  1 file changed, 6 insertions(+), 32 deletions(-)
>
> diff --git a/vgasrc/geodevga.c b/vgasrc/geodevga.c
> index f7fd895..31632e7 100644
> --- a/vgasrc/geodevga.c
> +++ b/vgasrc/geodevga.c
> @@ -107,36 +107,6 @@ static int legacyio_check(void)
>  }
>
>  /****************************************************************
> -* Extened CRTC Register functions
> -****************************************************************/
> -static void crtce_lock(void)
> -{
> -    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_REGISTER_LOCK
> -                      , CRTCE_LOCK);
> -}
> -
> -static void crtce_unlock(void)
> -{
> -    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_REGISTER_LOCK
> -                      , CRTCE_UNLOCK);
> -}
> -
> -static u8 crtce_read(u8 reg)
> -{
> -    crtce_unlock();
> -    u8 val = stdvga_crtc_read(VGAREG_VGA_CRTC_ADDRESS, reg);
> -    crtce_lock();
> -    return val;
> -}
> -
> -static void crtce_write(u8 reg, u8 val)
> -{
> -    crtce_unlock();
> -    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, reg, val);
> -    crtce_lock();
> -}
> -
> -/****************************************************************
>  * Display Controller Functions
>  ****************************************************************/
>  static u32 dc_read(u16 seg, u32 reg)
> @@ -174,7 +144,7 @@ static u16 dc_map(u16 seg)
>  {
>      u8 reg;
>
> -    reg = crtce_read(EXTENDED_MODE_CONTROL);
> +    reg = stdvga_crtc_read(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_MODE_CONTROL);
>      reg &= 0xf9;
>      switch (seg) {
>      case SEG_GRAPH:
> @@ -191,7 +161,7 @@ static u16 dc_map(u16 seg)
>          break;
>      }
>
> -    crtce_write(EXTENDED_MODE_CONTROL,reg);
> +    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_MODE_CONTROL,reg);
>      return seg;
>  }
>
> @@ -366,6 +336,10 @@ int geodevga_init(void)
>          // Device should be at 00:01.1
>          SET_VGA(VgaBDF, pci_to_bdf(0, 1, 1));
>
> +    // unlock crtc so we can use Standard VGA IO port access functions
> +    stdvga_crtc_write(VGAREG_VGA_CRTC_ADDRESS, EXTENDED_REGISTER_LOCK
> +                      , CRTCE_UNLOCK);
> +
>      vp_setup();
>      dc_setup();
>
> --
> 1.7.11.rc2.5.g68f532f
>



More information about the SeaBIOS mailing list