On Thu, 30 Mar 2017 13:42:09 +0200, Ville Syrjälä wrote: > > On Wed, Mar 29, 2017 at 09:16:36PM +0000, Pandiyan, Dhinakaran wrote: > > On Wed, 2017-03-29 at 11:50 +0300, Ville Syrjälä wrote: > > > On Tue, Mar 07, 2017 at 04:12:52PM -0800, Dhinakaran Pandiyan wrote: > > > > According to BSpec, "The CD clock frequency must be at least twice the > > > > frequency of the Azalia BCLK." and BCLK is configured to 96 MHz by > > > > default. This check is needed because BXT and GLK support cdclk > > > > frequencies less than 192 MHz. > > > > > > > > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> > > > > --- > > > > drivers/gpu/drm/i915/intel_cdclk.c | 12 ++++++++++++ > > > > 1 file changed, 12 insertions(+) > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_cdclk.c b/drivers/gpu/drm/i915/intel_cdclk.c > > > > index e8c1181..7b1ac1d 100644 > > > > --- a/drivers/gpu/drm/i915/intel_cdclk.c > > > > +++ b/drivers/gpu/drm/i915/intel_cdclk.c > > > > @@ -1458,6 +1458,18 @@ static int bdw_adjust_min_pipe_pixel_rate(struct intel_crtc_state *crtc_state, > > > > pixel_rate = max(432000, pixel_rate); > > > > } > > > > > > > > + /* According to BSpec, "The CD clock frequency must be at least twice > > > > + * the frequency of the Azalia BCLK." and BCLK is 96 MHz by default. > > > > + * The check for GLK has to be adjusted as the platform can output > > > > + * two pixels per clock. > > > > + */ > > > > + if (crtc_state->has_audio) { > > > > + if (IS_GEMINILAKE(dev_priv)) > > > > + pixel_rate = max(2 * 2 * 96000, pixel_rate); > > > > > > BTW that x2 factor for GLK looks wrong. It should be /2. > > > > > > https://bugs.freedesktop.org/show_bug.cgi?id=100439 > > > > > > > BSpec[1] says cdclk needs to be > 2*96 MHz (azalia bclk). To set a cdclk > > > 192 MHz on GLK, we need to pass in max_pixclk = 2*192 MHz. But with a > > factor of /2, we can end up picking 158.4 MHz or 79.2 MHz for cdclk, > > which are lower than 192 MHz. > > > > > > static int glk_calc_cdclk(int max_pixclk) > > { > > if (max_pixclk > 2 * 158400) > > return 316800; > > else if (max_pixclk > 2 * 79200) > > return 158400; > > else > > return 79200; > > } > > > > [1] Geminilake Clocks > > "158.4 MHz CD (cannot be used when audio is enabled and Azalia BCLK is > > 96 MHz) > > 316.8 MHz CD > > 79.2 MHz CD (exclusively for resolutions up to 1080p in low power single > > pipe eDP/MIPI configurations, no audio support)" > > Argh. So it's really about the cdclk freq vs. bclk. Apparently the fact > that the pipe can output two pixels per clock doesn't extend to the HDA > side. OK, then the code looks correct. > > But how do we know the bclk is really 96Mhz? Or are we just making a > worst case estimate here? Base on the hda spec I think bclk should typically > be 24 MHz, but of course the hda spec is so old that it probably has > little to do with today's realities. I guess ideally we'd like the audio > driver to tell us what the frequency is, or we'd dig that up from > somewhere ourselves. > > Hmm. AUD_FREQ_CNTRL seems to have something. 96 vs. 48 MHz. But I'm not sure > we could trust that at boot time. Not sure if the audio driver will make > its own choice if BCLK somewhere. Can any alsa folks help us? Well, I'm not sure which BCLK is referred in this context, but if it's about HD-audio (aka Azalia) BCLK, it's always 24MHz. It's the specification, AFAIK. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel