From e36199980b51f081671d76de7b7b8f94fe1e0ae3 Mon Sep 17 00:00:00 2001 From: Martin Peres Date: Sat, 12 May 2012 15:28:51 +0200 Subject: drm/nouveau/gpio: expose the PWM/TOGGLE parameter found in the gpio vbios table Signed-off-by: Martin Peres Reviewed-by: Ben Skeggs Signed-off-by: Ben Skeggs --- drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h | 7 +++++++ drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c | 3 +++ 2 files changed, 10 insertions(+) (limited to 'drivers/gpu/drm') diff --git a/drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h b/drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h index e9789cf411c..2bf178082a3 100644 --- a/drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h +++ b/drivers/gpu/drm/nouveau/core/include/subdev/bios/gpio.h @@ -16,6 +16,13 @@ struct dcb_gpio_func { u8 func; u8 line; u8 log[2]; + + /* so far, "param" seems to only have an influence on PWM-related + * GPIOs such as FAN_CONTROL and PANEL_BACKLIGHT_LEVEL. + * if param equals 1, hardware PWM is available + * if param equals 0, the host should toggle the GPIO itself + */ + u8 param; }; u16 dcb_gpio_table(struct nouveau_bios *); diff --git a/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c b/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c index 1ae23b328bb..4c9f1e50816 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c +++ b/drivers/gpu/drm/nouveau/core/subdev/bios/gpio.c @@ -71,6 +71,7 @@ dcb_gpio_parse(struct nouveau_bios *bios, int idx, u8 func, u8 line, .func = (data & 0x07e0) >> 5, .log[0] = (data & 0x1800) >> 11, .log[1] = (data & 0x6000) >> 13, + .param = !!(data & 0x8000), }; } else if (ver < 0x41) { @@ -80,6 +81,7 @@ dcb_gpio_parse(struct nouveau_bios *bios, int idx, u8 func, u8 line, .func = (data & 0x0000ff00) >> 8, .log[0] = (data & 0x18000000) >> 27, .log[1] = (data & 0x60000000) >> 29, + .param = !!(data & 0x80000000), }; } else { u32 data = nv_ro32(bios, entry + 0); @@ -89,6 +91,7 @@ dcb_gpio_parse(struct nouveau_bios *bios, int idx, u8 func, u8 line, .func = (data & 0x0000ff00) >> 8, .log[0] = (data1 & 0x30) >> 4, .log[1] = (data1 & 0xc0) >> 6, + .param = !!(data & 0x80000000), }; } -- cgit v1.2.3