From: Yakir Yang <ykk@rock-chips.com>
To: linux-rockchip@lists.infradead.org,
dri-devel <dri-devel@lists.freedesktop.org>,
linux-kernel@vger.kernel.org,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Cc: Fabio Estevam <fabio.estevam@freescale.com>,
Doug Anderson <dianders@chromium.org>,
Yakir Yang <ykk@rock-chips.com>,
Russell King <rmk+kernel@arm.linux.org.uk>,
Andy Yan <andy.yan@rock-chips.com>
Subject: [PATCH v5 1/6] drm: bridge/dw_hdmi: add audio support for more display resolutions
Date: Sat, 20 Jun 2015 00:19:12 +0800 [thread overview]
Message-ID: <1434730752-10829-1-git-send-email-ykk@rock-chips.com> (raw)
In-Reply-To: <1434730417-10629-1-git-send-email-ykk@rock-chips.com>
Just like HDMISpecification 1.4 document descripted, the soure shall
determine the fractional relationship between the TMDS clock an an
audio reference clock, the sink may then recreate the audio clock from
the TMDS clock by using an clock divider. So if we can make sink generate
the correct samplerate, then we can say those display resolutions with
this pixelclock could support audio play.
The exact relationship between the two clocks will be:
128 * SampleRate = TmdsClock * N / CTS.
So this patch would generate the correct N/CTS values, add audio support
for the below tmds clocks:
25.175MHz, 40MHz, 54MHz, 65MHz, 74.25MHz, 83.5MHz, 106.5MHz, 108Mhz
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
---
Changes in v5:
- make more words in commit message.
Changes in v4: None
Changes in v3: None
Changes in v2: None
drivers/gpu/drm/bridge/dw_hdmi.c | 56 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c
index dc0aed1..f717a2a 100644
--- a/drivers/gpu/drm/bridge/dw_hdmi.c
+++ b/drivers/gpu/drm/bridge/dw_hdmi.c
@@ -222,8 +222,24 @@ static unsigned int hdmi_compute_n(unsigned int freq, unsigned long pixel_clk,
case 44100:
if (pixel_clk == 25170000)
n = 7007;
+ else if (pixel_clk == 25175000)
+ n = 28224;
+ else if (pixel_clk == 40000000)
+ n = 7056;
+ else if (pixel_clk == 54000000)
+ n = 6272;
+ else if (pixel_clk == 65000000)
+ n = 7056;
else if (pixel_clk == 74170000)
n = 17836;
+ else if (pixel_clk == 74250000)
+ n = 6272;
+ else if (pixel_clk == 83500000)
+ n = 7056;
+ else if (pixel_clk == 106500000)
+ n = 4074;
+ else if (pixel_clk == 108000000)
+ n = 4018;
else if (pixel_clk == 148350000)
n = (ratio == 150) ? 17836 : 8918;
else
@@ -233,10 +249,26 @@ static unsigned int hdmi_compute_n(unsigned int freq, unsigned long pixel_clk,
case 48000:
if (pixel_clk == 25170000)
n = (ratio == 150) ? 9152 : 6864;
+ else if (pixel_clk == 25175000)
+ n = 6144;
else if (pixel_clk == 27020000)
n = (ratio == 150) ? 8192 : 6144;
+ else if (pixel_clk == 40000000)
+ n = 6144;
+ else if (pixel_clk == 54000000)
+ n = 6144;
+ else if (pixel_clk == 65000000)
+ n = 6144;
else if (pixel_clk == 74170000)
n = 11648;
+ else if (pixel_clk == 74250000)
+ n = 6144;
+ else if (pixel_clk == 83500000)
+ n = 6144;
+ else if (pixel_clk == 106500000)
+ n = 6144;
+ else if (pixel_clk == 108000000)
+ n = 6144;
else if (pixel_clk == 148350000)
n = (ratio == 150) ? 11648 : 5824;
else
@@ -284,10 +316,16 @@ static unsigned int hdmi_compute_cts(unsigned int freq, unsigned long pixel_clk,
case 96000:
case 192000:
switch (pixel_clk) {
+ case 25175000:
case 25200000:
case 27000000:
+ case 40000000:
case 54000000:
+ case 65000000:
case 74250000:
+ case 83500000:
+ case 106500000:
+ case 108000000:
case 148500000:
cts = pixel_clk / 1000;
break;
@@ -308,18 +346,36 @@ static unsigned int hdmi_compute_cts(unsigned int freq, unsigned long pixel_clk,
case 88200:
case 176400:
switch (pixel_clk) {
+ case 25175000:
+ cts = 125875;
+ break;
case 25200000:
cts = 28000;
break;
case 27000000:
cts = 30000;
break;
+ case 40000000:
+ cts = 50000;
+ break;
case 54000000:
cts = 60000;
break;
+ case 65000000:
+ cts = 81250;
+ break;
case 74250000:
cts = 82500;
break;
+ case 83500000:
+ cts = 104375;
+ break;
+ case 106500000:
+ cts = 88750;
+ break;
+ case 108000000:
+ cts = 76875;
+ break;
case 148500000:
cts = 165000;
break;
--
2.1.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-06-19 16:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-19 16:13 [PATCH v5 0/6] Add dw_hdmi i2s audio support Yakir Yang
2015-06-19 16:19 ` Yakir Yang [this message]
2015-06-19 16:44 ` [PATCH v5 1/6] drm: bridge/dw_hdmi: add audio support for more display resolutions Russell King - ARM Linux
2015-07-22 19:05 ` Russell King - ARM Linux
2015-06-19 16:21 ` [PATCH v5 2/6] drm: bridge/dw_hdmi: enable audio when sink device is HDMI and has audio Yakir Yang
2015-06-19 16:24 ` [PATCH v5 3/6] drm: bridge/dw_hdmi: rename dw_hdmi-ahb-audio.h to dw_hdmi-audio.h Yakir Yang
2015-06-19 16:28 ` [PATCH v5 4/6] drm: bridge/dw_hdmi-i2s-audio: add audio driver Yakir Yang
2015-06-22 10:06 ` Paul Bolle
2015-06-22 10:10 ` Russell King - ARM Linux
2015-06-23 3:07 ` Yakir Yang
2015-06-23 3:03 ` Yakir Yang
2015-06-23 3:06 ` Yakir Yang
2015-08-08 15:35 ` Russell King - ARM Linux
2015-08-09 6:17 ` Yakir Yang
2015-08-25 6:52 ` Mark Brown
2015-06-19 16:31 ` [PATCH v5 5/6] ASoC: rockchip/rockchip-hdmi-audio: add sound driver for hdmi audio Yakir Yang
2015-06-19 16:33 ` [PATCH v5 6/6] dt-bindings: Add documentation for rockchip-hdmi-audio driver Yakir Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1434730752-10829-1-git-send-email-ykk@rock-chips.com \
--to=ykk@rock-chips.com \
--cc=andy.yan@rock-chips.com \
--cc=dianders@chromium.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=fabio.estevam@freescale.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=rmk+kernel@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox