On Mon, 08 Apr 2024, Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > On Mon, Apr 08, 2024 at 08:28:27PM +0300, Ville Syrjälä wrote: >> On Mon, Apr 08, 2024 at 08:23:14PM +0300, Jani Nikula wrote: >> > The rawclk initialization is a bit out of place in >> > intel_device_info_runtime_init(). Move it to intel_cdclk_init(), with a >> > bit of refactoring on intel_read_rawclk(). >> >> rawclk is used outside of display. > > The correct solution would likely be to extract a > i9xx_fsb_freq(), and use that to populate both rawclk_freq > and fsb_freq (and switch over to fsb_freq in the > non-display code). I circled back to this, and PNV seems to be the problem case for making this happen. pnv_detect_mem_freq() in intel_dram.c and i9xx_hrawclk() in intel_cdclk.c interpret the CLKCFG register slightly differently. I'm presuming PNV only supports a subset of the values covered by i9xx_hrawclk(). For IS_MOBILE() they all match, but for !IS_MOBILE() there's a different value for 400 MHz FSB. So how should desktop PNV interpret the register, I wonder? I can't find any specs on that anymore. BR, Jani. -- Jani Nikula, Intel