linux/drivers/gpu/drm/nouveau
Martin Peres a10220bbf8 drm/nouveau/pbus: add a PBUS subdev that hands IRQs to the right subdevs
We are going to use PTHERM's IRQs for thermal monitoring but we need to route
them first.

On nv31-50, PBUS's IRQ line is shared with GPIOs IRQs.

It seems like nv10-31 GPIO interruptions aren't well handled. I kept the
original behaviour but it is wrong and may lead to an IRQ storm.

Since we enable all PBUS IRQs, we need a way to avoid being stormed if we
don't handle them. The solution I used was to mask the IRQs that have not been
handled. This will also print one message in the logs to let us know.

v2: drop the shared intr handler because of was racy
v3: style fixes
v4: drop a useless construct in the chipset-dependent INTR
v5: add BUS to the disable mask
v6 (Ben Skeggs):
- general tidy to match the rest of the driver's style
- nva3->nvc0, nva3 can be serviced just fine with nv50.c, rnndb even notes
  that the THERM_ALARM bit got left in the hw until fermi anyway.. so, it's
  not going to conflict
- removed the peephole and user stuff, for the moment.. will handle them
  later if we find a good reason to actually care..
- limited INTR_EN to just what we can handle for now, mostly to prevent
  spam of unknown status bits (seen on at least nv4x)

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Martin Peres <martin.peres@labri.fr>
2013-02-20 16:00:21 +10:00
..
core drm/nouveau/pbus: add a PBUS subdev that hands IRQs to the right subdevs 2013-02-20 16:00:21 +10:00
Kconfig drm/nouveau: add Kconfig options for debug control 2012-10-03 13:12:59 +10:00
Makefile drm/nouveau/pbus: add a PBUS subdev that hands IRQs to the right subdevs 2013-02-20 16:00:21 +10:00
nouveau_abi16.c Merge branch 'drm-next-3.8' of git://people.freedesktop.org/~agd5f/linux into drm-next 2012-12-10 20:03:58 +10:00
nouveau_abi16.h drm/nouveau: port all engines to new engine module format 2012-10-03 13:12:56 +10:00
nouveau_acpi.c drm/nouveau: Add interface to detect optimus and v1 support 2012-11-29 09:57:59 +10:00
nouveau_acpi.h drm/nouveau: Add interface to detect optimus and v1 support 2012-11-29 09:57:59 +10:00
nouveau_agp.c drm/nouveau: implement devinit subdev, and new init table parser 2012-10-03 13:12:47 +10:00
nouveau_agp.h drm/nouveau: implement devinit subdev, and new init table parser 2012-10-03 13:12:47 +10:00
nouveau_backlight.c drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nouveau_bios.c drm/nouveau/dp: remove last bits of VBIOS parsing from DRM code 2012-11-29 09:57:54 +10:00
nouveau_bios.h drm/nouveau/dp: remove last bits of VBIOS parsing from DRM code 2012-11-29 09:57:54 +10:00
nouveau_bo.c drm/nouveau: fix init with agpgart-uninorth 2013-01-04 16:04:33 +10:00
nouveau_bo.h drm/ttm: remove no_wait_reserve, v3 2012-12-10 20:21:30 +10:00
nouveau_calc.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_chan.c drm/nouveau: unpin pushbuffer bo before destroying it 2012-11-29 09:58:11 +10:00
nouveau_chan.h drm/nve0: use async copy engine for ttm buffer moves if available 2012-10-03 13:13:02 +10:00
nouveau_connector.c drm/nouveau: do not forcibly power on lvds panels 2013-01-13 18:07:32 +10:00
nouveau_connector.h drm/nv50-nvc0: switch to common disp impl, removing previous version 2012-11-29 09:57:58 +10:00
nouveau_crtc.h drm/nouveau: rename nvd0_display to nv50_display to reflect reality since merge 2012-11-29 09:57:58 +10:00
nouveau_display.c drm/nouveau: do not forcibly power on lvds panels 2013-01-13 18:07:32 +10:00
nouveau_display.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nouveau_dma.c drm/nouveau: port all engines to new engine module format 2012-10-03 13:12:56 +10:00
nouveau_dma.h drm/nouveau: port all engines to new engine module format 2012-10-03 13:12:56 +10:00
nouveau_dp.c drm/nouveau/dp: remove last bits of VBIOS parsing from DRM code 2012-11-29 09:57:54 +10:00
nouveau_drm.c Merge branch 'drm-nouveau-fixes' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next 2013-01-14 08:15:36 +10:00
nouveau_drm.h drm/nouveau: convert to dev_pm_ops 2012-11-29 09:58:00 +10:00
nouveau_encoder.h drm/nouveau: rename nvd0_display to nv50_display to reflect reality since merge 2012-11-29 09:57:58 +10:00
nouveau_fbcon.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_fbcon.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_fence.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_fence.h drm/nv17-50: restore fence buffer on resume 2013-01-13 18:07:45 +10:00
nouveau_gem.c drm/ttm: remove no_wait_reserve, v3 2012-12-10 20:21:30 +10:00
nouveau_gem.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_hw.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_hw.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_hwsq.h drm/nouveau/hwsq: remove some magic, give proper opcode names 2011-12-21 19:01:44 +10:00
nouveau_ioc32.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_ioctl.h drm/nouveau: move compat ioctl out of nouveau_drv.h 2012-10-03 13:12:58 +10:00
nouveau_irq.c drm/nv50/disp: move remaining interrupt handling into core 2012-11-29 09:57:52 +10:00
nouveau_irq.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nouveau_mem.c drm/nouveau: quiet some static-related sparse noise 2012-10-03 13:13:07 +10:00
nouveau_perf.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nouveau_pm.c drm: nouveau: Fix build warning seen if HWMON is undefined 2013-01-04 16:03:33 +10:00
nouveau_pm.h drm/nouveau/therm: move thermal-related functions to the therm subdev 2012-10-03 13:13:14 +10:00
nouveau_prime.c drm/prime: drop reference on imported dma-buf come from gem 2013-01-08 14:41:53 +10:00
nouveau_reg.h drm/nva3/backlight: add suppport for newer style backlight regs 2011-09-20 16:10:06 +10:00
nouveau_sgdma.c drm/nouveau: port all engines to new engine module format 2012-10-03 13:12:56 +10:00
nouveau_ttm.c drm/nouveau: store supported dma mask in vmmgr 2012-10-03 13:13:16 +10:00
nouveau_ttm.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nouveau_vga.c drm/nouveau: convert to dev_pm_ops 2012-11-29 09:58:00 +10:00
nouveau_vga.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nouveau_volt.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nv04_crtc.c drm/nouveau: unpin various bo's before destroying 2012-11-29 09:58:11 +10:00
nv04_cursor.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nv04_dac.c drm/nouveau: silence modesetting spam on pre-gf8 chipsets 2012-10-31 10:57:53 +10:00
nv04_dfp.c drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards 2013-01-13 18:07:45 +10:00
nv04_display.c drm/nouveau: remove newline-only NV_DEBUG calls 2012-11-29 09:56:36 +10:00
nv04_display.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nv04_fbcon.c drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nv04_fence.c drm/nouveau: port all engines to new engine module format 2012-10-03 13:12:56 +10:00
nv04_pm.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nv04_tv.c drm/nouveau: silence modesetting spam on pre-gf8 chipsets 2012-10-31 10:57:53 +10:00
nv10_fence.c drm/nv17-50: restore fence buffer on resume 2013-01-13 18:07:45 +10:00
nv17_tv_modes.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nv17_tv.c drm/nouveau: drm_connector_property -> drm_object_property 2012-11-30 10:30:48 -06:00
nv17_tv.h drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nv40_pm.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nv50_display.c drm/nouveau: unpin various bo's before destroying 2012-11-29 09:58:11 +10:00
nv50_display.h drm/nouveau: rename nvd0_display to nv50_display to reflect reality since merge 2012-11-29 09:57:58 +10:00
nv50_fbcon.c drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nv50_fence.c drm/nv17-50: restore fence buffer on resume 2013-01-13 18:07:45 +10:00
nv50_pm.c drm/nv50-nvc0: switch to common disp impl, removing previous version 2012-11-29 09:57:58 +10:00
nv84_fence.c drm/nouveau: rename nvd0_display to nv50_display to reflect reality since merge 2012-11-29 09:57:58 +10:00
nva3_pm.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
nvc0_fbcon.c drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nvc0_fence.c drm/nouveau: unpin various bo's before destroying 2012-11-29 09:58:11 +10:00
nvc0_pm.c drm/nouveau: port remainder of drm code, and rip out compat layer 2012-10-03 13:12:59 +10:00
nvreg.h drm/nv17-nv40: Fix modesetting failure when pitch == 4096px (fdo bug 35901). 2011-06-07 09:22:29 +10:00