All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/radeon/kms: add register definitions for audio
@ 2012-03-28 17:19 alexdeucher
  2012-03-29  7:53 ` Christian König
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: alexdeucher @ 2012-03-28 17:19 UTC (permalink / raw)
  To: airlied, dri-devel, zajec5; +Cc: Alex Deucher

From: Alex Deucher <alexander.deucher@amd.com>

This adds register definitions for HDMI/DP audio on
DCE2/3/4/5 hardware.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/radeon/evergreend.h |  220 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/radeon/r600d.h      |  236 +++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/radeon/rs600d.h     |   14 ++
 drivers/gpu/drm/radeon/rv770d.h     |  191 ++++++++++++++++++++++++++++
 4 files changed, 661 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
index eb5708c..3955d98 100644
--- a/drivers/gpu/drm/radeon/evergreend.h
+++ b/drivers/gpu/drm/radeon/evergreend.h
@@ -112,6 +112,226 @@
 #define	CP_SEM_INCOMPLETE_TIMER_CNTL			0x85C8
 #define	CP_DEBUG					0xC1FC
 
+/* Audio clocks */
+#define DCCG_AUDIO_DTO_SOURCE             0x05ac
+#       define DCCG_AUDIO_DTO0_SOURCE_SEL(x) ((x) << 0) /* crtc0 - crtc5 */
+#       define DCCG_AUDIO_DTO_SEL         (1 << 4) /* 0=dto0 1=dto1 */
+
+#define DCCG_AUDIO_DTO0_PHASE             0x05b0
+#define DCCG_AUDIO_DTO0_MODULE            0x05b4
+#define DCCG_AUDIO_DTO0_LOAD              0x05b8
+#define DCCG_AUDIO_DTO0_CNTL              0x05bc
+
+#define DCCG_AUDIO_DTO1_PHASE             0x05c0
+#define DCCG_AUDIO_DTO1_MODULE            0x05c4
+#define DCCG_AUDIO_DTO1_LOAD              0x05c8
+#define DCCG_AUDIO_DTO1_CNTL              0x05cc
+
+/* DCE 4.0 AFMT */
+#define HDMI_CONTROL                         0x7030
+#       define HDMI_KEEPOUT_MODE             (1 << 0)
+#       define HDMI_PACKET_GEN_VERSION       (1 << 4) /* 0 = r6xx compat */
+#       define HDMI_ERROR_ACK                (1 << 8)
+#       define HDMI_ERROR_MASK               (1 << 9)
+#       define HDMI_DEEP_COLOR_ENABLE        (1 << 24)
+#       define HDMI_DEEP_COLOR_DEPTH         (((x) & 3) << 28)
+#       define HDMI_24BIT_DEEP_COLOR         0
+#       define HDMI_30BIT_DEEP_COLOR         1
+#       define HDMI_36BIT_DEEP_COLOR         2
+#define HDMI_STATUS                          0x7034
+#       define HDMI_ACTIVE_AVMUTE            (1 << 0)
+#       define HDMI_AUDIO_PACKET_ERROR       (1 << 16)
+#       define HDMI_VBI_PACKET_ERROR         (1 << 20)
+#define HDMI_AUDIO_PACKET_CONTROL            0x7038
+#       define HDMI_AUDIO_DELAY_EN(x)        (((x) & 3) << 4)
+#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
+#define HDMI_ACR_PACKET_CONTROL              0x703c
+#       define HDMI_ACR_SEND                 (1 << 0)
+#       define HDMI_ACR_CONT                 (1 << 1)
+#       define HDMI_ACR_SELECT(x)            (((x) & 3) << 4)
+#       define HDMI_ACR_HW                   0
+#       define HDMI_ACR_32                   1
+#       define HDMI_ACR_44                   2
+#       define HDMI_ACR_48                   3
+#       define HDMI_ACR_SOURCE               (1 << 8) /* 0 - hw; 1 - cts value */
+#       define HDMI_ACR_AUTO_SEND            (1 << 12)
+#       define HDMI_ACR_N_MULTIPLE(x)        (((x) & 7) << 16)
+#       define HDMI_ACR_X1                   1
+#       define HDMI_ACR_X2                   2
+#       define HDMI_ACR_X4                   4
+#       define HDMI_ACR_AUDIO_PRIORITY       (1 << 31)
+#define HDMI_VBI_PACKET_CONTROL              0x7040
+#       define HDMI_NULL_SEND                (1 << 0)
+#       define HDMI_GC_SEND                  (1 << 4)
+#       define HDMI_GC_CONT                  (1 << 5) /* 0 - once; 1 - every frame */
+#define HDMI_INFOFRAME_CONTROL0              0x7044
+#       define HDMI_AVI_INFO_SEND            (1 << 0)
+#       define HDMI_AVI_INFO_CONT            (1 << 1)
+#       define HDMI_AUDIO_INFO_SEND          (1 << 4)
+#       define HDMI_AUDIO_INFO_CONT          (1 << 5)
+#       define HDMI_MPEG_INFO_SEND           (1 << 8)
+#       define HDMI_MPEG_INFO_CONT           (1 << 9)
+#define HDMI_INFOFRAME_CONTROL1              0x7048
+#       define HDMI_AVI_INFO_LINE(x)         (((x) & 0x3f) << 0)
+#       define HDMI_AUDIO_INFO_LINE(x)       (((x) & 0x3f) << 8)
+#       define HDMI_MPEG_INFO_LINE(x)        (((x) & 0x3f) << 16)
+#define HDMI_GENERIC_PACKET_CONTROL          0x704c
+#       define HDMI_GENERIC0_SEND            (1 << 0)
+#       define HDMI_GENERIC0_CONT            (1 << 1)
+#       define HDMI_GENERIC1_SEND            (1 << 4)
+#       define HDMI_GENERIC1_CONT            (1 << 5)
+#       define HDMI_GENERIC0_LINE(x)         (((x) & 0x3f) << 16)
+#       define HDMI_GENERIC1_LINE(x)         (((x) & 0x3f) << 24)
+#define HDMI_GC                              0x7058
+#       define HDMI_GC_AVMUTE                (1 << 0)
+#       define HDMI_GC_AVMUTE_CONT           (1 << 2)
+#define AFMT_AUDIO_PACKET_CONTROL2           0x705c
+#       define AFMT_AUDIO_LAYOUT_OVRD        (1 << 0)
+#       define AFMT_AUDIO_LAYOUT_SELECT      (1 << 1)
+#       define AFMT_60958_CS_SOURCE          (1 << 4)
+#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x) & 0xff) << 8)
+#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x) & 0xff) << 16)
+#define AFMT_AVI_INFO0                       0x7084
+#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x) & 0xff) << 0)
+#       define AFMT_AVI_INFO_S(x)            (((x) & 3) << 8)
+#       define AFMT_AVI_INFO_B(x)            (((x) & 3) << 10)
+#       define AFMT_AVI_INFO_A(x)            (((x) & 1) << 12)
+#       define AFMT_AVI_INFO_Y(x)            (((x) & 3) << 13)
+#       define AFMT_AVI_INFO_Y_RGB           0
+#       define AFMT_AVI_INFO_Y_YCBCR422      1
+#       define AFMT_AVI_INFO_Y_YCBCR444      2
+#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x) & 0xff) << 8)
+#       define AFMT_AVI_INFO_R(x)            (((x) & 0xf) << 16)
+#       define AFMT_AVI_INFO_M(x)            (((x) & 0x3) << 20)
+#       define AFMT_AVI_INFO_C(x)            (((x) & 0x3) << 22)
+#       define AFMT_AVI_INFO_C_M_R(x)        (((x) & 0xff) << 16)
+#       define AFMT_AVI_INFO_SC(x)           (((x) & 0x3) << 24)
+#       define AFMT_AVI_INFO_Q(x)            (((x) & 0x3) << 26)
+#       define AFMT_AVI_INFO_EC(x)           (((x) & 0x3) << 28)
+#       define AFMT_AVI_INFO_ITC(x)          (((x) & 0x1) << 31)
+#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
+#define AFMT_AVI_INFO1                       0x7088
+#       define AFMT_AVI_INFO_VIC(x)          (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
+#       define AFMT_AVI_INFO_PR(x)           (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
+#       define AFMT_AVI_INFO_CN(x)           (((x) & 0x3) << 12)
+#       define AFMT_AVI_INFO_YQ(x)           (((x) & 0x3) << 14)
+#       define AFMT_AVI_INFO_TOP(x)          (((x) & 0xffff) << 16)
+#define AFMT_AVI_INFO2                       0x708c
+#       define AFMT_AVI_INFO_BOTTOM(x)       (((x) & 0xffff) << 0)
+#       define AFMT_AVI_INFO_LEFT(x)         (((x) & 0xffff) << 16)
+#define AFMT_AVI_INFO3                       0x7090
+#       define AFMT_AVI_INFO_RIGHT(x)        (((x) & 0xffff) << 0)
+#       define AFMT_AVI_INFO_VERSION(x)      (((x) & 3) << 24)
+#define AFMT_MPEG_INFO0                      0x7094
+#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x) & 0xff) << 0)
+#       define AFMT_MPEG_INFO_MB0(x)         (((x) & 0xff) << 8)
+#       define AFMT_MPEG_INFO_MB1(x)         (((x) & 0xff) << 16)
+#       define AFMT_MPEG_INFO_MB2(x)         (((x) & 0xff) << 24)
+#define AFMT_MPEG_INFO1                      0x7098
+#       define AFMT_MPEG_INFO_MB3(x)         (((x) & 0xff) << 0)
+#       define AFMT_MPEG_INFO_MF(x)          (((x) & 3) << 8)
+#       define AFMT_MPEG_INFO_FR(x)          (((x) & 1) << 12)
+#define AFMT_GENERIC0_HDR                    0x709c
+#define AFMT_GENERIC0_0                      0x70a0
+#define AFMT_GENERIC0_1                      0x70a4
+#define AFMT_GENERIC0_2                      0x70a8
+#define AFMT_GENERIC0_3                      0x70ac
+#define AFMT_GENERIC0_4                      0x70b0
+#define AFMT_GENERIC0_5                      0x70b4
+#define AFMT_GENERIC0_6                      0x70b8
+#define AFMT_GENERIC1_HDR                    0x70bc
+#define AFMT_GENERIC1_0                      0x70c0
+#define AFMT_GENERIC1_1                      0x70c4
+#define AFMT_GENERIC1_2                      0x70c8
+#define AFMT_GENERIC1_3                      0x70cc
+#define AFMT_GENERIC1_4                      0x70d0
+#define AFMT_GENERIC1_5                      0x70d4
+#define AFMT_GENERIC1_6                      0x70d8
+#define HDMI_ACR_32_0                        0x70dc
+#       define HDMI_ACR_CTS_32(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_32_1                        0x70e0
+#       define HDMI_ACR_N_32(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_44_0                        0x70e4
+#       define HDMI_ACR_CTS_44(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_44_1                        0x70e8
+#       define HDMI_ACR_N_44(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_48_0                        0x70ec
+#       define HDMI_ACR_CTS_48(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_48_1                        0x70f0
+#       define HDMI_ACR_N_48(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_STATUS_0                    0x70f4
+#define HDMI_ACR_STATUS_1                    0x70f8
+#define AFMT_AUDIO_INFO0                     0x70fc
+#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x) & 0xff) << 0)
+#       define AFMT_AUDIO_INFO_CC(x)         (((x) & 7) << 8)
+#       define AFMT_AUDIO_INFO_CT(x)         (((x) & 0xf) << 11)
+#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x) & 0xff) << 16)
+#       define AFMT_AUDIO_INFO_CXT(x)        (((x) & 0x1f) << 24)
+#define AFMT_AUDIO_INFO1                     0x7100
+#       define AFMT_AUDIO_INFO_CA(x)         (((x) & 0xff) << 0)
+#       define AFMT_AUDIO_INFO_LSV(x)        (((x) & 0xf) << 11)
+#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x) & 1) << 15)
+#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x) & 0xff) << 8)
+#       define AFMT_AUDIO_INFO_LFEBPL(x)     (((x) & 3) << 16)
+#define AFMT_60958_0                         0x7104
+#       define AFMT_60958_CS_A(x)            (((x) & 1) << 0)
+#       define AFMT_60958_CS_B(x)            (((x) & 1) << 1)
+#       define AFMT_60958_CS_C(x)            (((x) & 1) << 2)
+#       define AFMT_60958_CS_D(x)            (((x) & 3) << 3)
+#       define AFMT_60958_CS_MODE(x)         (((x) & 3) << 6)
+#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
+#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
+#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
+#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
+#define AFMT_60958_1                         0x7108
+#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x) & 0xf) << 0)
+#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
+#       define AFMT_60958_CS_VALID_L(x)      (((x) & 1) << 16)
+#       define AFMT_60958_CS_VALID_R(x)      (((x) & 1) << 18)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
+#define AFMT_AUDIO_CRC_CONTROL               0x710c
+#       define AFMT_AUDIO_CRC_EN             (1 << 0)
+#define AFMT_RAMP_CONTROL0                   0x7110
+#       define AFMT_RAMP_MAX_COUNT(x)        (((x) & 0xffffff) << 0)
+#       define AFMT_RAMP_DATA_SIGN           (1 << 31)
+#define AFMT_RAMP_CONTROL1                   0x7114
+#       define AFMT_RAMP_MIN_COUNT(x)        (((x) & 0xffffff) << 0)
+#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x) & 0xff) << 24)
+#define AFMT_RAMP_CONTROL2                   0x7118
+#       define AFMT_RAMP_INC_COUNT(x)        (((x) & 0xffffff) << 0)
+#define AFMT_RAMP_CONTROL3                   0x711c
+#       define AFMT_RAMP_DEC_COUNT(x)        (((x) & 0xffffff) << 0)
+#define AFMT_60958_2                         0x7120
+#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
+#define AFMT_STATUS                          0x7128
+#       define AFMT_AUDIO_ENABLE             (1 << 4)
+#       define AFMT_AUDIO_HBR_ENABLE         (1 << 8)
+#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
+#define AFMT_AUDIO_PACKET_CONTROL            0x712c
+#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
+#       define AFMT_RESET_FIFO_WHEN_AUDIO_DIS (1 << 11) /* set to 1 */
+#       define AFMT_AUDIO_TEST_EN            (1 << 12)
+#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
+#       define AFMT_60958_CS_UPDATE          (1 << 26)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
+#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
+#define AFMT_VBI_PACKET_CONTROL              0x7130
+#       define AFMT_GENERIC0_UPDATE          (1 << 2)
+#define AFMT_INFOFRAME_CONTROL0              0x7134
+#       define AFMT_AUDIO_INFO_SOURCE        (1 << 6) /* 0 - sound block; 1 - afmt regs */
+#       define AFMT_AUDIO_INFO_UPDATE        (1 << 7)
+#       define AFMT_MPEG_INFO_UPDATE         (1 << 10)
+#define AFMT_GENERIC0_7                      0x7138
 
 #define	GC_USER_SHADER_PIPE_CONFIG			0x8954
 #define		INACTIVE_QD_PIPES(x)				((x) << 8)
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
index 3568a2e..7f0c223 100644
--- a/drivers/gpu/drm/radeon/r600d.h
+++ b/drivers/gpu/drm/radeon/r600d.h
@@ -816,6 +816,242 @@
 #       define TARGET_LINK_SPEED_MASK                     (0xf << 0)
 #       define SELECTABLE_DEEMPHASIS                      (1 << 6)
 
+/* Audio clocks */
+#define DCCG_AUDIO_DTO0_PHASE             0x0514
+#define DCCG_AUDIO_DTO0_MODULE            0x0518
+#define DCCG_AUDIO_DTO0_LOAD              0x051c
+#       define DTO_LOAD                   (1 << 31)
+#define DCCG_AUDIO_DTO0_CNTL              0x0520
+
+#define DCCG_AUDIO_DTO1_PHASE             0x0524
+#define DCCG_AUDIO_DTO1_MODULE            0x0528
+#define DCCG_AUDIO_DTO1_LOAD              0x052c
+#define DCCG_AUDIO_DTO1_CNTL              0x0530
+
+#define DCCG_AUDIO_DTO_SELECT             0x0534
+
+/* digital blocks */
+#define TMDSA_CNTL                       0x7880
+#       define TMDSA_HDMI_EN             (1 << 2)
+#define LVTMA_CNTL                       0x7a80
+#       define LVTMA_HDMI_EN             (1 << 2)
+#define DDIA_CNTL                        0x7200
+#       define DDIA_HDMI_EN              (1 << 2)
+#define DIG0_CNTL                        0x75a0
+#       define DIG_MODE(x)               (((x) & 7) << 8)
+#       define DIG_MODE_DP               0
+#       define DIG_MODE_LVDS             1
+#       define DIG_MODE_TMDS_DVI         2
+#       define DIG_MODE_TMDS_HDMI        3
+#       define DIG_MODE_SDVO             4
+#define DIG1_CNTL                        0x79a0
+
+/* rs6xx/rs740 and r6xx share the same HDMI blocks, however, rs6xx has only one
+ * instance of the blocks while r6xx has 2.  DCE 3.0 cards are slightly
+ * different due to the new DIG blocks, but also have 2 instances.
+ * DCE 3.0 HDMI blocks are part of each DIG encoder.
+ */
+
+/* rs6xx/rs740/r6xx/dce3 */
+#define HDMI0_CONTROL                0x7400
+/* rs6xx/rs740/r6xx */
+#       define HDMI0_ENABLE          (1 << 0)
+#       define HDMI0_STREAM(x)       (((x) & 3) << 2)
+#       define HDMI0_STREAM_TMDSA    0
+#       define HDMI0_STREAM_LVTMA    1
+#       define HDMI0_STREAM_DVOA     2
+#       define HDMI0_STREAM_DDIA     3
+/* rs6xx/r6xx/dce3 */
+#       define HDMI0_ERROR_ACK       (1 << 8)
+#       define HDMI0_ERROR_MASK      (1 << 9)
+#define HDMI0_STATUS                 0x7404
+#       define HDMI0_ACTIVE_AVMUTE   (1 << 0)
+#       define HDMI0_AUDIO_ENABLE    (1 << 4)
+#       define HDMI0_AZ_FORMAT_WTRIG     (1 << 28)
+#       define HDMI0_AZ_FORMAT_WTRIG_INT (1 << 29)
+#define HDMI0_AUDIO_PACKET_CONTROL   0x7408
+#       define HDMI0_AUDIO_SAMPLE_SEND  (1 << 0)
+#       define HDMI0_AUDIO_DELAY_EN(x)  (((x) & 3) << 4)
+#       define HDMI0_AUDIO_SEND_MAX_PACKETS  (1 << 8)
+#       define HDMI0_AUDIO_TEST_EN         (1 << 12)
+#       define HDMI0_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
+#       define HDMI0_AUDIO_CHANNEL_SWAP    (1 << 24)
+#       define HDMI0_60958_CS_UPDATE       (1 << 26)
+#       define HDMI0_AZ_FORMAT_WTRIG_MASK  (1 << 28)
+#       define HDMI0_AZ_FORMAT_WTRIG_ACK   (1 << 29)
+#define HDMI0_AUDIO_CRC_CONTROL      0x740c
+#       define HDMI0_AUDIO_CRC_EN    (1 << 0)
+#define HDMI0_VBI_PACKET_CONTROL     0x7410
+#       define HDMI0_NULL_SEND       (1 << 0)
+#       define HDMI0_GC_SEND         (1 << 4)
+#       define HDMI0_GC_CONT         (1 << 5) /* 0 - once; 1 - every frame */
+#define HDMI0_INFOFRAME_CONTROL0     0x7414
+#       define HDMI0_AVI_INFO_SEND   (1 << 0)
+#       define HDMI0_AVI_INFO_CONT   (1 << 1)
+#       define HDMI0_AUDIO_INFO_SEND (1 << 4)
+#       define HDMI0_AUDIO_INFO_CONT (1 << 5)
+#       define HDMI0_AUDIO_INFO_SOURCE (1 << 6) /* 0 - sound block; 1 - hmdi regs */
+#       define HDMI0_AUDIO_INFO_UPDATE (1 << 7)
+#       define HDMI0_MPEG_INFO_SEND  (1 << 8)
+#       define HDMI0_MPEG_INFO_CONT  (1 << 9)
+#       define HDMI0_MPEG_INFO_UPDATE  (1 << 10)
+#define HDMI0_INFOFRAME_CONTROL1     0x7418
+#       define HDMI0_AVI_INFO_LINE(x)  (((x) & 0x3f) << 0)
+#       define HDMI0_AUDIO_INFO_LINE(x)  (((x) & 0x3f) << 8)
+#       define HDMI0_MPEG_INFO_LINE(x)  (((x) & 0x3f) << 16)
+#define HDMI0_GENERIC_PACKET_CONTROL 0x741c
+#       define HDMI0_GENERIC0_SEND   (1 << 0)
+#       define HDMI0_GENERIC0_CONT   (1 << 1)
+#       define HDMI0_GENERIC0_UPDATE (1 << 2)
+#       define HDMI0_GENERIC1_SEND   (1 << 4)
+#       define HDMI0_GENERIC1_CONT   (1 << 5)
+#       define HDMI0_GENERIC0_LINE(x)  (((x) & 0x3f) << 16)
+#       define HDMI0_GENERIC1_LINE(x)  (((x) & 0x3f) << 24)
+#define HDMI0_GC                     0x7428
+#       define HDMI0_GC_AVMUTE       (1 << 0)
+#define HDMI0_AVI_INFO0              0x7454
+#       define HDMI0_AVI_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
+#       define HDMI0_AVI_INFO_S(x)   (((x) & 3) << 8)
+#       define HDMI0_AVI_INFO_B(x)   (((x) & 3) << 10)
+#       define HDMI0_AVI_INFO_A(x)   (((x) & 1) << 12)
+#       define HDMI0_AVI_INFO_Y(x)   (((x) & 3) << 13)
+#       define HDMI0_AVI_INFO_Y_RGB       0
+#       define HDMI0_AVI_INFO_Y_YCBCR422  1
+#       define HDMI0_AVI_INFO_Y_YCBCR444  2
+#       define HDMI0_AVI_INFO_Y_A_B_S(x)   (((x) & 0xff) << 8)
+#       define HDMI0_AVI_INFO_R(x)   (((x) & 0xf) << 16)
+#       define HDMI0_AVI_INFO_M(x)   (((x) & 0x3) << 20)
+#       define HDMI0_AVI_INFO_C(x)   (((x) & 0x3) << 22)
+#       define HDMI0_AVI_INFO_C_M_R(x)   (((x) & 0xff) << 16)
+#       define HDMI0_AVI_INFO_SC(x)  (((x) & 0x3) << 24)
+#       define HDMI0_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
+#define HDMI0_AVI_INFO1              0x7458
+#       define HDMI0_AVI_INFO_VIC(x) (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
+#       define HDMI0_AVI_INFO_PR(x)  (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
+#       define HDMI0_AVI_INFO_TOP(x) (((x) & 0xffff) << 16)
+#define HDMI0_AVI_INFO2              0x745c
+#       define HDMI0_AVI_INFO_BOTTOM(x)  (((x) & 0xffff) << 0)
+#       define HDMI0_AVI_INFO_LEFT(x)    (((x) & 0xffff) << 16)
+#define HDMI0_AVI_INFO3              0x7460
+#       define HDMI0_AVI_INFO_RIGHT(x)    (((x) & 0xffff) << 0)
+#       define HDMI0_AVI_INFO_VERSION(x)  (((x) & 3) << 24)
+#define HDMI0_MPEG_INFO0             0x7464
+#       define HDMI0_MPEG_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
+#       define HDMI0_MPEG_INFO_MB0(x)  (((x) & 0xff) << 8)
+#       define HDMI0_MPEG_INFO_MB1(x)  (((x) & 0xff) << 16)
+#       define HDMI0_MPEG_INFO_MB2(x)  (((x) & 0xff) << 24)
+#define HDMI0_MPEG_INFO1             0x7468
+#       define HDMI0_MPEG_INFO_MB3(x)  (((x) & 0xff) << 0)
+#       define HDMI0_MPEG_INFO_MF(x)   (((x) & 3) << 8)
+#       define HDMI0_MPEG_INFO_FR(x)   (((x) & 1) << 12)
+#define HDMI0_GENERIC0_HDR           0x746c
+#define HDMI0_GENERIC0_0             0x7470
+#define HDMI0_GENERIC0_1             0x7474
+#define HDMI0_GENERIC0_2             0x7478
+#define HDMI0_GENERIC0_3             0x747c
+#define HDMI0_GENERIC0_4             0x7480
+#define HDMI0_GENERIC0_5             0x7484
+#define HDMI0_GENERIC0_6             0x7488
+#define HDMI0_GENERIC1_HDR           0x748c
+#define HDMI0_GENERIC1_0             0x7490
+#define HDMI0_GENERIC1_1             0x7494
+#define HDMI0_GENERIC1_2             0x7498
+#define HDMI0_GENERIC1_3             0x749c
+#define HDMI0_GENERIC1_4             0x74a0
+#define HDMI0_GENERIC1_5             0x74a4
+#define HDMI0_GENERIC1_6             0x74a8
+#define HDMI0_ACR_32_0               0x74ac
+#       define HDMI0_ACR_CTS_32(x)   (((x) & 0xfffff) << 12)
+#define HDMI0_ACR_32_1               0x74b0
+#       define HDMI0_ACR_N_32(x)   (((x) & 0xfffff) << 0)
+#define HDMI0_ACR_44_0               0x74b4
+#       define HDMI0_ACR_CTS_44(x)   (((x) & 0xfffff) << 12)
+#define HDMI0_ACR_44_1               0x74b8
+#       define HDMI0_ACR_N_44(x)   (((x) & 0xfffff) << 0)
+#define HDMI0_ACR_48_0               0x74bc
+#       define HDMI0_ACR_CTS_48(x)   (((x) & 0xfffff) << 12)
+#define HDMI0_ACR_48_1               0x74c0
+#       define HDMI0_ACR_N_48(x)   (((x) & 0xfffff) << 0)
+#define HDMI0_ACR_STATUS_0           0x74c4
+#define HDMI0_ACR_STATUS_1           0x74c8
+#define HDMI0_AUDIO_INFO0            0x74cc
+#       define HDMI0_AUDIO_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
+#       define HDMI0_AUDIO_INFO_CC(x)  (((x) & 7) << 8)
+#define HDMI0_AUDIO_INFO1            0x74d0
+#       define HDMI0_AUDIO_INFO_CA(x)  (((x) & 0xff) << 0)
+#       define HDMI0_AUDIO_INFO_LSV(x)  (((x) & 0xf) << 11)
+#       define HDMI0_AUDIO_INFO_DM_INH(x)  (((x) & 1) << 15)
+#       define HDMI0_AUDIO_INFO_DM_INH_LSV(x)  (((x) & 0xff) << 8)
+#define HDMI0_60958_0                0x74d4
+#       define HDMI0_60958_CS_A(x)   (((x) & 1) << 0)
+#       define HDMI0_60958_CS_B(x)   (((x) & 1) << 1)
+#       define HDMI0_60958_CS_C(x)   (((x) & 1) << 2)
+#       define HDMI0_60958_CS_D(x)   (((x) & 3) << 3)
+#       define HDMI0_60958_CS_MODE(x)   (((x) & 3) << 6)
+#       define HDMI0_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
+#       define HDMI0_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
+#       define HDMI0_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
+#       define HDMI0_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
+#define HDMI0_60958_1                0x74d8
+#       define HDMI0_60958_CS_WORD_LENGTH(x)        (((x) & 0xf) << 0)
+#       define HDMI0_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
+#       define HDMI0_60958_CS_VALID_L(x)   (((x) & 1) << 16)
+#       define HDMI0_60958_CS_VALID_R(x)   (((x) & 1) << 18)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
+#define HDMI0_ACR_PACKET_CONTROL     0x74dc
+#       define HDMI0_ACR_SEND        (1 << 0)
+#       define HDMI0_ACR_CONT        (1 << 1)
+#       define HDMI0_ACR_SELECT(x)   (((x) & 3) << 4)
+#       define HDMI0_ACR_HW          0
+#       define HDMI0_ACR_32          1
+#       define HDMI0_ACR_44          2
+#       define HDMI0_ACR_48          3
+#       define HDMI0_ACR_SOURCE      (1 << 8) /* 0 - hw; 1 - cts value */
+#       define HDMI0_ACR_AUTO_SEND   (1 << 12)
+#define HDMI0_RAMP_CONTROL0          0x74e0
+#       define HDMI0_RAMP_MAX_COUNT(x)   (((x) & 0xffffff) << 0)
+#define HDMI0_RAMP_CONTROL1          0x74e4
+#       define HDMI0_RAMP_MIN_COUNT(x)   (((x) & 0xffffff) << 0)
+#define HDMI0_RAMP_CONTROL2          0x74e8
+#       define HDMI0_RAMP_INC_COUNT(x)   (((x) & 0xffffff) << 0)
+#define HDMI0_RAMP_CONTROL3          0x74ec
+#       define HDMI0_RAMP_DEC_COUNT(x)   (((x) & 0xffffff) << 0)
+/* HDMI0_60958_2 is r7xx only */
+#define HDMI0_60958_2                0x74f0
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
+#       define HDMI0_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
+/* r6xx only; second instance starts at 0x7700 */
+#define HDMI1_CONTROL                0x7700
+#define HDMI1_STATUS                 0x7704
+#define HDMI1_AUDIO_PACKET_CONTROL   0x7708
+/* DCE3; second instance starts at 0x7800 NOT 0x7700 */
+#define DCE3_HDMI1_CONTROL                0x7800
+#define DCE3_HDMI1_STATUS                 0x7804
+#define DCE3_HDMI1_AUDIO_PACKET_CONTROL   0x7808
+/* DCE3.2 (for interrupts) */
+#define AFMT_STATUS                          0x7600
+#       define AFMT_AUDIO_ENABLE             (1 << 4)
+#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
+#define AFMT_AUDIO_PACKET_CONTROL            0x7604
+#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
+#       define AFMT_AUDIO_TEST_EN            (1 << 12)
+#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
+#       define AFMT_60958_CS_UPDATE          (1 << 26)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
+#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
+/* DCE3.2 second instance starts at 0x7800 */
+#define HDMI_OFFSET0                      (0x7400 - 0x7400)
+#define HDMI_OFFSET1                      (0x7800 - 0x7400)
+
 /*
  * PM4
  */
diff --git a/drivers/gpu/drm/radeon/rs600d.h b/drivers/gpu/drm/radeon/rs600d.h
index a27c13a..f1f8941 100644
--- a/drivers/gpu/drm/radeon/rs600d.h
+++ b/drivers/gpu/drm/radeon/rs600d.h
@@ -485,6 +485,20 @@
 #define   S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x) & 0x1) << 16)
 #define   G_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x) >> 16) & 0x1)
 #define   C_007D18_DC_HOT_PLUG_DETECT2_INT_EN          0xFFFEFFFF
+#define R_007404_HDMI0_STATUS                          0x007404
+#define   S_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x) & 0x1) << 28)
+#define   G_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x) >> 28) & 0x1)
+#define   C_007404_HDMI0_AZ_FORMAT_WTRIG               0xEFFFFFFF
+#define   S_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x) & 0x1) << 29)
+#define   G_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x) >> 29) & 0x1)
+#define   C_007404_HDMI0_AZ_FORMAT_WTRIG_INT           0xDFFFFFFF
+#define R_007408_HDMI0_AUDIO_PACKET_CONTROL            0x007408
+#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x) & 0x1) << 28)
+#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x) >> 28) & 0x1)
+#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_MASK          0xEFFFFFFF
+#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x) & 0x1) << 29)
+#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x) >> 29) & 0x1)
+#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_ACK           0xDFFFFFFF
 
 /* MC registers */
 #define R_000000_MC_STATUS                           0x000000
diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
index 79fa588..9c549f7 100644
--- a/drivers/gpu/drm/radeon/rv770d.h
+++ b/drivers/gpu/drm/radeon/rv770d.h
@@ -353,6 +353,197 @@
 
 #define	SRBM_STATUS				        0x0E50
 
+/* DCE 3.2 HDMI */
+#define HDMI_CONTROL                         0x7400
+#       define HDMI_KEEPOUT_MODE             (1 << 0)
+#       define HDMI_PACKET_GEN_VERSION       (1 << 4) /* 0 = r6xx compat */
+#       define HDMI_ERROR_ACK                (1 << 8)
+#       define HDMI_ERROR_MASK               (1 << 9)
+#define HDMI_STATUS                          0x7404
+#       define HDMI_ACTIVE_AVMUTE            (1 << 0)
+#       define HDMI_AUDIO_PACKET_ERROR       (1 << 16)
+#       define HDMI_VBI_PACKET_ERROR         (1 << 20)
+#define HDMI_AUDIO_PACKET_CONTROL            0x7408
+#       define HDMI_AUDIO_DELAY_EN(x)        (((x) & 3) << 4)
+#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
+#define HDMI_ACR_PACKET_CONTROL              0x740c
+#       define HDMI_ACR_SEND                 (1 << 0)
+#       define HDMI_ACR_CONT                 (1 << 1)
+#       define HDMI_ACR_SELECT(x)            (((x) & 3) << 4)
+#       define HDMI_ACR_HW                   0
+#       define HDMI_ACR_32                   1
+#       define HDMI_ACR_44                   2
+#       define HDMI_ACR_48                   3
+#       define HDMI_ACR_SOURCE               (1 << 8) /* 0 - hw; 1 - cts value */
+#       define HDMI_ACR_AUTO_SEND            (1 << 12)
+#define HDMI_VBI_PACKET_CONTROL              0x7410
+#       define HDMI_NULL_SEND                (1 << 0)
+#       define HDMI_GC_SEND                  (1 << 4)
+#       define HDMI_GC_CONT                  (1 << 5) /* 0 - once; 1 - every frame */
+#define HDMI_INFOFRAME_CONTROL0              0x7414
+#       define HDMI_AVI_INFO_SEND            (1 << 0)
+#       define HDMI_AVI_INFO_CONT            (1 << 1)
+#       define HDMI_AUDIO_INFO_SEND          (1 << 4)
+#       define HDMI_AUDIO_INFO_CONT          (1 << 5)
+#       define HDMI_MPEG_INFO_SEND           (1 << 8)
+#       define HDMI_MPEG_INFO_CONT           (1 << 9)
+#define HDMI_INFOFRAME_CONTROL1              0x7418
+#       define HDMI_AVI_INFO_LINE(x)         (((x) & 0x3f) << 0)
+#       define HDMI_AUDIO_INFO_LINE(x)       (((x) & 0x3f) << 8)
+#       define HDMI_MPEG_INFO_LINE(x)        (((x) & 0x3f) << 16)
+#define HDMI_GENERIC_PACKET_CONTROL          0x741c
+#       define HDMI_GENERIC0_SEND            (1 << 0)
+#       define HDMI_GENERIC0_CONT            (1 << 1)
+#       define HDMI_GENERIC1_SEND            (1 << 4)
+#       define HDMI_GENERIC1_CONT            (1 << 5)
+#       define HDMI_GENERIC0_LINE(x)         (((x) & 0x3f) << 16)
+#       define HDMI_GENERIC1_LINE(x)         (((x) & 0x3f) << 24)
+#define HDMI_GC                              0x7428
+#       define HDMI_GC_AVMUTE                (1 << 0)
+#define AFMT_AUDIO_PACKET_CONTROL2           0x742c
+#       define AFMT_AUDIO_LAYOUT_OVRD        (1 << 0)
+#       define AFMT_AUDIO_LAYOUT_SELECT      (1 << 1)
+#       define AFMT_60958_CS_SOURCE          (1 << 4)
+#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x) & 0xff) << 8)
+#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x) & 0xff) << 16)
+#define AFMT_AVI_INFO0                       0x7454
+#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x) & 0xff) << 0)
+#       define AFMT_AVI_INFO_S(x)            (((x) & 3) << 8)
+#       define AFMT_AVI_INFO_B(x)            (((x) & 3) << 10)
+#       define AFMT_AVI_INFO_A(x)            (((x) & 1) << 12)
+#       define AFMT_AVI_INFO_Y(x)            (((x) & 3) << 13)
+#       define AFMT_AVI_INFO_Y_RGB           0
+#       define AFMT_AVI_INFO_Y_YCBCR422      1
+#       define AFMT_AVI_INFO_Y_YCBCR444      2
+#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x) & 0xff) << 8)
+#       define AFMT_AVI_INFO_R(x)            (((x) & 0xf) << 16)
+#       define AFMT_AVI_INFO_M(x)            (((x) & 0x3) << 20)
+#       define AFMT_AVI_INFO_C(x)            (((x) & 0x3) << 22)
+#       define AFMT_AVI_INFO_C_M_R(x)        (((x) & 0xff) << 16)
+#       define AFMT_AVI_INFO_SC(x)           (((x) & 0x3) << 24)
+#       define AFMT_AVI_INFO_Q(x)            (((x) & 0x3) << 26)
+#       define AFMT_AVI_INFO_EC(x)           (((x) & 0x3) << 28)
+#       define AFMT_AVI_INFO_ITC(x)          (((x) & 0x1) << 31)
+#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
+#define AFMT_AVI_INFO1                       0x7458
+#       define AFMT_AVI_INFO_VIC(x)          (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
+#       define AFMT_AVI_INFO_PR(x)           (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
+#       define AFMT_AVI_INFO_TOP(x)          (((x) & 0xffff) << 16)
+#define AFMT_AVI_INFO2                       0x745c
+#       define AFMT_AVI_INFO_BOTTOM(x)       (((x) & 0xffff) << 0)
+#       define AFMT_AVI_INFO_LEFT(x)         (((x) & 0xffff) << 16)
+#define AFMT_AVI_INFO3                       0x7460
+#       define AFMT_AVI_INFO_RIGHT(x)        (((x) & 0xffff) << 0)
+#       define AFMT_AVI_INFO_VERSION(x)      (((x) & 3) << 24)
+#define AFMT_MPEG_INFO0                      0x7464
+#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x) & 0xff) << 0)
+#       define AFMT_MPEG_INFO_MB0(x)         (((x) & 0xff) << 8)
+#       define AFMT_MPEG_INFO_MB1(x)         (((x) & 0xff) << 16)
+#       define AFMT_MPEG_INFO_MB2(x)         (((x) & 0xff) << 24)
+#define AFMT_MPEG_INFO1                      0x7468
+#       define AFMT_MPEG_INFO_MB3(x)         (((x) & 0xff) << 0)
+#       define AFMT_MPEG_INFO_MF(x)          (((x) & 3) << 8)
+#       define AFMT_MPEG_INFO_FR(x)          (((x) & 1) << 12)
+#define AFMT_GENERIC0_HDR                    0x746c
+#define AFMT_GENERIC0_0                      0x7470
+#define AFMT_GENERIC0_1                      0x7474
+#define AFMT_GENERIC0_2                      0x7478
+#define AFMT_GENERIC0_3                      0x747c
+#define AFMT_GENERIC0_4                      0x7480
+#define AFMT_GENERIC0_5                      0x7484
+#define AFMT_GENERIC0_6                      0x7488
+#define AFMT_GENERIC1_HDR                    0x748c
+#define AFMT_GENERIC1_0                      0x7490
+#define AFMT_GENERIC1_1                      0x7494
+#define AFMT_GENERIC1_2                      0x7498
+#define AFMT_GENERIC1_3                      0x749c
+#define AFMT_GENERIC1_4                      0x74a0
+#define AFMT_GENERIC1_5                      0x74a4
+#define AFMT_GENERIC1_6                      0x74a8
+#define HDMI_ACR_32_0                        0x74ac
+#       define HDMI_ACR_CTS_32(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_32_1                        0x74b0
+#       define HDMI_ACR_N_32(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_44_0                        0x74b4
+#       define HDMI_ACR_CTS_44(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_44_1                        0x74b8
+#       define HDMI_ACR_N_44(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_48_0                        0x74bc
+#       define HDMI_ACR_CTS_48(x)            (((x) & 0xfffff) << 12)
+#define HDMI_ACR_48_1                        0x74c0
+#       define HDMI_ACR_N_48(x)              (((x) & 0xfffff) << 0)
+#define HDMI_ACR_STATUS_0                    0x74c4
+#define HDMI_ACR_STATUS_1                    0x74c8
+#define AFMT_AUDIO_INFO0                     0x74cc
+#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x) & 0xff) << 0)
+#       define AFMT_AUDIO_INFO_CC(x)         (((x) & 7) << 8)
+#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x) & 0xff) << 16)
+#define AFMT_AUDIO_INFO1                     0x74d0
+#       define AFMT_AUDIO_INFO_CA(x)         (((x) & 0xff) << 0)
+#       define AFMT_AUDIO_INFO_LSV(x)        (((x) & 0xf) << 11)
+#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x) & 1) << 15)
+#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x) & 0xff) << 8)
+#define AFMT_60958_0                         0x74d4
+#       define AFMT_60958_CS_A(x)            (((x) & 1) << 0)
+#       define AFMT_60958_CS_B(x)            (((x) & 1) << 1)
+#       define AFMT_60958_CS_C(x)            (((x) & 1) << 2)
+#       define AFMT_60958_CS_D(x)            (((x) & 3) << 3)
+#       define AFMT_60958_CS_MODE(x)         (((x) & 3) << 6)
+#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
+#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
+#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
+#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
+#define AFMT_60958_1                         0x74d8
+#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x) & 0xf) << 0)
+#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
+#       define AFMT_60958_CS_VALID_L(x)      (((x) & 1) << 16)
+#       define AFMT_60958_CS_VALID_R(x)      (((x) & 1) << 18)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
+#define AFMT_AUDIO_CRC_CONTROL               0x74dc
+#       define AFMT_AUDIO_CRC_EN             (1 << 0)
+#define AFMT_RAMP_CONTROL0                   0x74e0
+#       define AFMT_RAMP_MAX_COUNT(x)        (((x) & 0xffffff) << 0)
+#       define AFMT_RAMP_DATA_SIGN           (1 << 31)
+#define AFMT_RAMP_CONTROL1                   0x74e4
+#       define AFMT_RAMP_MIN_COUNT(x)        (((x) & 0xffffff) << 0)
+#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x) & 0xff) << 24)
+#define AFMT_RAMP_CONTROL2                   0x74e8
+#       define AFMT_RAMP_INC_COUNT(x)        (((x) & 0xffffff) << 0)
+#define AFMT_RAMP_CONTROL3                   0x74ec
+#       define AFMT_RAMP_DEC_COUNT(x)        (((x) & 0xffffff) << 0)
+#define AFMT_60958_2                         0x74f0
+#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
+#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
+#define AFMT_STATUS                          0x7600
+#       define AFMT_AUDIO_ENABLE             (1 << 4)
+#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
+#define AFMT_AUDIO_PACKET_CONTROL            0x7604
+#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
+#       define AFMT_AUDIO_TEST_EN            (1 << 12)
+#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
+#       define AFMT_60958_CS_UPDATE          (1 << 26)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
+#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
+#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
+#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
+#define AFMT_VBI_PACKET_CONTROL              0x7608
+#       define AFMT_GENERIC0_UPDATE          (1 << 2)
+#define AFMT_INFOFRAME_CONTROL0              0x760c
+#       define AFMT_AUDIO_INFO_SOURCE        (1 << 6) /* 0 - sound block; 1 - hmdi regs */
+#       define AFMT_AUDIO_INFO_UPDATE        (1 << 7)
+#       define AFMT_MPEG_INFO_UPDATE         (1 << 10)
+#define AFMT_GENERIC0_7                      0x7610
+/* second instance starts at 0x7800 */
+#define HDMI_OFFSET0                      (0x7400 - 0x7400)
+#define HDMI_OFFSET1                      (0x7800 - 0x7400)
+
 #define D1GRPH_PRIMARY_SURFACE_ADDRESS                    0x6110
 #define D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6914
 #define D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6114
-- 
1.7.7.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-28 17:19 [PATCH] drm/radeon/kms: add register definitions for audio alexdeucher
@ 2012-03-29  7:53 ` Christian König
  2012-03-29  8:16 ` Rafał Miłecki
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2012-03-29  7:53 UTC (permalink / raw)
  To: "Miłecki, Rafał"; +Cc: Alex Deucher, dri-devel

Oh YES! Finally!

Just as a side note before it went unnoticed: That is the official HDMI 
register documentation from R6xx - NI hardware, not just something 
reverse engineered! @Rafał and the rest of the community: We hoped that 
you could stick with it and cleanup the current implementation with this 
new informations.

Well, it's auto-generated, so you can't do much wrong, but anyway:
Reviewed by: Christian König <christian.koenig@amd.com>

On 28.03.2012 19:19, alexdeucher@gmail.com wrote:
> From: Alex Deucher<alexander.deucher@amd.com>
>
> This adds register definitions for HDMI/DP audio on
> DCE2/3/4/5 hardware.
>
> Signed-off-by: Alex Deucher<alexander.deucher@amd.com>
> ---
>   drivers/gpu/drm/radeon/evergreend.h |  220 ++++++++++++++++++++++++++++++++
>   drivers/gpu/drm/radeon/r600d.h      |  236 +++++++++++++++++++++++++++++++++++
>   drivers/gpu/drm/radeon/rs600d.h     |   14 ++
>   drivers/gpu/drm/radeon/rv770d.h     |  191 ++++++++++++++++++++++++++++
>   4 files changed, 661 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
> index eb5708c..3955d98 100644
> --- a/drivers/gpu/drm/radeon/evergreend.h
> +++ b/drivers/gpu/drm/radeon/evergreend.h
> @@ -112,6 +112,226 @@
>   #define	CP_SEM_INCOMPLETE_TIMER_CNTL			0x85C8
>   #define	CP_DEBUG					0xC1FC
>
> +/* Audio clocks */
> +#define DCCG_AUDIO_DTO_SOURCE             0x05ac
> +#       define DCCG_AUDIO_DTO0_SOURCE_SEL(x) ((x)<<  0) /* crtc0 - crtc5 */
> +#       define DCCG_AUDIO_DTO_SEL         (1<<  4) /* 0=dto0 1=dto1 */
> +
> +#define DCCG_AUDIO_DTO0_PHASE             0x05b0
> +#define DCCG_AUDIO_DTO0_MODULE            0x05b4
> +#define DCCG_AUDIO_DTO0_LOAD              0x05b8
> +#define DCCG_AUDIO_DTO0_CNTL              0x05bc
> +
> +#define DCCG_AUDIO_DTO1_PHASE             0x05c0
> +#define DCCG_AUDIO_DTO1_MODULE            0x05c4
> +#define DCCG_AUDIO_DTO1_LOAD              0x05c8
> +#define DCCG_AUDIO_DTO1_CNTL              0x05cc
> +
> +/* DCE 4.0 AFMT */
> +#define HDMI_CONTROL                         0x7030
> +#       define HDMI_KEEPOUT_MODE             (1<<  0)
> +#       define HDMI_PACKET_GEN_VERSION       (1<<  4) /* 0 = r6xx compat */
> +#       define HDMI_ERROR_ACK                (1<<  8)
> +#       define HDMI_ERROR_MASK               (1<<  9)
> +#       define HDMI_DEEP_COLOR_ENABLE        (1<<  24)
> +#       define HDMI_DEEP_COLOR_DEPTH         (((x)&  3)<<  28)
> +#       define HDMI_24BIT_DEEP_COLOR         0
> +#       define HDMI_30BIT_DEEP_COLOR         1
> +#       define HDMI_36BIT_DEEP_COLOR         2
> +#define HDMI_STATUS                          0x7034
> +#       define HDMI_ACTIVE_AVMUTE            (1<<  0)
> +#       define HDMI_AUDIO_PACKET_ERROR       (1<<  16)
> +#       define HDMI_VBI_PACKET_ERROR         (1<<  20)
> +#define HDMI_AUDIO_PACKET_CONTROL            0x7038
> +#       define HDMI_AUDIO_DELAY_EN(x)        (((x)&  3)<<  4)
> +#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x)&  0x1f)<<  16)
> +#define HDMI_ACR_PACKET_CONTROL              0x703c
> +#       define HDMI_ACR_SEND                 (1<<  0)
> +#       define HDMI_ACR_CONT                 (1<<  1)
> +#       define HDMI_ACR_SELECT(x)            (((x)&  3)<<  4)
> +#       define HDMI_ACR_HW                   0
> +#       define HDMI_ACR_32                   1
> +#       define HDMI_ACR_44                   2
> +#       define HDMI_ACR_48                   3
> +#       define HDMI_ACR_SOURCE               (1<<  8) /* 0 - hw; 1 - cts value */
> +#       define HDMI_ACR_AUTO_SEND            (1<<  12)
> +#       define HDMI_ACR_N_MULTIPLE(x)        (((x)&  7)<<  16)
> +#       define HDMI_ACR_X1                   1
> +#       define HDMI_ACR_X2                   2
> +#       define HDMI_ACR_X4                   4
> +#       define HDMI_ACR_AUDIO_PRIORITY       (1<<  31)
> +#define HDMI_VBI_PACKET_CONTROL              0x7040
> +#       define HDMI_NULL_SEND                (1<<  0)
> +#       define HDMI_GC_SEND                  (1<<  4)
> +#       define HDMI_GC_CONT                  (1<<  5) /* 0 - once; 1 - every frame */
> +#define HDMI_INFOFRAME_CONTROL0              0x7044
> +#       define HDMI_AVI_INFO_SEND            (1<<  0)
> +#       define HDMI_AVI_INFO_CONT            (1<<  1)
> +#       define HDMI_AUDIO_INFO_SEND          (1<<  4)
> +#       define HDMI_AUDIO_INFO_CONT          (1<<  5)
> +#       define HDMI_MPEG_INFO_SEND           (1<<  8)
> +#       define HDMI_MPEG_INFO_CONT           (1<<  9)
> +#define HDMI_INFOFRAME_CONTROL1              0x7048
> +#       define HDMI_AVI_INFO_LINE(x)         (((x)&  0x3f)<<  0)
> +#       define HDMI_AUDIO_INFO_LINE(x)       (((x)&  0x3f)<<  8)
> +#       define HDMI_MPEG_INFO_LINE(x)        (((x)&  0x3f)<<  16)
> +#define HDMI_GENERIC_PACKET_CONTROL          0x704c
> +#       define HDMI_GENERIC0_SEND            (1<<  0)
> +#       define HDMI_GENERIC0_CONT            (1<<  1)
> +#       define HDMI_GENERIC1_SEND            (1<<  4)
> +#       define HDMI_GENERIC1_CONT            (1<<  5)
> +#       define HDMI_GENERIC0_LINE(x)         (((x)&  0x3f)<<  16)
> +#       define HDMI_GENERIC1_LINE(x)         (((x)&  0x3f)<<  24)
> +#define HDMI_GC                              0x7058
> +#       define HDMI_GC_AVMUTE                (1<<  0)
> +#       define HDMI_GC_AVMUTE_CONT           (1<<  2)
> +#define AFMT_AUDIO_PACKET_CONTROL2           0x705c
> +#       define AFMT_AUDIO_LAYOUT_OVRD        (1<<  0)
> +#       define AFMT_AUDIO_LAYOUT_SELECT      (1<<  1)
> +#       define AFMT_60958_CS_SOURCE          (1<<  4)
> +#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x)&  0xff)<<  8)
> +#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x)&  0xff)<<  16)
> +#define AFMT_AVI_INFO0                       0x7084
> +#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x)&  0xff)<<  0)
> +#       define AFMT_AVI_INFO_S(x)            (((x)&  3)<<  8)
> +#       define AFMT_AVI_INFO_B(x)            (((x)&  3)<<  10)
> +#       define AFMT_AVI_INFO_A(x)            (((x)&  1)<<  12)
> +#       define AFMT_AVI_INFO_Y(x)            (((x)&  3)<<  13)
> +#       define AFMT_AVI_INFO_Y_RGB           0
> +#       define AFMT_AVI_INFO_Y_YCBCR422      1
> +#       define AFMT_AVI_INFO_Y_YCBCR444      2
> +#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x)&  0xff)<<  8)
> +#       define AFMT_AVI_INFO_R(x)            (((x)&  0xf)<<  16)
> +#       define AFMT_AVI_INFO_M(x)            (((x)&  0x3)<<  20)
> +#       define AFMT_AVI_INFO_C(x)            (((x)&  0x3)<<  22)
> +#       define AFMT_AVI_INFO_C_M_R(x)        (((x)&  0xff)<<  16)
> +#       define AFMT_AVI_INFO_SC(x)           (((x)&  0x3)<<  24)
> +#       define AFMT_AVI_INFO_Q(x)            (((x)&  0x3)<<  26)
> +#       define AFMT_AVI_INFO_EC(x)           (((x)&  0x3)<<  28)
> +#       define AFMT_AVI_INFO_ITC(x)          (((x)&  0x1)<<  31)
> +#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x)&  0xff)<<  24)
> +#define AFMT_AVI_INFO1                       0x7088
> +#       define AFMT_AVI_INFO_VIC(x)          (((x)&  0x7f)<<  0) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_PR(x)           (((x)&  0xf)<<  8) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_CN(x)           (((x)&  0x3)<<  12)
> +#       define AFMT_AVI_INFO_YQ(x)           (((x)&  0x3)<<  14)
> +#       define AFMT_AVI_INFO_TOP(x)          (((x)&  0xffff)<<  16)
> +#define AFMT_AVI_INFO2                       0x708c
> +#       define AFMT_AVI_INFO_BOTTOM(x)       (((x)&  0xffff)<<  0)
> +#       define AFMT_AVI_INFO_LEFT(x)         (((x)&  0xffff)<<  16)
> +#define AFMT_AVI_INFO3                       0x7090
> +#       define AFMT_AVI_INFO_RIGHT(x)        (((x)&  0xffff)<<  0)
> +#       define AFMT_AVI_INFO_VERSION(x)      (((x)&  3)<<  24)
> +#define AFMT_MPEG_INFO0                      0x7094
> +#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x)&  0xff)<<  0)
> +#       define AFMT_MPEG_INFO_MB0(x)         (((x)&  0xff)<<  8)
> +#       define AFMT_MPEG_INFO_MB1(x)         (((x)&  0xff)<<  16)
> +#       define AFMT_MPEG_INFO_MB2(x)         (((x)&  0xff)<<  24)
> +#define AFMT_MPEG_INFO1                      0x7098
> +#       define AFMT_MPEG_INFO_MB3(x)         (((x)&  0xff)<<  0)
> +#       define AFMT_MPEG_INFO_MF(x)          (((x)&  3)<<  8)
> +#       define AFMT_MPEG_INFO_FR(x)          (((x)&  1)<<  12)
> +#define AFMT_GENERIC0_HDR                    0x709c
> +#define AFMT_GENERIC0_0                      0x70a0
> +#define AFMT_GENERIC0_1                      0x70a4
> +#define AFMT_GENERIC0_2                      0x70a8
> +#define AFMT_GENERIC0_3                      0x70ac
> +#define AFMT_GENERIC0_4                      0x70b0
> +#define AFMT_GENERIC0_5                      0x70b4
> +#define AFMT_GENERIC0_6                      0x70b8
> +#define AFMT_GENERIC1_HDR                    0x70bc
> +#define AFMT_GENERIC1_0                      0x70c0
> +#define AFMT_GENERIC1_1                      0x70c4
> +#define AFMT_GENERIC1_2                      0x70c8
> +#define AFMT_GENERIC1_3                      0x70cc
> +#define AFMT_GENERIC1_4                      0x70d0
> +#define AFMT_GENERIC1_5                      0x70d4
> +#define AFMT_GENERIC1_6                      0x70d8
> +#define HDMI_ACR_32_0                        0x70dc
> +#       define HDMI_ACR_CTS_32(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_32_1                        0x70e0
> +#       define HDMI_ACR_N_32(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_44_0                        0x70e4
> +#       define HDMI_ACR_CTS_44(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_44_1                        0x70e8
> +#       define HDMI_ACR_N_44(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_48_0                        0x70ec
> +#       define HDMI_ACR_CTS_48(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_48_1                        0x70f0
> +#       define HDMI_ACR_N_48(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_STATUS_0                    0x70f4
> +#define HDMI_ACR_STATUS_1                    0x70f8
> +#define AFMT_AUDIO_INFO0                     0x70fc
> +#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x)&  0xff)<<  0)
> +#       define AFMT_AUDIO_INFO_CC(x)         (((x)&  7)<<  8)
> +#       define AFMT_AUDIO_INFO_CT(x)         (((x)&  0xf)<<  11)
> +#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x)&  0xff)<<  16)
> +#       define AFMT_AUDIO_INFO_CXT(x)        (((x)&  0x1f)<<  24)
> +#define AFMT_AUDIO_INFO1                     0x7100
> +#       define AFMT_AUDIO_INFO_CA(x)         (((x)&  0xff)<<  0)
> +#       define AFMT_AUDIO_INFO_LSV(x)        (((x)&  0xf)<<  11)
> +#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x)&  1)<<  15)
> +#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x)&  0xff)<<  8)
> +#       define AFMT_AUDIO_INFO_LFEBPL(x)     (((x)&  3)<<  16)
> +#define AFMT_60958_0                         0x7104
> +#       define AFMT_60958_CS_A(x)            (((x)&  1)<<  0)
> +#       define AFMT_60958_CS_B(x)            (((x)&  1)<<  1)
> +#       define AFMT_60958_CS_C(x)            (((x)&  1)<<  2)
> +#       define AFMT_60958_CS_D(x)            (((x)&  3)<<  3)
> +#       define AFMT_60958_CS_MODE(x)         (((x)&  3)<<  6)
> +#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x)&  0xff)<<  8)
> +#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x)&  0xf)<<  16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x)&  0xf)<<  20)
> +#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x)&  0xf)<<  24)
> +#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x)&  3)<<  28)
> +#define AFMT_60958_1                         0x7108
> +#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x)&  0xf)<<  0)
> +#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x)&  0xf)<<  4)
> +#       define AFMT_60958_CS_VALID_L(x)      (((x)&  1)<<  16)
> +#       define AFMT_60958_CS_VALID_R(x)      (((x)&  1)<<  18)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x)&  0xf)<<  20)
> +#define AFMT_AUDIO_CRC_CONTROL               0x710c
> +#       define AFMT_AUDIO_CRC_EN             (1<<  0)
> +#define AFMT_RAMP_CONTROL0                   0x7110
> +#       define AFMT_RAMP_MAX_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#       define AFMT_RAMP_DATA_SIGN           (1<<  31)
> +#define AFMT_RAMP_CONTROL1                   0x7114
> +#       define AFMT_RAMP_MIN_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x)&  0xff)<<  24)
> +#define AFMT_RAMP_CONTROL2                   0x7118
> +#       define AFMT_RAMP_INC_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#define AFMT_RAMP_CONTROL3                   0x711c
> +#       define AFMT_RAMP_DEC_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#define AFMT_60958_2                         0x7120
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x)&  0xf)<<  0)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x)&  0xf)<<  4)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x)&  0xf)<<  8)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x)&  0xf)<<  12)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x)&  0xf)<<  16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x)&  0xf)<<  20)
> +#define AFMT_STATUS                          0x7128
> +#       define AFMT_AUDIO_ENABLE             (1<<  4)
> +#       define AFMT_AUDIO_HBR_ENABLE         (1<<  8)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1<<  30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x712c
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1<<  0)
> +#       define AFMT_RESET_FIFO_WHEN_AUDIO_DIS (1<<  11) /* set to 1 */
> +#       define AFMT_AUDIO_TEST_EN            (1<<  12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1<<  24)
> +#       define AFMT_60958_CS_UPDATE          (1<<  26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1<<  27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1<<  30)
> +#define AFMT_VBI_PACKET_CONTROL              0x7130
> +#       define AFMT_GENERIC0_UPDATE          (1<<  2)
> +#define AFMT_INFOFRAME_CONTROL0              0x7134
> +#       define AFMT_AUDIO_INFO_SOURCE        (1<<  6) /* 0 - sound block; 1 - afmt regs */
> +#       define AFMT_AUDIO_INFO_UPDATE        (1<<  7)
> +#       define AFMT_MPEG_INFO_UPDATE         (1<<  10)
> +#define AFMT_GENERIC0_7                      0x7138
>
>   #define	GC_USER_SHADER_PIPE_CONFIG			0x8954
>   #define		INACTIVE_QD_PIPES(x)				((x)<<  8)
> diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
> index 3568a2e..7f0c223 100644
> --- a/drivers/gpu/drm/radeon/r600d.h
> +++ b/drivers/gpu/drm/radeon/r600d.h
> @@ -816,6 +816,242 @@
>   #       define TARGET_LINK_SPEED_MASK                     (0xf<<  0)
>   #       define SELECTABLE_DEEMPHASIS                      (1<<  6)
>
> +/* Audio clocks */
> +#define DCCG_AUDIO_DTO0_PHASE             0x0514
> +#define DCCG_AUDIO_DTO0_MODULE            0x0518
> +#define DCCG_AUDIO_DTO0_LOAD              0x051c
> +#       define DTO_LOAD                   (1<<  31)
> +#define DCCG_AUDIO_DTO0_CNTL              0x0520
> +
> +#define DCCG_AUDIO_DTO1_PHASE             0x0524
> +#define DCCG_AUDIO_DTO1_MODULE            0x0528
> +#define DCCG_AUDIO_DTO1_LOAD              0x052c
> +#define DCCG_AUDIO_DTO1_CNTL              0x0530
> +
> +#define DCCG_AUDIO_DTO_SELECT             0x0534
> +
> +/* digital blocks */
> +#define TMDSA_CNTL                       0x7880
> +#       define TMDSA_HDMI_EN             (1<<  2)
> +#define LVTMA_CNTL                       0x7a80
> +#       define LVTMA_HDMI_EN             (1<<  2)
> +#define DDIA_CNTL                        0x7200
> +#       define DDIA_HDMI_EN              (1<<  2)
> +#define DIG0_CNTL                        0x75a0
> +#       define DIG_MODE(x)               (((x)&  7)<<  8)
> +#       define DIG_MODE_DP               0
> +#       define DIG_MODE_LVDS             1
> +#       define DIG_MODE_TMDS_DVI         2
> +#       define DIG_MODE_TMDS_HDMI        3
> +#       define DIG_MODE_SDVO             4
> +#define DIG1_CNTL                        0x79a0
> +
> +/* rs6xx/rs740 and r6xx share the same HDMI blocks, however, rs6xx has only one
> + * instance of the blocks while r6xx has 2.  DCE 3.0 cards are slightly
> + * different due to the new DIG blocks, but also have 2 instances.
> + * DCE 3.0 HDMI blocks are part of each DIG encoder.
> + */
> +
> +/* rs6xx/rs740/r6xx/dce3 */
> +#define HDMI0_CONTROL                0x7400
> +/* rs6xx/rs740/r6xx */
> +#       define HDMI0_ENABLE          (1<<  0)
> +#       define HDMI0_STREAM(x)       (((x)&  3)<<  2)
> +#       define HDMI0_STREAM_TMDSA    0
> +#       define HDMI0_STREAM_LVTMA    1
> +#       define HDMI0_STREAM_DVOA     2
> +#       define HDMI0_STREAM_DDIA     3
> +/* rs6xx/r6xx/dce3 */
> +#       define HDMI0_ERROR_ACK       (1<<  8)
> +#       define HDMI0_ERROR_MASK      (1<<  9)
> +#define HDMI0_STATUS                 0x7404
> +#       define HDMI0_ACTIVE_AVMUTE   (1<<  0)
> +#       define HDMI0_AUDIO_ENABLE    (1<<  4)
> +#       define HDMI0_AZ_FORMAT_WTRIG     (1<<  28)
> +#       define HDMI0_AZ_FORMAT_WTRIG_INT (1<<  29)
> +#define HDMI0_AUDIO_PACKET_CONTROL   0x7408
> +#       define HDMI0_AUDIO_SAMPLE_SEND  (1<<  0)
> +#       define HDMI0_AUDIO_DELAY_EN(x)  (((x)&  3)<<  4)
> +#       define HDMI0_AUDIO_SEND_MAX_PACKETS  (1<<  8)
> +#       define HDMI0_AUDIO_TEST_EN         (1<<  12)
> +#       define HDMI0_AUDIO_PACKETS_PER_LINE(x)  (((x)&  0x1f)<<  16)
> +#       define HDMI0_AUDIO_CHANNEL_SWAP    (1<<  24)
> +#       define HDMI0_60958_CS_UPDATE       (1<<  26)
> +#       define HDMI0_AZ_FORMAT_WTRIG_MASK  (1<<  28)
> +#       define HDMI0_AZ_FORMAT_WTRIG_ACK   (1<<  29)
> +#define HDMI0_AUDIO_CRC_CONTROL      0x740c
> +#       define HDMI0_AUDIO_CRC_EN    (1<<  0)
> +#define HDMI0_VBI_PACKET_CONTROL     0x7410
> +#       define HDMI0_NULL_SEND       (1<<  0)
> +#       define HDMI0_GC_SEND         (1<<  4)
> +#       define HDMI0_GC_CONT         (1<<  5) /* 0 - once; 1 - every frame */
> +#define HDMI0_INFOFRAME_CONTROL0     0x7414
> +#       define HDMI0_AVI_INFO_SEND   (1<<  0)
> +#       define HDMI0_AVI_INFO_CONT   (1<<  1)
> +#       define HDMI0_AUDIO_INFO_SEND (1<<  4)
> +#       define HDMI0_AUDIO_INFO_CONT (1<<  5)
> +#       define HDMI0_AUDIO_INFO_SOURCE (1<<  6) /* 0 - sound block; 1 - hmdi regs */
> +#       define HDMI0_AUDIO_INFO_UPDATE (1<<  7)
> +#       define HDMI0_MPEG_INFO_SEND  (1<<  8)
> +#       define HDMI0_MPEG_INFO_CONT  (1<<  9)
> +#       define HDMI0_MPEG_INFO_UPDATE  (1<<  10)
> +#define HDMI0_INFOFRAME_CONTROL1     0x7418
> +#       define HDMI0_AVI_INFO_LINE(x)  (((x)&  0x3f)<<  0)
> +#       define HDMI0_AUDIO_INFO_LINE(x)  (((x)&  0x3f)<<  8)
> +#       define HDMI0_MPEG_INFO_LINE(x)  (((x)&  0x3f)<<  16)
> +#define HDMI0_GENERIC_PACKET_CONTROL 0x741c
> +#       define HDMI0_GENERIC0_SEND   (1<<  0)
> +#       define HDMI0_GENERIC0_CONT   (1<<  1)
> +#       define HDMI0_GENERIC0_UPDATE (1<<  2)
> +#       define HDMI0_GENERIC1_SEND   (1<<  4)
> +#       define HDMI0_GENERIC1_CONT   (1<<  5)
> +#       define HDMI0_GENERIC0_LINE(x)  (((x)&  0x3f)<<  16)
> +#       define HDMI0_GENERIC1_LINE(x)  (((x)&  0x3f)<<  24)
> +#define HDMI0_GC                     0x7428
> +#       define HDMI0_GC_AVMUTE       (1<<  0)
> +#define HDMI0_AVI_INFO0              0x7454
> +#       define HDMI0_AVI_INFO_CHECKSUM(x)  (((x)&  0xff)<<  0)
> +#       define HDMI0_AVI_INFO_S(x)   (((x)&  3)<<  8)
> +#       define HDMI0_AVI_INFO_B(x)   (((x)&  3)<<  10)
> +#       define HDMI0_AVI_INFO_A(x)   (((x)&  1)<<  12)
> +#       define HDMI0_AVI_INFO_Y(x)   (((x)&  3)<<  13)
> +#       define HDMI0_AVI_INFO_Y_RGB       0
> +#       define HDMI0_AVI_INFO_Y_YCBCR422  1
> +#       define HDMI0_AVI_INFO_Y_YCBCR444  2
> +#       define HDMI0_AVI_INFO_Y_A_B_S(x)   (((x)&  0xff)<<  8)
> +#       define HDMI0_AVI_INFO_R(x)   (((x)&  0xf)<<  16)
> +#       define HDMI0_AVI_INFO_M(x)   (((x)&  0x3)<<  20)
> +#       define HDMI0_AVI_INFO_C(x)   (((x)&  0x3)<<  22)
> +#       define HDMI0_AVI_INFO_C_M_R(x)   (((x)&  0xff)<<  16)
> +#       define HDMI0_AVI_INFO_SC(x)  (((x)&  0x3)<<  24)
> +#       define HDMI0_AVI_INFO_ITC_EC_Q_SC(x)  (((x)&  0xff)<<  24)
> +#define HDMI0_AVI_INFO1              0x7458
> +#       define HDMI0_AVI_INFO_VIC(x) (((x)&  0x7f)<<  0) /* don't use avi infoframe v1 */
> +#       define HDMI0_AVI_INFO_PR(x)  (((x)&  0xf)<<  8) /* don't use avi infoframe v1 */
> +#       define HDMI0_AVI_INFO_TOP(x) (((x)&  0xffff)<<  16)
> +#define HDMI0_AVI_INFO2              0x745c
> +#       define HDMI0_AVI_INFO_BOTTOM(x)  (((x)&  0xffff)<<  0)
> +#       define HDMI0_AVI_INFO_LEFT(x)    (((x)&  0xffff)<<  16)
> +#define HDMI0_AVI_INFO3              0x7460
> +#       define HDMI0_AVI_INFO_RIGHT(x)    (((x)&  0xffff)<<  0)
> +#       define HDMI0_AVI_INFO_VERSION(x)  (((x)&  3)<<  24)
> +#define HDMI0_MPEG_INFO0             0x7464
> +#       define HDMI0_MPEG_INFO_CHECKSUM(x)  (((x)&  0xff)<<  0)
> +#       define HDMI0_MPEG_INFO_MB0(x)  (((x)&  0xff)<<  8)
> +#       define HDMI0_MPEG_INFO_MB1(x)  (((x)&  0xff)<<  16)
> +#       define HDMI0_MPEG_INFO_MB2(x)  (((x)&  0xff)<<  24)
> +#define HDMI0_MPEG_INFO1             0x7468
> +#       define HDMI0_MPEG_INFO_MB3(x)  (((x)&  0xff)<<  0)
> +#       define HDMI0_MPEG_INFO_MF(x)   (((x)&  3)<<  8)
> +#       define HDMI0_MPEG_INFO_FR(x)   (((x)&  1)<<  12)
> +#define HDMI0_GENERIC0_HDR           0x746c
> +#define HDMI0_GENERIC0_0             0x7470
> +#define HDMI0_GENERIC0_1             0x7474
> +#define HDMI0_GENERIC0_2             0x7478
> +#define HDMI0_GENERIC0_3             0x747c
> +#define HDMI0_GENERIC0_4             0x7480
> +#define HDMI0_GENERIC0_5             0x7484
> +#define HDMI0_GENERIC0_6             0x7488
> +#define HDMI0_GENERIC1_HDR           0x748c
> +#define HDMI0_GENERIC1_0             0x7490
> +#define HDMI0_GENERIC1_1             0x7494
> +#define HDMI0_GENERIC1_2             0x7498
> +#define HDMI0_GENERIC1_3             0x749c
> +#define HDMI0_GENERIC1_4             0x74a0
> +#define HDMI0_GENERIC1_5             0x74a4
> +#define HDMI0_GENERIC1_6             0x74a8
> +#define HDMI0_ACR_32_0               0x74ac
> +#       define HDMI0_ACR_CTS_32(x)   (((x)&  0xfffff)<<  12)
> +#define HDMI0_ACR_32_1               0x74b0
> +#       define HDMI0_ACR_N_32(x)   (((x)&  0xfffff)<<  0)
> +#define HDMI0_ACR_44_0               0x74b4
> +#       define HDMI0_ACR_CTS_44(x)   (((x)&  0xfffff)<<  12)
> +#define HDMI0_ACR_44_1               0x74b8
> +#       define HDMI0_ACR_N_44(x)   (((x)&  0xfffff)<<  0)
> +#define HDMI0_ACR_48_0               0x74bc
> +#       define HDMI0_ACR_CTS_48(x)   (((x)&  0xfffff)<<  12)
> +#define HDMI0_ACR_48_1               0x74c0
> +#       define HDMI0_ACR_N_48(x)   (((x)&  0xfffff)<<  0)
> +#define HDMI0_ACR_STATUS_0           0x74c4
> +#define HDMI0_ACR_STATUS_1           0x74c8
> +#define HDMI0_AUDIO_INFO0            0x74cc
> +#       define HDMI0_AUDIO_INFO_CHECKSUM(x)  (((x)&  0xff)<<  0)
> +#       define HDMI0_AUDIO_INFO_CC(x)  (((x)&  7)<<  8)
> +#define HDMI0_AUDIO_INFO1            0x74d0
> +#       define HDMI0_AUDIO_INFO_CA(x)  (((x)&  0xff)<<  0)
> +#       define HDMI0_AUDIO_INFO_LSV(x)  (((x)&  0xf)<<  11)
> +#       define HDMI0_AUDIO_INFO_DM_INH(x)  (((x)&  1)<<  15)
> +#       define HDMI0_AUDIO_INFO_DM_INH_LSV(x)  (((x)&  0xff)<<  8)
> +#define HDMI0_60958_0                0x74d4
> +#       define HDMI0_60958_CS_A(x)   (((x)&  1)<<  0)
> +#       define HDMI0_60958_CS_B(x)   (((x)&  1)<<  1)
> +#       define HDMI0_60958_CS_C(x)   (((x)&  1)<<  2)
> +#       define HDMI0_60958_CS_D(x)   (((x)&  3)<<  3)
> +#       define HDMI0_60958_CS_MODE(x)   (((x)&  3)<<  6)
> +#       define HDMI0_60958_CS_CATEGORY_CODE(x)      (((x)&  0xff)<<  8)
> +#       define HDMI0_60958_CS_SOURCE_NUMBER(x)      (((x)&  0xf)<<  16)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_L(x)   (((x)&  0xf)<<  20)
> +#       define HDMI0_60958_CS_SAMPLING_FREQUENCY(x) (((x)&  0xf)<<  24)
> +#       define HDMI0_60958_CS_CLOCK_ACCURACY(x)     (((x)&  3)<<  28)
> +#define HDMI0_60958_1                0x74d8
> +#       define HDMI0_60958_CS_WORD_LENGTH(x)        (((x)&  0xf)<<  0)
> +#       define HDMI0_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x)&  0xf)<<  4)
> +#       define HDMI0_60958_CS_VALID_L(x)   (((x)&  1)<<  16)
> +#       define HDMI0_60958_CS_VALID_R(x)   (((x)&  1)<<  18)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_R(x)   (((x)&  0xf)<<  20)
> +#define HDMI0_ACR_PACKET_CONTROL     0x74dc
> +#       define HDMI0_ACR_SEND        (1<<  0)
> +#       define HDMI0_ACR_CONT        (1<<  1)
> +#       define HDMI0_ACR_SELECT(x)   (((x)&  3)<<  4)
> +#       define HDMI0_ACR_HW          0
> +#       define HDMI0_ACR_32          1
> +#       define HDMI0_ACR_44          2
> +#       define HDMI0_ACR_48          3
> +#       define HDMI0_ACR_SOURCE      (1<<  8) /* 0 - hw; 1 - cts value */
> +#       define HDMI0_ACR_AUTO_SEND   (1<<  12)
> +#define HDMI0_RAMP_CONTROL0          0x74e0
> +#       define HDMI0_RAMP_MAX_COUNT(x)   (((x)&  0xffffff)<<  0)
> +#define HDMI0_RAMP_CONTROL1          0x74e4
> +#       define HDMI0_RAMP_MIN_COUNT(x)   (((x)&  0xffffff)<<  0)
> +#define HDMI0_RAMP_CONTROL2          0x74e8
> +#       define HDMI0_RAMP_INC_COUNT(x)   (((x)&  0xffffff)<<  0)
> +#define HDMI0_RAMP_CONTROL3          0x74ec
> +#       define HDMI0_RAMP_DEC_COUNT(x)   (((x)&  0xffffff)<<  0)
> +/* HDMI0_60958_2 is r7xx only */
> +#define HDMI0_60958_2                0x74f0
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_2(x)   (((x)&  0xf)<<  0)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_3(x)   (((x)&  0xf)<<  4)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_4(x)   (((x)&  0xf)<<  8)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_5(x)   (((x)&  0xf)<<  12)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_6(x)   (((x)&  0xf)<<  16)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_7(x)   (((x)&  0xf)<<  20)
> +/* r6xx only; second instance starts at 0x7700 */
> +#define HDMI1_CONTROL                0x7700
> +#define HDMI1_STATUS                 0x7704
> +#define HDMI1_AUDIO_PACKET_CONTROL   0x7708
> +/* DCE3; second instance starts at 0x7800 NOT 0x7700 */
> +#define DCE3_HDMI1_CONTROL                0x7800
> +#define DCE3_HDMI1_STATUS                 0x7804
> +#define DCE3_HDMI1_AUDIO_PACKET_CONTROL   0x7808
> +/* DCE3.2 (for interrupts) */
> +#define AFMT_STATUS                          0x7600
> +#       define AFMT_AUDIO_ENABLE             (1<<  4)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1<<  30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x7604
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1<<  0)
> +#       define AFMT_AUDIO_TEST_EN            (1<<  12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1<<  24)
> +#       define AFMT_60958_CS_UPDATE          (1<<  26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1<<  27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1<<  30)
> +/* DCE3.2 second instance starts at 0x7800 */
> +#define HDMI_OFFSET0                      (0x7400 - 0x7400)
> +#define HDMI_OFFSET1                      (0x7800 - 0x7400)
> +
>   /*
>    * PM4
>    */
> diff --git a/drivers/gpu/drm/radeon/rs600d.h b/drivers/gpu/drm/radeon/rs600d.h
> index a27c13a..f1f8941 100644
> --- a/drivers/gpu/drm/radeon/rs600d.h
> +++ b/drivers/gpu/drm/radeon/rs600d.h
> @@ -485,6 +485,20 @@
>   #define   S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x)&  0x1)<<  16)
>   #define   G_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x)>>  16)&  0x1)
>   #define   C_007D18_DC_HOT_PLUG_DETECT2_INT_EN          0xFFFEFFFF
> +#define R_007404_HDMI0_STATUS                          0x007404
> +#define   S_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x)&  0x1)<<  28)
> +#define   G_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x)>>  28)&  0x1)
> +#define   C_007404_HDMI0_AZ_FORMAT_WTRIG               0xEFFFFFFF
> +#define   S_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x)&  0x1)<<  29)
> +#define   G_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x)>>  29)&  0x1)
> +#define   C_007404_HDMI0_AZ_FORMAT_WTRIG_INT           0xDFFFFFFF
> +#define R_007408_HDMI0_AUDIO_PACKET_CONTROL            0x007408
> +#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x)&  0x1)<<  28)
> +#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x)>>  28)&  0x1)
> +#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_MASK          0xEFFFFFFF
> +#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x)&  0x1)<<  29)
> +#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x)>>  29)&  0x1)
> +#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_ACK           0xDFFFFFFF
>
>   /* MC registers */
>   #define R_000000_MC_STATUS                           0x000000
> diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
> index 79fa588..9c549f7 100644
> --- a/drivers/gpu/drm/radeon/rv770d.h
> +++ b/drivers/gpu/drm/radeon/rv770d.h
> @@ -353,6 +353,197 @@
>
>   #define	SRBM_STATUS				        0x0E50
>
> +/* DCE 3.2 HDMI */
> +#define HDMI_CONTROL                         0x7400
> +#       define HDMI_KEEPOUT_MODE             (1<<  0)
> +#       define HDMI_PACKET_GEN_VERSION       (1<<  4) /* 0 = r6xx compat */
> +#       define HDMI_ERROR_ACK                (1<<  8)
> +#       define HDMI_ERROR_MASK               (1<<  9)
> +#define HDMI_STATUS                          0x7404
> +#       define HDMI_ACTIVE_AVMUTE            (1<<  0)
> +#       define HDMI_AUDIO_PACKET_ERROR       (1<<  16)
> +#       define HDMI_VBI_PACKET_ERROR         (1<<  20)
> +#define HDMI_AUDIO_PACKET_CONTROL            0x7408
> +#       define HDMI_AUDIO_DELAY_EN(x)        (((x)&  3)<<  4)
> +#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x)&  0x1f)<<  16)
> +#define HDMI_ACR_PACKET_CONTROL              0x740c
> +#       define HDMI_ACR_SEND                 (1<<  0)
> +#       define HDMI_ACR_CONT                 (1<<  1)
> +#       define HDMI_ACR_SELECT(x)            (((x)&  3)<<  4)
> +#       define HDMI_ACR_HW                   0
> +#       define HDMI_ACR_32                   1
> +#       define HDMI_ACR_44                   2
> +#       define HDMI_ACR_48                   3
> +#       define HDMI_ACR_SOURCE               (1<<  8) /* 0 - hw; 1 - cts value */
> +#       define HDMI_ACR_AUTO_SEND            (1<<  12)
> +#define HDMI_VBI_PACKET_CONTROL              0x7410
> +#       define HDMI_NULL_SEND                (1<<  0)
> +#       define HDMI_GC_SEND                  (1<<  4)
> +#       define HDMI_GC_CONT                  (1<<  5) /* 0 - once; 1 - every frame */
> +#define HDMI_INFOFRAME_CONTROL0              0x7414
> +#       define HDMI_AVI_INFO_SEND            (1<<  0)
> +#       define HDMI_AVI_INFO_CONT            (1<<  1)
> +#       define HDMI_AUDIO_INFO_SEND          (1<<  4)
> +#       define HDMI_AUDIO_INFO_CONT          (1<<  5)
> +#       define HDMI_MPEG_INFO_SEND           (1<<  8)
> +#       define HDMI_MPEG_INFO_CONT           (1<<  9)
> +#define HDMI_INFOFRAME_CONTROL1              0x7418
> +#       define HDMI_AVI_INFO_LINE(x)         (((x)&  0x3f)<<  0)
> +#       define HDMI_AUDIO_INFO_LINE(x)       (((x)&  0x3f)<<  8)
> +#       define HDMI_MPEG_INFO_LINE(x)        (((x)&  0x3f)<<  16)
> +#define HDMI_GENERIC_PACKET_CONTROL          0x741c
> +#       define HDMI_GENERIC0_SEND            (1<<  0)
> +#       define HDMI_GENERIC0_CONT            (1<<  1)
> +#       define HDMI_GENERIC1_SEND            (1<<  4)
> +#       define HDMI_GENERIC1_CONT            (1<<  5)
> +#       define HDMI_GENERIC0_LINE(x)         (((x)&  0x3f)<<  16)
> +#       define HDMI_GENERIC1_LINE(x)         (((x)&  0x3f)<<  24)
> +#define HDMI_GC                              0x7428
> +#       define HDMI_GC_AVMUTE                (1<<  0)
> +#define AFMT_AUDIO_PACKET_CONTROL2           0x742c
> +#       define AFMT_AUDIO_LAYOUT_OVRD        (1<<  0)
> +#       define AFMT_AUDIO_LAYOUT_SELECT      (1<<  1)
> +#       define AFMT_60958_CS_SOURCE          (1<<  4)
> +#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x)&  0xff)<<  8)
> +#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x)&  0xff)<<  16)
> +#define AFMT_AVI_INFO0                       0x7454
> +#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x)&  0xff)<<  0)
> +#       define AFMT_AVI_INFO_S(x)            (((x)&  3)<<  8)
> +#       define AFMT_AVI_INFO_B(x)            (((x)&  3)<<  10)
> +#       define AFMT_AVI_INFO_A(x)            (((x)&  1)<<  12)
> +#       define AFMT_AVI_INFO_Y(x)            (((x)&  3)<<  13)
> +#       define AFMT_AVI_INFO_Y_RGB           0
> +#       define AFMT_AVI_INFO_Y_YCBCR422      1
> +#       define AFMT_AVI_INFO_Y_YCBCR444      2
> +#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x)&  0xff)<<  8)
> +#       define AFMT_AVI_INFO_R(x)            (((x)&  0xf)<<  16)
> +#       define AFMT_AVI_INFO_M(x)            (((x)&  0x3)<<  20)
> +#       define AFMT_AVI_INFO_C(x)            (((x)&  0x3)<<  22)
> +#       define AFMT_AVI_INFO_C_M_R(x)        (((x)&  0xff)<<  16)
> +#       define AFMT_AVI_INFO_SC(x)           (((x)&  0x3)<<  24)
> +#       define AFMT_AVI_INFO_Q(x)            (((x)&  0x3)<<  26)
> +#       define AFMT_AVI_INFO_EC(x)           (((x)&  0x3)<<  28)
> +#       define AFMT_AVI_INFO_ITC(x)          (((x)&  0x1)<<  31)
> +#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x)&  0xff)<<  24)
> +#define AFMT_AVI_INFO1                       0x7458
> +#       define AFMT_AVI_INFO_VIC(x)          (((x)&  0x7f)<<  0) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_PR(x)           (((x)&  0xf)<<  8) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_TOP(x)          (((x)&  0xffff)<<  16)
> +#define AFMT_AVI_INFO2                       0x745c
> +#       define AFMT_AVI_INFO_BOTTOM(x)       (((x)&  0xffff)<<  0)
> +#       define AFMT_AVI_INFO_LEFT(x)         (((x)&  0xffff)<<  16)
> +#define AFMT_AVI_INFO3                       0x7460
> +#       define AFMT_AVI_INFO_RIGHT(x)        (((x)&  0xffff)<<  0)
> +#       define AFMT_AVI_INFO_VERSION(x)      (((x)&  3)<<  24)
> +#define AFMT_MPEG_INFO0                      0x7464
> +#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x)&  0xff)<<  0)
> +#       define AFMT_MPEG_INFO_MB0(x)         (((x)&  0xff)<<  8)
> +#       define AFMT_MPEG_INFO_MB1(x)         (((x)&  0xff)<<  16)
> +#       define AFMT_MPEG_INFO_MB2(x)         (((x)&  0xff)<<  24)
> +#define AFMT_MPEG_INFO1                      0x7468
> +#       define AFMT_MPEG_INFO_MB3(x)         (((x)&  0xff)<<  0)
> +#       define AFMT_MPEG_INFO_MF(x)          (((x)&  3)<<  8)
> +#       define AFMT_MPEG_INFO_FR(x)          (((x)&  1)<<  12)
> +#define AFMT_GENERIC0_HDR                    0x746c
> +#define AFMT_GENERIC0_0                      0x7470
> +#define AFMT_GENERIC0_1                      0x7474
> +#define AFMT_GENERIC0_2                      0x7478
> +#define AFMT_GENERIC0_3                      0x747c
> +#define AFMT_GENERIC0_4                      0x7480
> +#define AFMT_GENERIC0_5                      0x7484
> +#define AFMT_GENERIC0_6                      0x7488
> +#define AFMT_GENERIC1_HDR                    0x748c
> +#define AFMT_GENERIC1_0                      0x7490
> +#define AFMT_GENERIC1_1                      0x7494
> +#define AFMT_GENERIC1_2                      0x7498
> +#define AFMT_GENERIC1_3                      0x749c
> +#define AFMT_GENERIC1_4                      0x74a0
> +#define AFMT_GENERIC1_5                      0x74a4
> +#define AFMT_GENERIC1_6                      0x74a8
> +#define HDMI_ACR_32_0                        0x74ac
> +#       define HDMI_ACR_CTS_32(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_32_1                        0x74b0
> +#       define HDMI_ACR_N_32(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_44_0                        0x74b4
> +#       define HDMI_ACR_CTS_44(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_44_1                        0x74b8
> +#       define HDMI_ACR_N_44(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_48_0                        0x74bc
> +#       define HDMI_ACR_CTS_48(x)            (((x)&  0xfffff)<<  12)
> +#define HDMI_ACR_48_1                        0x74c0
> +#       define HDMI_ACR_N_48(x)              (((x)&  0xfffff)<<  0)
> +#define HDMI_ACR_STATUS_0                    0x74c4
> +#define HDMI_ACR_STATUS_1                    0x74c8
> +#define AFMT_AUDIO_INFO0                     0x74cc
> +#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x)&  0xff)<<  0)
> +#       define AFMT_AUDIO_INFO_CC(x)         (((x)&  7)<<  8)
> +#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x)&  0xff)<<  16)
> +#define AFMT_AUDIO_INFO1                     0x74d0
> +#       define AFMT_AUDIO_INFO_CA(x)         (((x)&  0xff)<<  0)
> +#       define AFMT_AUDIO_INFO_LSV(x)        (((x)&  0xf)<<  11)
> +#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x)&  1)<<  15)
> +#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x)&  0xff)<<  8)
> +#define AFMT_60958_0                         0x74d4
> +#       define AFMT_60958_CS_A(x)            (((x)&  1)<<  0)
> +#       define AFMT_60958_CS_B(x)            (((x)&  1)<<  1)
> +#       define AFMT_60958_CS_C(x)            (((x)&  1)<<  2)
> +#       define AFMT_60958_CS_D(x)            (((x)&  3)<<  3)
> +#       define AFMT_60958_CS_MODE(x)         (((x)&  3)<<  6)
> +#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x)&  0xff)<<  8)
> +#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x)&  0xf)<<  16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x)&  0xf)<<  20)
> +#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x)&  0xf)<<  24)
> +#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x)&  3)<<  28)
> +#define AFMT_60958_1                         0x74d8
> +#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x)&  0xf)<<  0)
> +#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x)&  0xf)<<  4)
> +#       define AFMT_60958_CS_VALID_L(x)      (((x)&  1)<<  16)
> +#       define AFMT_60958_CS_VALID_R(x)      (((x)&  1)<<  18)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x)&  0xf)<<  20)
> +#define AFMT_AUDIO_CRC_CONTROL               0x74dc
> +#       define AFMT_AUDIO_CRC_EN             (1<<  0)
> +#define AFMT_RAMP_CONTROL0                   0x74e0
> +#       define AFMT_RAMP_MAX_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#       define AFMT_RAMP_DATA_SIGN           (1<<  31)
> +#define AFMT_RAMP_CONTROL1                   0x74e4
> +#       define AFMT_RAMP_MIN_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x)&  0xff)<<  24)
> +#define AFMT_RAMP_CONTROL2                   0x74e8
> +#       define AFMT_RAMP_INC_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#define AFMT_RAMP_CONTROL3                   0x74ec
> +#       define AFMT_RAMP_DEC_COUNT(x)        (((x)&  0xffffff)<<  0)
> +#define AFMT_60958_2                         0x74f0
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x)&  0xf)<<  0)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x)&  0xf)<<  4)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x)&  0xf)<<  8)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x)&  0xf)<<  12)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x)&  0xf)<<  16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x)&  0xf)<<  20)
> +#define AFMT_STATUS                          0x7600
> +#       define AFMT_AUDIO_ENABLE             (1<<  4)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1<<  30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x7604
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1<<  0)
> +#       define AFMT_AUDIO_TEST_EN            (1<<  12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1<<  24)
> +#       define AFMT_60958_CS_UPDATE          (1<<  26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1<<  27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1<<  28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1<<  29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1<<  30)
> +#define AFMT_VBI_PACKET_CONTROL              0x7608
> +#       define AFMT_GENERIC0_UPDATE          (1<<  2)
> +#define AFMT_INFOFRAME_CONTROL0              0x760c
> +#       define AFMT_AUDIO_INFO_SOURCE        (1<<  6) /* 0 - sound block; 1 - hmdi regs */
> +#       define AFMT_AUDIO_INFO_UPDATE        (1<<  7)
> +#       define AFMT_MPEG_INFO_UPDATE         (1<<  10)
> +#define AFMT_GENERIC0_7                      0x7610
> +/* second instance starts at 0x7800 */
> +#define HDMI_OFFSET0                      (0x7400 - 0x7400)
> +#define HDMI_OFFSET1                      (0x7800 - 0x7400)
> +
>   #define D1GRPH_PRIMARY_SURFACE_ADDRESS                    0x6110
>   #define D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6914
>   #define D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6114

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-28 17:19 [PATCH] drm/radeon/kms: add register definitions for audio alexdeucher
  2012-03-29  7:53 ` Christian König
