On Wed, Sep 04, 2019 at 05:09:29PM +0800, Cheng-yi Chiang wrote:
Hi,
On Tue, Sep 3, 2019 at 5:53 PM Neil Armstrong narmstrong@baylibre.com wrote:
Hi,
On 03/09/2019 07:51, Cheng-Yi Chiang wrote:
From: Yakir Yang ykk@rock-chips.com
When transmitting IEC60985 linear PCM audio, we configure the Audio Sample Channel Status information of all the channel status bits in the IEC60958 frame. Refer to 60958-3 page 10 for frequency, original frequency, and wordlength setting.
This fix the issue that audio does not come out on some monitors (e.g. LG 22CV241)
Signed-off-by: Yakir Yang ykk@rock-chips.com Signed-off-by: Cheng-Yi Chiang cychiang@chromium.org
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 59 +++++++++++++++++++++++ drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 20 ++++++++ 2 files changed, 79 insertions(+)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index bd65d0479683..34d46e25d610 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -582,6 +582,63 @@ static unsigned int hdmi_compute_n(unsigned int freq, unsigned long pixel_clk) return n; }
+static void hdmi_set_schnl(struct dw_hdmi *hdmi) +{
u8 aud_schnl_samplerate;
u8 aud_schnl_8;
/* These registers are on RK3288 using version 2.0a. */
if (hdmi->version != 0x200a)
return;
Are these limited to the 2.0a version *in* RK3288, or 2.0a version on all SoCs ?
In the original patch by Yakir,
https://lore.kernel.org/patchwork/patch/539653/ (sorry, I should have added this link in the "after the cut" note)
The fix is limited to version 2.0. Since I am only testing on RK3288 with 2.0a, I change the check to 2.0a only. I can not test 2.0a version on other SoCs. The databook I have at hand is 2.0a (not specific to RK3288) so I think all 2.0a should have this register.
As for other version like version 1.3 on iMX6, there is no such register, as stated by Russell
http://lkml.iu.edu/hypermail/linux/kernel/1501.3/06268.html.
It's likely more to do with how the IP is configured rather than the version. The big difference between dw-hdmi used in iMX6 and elsewhere is that iMX6 uses a built-in AHB audio interface and not I2S. Elsewhere uses I2S.
I2S does not have the capability to convey channel status information (which is required by HDMI). With AHB, it is encoded into the data in memory.
So, I think this setup should be done in the I2S driver and not in the core driver.