|
|
@@ -82,16 +82,11 @@ static int get_disp_clk_div(struct drm_i915_private *dev_priv,
|
|
|
|
|
|
static void gmbus_set_freq(struct drm_i915_private *dev_priv)
|
|
|
{
|
|
|
- int vco_freq[] = { 800, 1600, 2000, 2400 };
|
|
|
- int gmbus_freq = 0, cdclk_div, hpll_freq;
|
|
|
+ int vco, gmbus_freq = 0, cdclk_div;
|
|
|
|
|
|
BUG_ON(!IS_VALLEYVIEW(dev_priv->dev));
|
|
|
|
|
|
- /* Obtain SKU information */
|
|
|
- mutex_lock(&dev_priv->dpio_lock);
|
|
|
- hpll_freq =
|
|
|
- vlv_cck_read(dev_priv, CCK_FUSE_REG) & CCK_FUSE_HPLL_FREQ_MASK;
|
|
|
- mutex_unlock(&dev_priv->dpio_lock);
|
|
|
+ vco = valleyview_get_vco(dev_priv);
|
|
|
|
|
|
/* Get the CDCLK divide ratio */
|
|
|
cdclk_div = get_disp_clk_div(dev_priv, CDCLK);
|
|
|
@@ -102,7 +97,7 @@ static void gmbus_set_freq(struct drm_i915_private *dev_priv)
|
|
|
* in fact 1MHz is the correct frequency.
|
|
|
*/
|
|
|
if (cdclk_div)
|
|
|
- gmbus_freq = (vco_freq[hpll_freq] << 1) / cdclk_div;
|
|
|
+ gmbus_freq = (vco << 1) / cdclk_div;
|
|
|
|
|
|
if (WARN_ON(gmbus_freq == 0))
|
|
|
return;
|