summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* drm/radeon/dce3: use a single PPLL for all DP displaysAlex Deucher2012-09-201-0/+24
| | | | | | | If possible, use a single PPLL for multiple DP displays on DCE3.x. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: rework pll selection (v4)Alex Deucher2012-09-201-34/+129
| | | | | | | | | | | | | | | | | | | | | For DP we can use the same PPLL for all active DP encoders. Take advantage of that to prevent cases where we may end up sharing a PPLL between DP and non-DP which won't work. Also clean up the code a bit. v2: - fix missing pll_id assignment in crtc init v3: - fix DP PPLL check - document functions - break in main encoder search loop after matching. no need to keep checking additional encoders. v4: - same as v3, but re-apply to drm-next as the corner cases are fixed properly in subsequent patches. fixes: https://bugs.freedesktop.org/show_bug.cgi?id=54471 Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: fix typo in atombios_get_encoder_modeAlex Deucher2012-09-201-1/+2
| | | | | | comparing the encoder mode to the encoder id for DVO. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon/atom: fix typo in SetPixelClock handlingAlex Deucher2012-09-201-1/+4
| | | | | | | | MiscInfo field should be programmed with the crtc id rather than the pll id. However, at this point the two are the same for chips with this version of the table. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: white space cleanup in transmitter setupAlex Deucher2012-09-201-8/+4
| | | | | | Makes it more consistent with the surrounding code. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: clean up encoder dp checksAlex Deucher2012-09-201-4/+4
| | | | | | | | Use the proper struct in the union. That field has the same offset in every struct, so no functional change. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: rework the VM code a bit more (v2)Christian König2012-09-204-72/+154
| | | | | | | | | | | | | Roughly based on how nouveau is handling it. Instead of adding the bo_va when the address is set add the bo_va when the handle is opened, but set the address to zero until userspace tells us where to place it. This fixes another bunch of problems with glamor. v2: agd5f: fix build after dropping patch 7/8. Signed-off-by: Christian König <deathsimple@vodafone.de>
* drm/radeon: fix gem_close_object handlingChristian König2012-09-201-2/+5
| | | | | | | Make the reserve non interruptible. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: let bo_reserve take no_intr instead of no_wait paramChristian König2012-09-202-5/+4
| | | | | | | | The no_wait param isn't used anywhere, and actually isn't very usefull at all. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: move and rename radeon_bo_va functionChristian König2012-09-205-20/+33
| | | | | | | | It doesn't really belong into the object functions, also rename it to avoid collisions with struct radeon_bo_va. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: move IB pool to 1MB offsetChristian König2012-09-203-4/+5
| | | | | | | | Even GPUs can have a null pointer dereference, so move the IB pool to another offset to catch those. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: fix VA overlap checkChristian König2012-09-201-1/+1
| | | | | Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: fix VA range checkChristian König2012-09-201-1/+1
| | | | | | | The end offset is exclusive not inclusive. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: fix VM syncing with multiple ringsChristian König2012-09-201-1/+1
| | | | | | | | When a VM is used on more than one ring we need to sync to the last user. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: Remove unused functionsLauri Kasanen2012-09-204-74/+0
| | | | | | | This applies on top of drm/radeon: Mark all possible functions / structs as static. Signed-off-by: Lauri Kasanen <cand@gmx.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: Mark all possible functions / structs as staticLauri Kasanen2012-09-2027-93/+93
| | | | | | | | | Let's allow GCC to optimize better. This exposed some five unused functions, but this patch doesn't remove them. Signed-off-by: Lauri Kasanen <cand@gmx.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: remove dead function defAlex Deucher2012-09-201-2/+1
| | | | | | Was removed in the async VM update series. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: implement bounds checking on thermal controller lookupAlex Deucher2012-09-201-2/+9
| | | | | | | Don't read past the end of the array if we encounter an unknown thermal controller. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: document async VM changes in ni.cAlex Deucher2012-09-201-0/+15
| | | | Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: make page table updates async v2Christian König2012-09-205-25/+71
| | | | | | | | | Currently doing the update with the CP. v2: Rebased on Jeromes bugfix. Make validity comparison more human readable. Signed-off-by: Christian König <deathsimple@vodafone.de>
* drm/radeon: make sure ib bo is properly bound and up to date in vm spaceJerome Glisse2012-09-201-0/+5
| | | | | | | | Make sure that the ib bo is bound and is page table is up to date in the virtual address space. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Reviewed-by: Christian König <christian.koenig@amd.com>
* drm/radeon: Move looping over the PTEs into chip codeChristian König2012-09-205-34/+34
| | | | | | | Makes it easier to move it into the rings. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: rework VM page table handlingChristian König2012-09-204-116/+43
| | | | | | | | | Removing the need to wait for anything. Still not ideal, since we need to free pt on va remove. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: rework VMID handlingChristian König2012-09-208-76/+153
| | | | | | | Move binding onto the ring, simplifying handling a bit. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: make VM flushs a ring operationChristian König2012-09-208-38/+42
| | | | | | | | Move flushing the VMs as function into the rings. First step to make VM operations async. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: add sync helper functionChristian König2012-09-201-6/+14
| | | | | Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: remove vm_unbindChristian König2012-09-205-29/+0
| | | | | | | It actually isn't very useful. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: move VM funcs into asic structureChristian König2012-09-203-47/+54
| | | | | | | So it looks more like the rest of the driver. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon: cleanup VM id handling a bitChristian König2012-09-207-26/+25
| | | | | | | | Store a reference to the VM into the IB structure, that makes calculating the IBs address a bit less complicated. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
* drm/radeon/atom: add consolidate bpc codeAlex Deucher2012-09-201-67/+29
| | | | | | | | Several encoder setup functions had the same duplicated code for selecting the proper bpc setting for various atom tables. Consolidate it. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: rework the backlight control to be an asic callbackAlex Deucher2012-09-207-33/+84
| | | | | | This cleans up the interface a bit as well. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: add initial support for ATCS ACPI methodsAlex Deucher2012-09-202-1/+138
| | | | | | | Just verify the interface and track what functions are supported. Not actually used yet. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: document radeon_atpx_handler.c (v2)Alex Deucher2012-09-201-0/+111
| | | | | | v2: rebase updates Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: reorganize ATPX support (v2)Alex Deucher2012-09-201-60/+110
| | | | | | | | | - rework the acpi execute code - User proper parameters for ATPX functions v2: rebase fixes Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: update ATPX verify interface handling (v2)Alex Deucher2012-09-201-17/+124
| | | | | | | | | Verify the ATPX interface and track what ATPX functions are available for future use. v2: rework due to tree changes Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: document radeon_acpi.cAlex Deucher2012-09-201-0/+101
| | | | Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: block the keypress on ATIF eventsLuca Tettamanti2012-09-201-1/+6
| | | | | | | | | The AMD ACPI interface may use ACPI_VIDEO_NOTIFY_PROBE to signal SBIOS requests; block the keypress in this case since the user did not actually press the mode switch key. Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* ACPI video: allow events handlers to veto the keypressLuca Tettamanti2012-09-201-4/+4
| | | | | | | | | | | | | | | | The standard video events may be overloaded for device specific purposes. For example AMD ACPI interface overloads ACPI_VIDEO_NOTIFY_PROBE (0x81) to signal AMD-specific events. In such cases we don't want to send the keypress (KEY_SWITCHVIDEOMODE) to the userspace because the user did not press the mode switch key (the spurious keypress confuses the DE which usually changes the display configuration and messes up a dual-screen setup). This patch gives the handlers the chance to examine the event and block the keypress if the event is device specific. v2: refactor as suggested by Zhang Rui <rui.zhang@intel.com> Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: re-organize the acpi notifier callbackAlex Deucher2012-09-204-43/+48
| | | | | | | Move it out of the radeon_pm.c and into radeon_acpi.c since we use it for more than just pm now. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: implement handler for ACPI eventLuca Tettamanti2012-09-207-11/+152
| | | | | | | | | | | | | Set up an handler for ACPI events and respond to brightness change requests from the system BIOS. v2: fix notification when using device-specific command codes (tested by Pali Rohár <pali.rohar@gmail.com>); cache the encoder controlling the backlight during the initialization to avoid searching it every time (suggested by Alex Deucher). v3: whitespace fixes (Alex Deucher). Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: implement wrapper for GET_SYSTEM_PARAMSLuca Tettamanti2012-09-201-2/+83
| | | | | | | | | | Use GET_SYSTEM_PARAMS for retrieving the configuration for the system BIOS notifications. v2: packed struct (Lee, Chun-Yi <jlee@suse.com>) v3: fix enable with device specific command code Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: implement radeon_atif_verify_interfaceLuca Tettamanti2012-09-202-6/+113
| | | | | | | | | | | Wrap the call to VERIFY_INTERFACE and add the parsing of the support vectors. v2: use a packed struct for handling the output of ACPI calls, hides ugly pointer arithmetics (Lee, Chun-Yi <jlee@suse.com>). v3: fix radeon_atif_parse_functions handling (Alex Deucher) Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: refactor radeon_atif_callLuca Tettamanti2012-09-201-15/+23
| | | | | | | | | Don't hard-code function number, this will allow to reuse the function. v2: add support for the 2nd parameter (from Lee, Chun-Yi <jlee@suse.com>). Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: add backlight control for atom devices (v2)Alex Deucher2012-09-203-16/+248
| | | | | | | | | On systems that use the build in GPU backlight controller, we can use atom tables to change the brightness level. v2: use firmware flags Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: rework legacy backlight controlAlex Deucher2012-09-202-13/+17
| | | | | | To better enable sharing with atom backlight control. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: track whether the GPU controls the backlight (v2)Alex Deucher2012-09-202-0/+6
| | | | | | | | | | A table in the vbios tells us whether the GPU backlight controller is used or not. If the bit is set, the GPU backlight controller is used; if it is not set, an off-chip backlight controller is used. v2: store all the firmware flags, not just BL control Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: add a license header to radeon_apci.cAlex Deucher2012-09-201-0/+23
| | | | Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* drm/radeon: add new AMD ACPI header and update relevant code (v2)Alex Deucher2012-09-203-22/+455
| | | | | | | | | | | | | | | | Add a new header that defines the AMD ACPI interface used for laptops, PowerXpress, and chipset specific functionality and update the current code to use it. Todo: - properly verify the ACPI interfaces - hook up and handle ACPI notifications - make PX code more robust - implement PCIe Gen and width switching using ACPI v2: fix typo in header Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
* Annotate int2float() as being a pure function.Steven Fuerst2012-09-202-2/+2
| | | | | | | | This allows gcc to fold duplicate calls into a single call. Since the current users do actually call it multiple times with the same arguments, this is an obvious win. Signed-off-by: Steven Fuerst <svfuerst@gmail.com>
* Replace int2float() with an optimized version.Steven Fuerst2012-09-201-23/+28
| | | | | | | | | | | | We use __fls() to find the most significant bit. Using that, the loop can be avoided. A second trick is to use the behaviour of the rotate instructions to expand the range of the unsigned int to float conversion to the full 32 bits in a branchless way. The routine is now exact up to 2^24. Above that, we truncate which is equivalent to rounding towards zero. Signed-off-by: Steven Fuerst <svfuerst@gmail.com>