| 1 | #ifndef __NVBIOS_GPIO_H__ |
| 2 | #define __NVBIOS_GPIO_H__ |
| 3 | |
| 4 | enum dcb_gpio_func_name { |
| 5 | DCB_GPIO_PANEL_POWER = 0x01, |
| 6 | DCB_GPIO_TVDAC0 = 0x0c, |
| 7 | DCB_GPIO_TVDAC1 = 0x2d, |
| 8 | DCB_GPIO_FAN = 0x09, |
| 9 | DCB_GPIO_FAN_SENSE = 0x3d, |
| 10 | DCB_GPIO_UNUSED = 0xff, |
| 11 | DCB_GPIO_VID0 = 0x04, |
| 12 | DCB_GPIO_VID1 = 0x05, |
| 13 | DCB_GPIO_VID2 = 0x06, |
| 14 | DCB_GPIO_VID3 = 0x1a, |
| 15 | DCB_GPIO_VID4 = 0x73, |
| 16 | DCB_GPIO_VID5 = 0x74, |
| 17 | DCB_GPIO_VID6 = 0x75, |
| 18 | DCB_GPIO_VID7 = 0x76, |
| 19 | }; |
| 20 | |
| 21 | #define DCB_GPIO_LOG_DIR 0x02 |
| 22 | #define DCB_GPIO_LOG_DIR_OUT 0x00 |
| 23 | #define DCB_GPIO_LOG_DIR_IN 0x02 |
| 24 | #define DCB_GPIO_LOG_VAL 0x01 |
| 25 | #define DCB_GPIO_LOG_VAL_LO 0x00 |
| 26 | #define DCB_GPIO_LOG_VAL_HI 0x01 |
| 27 | |
| 28 | struct dcb_gpio_func { |
| 29 | u8 func; |
| 30 | u8 line; |
| 31 | u8 log[2]; |
| 32 | |
| 33 | /* so far, "param" seems to only have an influence on PWM-related |
| 34 | * GPIOs such as FAN_CONTROL and PANEL_BACKLIGHT_LEVEL. |
| 35 | * if param equals 1, hardware PWM is available |
| 36 | * if param equals 0, the host should toggle the GPIO itself |
| 37 | */ |
| 38 | u8 param; |
| 39 | }; |
| 40 | |
| 41 | u16 dcb_gpio_table(struct nouveau_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len); |
| 42 | u16 dcb_gpio_entry(struct nouveau_bios *, int idx, int ent, u8 *ver, u8 *len); |
| 43 | u16 dcb_gpio_parse(struct nouveau_bios *, int idx, int ent, u8 *ver, u8 *len, |
| 44 | struct dcb_gpio_func *); |
| 45 | u16 dcb_gpio_match(struct nouveau_bios *, int idx, u8 func, u8 line, |
| 46 | u8 *ver, u8 *len, struct dcb_gpio_func *); |
| 47 | |
| 48 | #endif |
| 49 | |