@ 2012-03-29  8:16 ` Rafał Miłecki
  2012-03-29 11:54   ` Deucher, Alexander
  2012-03-30  9:09 ` Rafał Miłecki
  2012-03-30 13:07 ` Alex Deucher
  3 siblings, 1 reply; 7+ messages in thread
From: Rafał Miłecki @ 2012-03-29  8:16 UTC (permalink / raw)
  To: alexdeucher; +Cc: Alex Deucher, dri-devel

2012/3/28  <alexdeucher@gmail.com>:
> +/* digital blocks */
> +#define TMDSA_CNTL                       0x7880
> +#       define TMDSA_HDMI_EN             (1 << 2)
> +#define LVTMA_CNTL                       0x7a80
> +#       define LVTMA_HDMI_EN             (1 << 2)
> +#define DDIA_CNTL                        0x7200
> +#       define DDIA_HDMI_EN              (1 << 2)
> +#define DIG0_CNTL                        0x75a0
> +#       define DIG_MODE(x)               (((x) & 7) << 8)
> +#       define DIG_MODE_DP               0
> +#       define DIG_MODE_LVDS             1
> +#       define DIG_MODE_TMDS_DVI         2
> +#       define DIG_MODE_TMDS_HDMI        3
> +#       define DIG_MODE_SDVO             4
> +#define DIG1_CNTL                        0x79a0

