aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/regs-hdmi.h
diff options
context:
space:
mode:
authorSeung-Woo Kim <sw0312.kim@samsung.com>2012-03-16 05:47:16 -0400
committerDave Airlie <airlied@redhat.com>2012-03-20 05:41:46 -0400
commit3e148baf464e5b5690ba68f3c310b06024bb862b (patch)
treecf25742d54a38b13054c420e13f03ab11d47e8ad /drivers/gpu/drm/exynos/regs-hdmi.h
parentba3849d56bd7adc8cd1254a261e75550a1d91c8a (diff)
drm/exynos: enable hdmi audio feature
This patch adds hdmi audio feature for exynos drm. With this patch, i2s channel feeds audio data in hdmi when hdmi is connected. Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/regs-hdmi.h')
-rw-r--r--drivers/gpu/drm/exynos/regs-hdmi.h182
1 files changed, 182 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/regs-hdmi.h b/drivers/gpu/drm/exynos/regs-hdmi.h
index 6b287158f76e..3c04bea842ce 100644
--- a/drivers/gpu/drm/exynos/regs-hdmi.h
+++ b/drivers/gpu/drm/exynos/regs-hdmi.h
@@ -22,6 +22,7 @@
22/* HDMI Version 1.3 & Common */ 22/* HDMI Version 1.3 & Common */
23#define HDMI_CTRL_BASE(x) ((x) + 0x00000000) 23#define HDMI_CTRL_BASE(x) ((x) + 0x00000000)
24#define HDMI_CORE_BASE(x) ((x) + 0x00010000) 24#define HDMI_CORE_BASE(x) ((x) + 0x00010000)
25#define HDMI_I2S_BASE(x) ((x) + 0x00040000)
25#define HDMI_TG_BASE(x) ((x) + 0x00050000) 26#define HDMI_TG_BASE(x) ((x) + 0x00050000)
26 27
27/* Control registers */ 28/* Control registers */
@@ -132,6 +133,9 @@
132 133
133/* HDMI_CON_0 */ 134/* HDMI_CON_0 */
134#define HDMI_BLUE_SCR_EN (1 << 5) 135#define HDMI_BLUE_SCR_EN (1 << 5)
136#define HDMI_ASP_EN (1 << 2)
137#define HDMI_ASP_DIS (0 << 2)
138#define HDMI_ASP_MASK (1 << 2)
135#define HDMI_EN (1 << 0) 139#define HDMI_EN (1 << 0)
136 140
137/* HDMI_PHY_STATUS */ 141/* HDMI_PHY_STATUS */
@@ -140,6 +144,8 @@
140/* HDMI_MODE_SEL */ 144/* HDMI_MODE_SEL */
141#define HDMI_MODE_HDMI_EN (1 << 1) 145#define HDMI_MODE_HDMI_EN (1 << 1)
142#define HDMI_MODE_DVI_EN (1 << 0) 146#define HDMI_MODE_DVI_EN (1 << 0)
147#define HDMI_DVI_MODE_EN (1)
148#define HDMI_DVI_MODE_DIS (0)
143#define HDMI_MODE_MASK (3 << 0) 149#define HDMI_MODE_MASK (3 << 0)
144 150
145/* HDMI_TG_CMD */ 151/* HDMI_TG_CMD */
@@ -268,6 +274,9 @@
268#define HDMI_ACR_MCTS0 HDMI_CORE_BASE(0x0410) 274#define HDMI_ACR_MCTS0 HDMI_CORE_BASE(0x0410)
269#define HDMI_ACR_MCTS1 HDMI_CORE_BASE(0x0414) 275#define HDMI_ACR_MCTS1 HDMI_CORE_BASE(0x0414)
270#define HDMI_ACR_MCTS2 HDMI_CORE_BASE(0x0418) 276#define HDMI_ACR_MCTS2 HDMI_CORE_BASE(0x0418)
277#define HDMI_ACR_CTS0 HDMI_CORE_BASE(0x0420)
278#define HDMI_ACR_CTS1 HDMI_CORE_BASE(0x0424)
279#define HDMI_ACR_CTS2 HDMI_CORE_BASE(0x0428)
271#define HDMI_ACR_N0 HDMI_CORE_BASE(0x0430) 280#define HDMI_ACR_N0 HDMI_CORE_BASE(0x0430)
272#define HDMI_ACR_N1 HDMI_CORE_BASE(0x0434) 281#define HDMI_ACR_N1 HDMI_CORE_BASE(0x0434)
273#define HDMI_ACR_N2 HDMI_CORE_BASE(0x0438) 282#define HDMI_ACR_N2 HDMI_CORE_BASE(0x0438)
@@ -368,6 +377,179 @@
368#define HDMI_BLUE_SCREEN_R_0 HDMI_CORE_BASE(0xD530) 377#define HDMI_BLUE_SCREEN_R_0 HDMI_CORE_BASE(0xD530)
369#define HDMI_BLUE_SCREEN_R_1 HDMI_CORE_BASE(0xD534) 378#define HDMI_BLUE_SCREEN_R_1 HDMI_CORE_BASE(0xD534)
370 379
380/* HDMI I2S register */
381#define HDMI_I2S_CLK_CON HDMI_I2S_BASE(0x000)
382#define HDMI_I2S_CON_1 HDMI_I2S_BASE(0x004)
383#define HDMI_I2S_CON_2 HDMI_I2S_BASE(0x008)
384#define HDMI_I2S_PIN_SEL_0 HDMI_I2S_BASE(0x00c)
385#define HDMI_I2S_PIN_SEL_1 HDMI_I2S_BASE(0x010)
386#define HDMI_I2S_PIN_SEL_2 HDMI_I2S_BASE(0x014)
387#define HDMI_I2S_PIN_SEL_3 HDMI_I2S_BASE(0x018)
388#define HDMI_I2S_DSD_CON HDMI_I2S_BASE(0x01c)
389#define HDMI_I2S_MUX_CON HDMI_I2S_BASE(0x020)
390#define HDMI_I2S_CH_ST_CON HDMI_I2S_BASE(0x024)
391#define HDMI_I2S_CH_ST_0 HDMI_I2S_BASE(0x028)
392#define HDMI_I2S_CH_ST_1 HDMI_I2S_BASE(0x02c)
393#define HDMI_I2S_CH_ST_2 HDMI_I2S_BASE(0x030)
394#define HDMI_I2S_CH_ST_3 HDMI_I2S_BASE(0x034)
395#define HDMI_I2S_CH_ST_4 HDMI_I2S_BASE(0x038)
396#define HDMI_I2S_CH_ST_SH_0 HDMI_I2S_BASE(0x03c)
397#define HDMI_I2S_CH_ST_SH_1 HDMI_I2S_BASE(0x040)
398#define HDMI_I2S_CH_ST_SH_2 HDMI_I2S_BASE(0x044)
399#define HDMI_I2S_CH_ST_SH_3 HDMI_I2S_BASE(0x048)
400#define HDMI_I2S_CH_ST_SH_4 HDMI_I2S_BASE(0x04c)
401#define HDMI_I2S_MUX_CH HDMI_I2S_BASE(0x054)
402#define HDMI_I2S_MUX_CUV HDMI_I2S_BASE(0x058)
403
404/* I2S bit definition */
405
406/* I2S_CLK_CON */
407#define HDMI_I2S_CLK_DIS (0)
408#define HDMI_I2S_CLK_EN (1)
409
410/* I2S_CON_1 */
411#define HDMI_I2S_SCLK_FALLING_EDGE (0 << 1)
412#define HDMI_I2S_SCLK_RISING_EDGE (1 << 1)
413#define HDMI_I2S_L_CH_LOW_POL (0)
414#define HDMI_I2S_L_CH_HIGH_POL (1)
415
416/* I2S_CON_2 */
417#define HDMI_I2S_MSB_FIRST_MODE (0 << 6)
418#define HDMI_I2S_LSB_FIRST_MODE (1 << 6)
419#define HDMI_I2S_BIT_CH_32FS (0 << 4)
420#define HDMI_I2S_BIT_CH_48FS (1 << 4)
421#define HDMI_I2S_BIT_CH_RESERVED (2 << 4)
422#define HDMI_I2S_SDATA_16BIT (1 << 2)
423#define HDMI_I2S_SDATA_20BIT (2 << 2)
424#define HDMI_I2S_SDATA_24BIT (3 << 2)
425#define HDMI_I2S_BASIC_FORMAT (0)
426#define HDMI_I2S_L_JUST_FORMAT (2)
427#define HDMI_I2S_R_JUST_FORMAT (3)
428#define HDMI_I2S_CON_2_CLR (~(0xFF))
429#define HDMI_I2S_SET_BIT_CH(x) (((x) & 0x7) << 4)
430#define HDMI_I2S_SET_SDATA_BIT(x) (((x) & 0x7) << 2)
431
432/* I2S_PIN_SEL_0 */
433#define HDMI_I2S_SEL_SCLK(x) (((x) & 0x7) << 4)
434#define HDMI_I2S_SEL_LRCK(x) ((x) & 0x7)
435
436/* I2S_PIN_SEL_1 */
437#define HDMI_I2S_SEL_SDATA1(x) (((x) & 0x7) << 4)
438#define HDMI_I2S_SEL_SDATA2(x) ((x) & 0x7)
439
440/* I2S_PIN_SEL_2 */
441#define HDMI_I2S_SEL_SDATA3(x) (((x) & 0x7) << 4)
442#define HDMI_I2S_SEL_SDATA2(x) ((x) & 0x7)
443
444/* I2S_PIN_SEL_3 */
445#define HDMI_I2S_SEL_DSD(x) ((x) & 0x7)
446
447/* I2S_DSD_CON */
448#define HDMI_I2S_DSD_CLK_RI_EDGE (1 << 1)
449#define HDMI_I2S_DSD_CLK_FA_EDGE (0 << 1)
450#define HDMI_I2S_DSD_ENABLE (1)
451#define HDMI_I2S_DSD_DISABLE (0)
452
453/* I2S_MUX_CON */
454#define HDMI_I2S_NOISE_FILTER_ZERO (0 << 5)
455#define HDMI_I2S_NOISE_FILTER_2_STAGE (1 << 5)
456#define HDMI_I2S_NOISE_FILTER_3_STAGE (2 << 5)
457#define HDMI_I2S_NOISE_FILTER_4_STAGE (3 << 5)
458#define HDMI_I2S_NOISE_FILTER_5_STAGE (4 << 5)
459#define HDMI_I2S_IN_DISABLE (1 << 4)
460#define HDMI_I2S_IN_ENABLE (0 << 4)
461#define HDMI_I2S_AUD_SPDIF (0 << 2)
462#define HDMI_I2S_AUD_I2S (1 << 2)
463#define HDMI_I2S_AUD_DSD (2 << 2)
464#define HDMI_I2S_CUV_SPDIF_ENABLE (0 << 1)
465#define HDMI_I2S_CUV_I2S_ENABLE (1 << 1)
466#define HDMI_I2S_MUX_DISABLE (0)
467#define HDMI_I2S_MUX_ENABLE (1)
468#define HDMI_I2S_MUX_CON_CLR (~(0xFF))
469
470/* I2S_CH_ST_CON */
471#define HDMI_I2S_CH_STATUS_RELOAD (1)
472#define HDMI_I2S_CH_ST_CON_CLR (~(1))
473
474/* I2S_CH_ST_0 / I2S_CH_ST_SH_0 */
475#define HDMI_I2S_CH_STATUS_MODE_0 (0 << 6)
476#define HDMI_I2S_2AUD_CH_WITHOUT_PREEMPH (0 << 3)
477#define HDMI_I2S_2AUD_CH_WITH_PREEMPH (1 << 3)
478#define HDMI_I2S_DEFAULT_EMPHASIS (0 << 3)
479#define HDMI_I2S_COPYRIGHT (0 << 2)
480#define HDMI_I2S_NO_COPYRIGHT (1 << 2)
481#define HDMI_I2S_LINEAR_PCM (0 << 1)
482#define HDMI_I2S_NO_LINEAR_PCM (1 << 1)
483#define HDMI_I2S_CONSUMER_FORMAT (0)
484#define HDMI_I2S_PROF_FORMAT (1)
485#define HDMI_I2S_CH_ST_0_CLR (~(0xFF))
486
487/* I2S_CH_ST_1 / I2S_CH_ST_SH_1 */
488#define HDMI_I2S_CD_PLAYER (0x00)
489#define HDMI_I2S_DAT_PLAYER (0x03)
490#define HDMI_I2S_DCC_PLAYER (0x43)
491#define HDMI_I2S_MINI_DISC_PLAYER (0x49)
492
493/* I2S_CH_ST_2 / I2S_CH_ST_SH_2 */
494#define HDMI_I2S_CHANNEL_NUM_MASK (0xF << 4)
495#define HDMI_I2S_SOURCE_NUM_MASK (0xF)
496#define HDMI_I2S_SET_CHANNEL_NUM(x) (((x) & (0xF)) << 4)
497#define HDMI_I2S_SET_SOURCE_NUM(x) ((x) & (0xF))
498
499/* I2S_CH_ST_3 / I2S_CH_ST_SH_3 */
500#define HDMI_I2S_CLK_ACCUR_LEVEL_1 (1 << 4)
501#define HDMI_I2S_CLK_ACCUR_LEVEL_2 (0 << 4)
502#define HDMI_I2S_CLK_ACCUR_LEVEL_3 (2 << 4)
503#define HDMI_I2S_SMP_FREQ_44_1 (0x0)
504#define HDMI_I2S_SMP_FREQ_48 (0x2)
505#define HDMI_I2S_SMP_FREQ_32 (0x3)
506#define HDMI_I2S_SMP_FREQ_96 (0xA)
507#define HDMI_I2S_SET_SMP_FREQ(x) ((x) & (0xF))
508
509/* I2S_CH_ST_4 / I2S_CH_ST_SH_4 */
510#define HDMI_I2S_ORG_SMP_FREQ_44_1 (0xF << 4)
511#define HDMI_I2S_ORG_SMP_FREQ_88_2 (0x7 << 4)
512#define HDMI_I2S_ORG_SMP_FREQ_22_05 (0xB << 4)
513#define HDMI_I2S_ORG_SMP_FREQ_176_4 (0x3 << 4)
514#define HDMI_I2S_WORD_LEN_NOT_DEFINE (0x0 << 1)
515#define HDMI_I2S_WORD_LEN_MAX24_20BITS (0x1 << 1)
516#define HDMI_I2S_WORD_LEN_MAX24_22BITS (0x2 << 1)
517#define HDMI_I2S_WORD_LEN_MAX24_23BITS (0x4 << 1)
518#define HDMI_I2S_WORD_LEN_MAX24_24BITS (0x5 << 1)
519#define HDMI_I2S_WORD_LEN_MAX24_21BITS (0x6 << 1)
520#define HDMI_I2S_WORD_LEN_MAX20_16BITS (0x1 << 1)
521#define HDMI_I2S_WORD_LEN_MAX20_18BITS (0x2 << 1)
522#define HDMI_I2S_WORD_LEN_MAX20_19BITS (0x4 << 1)
523#define HDMI_I2S_WORD_LEN_MAX20_20BITS (0x5 << 1)
524#define HDMI_I2S_WORD_LEN_MAX20_17BITS (0x6 << 1)
525#define HDMI_I2S_WORD_LEN_MAX_24BITS (1)
526#define HDMI_I2S_WORD_LEN_MAX_20BITS (0)
527
528/* I2S_MUX_CH */
529#define HDMI_I2S_CH3_R_EN (1 << 7)
530#define HDMI_I2S_CH3_L_EN (1 << 6)
531#define HDMI_I2S_CH3_EN (3 << 6)
532#define HDMI_I2S_CH2_R_EN (1 << 5)
533#define HDMI_I2S_CH2_L_EN (1 << 4)
534#define HDMI_I2S_CH2_EN (3 << 4)
535#define HDMI_I2S_CH1_R_EN (1 << 3)
536#define HDMI_I2S_CH1_L_EN (1 << 2)
537#define HDMI_I2S_CH1_EN (3 << 2)
538#define HDMI_I2S_CH0_R_EN (1 << 1)
539#define HDMI_I2S_CH0_L_EN (1)
540#define HDMI_I2S_CH0_EN (3)
541#define HDMI_I2S_CH_ALL_EN (0xFF)
542#define HDMI_I2S_MUX_CH_CLR (~HDMI_I2S_CH_ALL_EN)
543
544/* I2S_MUX_CUV */
545#define HDMI_I2S_CUV_R_EN (1 << 1)
546#define HDMI_I2S_CUV_L_EN (1)
547#define HDMI_I2S_CUV_RL_EN (0x03)
548
549/* I2S_CUV_L_R */
550#define HDMI_I2S_CUV_R_DATA_MASK (0x7 << 4)
551#define HDMI_I2S_CUV_L_DATA_MASK (0x7)
552
371/* Timing generator registers */ 553/* Timing generator registers */
372/* TG configure/status registers */ 554/* TG configure/status registers */
373#define HDMI_TG_VACT_ST3_L HDMI_TG_BASE(0x0068) 555#define HDMI_TG_VACT_ST3_L HDMI_TG_BASE(0x0068)