Valid values are 1 to 251 for 0 to 500 ms latency, 0 for unknown and 255 for audio/video unsupported by sink, according to HDMI 1.3 spec. Also matches Radeon HDA verb 0xf7b documentation.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de --- drivers/gpu/drm/radeon/dce6_afmt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index e0a6e9e..2b14506 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -136,13 +136,13 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder, tmp = VIDEO_LIPSYNC(connector->video_latency[1]) | AUDIO_LIPSYNC(connector->audio_latency[1]); else - tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255); + tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0); } else { if (connector->latency_present[0]) tmp = VIDEO_LIPSYNC(connector->video_latency[0]) | AUDIO_LIPSYNC(connector->audio_latency[0]); else - tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255); + tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0); } WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC, tmp); }
No need to continue with the loops once we've matched the appropriate connector. See commit 8a992ee14551eae53fd3ab6c2dc8e06ba6fff174
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de --- drivers/gpu/drm/radeon/dce6_afmt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 2b14506..8a76180 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -164,8 +164,10 @@ void dce6_afmt_write_speaker_allocation(struct drm_encoder *encoder) offset = dig->afmt->pin->offset;
list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { - if (connector->encoder == encoder) + if (connector->encoder == encoder) { radeon_connector = to_radeon_connector(connector); + break; + } }
if (!radeon_connector) { @@ -225,8 +227,10 @@ void dce6_afmt_write_sad_regs(struct drm_encoder *encoder) offset = dig->afmt->pin->offset;
list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { - if (connector->encoder == encoder) + if (connector->encoder == encoder) { radeon_connector = to_radeon_connector(connector); + break; + } }
if (!radeon_connector) {
On Sat, Jul 12, 2014 at 7:47 PM, Stefan Brüns stefan.bruens@rwth-aachen.de wrote:
No need to continue with the loops once we've matched the appropriate connector. See commit 8a992ee14551eae53fd3ab6c2dc8e06ba6fff174
Applied. Thanks.
Alex
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de
drivers/gpu/drm/radeon/dce6_afmt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 2b14506..8a76180 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -164,8 +164,10 @@ void dce6_afmt_write_speaker_allocation(struct drm_encoder *encoder) offset = dig->afmt->pin->offset;
list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) {
if (connector->encoder == encoder)
if (connector->encoder == encoder) { radeon_connector = to_radeon_connector(connector);
break;
} } if (!radeon_connector) {
@@ -225,8 +227,10 @@ void dce6_afmt_write_sad_regs(struct drm_encoder *encoder) offset = dig->afmt->pin->offset;
list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) {
if (connector->encoder == encoder)
if (connector->encoder == encoder) { radeon_connector = to_radeon_connector(connector);
break;
} } if (!radeon_connector) {
-- 1.8.4.5
dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
Low/high bytes were for manufacturer and product ID were swapped. Monitor name in ELD data is not zero terminated, use length field from ELD data and initialize remaining bytes to 0.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de --- drivers/gpu/drm/radeon/dce6_afmt.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 8a76180..f07b360 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -309,18 +309,20 @@ void dce6_afmt_write_sinkinfo(struct drm_encoder *encoder)
eld = connector->eld;
- tmp = MANUFACTURER_ID(eld[16]<<8 | eld[17]) | PRODUCT_ID(eld[18]<<8 | eld[19]); + tmp = MANUFACTURER_ID(eld[17]<<8 | eld[16]) | PRODUCT_ID(eld[19]<<8 | eld[18]); WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO0, tmp);
- tmp = SINK_DESCRIPTION_LEN(strlen(&eld[20])) + 1; - tmp = (tmp > 19) ? 19 : tmp; + tmp = SINK_DESCRIPTION_LEN((eld[4] & 0xf) + 1); WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO1, tmp);
- strncpy(description, &eld[20], 18); + memset(description, 0, sizeof(description)); + strncpy(description, &eld[20], tmp);
+ /* fglrx uses crt# here */ tmp = PORT_ID0(0x1); /*WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO2, tmp);*/
+ /* PCI:1:0:0 ? */ tmp = PORT_ID1(0x100); /*WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO3, tmp);*/
On Sat, Jul 12, 2014 at 7:47 PM, Stefan Brüns stefan.bruens@rwth-aachen.de wrote:
Low/high bytes were for manufacturer and product ID were swapped. Monitor name in ELD data is not zero terminated, use length field from ELD data and initialize remaining bytes to 0.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de
I squashed this into your original patch.
Thanks!
Alex
drivers/gpu/drm/radeon/dce6_afmt.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 8a76180..f07b360 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -309,18 +309,20 @@ void dce6_afmt_write_sinkinfo(struct drm_encoder *encoder)
eld = connector->eld;
tmp = MANUFACTURER_ID(eld[16]<<8 | eld[17]) | PRODUCT_ID(eld[18]<<8 | eld[19]);
tmp = MANUFACTURER_ID(eld[17]<<8 | eld[16]) | PRODUCT_ID(eld[19]<<8 | eld[18]); WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO0, tmp);
tmp = SINK_DESCRIPTION_LEN(strlen(&eld[20])) + 1;
tmp = (tmp > 19) ? 19 : tmp;
tmp = SINK_DESCRIPTION_LEN((eld[4] & 0xf) + 1); WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO1, tmp);
strncpy(description, &eld[20], 18);
memset(description, 0, sizeof(description));
strncpy(description, &eld[20], tmp);
/* fglrx uses crt# here */ tmp = PORT_ID0(0x1); /*WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO2, tmp);*/
/* PCI:1:0:0 ? */ tmp = PORT_ID1(0x100); /*WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_SINK_INFO3, tmp);*/
-- 1.8.4.5
dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
On Sat, Jul 12, 2014 at 7:47 PM, Stefan Brüns stefan.bruens@rwth-aachen.de wrote:
Valid values are 1 to 251 for 0 to 500 ms latency, 0 for unknown and 255 for audio/video unsupported by sink, according to HDMI 1.3 spec. Also matches Radeon HDA verb 0xf7b documentation.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de
Applied. Thanks.
Alex
drivers/gpu/drm/radeon/dce6_afmt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index e0a6e9e..2b14506 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -136,13 +136,13 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder, tmp = VIDEO_LIPSYNC(connector->video_latency[1]) | AUDIO_LIPSYNC(connector->audio_latency[1]); else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0); } else { if (connector->latency_present[0]) tmp = VIDEO_LIPSYNC(connector->video_latency[0]) | AUDIO_LIPSYNC(connector->audio_latency[0]); else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0); } WREG32_ENDPOINT(offset, AZ_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC, tmp);
}
1.8.4.5
dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
dri-devel@lists.freedesktop.org