|
|
@@ -335,39 +335,37 @@ static unsigned int hdmi_compute_cts(unsigned int freq, unsigned long pixel_clk,
|
|
|
}
|
|
|
|
|
|
static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi,
|
|
|
- unsigned long pixel_clk)
|
|
|
+ unsigned long pixel_clk, unsigned int sample_rate, unsigned int ratio)
|
|
|
{
|
|
|
- unsigned int clk_n, clk_cts;
|
|
|
+ unsigned int n, cts;
|
|
|
|
|
|
- clk_n = hdmi_compute_n(hdmi->sample_rate, pixel_clk,
|
|
|
- hdmi->ratio);
|
|
|
- clk_cts = hdmi_compute_cts(hdmi->sample_rate, pixel_clk,
|
|
|
- hdmi->ratio);
|
|
|
-
|
|
|
- if (!clk_cts) {
|
|
|
- dev_dbg(hdmi->dev, "%s: pixel clock not supported: %lu\n",
|
|
|
- __func__, pixel_clk);
|
|
|
- return;
|
|
|
+ n = hdmi_compute_n(sample_rate, pixel_clk, ratio);
|
|
|
+ cts = hdmi_compute_cts(sample_rate, pixel_clk, ratio);
|
|
|
+ if (!cts) {
|
|
|
+ dev_err(hdmi->dev,
|
|
|
+ "%s: pixel clock/sample rate not supported: %luMHz / %ukHz\n",
|
|
|
+ __func__, pixel_clk, sample_rate);
|
|
|
}
|
|
|
|
|
|
- dev_dbg(hdmi->dev, "%s: samplerate=%d ratio=%d pixelclk=%lu N=%d cts=%d\n",
|
|
|
- __func__, hdmi->sample_rate, hdmi->ratio,
|
|
|
- pixel_clk, clk_n, clk_cts);
|
|
|
+ dev_dbg(hdmi->dev, "%s: samplerate=%ukHz ratio=%d pixelclk=%luMHz N=%d cts=%d\n",
|
|
|
+ __func__, sample_rate, ratio, pixel_clk, n, cts);
|
|
|
|
|
|
- hdmi_set_cts_n(hdmi, clk_cts, clk_n);
|
|
|
+ hdmi_set_cts_n(hdmi, cts, n);
|
|
|
}
|
|
|
|
|
|
static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi)
|
|
|
{
|
|
|
mutex_lock(&hdmi->audio_mutex);
|
|
|
- hdmi_set_clk_regenerator(hdmi, 74250000);
|
|
|
+ hdmi_set_clk_regenerator(hdmi, 74250000, hdmi->sample_rate,
|
|
|
+ hdmi->ratio);
|
|
|
mutex_unlock(&hdmi->audio_mutex);
|
|
|
}
|
|
|
|
|
|
static void hdmi_clk_regenerator_update_pixel_clock(struct dw_hdmi *hdmi)
|
|
|
{
|
|
|
mutex_lock(&hdmi->audio_mutex);
|
|
|
- hdmi_set_clk_regenerator(hdmi, hdmi->hdmi_data.video_mode.mpixelclock);
|
|
|
+ hdmi_set_clk_regenerator(hdmi, hdmi->hdmi_data.video_mode.mpixelclock,
|
|
|
+ hdmi->sample_rate, hdmi->ratio);
|
|
|
mutex_unlock(&hdmi->audio_mutex);
|
|
|
}
|
|
|
|