TMDSA and LVTMA seem to be duplicated. Not sure if you want to have
them in 2 places?

-- 
Rafał
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-29  8:16 ` Rafał Miłecki
@ 2012-03-29 11:54   ` Deucher, Alexander
  0 siblings, 0 replies; 7+ messages in thread
From: Deucher, Alexander @ 2012-03-29 11:54 UTC (permalink / raw)
  To: Rafał Miłecki, alexdeucher; +Cc: dri-devel

> -----Original Message-----
> From: Rafał Miłecki [mailto:zajec5@gmail.com]
> Sent: Thursday, March 29, 2012 4:17 AM
> To: alexdeucher@gmail.com
> Cc: airlied@gmail.com; dri-devel@lists.freedesktop.org; Deucher, Alexander
> Subject: Re: [PATCH] drm/radeon/kms: add register definitions for audio
> 
> 2012/3/28  <alexdeucher@gmail.com>:
> > +/* digital blocks */
> > +#define TMDSA_CNTL                       0x7880
> > +#       define TMDSA_HDMI_EN             (1 << 2)
> > +#define LVTMA_CNTL                       0x7a80
> > +#       define LVTMA_HDMI_EN             (1 << 2)
> > +#define DDIA_CNTL                        0x7200
> > +#       define DDIA_HDMI_EN              (1 << 2)
> > +#define DIG0_CNTL                        0x75a0
> > +#       define DIG_MODE(x)               (((x) & 7) << 8)
> > +#       define DIG_MODE_DP               0
> > +#       define DIG_MODE_LVDS             1
> > +#       define DIG_MODE_TMDS_DVI         2
> > +#       define DIG_MODE_TMDS_HDMI        3
> > +#       define DIG_MODE_SDVO             4
> > +#define DIG1_CNTL                        0x79a0
> 
> TMDSA and LVTMA seem to be duplicated. Not sure if you want to have
> them in 2 places?

