summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-02-12 10:16:31 +1000
committerBen Skeggs <bskeggs@redhat.com>2013-02-20 15:55:27 +1000
commitb8496a548825be0acfa7e6d6808ee47617641add (patch)
treec63f0ff1f7aec5d86889a128734ad9b127a14fe8
parentd6a8c4d6940faec303729b214f3b0c9e120dc6b5 (diff)
downloadnouveau-b8496a548825be0acfa7e6d6808ee47617641add.tar.gz
bios/dcb: parse external transmitter type if off-chip
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--nvkm/include/subdev/bios/dcb.h1
-rw-r--r--nvkm/subdev/bios/dcb.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/nvkm/include/subdev/bios/dcb.h b/nvkm/include/subdev/bios/dcb.h
index b79025da5..9e54678a1 100644
--- a/nvkm/include/subdev/bios/dcb.h
+++ b/nvkm/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;
diff --git a/nvkm/subdev/bios/dcb.c b/nvkm/subdev/bios/dcb.c
index 0fd87df99..73a29da04 100644
--- a/nvkm/subdev/bios/dcb.c
+++ b/nvkm/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