Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 310359
b: refs/heads/master
c: 25a6535
h: refs/heads/master
i:
  310357: d4a7fd1
  310355: f387ba4
  310351: 11a05e3
v: v3
  • Loading branch information
Ricardo Neri authored and Tomi Valkeinen committed May 11, 2012
1 parent b4868b3 commit 1075e74
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 35547626f3cc527d5e899bbfbac6b9e373f47aa0
refs/heads/master: 25a653597ee63119a477e9bdeb6b41bd7cd56140
88 changes: 74 additions & 14 deletions trunk/drivers/video/omap2/dss/hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,7 @@ static void hdmi_put_clocks(void)
int hdmi_compute_acr(u32 sample_freq, u32 *n, u32 *cts)
{
u32 deep_color;
bool deep_color_correct = false;
u32 pclk = hdmi.ip_data.cfg.timings.pixel_clock;

if (n == NULL || cts == NULL)
Expand All @@ -566,29 +567,88 @@ int hdmi_compute_acr(u32 sample_freq, u32 *n, u32 *cts)
/* TODO: When implemented, query deep color mode here. */
deep_color = 100;

/*
* When using deep color, the default N value (as in the HDMI
* specification) yields to an non-integer CTS. Hence, we
* modify it while keeping the restrictions described in
* section 7.2.1 of the HDMI 1.4a specification.
*/
switch (sample_freq) {
case 32000:
if ((deep_color == 125) && ((pclk == 54054) ||
(pclk == 74250)))
*n = 8192;
else
*n = 4096;
case 48000:
case 96000:
case 192000:
if (deep_color == 125)
if (pclk == 27027 || pclk == 74250)
deep_color_correct = true;
if (deep_color == 150)
if (pclk == 27027)
deep_color_correct = true;
break;
case 44100:
*n = 6272;
break;
case 48000:
if ((deep_color == 125) && ((pclk == 54054) ||
(pclk == 74250)))
*n = 8192;
else
*n = 6144;
case 88200:
case 176400:
if (deep_color == 125)
if (pclk == 27027)
deep_color_correct = true;
break;
default:
*n = 0;
return -EINVAL;
}

if (deep_color_correct) {
switch (sample_freq) {
case 32000:
*n = 8192;
break;
case 44100:
*n = 12544;
break;
case 48000:
*n = 8192;
break;
case 88200:
*n = 25088;
break;
case 96000:
*n = 16384;
break;
case 176400:
*n = 50176;
break;
case 192000:
*n = 32768;
break;
default:
return -EINVAL;
}
} else {
switch (sample_freq) {
case 32000:
*n = 4096;
break;
case 44100:
*n = 6272;
break;
case 48000:
*n = 6144;
break;
case 88200:
*n = 12544;
break;
case 96000:
*n = 12288;
break;
case 176400:
*n = 25088;
break;
case 192000:
*n = 24576;
break;
default:
return -EINVAL;
}
}
/* Calculate CTS. See HDMI 1.3a or 1.4a specifications */
*cts = pclk * (*n / 128) * deep_color / (sample_freq / 10);

Expand Down

0 comments on commit 1075e74

Please sign in to comment.