drm/nv50: store full dcb i2c entry from vbios
authorBen Skeggs <bskeggs@redhat.com>
Fri, 23 Apr 2010 17:05:56 +0000 (03:05 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 19 May 2010 03:15:16 +0000 (13:15 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/nouveau/nouveau_bios.h

index ba7a120..3c9c54e 100644 (file)
@@ -5141,8 +5141,12 @@ read_dcb_i2c_entry(struct drm_device *dev, int dcb_version, uint8_t *i2ctable, i
                        rdofs = wrofs = 0;
        }
 
-       if (dcb_i2c_ver >= 0x40 && port_type != 5 && port_type != 6)
-               NV_WARN(dev, "DCB I2C table has port type %d\n", port_type);
+       if (dcb_i2c_ver >= 0x40) {
+               if (port_type != 5 && port_type != 6)
+                       NV_WARN(dev, "DCB I2C table has port type %d\n", port_type);
+
+               i2c->entry = ROM32(i2ctable[headerlen + recordoffset + entry_len * index]);
+       }
 
        i2c->port_type = port_type;
        i2c->read = i2ctable[headerlen + recordoffset + rdofs + entry_len * index];
index c0d7b0a..adf4ec2 100644 (file)
@@ -35,6 +35,7 @@
 #define DCB_LOC_ON_CHIP 0
 
 struct dcb_i2c_entry {
+       uint32_t entry;
        uint8_t port_type;
        uint8_t read, write;
        struct nouveau_i2c_chan *chan;