diff options
| -rw-r--r-- | drivers/gpu/drm/drm_sysfs.c | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index 85ec31b3ff00..f7a615b80c70 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c | |||
| @@ -22,44 +22,50 @@ | |||
| 22 | #define to_drm_minor(d) container_of(d, struct drm_minor, kdev) | 22 | #define to_drm_minor(d) container_of(d, struct drm_minor, kdev) |
| 23 | #define to_drm_connector(d) container_of(d, struct drm_connector, kdev) | 23 | #define to_drm_connector(d) container_of(d, struct drm_connector, kdev) |
| 24 | 24 | ||
| 25 | static struct device_type drm_sysfs_device_minor = { | ||
| 26 | .name = "drm_minor" | ||
| 27 | }; | ||
| 28 | |||
| 25 | /** | 29 | /** |
| 26 | * drm_sysfs_suspend - DRM class suspend hook | 30 | * drm_class_suspend - DRM class suspend hook |
| 27 | * @dev: Linux device to suspend | 31 | * @dev: Linux device to suspend |
| 28 | * @state: power state to enter | 32 | * @state: power state to enter |
| 29 | * | 33 | * |
| 30 | * Just figures out what the actual struct drm_device associated with | 34 | * Just figures out what the actual struct drm_device associated with |
| 31 | * @dev is and calls its suspend hook, if present. | 35 | * @dev is and calls its suspend hook, if present. |
| 32 | */ | 36 | */ |
| 33 | static int drm_sysfs_suspend(struct device *dev, pm_message_t state) | 37 | static int drm_class_suspend(struct device *dev, pm_message_t state) |
| 34 | { | 38 | { |
| 35 | struct drm_minor *drm_minor = to_drm_minor(dev); | 39 | if (dev->type == &drm_sysfs_device_minor) { |
| 36 | struct drm_device *drm_dev = drm_minor->dev; | 40 | struct drm_minor *drm_minor = to_drm_minor(dev); |
| 37 | 41 | struct drm_device *drm_dev = drm_minor->dev; | |
| 38 | if (drm_minor->type == DRM_MINOR_LEGACY && | 42 | |
| 39 | !drm_core_check_feature(drm_dev, DRIVER_MODESET) && | 43 | if (drm_minor->type == DRM_MINOR_LEGACY && |
| 40 | drm_dev->driver->suspend) | 44 | !drm_core_check_feature(drm_dev, DRIVER_MODESET) && |
| 41 | return drm_dev->driver->suspend(drm_dev, state); | 45 | drm_dev->driver->suspend) |
| 42 | 46 | return drm_dev->driver->suspend(drm_dev, state); | |
| 47 | } | ||
| 43 | return 0; | 48 | return 0; |
| 44 | } | 49 | } |
| 45 | 50 | ||
| 46 | /** | 51 | /** |
| 47 | * drm_sysfs_resume - DRM class resume hook | 52 | * drm_class_resume - DRM class resume hook |
| 48 | * @dev: Linux device to resume | 53 | * @dev: Linux device to resume |
| 49 | * | 54 | * |
| 50 | * Just figures out what the actual struct drm_device associated with | 55 | * Just figures out what the actual struct drm_device associated with |
| 51 | * @dev is and calls its resume hook, if present. | 56 | * @dev is and calls its resume hook, if present. |
| 52 | */ | 57 | */ |
| 53 | static int drm_sysfs_resume(struct device *dev) | 58 | static int drm_class_resume(struct device *dev) |
| 54 | { | 59 | { |
| 55 | struct drm_minor *drm_minor = to_drm_minor(dev); | 60 | if (dev->type == &drm_sysfs_device_minor) { |
| 56 | struct drm_device *drm_dev = drm_minor->dev; | 61 | struct drm_minor *drm_minor = to_drm_minor(dev); |
| 57 | 62 | struct drm_device *drm_dev = drm_minor->dev; | |
| 58 | if (drm_minor->type == DRM_MINOR_LEGACY && | 63 | |
| 59 | !drm_core_check_feature(drm_dev, DRIVER_MODESET) && | 64 | if (drm_minor->type == DRM_MINOR_LEGACY && |
| 60 | drm_dev->driver->resume) | 65 | !drm_core_check_feature(drm_dev, DRIVER_MODESET) && |
| 61 | return drm_dev->driver->resume(drm_dev); | 66 | drm_dev->driver->resume) |
| 62 | 67 | return drm_dev->driver->resume(drm_dev); | |
| 68 | } | ||
| 63 | return 0; | 69 | return 0; |
| 64 | } | 70 | } |
| 65 | 71 | ||
| @@ -99,8 +105,8 @@ struct class *drm_sysfs_create(struct module *owner, char *name) | |||
| 99 | goto err_out; | 105 | goto err_out; |
| 100 | } | 106 | } |
| 101 | 107 | ||
| 102 | class->suspend = drm_sysfs_suspend; | 108 | class->suspend = drm_class_suspend; |
| 103 | class->resume = drm_sysfs_resume; | 109 | class->resume = drm_class_resume; |
| 104 | 110 | ||
| 105 | err = class_create_file(class, &class_attr_version); | 111 | err = class_create_file(class, &class_attr_version); |
| 106 | if (err) | 112 | if (err) |
| @@ -480,6 +486,7 @@ int drm_sysfs_device_add(struct drm_minor *minor) | |||
| 480 | minor->kdev.class = drm_class; | 486 | minor->kdev.class = drm_class; |
| 481 | minor->kdev.release = drm_sysfs_device_release; | 487 | minor->kdev.release = drm_sysfs_device_release; |
| 482 | minor->kdev.devt = minor->device; | 488 | minor->kdev.devt = minor->device; |
| 489 | minor->kdev.type = &drm_sysfs_device_minor; | ||
| 483 | if (minor->type == DRM_MINOR_CONTROL) | 490 | if (minor->type == DRM_MINOR_CONTROL) |
| 484 | minor_str = "controlD%d"; | 491 | minor_str = "controlD%d"; |
| 485 | else if (minor->type == DRM_MINOR_RENDER) | 492 | else if (minor->type == DRM_MINOR_RENDER) |
