Commit f879b38f authored by Russell King's avatar Russell King

drm: bridge/dw_hdmi: clean up hdmi_set_clk_regenerator()

Clean up hdmi_set_clk_regenerator() by allowing it to take the audio
sample rate and ratio directly, rather than hiding it inside the
function.  Raise the unsupported pixel clock/sample rate message from
debug to error level as this results in audio not working correctly.
Tested-by: default avatarYakir Yang <ykk@rock-chips.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 39cc1535
...@@ -335,39 +335,37 @@ static unsigned int hdmi_compute_cts(unsigned int freq, unsigned long pixel_clk, ...@@ -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, 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, n = hdmi_compute_n(sample_rate, pixel_clk, ratio);
hdmi->ratio); cts = hdmi_compute_cts(sample_rate, pixel_clk, ratio);
clk_cts = hdmi_compute_cts(hdmi->sample_rate, pixel_clk, if (!cts) {
hdmi->ratio); dev_err(hdmi->dev,
"%s: pixel clock/sample rate not supported: %luMHz / %ukHz\n",
if (!clk_cts) { __func__, pixel_clk, sample_rate);
dev_dbg(hdmi->dev, "%s: pixel clock not supported: %lu\n",
__func__, pixel_clk);
return;
} }
dev_dbg(hdmi->dev, "%s: samplerate=%d ratio=%d pixelclk=%lu N=%d cts=%d\n", dev_dbg(hdmi->dev, "%s: samplerate=%ukHz ratio=%d pixelclk=%luMHz N=%d cts=%d\n",
__func__, hdmi->sample_rate, hdmi->ratio, __func__, sample_rate, ratio, pixel_clk, n, cts);
pixel_clk, clk_n, clk_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) static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi)
{ {
mutex_lock(&hdmi->audio_mutex); 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); mutex_unlock(&hdmi->audio_mutex);
} }
static void hdmi_clk_regenerator_update_pixel_clock(struct dw_hdmi *hdmi) static void hdmi_clk_regenerator_update_pixel_clock(struct dw_hdmi *hdmi)
{ {
mutex_lock(&hdmi->audio_mutex); 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); mutex_unlock(&hdmi->audio_mutex);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment