aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c4
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h4
-rw-r--r--drivers/gpu/drm/i915/i915_sysfs.c148
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);
3564extern int i915_restore_state(struct drm_device *dev); 3564extern int i915_restore_state(struct drm_device *dev);
3565 3565
3566/* i915_sysfs.c */ 3566/* i915_sysfs.c */
3567void i915_setup_sysfs(struct drm_device *dev_priv); 3567void i915_setup_sysfs(struct drm_i915_private *dev_priv);
3568void i915_teardown_sysfs(struct drm_device *dev_priv); 3568void i915_teardown_sysfs(struct drm_i915_private *dev_priv);
3569 3569
3570/* intel_i2c.c */ 3570/* intel_i2c.c */
3571extern int intel_setup_gmbus(struct drm_device *dev); 3571extern 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
35static inline struct drm_minor *kdev_to_drm_minor(struct device *kdev) 35static 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
41static u32 calc_residency(struct drm_device *dev, 42static 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)
79static ssize_t 79static ssize_t
80show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) 80show_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
87static ssize_t 87static ssize_t
88show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) 88show_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
95static ssize_t 95static ssize_t
96show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) 96show_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
103static ssize_t 103static ssize_t
104show_media_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) 104show_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
150static int l3_access_valid(struct drm_device *dev, loff_t offset) 150static 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 = {
269static ssize_t gt_act_freq_mhz_show(struct device *kdev, 267static 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,
301static ssize_t gt_cur_freq_mhz_show(struct device *kdev, 297static 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
313static ssize_t gt_boost_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) 307static 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,
349static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, 340static 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
361static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) 350static 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
422static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) 407static 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 */
494static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) 475static 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
603void i915_setup_sysfs(struct drm_device *dev) 582void 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
654void i915_teardown_sysfs(struct drm_device *dev) 634void 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}