[PATCH 4/6] drm/radeon/evergreen: setup HDMI before enabling it
Paul Menzel
paulepanter at users.sourceforge.net
Sun Apr 14 03:39:58 PDT 2013
Am Sonntag, den 14.04.2013, 01:26 +0200 schrieb Rafał Miłecki:
> Closed source driver fglrx seems to enable infoframes and audio packets
> at the end, which makes sense, do the same.
Any functionality change? Does not sound like it, but being unambiguous
is better.
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
> drivers/gpu/drm/radeon/evergreen_hdmi.c | 15 +++++++++++----
> drivers/gpu/drm/radeon/evergreend.h | 1 +
> 2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
> index 8b64bf1..6b25c1b 100644
> --- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
> +++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
> @@ -116,7 +116,6 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
> HDMI_AUDIO_PACKETS_PER_LINE(3)); /* should be suffient for all audio modes and small enough for all hblanks */
>
> WREG32(AFMT_AUDIO_PACKET_CONTROL + offset,
> - AFMT_AUDIO_SAMPLE_SEND | /* send audio packets */
> AFMT_60958_CS_UPDATE); /* allow 60958 channel status fields to be updated */
>
> WREG32(HDMI_ACR_PACKET_CONTROL + offset,
> @@ -129,8 +128,6 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
> HDMI_GC_CONT); /* send general control packets every frame */
>
> WREG32(HDMI_INFOFRAME_CONTROL0 + offset,
> - HDMI_AVI_INFO_SEND | /* enable AVI info frames */
> - HDMI_AVI_INFO_CONT | /* send AVI info frames every frame/field */
> HDMI_AUDIO_INFO_SEND | /* enable audio info frames (frames won't be set until audio is enabled) */
> HDMI_AUDIO_INFO_CONT); /* required for audio info values to be updated */
>
> @@ -138,7 +135,6 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
> AFMT_AUDIO_INFO_UPDATE); /* required for audio info values to be updated */
>
> WREG32(HDMI_INFOFRAME_CONTROL1 + offset,
> - HDMI_AVI_INFO_LINE(2) | /* anything other than 0 */
> HDMI_AUDIO_INFO_LINE(2)); /* anything other than 0 */
>
> WREG32(HDMI_GC + offset, 0); /* unset HDMI_GC_AVMUTE */
> @@ -165,6 +161,14 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
> evergreen_hdmi_update_avi_infoframe(encoder, buffer, sizeof(buffer));
> evergreen_hdmi_update_ACR(encoder, mode->clock);
>
> + WREG32_OR(HDMI_INFOFRAME_CONTROL0 + offset,
> + HDMI_AVI_INFO_SEND | /* enable AVI info frames */
> + HDMI_AVI_INFO_CONT); /* required for audio info values to be updated */
> +
> + WREG32_P(HDMI_INFOFRAME_CONTROL1 + offset,
> + HDMI_AVI_INFO_LINE(2), /* anything other than 0 */
> + ~HDMI_AVI_INFO_LINE_MASK);
> +
> /*
> * At this point fglrx changes following regs:
> * DCE41: 0x7a70
> @@ -172,6 +176,9 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
> * Is that something audio related?
> */
>
> + WREG32_OR(AFMT_AUDIO_PACKET_CONTROL + offset,
> + AFMT_AUDIO_SAMPLE_SEND); /* send audio packets */
> +
> /* it's unknown what these bits do excatly, but it's indeed quite useful for debugging */
> WREG32(AFMT_RAMP_CONTROL0 + offset, 0x00FFFFFF);
> WREG32(AFMT_RAMP_CONTROL1 + offset, 0x007FFFFF);
> diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h
> index 982d25a..e39e4f4 100644
> --- a/drivers/gpu/drm/radeon/evergreend.h
> +++ b/drivers/gpu/drm/radeon/evergreend.h
> @@ -197,6 +197,7 @@
> # define HDMI_MPEG_INFO_CONT (1 << 9)
> #define HDMI_INFOFRAME_CONTROL1 0x7048
> # define HDMI_AVI_INFO_LINE(x) (((x) & 0x3f) << 0)
> +# define HDMI_AVI_INFO_LINE_MASK (0x3f << 0)
Is this in a data sheet?
> # define HDMI_AUDIO_INFO_LINE(x) (((x) & 0x3f) << 8)
> # define HDMI_MPEG_INFO_LINE(x) (((x) & 0x3f) << 16)
> #define HDMI_GENERIC_PACKET_CONTROL 0x704c
Thanks,
Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130414/d41f1c20/attachment-0001.pgp>
More information about the dri-devel
mailing list