diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-04-12 14:49:23 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-04-12 19:09:42 -0400 |
commit | 8a83ec5ee824a6bd431b49bdb2428c8bf88f03eb (patch) | |
tree | 691858cf883ee87126b5f9376aa0cb840b80b3df /drivers | |
parent | b4df8be1048eb6c8c5a8bd1646f5989fd34b549e (diff) |
drm/radeon/kms: add voltage type to atom set voltage function
This is needed for setting voltages other than vddc.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rs600.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 2 |
7 files changed, 15 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index cff7144a4ccc..f2448170086e 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -122,7 +122,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) | |||
122 | 122 | ||
123 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { | 123 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { |
124 | if (voltage->voltage != rdev->pm.current_vddc) { | 124 | if (voltage->voltage != rdev->pm.current_vddc) { |
125 | radeon_atom_set_voltage(rdev, voltage->voltage); | 125 | radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); |
126 | rdev->pm.current_vddc = voltage->voltage; | 126 | rdev->pm.current_vddc = voltage->voltage; |
127 | DRM_DEBUG("Setting: v: %d\n", voltage->voltage); | 127 | DRM_DEBUG("Setting: v: %d\n", voltage->voltage); |
128 | } | 128 | } |
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 304fc76b5fab..15d58292677a 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -587,7 +587,7 @@ void r600_pm_misc(struct radeon_device *rdev) | |||
587 | 587 | ||
588 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { | 588 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { |
589 | if (voltage->voltage != rdev->pm.current_vddc) { | 589 | if (voltage->voltage != rdev->pm.current_vddc) { |
590 | radeon_atom_set_voltage(rdev, voltage->voltage); | 590 | radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); |
591 | rdev->pm.current_vddc = voltage->voltage; | 591 | rdev->pm.current_vddc = voltage->voltage; |
592 | DRM_DEBUG_DRIVER("Setting: v: %d\n", voltage->voltage); | 592 | DRM_DEBUG_DRIVER("Setting: v: %d\n", voltage->voltage); |
593 | } | 593 | } |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 93f536594c73..99557407cdce 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -177,7 +177,7 @@ void radeon_pm_suspend(struct radeon_device *rdev); | |||
177 | void radeon_pm_resume(struct radeon_device *rdev); | 177 | void radeon_pm_resume(struct radeon_device *rdev); |
178 | void radeon_combios_get_power_modes(struct radeon_device *rdev); | 178 | void radeon_combios_get_power_modes(struct radeon_device *rdev); |
179 | void radeon_atombios_get_power_modes(struct radeon_device *rdev); | 179 | void radeon_atombios_get_power_modes(struct radeon_device *rdev); |
180 | void radeon_atom_set_voltage(struct radeon_device *rdev, u16 level); | 180 | void radeon_atom_set_voltage(struct radeon_device *rdev, u16 voltage_level, u8 voltage_type); |
181 | void rs690_pm_info(struct radeon_device *rdev); | 181 | void rs690_pm_info(struct radeon_device *rdev); |
182 | extern int rv6xx_get_temp(struct radeon_device *rdev); | 182 | extern int rv6xx_get_temp(struct radeon_device *rdev); |
183 | extern int rv770_get_temp(struct radeon_device *rdev); | 183 | extern int rv770_get_temp(struct radeon_device *rdev); |
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 99768d9d91da..330a5b56602b 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
@@ -2577,25 +2577,25 @@ union set_voltage { | |||
2577 | struct _SET_VOLTAGE_PARAMETERS_V2 v2; | 2577 | struct _SET_VOLTAGE_PARAMETERS_V2 v2; |
2578 | }; | 2578 | }; |
2579 | 2579 | ||
2580 | void radeon_atom_set_voltage(struct radeon_device *rdev, u16 level) | 2580 | void radeon_atom_set_voltage(struct radeon_device *rdev, u16 voltage_level, u8 voltage_type) |
2581 | { | 2581 | { |
2582 | union set_voltage args; | 2582 | union set_voltage args; |
2583 | int index = GetIndexIntoMasterTable(COMMAND, SetVoltage); | 2583 | int index = GetIndexIntoMasterTable(COMMAND, SetVoltage); |
2584 | u8 frev, crev, volt_index = level; | 2584 | u8 frev, crev, volt_index = voltage_level; |
2585 | 2585 | ||
2586 | if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) | 2586 | if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) |
2587 | return; | 2587 | return; |
2588 | 2588 | ||
2589 | switch (crev) { | 2589 | switch (crev) { |
2590 | case 1: | 2590 | case 1: |
2591 | args.v1.ucVoltageType = SET_VOLTAGE_TYPE_ASIC_VDDC; | 2591 | args.v1.ucVoltageType = voltage_type; |
2592 | args.v1.ucVoltageMode = SET_ASIC_VOLTAGE_MODE_ALL_SOURCE; | 2592 | args.v1.ucVoltageMode = SET_ASIC_VOLTAGE_MODE_ALL_SOURCE; |
2593 | args.v1.ucVoltageIndex = volt_index; | 2593 | args.v1.ucVoltageIndex = volt_index; |
2594 | break; | 2594 | break; |
2595 | case 2: | 2595 | case 2: |
2596 | args.v2.ucVoltageType = SET_VOLTAGE_TYPE_ASIC_VDDC; | 2596 | args.v2.ucVoltageType = voltage_type; |
2597 | args.v2.ucVoltageMode = SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE; | 2597 | args.v2.ucVoltageMode = SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE; |
2598 | args.v2.usVoltageLevel = cpu_to_le16(level); | 2598 | args.v2.usVoltageLevel = cpu_to_le16(voltage_level); |
2599 | break; | 2599 | break; |
2600 | default: | 2600 | default: |
2601 | DRM_ERROR("Unknown table version %d, %d\n", frev, crev); | 2601 | DRM_ERROR("Unknown table version %d, %d\n", frev, crev); |
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 08de669e025a..4010571def3a 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "drmP.h" | 23 | #include "drmP.h" |
24 | #include "radeon.h" | 24 | #include "radeon.h" |
25 | #include "avivod.h" | 25 | #include "avivod.h" |
26 | #include "atom.h" | ||
26 | #ifdef CONFIG_ACPI | 27 | #ifdef CONFIG_ACPI |
27 | #include <linux/acpi.h> | 28 | #include <linux/acpi.h> |
28 | #endif | 29 | #endif |
@@ -535,7 +536,8 @@ void radeon_pm_resume(struct radeon_device *rdev) | |||
535 | /* set up the default clocks if the MC ucode is loaded */ | 536 | /* set up the default clocks if the MC ucode is loaded */ |
536 | if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { | 537 | if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { |
537 | if (rdev->pm.default_vddc) | 538 | if (rdev->pm.default_vddc) |
538 | radeon_atom_set_voltage(rdev, rdev->pm.default_vddc); | 539 | radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, |
540 | SET_VOLTAGE_TYPE_ASIC_VDDC); | ||
539 | if (rdev->pm.default_sclk) | 541 | if (rdev->pm.default_sclk) |
540 | radeon_set_engine_clock(rdev, rdev->pm.default_sclk); | 542 | radeon_set_engine_clock(rdev, rdev->pm.default_sclk); |
541 | if (rdev->pm.default_mclk) | 543 | if (rdev->pm.default_mclk) |
@@ -585,7 +587,8 @@ int radeon_pm_init(struct radeon_device *rdev) | |||
585 | /* set up the default clocks if the MC ucode is loaded */ | 587 | /* set up the default clocks if the MC ucode is loaded */ |
586 | if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { | 588 | if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { |
587 | if (rdev->pm.default_vddc) | 589 | if (rdev->pm.default_vddc) |
588 | radeon_atom_set_voltage(rdev, rdev->pm.default_vddc); | 590 | radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, |
591 | SET_VOLTAGE_TYPE_ASIC_VDDC); | ||
589 | if (rdev->pm.default_sclk) | 592 | if (rdev->pm.default_sclk) |
590 | radeon_set_engine_clock(rdev, rdev->pm.default_sclk); | 593 | radeon_set_engine_clock(rdev, rdev->pm.default_sclk); |
591 | if (rdev->pm.default_mclk) | 594 | if (rdev->pm.default_mclk) |
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index 876cebc4b8ba..6e3b11e5abbe 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c | |||
@@ -114,7 +114,7 @@ void rs600_pm_misc(struct radeon_device *rdev) | |||
114 | udelay(voltage->delay); | 114 | udelay(voltage->delay); |
115 | } | 115 | } |
116 | } else if (voltage->type == VOLTAGE_VDDC) | 116 | } else if (voltage->type == VOLTAGE_VDDC) |
117 | radeon_atom_set_voltage(rdev, voltage->vddc_id); | 117 | radeon_atom_set_voltage(rdev, voltage->vddc_id, SET_VOLTAGE_TYPE_ASIC_VDDC); |
118 | 118 | ||
119 | dyn_pwrmgt_sclk_length = RREG32_PLL(DYN_PWRMGT_SCLK_LENGTH); | 119 | dyn_pwrmgt_sclk_length = RREG32_PLL(DYN_PWRMGT_SCLK_LENGTH); |
120 | dyn_pwrmgt_sclk_length &= ~REDUCED_POWER_SCLK_HILEN(0xf); | 120 | dyn_pwrmgt_sclk_length &= ~REDUCED_POWER_SCLK_HILEN(0xf); |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 4faa2e56bef2..ef8a5babe9f7 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -106,7 +106,7 @@ void rv770_pm_misc(struct radeon_device *rdev) | |||
106 | 106 | ||
107 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { | 107 | if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { |
108 | if (voltage->voltage != rdev->pm.current_vddc) { | 108 | if (voltage->voltage != rdev->pm.current_vddc) { |
109 | radeon_atom_set_voltage(rdev, voltage->voltage); | 109 | radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); |
110 | rdev->pm.current_vddc = voltage->voltage; | 110 | rdev->pm.current_vddc = voltage->voltage; |
111 | DRM_DEBUG("Setting: v: %d\n", voltage->voltage); | 111 | DRM_DEBUG("Setting: v: %d\n", voltage->voltage); |
112 | } | 112 | } |