drm/nouveau: don't execute INIT_GPIO unless we're really running the table
authorBen Skeggs <bskeggs@redhat.com>
Wed, 26 May 2010 00:41:45 +0000 (10:41 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 28 May 2010 06:06:36 +0000 (16:06 +1000)
This resulted in accidently switching off the eDP panel on certain laptops
since the default state in the GPIO table was off.

Fixes rh#582621

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

index 620cbd9767ccaf06ee9868f8c8084c70a1b5bb9a..b3c7a87e47d921e9dd743af3d3a5e2adc9534e8c 100644 (file)
@@ -2807,7 +2807,10 @@ init_gpio(struct nvbios *bios, uint16_t offset, struct init_exec *iexec)
 
                BIOSLOG(bios, "0x%04X: Entry: 0x%08X\n", offset, gpio->entry);
 
-               nv50_gpio_set(bios->dev, gpio->tag, gpio->state_default);
+               BIOSLOG(bios, "0x%04X: set gpio 0x%02x, state %d\n",
+                       offset, gpio->tag, gpio->state_default);
+               if (bios->execute)
+                       nv50_gpio_set(bios->dev, gpio->tag, gpio->state_default);
 
                /* The NVIDIA binary driver doesn't appear to actually do
                 * any of this, my VBIOS does however.