Alex Deucher
a9e6141092
drm/radeon/kms: add dpm support for SI (v7)
...
This adds dpm support for SI asics. This includes:
- dynamic engine clock scaling
- dynamic memory clock scaling
- dynamic voltage scaling
- dynamic pcie gen1/gen2/gen3 switching
- power containment
- shader power scaling
Set radeon.dpm=1 to enable.
v2: enable hainan support, rebase
v3: guard acpi stuff
v4: fix 64 bit math
v5: fix 64 bit div harder
v6: fix thermal interrupt check noticed by Jerome
v7: attempt fix state enable
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:40:05 -04:00
Alex Deucher
a0ceada6b4
drm/radeon: switch SI to use radeon_ucode.h
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:53 -04:00
Alex Deucher
ac1633876f
drm/radeon: add SI to r600_is_internal_thermal_sensor()
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:52 -04:00
Alex Deucher
a172230f19
drm/radeon/dpm/rs780: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:52 -04:00
Alex Deucher
ac0cdcb514
drm/radeon/dpm/r6xx: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:51 -04:00
Alex Deucher
b97721f311
drm/radeon/dpm/r7xx: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:50 -04:00
Alex Deucher
c3efac0d5b
drm/radeon/dpm/trinity: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:49 -04:00
Alex Deucher
2c47b063a0
drm/radeon/dpm/sumo: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:48 -04:00
Alex Deucher
1f67df4df7
drm/radeon/dpm/evergreen: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:47 -04:00
Alex Deucher
aafb3afa59
drm/radeon/dpm/btc: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:46 -04:00
Alex Deucher
79fb809a5d
drm/radeon/dpm/ni: properly catch errors in dpm setup
...
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:44 -04:00
Alex Deucher
779187f2c3
drm/radeon/atom: fix voltage table parsing
...
The arrays items are variable sized.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:42 -04:00
Alex Deucher
da289525b6
drm/radeon: fix typo in atom voltage table handling (si+)
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:42 -04:00
Alex Deucher
7a80c2c9a9
drm/radeon: fix typo in atom voltage table handling (6xx-ni)
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:41 -04:00
Alex Deucher
4bd9f516f6
drm/radeon/dpm: add pcie gen helper function
...
Add a helper function to determine the preferred
pcie gen based on the card, system, and circumstance.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:40 -04:00
Alex Deucher
2abba66e7a
drm/radeon: update radeon_atombios_get_default_voltages for mvdd
...
Add a way to look up the bootup mvdd. Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:40 -04:00
Alex Deucher
4489cd62e5
drm/radeon/dpm: validate voltages against dispclk requirements
...
Validate the voltages against the voltage requirements of the
dispclk. We currently don't adjust the disp clock so it never
changes, but we need to filter out voltage levels that are too
low none the less.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:39 -04:00
Alex Deucher
f907eec036
drm/radeon: fix some memory leaks in extended table parsing
...
Forgot to free some structs when allocation fails for some
tables.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:38 -04:00
Alex Deucher
b253e4b359
drm/radeon/dpm/cayman: use new fixed point functions (v2)
...
Use the new fixed point functions for leakage
calculations on cayman.
v2: fix up 64 bit math
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:38 -04:00
Alex Deucher
9ed36f7505
drm/radeon: minor sid.h cleanup
...
Consolidate the non-register defines.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:36 -04:00
Alex Deucher
7178d2a642
drm/radeon/dpm: save some display parameters for DPM
...
Required for SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:36 -04:00
Alex Deucher
a5cb318e3f
drm/radeon/dpm: pull in ppm info from atom
...
Used by SI dpm.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:35 -04:00
Alex Deucher
9985318b7f
drm/radeon/dpm: endian fixes for extended power tables
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:34 -04:00
Alex Deucher
929ee7a8b3
drm/radeon/dpm: pull in phase shedding limits from atom
...
Required for dpm on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:34 -04:00
Alex Deucher
32ce4652dc
drm/radeon/dpm: add an enum for pcie gen selection
...
This makes it easier the understand what the code is
doing.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:33 -04:00
Alex Deucher
f8f84ac5d4
drm/radeon: implement clock and power gating for SI
...
Only Cape Verde supports power gating.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:32 -04:00
Alex Deucher
bd8cd5391a
drm/radeon: add clearstate init for verde power gating
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:31 -04:00
Alex Deucher
6d8cf0005d
drm/radeon: initialize save/restore buffer for pg on verde
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:31 -04:00
Alex Deucher
93656cdd3c
drm/radeon: add indirect accessors for UVD CTX registers
...
These are needed for certain UVD power saving features.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:30 -04:00
Alex Deucher
beb79f40b8
drm/radeon: add atom get leakage vddc function
...
Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:29 -04:00
Alex Deucher
d719cef316
drm/radeon: update rlc programming sequence on SI
...
This is required for certain power management features.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:29 -04:00
Alex Deucher
8ba104637b
drm/radeon: enable additional power gating features on trinity
...
TN has some additional powergating features beyond what is
supported on ON/LN.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:28 -04:00
Alex Deucher
e0bcf1654d
drm/radeon: add support for ASPM on SI asics (v2)
...
Enables PCIE ASPM (Active State Power Management) on
SI asics.
v2: fix typo
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:27 -04:00
Alex Deucher
f52382d73e
drm/radeon: add support for ASPM on evergreen asics
...
Enables PCIE ASPM (Active State Power Management) on
evergreen-cayman asics.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:27 -04:00
Alex Deucher
792edd6957
drm/radeon: add accessors of pif_phy indirect register space
...
Required for accessing certain pcie related registers.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:26 -04:00
Alex Deucher
b9d305dfb6
drm/radeon: implement pcie gen2/3 support for SI
...
If both the motherboard and GPU support pcie gen2 or 3,
enable it. PCIE gen2 and 3 offer more bandwidth than
pcie gen1.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:25 -04:00
Alex Deucher
6517194417
drm/radeon: update radeon_atom_get_voltage_table() for SI
...
SI uses a new atom table revision. Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:25 -04:00
Alex Deucher
58653abdd2
drm/radeon: update radeon_atom_is_voltage_gpio() for SI
...
SI uses a new atom table. Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:24 -04:00
Alex Deucher
eaa778aff0
drm/radeon/atom: add helper to calcuate mpll params
...
There's a new table for calculating the memory pll
parameters on SI. Required for SI DPM support.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:23 -04:00
Alex Deucher
e37e6a0e4f
drm/radeon: implement apci perf request
...
These functions use acpi methods to adjust the pcie
gen speed. Used by DPM.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:23 -04:00
Alex Deucher
9d45ad5aff
drm/radeon/dpm: remove local sumo_get_xclk()
...
Use the new asic callback instead.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:22 -04:00
Alex Deucher
a5b91af2e2
drm/radeon: add missing UVD clock set in cayman dpm code
...
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:21 -04:00
Alex Deucher
89c9bc5651
drm/radeon/dpm: remove broken dyn state remnants
...
Now that the proper fix has been implemented I can
remove the last remnants of the initial implementation.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:21 -04:00
Alex Deucher
fee3d744bf
drm/radeon/dpm: add pre/post_set_power_state callback (cayman)
...
This properly implemented dynamic state adjustment by
using a working copy of the requested and current
power states.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:20 -04:00
Alex Deucher
e8a9539fa0
drm/radeon/dpm: add pre/post_set_power_state callback (BTC)
...
This properly implemented dynamic state adjustment by
using a working copy of the requested and current
power states.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:19 -04:00
Alex Deucher
a284c48ae7
drm/radeon/dpm: add pre/post_set_power_state callback (TN)
...
This properly implemented dynamic state adjustment by
using a working copy of the requested and current
power states.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:18 -04:00
Alex Deucher
422a56bc8a
drm/radeon/dpm: add pre/post_set_power_state callback (sumo)
...
This properly implemented dynamic state adjustment by
using a working copy of the requested and current
power states.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:18 -04:00
Alex Deucher
98243917d7
drm/radeon/dpm: add pre/post_set_power_state callbacks (6xx-eg)
...
For r6xx-evergreen, they are no-ops as they don't support
any dynamic state adjustment.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:17 -04:00
Alex Deucher
84dd192826
drm/radeon/dpm: add new pre/post_set_power_state callbacks
...
Needed to properly handle dynamic state adjustment.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:16 -04:00
Alex Deucher
940eea8e4d
drm/radeon/dpm/tn: restructure code
...
Needed to properly handle dynamic state adjustment.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-06-27 19:16:16 -04:00