From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 tools/intel_bios.h        | 17 ++++++++++++++---
 tools/intel_bios_reader.c | 35 +++++++++++++++++++++++++++++++++--
 2 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index b7ebd48ef7e7..c4632da336d9 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -104,12 +104,19 @@ struct bdb_general_features {
        unsigned char ssc_freq:1;
        unsigned char enable_lfp_on_override:1;
        unsigned char disable_ssc_ddt:1;
-       unsigned char rsvd8:3;  /* finish byte */
+       unsigned char underscan_vga_timings:1;
+       unsigned char dynamic_cdclk:1; /* 183 */
+       unsigned char vbios_hotplug_support:1;
 
        /* bits 3 */
        unsigned char disable_smooth_vision:1;
        unsigned char single_dvi:1;
-       unsigned char rsvd9:6;  /* finish byte */
+       unsigned char rotate_180:1; /* 181 */
+       unsigned char fdi_rx_polarity:1;
+       unsigned char vbios_extended_mode:1; /* 160 */
+       unsigned char copy_ilfp_dtd_to_sdvo_lvds_dtd:1; /* 160 */
+       unsigned char panel_best_fit_timing:1; /* 160 */
+       unsigned char ignore_strap_state:1; /* 160 */
 
        /* bits 4 */
        unsigned char legacy_monitor_detect;
@@ -117,7 +124,11 @@ struct bdb_general_features {
        /* bits 5 */
        unsigned char int_crt_support:1;
        unsigned char int_tv_support:1;
-       unsigned char rsvd11:6; /* finish byte */
+       unsigned char int_efp_support:1;
+       unsigned char dp_ssc_enable:1;
+       unsigned char dp_ssc_freq:1;
+       unsigned char dp_ssc_dongle_supported:1;
+       unsigned char rsvd11:2; /* finish byte */
 } __attribute__ ((packed));
 
 #define GPIO_PIN_NONE          0x00    /* "N/A" */
diff --git a/tools/intel_bios_reader.c b/tools/intel_bios_reader.c
index 4c4ab666fc55..588cc2c36c7a 100644
--- a/tools/intel_bios_reader.c
+++ b/tools/intel_bios_reader.c
@@ -151,6 +151,7 @@ static void dump_general_features(struct context *context,
        printf("\tMessage: %s\n", YESNO(features->msg_enable));
        printf("\tClear screen: %d\n", features->clear_screen);
        printf("\tDVO color flip required: %s\n", YESNO(features->color_flip));
+
        printf("\tExternal VBT: %s\n", YESNO(features->download_ext_vbt));
        printf("\tEnable SSC: %s\n", YESNO(features->enable_ssc));
        if (features->enable_ssc) {
@@ -171,13 +172,45 @@ static void dump_general_features(struct context *context,
               YESNO(features->enable_lfp_on_override));
        printf("\tDisable SSC on clone: %s\n",
               YESNO(features->disable_ssc_ddt));
+       printf("\tUnderscan support for VGA timings: %s\n",
+              YESNO(features->underscan_vga_timings));
+       if (context->bdb->version >= 183)
+               printf("\tDynamic CD clock: %s\n", 
YESNO(features->dynamic_cdclk));
+       printf("\tHotplug support in VBIOS: %s\n",
+              YESNO(features->vbios_hotplug_support));
+
        printf("\tDisable smooth vision: %s\n",
               YESNO(features->disable_smooth_vision));
        printf("\tSingle DVI for CRT/DVI: %s\n", YESNO(features->single_dvi));
+       if (context->bdb->version >= 181)
+               printf("\tEnable 180 degree rotation: %s\n", 
YESNO(features->rotate_180));
+       printf("\tInverted FDI Rx polarity: %s\n", 
YESNO(features->fdi_rx_polarity));
+       if (context->bdb->version >= 160) {
+               printf("\tExtended VBIOS mode: %s\n", 
YESNO(features->vbios_extended_mode));
+               printf("\tCopy iLFP DTD to SDVO LVDS DTD: %s\n", 
YESNO(features->copy_ilfp_dtd_to_sdvo_lvds_dtd));
+               printf("\tBest fit panel timing algorithm: %s\n", 
YESNO(features->panel_best_fit_timing));
+               printf("\tIgnore strap state: %s\n", 
YESNO(features->ignore_strap_state));
+       }
+
        printf("\tLegacy monitor detect: %s\n",
               YESNO(features->legacy_monitor_detect));
+
        printf("\tIntegrated CRT: %s\n", YESNO(features->int_crt_support));
        printf("\tIntegrated TV: %s\n", YESNO(features->int_tv_support));
+       printf("\tIntegrated EFP: %s\n", YESNO(features->int_efp_support));
+       printf("\tDP SSC enable: %s\n", YESNO(features->dp_ssc_enable));
+       if (features->dp_ssc_enable) {
+               if (IS_VALLEYVIEW(context->devid) || 
IS_CHERRYVIEW(context->devid) ||
+                   IS_BROXTON(context->devid))
+                       printf("\tSSC frequency: 100 MHz\n");
+               else if (HAS_PCH_SPLIT(context->devid))
+                       printf("\tSSC frequency: %s\n", features->dp_ssc_freq ?
+                              "100 MHz" : "120 MHz");
+               else
+                       printf("\tSSC frequency: %s\n", features->dp_ssc_freq ?
+                              "100 MHz" : "96 MHz");
+       }
+       printf("\tDP SSC dongle supported: %s\n", 
YESNO(features->dp_ssc_dongle_supported));
 }
 
 static void dump_backlight_info(struct context *context,
@@ -361,8 +394,6 @@ static const char *efp_conn(uint8_t type)
        return "unknown";
 }
 
-
-
 static void dump_child_device(struct context *context,
                              struct child_device_config *child)
 {
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to