Commit 694c2828 authored by David Weinehall's avatar David Weinehall Committed by Chris Wilson

drm/i915: i915_sysfs.c cleanup

Various cleanup for i915_sysfs.c; we now use dev_priv whenever
possible. The kdev_to_drm_minor() helper function has been
replaced by one that converts from struct device *
to struct drm_i915_private *.

We already have a seemingly identical helper (kdev_to_i915())
in i915_drv.h. But that one cannot be used here.
Unlike the version in i915_drv.h, this helper
reaches i915 through drm_minor.

v2: Rename kdev_to_i915_dm() to kdev_minor_to_i915() (Chris)
Signed-off-by: default avatarDavid Weinehall <david.weinehall@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160822103245.24069-4-david.weinehall@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent c49d13ee
...@@ -1133,7 +1133,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv) ...@@ -1133,7 +1133,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
/* Reveal our presence to userspace */ /* Reveal our presence to userspace */
if (drm_dev_register(dev, 0) == 0) { if (drm_dev_register(dev, 0) == 0) {
i915_debugfs_register(dev_priv); i915_debugfs_register(dev_priv);
i915_setup_sysfs(dev); i915_setup_sysfs(dev_priv);
} else } else
DRM_ERROR("Failed to register driver for userspace access!\n"); DRM_ERROR("Failed to register driver for userspace access!\n");
...@@ -1170,7 +1170,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv) ...@@ -1170,7 +1170,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv)
acpi_video_unregister(); acpi_video_unregister();
intel_opregion_unregister(dev_priv); intel_opregion_unregister(dev_priv);
i915_teardown_sysfs(&dev_priv->drm); i915_teardown_sysfs(dev_priv);
i915_debugfs_unregister(dev_priv); i915_debugfs_unregister(dev_priv);
drm_dev_unregister(&dev_priv->drm); drm_dev_unregister(&dev_priv->drm);
......
...@@ -3564,8 +3564,8 @@ extern int i915_save_state(struct drm_device *dev); ...@@ -3564,8 +3564,8 @@ extern int i915_save_state(struct drm_device *dev);
extern int i915_restore_state(struct drm_device *dev); extern int i915_restore_state(struct drm_device *dev);
/* i915_sysfs.c */ /* i915_sysfs.c */
void i915_setup_sysfs(struct drm_device *dev_priv); void i915_setup_sysfs(struct drm_i915_private *dev_priv);
void i915_teardown_sysfs(struct drm_device *dev_priv); void i915_teardown_sysfs(struct drm_i915_private *dev_priv);
/* intel_i2c.c */ /* intel_i2c.c */
extern int intel_setup_gmbus(struct drm_device *dev); extern int intel_setup_gmbus(struct drm_device *dev);
......
...@@ -32,16 +32,16 @@ ...@@ -32,16 +32,16 @@
#include "intel_drv.h" #include "intel_drv.h"
#include "i915_drv.h" #include "i915_drv.h"
static inline struct drm_minor *kdev_to_drm_minor(struct device *kdev) static inline struct drm_i915_private *kdev_minor_to_i915(struct device *kdev)
{ {
return dev_get_drvdata(kdev); struct drm_minor *minor = dev_get_drvdata(kdev);
return to_i915(minor->dev);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static u32 calc_residency(struct drm_device *dev, static u32 calc_residency(struct drm_i915_private *dev_priv,
i915_reg_t reg) i915_reg_t reg)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
u64 raw_time; /* 32b value may overflow during fixed point math */ u64 raw_time; /* 32b value may overflow during fixed point math */
u64 units = 128ULL, div = 100000ULL; u64 units = 128ULL, div = 100000ULL;
u32 ret; u32 ret;
...@@ -52,13 +52,13 @@ static u32 calc_residency(struct drm_device *dev, ...@@ -52,13 +52,13 @@ static u32 calc_residency(struct drm_device *dev,
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
/* On VLV and CHV, residency time is in CZ units rather than 1.28us */ /* On VLV and CHV, residency time is in CZ units rather than 1.28us */
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
units = 1; units = 1;
div = dev_priv->czclk_freq; div = dev_priv->czclk_freq;
if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH) if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH)
units <<= 8; units <<= 8;
} else if (IS_BROXTON(dev)) { } else if (IS_BROXTON(dev_priv)) {
units = 1; units = 1;
div = 1200; /* 833.33ns */ div = 1200; /* 833.33ns */
} }
...@@ -79,32 +79,32 @@ show_rc6_mask(struct device *kdev, struct device_attribute *attr, char *buf) ...@@ -79,32 +79,32 @@ show_rc6_mask(struct device *kdev, struct device_attribute *attr, char *buf)
static ssize_t static ssize_t
show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *dminor = dev_get_drvdata(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
u32 rc6_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6); u32 rc6_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6);
return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency);
} }
static ssize_t static ssize_t
show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *dminor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
u32 rc6p_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6p); u32 rc6p_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6p);
return snprintf(buf, PAGE_SIZE, "%u\n", rc6p_residency); return snprintf(buf, PAGE_SIZE, "%u\n", rc6p_residency);
} }
static ssize_t static ssize_t
show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *dminor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
u32 rc6pp_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6pp); u32 rc6pp_residency = calc_residency(dev_priv, GEN6_GT_GFX_RC6pp);
return snprintf(buf, PAGE_SIZE, "%u\n", rc6pp_residency); return snprintf(buf, PAGE_SIZE, "%u\n", rc6pp_residency);
} }
static ssize_t static ssize_t
show_media_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) show_media_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *dminor = dev_get_drvdata(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
u32 rc6_residency = calc_residency(dminor->dev, VLV_GT_MEDIA_RC6); u32 rc6_residency = calc_residency(dev_priv, VLV_GT_MEDIA_RC6);
return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency); return snprintf(buf, PAGE_SIZE, "%u\n", rc6_residency);
} }
...@@ -147,9 +147,9 @@ static struct attribute_group media_rc6_attr_group = { ...@@ -147,9 +147,9 @@ static struct attribute_group media_rc6_attr_group = {
}; };
#endif #endif
static int l3_access_valid(struct drm_device *dev, loff_t offset) static int l3_access_valid(struct drm_i915_private *dev_priv, loff_t offset)
{ {
if (!HAS_L3_DPF(dev)) if (!HAS_L3_DPF(dev_priv))
return -EPERM; return -EPERM;
if (offset % 4 != 0) if (offset % 4 != 0)
...@@ -167,15 +167,14 @@ i915_l3_read(struct file *filp, struct kobject *kobj, ...@@ -167,15 +167,14 @@ i915_l3_read(struct file *filp, struct kobject *kobj,
loff_t offset, size_t count) loff_t offset, size_t count)
{ {
struct device *kdev = kobj_to_dev(kobj); struct device *kdev = kobj_to_dev(kobj);
struct drm_minor *dminor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = dminor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
int slice = (int)(uintptr_t)attr->private; int slice = (int)(uintptr_t)attr->private;
int ret; int ret;
count = round_down(count, 4); count = round_down(count, 4);
ret = l3_access_valid(dev, offset); ret = l3_access_valid(dev_priv, offset);
if (ret) if (ret)
return ret; return ret;
...@@ -203,18 +202,17 @@ i915_l3_write(struct file *filp, struct kobject *kobj, ...@@ -203,18 +202,17 @@ i915_l3_write(struct file *filp, struct kobject *kobj,
loff_t offset, size_t count) loff_t offset, size_t count)
{ {
struct device *kdev = kobj_to_dev(kobj); struct device *kdev = kobj_to_dev(kobj);
struct drm_minor *dminor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = dminor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_gem_context *ctx; struct i915_gem_context *ctx;
u32 *temp = NULL; /* Just here to make handling failures easy */ u32 *temp = NULL; /* Just here to make handling failures easy */
int slice = (int)(uintptr_t)attr->private; int slice = (int)(uintptr_t)attr->private;
int ret; int ret;
if (!HAS_HW_CONTEXTS(dev)) if (!HAS_HW_CONTEXTS(dev_priv))
return -ENXIO; return -ENXIO;
ret = l3_access_valid(dev, offset); ret = l3_access_valid(dev_priv, offset);
if (ret) if (ret)
return ret; return ret;
...@@ -269,9 +267,7 @@ static struct bin_attribute dpf_attrs_1 = { ...@@ -269,9 +267,7 @@ static struct bin_attribute dpf_attrs_1 = {
static ssize_t gt_act_freq_mhz_show(struct device *kdev, static ssize_t gt_act_freq_mhz_show(struct device *kdev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
int ret; int ret;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
...@@ -301,9 +297,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev, ...@@ -301,9 +297,7 @@ static ssize_t gt_act_freq_mhz_show(struct device *kdev,
static ssize_t gt_cur_freq_mhz_show(struct device *kdev, static ssize_t gt_cur_freq_mhz_show(struct device *kdev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n",
intel_gpu_freq(dev_priv, intel_gpu_freq(dev_priv,
...@@ -312,8 +306,7 @@ static ssize_t gt_cur_freq_mhz_show(struct device *kdev, ...@@ -312,8 +306,7 @@ static ssize_t gt_cur_freq_mhz_show(struct device *kdev,
static ssize_t gt_boost_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) static ssize_t gt_boost_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_i915_private *dev_priv = to_i915(minor->dev);
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n",
intel_gpu_freq(dev_priv, intel_gpu_freq(dev_priv,
...@@ -324,9 +317,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev, ...@@ -324,9 +317,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
struct device_attribute *attr, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 val; u32 val;
ssize_t ret; ssize_t ret;
...@@ -349,9 +340,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev, ...@@ -349,9 +340,7 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n",
intel_gpu_freq(dev_priv, intel_gpu_freq(dev_priv,
...@@ -360,9 +349,7 @@ static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev, ...@@ -360,9 +349,7 @@ static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev,
static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n",
intel_gpu_freq(dev_priv, intel_gpu_freq(dev_priv,
...@@ -373,9 +360,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev, ...@@ -373,9 +360,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
struct device_attribute *attr, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 val; u32 val;
ssize_t ret; ssize_t ret;
...@@ -421,9 +406,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev, ...@@ -421,9 +406,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n",
intel_gpu_freq(dev_priv, intel_gpu_freq(dev_priv,
...@@ -434,9 +417,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev, ...@@ -434,9 +417,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev,
struct device_attribute *attr, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 val; u32 val;
ssize_t ret; ssize_t ret;
...@@ -493,9 +474,7 @@ static DEVICE_ATTR(gt_RPn_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); ...@@ -493,9 +474,7 @@ static DEVICE_ATTR(gt_RPn_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL);
/* For now we have a static number of RP states */ /* For now we have a static number of RP states */
static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf)
{ {
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 val; u32 val;
if (attr == &dev_attr_gt_RP0_freq_mhz) 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,8 +520,8 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj,
{ {
struct device *kdev = kobj_to_dev(kobj); struct device *kdev = kobj_to_dev(kobj);
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev; struct drm_device *dev = &dev_priv->drm;
struct i915_error_state_file_priv error_priv; struct i915_error_state_file_priv error_priv;
struct drm_i915_error_state_buf error_str; struct drm_i915_error_state_buf error_str;
ssize_t ret_count = 0; ssize_t ret_count = 0;
...@@ -576,8 +555,8 @@ static ssize_t error_state_write(struct file *file, struct kobject *kobj, ...@@ -576,8 +555,8 @@ static ssize_t error_state_write(struct file *file, struct kobject *kobj,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct device *kdev = kobj_to_dev(kobj); struct device *kdev = kobj_to_dev(kobj);
struct drm_minor *minor = kdev_to_drm_minor(kdev); struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
struct drm_device *dev = minor->dev; struct drm_device *dev = &dev_priv->drm;
int ret; int ret;
DRM_DEBUG_DRIVER("Resetting error state\n"); DRM_DEBUG_DRIVER("Resetting error state\n");
...@@ -600,37 +579,38 @@ static struct bin_attribute error_state_attr = { ...@@ -600,37 +579,38 @@ static struct bin_attribute error_state_attr = {
.write = error_state_write, .write = error_state_write,
}; };
void i915_setup_sysfs(struct drm_device *dev) void i915_setup_sysfs(struct drm_i915_private *dev_priv)
{ {
struct device *kdev = dev_priv->drm.primary->kdev;
int ret; int ret;
#ifdef CONFIG_PM #ifdef CONFIG_PM
if (HAS_RC6(dev)) { if (HAS_RC6(dev_priv)) {
ret = sysfs_merge_group(&dev->primary->kdev->kobj, ret = sysfs_merge_group(&kdev->kobj,
&rc6_attr_group); &rc6_attr_group);
if (ret) if (ret)
DRM_ERROR("RC6 residency sysfs setup failed\n"); DRM_ERROR("RC6 residency sysfs setup failed\n");
} }
if (HAS_RC6p(dev)) { if (HAS_RC6p(dev_priv)) {
ret = sysfs_merge_group(&dev->primary->kdev->kobj, ret = sysfs_merge_group(&kdev->kobj,
&rc6p_attr_group); &rc6p_attr_group);
if (ret) if (ret)
DRM_ERROR("RC6p residency sysfs setup failed\n"); DRM_ERROR("RC6p residency sysfs setup failed\n");
} }
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
ret = sysfs_merge_group(&dev->primary->kdev->kobj, ret = sysfs_merge_group(&kdev->kobj,
&media_rc6_attr_group); &media_rc6_attr_group);
if (ret) if (ret)
DRM_ERROR("Media RC6 residency sysfs setup failed\n"); DRM_ERROR("Media RC6 residency sysfs setup failed\n");
} }
#endif #endif
if (HAS_L3_DPF(dev)) { if (HAS_L3_DPF(dev_priv)) {
ret = device_create_bin_file(dev->primary->kdev, &dpf_attrs); ret = device_create_bin_file(kdev, &dpf_attrs);
if (ret) if (ret)
DRM_ERROR("l3 parity sysfs setup failed\n"); DRM_ERROR("l3 parity sysfs setup failed\n");
if (NUM_L3_SLICES(dev) > 1) { if (NUM_L3_SLICES(dev_priv) > 1) {
ret = device_create_bin_file(dev->primary->kdev, ret = device_create_bin_file(kdev,
&dpf_attrs_1); &dpf_attrs_1);
if (ret) if (ret)
DRM_ERROR("l3 parity slice 1 setup failed\n"); DRM_ERROR("l3 parity slice 1 setup failed\n");
...@@ -638,30 +618,32 @@ void i915_setup_sysfs(struct drm_device *dev) ...@@ -638,30 +618,32 @@ void i915_setup_sysfs(struct drm_device *dev)
} }
ret = 0; ret = 0;
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
ret = sysfs_create_files(&dev->primary->kdev->kobj, vlv_attrs); ret = sysfs_create_files(&kdev->kobj, vlv_attrs);
else if (INTEL_INFO(dev)->gen >= 6) else if (INTEL_GEN(dev_priv) >= 6)
ret = sysfs_create_files(&dev->primary->kdev->kobj, gen6_attrs); ret = sysfs_create_files(&kdev->kobj, gen6_attrs);
if (ret) if (ret)
DRM_ERROR("RPS sysfs setup failed\n"); DRM_ERROR("RPS sysfs setup failed\n");
ret = sysfs_create_bin_file(&dev->primary->kdev->kobj, ret = sysfs_create_bin_file(&kdev->kobj,
&error_state_attr); &error_state_attr);
if (ret) if (ret)
DRM_ERROR("error_state sysfs setup failed\n"); DRM_ERROR("error_state sysfs setup failed\n");
} }
void i915_teardown_sysfs(struct drm_device *dev) void i915_teardown_sysfs(struct drm_i915_private *dev_priv)
{ {
sysfs_remove_bin_file(&dev->primary->kdev->kobj, &error_state_attr); struct device *kdev = dev_priv->drm.primary->kdev;
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
sysfs_remove_files(&dev->primary->kdev->kobj, vlv_attrs); sysfs_remove_bin_file(&kdev->kobj, &error_state_attr);
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
sysfs_remove_files(&kdev->kobj, vlv_attrs);
else else
sysfs_remove_files(&dev->primary->kdev->kobj, gen6_attrs); sysfs_remove_files(&kdev->kobj, gen6_attrs);
device_remove_bin_file(dev->primary->kdev, &dpf_attrs_1); device_remove_bin_file(kdev, &dpf_attrs_1);
device_remove_bin_file(dev->primary->kdev, &dpf_attrs); device_remove_bin_file(kdev, &dpf_attrs);
#ifdef CONFIG_PM #ifdef CONFIG_PM
sysfs_unmerge_group(&dev->primary->kdev->kobj, &rc6_attr_group); sysfs_unmerge_group(&kdev->kobj, &rc6_attr_group);
sysfs_unmerge_group(&dev->primary->kdev->kobj, &rc6p_attr_group); sysfs_unmerge_group(&kdev->kobj, &rc6p_attr_group);
#endif #endif
} }
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