Alex Deucher
a973bea11c
drm/radeon: switch audio handling to use callbacks
...
Register audio callbacks for asic where we support
audio. Cleans up the code and makes it easier to
add support for newer asics.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-23 18:03:53 -04:00
Alex Deucher
55b615aec6
drm/radeon: add pcie set/get lanes callbacks for newer asics
...
Uses the same functions as older asics.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-09 10:31:41 -04:00
Christian König
ef0e6e657c
drm/radeon: add set_uvd_clocks callback for r7xx v3
...
v2: avoid 64bit divide
v3: rv740 uses the evegreen upll configuration
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
2013-04-09 10:31:37 -04:00
Christian König
2539eb02de
drm/radeon: add set_uvd_clocks callback for SI
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-09 10:31:37 -04:00
Alex Deucher
a8b4925c79
drm/radeon: add set_uvd_clocks callback for evergreen
...
v2: remove unneeded register definitions
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-09 10:31:36 -04:00
Alex Deucher
23d33ba32b
drm/radeon: add set_uvd_clocks callback for ON/LN/TN (v4)
...
v2: write clk registers only once!
v3: update cg scratch register properly
v4: add TN support
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-09 10:31:35 -04:00
Christian König
f2ba57b5ea
drm/radeon: UVD bringup v8
...
Just everything needed to decode videos using UVD.
v6: just all the bugfixes and support for R7xx-SI merged in one patch
v7: UVD_CGC_GATE is a write only register, lockup detection fix
v8: split out VRAM fallback changes, remove support for RV770,
add support for HEMLOCK, add buffer sizes checks
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-04-09 10:31:33 -04:00
Alex Deucher
d041889414
drm/radeon: switch get_gpu_clock() to a callback (v2)
...
Cleans up the code for future asics
v2: rebase, fix some missing radeon_asic updates
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-02-20 08:51:21 -05:00
Alex Deucher
454d2e2a32
drm/radeon: add a asic callback to get the xclk
...
This is required to get the reference clock used
by the gfx engine for things like timestamps. Fixes
support for GL extensions the use timestamps on
certain boards.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-02-20 08:51:20 -05:00
Alex Deucher
e737a14cd1
drm/radeon: radeon-asic updates for Oland
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-02-01 19:34:51 -05:00
Alex Deucher
df16004447
drm/radeon: switch back to using the DMA ring for VM PT updates
...
Now that we have switched to using IBs for page table updates,
we can switch back the using the DMA ring.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-02-01 13:57:10 -05:00
Alex Deucher
123bc1832c
drm/radeon: use the reset mask to determine if rings are hung
...
fetch the reset mask and check if the relevant ring flags
are set to determine whether the ring is hung or not.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-01-31 16:24:57 -05:00
Alex Deucher
3646e4209f
drm/radeon: switch back to the CP ring for VM PT updates
...
For large VM page table updates, we can sometimes generate
more packets than there is space on the ring. This happens
more readily with the DMA ring since it is 64K (vs 1M for the
CP). For now, switch back to the CP. For the next kernel,
I have a patch to utilize IBs for VM PT updates which
alleviates this problem.
Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=58354
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-01-31 16:19:19 -05:00
Alex Deucher
43fb778754
drm/radeon: split r6xx and r7xx copy_dma functions
...
- r6xx actually uses a slightly different packet format,
although both formats seem to work ok.
- r7xx doesn't have the count multiple of 2 limitation.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2013-01-04 09:29:54 -05:00
Alex Deucher
cd459e525f
drm/radeon: add VM CS parser support for async DMA on cayman/TN/SI
...
Allows us to use async DMA from userspace.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-14 10:45:26 -05:00
Alex Deucher
d2ead3eaf8
drm/radeon/kms: add evergreen/cayman CS parser for async DMA (v2)
...
Allows us to use the DMA ring from userspace.
DMA doesn't have a good NOP packet in which to embed the
reloc idx, so userspace has to add a reloc for each
buffer used and order them to match the command stream.
v2: fix address bounds checking
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-14 10:45:25 -05:00
Alex Deucher
cf4ccd016b
drm/radeon/kms: add 6xx/7xx CS parser for async DMA (v2)
...
Allows us to use the DMA ring from userspace.
DMA doesn't have a good NOP packet in which to embed the
reloc idx, so userspace has to add a reloc for each
buffer used and order them to match the command stream.
v2: fix address bounds checking, reloc indexing
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-14 10:45:25 -05:00
Alex Deucher
bf66a786c9
drm/radeon: use DMA engine for VM page table updates on SI
...
DMA engine has special packets to facilitate this and it also keeps
the 3D engine free for other things.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 17:21:43 -05:00
Alex Deucher
33e5467871
drm/radeon: use DMA engine for VM page table updates on cayman/TN
...
DMA engine has special packets to facilitate this and it also keeps
the 3D engine free for other things.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 17:21:42 -05:00
Alex Deucher
2d6cc7296d
drm/radeon: use async dma for ttm buffer moves on 6xx-SI
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 16:53:53 -05:00
Alex Deucher
8c5fd7efcc
drm/radeon/kms: Add initial support for async DMA on SI
...
Pretty much the same as cayman. Some changes to the copy
packets.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 16:53:41 -05:00
Alex Deucher
f60cbd117a
drm/radeon/kms: Add initial support for async DMA on cayman/TN
...
There are 2 async DMA engines on cayman, one at 0xd000 and
one at 0xd800. The programming interface is the same as
evergreen however there are some changes to the commands
for using vmids.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 16:53:34 -05:00
Alex Deucher
233d1ad59a
drm/radeon/kms: Add initial support for async DMA on evergreen
...
Pretty similar to 6xx/7xx except the count field increased in the
packet header and the max IB size increased.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 16:53:29 -05:00
Alex Deucher
4d75658bff
drm/radeon/kms: Add initial support for async DMA on r6xx/r7xx
...
Uses the new multi-ring infrastucture. 6xx/7xx has a single
async DMA ring.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-12-10 16:53:23 -05:00
Alex Deucher
82ffd92b16
drm/radeon: add vm set_page() callback for SI
...
Use the new WRITE_DATA packet rather than the legacy
ME_WRITE packet.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-10-02 15:02:23 -04:00
Alex Deucher
27810fb2d2
drm/radeon/pm: fix multi-head profile handling on BTC+ (v2)
...
Starting on BTC, there are no longer separate states for
single head and multi-head, we just use the high mclk/voltage
for all states for multi-head.
Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=49981
v2: fix typo
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-10-02 10:27:51 -04:00
Alex Deucher
6d92f81dcf
drm/radeon: add get_backlight_level callback
...
Read back the backlight level from the hw.
Needed for proper backlight restoration on resume.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-09-27 10:22:41 -04:00
Christian König
2a6f1abbb4
drm/radeon: make page table updates async v2
...
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 >
2012-09-20 13:10:40 -04:00
Christian König
089a786e2c
drm/radeon: Move looping over the PTEs into chip code
...
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 >
2012-09-20 13:10:39 -04:00
Christian König
ee60e29f1d
drm/radeon: rework VMID handling
...
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 >
2012-09-20 13:10:39 -04:00
Christian König
9b40e5d842
drm/radeon: make VM flushs a ring operation
...
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 >
2012-09-20 13:10:39 -04:00
Christian König
d66a76269a
drm/radeon: remove vm_unbind
...
It actually isn't very useful.
Signed-off-by: Christian König <deathsimple@vodafone.de >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
2012-09-20 13:10:38 -04:00
Christian König
05b0714768
drm/radeon: move VM funcs into asic structure
...
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 >
2012-09-20 13:10:38 -04:00
Alex Deucher
37e9b6a62f
drm/radeon: rework the backlight control to be an asic callback
...
This cleans up the interface a bit as well.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2012-09-20 13:10:37 -04:00
Alex Deucher
abf1dc67cb
drm/radeon: document radeon_asic.c
...
Adds documentation to most of the functions in
radeon_asic.c
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2012-07-18 13:53:36 +02:00
Christian König
abfaa44bde
drm/radeon: remove cayman_gpu_is_lockup
...
Since it is now identical to evergreen_gpu_is_lockup.
Signed-off-by: Christian König <deathsimple@vodafone.de >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-05-03 09:16:42 +01:00
Christian König
8ba957b5b6
drm/radeon: remove r300_gpu_is_lockup
...
Since it is now identical to r100_gpu_is_lockup.
Signed-off-by: Christian König <deathsimple@vodafone.de >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-05-03 09:16:40 +01:00
Christian König
312c4a8cf2
drm/radeon: make radeon_gpu_is_lockup a per ring function
...
Different rings have different criteria to test
if they are stuck.
v2: rebased on current drm-next
Signed-off-by: Christian König <deathsimple@vodafone.de >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-05-03 09:16:01 +01:00
Alex Deucher
be63fe8c8f
drm/radeon/kms: add radeon_asic struct for trinity
...
Trinity (TN) is an APU with:
- Cayman 3D
- DCE6.1 display
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-03-21 06:55:58 +00:00
Alex Deucher
02779c082c
drm/radeon/kms: add radeon_asic struct for SI
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-03-21 06:55:55 +00:00
Alex Deucher
54e88e065e
drm/radeon/kms: clean up radeon_asic struct (v2)
...
v2: fix typo.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:16:20 +00:00
Alex Deucher
9e6f3d02c4
drm/radeon/kms: reorganize surface callbacks
...
tidy up the radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:15:25 +00:00
Alex Deucher
798bcf7341
drm/radeon/kms: move clock/pcie setting callbacks into pm struct
...
tidy up radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:15:16 +00:00
Alex Deucher
c79a49ca00
drm/radeon/kms: reorganize display callbacks
...
tidy up the radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:15:06 +00:00
Alex Deucher
c5b3b8504f
drm/radeon/kms: reorganize gart callbacks
...
tidy up the radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:14:57 +00:00
Alex Deucher
f712812e1b
drm/radeon/kms: make ring_start, ring_test, and ib_test per ring
...
Each ring type may need a different variant.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:14:47 +00:00
Alex Deucher
b35ea4ab88
drm/radeon/kms: reorganize irq callbacks
...
tidy up the radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:14:29 +00:00
Alex Deucher
27cd77694b
drm/radeon/kms: reorganize copy callbacks
...
tidy up the radeon_asic struct, handle multiple
rings better.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König<christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:14:14 +00:00
Christian König
eb0c19c539
drm/radeon: also make the cs_parse function per ring
...
Not all rings use PM4, so the cs_parser also needs to be per ring.
Signed-off-by: Christian König <deathsimple@vodafone.de >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-29 10:11:30 +00:00
Alex Deucher
a02fa397b0
drm/radeon/kms: reorganize pm callbacks
...
tidy up the radeon_asic struct.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Jerome Glisse <jglisse@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2012-02-27 14:49:35 +00:00