• Rodrigo Vivi's avatar
    drm/i915/cnp: Get/set proper Raw clock frequency on CNP. · 9d81a997
    Rodrigo Vivi authored
    RAWCLK_FREQ register has changed for platforms with CNP+.
    
    [29:26] This field provides the denominator for the fractional
    	part of the microsecond counter divider.  The numerator
    	is fixed at 1. Program this field to the denominator of
    	the fractional portion of reference frequency minus one.
    	If the fraction is 0, program to 0.
    	0100b = Fraction .2 MHz = Fraction 1/5.
    	0000b = Fraction .0 MHz.
    
    [25:16] This field provides the integer part of the microsecond
    	counter divider. Program this field to the integer portion
    	of the reference frequenct minus one.
    
    Also this register tells us that proper raw clock should be read
    from SFUSE_STRAP and programmed to this register. Up to this point
    on other platforms we are reading instead of programming it so
    probably relying on whatever BIOS had configured here.
    
    Now on let's follow the spec and also program this register
    fetching the right value from SFUSE_STRAP as Spec tells us to do.
    
    v2: Read from SFUSE_STRAP and Program RAWCLK_FREQ instead of
        reading the value relying someone else will program that
        for us.
    v3: Add missing else. (Jani)
    v4: Addressing all Ville's catches:
        Use macro for shift bits instead of defining shift.
        Remove shift from the cleaning bits with mask that already
        has it.
        Add missing I915_WRITE to actually write the reg.
        Stop using useless DIV_ROUND_* on divider that is exact
        dividion and use DIV_ROUND_CLOSEST for the fraction part.
    v5: Remove useless Read-Modify-Write on raclk_freq reg. (Ville).
    v6: Change is per PCH instead of per platform.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1496434004-29812-3-git-send-email-rodrigo.vivi@intel.com
    9d81a997
i915_reg.h 345 KB