diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_bios.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index c608b0b29a3..e86f46cf883 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -5982,7 +5982,13 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb, | |||
5982 | } | 5982 | } |
5983 | break; | 5983 | break; |
5984 | case OUTPUT_TMDS: | 5984 | case OUTPUT_TMDS: |
5985 | entry->tmdsconf.sor.link = (conf & 0x00000030) >> 4; | 5985 | if (dcb->version >= 0x22) |
5986 | entry->tmdsconf.slave_addr = (conf & 0x00000070) >> 4; | ||
5987 | else if (dcb->version >= 0x30) | ||
5988 | entry->tmdsconf.slave_addr = (conf & 0x00000700) >> 8; | ||
5989 | else if (dcb->version >= 0x40) | ||
5990 | entry->tmdsconf.sor.link = (conf & 0x00000030) >> 4; | ||
5991 | |||
5986 | break; | 5992 | break; |
5987 | case 0xe: | 5993 | case 0xe: |
5988 | /* weird g80 mobile type that "nv" treats as a terminator */ | 5994 | /* weird g80 mobile type that "nv" treats as a terminator */ |
@@ -6272,6 +6278,19 @@ parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads) | |||
6272 | dcb->i2c_table = &bios->data[i2ctabptr]; | 6278 | dcb->i2c_table = &bios->data[i2ctabptr]; |
6273 | if (dcb->version >= 0x30) | 6279 | if (dcb->version >= 0x30) |
6274 | dcb->i2c_default_indices = dcb->i2c_table[4]; | 6280 | dcb->i2c_default_indices = dcb->i2c_table[4]; |
6281 | |||
6282 | /* | ||
6283 | * Parse the "management" I2C bus, used for hardware | ||
6284 | * monitoring and some external TMDS transmitters. | ||
6285 | */ | ||
6286 | if (dcb->version >= 0x22) { | ||
6287 | int idx = (dcb->version >= 0x40 ? | ||
6288 | dcb->i2c_default_indices & 0xf : | ||
6289 | 2); | ||
6290 | |||
6291 | read_dcb_i2c_entry(dev, dcb->version, dcb->i2c_table, | ||
6292 | idx, &dcb->i2c[idx]); | ||
6293 | } | ||
6275 | } | 6294 | } |
6276 | 6295 | ||
6277 | if (entries > DCB_MAX_NUM_ENTRIES) | 6296 | if (entries > DCB_MAX_NUM_ENTRIES) |