diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-07-22 21:31:08 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-07-25 21:42:59 -0400 |
commit | d0875edd9374296af8702d850254809e34a809cd (patch) | |
tree | f9870d97129af1a7a941904f38fb60401a65b1b0 /drivers/gpu/drm/nouveau/nv50_gpio.c | |
parent | 49eed80ad0cfa5d5d02992e8088463cbf1a5ff85 (diff) |
drm/nv50: add function to control GPIO IRQ reporting
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_gpio.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nv50_gpio.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_gpio.c b/drivers/gpu/drm/nouveau/nv50_gpio.c index bb47ad737267..88715c5003c1 100644 --- a/drivers/gpu/drm/nouveau/nv50_gpio.c +++ b/drivers/gpu/drm/nouveau/nv50_gpio.c | |||
@@ -74,3 +74,22 @@ nv50_gpio_set(struct drm_device *dev, enum dcb_gpio_tag tag, int state) | |||
74 | nv_wr32(dev, r, v); | 74 | nv_wr32(dev, r, v); |
75 | return 0; | 75 | return 0; |
76 | } | 76 | } |
77 | |||
78 | void | ||
79 | nv50_gpio_irq_enable(struct drm_device *dev, enum dcb_gpio_tag tag, bool on) | ||
80 | { | ||
81 | struct dcb_gpio_entry *gpio; | ||
82 | u32 reg, mask; | ||
83 | |||
84 | gpio = nouveau_bios_gpio_entry(dev, tag); | ||
85 | if (!gpio) { | ||
86 | NV_ERROR(dev, "gpio tag 0x%02x not found\n", tag); | ||
87 | return; | ||
88 | } | ||
89 | |||
90 | reg = gpio->line < 16 ? 0xe050 : 0xe070; | ||
91 | mask = 0x00010001 << (gpio->line & 0xf); | ||
92 | |||
93 | nv_wr32(dev, reg + 4, mask); | ||
94 | nv_mask(dev, reg + 0, mask, on ? mask : 0); | ||
95 | } | ||