Commit da7e29bd authored by Imre Deak's avatar Imre Deak Committed by Daniel Vetter

drm/i915: use drm_i915_private everywhere in the power domain api

The power domains framework is internal to the i915 driver, so pass
drm_i915_private instead of drm_device to its functions.

Also remove a dangling intel_set_power_well() declaration.

No functional change.
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 7e696e4c
...@@ -1325,7 +1325,7 @@ static int i915_load_modeset_init(struct drm_device *dev) ...@@ -1325,7 +1325,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
if (ret) if (ret)
goto cleanup_gem_stolen; goto cleanup_gem_stolen;
intel_power_domains_init_hw(dev); intel_power_domains_init_hw(dev_priv);
/* Important: The output setup functions called by modeset_init need /* Important: The output setup functions called by modeset_init need
* working irqs for e.g. gmbus and dp aux transfers. */ * working irqs for e.g. gmbus and dp aux transfers. */
...@@ -1343,7 +1343,7 @@ static int i915_load_modeset_init(struct drm_device *dev) ...@@ -1343,7 +1343,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
/* FIXME: do pre/post-mode set stuff in core KMS code */ /* FIXME: do pre/post-mode set stuff in core KMS code */
dev->vblank_disable_allowed = true; dev->vblank_disable_allowed = true;
if (INTEL_INFO(dev)->num_pipes == 0) { if (INTEL_INFO(dev)->num_pipes == 0) {
intel_display_power_put(dev, POWER_DOMAIN_VGA); intel_display_power_put(dev_priv, POWER_DOMAIN_VGA);
return 0; return 0;
} }
...@@ -1381,7 +1381,7 @@ static int i915_load_modeset_init(struct drm_device *dev) ...@@ -1381,7 +1381,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
WARN_ON(dev_priv->mm.aliasing_ppgtt); WARN_ON(dev_priv->mm.aliasing_ppgtt);
drm_mm_takedown(&dev_priv->gtt.base.mm); drm_mm_takedown(&dev_priv->gtt.base.mm);
cleanup_power: cleanup_power:
intel_display_power_put(dev, POWER_DOMAIN_VGA); intel_display_power_put(dev_priv, POWER_DOMAIN_VGA);
drm_irq_uninstall(dev); drm_irq_uninstall(dev);
cleanup_gem_stolen: cleanup_gem_stolen:
i915_gem_cleanup_stolen(dev); i915_gem_cleanup_stolen(dev);
...@@ -1702,7 +1702,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) ...@@ -1702,7 +1702,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
goto out_gem_unload; goto out_gem_unload;
} }
intel_power_domains_init(dev); intel_power_domains_init(dev_priv);
if (drm_core_check_feature(dev, DRIVER_MODESET)) { if (drm_core_check_feature(dev, DRIVER_MODESET)) {
ret = i915_load_modeset_init(dev); ret = i915_load_modeset_init(dev);
...@@ -1731,7 +1731,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) ...@@ -1731,7 +1731,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
return 0; return 0;
out_power_well: out_power_well:
intel_power_domains_remove(dev); intel_power_domains_remove(dev_priv);
drm_vblank_cleanup(dev); drm_vblank_cleanup(dev);
out_gem_unload: out_gem_unload:
if (dev_priv->mm.inactive_shrinker.scan_objects) if (dev_priv->mm.inactive_shrinker.scan_objects)
...@@ -1781,8 +1781,8 @@ int i915_driver_unload(struct drm_device *dev) ...@@ -1781,8 +1781,8 @@ int i915_driver_unload(struct drm_device *dev)
/* The i915.ko module is still not prepared to be loaded when /* The i915.ko module is still not prepared to be loaded when
* the power well is not enabled, so just enable it in case * the power well is not enabled, so just enable it in case
* we're going to unload/reload. */ * we're going to unload/reload. */
intel_display_set_init_power(dev, true); intel_display_set_init_power(dev_priv, true);
intel_power_domains_remove(dev); intel_power_domains_remove(dev_priv);
i915_teardown_sysfs(dev); i915_teardown_sysfs(dev);
......
...@@ -434,7 +434,7 @@ static int i915_drm_freeze(struct drm_device *dev) ...@@ -434,7 +434,7 @@ static int i915_drm_freeze(struct drm_device *dev)
/* We do a lot of poking in a lot of registers, make sure they work /* We do a lot of poking in a lot of registers, make sure they work
* properly. */ * properly. */
hsw_disable_package_c8(dev_priv); hsw_disable_package_c8(dev_priv);
intel_display_set_init_power(dev, true); intel_display_set_init_power(dev_priv, true);
drm_kms_helper_poll_disable(dev); drm_kms_helper_poll_disable(dev);
...@@ -556,7 +556,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) ...@@ -556,7 +556,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings)
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
} }
intel_power_domains_init_hw(dev); intel_power_domains_init_hw(dev_priv);
i915_restore_state(dev); i915_restore_state(dev);
intel_opregion_setup(dev); intel_opregion_setup(dev);
......
...@@ -1024,9 +1024,9 @@ struct i915_power_well { ...@@ -1024,9 +1024,9 @@ struct i915_power_well {
int count; int count;
unsigned long domains; unsigned long domains;
void *data; void *data;
void (*set)(struct drm_device *dev, struct i915_power_well *power_well, void (*set)(struct drm_i915_private *dev_priv, struct i915_power_well *power_well,
bool enable); bool enable);
bool (*is_enabled)(struct drm_device *dev, bool (*is_enabled)(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well); struct i915_power_well *power_well);
}; };
......
...@@ -1122,7 +1122,7 @@ void assert_pipe(struct drm_i915_private *dev_priv, ...@@ -1122,7 +1122,7 @@ void assert_pipe(struct drm_i915_private *dev_priv,
if (pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) if (pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE)
state = true; state = true;
if (!intel_display_power_enabled(dev_priv->dev, if (!intel_display_power_enabled(dev_priv,
POWER_DOMAIN_TRANSCODER(cpu_transcoder))) { POWER_DOMAIN_TRANSCODER(cpu_transcoder))) {
cur_state = false; cur_state = false;
} else { } else {
...@@ -6863,23 +6863,23 @@ static unsigned long get_pipe_power_domains(struct drm_device *dev, ...@@ -6863,23 +6863,23 @@ static unsigned long get_pipe_power_domains(struct drm_device *dev,
return mask; return mask;
} }
void intel_display_set_init_power(struct drm_device *dev, bool enable) void intel_display_set_init_power(struct drm_i915_private *dev_priv,
bool enable)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
if (dev_priv->power_domains.init_power_on == enable) if (dev_priv->power_domains.init_power_on == enable)
return; return;
if (enable) if (enable)
intel_display_power_get(dev, POWER_DOMAIN_INIT); intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
else else
intel_display_power_put(dev, POWER_DOMAIN_INIT); intel_display_power_put(dev_priv, POWER_DOMAIN_INIT);
dev_priv->power_domains.init_power_on = enable; dev_priv->power_domains.init_power_on = enable;
} }
static void modeset_update_crtc_power_domains(struct drm_device *dev) static void modeset_update_crtc_power_domains(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
unsigned long pipe_domains[I915_MAX_PIPES] = { 0, }; unsigned long pipe_domains[I915_MAX_PIPES] = { 0, };
struct intel_crtc *crtc; struct intel_crtc *crtc;
...@@ -6898,19 +6898,19 @@ static void modeset_update_crtc_power_domains(struct drm_device *dev) ...@@ -6898,19 +6898,19 @@ static void modeset_update_crtc_power_domains(struct drm_device *dev)
crtc->config.pch_pfit.enabled); crtc->config.pch_pfit.enabled);
for_each_power_domain(domain, pipe_domains[crtc->pipe]) for_each_power_domain(domain, pipe_domains[crtc->pipe])
intel_display_power_get(dev, domain); intel_display_power_get(dev_priv, domain);
} }
list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) { list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) {
enum intel_display_power_domain domain; enum intel_display_power_domain domain;
for_each_power_domain(domain, crtc->enabled_power_domains) for_each_power_domain(domain, crtc->enabled_power_domains)
intel_display_power_put(dev, domain); intel_display_power_put(dev_priv, domain);
crtc->enabled_power_domains = pipe_domains[crtc->pipe]; crtc->enabled_power_domains = pipe_domains[crtc->pipe];
} }
intel_display_set_init_power(dev, false); intel_display_set_init_power(dev_priv, false);
} }
static void haswell_modeset_global_resources(struct drm_device *dev) static void haswell_modeset_global_resources(struct drm_device *dev)
...@@ -6991,7 +6991,7 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc, ...@@ -6991,7 +6991,7 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
pipe_config->cpu_transcoder = TRANSCODER_EDP; pipe_config->cpu_transcoder = TRANSCODER_EDP;
} }
if (!intel_display_power_enabled(dev, if (!intel_display_power_enabled(dev_priv,
POWER_DOMAIN_TRANSCODER(pipe_config->cpu_transcoder))) POWER_DOMAIN_TRANSCODER(pipe_config->cpu_transcoder)))
return false; return false;
...@@ -7019,7 +7019,7 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc, ...@@ -7019,7 +7019,7 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
intel_get_pipe_timings(crtc, pipe_config); intel_get_pipe_timings(crtc, pipe_config);
pfit_domain = POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe); pfit_domain = POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe);
if (intel_display_power_enabled(dev, pfit_domain)) if (intel_display_power_enabled(dev_priv, pfit_domain))
ironlake_get_pfit_config(crtc, pipe_config); ironlake_get_pfit_config(crtc, pipe_config);
if (IS_HASWELL(dev)) if (IS_HASWELL(dev))
...@@ -11595,7 +11595,8 @@ intel_display_capture_error_state(struct drm_device *dev) ...@@ -11595,7 +11595,8 @@ intel_display_capture_error_state(struct drm_device *dev)
for_each_pipe(i) { for_each_pipe(i) {
error->pipe[i].power_domain_on = error->pipe[i].power_domain_on =
intel_display_power_enabled_sw(dev, POWER_DOMAIN_PIPE(i)); intel_display_power_enabled_sw(dev_priv,
POWER_DOMAIN_PIPE(i));
if (!error->pipe[i].power_domain_on) if (!error->pipe[i].power_domain_on)
continue; continue;
...@@ -11633,7 +11634,7 @@ intel_display_capture_error_state(struct drm_device *dev) ...@@ -11633,7 +11634,7 @@ intel_display_capture_error_state(struct drm_device *dev)
enum transcoder cpu_transcoder = transcoders[i]; enum transcoder cpu_transcoder = transcoders[i];
error->transcoder[i].power_domain_on = error->transcoder[i].power_domain_on =
intel_display_power_enabled_sw(dev, intel_display_power_enabled_sw(dev_priv,
POWER_DOMAIN_TRANSCODER(cpu_transcoder)); POWER_DOMAIN_TRANSCODER(cpu_transcoder));
if (!error->transcoder[i].power_domain_on) if (!error->transcoder[i].power_domain_on)
continue; continue;
......
...@@ -732,7 +732,7 @@ ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config, ...@@ -732,7 +732,7 @@ ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config,
bool intel_crtc_active(struct drm_crtc *crtc); bool intel_crtc_active(struct drm_crtc *crtc);
void hsw_enable_ips(struct intel_crtc *crtc); void hsw_enable_ips(struct intel_crtc *crtc);
void hsw_disable_ips(struct intel_crtc *crtc); void hsw_disable_ips(struct intel_crtc *crtc);
void intel_display_set_init_power(struct drm_device *dev, bool enable); void intel_display_set_init_power(struct drm_i915_private *dev, bool enable);
int valleyview_get_vco(struct drm_i915_private *dev_priv); int valleyview_get_vco(struct drm_i915_private *dev_priv);
void intel_mode_from_pipe_config(struct drm_display_mode *mode, void intel_mode_from_pipe_config(struct drm_display_mode *mode,
struct intel_crtc_config *pipe_config); struct intel_crtc_config *pipe_config);
...@@ -871,18 +871,17 @@ bool intel_fbc_enabled(struct drm_device *dev); ...@@ -871,18 +871,17 @@ bool intel_fbc_enabled(struct drm_device *dev);
void intel_update_fbc(struct drm_device *dev); void intel_update_fbc(struct drm_device *dev);
void intel_gpu_ips_init(struct drm_i915_private *dev_priv); void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
void intel_gpu_ips_teardown(void); void intel_gpu_ips_teardown(void);
int intel_power_domains_init(struct drm_device *dev); int intel_power_domains_init(struct drm_i915_private *);
void intel_power_domains_remove(struct drm_device *dev); void intel_power_domains_remove(struct drm_i915_private *);
bool intel_display_power_enabled(struct drm_device *dev, bool intel_display_power_enabled(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain); enum intel_display_power_domain domain);
bool intel_display_power_enabled_sw(struct drm_device *dev, bool intel_display_power_enabled_sw(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain); enum intel_display_power_domain domain);
void intel_display_power_get(struct drm_device *dev, void intel_display_power_get(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain); enum intel_display_power_domain domain);
void intel_display_power_put(struct drm_device *dev, void intel_display_power_put(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain); enum intel_display_power_domain domain);
void intel_power_domains_init_hw(struct drm_device *dev); void intel_power_domains_init_hw(struct drm_i915_private *dev_priv);
void intel_set_power_well(struct drm_device *dev, bool enable);
void intel_enable_gt_powersave(struct drm_device *dev); void intel_enable_gt_powersave(struct drm_device *dev);
void intel_disable_gt_powersave(struct drm_device *dev); void intel_disable_gt_powersave(struct drm_device *dev);
void ironlake_teardown_rc6(struct drm_device *dev); void ironlake_teardown_rc6(struct drm_device *dev);
......
...@@ -5205,19 +5205,16 @@ void intel_suspend_hw(struct drm_device *dev) ...@@ -5205,19 +5205,16 @@ void intel_suspend_hw(struct drm_device *dev)
* enable it, so check if it's enabled and also check if we've requested it to * enable it, so check if it's enabled and also check if we've requested it to
* be enabled. * be enabled.
*/ */
static bool hsw_power_well_enabled(struct drm_device *dev, static bool hsw_power_well_enabled(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well) struct i915_power_well *power_well)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
return I915_READ(HSW_PWR_WELL_DRIVER) == return I915_READ(HSW_PWR_WELL_DRIVER) ==
(HSW_PWR_WELL_ENABLE_REQUEST | HSW_PWR_WELL_STATE_ENABLED); (HSW_PWR_WELL_ENABLE_REQUEST | HSW_PWR_WELL_STATE_ENABLED);
} }
bool intel_display_power_enabled_sw(struct drm_device *dev, bool intel_display_power_enabled_sw(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain) enum intel_display_power_domain domain)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains; struct i915_power_domains *power_domains;
power_domains = &dev_priv->power_domains; power_domains = &dev_priv->power_domains;
...@@ -5225,10 +5222,9 @@ bool intel_display_power_enabled_sw(struct drm_device *dev, ...@@ -5225,10 +5222,9 @@ bool intel_display_power_enabled_sw(struct drm_device *dev,
return power_domains->domain_use_count[domain]; return power_domains->domain_use_count[domain];
} }
bool intel_display_power_enabled(struct drm_device *dev, bool intel_display_power_enabled(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain) enum intel_display_power_domain domain)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains; struct i915_power_domains *power_domains;
struct i915_power_well *power_well; struct i915_power_well *power_well;
bool is_enabled; bool is_enabled;
...@@ -5243,7 +5239,7 @@ bool intel_display_power_enabled(struct drm_device *dev, ...@@ -5243,7 +5239,7 @@ bool intel_display_power_enabled(struct drm_device *dev,
if (power_well->always_on) if (power_well->always_on)
continue; continue;
if (!power_well->is_enabled(dev, power_well)) { if (!power_well->is_enabled(dev_priv, power_well)) {
is_enabled = false; is_enabled = false;
break; break;
} }
...@@ -5309,10 +5305,9 @@ static void hsw_power_well_post_disable(struct drm_i915_private *dev_priv) ...@@ -5309,10 +5305,9 @@ static void hsw_power_well_post_disable(struct drm_i915_private *dev_priv)
spin_unlock_irqrestore(&dev->vbl_lock, irqflags); spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
} }
static void hsw_set_power_well(struct drm_device *dev, static void hsw_set_power_well(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well, bool enable) struct i915_power_well *power_well, bool enable)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
bool is_enabled, enable_requested; bool is_enabled, enable_requested;
uint32_t tmp; uint32_t tmp;
...@@ -5346,35 +5341,30 @@ static void hsw_set_power_well(struct drm_device *dev, ...@@ -5346,35 +5341,30 @@ static void hsw_set_power_well(struct drm_device *dev,
} }
} }
static void __intel_power_well_get(struct drm_device *dev, static void __intel_power_well_get(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well) struct i915_power_well *power_well)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
if (!power_well->count++ && power_well->set) { if (!power_well->count++ && power_well->set) {
hsw_disable_package_c8(dev_priv); hsw_disable_package_c8(dev_priv);
power_well->set(dev, power_well, true); power_well->set(dev_priv, power_well, true);
} }
} }
static void __intel_power_well_put(struct drm_device *dev, static void __intel_power_well_put(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well) struct i915_power_well *power_well)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
WARN_ON(!power_well->count); WARN_ON(!power_well->count);
if (!--power_well->count && power_well->set && if (!--power_well->count && power_well->set &&
i915.disable_power_well) { i915.disable_power_well) {
power_well->set(dev, power_well, false); power_well->set(dev_priv, power_well, false);
hsw_enable_package_c8(dev_priv); hsw_enable_package_c8(dev_priv);
} }
} }
void intel_display_power_get(struct drm_device *dev, void intel_display_power_get(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain) enum intel_display_power_domain domain)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains; struct i915_power_domains *power_domains;
struct i915_power_well *power_well; struct i915_power_well *power_well;
int i; int i;
...@@ -5384,17 +5374,16 @@ void intel_display_power_get(struct drm_device *dev, ...@@ -5384,17 +5374,16 @@ void intel_display_power_get(struct drm_device *dev,
mutex_lock(&power_domains->lock); mutex_lock(&power_domains->lock);
for_each_power_well(i, power_well, BIT(domain), power_domains) for_each_power_well(i, power_well, BIT(domain), power_domains)
__intel_power_well_get(dev, power_well); __intel_power_well_get(dev_priv, power_well);
power_domains->domain_use_count[domain]++; power_domains->domain_use_count[domain]++;
mutex_unlock(&power_domains->lock); mutex_unlock(&power_domains->lock);
} }
void intel_display_power_put(struct drm_device *dev, void intel_display_power_put(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain) enum intel_display_power_domain domain)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains; struct i915_power_domains *power_domains;
struct i915_power_well *power_well; struct i915_power_well *power_well;
int i; int i;
...@@ -5407,7 +5396,7 @@ void intel_display_power_put(struct drm_device *dev, ...@@ -5407,7 +5396,7 @@ void intel_display_power_put(struct drm_device *dev,
power_domains->domain_use_count[domain]--; power_domains->domain_use_count[domain]--;
for_each_power_well_rev(i, power_well, BIT(domain), power_domains) for_each_power_well_rev(i, power_well, BIT(domain), power_domains)
__intel_power_well_put(dev, power_well); __intel_power_well_put(dev_priv, power_well);
mutex_unlock(&power_domains->lock); mutex_unlock(&power_domains->lock);
} }
...@@ -5424,7 +5413,7 @@ void i915_request_power_well(void) ...@@ -5424,7 +5413,7 @@ void i915_request_power_well(void)
dev_priv = container_of(hsw_pwr, struct drm_i915_private, dev_priv = container_of(hsw_pwr, struct drm_i915_private,
power_domains); power_domains);
intel_display_power_get(dev_priv->dev, POWER_DOMAIN_AUDIO); intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO);
} }
EXPORT_SYMBOL_GPL(i915_request_power_well); EXPORT_SYMBOL_GPL(i915_request_power_well);
...@@ -5438,7 +5427,7 @@ void i915_release_power_well(void) ...@@ -5438,7 +5427,7 @@ void i915_release_power_well(void)
dev_priv = container_of(hsw_pwr, struct drm_i915_private, dev_priv = container_of(hsw_pwr, struct drm_i915_private,
power_domains); power_domains);
intel_display_power_put(dev_priv->dev, POWER_DOMAIN_AUDIO); intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO);
} }
EXPORT_SYMBOL_GPL(i915_release_power_well); EXPORT_SYMBOL_GPL(i915_release_power_well);
...@@ -5483,9 +5472,8 @@ static struct i915_power_well bdw_power_wells[] = { ...@@ -5483,9 +5472,8 @@ static struct i915_power_well bdw_power_wells[] = {
(power_domains)->power_well_count = ARRAY_SIZE(__power_wells); \ (power_domains)->power_well_count = ARRAY_SIZE(__power_wells); \
}) })
int intel_power_domains_init(struct drm_device *dev) int intel_power_domains_init(struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains = &dev_priv->power_domains; struct i915_power_domains *power_domains = &dev_priv->power_domains;
mutex_init(&power_domains->lock); mutex_init(&power_domains->lock);
...@@ -5494,10 +5482,10 @@ int intel_power_domains_init(struct drm_device *dev) ...@@ -5494,10 +5482,10 @@ int intel_power_domains_init(struct drm_device *dev)
* The enabling order will be from lower to higher indexed wells, * The enabling order will be from lower to higher indexed wells,
* the disabling order is reversed. * the disabling order is reversed.
*/ */
if (IS_HASWELL(dev)) { if (IS_HASWELL(dev_priv->dev)) {
set_power_wells(power_domains, hsw_power_wells); set_power_wells(power_domains, hsw_power_wells);
hsw_pwr = power_domains; hsw_pwr = power_domains;
} else if (IS_BROADWELL(dev)) { } else if (IS_BROADWELL(dev_priv->dev)) {
set_power_wells(power_domains, bdw_power_wells); set_power_wells(power_domains, bdw_power_wells);
hsw_pwr = power_domains; hsw_pwr = power_domains;
} else { } else {
...@@ -5507,14 +5495,13 @@ int intel_power_domains_init(struct drm_device *dev) ...@@ -5507,14 +5495,13 @@ int intel_power_domains_init(struct drm_device *dev)
return 0; return 0;
} }
void intel_power_domains_remove(struct drm_device *dev) void intel_power_domains_remove(struct drm_i915_private *dev_priv)
{ {
hsw_pwr = NULL; hsw_pwr = NULL;
} }
static void intel_power_domains_resume(struct drm_device *dev) static void intel_power_domains_resume(struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
struct i915_power_domains *power_domains = &dev_priv->power_domains; struct i915_power_domains *power_domains = &dev_priv->power_domains;
struct i915_power_well *power_well; struct i915_power_well *power_well;
int i; int i;
...@@ -5522,7 +5509,7 @@ static void intel_power_domains_resume(struct drm_device *dev) ...@@ -5522,7 +5509,7 @@ static void intel_power_domains_resume(struct drm_device *dev)
mutex_lock(&power_domains->lock); mutex_lock(&power_domains->lock);
for_each_power_well(i, power_well, POWER_DOMAIN_MASK, power_domains) { for_each_power_well(i, power_well, POWER_DOMAIN_MASK, power_domains) {
if (power_well->set) if (power_well->set)
power_well->set(dev, power_well, power_well->count > 0); power_well->set(dev_priv, power_well, power_well->count > 0);
} }
mutex_unlock(&power_domains->lock); mutex_unlock(&power_domains->lock);
} }
...@@ -5533,15 +5520,13 @@ static void intel_power_domains_resume(struct drm_device *dev) ...@@ -5533,15 +5520,13 @@ static void intel_power_domains_resume(struct drm_device *dev)
* to be enabled, and it will only be disabled if none of the registers is * to be enabled, and it will only be disabled if none of the registers is
* requesting it to be enabled. * requesting it to be enabled.
*/ */
void intel_power_domains_init_hw(struct drm_device *dev) void intel_power_domains_init_hw(struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = dev->dev_private;
/* For now, we need the power well to be always enabled. */ /* For now, we need the power well to be always enabled. */
intel_display_set_init_power(dev, true); intel_display_set_init_power(dev_priv, true);
intel_power_domains_resume(dev); intel_power_domains_resume(dev_priv);
if (!(IS_HASWELL(dev) || IS_BROADWELL(dev))) if (!(IS_HASWELL(dev_priv->dev) || IS_BROADWELL(dev_priv->dev)))
return; return;
/* We're taking over the BIOS, so clear any requests made by it since /* We're taking over the BIOS, so clear any requests made by it since
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment