diff options
author | Seung-Woo Kim <sw0312.kim@samsung.com> | 2012-03-16 05:47:16 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-03-20 05:41:46 -0400 |
commit | 3e148baf464e5b5690ba68f3c310b06024bb862b (patch) | |
tree | cf25742d54a38b13054c420e13f03ab11d47e8ad /drivers/gpu/drm/exynos/regs-hdmi.h | |
parent | ba3849d56bd7adc8cd1254a261e75550a1d91c8a (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.h | 182 |
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) |