Browse Source

drm/nouveau/bios: parse external transmitter type if off-chip

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 12 years ago
parent
commit
f3ed104871

+ 1 - 0
drivers/gpu/drm/nouveau/core/include/subdev/bios/dcb.h

@@ -25,6 +25,7 @@ struct dcb_output {
 	uint8_t or;
 	uint8_t link;
 	bool duallink_possible;
+	uint8_t extdev;
 	union {
 		struct sor_conf {
 			int link;

+ 4 - 1
drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c

@@ -135,6 +135,9 @@ dcb_outp_parse(struct nouveau_bios *bios, u8 idx, u8 *ver, u8 *len,
 			case DCB_OUTPUT_DP:
 				outp->link = (conf & 0x00000030) >> 4;
 				outp->sorconf.link = outp->link; /*XXX*/
+				outp->extdev = 0x00;
+				if (outp->location != 0)
+					outp->extdev = (conf & 0x0000ff00) >> 8;
 				break;
 			default:
 				break;
@@ -147,7 +150,7 @@ dcb_outp_parse(struct nouveau_bios *bios, u8 idx, u8 *ver, u8 *len,
 static inline u16
 dcb_outp_hasht(struct dcb_output *outp)
 {
-	return outp->type;
+	return (outp->location << 4) | outp->type;
 }
 
 static inline u16