summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2020-09-02 15:26:35 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2022-06-22 15:37:46 +0300
commitbe57da217deab276be5a716aa6c5cdc3695829be (patch)
tree95f859f65d86aa59a4c62d7733e1945dd2809526
parent35b783bf5169e93a6a1abd688916d78149a32bcd (diff)
tools/intel_vbt_decode: Clean up SSC freq decoding
Use the same logic as we use in the kernel to decode the SSC frequency. Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-rw-r--r--tools/intel_vbt_decode.c46
1 files changed, 20 insertions, 26 deletions
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index c626f0e9..a91273d8 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -138,6 +138,19 @@ static struct bdb_block *find_section(struct context *context, int section_id)
return NULL;
}
+static int decode_ssc_freq(struct context *context, bool alternate)
+{
+ switch (intel_gen(context->devid)) {
+ case 2:
+ return alternate ? 66 : 48;
+ case 3:
+ case 4:
+ return alternate ? 100 : 96;
+ default:
+ return alternate ? 100 : 120;
+ }
+}
+
static void dump_general_features(struct context *context,
const struct bdb_block *block)
{
@@ -164,21 +177,10 @@ static void dump_general_features(struct context *context,
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) {
- if (!context->devid)
- printf("\tSSC frequency: <unknown platform>\n");
- else 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->ssc_freq ?
- "100 MHz" : "120 MHz");
- else
- printf("\tSSC frequency: %s\n", features->ssc_freq ?
- "100 MHz (66 MHz on 855)" : "96 MHz (48 MHz on 855)");
- }
+ printf("\tLVDS SSC Enable: %s\n", YESNO(features->enable_ssc));
+ printf("\tLVDS SSC frequency: %d MHz (0x%x)\n",
+ decode_ssc_freq(context, features->ssc_freq),
+ features->ssc_freq);
printf("\tLFP on override: %s\n",
YESNO(features->enable_lfp_on_override));
printf("\tDisable SSC on clone: %s\n",
@@ -210,17 +212,9 @@ static void dump_general_features(struct context *context,
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 frequency: %d MHz (0x%x)\n",
+ decode_ssc_freq(context, features->dp_ssc_freq),
+ features->dp_ssc_freq);
printf("\tDP SSC dongle supported: %s\n", YESNO(features->dp_ssc_dongle_supported));
}