diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_sysfs.c | 148 |
3 files changed, 69 insertions, 87 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 53f9535fb81e..c316034aeda3 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -1133,7 +1133,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv) | |||
1133 | /* Reveal our presence to userspace */ | 1133 | /* Reveal our presence to userspace */ |
1134 | if (drm_dev_register(dev, 0) == 0) { | 1134 | if (drm_dev_register(dev, 0) == 0) { |
1135 | i915_debugfs_register(dev_priv); | 1135 | i915_debugfs_register(dev_priv); |
1136 | i915_setup_sysfs(dev); | 1136 | i915_setup_sysfs(dev_priv); |
1137 | } else | 1137 | } else |
1138 | DRM_ERROR("Failed to register driver for userspace access!\n"); | 1138 | DRM_ERROR("Failed to register driver for userspace access!\n"); |
1139 | 1139 | ||
@@ -1170,7 +1170,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv) | |||
1170 | acpi_video_unregister(); | 1170 | acpi_video_unregister(); |
1171 | intel_opregion_unregister(dev_priv); | 1171 | intel_opregion_unregister(dev_priv); |
1172 | 1172 | ||
1173 | i915_teardown_sysfs(&dev_priv->drm); | 1173 | i915_teardown_sysfs(dev_priv); |
1174 | i915_debugfs_unregister(dev_priv); | 1174 | i915_debugfs_unregister(dev_priv); |
1175 | drm_dev_unregister(&dev_priv->drm); | 1175 | drm_dev_unregister(&dev_priv->drm); |
1176 | 1176 | ||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 79e67960ffc8..dd7d76a9e01b 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -3564,8 +3564,8 @@ extern int i915_save_state(struct drm_device *dev); | |||
3564 | extern int i915_restore_state(struct drm_device *dev); | 3564 | extern int i915_restore_state(struct drm_device *dev); |
3565 | 3565 | ||
3566 | /* i915_sysfs.c */ | 3566 | /* i915_sysfs.c */ |
3567 | void i915_setup_sysfs(struct drm_device *dev_priv); | 3567 | void i915_setup_sysfs(struct drm_i915_private *dev_priv); |
3568 | void i915_teardown_sysfs(struct drm_device *dev_priv); | 3568 | void i915_teardown_sysfs(struct drm_i915_private *dev_priv); |
3569 | 3569 | ||
3570 | /* intel_i2c.c */ | 3570 | /* intel_i2c.c */ |
3571 | extern int intel_setup_gmbus(struct drm_device *dev); | 3571 | extern int intel_setup_gmbus(struct drm_device *dev); |
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c index 05cb95bf2f4b..2d482f677f56 100644 --- a/drivers/gpu/drm/i915/i915_sysfs.c +++ b/drivers/gpu/drm/i915/i915_sysfs.c | |||
@@ -32,16 +32,16 @@ | |||
32 | #include "intel_drv.h" | 32 | #include "intel_drv.h" |
33 | #include "i915_drv.h" | 33 | #include "i915_drv.h" |
34 | 34 | ||
35 | static inline struct drm_minor *kdev_to_drm_minor(struct device *kdev) | 35 | static inline struct drm_i915_private *kdev_minor_to_i915(struct device *kdev) |
36 | { | 36 | { |
37 | return dev_get_drvdata(kdev); | 37 | struct drm_minor *minor = dev_get_drvdata(kdev); |
38 | return to_i915(minor->dev); | ||
38 | } | 39 | } |
39 | 40 | ||
40 | #ifdef CONFIG_PM | 41 | #ifdef CONFIG_PM |
41 | static u32 calc_residency(struct drm_device *dev, | 42 | static u32 calc_residency(struct drm_i915_private *dev_priv, |
42 | i915_reg_t reg) | 43 | i915_reg_t reg) |
43 | { | 44 | { |
44 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
45 | u64 raw_time; /* 32b value may overflow during fixed point math */ | 45 | u64 raw_time; /* 32b value may overflow during fixed point math */ |
46 | u64 units = 128ULL, div = 100000ULL; | 46 | u64 units = 128ULL, div = 100000ULL; |
47 | u32 ret; | 47 | u32 ret; |
@@ -52,13 +52,13 @@ static u32 calc_residency(struct drm_device *dev, | |||
52 | intel_runtime_pm_get(dev_priv); | 52 | intel_runtime_pm_get(dev_priv); |
53 | 53 | ||
54 | /* On VLV and CHV, residency time is in CZ units rather than 1.28us */ | 54 | /* On VLV and CHV, residency time is in CZ units rather than 1.28us */ |
55 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { | 55 | if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { |
56 | units = 1; | 56 | units = 1; |
57 | div = dev_priv->czclk_freq; | 57 | div = dev_priv->czclk_freq; |
58 | 58 | ||
59 | if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH) | 59 | if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH) |
60 | units <<= 8; | 60 | units <<= 8; |
61 | } else if (IS_BROXTON(dev)) { | 61 | } else if (IS_BROXTON(dev_priv)) { |
62 | units = 1; | 62 | units = 1; |
63 | div = 1200; /* 833.33ns */ | 63 | div = 1200; /* 833.33ns */ |
64 | } | 64 | } |
@@ -79,32 +79,32 @@ show_rc6_mask(struct device *kdev, struct device_attribute *attr, char *buf) | |||
79 | static ssize_t | 79 | static ssize_t |
80 | show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) | 80 | show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) |
81 | { | 81 | { |
82 | struct drm_minor *dminor = dev_get_drvdata(kdev); | 82 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
83 | u32 rc6_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6); | 83 | u32 rc6_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6); |
84 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); | 84 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); |
85 | } | 85 | } |
86 | 86 | ||
87 | static ssize_t | 87 | static ssize_t |
88 | show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) | 88 | show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) |
89 | { | 89 | { |
90 | struct drm_minor *dminor = kdev_to_drm_minor(kdev); | 90 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
91 | u32 rc6p_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6p); | 91 | u32 rc6p_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6p); |
92 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6p_residency); | 92 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6p_residency); |
93 | } | 93 | } |
94 | 94 | ||
95 | static ssize_t | 95 | static ssize_t |
96 | show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) | 96 | show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) |
97 | { | 97 | { |
98 | struct drm_minor *dminor = kdev_to_drm_minor(kdev); | 98 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
99 | u32 rc6pp_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6pp); | 99 | u32 rc6pp_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6pp); |
100 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6pp_residency); | 100 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6pp_residency); |
101 | } | 101 | } |
102 | 102 | ||
103 | static ssize_t | 103 | static ssize_t |
104 | show_media_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) | 104 | show_media_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) |
105 | { | 105 | { |
106 | struct drm_minor *dminor = dev_get_drvdata(kdev); | 106 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
107 | u32 rc6_residency = calc_residency(dminor->dev, VLV_GT_MEDIA_RC6); | 107 | u32 rc6_residency = calc_residency(dev_priv, VLV_GT_MEDIA_RC6); |
108 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); | 108 | return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); |
109 | } | 109 | } |
110 | 110 | ||
@@ -147,9 +147,9 @@ static struct attribute_group media_rc6_attr_group = { | |||
147 | }; | 147 | }; |
148 | #endif | 148 | #endif |
149 | 149 | ||
150 | static int l3_access_valid(struct drm_device *dev, loff_t offset) | 150 | static int l3_access_valid(struct drm_i915_private *dev_priv, loff_t offset) |
151 | { | 151 | { |
152 | if (!HAS_L3_DPF(dev)) | 152 | if (!HAS_L3_DPF(dev_priv)) |
153 | return -EPERM; | 153 | return -EPERM; |
154 | 154 | ||
155 | if (offset % 4 != 0) | 155 | if (offset % 4 != 0) |
@@ -167,15 +167,14 @@ i915_l3_read(struct file *filp, struct kobject *kobj, | |||
167 | loff_t offset, size_t count) | 167 | loff_t offset, size_t count) |
168 | { | 168 | { |
169 | struct device *kdev = kobj_to_dev(kobj); | 169 | struct device *kdev = kobj_to_dev(kobj); |
170 | struct drm_minor *dminor = kdev_to_drm_minor(kdev); | 170 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
171 | struct drm_device *dev = dminor->dev; | 171 | struct drm_device *dev = &dev_priv->drm; |
172 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
173 | int slice = (int)(uintptr_t)attr->private; | 172 | int slice = (int)(uintptr_t)attr->private; |
174 | int ret; | 173 | int ret; |
175 | 174 | ||
176 | count = round_down(count, 4); | 175 | count = round_down(count, 4); |
177 | 176 | ||
178 | ret = l3_access_valid(dev, offset); | 177 | ret = l3_access_valid(dev_priv, offset); |
179 | if (ret) | 178 | if (ret) |
180 | return ret; | 179 | return ret; |
181 | 180 | ||
@@ -203,18 +202,17 @@ i915_l3_write(struct file *filp, struct kobject *kobj, | |||
203 | loff_t offset, size_t count) | 202 | loff_t offset, size_t count) |
204 | { | 203 | { |
205 | struct device *kdev = kobj_to_dev(kobj); | 204 | struct device *kdev = kobj_to_dev(kobj); |
206 | struct drm_minor *dminor = kdev_to_drm_minor(kdev); | 205 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
207 | struct drm_device *dev = dminor->dev; | 206 | struct drm_device *dev = &dev_priv->drm; |
208 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
209 | struct i915_gem_context *ctx; | 207 | struct i915_gem_context *ctx; |
210 | u32 *temp = NULL; /* Just here to make handling failures easy */ | 208 | u32 *temp = NULL; /* Just here to make handling failures easy */ |
211 | int slice = (int)(uintptr_t)attr->private; | 209 | int slice = (int)(uintptr_t)attr->private; |
212 | int ret; | 210 | int ret; |
213 | 211 | ||
214 | if (!HAS_HW_CONTEXTS(dev)) | 212 | if (!HAS_HW_CONTEXTS(dev_priv)) |
215 | return -ENXIO; | 213 | return -ENXIO; |
216 | 214 | ||
217 | ret = l3_access_valid(dev, offset); | 215 | ret = l3_access_valid(dev_priv, offset); |
218 | if (ret) | 216 | if (ret) |
219 | return ret; | 217 | return ret; |
220 | 218 | ||
@@ -269,9 +267,7 @@ static struct bin_attribute dpf_attrs_1 = { | |||
269 | static ssize_t gt_act_freq_mhz_show(struct device *kdev, | 267 | static ssize_t gt_act_freq_mhz_show(struct device *kdev, |
270 | struct device_attribute *attr, char *buf) | 268 | struct device_attribute *attr, char *buf) |
271 | { | 269 | { |
272 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 270 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
273 | struct drm_device *dev = minor->dev; | ||
274 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
275 | int ret; | 271 | int ret; |
276 | 272 | ||
277 | intel_runtime_pm_get(dev_priv); | 273 | intel_runtime_pm_get(dev_priv); |
@@ -301,9 +297,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev, | |||
301 | static ssize_t gt_cur_freq_mhz_show(struct device *kdev, | 297 | static ssize_t gt_cur_freq_mhz_show(struct device *kdev, |
302 | struct device_attribute *attr, char *buf) | 298 | struct device_attribute *attr, char *buf) |
303 | { | 299 | { |
304 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 300 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
305 | struct drm_device *dev = minor->dev; | ||
306 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
307 | 301 | ||
308 | return snprintf(buf, PAGE_SIZE, "%d\n", | 302 | return snprintf(buf, PAGE_SIZE, "%d\n", |
309 | intel_gpu_freq(dev_priv, | 303 | intel_gpu_freq(dev_priv, |
@@ -312,8 +306,7 @@ static ssize_t gt_cur_freq_mhz_show(struct device *kdev, | |||
312 | 306 | ||
313 | static ssize_t gt_boost_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) | 307 | static ssize_t gt_boost_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) |
314 | { | 308 | { |
315 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 309 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
316 | struct drm_i915_private *dev_priv = to_i915(minor->dev); | ||
317 | 310 | ||
318 | return snprintf(buf, PAGE_SIZE, "%d\n", | 311 | return snprintf(buf, PAGE_SIZE, "%d\n", |
319 | intel_gpu_freq(dev_priv, | 312 | intel_gpu_freq(dev_priv, |
@@ -324,9 +317,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev, | |||
324 | struct device_attribute *attr, | 317 | struct device_attribute *attr, |
325 | const char *buf, size_t count) | 318 | const char *buf, size_t count) |
326 | { | 319 | { |
327 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 320 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
328 | struct drm_device *dev = minor->dev; | ||
329 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
330 | u32 val; | 321 | u32 val; |
331 | ssize_t ret; | 322 | ssize_t ret; |
332 | 323 | ||
@@ -349,9 +340,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev, | |||
349 | static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, | 340 | static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, |
350 | struct device_attribute *attr, char *buf) | 341 | struct device_attribute *attr, char *buf) |
351 | { | 342 | { |
352 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 343 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
353 | struct drm_device *dev = minor->dev; | ||
354 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
355 | 344 | ||
356 | return snprintf(buf, PAGE_SIZE, "%d\n", | 345 | return snprintf(buf, PAGE_SIZE, "%d\n", |
357 | intel_gpu_freq(dev_priv, | 346 | intel_gpu_freq(dev_priv, |
@@ -360,9 +349,7 @@ static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, | |||
360 | 349 | ||
361 | static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) | 350 | static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) |
362 | { | 351 | { |
363 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 352 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
364 | struct drm_device *dev = minor->dev; | ||
365 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
366 | 353 | ||
367 | return snprintf(buf, PAGE_SIZE, "%d\n", | 354 | return snprintf(buf, PAGE_SIZE, "%d\n", |
368 | intel_gpu_freq(dev_priv, | 355 | intel_gpu_freq(dev_priv, |
@@ -373,9 +360,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev, | |||
373 | struct device_attribute *attr, | 360 | struct device_attribute *attr, |
374 | const char *buf, size_t count) | 361 | const char *buf, size_t count) |
375 | { | 362 | { |
376 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 363 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
377 | struct drm_device *dev = minor->dev; | ||
378 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
379 | u32 val; | 364 | u32 val; |
380 | ssize_t ret; | 365 | ssize_t ret; |
381 | 366 | ||
@@ -421,9 +406,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev, | |||
421 | 406 | ||
422 | static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) | 407 | static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) |
423 | { | 408 | { |
424 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 409 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
425 | struct drm_device *dev = minor->dev; | ||
426 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
427 | 410 | ||
428 | return snprintf(buf, PAGE_SIZE, "%d\n", | 411 | return snprintf(buf, PAGE_SIZE, "%d\n", |
429 | intel_gpu_freq(dev_priv, | 412 | intel_gpu_freq(dev_priv, |
@@ -434,9 +417,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev, | |||
434 | struct device_attribute *attr, | 417 | struct device_attribute *attr, |
435 | const char *buf, size_t count) | 418 | const char *buf, size_t count) |
436 | { | 419 | { |
437 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 420 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
438 | struct drm_device *dev = minor->dev; | ||
439 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
440 | u32 val; | 421 | u32 val; |
441 | ssize_t ret; | 422 | ssize_t ret; |
442 | 423 | ||
@@ -493,9 +474,7 @@ static DEVICE_ATTR(gt_RPn_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); | |||
493 | /* For now we have a static number of RP states */ | 474 | /* For now we have a static number of RP states */ |
494 | static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) | 475 | static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) |
495 | { | 476 | { |
496 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 477 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
497 | struct drm_device *dev = minor->dev; | ||
498 | struct drm_i915_private *dev_priv = to_i915(dev); | ||
499 | u32 val; | 478 | u32 val; |
500 | 479 | ||
501 | if (attr == &dev_attr_gt_RP0_freq_mhz) | 480 | if (attr == &dev_attr_gt_RP0_freq_mhz) |
@@ -541,8 +520,8 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj, | |||
541 | { | 520 | { |
542 | 521 | ||
543 | struct device *kdev = kobj_to_dev(kobj); | 522 | struct device *kdev = kobj_to_dev(kobj); |
544 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 523 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
545 | struct drm_device *dev = minor->dev; | 524 | struct drm_device *dev = &dev_priv->drm; |
546 | struct i915_error_state_file_priv error_priv; | 525 | struct i915_error_state_file_priv error_priv; |
547 | struct drm_i915_error_state_buf error_str; | 526 | struct drm_i915_error_state_buf error_str; |
548 | ssize_t ret_count = 0; | 527 | ssize_t ret_count = 0; |
@@ -576,8 +555,8 @@ static ssize_t error_state_write(struct file *file, struct kobject *kobj, | |||
576 | loff_t off, size_t count) | 555 | loff_t off, size_t count) |
577 | { | 556 | { |
578 | struct device *kdev = kobj_to_dev(kobj); | 557 | struct device *kdev = kobj_to_dev(kobj); |
579 | struct drm_minor *minor = kdev_to_drm_minor(kdev); | 558 | struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev); |
580 | struct drm_device *dev = minor->dev; | 559 | struct drm_device *dev = &dev_priv->drm; |
581 | int ret; | 560 | int ret; |
582 | 561 | ||
583 | DRM_DEBUG_DRIVER("Resetting error state\n"); | 562 | DRM_DEBUG_DRIVER("Resetting error state\n"); |
@@ -600,37 +579,38 @@ static struct bin_attribute error_state_attr = { | |||
600 | .write = error_state_write, | 579 | .write = error_state_write, |
601 | }; | 580 | }; |
602 | 581 | ||
603 | void i915_setup_sysfs(struct drm_device *dev) | 582 | void i915_setup_sysfs(struct drm_i915_private *dev_priv) |
604 | { | 583 | { |
584 | struct device *kdev = dev_priv->drm.primary->kdev; | ||
605 | int ret; | 585 | int ret; |
606 | 586 | ||
607 | #ifdef CONFIG_PM | 587 | #ifdef CONFIG_PM |
608 | if (HAS_RC6(dev)) { | 588 | if (HAS_RC6(dev_priv)) { |
609 | ret = sysfs_merge_group(&dev->primary->kdev->kobj, | 589 | ret = sysfs_merge_group(&kdev->kobj, |
610 | &rc6_attr_group); | 590 | &rc6_attr_group); |
611 | if (ret) | 591 | if (ret) |
612 | DRM_ERROR("RC6 residency sysfs setup failed\n"); | 592 | DRM_ERROR("RC6 residency sysfs setup failed\n"); |
613 | } | 593 | } |
614 | if (HAS_RC6p(dev)) { | 594 | if (HAS_RC6p(dev_priv)) { |
615 | ret = sysfs_merge_group(&dev->primary->kdev->kobj, | 595 | ret = sysfs_merge_group(&kdev->kobj, |
616 | &rc6p_attr_group); | 596 | &rc6p_attr_group); |
617 | if (ret) | 597 | if (ret) |
618 | DRM_ERROR("RC6p residency sysfs setup failed\n"); | 598 | DRM_ERROR("RC6p residency sysfs setup failed\n"); |
619 | } | 599 | } |
620 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { | 600 | if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { |
621 | ret = sysfs_merge_group(&dev->primary->kdev->kobj, | 601 | ret = sysfs_merge_group(&kdev->kobj, |
622 | &media_rc6_attr_group); | 602 | &media_rc6_attr_group); |
623 | if (ret) | 603 | if (ret) |
624 | DRM_ERROR("Media RC6 residency sysfs setup failed\n"); | 604 | DRM_ERROR("Media RC6 residency sysfs setup failed\n"); |
625 | } | 605 | } |
626 | #endif | 606 | #endif |
627 | if (HAS_L3_DPF(dev)) { | 607 | if (HAS_L3_DPF(dev_priv)) { |
628 | ret = device_create_bin_file(dev->primary->kdev, &dpf_attrs); | 608 | ret = device_create_bin_file(kdev, &dpf_attrs); |
629 | if (ret) | 609 | if (ret) |
630 | DRM_ERROR("l3 parity sysfs setup failed\n"); | 610 | DRM_ERROR("l3 parity sysfs setup failed\n"); |
631 | 611 | ||
632 | if (NUM_L3_SLICES(dev) > 1) { | 612 | if (NUM_L3_SLICES(dev_priv) > 1) { |
633 | ret = device_create_bin_file(dev->primary->kdev, | 613 | ret = device_create_bin_file(kdev, |
634 | &dpf_attrs_1); | 614 | &dpf_attrs_1); |
635 | if (ret) | 615 | if (ret) |
636 | DRM_ERROR("l3 parity slice 1 setup failed\n"); | 616 | DRM_ERROR("l3 parity slice 1 setup failed\n"); |
@@ -638,30 +618,32 @@ void i915_setup_sysfs(struct drm_device *dev) | |||
638 | } | 618 | } |
639 | 619 | ||
640 | ret = 0; | 620 | ret = 0; |
641 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) | 621 | if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) |
642 | ret = sysfs_create_files(&dev->primary->kdev->kobj, vlv_attrs); | 622 | ret = sysfs_create_files(&kdev->kobj, vlv_attrs); |
643 | else if (INTEL_INFO(dev)->gen >= 6) | 623 | else if (INTEL_GEN(dev_priv) >= 6) |
644 | ret = sysfs_create_files(&dev->primary->kdev->kobj, gen6_attrs); | 624 | ret = sysfs_create_files(&kdev->kobj, gen6_attrs); |
645 | if (ret) | 625 | if (ret) |
646 | DRM_ERROR("RPS sysfs setup failed\n"); | 626 | DRM_ERROR("RPS sysfs setup failed\n"); |
647 | 627 | ||
648 | ret = sysfs_create_bin_file(&dev->primary->kdev->kobj, | 628 | ret = sysfs_create_bin_file(&kdev->kobj, |
649 | &error_state_attr); | 629 | &error_state_attr); |
650 | if (ret) | 630 | if (ret) |
651 | DRM_ERROR("error_state sysfs setup failed\n"); | 631 | DRM_ERROR("error_state sysfs setup failed\n"); |
652 | } | 632 | } |
653 | 633 | ||
654 | void i915_teardown_sysfs(struct drm_device *dev) | 634 | void i915_teardown_sysfs(struct drm_i915_private *dev_priv) |
655 | { | 635 | { |
656 | sysfs_remove_bin_file(&dev->primary->kdev->kobj, &error_state_attr); | 636 | struct device *kdev = dev_priv->drm.primary->kdev; |
657 | if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) | 637 | |
658 | sysfs_remove_files(&dev->primary->kdev->kobj, vlv_attrs); | 638 | sysfs_remove_bin_file(&kdev->kobj, &error_state_attr); |
639 | if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) | ||
640 | sysfs_remove_files(&kdev->kobj, vlv_attrs); | ||
659 | else | 641 | else |
660 | sysfs_remove_files(&dev->primary->kdev->kobj, gen6_attrs); | 642 | sysfs_remove_files(&kdev->kobj, gen6_attrs); |
661 | device_remove_bin_file(dev->primary->kdev, &dpf_attrs_1); | 643 | device_remove_bin_file(kdev, &dpf_attrs_1); |
662 | device_remove_bin_file(dev->primary->kdev, &dpf_attrs); | 644 | device_remove_bin_file(kdev, &dpf_attrs); |
663 | #ifdef CONFIG_PM | 645 | #ifdef CONFIG_PM |
664 | sysfs_unmerge_group(&dev->primary->kdev->kobj, &rc6_attr_group); | 646 | sysfs_unmerge_group(&kdev->kobj, &rc6_attr_group); |
665 | sysfs_unmerge_group(&dev->primary->kdev->kobj, &rc6p_attr_group); | 647 | sysfs_unmerge_group(&kdev->kobj, &rc6p_attr_group); |
666 | #endif | 648 | #endif |
667 | } | 649 | } |