summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* drm/radeon/kms: don't require up to 64k allocations. (v2)Dave Airlie2009-09-257-271/+370
| | | | | | | | | | | | | | | | | | This avoids needing to do a kmalloc > PAGE_SIZE for the main indirect buffer chunk, it adds an accessor for all reads from the chunk and caches a single page at a time for subsequent reads. changes since v1: Use a two page pool which should be the most common case a single packet spanning > PAGE_SIZE will be hit, but I'm having trouble seeing anywhere we currently generate anything like that. hopefully proper short page copying at end added parser_error flag to set deep errors instead of having to test every ib value fetch. fixed bug in patch that went to list. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: enable dac load detection by default.Dave Airlie2009-09-251-0/+8
| | | | | | | | when I added the property I forgot to enable it. Thanks to soreau on #radeon for tracking it down. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: enable r600 tv outputs.Dave Airlie2009-09-251-6/+3
| | | | | | I never changed this back when I wrote tv-out support. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/edid: Fix standard timing parse for EDID <= 1.2Adam Jackson2009-09-241-5/+12
| | | | | | | Aspect ratio code of 0 means 1:1 before EDID 1.3. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/edid: Detailed standard timing blocks have six timings, not five.Adam Jackson2009-09-241-2/+1
| | | | | Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/edid: Ignore bad standard timings.Adam Jackson2009-09-241-0/+16
| | | | | Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/edid: const cleanupAdam Jackson2009-09-241-1/+3
| | | | | Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/r600: set correct pitch for 4 byte copyAndre Maasikas2009-09-232-2/+2
| | | | | | [agd5f: also fix the non-kms path] Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
* drm/radeon: consolidate family flags used in pciids.Dave Airlie2009-09-233-121/+100
| | | | | | | having these separate was pointless and introduced a bug when one got updated without the other. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon: some r420s have a CP race with the DMA engine.Alex Deucher2009-09-212-0/+26
| | | | | | | | | This patch makes sure the CP doesn't DMA do VRAM while 2D is active by inserting a CP resync token. todo: port to kms. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/r600/kms: rv670 is not DCE3Alex Deucher2009-09-211-1/+1
| | | | | | | RV670 was using the wrong modesetting code. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: r420 idle after programming GA_ENHANCEDave Airlie2009-09-211-0/+5
| | | | | | | | https://bugs.freedesktop.org/show_bug.cgi?id=24041 The idle allows rs690 to startup properly. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: more fixes to rv770 suspend/resume path.Dave Airlie2009-09-212-10/+12
| | | | | | | | | | | This resumes my RV730PRO (4650) RV770 (4850) fine. Still researching the RV4550 (RV710), resumes without X fine. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: more alignment for rv770.c with r600.cDave Airlie2009-09-181-0/+5
| | | | Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: rv770 blit init called too late.Dave Airlie2009-09-181-5/+14
| | | | | | re-align with r600 code, to init blit earlier. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: move around new init path code to avoid posting at initDave Airlie2009-09-183-27/+101
| | | | | | | | | We really don't want to post the card at init, it takes a relatively long time and isn't required, so split the resume path into a startup path called by both init/resume and separate resume entry point to do posting. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/r600: fix some issues with suspend/resume.Dave Airlie2009-09-182-16/+21
| | | | | | | | | a) don't zero gart table on gart enable b) move pinning shader object into resume path c) unpin shader object on suspend d) set cp ready to false after cp shutdown on suspend. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: disable VGA rendering engine before taking over VRAMDave Airlie2009-09-184-0/+20
| | | | | | | | | Before we use any of VRAM, we need to disable the VGA rendering engine, this render text mode into a graphical framebuffer for scanout, however it does this on vblank, and can end up overwriting the GART table and r600 shader objects. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: Move radeon_get_clock_info() call out of radeon_clocks_init().Michel Dänzer2009-09-183-2/+4
| | | | | | | | | | | | | | | | | | | | Someone on IRC reported problems after commit 95a8f1bf4f48b434c9f839ab5a0773f66b39d7c6 ('drm/radeon/kms: Move radeon_clocks_init() call back after getting VRAM info.'). And indeed, at least some ASIC vram_info hooks use the clock info obtained by radeon_get_clock_info(). So, move that call out of radeon_clocks_init(), ahead of the radeon_vram_info() call. [airlied - fixup missing r600/rv770 calls] Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com> drm/radeon/kms: fix get clock info calls for r600/rv770 init path. These were missed when it got split out. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: add initial connector propertiesDave Airlie2009-09-187-62/+376
| | | | | | | | | | | | | | | | This adds: coherent mode: TMDS coherent mode for atom cards. scaling mode: LVDS scaler mode load detect: DAC load detection, DVI-I, VGA, TV tmds pll: legacy TMDS pll selection tv standard: TV standard selection. for later: other TV ones? dvi subconnector selection using std prop [contains fixes pointed out on dri-devel for atom bios mixups by Michel] Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: Use surfaces for scanout / cursor byte swapping on big endian.Michel Dänzer2009-09-184-108/+31
| | | | | Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: don't fail if we fail to init GPU accelerationJerome Glisse2009-09-187-56/+61
| | | | | | | | | | Userspace can query if acceleration is working or not true get info ioctl and could fallback to software if for some reason kernel failed to initialize KMS. This should allow to give a working KMS setup in all case (even with non functionning accel). Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/r600/kms: fixup number of loops per blit calculation.Dave Airlie2009-09-181-7/+14
| | | | | | | | | | | Some people were seeing *ERROR* radeon: writting more dword to ring than expected after certain blits, the loops calculation didn't take into account that we do a separate blit for the remainder after doing the aligned blits. Acked-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: reprogram format in set base.Dave Airlie2009-09-182-0/+46
| | | | | | | | | | This should in theory fix the problem with a mode set being required for adjusting the color depth. This also adds in the necessary bits to the format tables for 8-bit, though it doesn't work yet. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon: avivo chips have no separate int bit for displayDave Airlie2009-09-181-2/+0
| | | | | | | | | | display interrupts are not enabled via this register, the DISPLAY_INT bit is a status only to show that other regs need to be read. Noticed by Alex Deucher Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/r600: don't do interruptsAlex Deucher2009-09-182-1/+22
| | | | | | | | Interrupts are not supported yet. This prevents things like mesa from trying to use them. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm: fix _DRM_GEM addmap error messagePekka Paalanen2009-09-181-2/+2
| | | | | | | | | Fix the error message: this is add, not rm. Move the closing brace to proper spot: _DRM_GEM branch should not be included in the block. Signed-off-by: Pekka Paalanen <pq@iki.fi> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm: update crtc x/y when only fb changesBen Skeggs2009-09-181-0/+3
| | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm: fix drm_fb_helper handling of kernel crtcsJesse Barnes2009-09-181-37/+43
| | | | | | | | | | | | | The drm_fb_helper shouldn't mess with CRTCs that aren't enabled or in its initial config. Ideally it shouldn't even include CRTCs in its initial config if they're not in use, but my old fix for that no longer works. At any rate, this fixes a real bug I was seeing where after a console blank, both pipes would come back on, even though only one had been enabled before that. Since the other pipe had a bogus config, this led to some screen corruption. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: Get LVDS native mode details from EDID if necessary.Michel Dänzer2009-09-162-5/+41
| | | | | | | Fixes RMX problems on older Apple laptops which don't have an x86 BIOS ROM. Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon: Save and restore bios scratch regs during S/RYang Zhao2009-09-164-0/+35
| | | | | | | [airlied:- adapted slightly in naming] Signed-off-by: Yang Zhao <yang@yangman.ca> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: IB locking dumps out a lockdep ordering issueDave Airlie2009-09-163-8/+22
| | | | | | | | | | We sometimes lock IB then the ring and sometimes the ring then the IB. This is mostly due to the IB locking not being well defined about what data in the structs it actually locks. Define what I believe is the correct behaviour and gets rid of the lock dep ordering warning. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: we should return 0 when we have no modes not -1.Dave Airlie2009-09-161-1/+1
| | | | | | This fixes my monitor with broken EDID so it at least get 800x600. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: Free CS parser state tracking memory.Michel Dänzer2009-09-161-0/+1
| | | | | | | | Fixes leak hidden in commit 9f022ddfb23793b475ff7e57ac08a766dd5d31bd ('drm/radeon/kms: convert r4xx to new init path'). Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: Don't kzalloc memory which is immediately overwritten.Michel Dänzer2009-09-161-1/+1
| | | | | Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: Move radeon_clocks_init() call back after getting VRAM info.Michel Dänzer2009-09-161-2/+2
| | | | | | | It may indirectly call radeon_set_clock_gating() which relies on the VRAM info. Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: Only add common modes which fit in both panel dimensions.Michel Dänzer2009-09-161-2/+4
| | | | | Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: add 32/64 ioctl support.Dave Airlie2009-09-153-1/+18
| | | | | | | | Although the new radeon driver ioctls don't need this, some of the drm initialisation ioctls require it, so add this to make them work. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: clear confusion in GART init/deinit pathJerome Glisse2009-09-1514-190/+306
| | | | | | | | | | | | | | | | GART static one time initialization was mixed up with GART enabling/disabling which could happen several time for instance during suspend/resume cycles. This patch splits all GART handling into 4 differents function. gart_init is for one time initialization, gart_deinit is called upon module unload to free resources allocated by gart_init, gart_enable enable the GART and is intented to be call after first initialization and at each resume cycle or reset cycle. Finaly gart_disable stop the GART and is intended to be call at suspend time or when unloading the module. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: cleanup - remove radeon_share.hJerome Glisse2009-09-149-132/+84
| | | | | | | | | | radeon_share.h was begining to give problem with include order in respect of radeon.h. It's easier and also i think cleaner to move what was in radeon_share.h into radeon.h. At the same time use the extern keyword for function shared accross the module. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: move mtrr range add and memory informationJerome Glisse2009-09-142-8/+8
| | | | | | | | | | | | Move mtrr range and memory information printing to radeon_object_init, this are memory information and initialization common to all GPU and they better fit in this function. Will also prevent code duplication with upcoming init path changes. airlied: fixed warning introduced Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: convert r4xx to new init pathJerome Glisse2009-09-1410-124/+1121
| | | | | | | This convert r4xx to new init path it also fix few bugs. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: fix typo in quirksAlex Deucher2009-09-121-2/+2
| | | | | Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms/r600: fix blit dword count for non r6xxAlex Deucher2009-09-121-2/+7
| | | | | | | rv6xx emits two extra dwords in the render target setup. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: add common lvds modes in the ddc caseAlex Deucher2009-09-121-3/+6
| | | | | | | previous patch only handled the non-ddc case. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
* drm/radeon/kms: set fbdev_info for suspend/resumeDave Airlie2009-09-111-0/+1
| | | | | | this hopefully will bring back suspend/resume under kms. Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: move modeset init outside of GPU initJerome Glisse2009-09-113-21/+25
| | | | | | | | | | | | We are splitting GPU & modeset init so that it's easier to abord only remaining GPU init when somethings fails. We want to always provide enough funcionalities to get fbcon and a shadowfb X working. Only acceptable error during initialization are memory allocation failure or io mapping failure. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: add common scaled modes for TV and LVDSAlex Deucher2009-09-111-9/+64
| | | | | Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms: pull in latest quirks and fixes from ddxAlex Deucher2009-09-112-16/+33
| | | | | Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* drm/radeon/kms/r600: use blit for BO movesAlex Deucher2009-09-111-2/+2
| | | | | Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>