It's fine.  It depends where the headers are used.

Alex

> 
> --
> Rafał
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-28 17:19 [PATCH] drm/radeon/kms: add register definitions for audio alexdeucher
  2012-03-29  7:53 ` Christian König
  2012-03-29  8:16 ` Rafał Miłecki
@ 2012-03-30  9:09 ` Rafał Miłecki
  2012-03-30  9:11   ` Rafał Miłecki
  2012-03-30 13:07 ` Alex Deucher
  3 siblings, 1 reply; 7+ messages in thread
From: Rafał Miłecki @ 2012-03-30  9:09 UTC (permalink / raw)
  To: alexdeucher; +Cc: Alex Deucher, dri-devel

2012/3/28  <alexdeucher@gmail.com>:
> From: Alex Deucher <alexander.deucher@amd.com>
>
> This adds register definitions for HDMI/DP audio on
> DCE2/3/4/5 hardware.

OK, AICS we got PLL regs and HDMI blocks regs. May I ask about audio block regs?

Did you just missed them or do they need passing some additional review first?

I mean:
#define EVERGREEN_AUDIO_ENABLE				0x5e78
#define EVERGREEN_AUDIO_VENDOR_ID			0x5ec0

#define EVERGREEN_AUDIO_RATE_BPS_CHANNEL		0x5f00
#define EVERGREEN_AUDIO_PLAYING				0x5f04
#define EVERGREEN_AUDIO_CAT_STATUS			0x5f18

/* Audio general */
#define R600_AUDIO_ENABLE                 0x7300
#define R600_AUDIO_TIMING                 0x7344

/* Audio params */
#define R600_AUDIO_VENDOR_ID              0x7380
#define R600_AUDIO_REVISION_ID            0x7384
(...)

-- 
Rafał
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-30  9:09 ` Rafał Miłecki
@ 2012-03-30  9:11   ` Rafał Miłecki
  0 siblings, 0 replies; 7+ messages in thread
From: Rafał Miłecki @ 2012-03-30  9:11 UTC (permalink / raw)
  To: alexdeucher; +Cc: Alex Deucher, dri-devel

W dniu 30 marca 2012 11:09 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał:
> 2012/3/28  <alexdeucher@gmail.com>:
>> From: Alex Deucher <alexander.deucher@amd.com>
>>
>> This adds register definitions for HDMI/DP audio on
>> DCE2/3/4/5 hardware.
>
> OK, AICS we got PLL regs and HDMI blocks regs. May I ask about audio block regs?
>
> Did you just missed them or do they need passing some additional review first?

We probably can live without them just fine (quite easy ones to guess)
but I wanted to ask anyway, while we're still around HDMI.

-- 
Rafał
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/radeon/kms: add register definitions for audio
  2012-03-28 17:19 [PATCH] drm/radeon/kms: add register definitions for audio alexdeucher
                   ` (2 preceding siblings ...)
  2012-03-30  9:09 ` Rafał Miłecki
@ 2012-03-30 13:07 ` Alex Deucher
  3 siblings, 0 replies; 7+ messages in thread
