drm/nv50/gpio: fixup reset for gpios >= 16
authorBen Skeggs <bskeggs@redhat.com>
Tue, 18 Mar 2014 14:46:47 +0000 (00:46 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 26 Mar 2014 04:08:17 +0000 (14:08 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/gpio/nv50.c

index 904b67fe1e1493272c1e61a68ba1a0d25fdf6ca5..2ef7747316291c1b40bb3bfdd84d87603473c132 100644 (file)
@@ -46,7 +46,8 @@ nv50_gpio_reset(struct nouveau_gpio *gpio, u8 match)
                u8  unk0 = !!(data & 0x02000000);
                u8  unk1 = !!(data & 0x04000000);
                u32 val = (unk1 << 16) | unk0;
-               u32 reg = regs[line >> 4]; line &= 0x0f;
+               u32 reg = regs[line >> 4];
+               u32 lsh = line & 0x0f;
 
                if ( func  == DCB_GPIO_UNUSED ||
                    (match != DCB_GPIO_UNUSED && match != func))
@@ -54,7 +55,7 @@ nv50_gpio_reset(struct nouveau_gpio *gpio, u8 match)
 
                gpio->set(gpio, 0, func, line, defs);
 
-               nv_mask(priv, reg, 0x00010001 << line, val << line);
+               nv_mask(priv, reg, 0x00010001 << lsh, val << lsh);
        }
 }