Index: drivers/video/tegra/dc/hdmi.c |
diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c |
index 662427428f7394750f385125480a4f0a1c30fe70..5eafeab1c15f115065c355ce00bd89eb2148a0d0 100644 |
--- a/drivers/video/tegra/dc/hdmi.c |
+++ b/drivers/video/tegra/dc/hdmi.c |
@@ -685,12 +685,11 @@ static void tegra_dc_hdmi_setup_audio_fs_tables(struct tegra_dc *dc) |
} |
} |
-static int tegra_dc_hdmi_setup_audio(struct tegra_dc *dc) |
+static int tegra_dc_hdmi_setup_audio(struct tegra_dc *dc, unsigned audio_freq) |
{ |
struct tegra_dc_hdmi_data *hdmi = tegra_dc_get_outdata(dc); |
const struct tegra_hdmi_audio_config *config; |
unsigned long audio_n; |
- unsigned audio_freq = 44100; /* TODO: find some way of configuring this */ |
tegra_hdmi_writel(hdmi, |
AUDIO_CNTRL0_ERROR_TOLERANCE(6) | |
@@ -730,6 +729,28 @@ static int tegra_dc_hdmi_setup_audio(struct tegra_dc *dc) |
return 0; |
} |
+int tegra_dc_hdmi_set_audio_sample_rate(unsigned audio_freq) |
+{ |
+ int i, ret; |
+ struct tegra_dc *dc; |
+ struct tegra_dc_hdmi_data *hdmi; |
+ |
+ for (i = 0; i < TEGRA_MAX_DC; i++) { |
+ dc = tegra_dc_get_dc(i); |
+ if (!dc) |
+ continue; |
+ hdmi = tegra_dc_get_outdata(dc); |
+ if (!hdmi) |
+ continue; |
+ ret = tegra_dc_hdmi_setup_audio(dc, audio_freq); |
+ if (ret) |
+ return ret; |
+ } |
+ |
+ return 0; |
+} |
+EXPORT_SYMBOL(tegra_dc_hdmi_set_audio_sample_rate); |
+ |
static void tegra_dc_hdmi_write_infopack(struct tegra_dc *dc, int header_reg, |
u8 type, u8 version, void *data, int len) |
{ |
@@ -937,7 +958,7 @@ static void tegra_dc_hdmi_enable(struct tegra_dc *dc) |
SOR_REFCLK_DIV_FRAC(dispclk_div_8_2), |
HDMI_NV_PDISP_SOR_REFCLK); |
- err = tegra_dc_hdmi_setup_audio(dc); |
+ err = tegra_dc_hdmi_setup_audio(dc, 44100); |
if (err < 0) |
dvi = true; |