aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_runtime_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c52
1 files changed, 38 insertions, 14 deletions
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 9f44a2b0113a..bcdf04847b49 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -872,14 +872,14 @@ static void i830_pipes_power_well_sync_hw(struct drm_i915_private *dev_priv,
872static void vlv_set_power_well(struct drm_i915_private *dev_priv, 872static void vlv_set_power_well(struct drm_i915_private *dev_priv,
873 struct i915_power_well *power_well, bool enable) 873 struct i915_power_well *power_well, bool enable)
874{ 874{
875 enum i915_power_well_id power_well_id = power_well->desc->id; 875 int pw_idx = power_well->desc->vlv.idx;
876 u32 mask; 876 u32 mask;
877 u32 state; 877 u32 state;
878 u32 ctrl; 878 u32 ctrl;
879 879
880 mask = PUNIT_PWRGT_MASK(power_well_id); 880 mask = PUNIT_PWRGT_MASK(pw_idx);
881 state = enable ? PUNIT_PWRGT_PWR_ON(power_well_id) : 881 state = enable ? PUNIT_PWRGT_PWR_ON(pw_idx) :
882 PUNIT_PWRGT_PWR_GATE(power_well_id); 882 PUNIT_PWRGT_PWR_GATE(pw_idx);
883 883
884 mutex_lock(&dev_priv->pcu_lock); 884 mutex_lock(&dev_priv->pcu_lock);
885 885
@@ -920,14 +920,14 @@ static void vlv_power_well_disable(struct drm_i915_private *dev_priv,
920static bool vlv_power_well_enabled(struct drm_i915_private *dev_priv, 920static bool vlv_power_well_enabled(struct drm_i915_private *dev_priv,
921 struct i915_power_well *power_well) 921 struct i915_power_well *power_well)
922{ 922{
923 enum i915_power_well_id power_well_id = power_well->desc->id; 923 int pw_idx = power_well->desc->vlv.idx;
924 bool enabled = false; 924 bool enabled = false;
925 u32 mask; 925 u32 mask;
926 u32 state; 926 u32 state;
927 u32 ctrl; 927 u32 ctrl;
928 928
929 mask = PUNIT_PWRGT_MASK(power_well_id); 929 mask = PUNIT_PWRGT_MASK(pw_idx);
930 ctrl = PUNIT_PWRGT_PWR_ON(power_well_id); 930 ctrl = PUNIT_PWRGT_PWR_ON(pw_idx);
931 931
932 mutex_lock(&dev_priv->pcu_lock); 932 mutex_lock(&dev_priv->pcu_lock);
933 933
@@ -936,8 +936,8 @@ static bool vlv_power_well_enabled(struct drm_i915_private *dev_priv,
936 * We only ever set the power-on and power-gate states, anything 936 * We only ever set the power-on and power-gate states, anything
937 * else is unexpected. 937 * else is unexpected.
938 */ 938 */
939 WARN_ON(state != PUNIT_PWRGT_PWR_ON(power_well_id) && 939 WARN_ON(state != PUNIT_PWRGT_PWR_ON(pw_idx) &&
940 state != PUNIT_PWRGT_PWR_GATE(power_well_id)); 940 state != PUNIT_PWRGT_PWR_GATE(pw_idx));
941 if (state == ctrl) 941 if (state == ctrl)
942 enabled = true; 942 enabled = true;
943 943
@@ -2179,8 +2179,11 @@ static const struct i915_power_well_desc vlv_power_wells[] = {
2179 { 2179 {
2180 .name = "display", 2180 .name = "display",
2181 .domains = VLV_DISPLAY_POWER_DOMAINS, 2181 .domains = VLV_DISPLAY_POWER_DOMAINS,
2182 .id = PUNIT_POWER_WELL_DISP2D,
2183 .ops = &vlv_display_power_well_ops, 2182 .ops = &vlv_display_power_well_ops,
2183 .id = PUNIT_POWER_WELL_DISP2D,
2184 {
2185 .vlv.idx = PUNIT_PWGT_IDX_DISP2D,
2186 },
2184 }, 2187 },
2185 { 2188 {
2186 .name = "dpio-tx-b-01", 2189 .name = "dpio-tx-b-01",
@@ -2190,6 +2193,9 @@ static const struct i915_power_well_desc vlv_power_wells[] = {
2190 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS, 2193 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
2191 .ops = &vlv_dpio_power_well_ops, 2194 .ops = &vlv_dpio_power_well_ops,
2192 .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_01, 2195 .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_01,
2196 {
2197 .vlv.idx = PUNIT_PWGT_IDX_DPIO_TX_B_LANES_01,
2198 },
2193 }, 2199 },
2194 { 2200 {
2195 .name = "dpio-tx-b-23", 2201 .name = "dpio-tx-b-23",
@@ -2199,6 +2205,9 @@ static const struct i915_power_well_desc vlv_power_wells[] = {
2199 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS, 2205 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
2200 .ops = &vlv_dpio_power_well_ops, 2206 .ops = &vlv_dpio_power_well_ops,
2201 .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_23, 2207 .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_23,
2208 {
2209 .vlv.idx = PUNIT_PWGT_IDX_DPIO_TX_B_LANES_23,
2210 },
2202 }, 2211 },
2203 { 2212 {
2204 .name = "dpio-tx-c-01", 2213 .name = "dpio-tx-c-01",
@@ -2208,6 +2217,9 @@ static const struct i915_power_well_desc vlv_power_wells[] = {
2208 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS, 2217 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
2209 .ops = &vlv_dpio_power_well_ops, 2218 .ops = &vlv_dpio_power_well_ops,
2210 .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_01, 2219 .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_01,
2220 {
2221 .vlv.idx = PUNIT_PWGT_IDX_DPIO_TX_C_LANES_01,
2222 },
2211 }, 2223 },
2212 { 2224 {
2213 .name = "dpio-tx-c-23", 2225 .name = "dpio-tx-c-23",
@@ -2217,12 +2229,18 @@ static const struct i915_power_well_desc vlv_power_wells[] = {
2217 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS, 2229 VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
2218 .ops = &vlv_dpio_power_well_ops, 2230 .ops = &vlv_dpio_power_well_ops,
2219 .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_23, 2231 .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_23,
2232 {
2233 .vlv.idx = PUNIT_PWGT_IDX_DPIO_TX_C_LANES_23,
2234 },
2220 }, 2235 },
2221 { 2236 {
2222 .name = "dpio-common", 2237 .name = "dpio-common",
2223 .domains = VLV_DPIO_CMN_BC_POWER_DOMAINS, 2238 .domains = VLV_DPIO_CMN_BC_POWER_DOMAINS,
2224 .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
2225 .ops = &vlv_dpio_cmn_power_well_ops, 2239 .ops = &vlv_dpio_cmn_power_well_ops,
2240 .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
2241 {
2242 .vlv.idx = PUNIT_PWGT_IDX_DPIO_CMN_BC,
2243 },
2226 }, 2244 },
2227}; 2245};
2228 2246
@@ -2242,20 +2260,26 @@ static const struct i915_power_well_desc chv_power_wells[] = {
2242 * required for any pipe to work. 2260 * required for any pipe to work.
2243 */ 2261 */
2244 .domains = CHV_DISPLAY_POWER_DOMAINS, 2262 .domains = CHV_DISPLAY_POWER_DOMAINS,
2245 .id = CHV_DISP_PW_PIPE_A,
2246 .ops = &chv_pipe_power_well_ops, 2263 .ops = &chv_pipe_power_well_ops,
2264 .id = CHV_DISP_PW_PIPE_A,
2247 }, 2265 },
2248 { 2266 {
2249 .name = "dpio-common-bc", 2267 .name = "dpio-common-bc",
2250 .domains = CHV_DPIO_CMN_BC_POWER_DOMAINS, 2268 .domains = CHV_DPIO_CMN_BC_POWER_DOMAINS,
2251 .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
2252 .ops = &chv_dpio_cmn_power_well_ops, 2269 .ops = &chv_dpio_cmn_power_well_ops,
2270 .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
2271 {
2272 .vlv.idx = PUNIT_PWGT_IDX_DPIO_CMN_BC,
2273 },
2253 }, 2274 },
2254 { 2275 {
2255 .name = "dpio-common-d", 2276 .name = "dpio-common-d",
2256 .domains = CHV_DPIO_CMN_D_POWER_DOMAINS, 2277 .domains = CHV_DPIO_CMN_D_POWER_DOMAINS,
2257 .id = PUNIT_POWER_WELL_DPIO_CMN_D,
2258 .ops = &chv_dpio_cmn_power_well_ops, 2278 .ops = &chv_dpio_cmn_power_well_ops,
2279 .id = PUNIT_POWER_WELL_DPIO_CMN_D,
2280 {
2281 .vlv.idx = PUNIT_PWGT_IDX_DPIO_CMN_D,
2282 },
2259 }, 2283 },
2260}; 2284};
2261 2285