From 862ed734df8fef79eaa26bf133e021e8a50a3f60 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 12 Sep 2012 15:55:01 +1000 Subject: [PATCH] --- yaml --- r: 329675 b: refs/heads/master c: acac7bdba61226502a230db9245ca426a67102a9 h: refs/heads/master i: 329673: 48b2b70f44d384ab58b780eee3943d4ecffbc690 329671: b526b32675f956e0a9fdce963874446100221c44 v: v3 --- [refs] | 2 +- .../gpu/drm/nouveau/core/subdev/bios/gpio.c | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index c6371966fdcc..d3226661c349 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: da07e52cf10c9584c7e197ac3d49455e1a4d4756 +refs/heads/master: acac7bdba61226502a230db9245ca426a67102a9 diff --git a/trunk/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c b/trunk/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c index 718267d84c7b..1ae23b328bbd 100644 --- a/trunk/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c +++ b/trunk/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c @@ -100,13 +100,17 @@ dcb_gpio_parse(struct nouveau_bios *bios, int idx, u8 func, u8 line, /* DCB 2.2, fixed TVDAC GPIO data */ if ((entry = dcb_table(bios, &ver, &hdr, &cnt, &len)) && ver >= 0x22) { if (func == DCB_GPIO_TVDAC0) { - *gpio = (struct dcb_gpio_func) { - .func = DCB_GPIO_TVDAC0, - .line = nv_ro08(bios, entry - 4) >> 4, - .log[0] = !!(nv_ro08(bios, entry - 5) & 2), - .log[1] = !(nv_ro08(bios, entry - 5) & 2), - }; - return 0; + u8 conf = nv_ro08(bios, entry - 5); + u8 addr = nv_ro08(bios, entry - 4); + if (conf & 0x01) { + *gpio = (struct dcb_gpio_func) { + .func = DCB_GPIO_TVDAC0, + .line = addr >> 4, + .log[0] = !!(conf & 0x02), + .log[1] = !(conf & 0x02), + }; + return 0; + } } }