linux/drivers/gpu/drm/radeon
Alex Deucher d8f60cfc93 drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3)
This enables the use of interrupts on r6xx/r7xx hardware.
Interrupts are implemented via a ring buffer.  The GPU adds
interrupts vectors to the ring and the host reads them off
in the interrupt handler.  The interrupt controller requires
firmware like the CP.  This firmware must be installed and
accessble to the firmware loader for interrupts to function.

MSIs don't seem to work on my RS780.  They work fine on all
my discrete cards.  I'm not sure about other RS780s or
RS880s.  I've disabled MSIs on RS780 and RS880, but it would
probably be worth checking on some other systems.

v2 - fix some checkpatch.pl problems;
     re-read the disp int status reg if we restart the ih;

v3 - remove the irq handler if r600_irq_init() fails;
     remove spinlock in r600_ih_ring_fini();
     move ih rb overflow check to r600_get_ih_wptr();
     move irq ack to separate function;

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-02 14:00:06 +10:00
..
reg_srcs drm/radeon/kms: add rn50/r100/r200 CS tracker. 2009-09-08 08:54:31 +10:00
.gitignore drm: create gitignore file for radeon 2009-09-25 13:08:21 +10:00
Kconfig drm/kms/radeon: make kms default a runtime option 2009-09-08 11:15:59 +10:00
Makefile drm/radeon/kms: add debugfs for power management for AtomBIOS devices 2009-11-06 14:13:25 +10:00
ObjectID.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom-bits.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom-names.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom-types.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom.c drm/radeon/kms: read back register before writing in IIO. 2009-11-24 13:02:07 +10:00
atom.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atombios.h drm/radeon/kms/atom: add support for spread spectrum (v2) 2009-10-26 13:28:22 +10:00
atombios_crtc.c drm/radeon/kms: fix oops when set_base is call with no FB 2009-12-02 11:37:08 +10:00
avivod.h drm/radeon/kms: Convert RV515 to new init path and associated cleanup 2009-09-29 11:15:54 +10:00
mkregtable.c drm: radeon: Mark several functions static in mkregtable 2009-11-15 15:01:40 -08:00
r100.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
r100_track.h drm/radeon/kms: don't require up to 64k allocations. (v2) 2009-09-25 13:08:18 +10:00
r100d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
r200.c drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
r300.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
r300_cmdbuf.c drm/radeon: add regs required for occlusion queries support 2009-03-29 18:31:35 +10:00
r300_reg.h drm/radeon/kms: add initial colortiling support. 2009-07-29 15:42:18 +10:00
r300d.h drm/radeon/kms: Convert R300 to new init path 2009-10-02 08:51:48 +10:00
r420.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
r420d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
r500_reg.h drm/radeon/kms/r7xx: add regs for 40 bit CUR/GRPH addresses 2009-10-26 13:28:22 +10:00
r520.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
r520d.h drm/radeon/kms: Convert R520 to new init path and associated cleanup 2009-09-29 11:15:56 +10:00
r600.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
r600_blit.c drm/radeon/r600: only assign vb after we know space is available. 2009-10-26 13:28:21 +10:00
r600_blit_kms.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
r600_blit_shaders.c drm/radeon/kms: add r600 KMS support 2009-09-08 11:15:52 +10:00
r600_blit_shaders.h drm/radeon/kms: add r600 KMS support 2009-09-08 11:15:52 +10:00
r600_cp.c drm/radeon/kms: add r600 KMS support 2009-09-08 11:15:52 +10:00
r600_cs.c drm/radeon/r600: CS parser updates 2009-11-10 13:41:07 +10:00
r600_reg.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
r600d.h drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon.h drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_agp.c drm/radeon/kms: resume AGP by calling init. 2009-11-24 13:01:47 +10:00
radeon_asic.h drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_atombios.c drm/radeon/kms/atom: pull misc mode info for lvds from bios tables 2009-12-02 11:37:15 +10:00
radeon_benchmark.c drm/radeon/kms: use RADEON_GPU_PAGE_SIZE instead of 4096 2009-10-16 08:49:23 +10:00
radeon_bios.c drm/radeon/kms: remove some misleading debugging output 2009-11-04 13:38:02 +10:00
radeon_clocks.c drm/radeon/kms: fix divide by 0 in clocks code 2009-12-02 11:37:16 +10:00
radeon_combios.c drm/radeon/kms: fix divide by 0 in clocks code 2009-12-02 11:37:16 +10:00
radeon_connectors.c drm/radeon/kms: add tv standard property to tv connectors 2009-12-02 11:37:18 +10:00
radeon_cp.c drm/radeon: some r420s have a CP race with the DMA engine. 2009-09-21 14:48:45 +10:00
radeon_cs.c drm/radeon/kms: fix for the extra pages copying. 2009-09-26 09:03:39 +10:00
radeon_cursor.c drm/radeon/kms/r7xx: add regs for 40 bit CUR/GRPH addresses 2009-10-26 13:28:22 +10:00
radeon_device.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_display.c drm/radeon/kms: add support for encoder cloning. 2009-12-02 11:37:09 +10:00
radeon_drv.c drm/radeon/kms: remove unneeded master create/destroy functions. 2009-09-25 13:08:20 +10:00
radeon_drv.h drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_encoders.c drm/radeon/kms: call correct atom table for digital output dpms. 2009-12-02 11:37:20 +10:00
radeon_family.h drm/radeon: consolidate family flags used in pciids. 2009-09-23 10:21:00 +10:00
radeon_fb.c drm/radeon/kms: pick 8bpp console when 32MB or less VRAM 2009-12-02 11:37:10 +10:00
radeon_fence.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_fixed.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
radeon_gart.c drm/radeon/kms: use RADEON_GPU_PAGE_SIZE instead of 4096 2009-10-16 08:49:23 +10:00
radeon_gem.c drm/radeon: Give userspace more accurate information about available memory. 2009-12-02 11:37:10 +10:00
radeon_i2c.c drm/radeon/kms: add support for external tmds on legacy boards 2009-12-02 11:36:40 +10:00
radeon_ioc32.c drm/radeon/kms: add 32/64 ioctl support. 2009-09-15 09:03:43 +10:00
radeon_irq.c drm/radeon/r600: don't do interrupts 2009-09-18 14:34:06 +10:00
radeon_irq_kms.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
radeon_kms.c drm/radeon/kms: remove unneeded master create/destroy functions. 2009-09-25 13:08:20 +10:00
radeon_legacy_crtc.c drm/radeon/kms: Don't overwrite crtc_gen_cntl or crtc_gen_cntl2 2009-12-02 11:37:19 +10:00
radeon_legacy_encoders.c drm/radeon/kms: fix LVDS setup on r4xx 2009-12-02 11:37:13 +10:00
radeon_legacy_tv.c drm/radeon/kms: add initial radeon tv-out support. 2009-09-08 09:24:37 +10:00
radeon_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
radeon_mode.h drm/radeon/kms: fix LVDS setup on r4xx 2009-12-02 11:37:13 +10:00
radeon_object.c drm/radeon/kms: add HDP flushing for all GPUs. 2009-12-02 11:37:11 +10:00
radeon_object.h ttm: Make parts of a struct ttm_bo_device global. 2009-08-19 16:10:34 +10:00
radeon_pm.c drm/radeon/kms: add debugfs for power management for AtomBIOS devices 2009-11-06 14:13:25 +10:00
radeon_reg.h drm/radeon/kms: add support for external tmds on legacy boards 2009-12-02 11:36:40 +10:00
radeon_ring.c drm/radeon/kms: IB locking dumps out a lockdep ordering issue 2009-09-16 09:15:39 +10:00
radeon_state.c drm/radeon/r600: don't do interrupts 2009-09-18 14:34:06 +10:00
radeon_test.c drm/radeon/kms: use RADEON_GPU_PAGE_SIZE instead of 4096 2009-10-16 08:49:23 +10:00
radeon_ttm.c Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-11-11 11:32:04 -08:00
rs100d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rs400.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
rs400d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
rs600.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
rs600d.h drm/radeon/kms: Fix RS600/RV515/R520/RS690 IRQ 2009-10-08 09:40:04 +10:00
rs690.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
rs690d.h drm/radeon/kms: Convert RS690/RS740 to new init path (V2). 2009-10-02 08:51:50 +10:00
rv200d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rv250d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rv350d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
rv515.c drm/radeon/kms: ignore unposted GPUs with no BIOS. 2009-12-02 11:37:17 +10:00
rv515d.h drm/radeon/kms: Convert RV515 to new init path and associated cleanup 2009-09-29 11:15:54 +10:00
rv770.c drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) 2009-12-02 14:00:06 +10:00
rv770d.h drm/radeon/kms: fix vram_width calculation on r6xx/r7xx 2009-10-26 13:28:19 +10:00