drm/nouveau/bios: log if auxch accesses fail, also return 0x00 from rd when it does
authorBen Skeggs <bskeggs@redhat.com>
Thu, 21 Aug 2014 00:39:01 +0000 (10:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 2 Dec 2014 05:43:43 +0000 (15:43 +1000)
Logging at trace level, rather than as en error, as it seems conceivable
that failure could be normal under certain circumstances (new bios,
older sink that doesn't support a particular DPCD address)

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/bios/init.c

index 626380f9e4c0192e877bef46b4a154b68c972b39..2c9f2c36f8ccb56c344e8e264e645bfc96ba9473 100644 (file)
@@ -278,7 +278,7 @@ init_wri2cr(struct nvbios_init *init, u8 index, u8 addr, u8 reg, u8 val)
        return -ENODEV;
 }
 
-static int
+static u8
 init_rdauxr(struct nvbios_init *init, u32 addr)
 {
        struct nouveau_i2c_port *port = init_i2c(init, -2);
@@ -286,20 +286,24 @@ init_rdauxr(struct nvbios_init *init, u32 addr)
 
        if (port && init_exec(init)) {
                int ret = nv_rdaux(port, addr, &data, 1);
-               if (ret)
-                       return ret;
-               return data;
+               if (ret == 0)
+                       return data;
+               trace("auxch read failed with %d\n", ret);
        }
 
-       return -ENODEV;
+       return 0x00;
 }
 
 static int
 init_wrauxr(struct nvbios_init *init, u32 addr, u8 data)
 {
        struct nouveau_i2c_port *port = init_i2c(init, -2);
-       if (port && init_exec(init))
-               return nv_wraux(port, addr, &data, 1);
+       if (port && init_exec(init)) {
+               int ret = nv_wraux(port, addr, &data, 1);
+               if (ret)
+                       trace("auxch write failed with %d\n", ret);
+               return ret;
+       }
        return -ENODEV;
 }