[SeaBIOS] [PATCH 1/3] vgasrc: Add skeleton for VBE function 15h (VBE/DDC Standard)

Christian Gmeiner christian.gmeiner at gmail.com
Tue Sep 18 14:07:42 CEST 2012


Looks fine... hope to see this patch soon in git :)

---
Christian Gmeiner, MSc


2012/9/16 Hiroshi Miura <miurahr at linux.com>:
> posted in Wed Mar 7 03:41:06 CET 2012
>
> Signed-off-by: Julian Pidancet <julian.pidancet at gmail.com>
> Signed-off-by: Hiroshi Miura <miurahr at linux.com>
> ---
>  src/vbe.h       |    5 +++++
>  vgasrc/stdvga.c |   11 +++++++++++
>  vgasrc/stdvga.h |    2 ++
>  vgasrc/vbe.c    |   34 ++++++++++++++++++++++++++++++++++
>  vgasrc/vgahw.h  |    8 ++++++++
>  5 files changed, 60 insertions(+)
>
> diff --git a/src/vbe.h b/src/vbe.h
> index 386613c..b5aedc6 100644
> --- a/src/vbe.h
> +++ b/src/vbe.h
> @@ -154,4 +154,9 @@ struct vbe_crtc_info {
>  #define VBE_DIRECTCOLOR_COLOR_RAMP_PROGRAMMABLE          0x01
>  #define VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE          0x02
>
> +/* Display Data Channel (DDC) */
> +#define VBE_DDC1_PROTOCOL_SUPPORTED                      0x01
> +#define VBE_DDC2_PROTOCOL_SUPPORTED                      0x02
> +#define VBE_DDC_BLANK_DURING_TRANSFER                    0x04
> +
>  #endif
> diff --git a/vgasrc/stdvga.c b/vgasrc/stdvga.c
> index ae6c0be..270cd65 100644
> --- a/vgasrc/stdvga.c
> +++ b/vgasrc/stdvga.c
> @@ -499,3 +499,14 @@ stdvga_init(void)
>
>      return 0;
>  }
> +
> +int stdvga_get_ddc_capabilities(u16 unit)
> +{
> +    return -1;
> +}
> +
> +int stdvga_read_edid(u16 unit, u16 block, u16 seg, void *data)
> +{
> +    return -1;
> +}
> +
> diff --git a/vgasrc/stdvga.h b/vgasrc/stdvga.h
> index c9a9ba1..e3bd447 100644
> --- a/vgasrc/stdvga.h
> +++ b/vgasrc/stdvga.h
> @@ -108,5 +108,7 @@ int stdvga_save_state(u16 seg, void *data, int states);
>  int stdvga_restore_state(u16 seg, void *data, int states);
>  void stdvga_enable_video_addressing(u8 disable);
>  int stdvga_init(void);
> +int stdvga_get_ddc_capabilities(u16 unit);
> +int stdvga_read_edid(u16 unit, u16 block, u16 seg, void *data);
>
>  #endif // stdvga.h
> diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
> index 227a244..ed7c6ee 100644
> --- a/vgasrc/vbe.c
> +++ b/vgasrc/vbe.c
> @@ -384,6 +384,39 @@ vbe_104f10(struct bregs *regs)
>  }
>
>  static void
> +vbe_104f15(struct bregs *regs)
> +{
> +    int ret;
> +    u16 seg = regs->es;
> +    void *data = (void *)(regs->di+0);
> +    u16 unit = regs->cx;
> +    u16 block = regs->dx;
> +
> +    switch (regs->bl) {
> +    case 0x00: /* Report VBE/DDC Capabilities */
> +        ret = vgahw_get_ddc_capabilities(unit);
> +        if (ret < 0)
> +            goto fail;
> +        regs->bh = ret >> 8; /* Approx. time in seconds, rounded up, to transfer
> +                                one EDID block (128 bytes) */
> +        regs->bl = ret & 0xff; /* DDC level supported */
> +        break;
> +    case 0x01: /* Read EDID */
> +        ret = vgahw_read_edid(unit, block, seg, data);
> +        if (ret < 0)
> +            goto fail;
> +        break;
> +    default:
> +        goto fail;
> +    }
> +    regs->ax = 0x004f;
> +    return;
> +
> +fail:
> +    regs->ax = 0x014f;
> +}
> +
> +static void
>  vbe_104fXX(struct bregs *regs)
>  {
>      debug_stub(regs);
> @@ -410,6 +443,7 @@ handle_104f(struct bregs *regs)
>      case 0x08: vbe_104f08(regs); break;
>      case 0x0a: vbe_104f0a(regs); break;
>      case 0x10: vbe_104f10(regs); break;
> +    case 0x15: vbe_104f15(regs); break;
>      default:   vbe_104fXX(regs); break;
>      }
>  }
> diff --git a/vgasrc/vgahw.h b/vgasrc/vgahw.h
> index 044cd32..01d2609 100644
> --- a/vgasrc/vgahw.h
> +++ b/vgasrc/vgahw.h
> @@ -129,4 +129,12 @@ static inline int vgahw_restore_state(u16 seg, void *data, int states) {
>      return stdvga_restore_state(seg, data, states);
>  }
>
> +static inline int vgahw_get_ddc_capabilities(u16 unit) {
> +    return stdvga_get_ddc_capabilities(unit);
> +}
> +
> +static inline int vgahw_read_edid(u16 unit, u16 block, u16 seg, void *data) {
> +    return stdvga_read_edid(unit, block, seg, data);
> +}
> +
>  #endif // vgahw.h
> --
> 1.7.9.5
>
>
>
> _______________________________________________
> SeaBIOS mailing list
> SeaBIOS at seabios.org
> http://www.seabios.org/mailman/listinfo/seabios



More information about the SeaBIOS mailing list