diff --git a/headers/private/graphics/intel_extreme/intel_extreme.h b/headers/private/graphics/intel_extreme/intel_extreme.h index cad0f7dc3a..a3c2c6c22d 100644 --- a/headers/private/graphics/intel_extreme/intel_extreme.h +++ b/headers/private/graphics/intel_extreme/intel_extreme.h @@ -927,6 +927,9 @@ struct intel_brightness_legacy { #define LCPLL_CLK_FREQ_337_5_BDW (2 << 26) #define LCPLL_CD_SOURCE_FCLK (1 << 21) +#define FUSE_STRAP 0x42014 +#define HSW_CDCLK_LIMIT (1 << 24) + // display #define INTEL_DISPLAY_OFFSET 0x1000 diff --git a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp index 1e541a9b86..59646c639e 100644 --- a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp +++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp @@ -883,6 +883,8 @@ intel_extreme_init(intel_info &info) uint32 lcpll = read32(info, LCPLL_CTL); if ((lcpll & LCPLL_CD_SOURCE_FCLK) != 0) info.shared_info->hw_cdclk = 800000; + else if ((read32(info, FUSE_STRAP) & HSW_CDCLK_LIMIT) != 0) + info.shared_info->hw_cdclk = 450000; else if ((lcpll & LCPLL_CLK_FREQ_MASK) == LCPLL_CLK_FREQ_450) info.shared_info->hw_cdclk = 450000; else if ((lcpll & LCPLL_CLK_FREQ_MASK) == LCPLL_CLK_FREQ_54O_BDW) @@ -895,6 +897,8 @@ intel_extreme_init(intel_info &info) uint32 lcpll = read32(info, LCPLL_CTL); if ((lcpll & LCPLL_CD_SOURCE_FCLK) != 0) info.shared_info->hw_cdclk = 800000; + else if ((read32(info, FUSE_STRAP) & HSW_CDCLK_LIMIT) != 0) + info.shared_info->hw_cdclk = 450000; else if ((lcpll & LCPLL_CLK_FREQ_MASK) == LCPLL_CLK_FREQ_450) info.shared_info->hw_cdclk = 450000; /* ULT type is missing