From: Alex Deucher @ 2012-03-30 13:07 UTC (permalink / raw)
  To: airlied, dri-devel, zajec5

For those that are interested, I pulled together most of my original
hdmi code if someone wants to finish it up:
http://people.freedesktop.org/~agd5f/0001-WIP-port-of-hdmi-dp-audio-code-to-newer-kernel.patch
It needs:
- helper functions for calculating the infoframes and checksums
- helper functions for looking up the ACR cts and n values
- removal of the old hdmi code
- general cleanup

Unfortunately, I'm not going to have time to finish it in the near
future.  It should be a pretty easy task if anyone wants to take a
crack at it.

Alex

On Wed, Mar 28, 2012 at 1:19 PM,  <alexdeucher@gmail.com> wrote:
> From: Alex Deucher <alexander.deucher@amd.com>
>
> This adds register definitions for HDMI/DP audio on
> DCE2/3/4/5 hardware.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> ---
>  drivers/gpu/drm/radeon/evergreend.h |  220 ++++++++++++++++++++++++++++++++
>  drivers/gpu/drm/radeon/r600d.h      |  236 +++++++++++++++++++++++++++++++++++
>  drivers/gpu/drm/radeon/rs600d.h     |   14 ++
>  drivers/gpu/drm/radeon/rv770d.h     |  191 ++++++++++++++++++++++++++++
>  4 files changed, 661 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
> index eb5708c..3955d98 100644
> --- a/drivers/gpu/drm/radeon/evergreend.h
> +++ b/drivers/gpu/drm/radeon/evergreend.h
> @@ -112,6 +112,226 @@
>  #define        CP_SEM_INCOMPLETE_TIMER_CNTL                    0x85C8
>  #define        CP_DEBUG                                        0xC1FC
>
> +/* Audio clocks */
> +#define DCCG_AUDIO_DTO_SOURCE             0x05ac
> +#       define DCCG_AUDIO_DTO0_SOURCE_SEL(x) ((x) << 0) /* crtc0 - crtc5 */
> +#       define DCCG_AUDIO_DTO_SEL         (1 << 4) /* 0=dto0 1=dto1 */
> +
> +#define DCCG_AUDIO_DTO0_PHASE             0x05b0
> +#define DCCG_AUDIO_DTO0_MODULE            0x05b4
> +#define DCCG_AUDIO_DTO0_LOAD              0x05b8
> +#define DCCG_AUDIO_DTO0_CNTL              0x05bc
> +
> +#define DCCG_AUDIO_DTO1_PHASE             0x05c0
> +#define DCCG_AUDIO_DTO1_MODULE            0x05c4
> +#define DCCG_AUDIO_DTO1_LOAD              0x05c8
> +#define DCCG_AUDIO_DTO1_CNTL              0x05cc
> +
> +/* DCE 4.0 AFMT */
> +#define HDMI_CONTROL                         0x7030
> +#       define HDMI_KEEPOUT_MODE             (1 << 0)
> +#       define HDMI_PACKET_GEN_VERSION       (1 << 4) /* 0 = r6xx compat */
> +#       define HDMI_ERROR_ACK                (1 << 8)
> +#       define HDMI_ERROR_MASK               (1 << 9)
> +#       define HDMI_DEEP_COLOR_ENABLE        (1 << 24)
> +#       define HDMI_DEEP_COLOR_DEPTH         (((x) & 3) << 28)
> +#       define HDMI_24BIT_DEEP_COLOR         0
> +#       define HDMI_30BIT_DEEP_COLOR         1
> +#       define HDMI_36BIT_DEEP_COLOR         2
> +#define HDMI_STATUS                          0x7034
> +#       define HDMI_ACTIVE_AVMUTE            (1 << 0)
> +#       define HDMI_AUDIO_PACKET_ERROR       (1 << 16)
> +#       define HDMI_VBI_PACKET_ERROR         (1 << 20)
> +#define HDMI_AUDIO_PACKET_CONTROL            0x7038
> +#       define HDMI_AUDIO_DELAY_EN(x)        (((x) & 3) << 4)
> +#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
> +#define HDMI_ACR_PACKET_CONTROL              0x703c
> +#       define HDMI_ACR_SEND                 (1 << 0)
> +#       define HDMI_ACR_CONT                 (1 << 1)
> +#       define HDMI_ACR_SELECT(x)            (((x) & 3) << 4)
> +#       define HDMI_ACR_HW                   0
> +#       define HDMI_ACR_32                   1
> +#       define HDMI_ACR_44                   2
> +#       define HDMI_ACR_48                   3
> +#       define HDMI_ACR_SOURCE               (1 << 8) /* 0 - hw; 1 - cts value */
> +#       define HDMI_ACR_AUTO_SEND            (1 << 12)
> +#       define HDMI_ACR_N_MULTIPLE(x)        (((x) & 7) << 16)
> +#       define HDMI_ACR_X1                   1
> +#       define HDMI_ACR_X2                   2
> +#       define HDMI_ACR_X4                   4
> +#       define HDMI_ACR_AUDIO_PRIORITY       (1 << 31)
> +#define HDMI_VBI_PACKET_CONTROL              0x7040
> +#       define HDMI_NULL_SEND                (1 << 0)
> +#       define HDMI_GC_SEND                  (1 << 4)
> +#       define HDMI_GC_CONT                  (1 << 5) /* 0 - once; 1 - every frame */
> +#define HDMI_INFOFRAME_CONTROL0              0x7044
> +#       define HDMI_AVI_INFO_SEND            (1 << 0)
> +#       define HDMI_AVI_INFO_CONT            (1 << 1)
> +#       define HDMI_AUDIO_INFO_SEND          (1 << 4)
> +#       define HDMI_AUDIO_INFO_CONT          (1 << 5)
> +#       define HDMI_MPEG_INFO_SEND           (1 << 8)
> +#       define HDMI_MPEG_INFO_CONT           (1 << 9)
> +#define HDMI_INFOFRAME_CONTROL1              0x7048
> +#       define HDMI_AVI_INFO_LINE(x)         (((x) & 0x3f) << 0)
> +#       define HDMI_AUDIO_INFO_LINE(x)       (((x) & 0x3f) << 8)
> +#       define HDMI_MPEG_INFO_LINE(x)        (((x) & 0x3f) << 16)
> +#define HDMI_GENERIC_PACKET_CONTROL          0x704c
> +#       define HDMI_GENERIC0_SEND            (1 << 0)
> +#       define HDMI_GENERIC0_CONT            (1 << 1)
> +#       define HDMI_GENERIC1_SEND            (1 << 4)
> +#       define HDMI_GENERIC1_CONT            (1 << 5)
> +#       define HDMI_GENERIC0_LINE(x)         (((x) & 0x3f) << 16)
> +#       define HDMI_GENERIC1_LINE(x)         (((x) & 0x3f) << 24)
> +#define HDMI_GC                              0x7058
> +#       define HDMI_GC_AVMUTE                (1 << 0)
> +#       define HDMI_GC_AVMUTE_CONT           (1 << 2)
> +#define AFMT_AUDIO_PACKET_CONTROL2           0x705c
> +#       define AFMT_AUDIO_LAYOUT_OVRD        (1 << 0)
> +#       define AFMT_AUDIO_LAYOUT_SELECT      (1 << 1)
> +#       define AFMT_60958_CS_SOURCE          (1 << 4)
> +#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x) & 0xff) << 8)
> +#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x) & 0xff) << 16)
> +#define AFMT_AVI_INFO0                       0x7084
> +#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x) & 0xff) << 0)
> +#       define AFMT_AVI_INFO_S(x)            (((x) & 3) << 8)
> +#       define AFMT_AVI_INFO_B(x)            (((x) & 3) << 10)
> +#       define AFMT_AVI_INFO_A(x)            (((x) & 1) << 12)
> +#       define AFMT_AVI_INFO_Y(x)            (((x) & 3) << 13)
> +#       define AFMT_AVI_INFO_Y_RGB           0
> +#       define AFMT_AVI_INFO_Y_YCBCR422      1
> +#       define AFMT_AVI_INFO_Y_YCBCR444      2
> +#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x) & 0xff) << 8)
> +#       define AFMT_AVI_INFO_R(x)            (((x) & 0xf) << 16)
> +#       define AFMT_AVI_INFO_M(x)            (((x) & 0x3) << 20)
> +#       define AFMT_AVI_INFO_C(x)            (((x) & 0x3) << 22)
> +#       define AFMT_AVI_INFO_C_M_R(x)        (((x) & 0xff) << 16)
> +#       define AFMT_AVI_INFO_SC(x)           (((x) & 0x3) << 24)
> +#       define AFMT_AVI_INFO_Q(x)            (((x) & 0x3) << 26)
> +#       define AFMT_AVI_INFO_EC(x)           (((x) & 0x3) << 28)
> +#       define AFMT_AVI_INFO_ITC(x)          (((x) & 0x1) << 31)
> +#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
> +#define AFMT_AVI_INFO1                       0x7088
> +#       define AFMT_AVI_INFO_VIC(x)          (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_PR(x)           (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_CN(x)           (((x) & 0x3) << 12)
> +#       define AFMT_AVI_INFO_YQ(x)           (((x) & 0x3) << 14)
> +#       define AFMT_AVI_INFO_TOP(x)          (((x) & 0xffff) << 16)
> +#define AFMT_AVI_INFO2                       0x708c
> +#       define AFMT_AVI_INFO_BOTTOM(x)       (((x) & 0xffff) << 0)
> +#       define AFMT_AVI_INFO_LEFT(x)         (((x) & 0xffff) << 16)
> +#define AFMT_AVI_INFO3                       0x7090
> +#       define AFMT_AVI_INFO_RIGHT(x)        (((x) & 0xffff) << 0)
> +#       define AFMT_AVI_INFO_VERSION(x)      (((x) & 3) << 24)
> +#define AFMT_MPEG_INFO0                      0x7094
> +#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x) & 0xff) << 0)
> +#       define AFMT_MPEG_INFO_MB0(x)         (((x) & 0xff) << 8)
> +#       define AFMT_MPEG_INFO_MB1(x)         (((x) & 0xff) << 16)
> +#       define AFMT_MPEG_INFO_MB2(x)         (((x) & 0xff) << 24)
> +#define AFMT_MPEG_INFO1                      0x7098
> +#       define AFMT_MPEG_INFO_MB3(x)         (((x) & 0xff) << 0)
> +#       define AFMT_MPEG_INFO_MF(x)          (((x) & 3) << 8)
> +#       define AFMT_MPEG_INFO_FR(x)          (((x) & 1) << 12)
> +#define AFMT_GENERIC0_HDR                    0x709c
> +#define AFMT_GENERIC0_0                      0x70a0
> +#define AFMT_GENERIC0_1                      0x70a4
> +#define AFMT_GENERIC0_2                      0x70a8
> +#define AFMT_GENERIC0_3                      0x70ac
> +#define AFMT_GENERIC0_4                      0x70b0
> +#define AFMT_GENERIC0_5                      0x70b4
> +#define AFMT_GENERIC0_6                      0x70b8
> +#define AFMT_GENERIC1_HDR                    0x70bc
> +#define AFMT_GENERIC1_0                      0x70c0
> +#define AFMT_GENERIC1_1                      0x70c4
> +#define AFMT_GENERIC1_2                      0x70c8
> +#define AFMT_GENERIC1_3                      0x70cc
> +#define AFMT_GENERIC1_4                      0x70d0
> +#define AFMT_GENERIC1_5                      0x70d4
> +#define AFMT_GENERIC1_6                      0x70d8
> +#define HDMI_ACR_32_0                        0x70dc
> +#       define HDMI_ACR_CTS_32(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_32_1                        0x70e0
> +#       define HDMI_ACR_N_32(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_44_0                        0x70e4
> +#       define HDMI_ACR_CTS_44(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_44_1                        0x70e8
> +#       define HDMI_ACR_N_44(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_48_0                        0x70ec
> +#       define HDMI_ACR_CTS_48(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_48_1                        0x70f0
> +#       define HDMI_ACR_N_48(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_STATUS_0                    0x70f4
> +#define HDMI_ACR_STATUS_1                    0x70f8
> +#define AFMT_AUDIO_INFO0                     0x70fc
> +#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x) & 0xff) << 0)
> +#       define AFMT_AUDIO_INFO_CC(x)         (((x) & 7) << 8)
> +#       define AFMT_AUDIO_INFO_CT(x)         (((x) & 0xf) << 11)
> +#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x) & 0xff) << 16)
> +#       define AFMT_AUDIO_INFO_CXT(x)        (((x) & 0x1f) << 24)
> +#define AFMT_AUDIO_INFO1                     0x7100
> +#       define AFMT_AUDIO_INFO_CA(x)         (((x) & 0xff) << 0)
> +#       define AFMT_AUDIO_INFO_LSV(x)        (((x) & 0xf) << 11)
> +#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x) & 1) << 15)
> +#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x) & 0xff) << 8)
> +#       define AFMT_AUDIO_INFO_LFEBPL(x)     (((x) & 3) << 16)
> +#define AFMT_60958_0                         0x7104
> +#       define AFMT_60958_CS_A(x)            (((x) & 1) << 0)
> +#       define AFMT_60958_CS_B(x)            (((x) & 1) << 1)
> +#       define AFMT_60958_CS_C(x)            (((x) & 1) << 2)
> +#       define AFMT_60958_CS_D(x)            (((x) & 3) << 3)
> +#       define AFMT_60958_CS_MODE(x)         (((x) & 3) << 6)
> +#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
> +#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
> +#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
> +#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
> +#define AFMT_60958_1                         0x7108
> +#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x) & 0xf) << 0)
> +#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
> +#       define AFMT_60958_CS_VALID_L(x)      (((x) & 1) << 16)
> +#       define AFMT_60958_CS_VALID_R(x)      (((x) & 1) << 18)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
> +#define AFMT_AUDIO_CRC_CONTROL               0x710c
> +#       define AFMT_AUDIO_CRC_EN             (1 << 0)
> +#define AFMT_RAMP_CONTROL0                   0x7110
> +#       define AFMT_RAMP_MAX_COUNT(x)        (((x) & 0xffffff) << 0)
> +#       define AFMT_RAMP_DATA_SIGN           (1 << 31)
> +#define AFMT_RAMP_CONTROL1                   0x7114
> +#       define AFMT_RAMP_MIN_COUNT(x)        (((x) & 0xffffff) << 0)
> +#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x) & 0xff) << 24)
> +#define AFMT_RAMP_CONTROL2                   0x7118
> +#       define AFMT_RAMP_INC_COUNT(x)        (((x) & 0xffffff) << 0)
> +#define AFMT_RAMP_CONTROL3                   0x711c
> +#       define AFMT_RAMP_DEC_COUNT(x)        (((x) & 0xffffff) << 0)
> +#define AFMT_60958_2                         0x7120
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
> +#define AFMT_STATUS                          0x7128
> +#       define AFMT_AUDIO_ENABLE             (1 << 4)
> +#       define AFMT_AUDIO_HBR_ENABLE         (1 << 8)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x712c
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
> +#       define AFMT_RESET_FIFO_WHEN_AUDIO_DIS (1 << 11) /* set to 1 */
> +#       define AFMT_AUDIO_TEST_EN            (1 << 12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
> +#       define AFMT_60958_CS_UPDATE          (1 << 26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
> +#define AFMT_VBI_PACKET_CONTROL              0x7130
> +#       define AFMT_GENERIC0_UPDATE          (1 << 2)
> +#define AFMT_INFOFRAME_CONTROL0              0x7134
> +#       define AFMT_AUDIO_INFO_SOURCE        (1 << 6) /* 0 - sound block; 1 - afmt regs */
> +#       define AFMT_AUDIO_INFO_UPDATE        (1 << 7)
> +#       define AFMT_MPEG_INFO_UPDATE         (1 << 10)
> +#define AFMT_GENERIC0_7                      0x7138
>
>  #define        GC_USER_SHADER_PIPE_CONFIG                      0x8954
>  #define                INACTIVE_QD_PIPES(x)                            ((x) << 8)
> diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
> index 3568a2e..7f0c223 100644
> --- a/drivers/gpu/drm/radeon/r600d.h
> +++ b/drivers/gpu/drm/radeon/r600d.h
> @@ -816,6 +816,242 @@
>  #       define TARGET_LINK_SPEED_MASK                     (0xf << 0)
>  #       define SELECTABLE_DEEMPHASIS                      (1 << 6)
>
> +/* Audio clocks */
> +#define DCCG_AUDIO_DTO0_PHASE             0x0514
> +#define DCCG_AUDIO_DTO0_MODULE            0x0518
> +#define DCCG_AUDIO_DTO0_LOAD              0x051c
> +#       define DTO_LOAD                   (1 << 31)
> +#define DCCG_AUDIO_DTO0_CNTL              0x0520
> +
> +#define DCCG_AUDIO_DTO1_PHASE             0x0524
> +#define DCCG_AUDIO_DTO1_MODULE            0x0528
> +#define DCCG_AUDIO_DTO1_LOAD              0x052c
> +#define DCCG_AUDIO_DTO1_CNTL              0x0530
> +
> +#define DCCG_AUDIO_DTO_SELECT             0x0534
> +
> +/* digital blocks */
> +#define TMDSA_CNTL                       0x7880
> +#       define TMDSA_HDMI_EN             (1 << 2)
> +#define LVTMA_CNTL                       0x7a80
> +#       define LVTMA_HDMI_EN             (1 << 2)
> +#define DDIA_CNTL                        0x7200
> +#       define DDIA_HDMI_EN              (1 << 2)
> +#define DIG0_CNTL                        0x75a0
> +#       define DIG_MODE(x)               (((x) & 7) << 8)
> +#       define DIG_MODE_DP               0
> +#       define DIG_MODE_LVDS             1
> +#       define DIG_MODE_TMDS_DVI         2
> +#       define DIG_MODE_TMDS_HDMI        3
> +#       define DIG_MODE_SDVO             4
> +#define DIG1_CNTL                        0x79a0
> +
> +/* rs6xx/rs740 and r6xx share the same HDMI blocks, however, rs6xx has only one
> + * instance of the blocks while r6xx has 2.  DCE 3.0 cards are slightly
> + * different due to the new DIG blocks, but also have 2 instances.
> + * DCE 3.0 HDMI blocks are part of each DIG encoder.
> + */
> +
> +/* rs6xx/rs740/r6xx/dce3 */
> +#define HDMI0_CONTROL                0x7400
> +/* rs6xx/rs740/r6xx */
> +#       define HDMI0_ENABLE          (1 << 0)
> +#       define HDMI0_STREAM(x)       (((x) & 3) << 2)
> +#       define HDMI0_STREAM_TMDSA    0
> +#       define HDMI0_STREAM_LVTMA    1
> +#       define HDMI0_STREAM_DVOA     2
> +#       define HDMI0_STREAM_DDIA     3
> +/* rs6xx/r6xx/dce3 */
> +#       define HDMI0_ERROR_ACK       (1 << 8)
> +#       define HDMI0_ERROR_MASK      (1 << 9)
> +#define HDMI0_STATUS                 0x7404
> +#       define HDMI0_ACTIVE_AVMUTE   (1 << 0)
> +#       define HDMI0_AUDIO_ENABLE    (1 << 4)
> +#       define HDMI0_AZ_FORMAT_WTRIG     (1 << 28)
> +#       define HDMI0_AZ_FORMAT_WTRIG_INT (1 << 29)
> +#define HDMI0_AUDIO_PACKET_CONTROL   0x7408
> +#       define HDMI0_AUDIO_SAMPLE_SEND  (1 << 0)
> +#       define HDMI0_AUDIO_DELAY_EN(x)  (((x) & 3) << 4)
> +#       define HDMI0_AUDIO_SEND_MAX_PACKETS  (1 << 8)
> +#       define HDMI0_AUDIO_TEST_EN         (1 << 12)
> +#       define HDMI0_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
> +#       define HDMI0_AUDIO_CHANNEL_SWAP    (1 << 24)
> +#       define HDMI0_60958_CS_UPDATE       (1 << 26)
> +#       define HDMI0_AZ_FORMAT_WTRIG_MASK  (1 << 28)
> +#       define HDMI0_AZ_FORMAT_WTRIG_ACK   (1 << 29)
> +#define HDMI0_AUDIO_CRC_CONTROL      0x740c
> +#       define HDMI0_AUDIO_CRC_EN    (1 << 0)
> +#define HDMI0_VBI_PACKET_CONTROL     0x7410
> +#       define HDMI0_NULL_SEND       (1 << 0)
> +#       define HDMI0_GC_SEND         (1 << 4)
> +#       define HDMI0_GC_CONT         (1 << 5) /* 0 - once; 1 - every frame */
> +#define HDMI0_INFOFRAME_CONTROL0     0x7414
> +#       define HDMI0_AVI_INFO_SEND   (1 << 0)
> +#       define HDMI0_AVI_INFO_CONT   (1 << 1)
> +#       define HDMI0_AUDIO_INFO_SEND (1 << 4)
> +#       define HDMI0_AUDIO_INFO_CONT (1 << 5)
> +#       define HDMI0_AUDIO_INFO_SOURCE (1 << 6) /* 0 - sound block; 1 - hmdi regs */
> +#       define HDMI0_AUDIO_INFO_UPDATE (1 << 7)
> +#       define HDMI0_MPEG_INFO_SEND  (1 << 8)
> +#       define HDMI0_MPEG_INFO_CONT  (1 << 9)
> +#       define HDMI0_MPEG_INFO_UPDATE  (1 << 10)
> +#define HDMI0_INFOFRAME_CONTROL1     0x7418
> +#       define HDMI0_AVI_INFO_LINE(x)  (((x) & 0x3f) << 0)
> +#       define HDMI0_AUDIO_INFO_LINE(x)  (((x) & 0x3f) << 8)
> +#       define HDMI0_MPEG_INFO_LINE(x)  (((x) & 0x3f) << 16)
> +#define HDMI0_GENERIC_PACKET_CONTROL 0x741c
> +#       define HDMI0_GENERIC0_SEND   (1 << 0)
> +#       define HDMI0_GENERIC0_CONT   (1 << 1)
> +#       define HDMI0_GENERIC0_UPDATE (1 << 2)
> +#       define HDMI0_GENERIC1_SEND   (1 << 4)
> +#       define HDMI0_GENERIC1_CONT   (1 << 5)
> +#       define HDMI0_GENERIC0_LINE(x)  (((x) & 0x3f) << 16)
> +#       define HDMI0_GENERIC1_LINE(x)  (((x) & 0x3f) << 24)
> +#define HDMI0_GC                     0x7428
> +#       define HDMI0_GC_AVMUTE       (1 << 0)
> +#define HDMI0_AVI_INFO0              0x7454
> +#       define HDMI0_AVI_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
> +#       define HDMI0_AVI_INFO_S(x)   (((x) & 3) << 8)
> +#       define HDMI0_AVI_INFO_B(x)   (((x) & 3) << 10)
> +#       define HDMI0_AVI_INFO_A(x)   (((x) & 1) << 12)
> +#       define HDMI0_AVI_INFO_Y(x)   (((x) & 3) << 13)
> +#       define HDMI0_AVI_INFO_Y_RGB       0
> +#       define HDMI0_AVI_INFO_Y_YCBCR422  1
> +#       define HDMI0_AVI_INFO_Y_YCBCR444  2
> +#       define HDMI0_AVI_INFO_Y_A_B_S(x)   (((x) & 0xff) << 8)
> +#       define HDMI0_AVI_INFO_R(x)   (((x) & 0xf) << 16)
> +#       define HDMI0_AVI_INFO_M(x)   (((x) & 0x3) << 20)
> +#       define HDMI0_AVI_INFO_C(x)   (((x) & 0x3) << 22)
> +#       define HDMI0_AVI_INFO_C_M_R(x)   (((x) & 0xff) << 16)
> +#       define HDMI0_AVI_INFO_SC(x)  (((x) & 0x3) << 24)
> +#       define HDMI0_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
> +#define HDMI0_AVI_INFO1              0x7458
> +#       define HDMI0_AVI_INFO_VIC(x) (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
> +#       define HDMI0_AVI_INFO_PR(x)  (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
> +#       define HDMI0_AVI_INFO_TOP(x) (((x) & 0xffff) << 16)
> +#define HDMI0_AVI_INFO2              0x745c
> +#       define HDMI0_AVI_INFO_BOTTOM(x)  (((x) & 0xffff) << 0)
> +#       define HDMI0_AVI_INFO_LEFT(x)    (((x) & 0xffff) << 16)
> +#define HDMI0_AVI_INFO3              0x7460
> +#       define HDMI0_AVI_INFO_RIGHT(x)    (((x) & 0xffff) << 0)
> +#       define HDMI0_AVI_INFO_VERSION(x)  (((x) & 3) << 24)
> +#define HDMI0_MPEG_INFO0             0x7464
> +#       define HDMI0_MPEG_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
> +#       define HDMI0_MPEG_INFO_MB0(x)  (((x) & 0xff) << 8)
> +#       define HDMI0_MPEG_INFO_MB1(x)  (((x) & 0xff) << 16)
> +#       define HDMI0_MPEG_INFO_MB2(x)  (((x) & 0xff) << 24)
> +#define HDMI0_MPEG_INFO1             0x7468
> +#       define HDMI0_MPEG_INFO_MB3(x)  (((x) & 0xff) << 0)
> +#       define HDMI0_MPEG_INFO_MF(x)   (((x) & 3) << 8)
> +#       define HDMI0_MPEG_INFO_FR(x)   (((x) & 1) << 12)
> +#define HDMI0_GENERIC0_HDR           0x746c
> +#define HDMI0_GENERIC0_0             0x7470
> +#define HDMI0_GENERIC0_1             0x7474
> +#define HDMI0_GENERIC0_2             0x7478
> +#define HDMI0_GENERIC0_3             0x747c
> +#define HDMI0_GENERIC0_4             0x7480
> +#define HDMI0_GENERIC0_5             0x7484
> +#define HDMI0_GENERIC0_6             0x7488
> +#define HDMI0_GENERIC1_HDR           0x748c
> +#define HDMI0_GENERIC1_0             0x7490
> +#define HDMI0_GENERIC1_1             0x7494
> +#define HDMI0_GENERIC1_2             0x7498
> +#define HDMI0_GENERIC1_3             0x749c
> +#define HDMI0_GENERIC1_4             0x74a0
> +#define HDMI0_GENERIC1_5             0x74a4
> +#define HDMI0_GENERIC1_6             0x74a8
> +#define HDMI0_ACR_32_0               0x74ac
> +#       define HDMI0_ACR_CTS_32(x)   (((x) & 0xfffff) << 12)
> +#define HDMI0_ACR_32_1               0x74b0
> +#       define HDMI0_ACR_N_32(x)   (((x) & 0xfffff) << 0)
> +#define HDMI0_ACR_44_0               0x74b4
> +#       define HDMI0_ACR_CTS_44(x)   (((x) & 0xfffff) << 12)
> +#define HDMI0_ACR_44_1               0x74b8
> +#       define HDMI0_ACR_N_44(x)   (((x) & 0xfffff) << 0)
> +#define HDMI0_ACR_48_0               0x74bc
> +#       define HDMI0_ACR_CTS_48(x)   (((x) & 0xfffff) << 12)
> +#define HDMI0_ACR_48_1               0x74c0
> +#       define HDMI0_ACR_N_48(x)   (((x) & 0xfffff) << 0)
> +#define HDMI0_ACR_STATUS_0           0x74c4
> +#define HDMI0_ACR_STATUS_1           0x74c8
> +#define HDMI0_AUDIO_INFO0            0x74cc
> +#       define HDMI0_AUDIO_INFO_CHECKSUM(x)  (((x) & 0xff) << 0)
> +#       define HDMI0_AUDIO_INFO_CC(x)  (((x) & 7) << 8)
> +#define HDMI0_AUDIO_INFO1            0x74d0
> +#       define HDMI0_AUDIO_INFO_CA(x)  (((x) & 0xff) << 0)
> +#       define HDMI0_AUDIO_INFO_LSV(x)  (((x) & 0xf) << 11)
> +#       define HDMI0_AUDIO_INFO_DM_INH(x)  (((x) & 1) << 15)
> +#       define HDMI0_AUDIO_INFO_DM_INH_LSV(x)  (((x) & 0xff) << 8)
> +#define HDMI0_60958_0                0x74d4
> +#       define HDMI0_60958_CS_A(x)   (((x) & 1) << 0)
> +#       define HDMI0_60958_CS_B(x)   (((x) & 1) << 1)
> +#       define HDMI0_60958_CS_C(x)   (((x) & 1) << 2)
> +#       define HDMI0_60958_CS_D(x)   (((x) & 3) << 3)
> +#       define HDMI0_60958_CS_MODE(x)   (((x) & 3) << 6)
> +#       define HDMI0_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
> +#       define HDMI0_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
> +#       define HDMI0_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
> +#       define HDMI0_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
> +#define HDMI0_60958_1                0x74d8
> +#       define HDMI0_60958_CS_WORD_LENGTH(x)        (((x) & 0xf) << 0)
> +#       define HDMI0_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
> +#       define HDMI0_60958_CS_VALID_L(x)   (((x) & 1) << 16)
> +#       define HDMI0_60958_CS_VALID_R(x)   (((x) & 1) << 18)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
> +#define HDMI0_ACR_PACKET_CONTROL     0x74dc
> +#       define HDMI0_ACR_SEND        (1 << 0)
> +#       define HDMI0_ACR_CONT        (1 << 1)
> +#       define HDMI0_ACR_SELECT(x)   (((x) & 3) << 4)
> +#       define HDMI0_ACR_HW          0
> +#       define HDMI0_ACR_32          1
> +#       define HDMI0_ACR_44          2
> +#       define HDMI0_ACR_48          3
> +#       define HDMI0_ACR_SOURCE      (1 << 8) /* 0 - hw; 1 - cts value */
> +#       define HDMI0_ACR_AUTO_SEND   (1 << 12)
> +#define HDMI0_RAMP_CONTROL0          0x74e0
> +#       define HDMI0_RAMP_MAX_COUNT(x)   (((x) & 0xffffff) << 0)
> +#define HDMI0_RAMP_CONTROL1          0x74e4
> +#       define HDMI0_RAMP_MIN_COUNT(x)   (((x) & 0xffffff) << 0)
> +#define HDMI0_RAMP_CONTROL2          0x74e8
> +#       define HDMI0_RAMP_INC_COUNT(x)   (((x) & 0xffffff) << 0)
> +#define HDMI0_RAMP_CONTROL3          0x74ec
> +#       define HDMI0_RAMP_DEC_COUNT(x)   (((x) & 0xffffff) << 0)
> +/* HDMI0_60958_2 is r7xx only */
> +#define HDMI0_60958_2                0x74f0
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
> +#       define HDMI0_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
> +/* r6xx only; second instance starts at 0x7700 */
> +#define HDMI1_CONTROL                0x7700
> +#define HDMI1_STATUS                 0x7704
> +#define HDMI1_AUDIO_PACKET_CONTROL   0x7708
> +/* DCE3; second instance starts at 0x7800 NOT 0x7700 */
> +#define DCE3_HDMI1_CONTROL                0x7800
> +#define DCE3_HDMI1_STATUS                 0x7804
> +#define DCE3_HDMI1_AUDIO_PACKET_CONTROL   0x7808
> +/* DCE3.2 (for interrupts) */
> +#define AFMT_STATUS                          0x7600
> +#       define AFMT_AUDIO_ENABLE             (1 << 4)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x7604
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
> +#       define AFMT_AUDIO_TEST_EN            (1 << 12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
> +#       define AFMT_60958_CS_UPDATE          (1 << 26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
> +/* DCE3.2 second instance starts at 0x7800 */
> +#define HDMI_OFFSET0                      (0x7400 - 0x7400)
> +#define HDMI_OFFSET1                      (0x7800 - 0x7400)
> +
>  /*
>  * PM4
>  */
> diff --git a/drivers/gpu/drm/radeon/rs600d.h b/drivers/gpu/drm/radeon/rs600d.h
> index a27c13a..f1f8941 100644
> --- a/drivers/gpu/drm/radeon/rs600d.h
> +++ b/drivers/gpu/drm/radeon/rs600d.h
> @@ -485,6 +485,20 @@
>  #define   S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x) & 0x1) << 16)
>  #define   G_007D18_DC_HOT_PLUG_DETECT2_INT_EN(x)       (((x) >> 16) & 0x1)
>  #define   C_007D18_DC_HOT_PLUG_DETECT2_INT_EN          0xFFFEFFFF
> +#define R_007404_HDMI0_STATUS                          0x007404
> +#define   S_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x) & 0x1) << 28)
> +#define   G_007404_HDMI0_AZ_FORMAT_WTRIG(x)            (((x) >> 28) & 0x1)
> +#define   C_007404_HDMI0_AZ_FORMAT_WTRIG               0xEFFFFFFF
> +#define   S_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x) & 0x1) << 29)
> +#define   G_007404_HDMI0_AZ_FORMAT_WTRIG_INT(x)        (((x) >> 29) & 0x1)
> +#define   C_007404_HDMI0_AZ_FORMAT_WTRIG_INT           0xDFFFFFFF
> +#define R_007408_HDMI0_AUDIO_PACKET_CONTROL            0x007408
> +#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x) & 0x1) << 28)
> +#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_MASK(x)       (((x) >> 28) & 0x1)
> +#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_MASK          0xEFFFFFFF
> +#define   S_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x) & 0x1) << 29)
> +#define   G_007408_HDMI0_AZ_FORMAT_WTRIG_ACK(x)        (((x) >> 29) & 0x1)
> +#define   C_007408_HDMI0_AZ_FORMAT_WTRIG_ACK           0xDFFFFFFF
>
>  /* MC registers */
>  #define R_000000_MC_STATUS                           0x000000
> diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
> index 79fa588..9c549f7 100644
> --- a/drivers/gpu/drm/radeon/rv770d.h
> +++ b/drivers/gpu/drm/radeon/rv770d.h
> @@ -353,6 +353,197 @@
>
>  #define        SRBM_STATUS                                     0x0E50
>
> +/* DCE 3.2 HDMI */
> +#define HDMI_CONTROL                         0x7400
> +#       define HDMI_KEEPOUT_MODE             (1 << 0)
> +#       define HDMI_PACKET_GEN_VERSION       (1 << 4) /* 0 = r6xx compat */
> +#       define HDMI_ERROR_ACK                (1 << 8)
> +#       define HDMI_ERROR_MASK               (1 << 9)
> +#define HDMI_STATUS                          0x7404
> +#       define HDMI_ACTIVE_AVMUTE            (1 << 0)
> +#       define HDMI_AUDIO_PACKET_ERROR       (1 << 16)
> +#       define HDMI_VBI_PACKET_ERROR         (1 << 20)
> +#define HDMI_AUDIO_PACKET_CONTROL            0x7408
> +#       define HDMI_AUDIO_DELAY_EN(x)        (((x) & 3) << 4)
> +#       define HDMI_AUDIO_PACKETS_PER_LINE(x)  (((x) & 0x1f) << 16)
> +#define HDMI_ACR_PACKET_CONTROL              0x740c
> +#       define HDMI_ACR_SEND                 (1 << 0)
> +#       define HDMI_ACR_CONT                 (1 << 1)
> +#       define HDMI_ACR_SELECT(x)            (((x) & 3) << 4)
> +#       define HDMI_ACR_HW                   0
> +#       define HDMI_ACR_32                   1
> +#       define HDMI_ACR_44                   2
> +#       define HDMI_ACR_48                   3
> +#       define HDMI_ACR_SOURCE               (1 << 8) /* 0 - hw; 1 - cts value */
> +#       define HDMI_ACR_AUTO_SEND            (1 << 12)
> +#define HDMI_VBI_PACKET_CONTROL              0x7410
> +#       define HDMI_NULL_SEND                (1 << 0)
> +#       define HDMI_GC_SEND                  (1 << 4)
> +#       define HDMI_GC_CONT                  (1 << 5) /* 0 - once; 1 - every frame */
> +#define HDMI_INFOFRAME_CONTROL0              0x7414
> +#       define HDMI_AVI_INFO_SEND            (1 << 0)
> +#       define HDMI_AVI_INFO_CONT            (1 << 1)
> +#       define HDMI_AUDIO_INFO_SEND          (1 << 4)
> +#       define HDMI_AUDIO_INFO_CONT          (1 << 5)
> +#       define HDMI_MPEG_INFO_SEND           (1 << 8)
> +#       define HDMI_MPEG_INFO_CONT           (1 << 9)
> +#define HDMI_INFOFRAME_CONTROL1              0x7418
> +#       define HDMI_AVI_INFO_LINE(x)         (((x) & 0x3f) << 0)
> +#       define HDMI_AUDIO_INFO_LINE(x)       (((x) & 0x3f) << 8)
> +#       define HDMI_MPEG_INFO_LINE(x)        (((x) & 0x3f) << 16)
> +#define HDMI_GENERIC_PACKET_CONTROL          0x741c
> +#       define HDMI_GENERIC0_SEND            (1 << 0)
> +#       define HDMI_GENERIC0_CONT            (1 << 1)
> +#       define HDMI_GENERIC1_SEND            (1 << 4)
> +#       define HDMI_GENERIC1_CONT            (1 << 5)
> +#       define HDMI_GENERIC0_LINE(x)         (((x) & 0x3f) << 16)
> +#       define HDMI_GENERIC1_LINE(x)         (((x) & 0x3f) << 24)
> +#define HDMI_GC                              0x7428
> +#       define HDMI_GC_AVMUTE                (1 << 0)
> +#define AFMT_AUDIO_PACKET_CONTROL2           0x742c
> +#       define AFMT_AUDIO_LAYOUT_OVRD        (1 << 0)
> +#       define AFMT_AUDIO_LAYOUT_SELECT      (1 << 1)
> +#       define AFMT_60958_CS_SOURCE          (1 << 4)
> +#       define AFMT_AUDIO_CHANNEL_ENABLE(x)  (((x) & 0xff) << 8)
> +#       define AFMT_DP_AUDIO_STREAM_ID(x)    (((x) & 0xff) << 16)
> +#define AFMT_AVI_INFO0                       0x7454
> +#       define AFMT_AVI_INFO_CHECKSUM(x)     (((x) & 0xff) << 0)
> +#       define AFMT_AVI_INFO_S(x)            (((x) & 3) << 8)
> +#       define AFMT_AVI_INFO_B(x)            (((x) & 3) << 10)
> +#       define AFMT_AVI_INFO_A(x)            (((x) & 1) << 12)
> +#       define AFMT_AVI_INFO_Y(x)            (((x) & 3) << 13)
> +#       define AFMT_AVI_INFO_Y_RGB           0
> +#       define AFMT_AVI_INFO_Y_YCBCR422      1
> +#       define AFMT_AVI_INFO_Y_YCBCR444      2
> +#       define AFMT_AVI_INFO_Y_A_B_S(x)      (((x) & 0xff) << 8)
> +#       define AFMT_AVI_INFO_R(x)            (((x) & 0xf) << 16)
> +#       define AFMT_AVI_INFO_M(x)            (((x) & 0x3) << 20)
> +#       define AFMT_AVI_INFO_C(x)            (((x) & 0x3) << 22)
> +#       define AFMT_AVI_INFO_C_M_R(x)        (((x) & 0xff) << 16)
> +#       define AFMT_AVI_INFO_SC(x)           (((x) & 0x3) << 24)
> +#       define AFMT_AVI_INFO_Q(x)            (((x) & 0x3) << 26)
> +#       define AFMT_AVI_INFO_EC(x)           (((x) & 0x3) << 28)
> +#       define AFMT_AVI_INFO_ITC(x)          (((x) & 0x1) << 31)
> +#       define AFMT_AVI_INFO_ITC_EC_Q_SC(x)  (((x) & 0xff) << 24)
> +#define AFMT_AVI_INFO1                       0x7458
> +#       define AFMT_AVI_INFO_VIC(x)          (((x) & 0x7f) << 0) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_PR(x)           (((x) & 0xf) << 8) /* don't use avi infoframe v1 */
> +#       define AFMT_AVI_INFO_TOP(x)          (((x) & 0xffff) << 16)
> +#define AFMT_AVI_INFO2                       0x745c
> +#       define AFMT_AVI_INFO_BOTTOM(x)       (((x) & 0xffff) << 0)
> +#       define AFMT_AVI_INFO_LEFT(x)         (((x) & 0xffff) << 16)
> +#define AFMT_AVI_INFO3                       0x7460
> +#       define AFMT_AVI_INFO_RIGHT(x)        (((x) & 0xffff) << 0)
> +#       define AFMT_AVI_INFO_VERSION(x)      (((x) & 3) << 24)
> +#define AFMT_MPEG_INFO0                      0x7464
> +#       define AFMT_MPEG_INFO_CHECKSUM(x)    (((x) & 0xff) << 0)
> +#       define AFMT_MPEG_INFO_MB0(x)         (((x) & 0xff) << 8)
> +#       define AFMT_MPEG_INFO_MB1(x)         (((x) & 0xff) << 16)
> +#       define AFMT_MPEG_INFO_MB2(x)         (((x) & 0xff) << 24)
> +#define AFMT_MPEG_INFO1                      0x7468
> +#       define AFMT_MPEG_INFO_MB3(x)         (((x) & 0xff) << 0)
> +#       define AFMT_MPEG_INFO_MF(x)          (((x) & 3) << 8)
> +#       define AFMT_MPEG_INFO_FR(x)          (((x) & 1) << 12)
> +#define AFMT_GENERIC0_HDR                    0x746c
> +#define AFMT_GENERIC0_0                      0x7470
> +#define AFMT_GENERIC0_1                      0x7474
> +#define AFMT_GENERIC0_2                      0x7478
> +#define AFMT_GENERIC0_3                      0x747c
> +#define AFMT_GENERIC0_4                      0x7480
> +#define AFMT_GENERIC0_5                      0x7484
> +#define AFMT_GENERIC0_6                      0x7488
> +#define AFMT_GENERIC1_HDR                    0x748c
> +#define AFMT_GENERIC1_0                      0x7490
> +#define AFMT_GENERIC1_1                      0x7494
> +#define AFMT_GENERIC1_2                      0x7498
> +#define AFMT_GENERIC1_3                      0x749c
> +#define AFMT_GENERIC1_4                      0x74a0
> +#define AFMT_GENERIC1_5                      0x74a4
> +#define AFMT_GENERIC1_6                      0x74a8
> +#define HDMI_ACR_32_0                        0x74ac
> +#       define HDMI_ACR_CTS_32(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_32_1                        0x74b0
> +#       define HDMI_ACR_N_32(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_44_0                        0x74b4
> +#       define HDMI_ACR_CTS_44(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_44_1                        0x74b8
> +#       define HDMI_ACR_N_44(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_48_0                        0x74bc
> +#       define HDMI_ACR_CTS_48(x)            (((x) & 0xfffff) << 12)
> +#define HDMI_ACR_48_1                        0x74c0
> +#       define HDMI_ACR_N_48(x)              (((x) & 0xfffff) << 0)
> +#define HDMI_ACR_STATUS_0                    0x74c4
> +#define HDMI_ACR_STATUS_1                    0x74c8
> +#define AFMT_AUDIO_INFO0                     0x74cc
> +#       define AFMT_AUDIO_INFO_CHECKSUM(x)   (((x) & 0xff) << 0)
> +#       define AFMT_AUDIO_INFO_CC(x)         (((x) & 7) << 8)
> +#       define AFMT_AUDIO_INFO_CHECKSUM_OFFSET(x)   (((x) & 0xff) << 16)
> +#define AFMT_AUDIO_INFO1                     0x74d0
> +#       define AFMT_AUDIO_INFO_CA(x)         (((x) & 0xff) << 0)
> +#       define AFMT_AUDIO_INFO_LSV(x)        (((x) & 0xf) << 11)
> +#       define AFMT_AUDIO_INFO_DM_INH(x)     (((x) & 1) << 15)
> +#       define AFMT_AUDIO_INFO_DM_INH_LSV(x) (((x) & 0xff) << 8)
> +#define AFMT_60958_0                         0x74d4
> +#       define AFMT_60958_CS_A(x)            (((x) & 1) << 0)
> +#       define AFMT_60958_CS_B(x)            (((x) & 1) << 1)
> +#       define AFMT_60958_CS_C(x)            (((x) & 1) << 2)
> +#       define AFMT_60958_CS_D(x)            (((x) & 3) << 3)
> +#       define AFMT_60958_CS_MODE(x)         (((x) & 3) << 6)
> +#       define AFMT_60958_CS_CATEGORY_CODE(x)      (((x) & 0xff) << 8)
> +#       define AFMT_60958_CS_SOURCE_NUMBER(x)      (((x) & 0xf) << 16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_L(x)   (((x) & 0xf) << 20)
> +#       define AFMT_60958_CS_SAMPLING_FREQUENCY(x) (((x) & 0xf) << 24)
> +#       define AFMT_60958_CS_CLOCK_ACCURACY(x)     (((x) & 3) << 28)
> +#define AFMT_60958_1                         0x74d8
> +#       define AFMT_60958_CS_WORD_LENGTH(x)  (((x) & 0xf) << 0)
> +#       define AFMT_60958_CS_ORIGINAL_SAMPLING_FREQUENCY(x)   (((x) & 0xf) << 4)
> +#       define AFMT_60958_CS_VALID_L(x)      (((x) & 1) << 16)
> +#       define AFMT_60958_CS_VALID_R(x)      (((x) & 1) << 18)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_R(x)   (((x) & 0xf) << 20)
> +#define AFMT_AUDIO_CRC_CONTROL               0x74dc
> +#       define AFMT_AUDIO_CRC_EN             (1 << 0)
> +#define AFMT_RAMP_CONTROL0                   0x74e0
> +#       define AFMT_RAMP_MAX_COUNT(x)        (((x) & 0xffffff) << 0)
> +#       define AFMT_RAMP_DATA_SIGN           (1 << 31)
> +#define AFMT_RAMP_CONTROL1                   0x74e4
> +#       define AFMT_RAMP_MIN_COUNT(x)        (((x) & 0xffffff) << 0)
> +#       define AFMT_AUDIO_TEST_CH_DISABLE(x) (((x) & 0xff) << 24)
> +#define AFMT_RAMP_CONTROL2                   0x74e8
> +#       define AFMT_RAMP_INC_COUNT(x)        (((x) & 0xffffff) << 0)
> +#define AFMT_RAMP_CONTROL3                   0x74ec
> +#       define AFMT_RAMP_DEC_COUNT(x)        (((x) & 0xffffff) << 0)
> +#define AFMT_60958_2                         0x74f0
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_2(x)   (((x) & 0xf) << 0)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_3(x)   (((x) & 0xf) << 4)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_4(x)   (((x) & 0xf) << 8)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_5(x)   (((x) & 0xf) << 12)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_6(x)   (((x) & 0xf) << 16)
> +#       define AFMT_60958_CS_CHANNEL_NUMBER_7(x)   (((x) & 0xf) << 20)
> +#define AFMT_STATUS                          0x7600
> +#       define AFMT_AUDIO_ENABLE             (1 << 4)
> +#       define AFMT_AZ_FORMAT_WTRIG          (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_INT      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG      (1 << 30)
> +#define AFMT_AUDIO_PACKET_CONTROL            0x7604
> +#       define AFMT_AUDIO_SAMPLE_SEND        (1 << 0)
> +#       define AFMT_AUDIO_TEST_EN            (1 << 12)
> +#       define AFMT_AUDIO_CHANNEL_SWAP       (1 << 24)
> +#       define AFMT_60958_CS_UPDATE          (1 << 26)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_MASK (1 << 27)
> +#       define AFMT_AZ_FORMAT_WTRIG_MASK     (1 << 28)
> +#       define AFMT_AZ_FORMAT_WTRIG_ACK      (1 << 29)
> +#       define AFMT_AZ_AUDIO_ENABLE_CHG_ACK  (1 << 30)
> +#define AFMT_VBI_PACKET_CONTROL              0x7608
> +#       define AFMT_GENERIC0_UPDATE          (1 << 2)
> +#define AFMT_INFOFRAME_CONTROL0              0x760c
> +#       define AFMT_AUDIO_INFO_SOURCE        (1 << 6) /* 0 - sound block; 1 - hmdi regs */
> +#       define AFMT_AUDIO_INFO_UPDATE        (1 << 7)
> +#       define AFMT_MPEG_INFO_UPDATE         (1 << 10)
> +#define AFMT_GENERIC0_7                      0x7610
> +/* second instance starts at 0x7800 */
> +#define HDMI_OFFSET0                      (0x7400 - 0x7400)
> +#define HDMI_OFFSET1                      (0x7800 - 0x7400)
> +
>  #define D1GRPH_PRIMARY_SURFACE_ADDRESS                    0x6110
>  #define D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6914
>  #define D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH               0x6114
> --
> 1.7.7.5
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-03-30 13:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-28 17:19 [PATCH] drm/radeon/kms: add register definitions for audio alexdeucher
2012-03-29  7:53 ` Christian König
2012-03-29  8:16 ` Rafał Miłecki
2012-03-29 11:54   ` Deucher, Alexander
2012-03-30  9:09 ` Rafał Miłecki
2012-03-30  9:11   ` Rafał Miłecki
2012-03-30 13:07 ` Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.