summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
diff options
context:
space:
mode:
authorCharlene Liu2017-02-17 04:28:46 +0100
committerAlex Deucher2017-09-26 23:15:30 +0200
commit87b58768eccd311fdc7694c09966754d5ce90538 (patch)
treee9b67ecdd12a275e907012d667cb2c6ad2771661 /drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
parentdrm/amd/display: Fix error where wrong payload size is given. (diff)
downloadkernel-qcow2-linux-87b58768eccd311fdc7694c09966754d5ce90538.tar.gz
kernel-qcow2-linux-87b58768eccd311fdc7694c09966754d5ce90538.tar.xz
kernel-qcow2-linux-87b58768eccd311fdc7694c09966754d5ce90538.zip
drm/amd/display: audio bug fix part 1: Add missing audio ACR
Signed-off-by: Charlene Liu <charlene.liu@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c')
-rw-r--r--drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c81
1 files changed, 56 insertions, 25 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
index a28d9c7ba17e..aba392ff5095 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
@@ -848,7 +848,7 @@ struct audio_clock_info {
/* 148.5MHz/1.001*/
/* 148.5MHz*/
-static const struct audio_clock_info audio_clock_info_table[12] = {
+static const struct audio_clock_info audio_clock_info_table[16] = {
{2517, 4576, 28125, 7007, 31250, 6864, 28125},
{2518, 4576, 28125, 7007, 31250, 6864, 28125},
{2520, 4096, 25200, 6272, 28000, 6144, 25200},
@@ -860,37 +860,63 @@ static const struct audio_clock_info audio_clock_info_table[12] = {
{7417, 11648, 210937, 17836, 234375, 11648, 140625},
{7425, 4096, 74250, 6272, 82500, 6144, 74250},
{14835, 11648, 421875, 8918, 234375, 5824, 140625},
- {14850, 4096, 148500, 6272, 165000, 6144, 148500}
+ {14850, 4096, 148500, 6272, 165000, 6144, 148500},
+ {29670, 5824, 421875, 4459, 234375, 5824, 281250},
+ {29700, 3072, 222750, 4704, 247500, 5120, 247500},
+ {59340, 5824, 843750, 8918, 937500, 5824, 562500},
+ {59400, 3072, 445500, 9408, 990000, 6144, 594000}
};
-static const struct audio_clock_info audio_clock_info_table_36bpc[12] = {
- {2517, 9152, 84375, 7007, 48875, 9152, 56250},
- {2518, 9152, 84375, 7007, 48875, 9152, 56250},
- {2520, 4096, 37800, 6272, 42000, 6144, 37800},
- {2700, 4096, 40500, 6272, 45000, 6144, 40500},
- {2702, 8192, 81081, 6272, 45045, 8192, 54054},
- {2703, 8192, 81081, 6272, 45045, 8192, 54054},
- {5400, 4096, 81000, 6272, 90000, 6144, 81000},
- {5405, 4096, 81081, 6272, 90090, 6144, 81081},
+static const struct audio_clock_info audio_clock_info_table_30bpc[14] = {
+ {2517, 9152, 70312, 14014, 78125, 9152, 46875},
+ {2518, 9152, 70312, 14014, 78125, 9152, 46875},
+ {2520, 4096, 31500, 6272, 35000, 6144, 31500},
+ {2700, 4096, 33750, 6272, 37500, 6144, 33750},
+ {2702, 8192, 67567, 12544, 75075, 8192, 45045},
+ {2703, 8192, 67567, 12544, 75075, 8192, 45045},
+ {5400, 4096, 67500, 6272, 75000, 6144, 67500},
+ {5405, 8192, 135135, 6272, 75075, 8192, 90090},
+ {7417, 11648, 263672, 17836, 292969, 11648, 175181},
+ {7425, 8192, 185625, 6272, 103125, 12288, 185625},
+ {14835, 11648, 527344, 17836, 585938, 11648, 351563},
+ {14850, 4096, 185625, 6272, 206250, 6144, 185625},
+ {29670, 11648, 527344, 17836, 585938, 11648, 703125},
+ {29700, 6144, 556875, 4704, 309375, 5120, 309375}
+};
+static const struct audio_clock_info audio_clock_info_table_36bpc[14] = {
+ {2517, 9152, 84375, 7007, 48875, 9152, 56250},
+ {2518, 9152, 84375, 7007, 48875, 9152, 56250},
+ {2520, 4096, 37800, 6272, 42000, 6144, 37800},
+ {2700, 4096, 40500, 6272, 45000, 6144, 40500},
+ {2702, 8192, 81081, 6272, 45045, 8192, 54054},
+ {2703, 8192, 81081, 6272, 45045, 8192, 54054},
+ {5400, 4096, 81000, 6272, 90000, 6144, 81000},
+ {5405, 4096, 81081, 6272, 90090, 6144, 81081},
{7417, 11648, 316406, 17836, 351562, 11648, 210937},
- {7425, 4096, 111375, 6272, 123750, 6144, 111375},
+ {7425, 4096, 111375, 6272, 123750, 6144, 111375},
{14835, 11648, 632812, 17836, 703125, 11648, 421875},
- {14850, 4096, 222750, 6272, 247500, 6144, 222750}
+ {14850, 4096, 222750, 6272, 247500, 6144, 222750},
+ {29670, 5824, 632812, 8918, 703125, 5824, 421875},
+ {29700, 4096, 445500, 4704, 371250, 5120, 371250}
};
-static const struct audio_clock_info audio_clock_info_table_48bpc[12] = {
- {2517, 4576, 56250, 7007, 62500, 6864, 56250},
- {2518, 4576, 56250, 7007, 62500, 6864, 56250},
- {2520, 4096, 50400, 6272, 56000, 6144, 50400},
- {2700, 4096, 54000, 6272, 60000, 6144, 54000},
- {2702, 4096, 54054, 6267, 60060, 8192, 54054},
- {2703, 4096, 54054, 6272, 60060, 8192, 54054},
- {5400, 4096, 108000, 6272, 120000, 6144, 108000},
- {5405, 4096, 108108, 6272, 120120, 6144, 108108},
+static const struct audio_clock_info audio_clock_info_table_48bpc[14] = {
+ {2517, 4576, 56250, 7007, 62500, 6864, 56250},
+ {2518, 4576, 56250, 7007, 62500, 6864, 56250},
+ {2520, 4096, 50400, 6272, 56000, 6144, 50400},
+ {2700, 4096, 54000, 6272, 60000, 6144, 54000},
+ {2702, 4096, 54054, 6267, 60060, 8192, 54054},
+ {2703, 4096, 54054, 6272, 60060, 8192, 54054},
+ {5400, 4096, 108000, 6272, 120000, 6144, 108000},
+ {5405, 4096, 108108, 6272, 120120, 6144, 108108},
{7417, 11648, 421875, 17836, 468750, 11648, 281250},
- {7425, 4096, 148500, 6272, 165000, 6144, 148500},
- {14835, 11648, 843750, 8918, 468750, 11648, 281250},
- {14850, 4096, 297000, 6272, 330000, 6144, 297000}
+ {7425, 4096, 148500, 6272, 165000, 6144, 148500},
+ {14835, 11648, 843750, 8918, 468750, 11648, 281250},
+ {14850, 4096, 297000, 6272, 330000, 6144, 297000},
+ {29670, 5824, 843750, 4459, 468750, 5824, 562500},
+ {29700, 3072, 445500, 4704, 495000, 5120, 495000}
+
+
};
union audio_cea_channels speakers_to_channels(
@@ -973,6 +999,11 @@ bool get_audio_clock_info(
audio_array_size = ARRAY_SIZE(
audio_clock_info_table_36bpc);
break;
+ case COLOR_DEPTH_101010:
+ clock_info = audio_clock_info_table_30bpc;
+ audio_array_size = ARRAY_SIZE(
+ audio_clock_info_table_30bpc);
+ break;
default:
clock_info = audio_clock_info_table;
audio_array_size = ARRAY_SIZE(