[PATCH] drm/radeon: Fix manufacturer/product ID and monitor name in ELD data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
---
 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@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux