Thanks Eric. These changes have been applied to mxc-hdmi-core.c in order to get the audio for these video modes.
diff -Naur '--exclude=compile*' '--exclude=mxc_hdmi.c' linux-3.0.35.orig/drivers/mfd/mxc-hdmi-core.c linux-3.0.35/drivers/mfd/mxc-hdmi-core.c
--- linux-3.0.35.orig/drivers/mfd/mxc-hdmi-core.c 2013-09-11 13:04:35.000000000 -0700
+++ linux-3.0.35/drivers/mfd/mxc-hdmi-core.c 2013-11-05 13:34:05.000000000 -0800
@@ -502,15 +502,32 @@
clk_n = hdmi_compute_n(sample_rate, pixel_clk_rate, hdmi_ratio);
clk_cts = hdmi_compute_cts(sample_rate, pixel_clk_rate, hdmi_ratio);
+ // If pixel-clock isn't one of the Freescale out-of-the-box ones,
+ // estimate cts and n values
+ if( clk_cts == 0 ){
+ //
+ // From ADV7511 Programming guide:
+ // 128 *Fs = Ftmds_clk * (n/cts)
+ //
+ unsigned int temp;
+ clk_n = 6272;
+ clk_cts = clk_n * (pixel_clk_rate / (128 * sample_rate));
+
+ // known working values for 99MHz pixel_clk_rate:
+ //clk_cts = 110000;
+ //clk_n = 6272;
+ }
+
+ pr_info("%s: samplerate=%d ratio=%d pixelclk=%d N=%d cts=%d\n",
+ __func__, sample_rate, hdmi_ratio, (int)pixel_clk_rate,
+ clk_n, clk_cts);
+
if (clk_cts == 0) {
- pr_debug("%s: pixel clock not supported: %d\n",
+ pr_info("%s: pixel clock not supported: %d\n",
__func__, (int)pixel_clk_rate);
return;
}
(Please ignore the unused variable.)
I know in advance that the sample rate is 44100 Hz, which is why (so I believe) I can get away with the hard-coded 6272.
There are also some changes to mxc_edid.c that have been made, but I'm not sure if they're significant. Please let me know if you need to see that as well.
Perhaps this change is also causing the problem?
Anything else that might be missing?