diff options
| author | Keith Packard <keithp@keithp.com> | 2009-05-06 14:48:58 -0400 |
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-06-18 18:54:06 -0400 |
| commit | c31c4ba3437d98efa19710e30d694a1cfdf87aa5 (patch) | |
| tree | 043b40a59404868cc2eee5db44599c0539f110ee /drivers/gpu | |
| parent | 308cd3a2e505b0d15f2852e8db5d648b60a6313b (diff) | |
drm/i915: add per-output hotplug callback for KMS
This allows each output to deal with plug/unplug events as needed.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index b86b7b7130c6..228546f6eaa4 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
| @@ -232,7 +232,17 @@ static void i915_hotplug_work_func(struct work_struct *work) | |||
| 232 | drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, | 232 | drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, |
| 233 | hotplug_work); | 233 | hotplug_work); |
| 234 | struct drm_device *dev = dev_priv->dev; | 234 | struct drm_device *dev = dev_priv->dev; |
| 235 | 235 | struct drm_mode_config *mode_config = &dev->mode_config; | |
| 236 | struct drm_connector *connector; | ||
| 237 | |||
| 238 | if (mode_config->num_connector) { | ||
| 239 | list_for_each_entry(connector, &mode_config->connector_list, head) { | ||
| 240 | struct intel_output *intel_output = to_intel_output(connector); | ||
| 241 | |||
| 242 | if (intel_output->hot_plug) | ||
| 243 | (*intel_output->hot_plug) (intel_output); | ||
| 244 | } | ||
| 245 | } | ||
| 236 | /* Just fire off a uevent and let userspace tell us what to do */ | 246 | /* Just fire off a uevent and let userspace tell us what to do */ |
| 237 | drm_sysfs_hotplug_event(dev); | 247 | drm_sysfs_hotplug_event(dev); |
| 238 | } | 248 | } |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index d89a2fed35af..c5858792c806 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
| @@ -83,6 +83,7 @@ struct intel_output { | |||
| 83 | bool load_detect_temp; | 83 | bool load_detect_temp; |
| 84 | bool needs_tv_clock; | 84 | bool needs_tv_clock; |
| 85 | void *dev_priv; | 85 | void *dev_priv; |
| 86 | void (*hot_plug)(struct intel_output *); | ||
| 86 | }; | 87 | }; |
| 87 | 88 | ||
| 88 | struct intel_crtc { | 89 | struct intel_crtc { |
