diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-17 17:28:50 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-17 17:28:50 -0400 |
| commit | 13bd8e4673d527a9e48f41956b11d391e7c2cfe0 (patch) | |
| tree | 2a3ce7c025f7d5b771fcc9a24b88a49317b2c7bc | |
| parent | d6f533c8c7a4d83ed1c075f919a68031b9c67185 (diff) | |
| parent | bfac4d6725baacbfc085c38e231b8582a1b8f62b (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel:
drm/i915: Ignore LVDS EDID when it is unavailabe or invalid
drm/i915: Add no_lvds entry for the Clientron U800
drm/i915: Rename many remaining uses of "output" to encoder or connector.
drm/i915: Rename intel_output to intel_encoder.
agp/intel: intel_845_driver is an agp driver!
drm/i915: introduce to_intel_bo helper
drm/i915: Disable FBC on 915GM and 945GM.
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 132 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_debug.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_tiling.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 68 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 96 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 256 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dvo.c | 92 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 86 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 81 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_modes.c | 22 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_overlay.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 731 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 96 |
20 files changed, 871 insertions, 852 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index d41331bc2aa7..aa4248efc5d8 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -1817,8 +1817,6 @@ static int intel_845_configure(void) | |||
| 1817 | pci_write_config_byte(agp_bridge->dev, INTEL_I845_AGPM, temp2 | (1 << 1)); | 1817 | pci_write_config_byte(agp_bridge->dev, INTEL_I845_AGPM, temp2 | (1 << 1)); |
| 1818 | /* clear any possible error conditions */ | 1818 | /* clear any possible error conditions */ |
| 1819 | pci_write_config_word(agp_bridge->dev, INTEL_I845_ERRSTS, 0x001c); | 1819 | pci_write_config_word(agp_bridge->dev, INTEL_I845_ERRSTS, 0x001c); |
| 1820 | |||
| 1821 | intel_i830_setup_flush(); | ||
| 1822 | return 0; | 1820 | return 0; |
| 1823 | } | 1821 | } |
| 1824 | 1822 | ||
| @@ -2188,7 +2186,6 @@ static const struct agp_bridge_driver intel_845_driver = { | |||
| 2188 | .agp_destroy_page = agp_generic_destroy_page, | 2186 | .agp_destroy_page = agp_generic_destroy_page, |
| 2189 | .agp_destroy_pages = agp_generic_destroy_pages, | 2187 | .agp_destroy_pages = agp_generic_destroy_pages, |
| 2190 | .agp_type_to_mask_type = agp_generic_type_to_mask_type, | 2188 | .agp_type_to_mask_type = agp_generic_type_to_mask_type, |
| 2191 | .chipset_flush = intel_i830_chipset_flush, | ||
| 2192 | }; | 2189 | }; |
| 2193 | 2190 | ||
| 2194 | static const struct agp_bridge_driver intel_850_driver = { | 2191 | static const struct agp_bridge_driver intel_850_driver = { |
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index b574503dddd0..a0b8447b06e7 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
| @@ -226,7 +226,7 @@ static int i915_gem_fence_regs_info(struct seq_file *m, void *data) | |||
| 226 | } else { | 226 | } else { |
| 227 | struct drm_i915_gem_object *obj_priv; | 227 | struct drm_i915_gem_object *obj_priv; |
| 228 | 228 | ||
| 229 | obj_priv = obj->driver_private; | 229 | obj_priv = to_intel_bo(obj); |
| 230 | seq_printf(m, "Fenced object[%2d] = %p: %s " | 230 | seq_printf(m, "Fenced object[%2d] = %p: %s " |
| 231 | "%08x %08zx %08x %s %08x %08x %d", | 231 | "%08x %08zx %08x %s %08x %08x %d", |
| 232 | i, obj, get_pin_flag(obj_priv), | 232 | i, obj, get_pin_flag(obj_priv), |
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 4b26919abdb2..0af3dcc85ce9 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
| @@ -80,14 +80,14 @@ const static struct intel_device_info intel_i915g_info = { | |||
| 80 | .is_i915g = 1, .is_i9xx = 1, .cursor_needs_physical = 1, | 80 | .is_i915g = 1, .is_i9xx = 1, .cursor_needs_physical = 1, |
| 81 | }; | 81 | }; |
| 82 | const static struct intel_device_info intel_i915gm_info = { | 82 | const static struct intel_device_info intel_i915gm_info = { |
| 83 | .is_i9xx = 1, .is_mobile = 1, .has_fbc = 1, | 83 | .is_i9xx = 1, .is_mobile = 1, |
| 84 | .cursor_needs_physical = 1, | 84 | .cursor_needs_physical = 1, |
| 85 | }; | 85 | }; |
| 86 | const static struct intel_device_info intel_i945g_info = { | 86 | const static struct intel_device_info intel_i945g_info = { |
| 87 | .is_i9xx = 1, .has_hotplug = 1, .cursor_needs_physical = 1, | 87 | .is_i9xx = 1, .has_hotplug = 1, .cursor_needs_physical = 1, |
| 88 | }; | 88 | }; |
| 89 | const static struct intel_device_info intel_i945gm_info = { | 89 | const static struct intel_device_info intel_i945gm_info = { |
| 90 | .is_i945gm = 1, .is_i9xx = 1, .is_mobile = 1, .has_fbc = 1, | 90 | .is_i945gm = 1, .is_i9xx = 1, .is_mobile = 1, |
| 91 | .has_hotplug = 1, .cursor_needs_physical = 1, | 91 | .has_hotplug = 1, .cursor_needs_physical = 1, |
| 92 | }; | 92 | }; |
| 93 | 93 | ||
| @@ -361,7 +361,7 @@ int i965_reset(struct drm_device *dev, u8 flags) | |||
| 361 | !dev_priv->mm.suspended) { | 361 | !dev_priv->mm.suspended) { |
| 362 | drm_i915_ring_buffer_t *ring = &dev_priv->ring; | 362 | drm_i915_ring_buffer_t *ring = &dev_priv->ring; |
| 363 | struct drm_gem_object *obj = ring->ring_obj; | 363 | struct drm_gem_object *obj = ring->ring_obj; |
| 364 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 364 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 365 | dev_priv->mm.suspended = 0; | 365 | dev_priv->mm.suspended = 0; |
| 366 | 366 | ||
| 367 | /* Stop the ring if it's running. */ | 367 | /* Stop the ring if it's running. */ |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index aba8260fbc5e..6960849522f8 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -611,6 +611,8 @@ typedef struct drm_i915_private { | |||
| 611 | /* Reclocking support */ | 611 | /* Reclocking support */ |
| 612 | bool render_reclock_avail; | 612 | bool render_reclock_avail; |
| 613 | bool lvds_downclock_avail; | 613 | bool lvds_downclock_avail; |
| 614 | /* indicate whether the LVDS EDID is OK */ | ||
| 615 | bool lvds_edid_good; | ||
| 614 | /* indicates the reduced downclock for LVDS*/ | 616 | /* indicates the reduced downclock for LVDS*/ |
| 615 | int lvds_downclock; | 617 | int lvds_downclock; |
| 616 | struct work_struct idle_work; | 618 | struct work_struct idle_work; |
| @@ -731,6 +733,8 @@ struct drm_i915_gem_object { | |||
| 731 | atomic_t pending_flip; | 733 | atomic_t pending_flip; |
| 732 | }; | 734 | }; |
| 733 | 735 | ||
| 736 | #define to_intel_bo(x) ((struct drm_i915_gem_object *) (x)->driver_private) | ||
| 737 | |||
| 734 | /** | 738 | /** |
| 735 | * Request queue structure. | 739 | * Request queue structure. |
| 736 | * | 740 | * |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 368d726853d1..80871c62a571 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -163,7 +163,7 @@ fast_shmem_read(struct page **pages, | |||
| 163 | static int i915_gem_object_needs_bit17_swizzle(struct drm_gem_object *obj) | 163 | static int i915_gem_object_needs_bit17_swizzle(struct drm_gem_object *obj) |
| 164 | { | 164 | { |
| 165 | drm_i915_private_t *dev_priv = obj->dev->dev_private; | 165 | drm_i915_private_t *dev_priv = obj->dev->dev_private; |
| 166 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 166 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 167 | 167 | ||
| 168 | return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && | 168 | return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && |
| 169 | obj_priv->tiling_mode != I915_TILING_NONE; | 169 | obj_priv->tiling_mode != I915_TILING_NONE; |
| @@ -264,7 +264,7 @@ i915_gem_shmem_pread_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 264 | struct drm_i915_gem_pread *args, | 264 | struct drm_i915_gem_pread *args, |
| 265 | struct drm_file *file_priv) | 265 | struct drm_file *file_priv) |
| 266 | { | 266 | { |
| 267 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 267 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 268 | ssize_t remain; | 268 | ssize_t remain; |
| 269 | loff_t offset, page_base; | 269 | loff_t offset, page_base; |
| 270 | char __user *user_data; | 270 | char __user *user_data; |
| @@ -285,7 +285,7 @@ i915_gem_shmem_pread_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 285 | if (ret != 0) | 285 | if (ret != 0) |
| 286 | goto fail_put_pages; | 286 | goto fail_put_pages; |
| 287 | 287 | ||
| 288 | obj_priv = obj->driver_private; | 288 | obj_priv = to_intel_bo(obj); |
| 289 | offset = args->offset; | 289 | offset = args->offset; |
| 290 | 290 | ||
| 291 | while (remain > 0) { | 291 | while (remain > 0) { |
| @@ -354,7 +354,7 @@ i915_gem_shmem_pread_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 354 | struct drm_i915_gem_pread *args, | 354 | struct drm_i915_gem_pread *args, |
| 355 | struct drm_file *file_priv) | 355 | struct drm_file *file_priv) |
| 356 | { | 356 | { |
| 357 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 357 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 358 | struct mm_struct *mm = current->mm; | 358 | struct mm_struct *mm = current->mm; |
| 359 | struct page **user_pages; | 359 | struct page **user_pages; |
| 360 | ssize_t remain; | 360 | ssize_t remain; |
| @@ -403,7 +403,7 @@ i915_gem_shmem_pread_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 403 | if (ret != 0) | 403 | if (ret != 0) |
| 404 | goto fail_put_pages; | 404 | goto fail_put_pages; |
| 405 | 405 | ||
| 406 | obj_priv = obj->driver_private; | 406 | obj_priv = to_intel_bo(obj); |
| 407 | offset = args->offset; | 407 | offset = args->offset; |
| 408 | 408 | ||
| 409 | while (remain > 0) { | 409 | while (remain > 0) { |
| @@ -479,7 +479,7 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data, | |||
| 479 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 479 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 480 | if (obj == NULL) | 480 | if (obj == NULL) |
| 481 | return -EBADF; | 481 | return -EBADF; |
| 482 | obj_priv = obj->driver_private; | 482 | obj_priv = to_intel_bo(obj); |
| 483 | 483 | ||
| 484 | /* Bounds check source. | 484 | /* Bounds check source. |
| 485 | * | 485 | * |
| @@ -581,7 +581,7 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 581 | struct drm_i915_gem_pwrite *args, | 581 | struct drm_i915_gem_pwrite *args, |
| 582 | struct drm_file *file_priv) | 582 | struct drm_file *file_priv) |
| 583 | { | 583 | { |
| 584 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 584 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 585 | drm_i915_private_t *dev_priv = dev->dev_private; | 585 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 586 | ssize_t remain; | 586 | ssize_t remain; |
| 587 | loff_t offset, page_base; | 587 | loff_t offset, page_base; |
| @@ -605,7 +605,7 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 605 | if (ret) | 605 | if (ret) |
| 606 | goto fail; | 606 | goto fail; |
| 607 | 607 | ||
| 608 | obj_priv = obj->driver_private; | 608 | obj_priv = to_intel_bo(obj); |
| 609 | offset = obj_priv->gtt_offset + args->offset; | 609 | offset = obj_priv->gtt_offset + args->offset; |
| 610 | 610 | ||
| 611 | while (remain > 0) { | 611 | while (remain > 0) { |
| @@ -655,7 +655,7 @@ i915_gem_gtt_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 655 | struct drm_i915_gem_pwrite *args, | 655 | struct drm_i915_gem_pwrite *args, |
| 656 | struct drm_file *file_priv) | 656 | struct drm_file *file_priv) |
| 657 | { | 657 | { |
| 658 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 658 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 659 | drm_i915_private_t *dev_priv = dev->dev_private; | 659 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 660 | ssize_t remain; | 660 | ssize_t remain; |
| 661 | loff_t gtt_page_base, offset; | 661 | loff_t gtt_page_base, offset; |
| @@ -699,7 +699,7 @@ i915_gem_gtt_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 699 | if (ret) | 699 | if (ret) |
| 700 | goto out_unpin_object; | 700 | goto out_unpin_object; |
| 701 | 701 | ||
| 702 | obj_priv = obj->driver_private; | 702 | obj_priv = to_intel_bo(obj); |
| 703 | offset = obj_priv->gtt_offset + args->offset; | 703 | offset = obj_priv->gtt_offset + args->offset; |
| 704 | 704 | ||
| 705 | while (remain > 0) { | 705 | while (remain > 0) { |
| @@ -761,7 +761,7 @@ i915_gem_shmem_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 761 | struct drm_i915_gem_pwrite *args, | 761 | struct drm_i915_gem_pwrite *args, |
| 762 | struct drm_file *file_priv) | 762 | struct drm_file *file_priv) |
| 763 | { | 763 | { |
| 764 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 764 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 765 | ssize_t remain; | 765 | ssize_t remain; |
| 766 | loff_t offset, page_base; | 766 | loff_t offset, page_base; |
| 767 | char __user *user_data; | 767 | char __user *user_data; |
| @@ -781,7 +781,7 @@ i915_gem_shmem_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 781 | if (ret != 0) | 781 | if (ret != 0) |
| 782 | goto fail_put_pages; | 782 | goto fail_put_pages; |
| 783 | 783 | ||
| 784 | obj_priv = obj->driver_private; | 784 | obj_priv = to_intel_bo(obj); |
| 785 | offset = args->offset; | 785 | offset = args->offset; |
| 786 | obj_priv->dirty = 1; | 786 | obj_priv->dirty = 1; |
| 787 | 787 | ||
| @@ -829,7 +829,7 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 829 | struct drm_i915_gem_pwrite *args, | 829 | struct drm_i915_gem_pwrite *args, |
| 830 | struct drm_file *file_priv) | 830 | struct drm_file *file_priv) |
| 831 | { | 831 | { |
| 832 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 832 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 833 | struct mm_struct *mm = current->mm; | 833 | struct mm_struct *mm = current->mm; |
| 834 | struct page **user_pages; | 834 | struct page **user_pages; |
| 835 | ssize_t remain; | 835 | ssize_t remain; |
| @@ -877,7 +877,7 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 877 | if (ret != 0) | 877 | if (ret != 0) |
| 878 | goto fail_put_pages; | 878 | goto fail_put_pages; |
| 879 | 879 | ||
| 880 | obj_priv = obj->driver_private; | 880 | obj_priv = to_intel_bo(obj); |
| 881 | offset = args->offset; | 881 | offset = args->offset; |
| 882 | obj_priv->dirty = 1; | 882 | obj_priv->dirty = 1; |
| 883 | 883 | ||
| @@ -952,7 +952,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | |||
| 952 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 952 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 953 | if (obj == NULL) | 953 | if (obj == NULL) |
| 954 | return -EBADF; | 954 | return -EBADF; |
| 955 | obj_priv = obj->driver_private; | 955 | obj_priv = to_intel_bo(obj); |
| 956 | 956 | ||
| 957 | /* Bounds check destination. | 957 | /* Bounds check destination. |
| 958 | * | 958 | * |
| @@ -1034,7 +1034,7 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, | |||
| 1034 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 1034 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 1035 | if (obj == NULL) | 1035 | if (obj == NULL) |
| 1036 | return -EBADF; | 1036 | return -EBADF; |
| 1037 | obj_priv = obj->driver_private; | 1037 | obj_priv = to_intel_bo(obj); |
| 1038 | 1038 | ||
| 1039 | mutex_lock(&dev->struct_mutex); | 1039 | mutex_lock(&dev->struct_mutex); |
| 1040 | 1040 | ||
| @@ -1096,7 +1096,7 @@ i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, | |||
| 1096 | DRM_INFO("%s: sw_finish %d (%p %zd)\n", | 1096 | DRM_INFO("%s: sw_finish %d (%p %zd)\n", |
| 1097 | __func__, args->handle, obj, obj->size); | 1097 | __func__, args->handle, obj, obj->size); |
| 1098 | #endif | 1098 | #endif |
| 1099 | obj_priv = obj->driver_private; | 1099 | obj_priv = to_intel_bo(obj); |
| 1100 | 1100 | ||
| 1101 | /* Pinned buffers may be scanout, so flush the cache */ | 1101 | /* Pinned buffers may be scanout, so flush the cache */ |
| 1102 | if (obj_priv->pin_count) | 1102 | if (obj_priv->pin_count) |
| @@ -1167,7 +1167,7 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
| 1167 | struct drm_gem_object *obj = vma->vm_private_data; | 1167 | struct drm_gem_object *obj = vma->vm_private_data; |
| 1168 | struct drm_device *dev = obj->dev; | 1168 | struct drm_device *dev = obj->dev; |
| 1169 | struct drm_i915_private *dev_priv = dev->dev_private; | 1169 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1170 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1170 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1171 | pgoff_t page_offset; | 1171 | pgoff_t page_offset; |
| 1172 | unsigned long pfn; | 1172 | unsigned long pfn; |
| 1173 | int ret = 0; | 1173 | int ret = 0; |
| @@ -1234,7 +1234,7 @@ i915_gem_create_mmap_offset(struct drm_gem_object *obj) | |||
| 1234 | { | 1234 | { |
| 1235 | struct drm_device *dev = obj->dev; | 1235 | struct drm_device *dev = obj->dev; |
| 1236 | struct drm_gem_mm *mm = dev->mm_private; | 1236 | struct drm_gem_mm *mm = dev->mm_private; |
| 1237 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1237 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1238 | struct drm_map_list *list; | 1238 | struct drm_map_list *list; |
| 1239 | struct drm_local_map *map; | 1239 | struct drm_local_map *map; |
| 1240 | int ret = 0; | 1240 | int ret = 0; |
| @@ -1305,7 +1305,7 @@ void | |||
| 1305 | i915_gem_release_mmap(struct drm_gem_object *obj) | 1305 | i915_gem_release_mmap(struct drm_gem_object *obj) |
| 1306 | { | 1306 | { |
| 1307 | struct drm_device *dev = obj->dev; | 1307 | struct drm_device *dev = obj->dev; |
| 1308 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1308 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1309 | 1309 | ||
| 1310 | if (dev->dev_mapping) | 1310 | if (dev->dev_mapping) |
| 1311 | unmap_mapping_range(dev->dev_mapping, | 1311 | unmap_mapping_range(dev->dev_mapping, |
| @@ -1316,7 +1316,7 @@ static void | |||
| 1316 | i915_gem_free_mmap_offset(struct drm_gem_object *obj) | 1316 | i915_gem_free_mmap_offset(struct drm_gem_object *obj) |
| 1317 | { | 1317 | { |
| 1318 | struct drm_device *dev = obj->dev; | 1318 | struct drm_device *dev = obj->dev; |
| 1319 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1319 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1320 | struct drm_gem_mm *mm = dev->mm_private; | 1320 | struct drm_gem_mm *mm = dev->mm_private; |
| 1321 | struct drm_map_list *list; | 1321 | struct drm_map_list *list; |
| 1322 | 1322 | ||
| @@ -1347,7 +1347,7 @@ static uint32_t | |||
| 1347 | i915_gem_get_gtt_alignment(struct drm_gem_object *obj) | 1347 | i915_gem_get_gtt_alignment(struct drm_gem_object *obj) |
| 1348 | { | 1348 | { |
| 1349 | struct drm_device *dev = obj->dev; | 1349 | struct drm_device *dev = obj->dev; |
| 1350 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1350 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1351 | int start, i; | 1351 | int start, i; |
| 1352 | 1352 | ||
| 1353 | /* | 1353 | /* |
| @@ -1406,7 +1406,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, | |||
| 1406 | 1406 | ||
| 1407 | mutex_lock(&dev->struct_mutex); | 1407 | mutex_lock(&dev->struct_mutex); |
| 1408 | 1408 | ||
| 1409 | obj_priv = obj->driver_private; | 1409 | obj_priv = to_intel_bo(obj); |
| 1410 | 1410 | ||
| 1411 | if (obj_priv->madv != I915_MADV_WILLNEED) { | 1411 | if (obj_priv->madv != I915_MADV_WILLNEED) { |
| 1412 | DRM_ERROR("Attempting to mmap a purgeable buffer\n"); | 1412 | DRM_ERROR("Attempting to mmap a purgeable buffer\n"); |
| @@ -1450,7 +1450,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, | |||
| 1450 | void | 1450 | void |
| 1451 | i915_gem_object_put_pages(struct drm_gem_object *obj) | 1451 | i915_gem_object_put_pages(struct drm_gem_object *obj) |
| 1452 | { | 1452 | { |
| 1453 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1453 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1454 | int page_count = obj->size / PAGE_SIZE; | 1454 | int page_count = obj->size / PAGE_SIZE; |
| 1455 | int i; | 1455 | int i; |
| 1456 | 1456 | ||
| @@ -1486,7 +1486,7 @@ i915_gem_object_move_to_active(struct drm_gem_object *obj, uint32_t seqno) | |||
| 1486 | { | 1486 | { |
| 1487 | struct drm_device *dev = obj->dev; | 1487 | struct drm_device *dev = obj->dev; |
| 1488 | drm_i915_private_t *dev_priv = dev->dev_private; | 1488 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 1489 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1489 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1490 | 1490 | ||
| 1491 | /* Add a reference if we're newly entering the active list. */ | 1491 | /* Add a reference if we're newly entering the active list. */ |
| 1492 | if (!obj_priv->active) { | 1492 | if (!obj_priv->active) { |
| @@ -1506,7 +1506,7 @@ i915_gem_object_move_to_flushing(struct drm_gem_object *obj) | |||
| 1506 | { | 1506 | { |
| 1507 | struct drm_device *dev = obj->dev; | 1507 | struct drm_device *dev = obj->dev; |
| 1508 | drm_i915_private_t *dev_priv = dev->dev_private; | 1508 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 1509 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1509 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1510 | 1510 | ||
| 1511 | BUG_ON(!obj_priv->active); | 1511 | BUG_ON(!obj_priv->active); |
| 1512 | list_move_tail(&obj_priv->list, &dev_priv->mm.flushing_list); | 1512 | list_move_tail(&obj_priv->list, &dev_priv->mm.flushing_list); |
| @@ -1517,7 +1517,7 @@ i915_gem_object_move_to_flushing(struct drm_gem_object *obj) | |||
| 1517 | static void | 1517 | static void |
| 1518 | i915_gem_object_truncate(struct drm_gem_object *obj) | 1518 | i915_gem_object_truncate(struct drm_gem_object *obj) |
| 1519 | { | 1519 | { |
| 1520 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1520 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1521 | struct inode *inode; | 1521 | struct inode *inode; |
| 1522 | 1522 | ||
| 1523 | inode = obj->filp->f_path.dentry->d_inode; | 1523 | inode = obj->filp->f_path.dentry->d_inode; |
| @@ -1538,7 +1538,7 @@ i915_gem_object_move_to_inactive(struct drm_gem_object *obj) | |||
| 1538 | { | 1538 | { |
| 1539 | struct drm_device *dev = obj->dev; | 1539 | struct drm_device *dev = obj->dev; |
| 1540 | drm_i915_private_t *dev_priv = dev->dev_private; | 1540 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 1541 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1541 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1542 | 1542 | ||
| 1543 | i915_verify_inactive(dev, __FILE__, __LINE__); | 1543 | i915_verify_inactive(dev, __FILE__, __LINE__); |
| 1544 | if (obj_priv->pin_count != 0) | 1544 | if (obj_priv->pin_count != 0) |
| @@ -1965,7 +1965,7 @@ static int | |||
| 1965 | i915_gem_object_wait_rendering(struct drm_gem_object *obj) | 1965 | i915_gem_object_wait_rendering(struct drm_gem_object *obj) |
| 1966 | { | 1966 | { |
| 1967 | struct drm_device *dev = obj->dev; | 1967 | struct drm_device *dev = obj->dev; |
| 1968 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1968 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1969 | int ret; | 1969 | int ret; |
| 1970 | 1970 | ||
| 1971 | /* This function only exists to support waiting for existing rendering, | 1971 | /* This function only exists to support waiting for existing rendering, |
| @@ -1997,7 +1997,7 @@ i915_gem_object_unbind(struct drm_gem_object *obj) | |||
| 1997 | { | 1997 | { |
| 1998 | struct drm_device *dev = obj->dev; | 1998 | struct drm_device *dev = obj->dev; |
| 1999 | drm_i915_private_t *dev_priv = dev->dev_private; | 1999 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2000 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2000 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2001 | int ret = 0; | 2001 | int ret = 0; |
| 2002 | 2002 | ||
| 2003 | #if WATCH_BUF | 2003 | #if WATCH_BUF |
| @@ -2173,7 +2173,7 @@ i915_gem_evict_something(struct drm_device *dev, int min_size) | |||
| 2173 | #if WATCH_LRU | 2173 | #if WATCH_LRU |
| 2174 | DRM_INFO("%s: evicting %p\n", __func__, obj); | 2174 | DRM_INFO("%s: evicting %p\n", __func__, obj); |
| 2175 | #endif | 2175 | #endif |
| 2176 | obj_priv = obj->driver_private; | 2176 | obj_priv = to_intel_bo(obj); |
| 2177 | BUG_ON(obj_priv->pin_count != 0); | 2177 | BUG_ON(obj_priv->pin_count != 0); |
| 2178 | BUG_ON(obj_priv->active); | 2178 | BUG_ON(obj_priv->active); |
| 2179 | 2179 | ||
| @@ -2244,7 +2244,7 @@ int | |||
| 2244 | i915_gem_object_get_pages(struct drm_gem_object *obj, | 2244 | i915_gem_object_get_pages(struct drm_gem_object *obj, |
| 2245 | gfp_t gfpmask) | 2245 | gfp_t gfpmask) |
| 2246 | { | 2246 | { |
| 2247 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2247 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2248 | int page_count, i; | 2248 | int page_count, i; |
| 2249 | struct address_space *mapping; | 2249 | struct address_space *mapping; |
| 2250 | struct inode *inode; | 2250 | struct inode *inode; |
| @@ -2297,7 +2297,7 @@ static void sandybridge_write_fence_reg(struct drm_i915_fence_reg *reg) | |||
| 2297 | struct drm_gem_object *obj = reg->obj; | 2297 | struct drm_gem_object *obj = reg->obj; |
| 2298 | struct drm_device *dev = obj->dev; | 2298 | struct drm_device *dev = obj->dev; |
| 2299 | drm_i915_private_t *dev_priv = dev->dev_private; | 2299 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2300 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2300 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2301 | int regnum = obj_priv->fence_reg; | 2301 | int regnum = obj_priv->fence_reg; |
| 2302 | uint64_t val; | 2302 | uint64_t val; |
| 2303 | 2303 | ||
| @@ -2319,7 +2319,7 @@ static void i965_write_fence_reg(struct drm_i915_fence_reg *reg) | |||
| 2319 | struct drm_gem_object *obj = reg->obj; | 2319 | struct drm_gem_object *obj = reg->obj; |
| 2320 | struct drm_device *dev = obj->dev; | 2320 | struct drm_device *dev = obj->dev; |
| 2321 | drm_i915_private_t *dev_priv = dev->dev_private; | 2321 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2322 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2322 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2323 | int regnum = obj_priv->fence_reg; | 2323 | int regnum = obj_priv->fence_reg; |
| 2324 | uint64_t val; | 2324 | uint64_t val; |
| 2325 | 2325 | ||
| @@ -2339,7 +2339,7 @@ static void i915_write_fence_reg(struct drm_i915_fence_reg *reg) | |||
| 2339 | struct drm_gem_object *obj = reg->obj; | 2339 | struct drm_gem_object *obj = reg->obj; |
| 2340 | struct drm_device *dev = obj->dev; | 2340 | struct drm_device *dev = obj->dev; |
| 2341 | drm_i915_private_t *dev_priv = dev->dev_private; | 2341 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2342 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2342 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2343 | int regnum = obj_priv->fence_reg; | 2343 | int regnum = obj_priv->fence_reg; |
| 2344 | int tile_width; | 2344 | int tile_width; |
| 2345 | uint32_t fence_reg, val; | 2345 | uint32_t fence_reg, val; |
| @@ -2381,7 +2381,7 @@ static void i830_write_fence_reg(struct drm_i915_fence_reg *reg) | |||
| 2381 | struct drm_gem_object *obj = reg->obj; | 2381 | struct drm_gem_object *obj = reg->obj; |
| 2382 | struct drm_device *dev = obj->dev; | 2382 | struct drm_device *dev = obj->dev; |
| 2383 | drm_i915_private_t *dev_priv = dev->dev_private; | 2383 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2384 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2384 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2385 | int regnum = obj_priv->fence_reg; | 2385 | int regnum = obj_priv->fence_reg; |
| 2386 | uint32_t val; | 2386 | uint32_t val; |
| 2387 | uint32_t pitch_val; | 2387 | uint32_t pitch_val; |
| @@ -2425,7 +2425,7 @@ static int i915_find_fence_reg(struct drm_device *dev) | |||
| 2425 | if (!reg->obj) | 2425 | if (!reg->obj) |
| 2426 | return i; | 2426 | return i; |
| 2427 | 2427 | ||
| 2428 | obj_priv = reg->obj->driver_private; | 2428 | obj_priv = to_intel_bo(reg->obj); |
| 2429 | if (!obj_priv->pin_count) | 2429 | if (!obj_priv->pin_count) |
| 2430 | avail++; | 2430 | avail++; |
| 2431 | } | 2431 | } |
| @@ -2480,7 +2480,7 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2480 | { | 2480 | { |
| 2481 | struct drm_device *dev = obj->dev; | 2481 | struct drm_device *dev = obj->dev; |
| 2482 | struct drm_i915_private *dev_priv = dev->dev_private; | 2482 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 2483 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2483 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2484 | struct drm_i915_fence_reg *reg = NULL; | 2484 | struct drm_i915_fence_reg *reg = NULL; |
| 2485 | int ret; | 2485 | int ret; |
| 2486 | 2486 | ||
| @@ -2547,7 +2547,7 @@ i915_gem_clear_fence_reg(struct drm_gem_object *obj) | |||
| 2547 | { | 2547 | { |
| 2548 | struct drm_device *dev = obj->dev; | 2548 | struct drm_device *dev = obj->dev; |
| 2549 | drm_i915_private_t *dev_priv = dev->dev_private; | 2549 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2550 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2550 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2551 | 2551 | ||
| 2552 | if (IS_GEN6(dev)) { | 2552 | if (IS_GEN6(dev)) { |
| 2553 | I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + | 2553 | I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + |
| @@ -2583,7 +2583,7 @@ int | |||
| 2583 | i915_gem_object_put_fence_reg(struct drm_gem_object *obj) | 2583 | i915_gem_object_put_fence_reg(struct drm_gem_object *obj) |
| 2584 | { | 2584 | { |
| 2585 | struct drm_device *dev = obj->dev; | 2585 | struct drm_device *dev = obj->dev; |
| 2586 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2586 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2587 | 2587 | ||
| 2588 | if (obj_priv->fence_reg == I915_FENCE_REG_NONE) | 2588 | if (obj_priv->fence_reg == I915_FENCE_REG_NONE) |
| 2589 | return 0; | 2589 | return 0; |
| @@ -2621,7 +2621,7 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment) | |||
| 2621 | { | 2621 | { |
| 2622 | struct drm_device *dev = obj->dev; | 2622 | struct drm_device *dev = obj->dev; |
| 2623 | drm_i915_private_t *dev_priv = dev->dev_private; | 2623 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2624 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2624 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2625 | struct drm_mm_node *free_space; | 2625 | struct drm_mm_node *free_space; |
| 2626 | gfp_t gfpmask = __GFP_NORETRY | __GFP_NOWARN; | 2626 | gfp_t gfpmask = __GFP_NORETRY | __GFP_NOWARN; |
| 2627 | int ret; | 2627 | int ret; |
| @@ -2728,7 +2728,7 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment) | |||
| 2728 | void | 2728 | void |
| 2729 | i915_gem_clflush_object(struct drm_gem_object *obj) | 2729 | i915_gem_clflush_object(struct drm_gem_object *obj) |
| 2730 | { | 2730 | { |
| 2731 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2731 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2732 | 2732 | ||
| 2733 | /* If we don't have a page list set up, then we're not pinned | 2733 | /* If we don't have a page list set up, then we're not pinned |
| 2734 | * to GPU, and we can ignore the cache flush because it'll happen | 2734 | * to GPU, and we can ignore the cache flush because it'll happen |
| @@ -2829,7 +2829,7 @@ i915_gem_object_flush_write_domain(struct drm_gem_object *obj) | |||
| 2829 | int | 2829 | int |
| 2830 | i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, int write) | 2830 | i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, int write) |
| 2831 | { | 2831 | { |
| 2832 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2832 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2833 | uint32_t old_write_domain, old_read_domains; | 2833 | uint32_t old_write_domain, old_read_domains; |
| 2834 | int ret; | 2834 | int ret; |
| 2835 | 2835 | ||
| @@ -2879,7 +2879,7 @@ int | |||
| 2879 | i915_gem_object_set_to_display_plane(struct drm_gem_object *obj) | 2879 | i915_gem_object_set_to_display_plane(struct drm_gem_object *obj) |
| 2880 | { | 2880 | { |
| 2881 | struct drm_device *dev = obj->dev; | 2881 | struct drm_device *dev = obj->dev; |
| 2882 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 2882 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 2883 | uint32_t old_write_domain, old_read_domains; | 2883 | uint32_t old_write_domain, old_read_domains; |
| 2884 | int ret; | 2884 | int ret; |
| 2885 | 2885 | ||
| @@ -3092,7 +3092,7 @@ static void | |||
| 3092 | i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) | 3092 | i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) |
| 3093 | { | 3093 | { |
| 3094 | struct drm_device *dev = obj->dev; | 3094 | struct drm_device *dev = obj->dev; |
| 3095 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 3095 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 3096 | uint32_t invalidate_domains = 0; | 3096 | uint32_t invalidate_domains = 0; |
| 3097 | uint32_t flush_domains = 0; | 3097 | uint32_t flush_domains = 0; |
| 3098 | uint32_t old_read_domains; | 3098 | uint32_t old_read_domains; |
| @@ -3177,7 +3177,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) | |||
| 3177 | static void | 3177 | static void |
| 3178 | i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj) | 3178 | i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj) |
| 3179 | { | 3179 | { |
| 3180 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 3180 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 3181 | 3181 | ||
| 3182 | if (!obj_priv->page_cpu_valid) | 3182 | if (!obj_priv->page_cpu_valid) |
| 3183 | return; | 3183 | return; |
| @@ -3217,7 +3217,7 @@ static int | |||
| 3217 | i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj, | 3217 | i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj, |
| 3218 | uint64_t offset, uint64_t size) | 3218 | uint64_t offset, uint64_t size) |
| 3219 | { | 3219 | { |
| 3220 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 3220 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 3221 | uint32_t old_read_domains; | 3221 | uint32_t old_read_domains; |
| 3222 | int i, ret; | 3222 | int i, ret; |
| 3223 | 3223 | ||
| @@ -3286,7 +3286,7 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj, | |||
| 3286 | { | 3286 | { |
| 3287 | struct drm_device *dev = obj->dev; | 3287 | struct drm_device *dev = obj->dev; |
| 3288 | drm_i915_private_t *dev_priv = dev->dev_private; | 3288 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 3289 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 3289 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 3290 | int i, ret; | 3290 | int i, ret; |
| 3291 | void __iomem *reloc_page; | 3291 | void __iomem *reloc_page; |
| 3292 | bool need_fence; | 3292 | bool need_fence; |
| @@ -3337,7 +3337,7 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj, | |||
| 3337 | i915_gem_object_unpin(obj); | 3337 | i915_gem_object_unpin(obj); |
| 3338 | return -EBADF; | 3338 | return -EBADF; |
| 3339 | } | 3339 | } |
| 3340 | target_obj_priv = target_obj->driver_private; | 3340 | target_obj_priv = to_intel_bo(target_obj); |
| 3341 | 3341 | ||
| 3342 | #if WATCH_RELOC | 3342 | #if WATCH_RELOC |
| 3343 | DRM_INFO("%s: obj %p offset %08x target %d " | 3343 | DRM_INFO("%s: obj %p offset %08x target %d " |
| @@ -3689,7 +3689,7 @@ i915_gem_wait_for_pending_flip(struct drm_device *dev, | |||
| 3689 | prepare_to_wait(&dev_priv->pending_flip_queue, | 3689 | prepare_to_wait(&dev_priv->pending_flip_queue, |
| 3690 | &wait, TASK_INTERRUPTIBLE); | 3690 | &wait, TASK_INTERRUPTIBLE); |
| 3691 | for (i = 0; i < count; i++) { | 3691 | for (i = 0; i < count; i++) { |
| 3692 | obj_priv = object_list[i]->driver_private; | 3692 | obj_priv = to_intel_bo(object_list[i]); |
| 3693 | if (atomic_read(&obj_priv->pending_flip) > 0) | 3693 | if (atomic_read(&obj_priv->pending_flip) > 0) |
| 3694 | break; | 3694 | break; |
| 3695 | } | 3695 | } |
| @@ -3798,7 +3798,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, | |||
| 3798 | goto err; | 3798 | goto err; |
| 3799 | } | 3799 | } |
| 3800 | 3800 | ||
| 3801 | obj_priv = object_list[i]->driver_private; | 3801 | obj_priv = to_intel_bo(object_list[i]); |
| 3802 | if (obj_priv->in_execbuffer) { | 3802 | if (obj_priv->in_execbuffer) { |
| 3803 | DRM_ERROR("Object %p appears more than once in object list\n", | 3803 | DRM_ERROR("Object %p appears more than once in object list\n", |
| 3804 | object_list[i]); | 3804 | object_list[i]); |
| @@ -3924,7 +3924,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, | |||
| 3924 | 3924 | ||
| 3925 | for (i = 0; i < args->buffer_count; i++) { | 3925 | for (i = 0; i < args->buffer_count; i++) { |
| 3926 | struct drm_gem_object *obj = object_list[i]; | 3926 | struct drm_gem_object *obj = object_list[i]; |
| 3927 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 3927 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 3928 | uint32_t old_write_domain = obj->write_domain; | 3928 | uint32_t old_write_domain = obj->write_domain; |
| 3929 | 3929 | ||
| 3930 | obj->write_domain = obj->pending_write_domain; | 3930 | obj->write_domain = obj->pending_write_domain; |
| @@ -3999,7 +3999,7 @@ err: | |||
| 3999 | 3999 | ||
| 4000 | for (i = 0; i < args->buffer_count; i++) { | 4000 | for (i = 0; i < args->buffer_count; i++) { |
| 4001 | if (object_list[i]) { | 4001 | if (object_list[i]) { |
| 4002 | obj_priv = object_list[i]->driver_private; | 4002 | obj_priv = to_intel_bo(object_list[i]); |
| 4003 | obj_priv->in_execbuffer = false; | 4003 | obj_priv->in_execbuffer = false; |
| 4004 | } | 4004 | } |
| 4005 | drm_gem_object_unreference(object_list[i]); | 4005 | drm_gem_object_unreference(object_list[i]); |
| @@ -4177,7 +4177,7 @@ int | |||
| 4177 | i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment) | 4177 | i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment) |
| 4178 | { | 4178 | { |
| 4179 | struct drm_device *dev = obj->dev; | 4179 | struct drm_device *dev = obj->dev; |
| 4180 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 4180 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 4181 | int ret; | 4181 | int ret; |
| 4182 | 4182 | ||
| 4183 | i915_verify_inactive(dev, __FILE__, __LINE__); | 4183 | i915_verify_inactive(dev, __FILE__, __LINE__); |
| @@ -4210,7 +4210,7 @@ i915_gem_object_unpin(struct drm_gem_object *obj) | |||
| 4210 | { | 4210 | { |
| 4211 | struct drm_device *dev = obj->dev; | 4211 | struct drm_device *dev = obj->dev; |
| 4212 | drm_i915_private_t *dev_priv = dev->dev_private; | 4212 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 4213 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 4213 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 4214 | 4214 | ||
| 4215 | i915_verify_inactive(dev, __FILE__, __LINE__); | 4215 | i915_verify_inactive(dev, __FILE__, __LINE__); |
| 4216 | obj_priv->pin_count--; | 4216 | obj_priv->pin_count--; |
| @@ -4250,7 +4250,7 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data, | |||
| 4250 | mutex_unlock(&dev->struct_mutex); | 4250 | mutex_unlock(&dev->struct_mutex); |
| 4251 | return -EBADF; | 4251 | return -EBADF; |
| 4252 | } | 4252 | } |
| 4253 | obj_priv = obj->driver_private; | 4253 | obj_priv = to_intel_bo(obj); |
| 4254 | 4254 | ||
| 4255 | if (obj_priv->madv != I915_MADV_WILLNEED) { | 4255 | if (obj_priv->madv != I915_MADV_WILLNEED) { |
| 4256 | DRM_ERROR("Attempting to pin a purgeable buffer\n"); | 4256 | DRM_ERROR("Attempting to pin a purgeable buffer\n"); |
| @@ -4307,7 +4307,7 @@ i915_gem_unpin_ioctl(struct drm_device *dev, void *data, | |||
| 4307 | return -EBADF; | 4307 | return -EBADF; |
| 4308 | } | 4308 | } |
| 4309 | 4309 | ||
| 4310 | obj_priv = obj->driver_private; | 4310 | obj_priv = to_intel_bo(obj); |
| 4311 | if (obj_priv->pin_filp != file_priv) { | 4311 | if (obj_priv->pin_filp != file_priv) { |
| 4312 | DRM_ERROR("Not pinned by caller in i915_gem_pin_ioctl(): %d\n", | 4312 | DRM_ERROR("Not pinned by caller in i915_gem_pin_ioctl(): %d\n", |
| 4313 | args->handle); | 4313 | args->handle); |
| @@ -4349,7 +4349,7 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, | |||
| 4349 | */ | 4349 | */ |
| 4350 | i915_gem_retire_requests(dev); | 4350 | i915_gem_retire_requests(dev); |
| 4351 | 4351 | ||
| 4352 | obj_priv = obj->driver_private; | 4352 | obj_priv = to_intel_bo(obj); |
| 4353 | /* Don't count being on the flushing list against the object being | 4353 | /* Don't count being on the flushing list against the object being |
| 4354 | * done. Otherwise, a buffer left on the flushing list but not getting | 4354 | * done. Otherwise, a buffer left on the flushing list but not getting |
| 4355 | * flushed (because nobody's flushing that domain) won't ever return | 4355 | * flushed (because nobody's flushing that domain) won't ever return |
| @@ -4395,7 +4395,7 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data, | |||
| 4395 | } | 4395 | } |
| 4396 | 4396 | ||
| 4397 | mutex_lock(&dev->struct_mutex); | 4397 | mutex_lock(&dev->struct_mutex); |
| 4398 | obj_priv = obj->driver_private; | 4398 | obj_priv = to_intel_bo(obj); |
| 4399 | 4399 | ||
| 4400 | if (obj_priv->pin_count) { | 4400 | if (obj_priv->pin_count) { |
| 4401 | drm_gem_object_unreference(obj); | 4401 | drm_gem_object_unreference(obj); |
| @@ -4456,7 +4456,7 @@ int i915_gem_init_object(struct drm_gem_object *obj) | |||
| 4456 | void i915_gem_free_object(struct drm_gem_object *obj) | 4456 | void i915_gem_free_object(struct drm_gem_object *obj) |
| 4457 | { | 4457 | { |
| 4458 | struct drm_device *dev = obj->dev; | 4458 | struct drm_device *dev = obj->dev; |
| 4459 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 4459 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 4460 | 4460 | ||
| 4461 | trace_i915_gem_object_destroy(obj); | 4461 | trace_i915_gem_object_destroy(obj); |
| 4462 | 4462 | ||
| @@ -4565,7 +4565,7 @@ i915_gem_init_hws(struct drm_device *dev) | |||
| 4565 | DRM_ERROR("Failed to allocate status page\n"); | 4565 | DRM_ERROR("Failed to allocate status page\n"); |
| 4566 | return -ENOMEM; | 4566 | return -ENOMEM; |
| 4567 | } | 4567 | } |
| 4568 | obj_priv = obj->driver_private; | 4568 | obj_priv = to_intel_bo(obj); |
| 4569 | obj_priv->agp_type = AGP_USER_CACHED_MEMORY; | 4569 | obj_priv->agp_type = AGP_USER_CACHED_MEMORY; |
| 4570 | 4570 | ||
| 4571 | ret = i915_gem_object_pin(obj, 4096); | 4571 | ret = i915_gem_object_pin(obj, 4096); |
| @@ -4609,7 +4609,7 @@ i915_gem_cleanup_hws(struct drm_device *dev) | |||
| 4609 | return; | 4609 | return; |
| 4610 | 4610 | ||
| 4611 | obj = dev_priv->hws_obj; | 4611 | obj = dev_priv->hws_obj; |
| 4612 | obj_priv = obj->driver_private; | 4612 | obj_priv = to_intel_bo(obj); |
| 4613 | 4613 | ||
| 4614 | kunmap(obj_priv->pages[0]); | 4614 | kunmap(obj_priv->pages[0]); |
| 4615 | i915_gem_object_unpin(obj); | 4615 | i915_gem_object_unpin(obj); |
| @@ -4643,7 +4643,7 @@ i915_gem_init_ringbuffer(struct drm_device *dev) | |||
| 4643 | i915_gem_cleanup_hws(dev); | 4643 | i915_gem_cleanup_hws(dev); |
| 4644 | return -ENOMEM; | 4644 | return -ENOMEM; |
| 4645 | } | 4645 | } |
| 4646 | obj_priv = obj->driver_private; | 4646 | obj_priv = to_intel_bo(obj); |
| 4647 | 4647 | ||
| 4648 | ret = i915_gem_object_pin(obj, 4096); | 4648 | ret = i915_gem_object_pin(obj, 4096); |
| 4649 | if (ret != 0) { | 4649 | if (ret != 0) { |
| @@ -4936,7 +4936,7 @@ void i915_gem_detach_phys_object(struct drm_device *dev, | |||
| 4936 | int ret; | 4936 | int ret; |
| 4937 | int page_count; | 4937 | int page_count; |
| 4938 | 4938 | ||
| 4939 | obj_priv = obj->driver_private; | 4939 | obj_priv = to_intel_bo(obj); |
| 4940 | if (!obj_priv->phys_obj) | 4940 | if (!obj_priv->phys_obj) |
| 4941 | return; | 4941 | return; |
| 4942 | 4942 | ||
| @@ -4975,7 +4975,7 @@ i915_gem_attach_phys_object(struct drm_device *dev, | |||
| 4975 | if (id > I915_MAX_PHYS_OBJECT) | 4975 | if (id > I915_MAX_PHYS_OBJECT) |
| 4976 | return -EINVAL; | 4976 | return -EINVAL; |
| 4977 | 4977 | ||
| 4978 | obj_priv = obj->driver_private; | 4978 | obj_priv = to_intel_bo(obj); |
| 4979 | 4979 | ||
| 4980 | if (obj_priv->phys_obj) { | 4980 | if (obj_priv->phys_obj) { |
| 4981 | if (obj_priv->phys_obj->id == id) | 4981 | if (obj_priv->phys_obj->id == id) |
| @@ -5026,7 +5026,7 @@ i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj, | |||
| 5026 | struct drm_i915_gem_pwrite *args, | 5026 | struct drm_i915_gem_pwrite *args, |
| 5027 | struct drm_file *file_priv) | 5027 | struct drm_file *file_priv) |
| 5028 | { | 5028 | { |
| 5029 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 5029 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 5030 | void *obj_addr; | 5030 | void *obj_addr; |
| 5031 | int ret; | 5031 | int ret; |
| 5032 | char __user *user_data; | 5032 | char __user *user_data; |
diff --git a/drivers/gpu/drm/i915/i915_gem_debug.c b/drivers/gpu/drm/i915/i915_gem_debug.c index e602614bd3f8..35507cf53fa3 100644 --- a/drivers/gpu/drm/i915/i915_gem_debug.c +++ b/drivers/gpu/drm/i915/i915_gem_debug.c | |||
| @@ -72,7 +72,7 @@ void | |||
| 72 | i915_gem_dump_object(struct drm_gem_object *obj, int len, | 72 | i915_gem_dump_object(struct drm_gem_object *obj, int len, |
| 73 | const char *where, uint32_t mark) | 73 | const char *where, uint32_t mark) |
| 74 | { | 74 | { |
| 75 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 75 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 76 | int page; | 76 | int page; |
| 77 | 77 | ||
| 78 | DRM_INFO("%s: object at offset %08x\n", where, obj_priv->gtt_offset); | 78 | DRM_INFO("%s: object at offset %08x\n", where, obj_priv->gtt_offset); |
| @@ -137,7 +137,7 @@ void | |||
| 137 | i915_gem_object_check_coherency(struct drm_gem_object *obj, int handle) | 137 | i915_gem_object_check_coherency(struct drm_gem_object *obj, int handle) |
| 138 | { | 138 | { |
| 139 | struct drm_device *dev = obj->dev; | 139 | struct drm_device *dev = obj->dev; |
| 140 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 140 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 141 | int page; | 141 | int page; |
| 142 | uint32_t *gtt_mapping; | 142 | uint32_t *gtt_mapping; |
| 143 | uint32_t *backing_map = NULL; | 143 | uint32_t *backing_map = NULL; |
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c index c01c878e51ba..449157f71610 100644 --- a/drivers/gpu/drm/i915/i915_gem_tiling.c +++ b/drivers/gpu/drm/i915/i915_gem_tiling.c | |||
| @@ -240,7 +240,7 @@ bool | |||
| 240 | i915_gem_object_fence_offset_ok(struct drm_gem_object *obj, int tiling_mode) | 240 | i915_gem_object_fence_offset_ok(struct drm_gem_object *obj, int tiling_mode) |
| 241 | { | 241 | { |
| 242 | struct drm_device *dev = obj->dev; | 242 | struct drm_device *dev = obj->dev; |
| 243 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 243 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 244 | 244 | ||
| 245 | if (obj_priv->gtt_space == NULL) | 245 | if (obj_priv->gtt_space == NULL) |
| 246 | return true; | 246 | return true; |
| @@ -280,7 +280,7 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
| 280 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 280 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 281 | if (obj == NULL) | 281 | if (obj == NULL) |
| 282 | return -EINVAL; | 282 | return -EINVAL; |
| 283 | obj_priv = obj->driver_private; | 283 | obj_priv = to_intel_bo(obj); |
| 284 | 284 | ||
| 285 | if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) { | 285 | if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) { |
| 286 | drm_gem_object_unreference_unlocked(obj); | 286 | drm_gem_object_unreference_unlocked(obj); |
| @@ -364,7 +364,7 @@ i915_gem_get_tiling(struct drm_device *dev, void *data, | |||
| 364 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 364 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 365 | if (obj == NULL) | 365 | if (obj == NULL) |
| 366 | return -EINVAL; | 366 | return -EINVAL; |
| 367 | obj_priv = obj->driver_private; | 367 | obj_priv = to_intel_bo(obj); |
| 368 | 368 | ||
| 369 | mutex_lock(&dev->struct_mutex); | 369 | mutex_lock(&dev->struct_mutex); |
| 370 | 370 | ||
| @@ -427,7 +427,7 @@ i915_gem_object_do_bit_17_swizzle(struct drm_gem_object *obj) | |||
| 427 | { | 427 | { |
| 428 | struct drm_device *dev = obj->dev; | 428 | struct drm_device *dev = obj->dev; |
| 429 | drm_i915_private_t *dev_priv = dev->dev_private; | 429 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 430 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 430 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 431 | int page_count = obj->size >> PAGE_SHIFT; | 431 | int page_count = obj->size >> PAGE_SHIFT; |
| 432 | int i; | 432 | int i; |
| 433 | 433 | ||
| @@ -456,7 +456,7 @@ i915_gem_object_save_bit_17_swizzle(struct drm_gem_object *obj) | |||
| 456 | { | 456 | { |
| 457 | struct drm_device *dev = obj->dev; | 457 | struct drm_device *dev = obj->dev; |
| 458 | drm_i915_private_t *dev_priv = dev->dev_private; | 458 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 459 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 459 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 460 | int page_count = obj->size >> PAGE_SHIFT; | 460 | int page_count = obj->size >> PAGE_SHIFT; |
| 461 | int i; | 461 | int i; |
| 462 | 462 | ||
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 49c458bc6502..6421481d6222 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
| @@ -260,10 +260,10 @@ static void i915_hotplug_work_func(struct work_struct *work) | |||
| 260 | 260 | ||
| 261 | if (mode_config->num_connector) { | 261 | if (mode_config->num_connector) { |
| 262 | list_for_each_entry(connector, &mode_config->connector_list, head) { | 262 | list_for_each_entry(connector, &mode_config->connector_list, head) { |
| 263 | struct intel_output *intel_output = to_intel_output(connector); | 263 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 264 | 264 | ||
| 265 | if (intel_output->hot_plug) | 265 | if (intel_encoder->hot_plug) |
| 266 | (*intel_output->hot_plug) (intel_output); | 266 | (*intel_encoder->hot_plug) (intel_encoder); |
| 267 | } | 267 | } |
| 268 | } | 268 | } |
| 269 | /* Just fire off a uevent and let userspace tell us what to do */ | 269 | /* Just fire off a uevent and let userspace tell us what to do */ |
| @@ -444,7 +444,7 @@ i915_error_object_create(struct drm_device *dev, | |||
| 444 | if (src == NULL) | 444 | if (src == NULL) |
| 445 | return NULL; | 445 | return NULL; |
| 446 | 446 | ||
| 447 | src_priv = src->driver_private; | 447 | src_priv = to_intel_bo(src); |
| 448 | if (src_priv->pages == NULL) | 448 | if (src_priv->pages == NULL) |
| 449 | return NULL; | 449 | return NULL; |
| 450 | 450 | ||
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 38110ce742a5..759c2ef72eff 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
| @@ -247,19 +247,19 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector) | |||
| 247 | 247 | ||
| 248 | static bool intel_crt_detect_ddc(struct drm_connector *connector) | 248 | static bool intel_crt_detect_ddc(struct drm_connector *connector) |
| 249 | { | 249 | { |
| 250 | struct intel_output *intel_output = to_intel_output(connector); | 250 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 251 | 251 | ||
| 252 | /* CRT should always be at 0, but check anyway */ | 252 | /* CRT should always be at 0, but check anyway */ |
| 253 | if (intel_output->type != INTEL_OUTPUT_ANALOG) | 253 | if (intel_encoder->type != INTEL_OUTPUT_ANALOG) |
| 254 | return false; | 254 | return false; |
| 255 | 255 | ||
| 256 | return intel_ddc_probe(intel_output); | 256 | return intel_ddc_probe(intel_encoder); |
| 257 | } | 257 | } |
| 258 | 258 | ||
| 259 | static enum drm_connector_status | 259 | static enum drm_connector_status |
| 260 | intel_crt_load_detect(struct drm_crtc *crtc, struct intel_output *intel_output) | 260 | intel_crt_load_detect(struct drm_crtc *crtc, struct intel_encoder *intel_encoder) |
| 261 | { | 261 | { |
| 262 | struct drm_encoder *encoder = &intel_output->enc; | 262 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 263 | struct drm_device *dev = encoder->dev; | 263 | struct drm_device *dev = encoder->dev; |
| 264 | struct drm_i915_private *dev_priv = dev->dev_private; | 264 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 265 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 265 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| @@ -387,8 +387,8 @@ intel_crt_load_detect(struct drm_crtc *crtc, struct intel_output *intel_output) | |||
| 387 | static enum drm_connector_status intel_crt_detect(struct drm_connector *connector) | 387 | static enum drm_connector_status intel_crt_detect(struct drm_connector *connector) |
| 388 | { | 388 | { |
| 389 | struct drm_device *dev = connector->dev; | 389 | struct drm_device *dev = connector->dev; |
| 390 | struct intel_output *intel_output = to_intel_output(connector); | 390 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 391 | struct drm_encoder *encoder = &intel_output->enc; | 391 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 392 | struct drm_crtc *crtc; | 392 | struct drm_crtc *crtc; |
| 393 | int dpms_mode; | 393 | int dpms_mode; |
| 394 | enum drm_connector_status status; | 394 | enum drm_connector_status status; |
| @@ -405,13 +405,13 @@ static enum drm_connector_status intel_crt_detect(struct drm_connector *connecto | |||
| 405 | 405 | ||
| 406 | /* for pre-945g platforms use load detect */ | 406 | /* for pre-945g platforms use load detect */ |
| 407 | if (encoder->crtc && encoder->crtc->enabled) { | 407 | if (encoder->crtc && encoder->crtc->enabled) { |
| 408 | status = intel_crt_load_detect(encoder->crtc, intel_output); | 408 | status = intel_crt_load_detect(encoder->crtc, intel_encoder); |
| 409 | } else { | 409 | } else { |
| 410 | crtc = intel_get_load_detect_pipe(intel_output, | 410 | crtc = intel_get_load_detect_pipe(intel_encoder, |
| 411 | NULL, &dpms_mode); | 411 | NULL, &dpms_mode); |
| 412 | if (crtc) { | 412 | if (crtc) { |
| 413 | status = intel_crt_load_detect(crtc, intel_output); | 413 | status = intel_crt_load_detect(crtc, intel_encoder); |
| 414 | intel_release_load_detect_pipe(intel_output, dpms_mode); | 414 | intel_release_load_detect_pipe(intel_encoder, dpms_mode); |
| 415 | } else | 415 | } else |
| 416 | status = connector_status_unknown; | 416 | status = connector_status_unknown; |
| 417 | } | 417 | } |
| @@ -421,9 +421,9 @@ static enum drm_connector_status intel_crt_detect(struct drm_connector *connecto | |||
| 421 | 421 | ||
| 422 | static void intel_crt_destroy(struct drm_connector *connector) | 422 | static void intel_crt_destroy(struct drm_connector *connector) |
| 423 | { | 423 | { |
| 424 | struct intel_output *intel_output = to_intel_output(connector); | 424 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 425 | 425 | ||
| 426 | intel_i2c_destroy(intel_output->ddc_bus); | 426 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 427 | drm_sysfs_connector_remove(connector); | 427 | drm_sysfs_connector_remove(connector); |
| 428 | drm_connector_cleanup(connector); | 428 | drm_connector_cleanup(connector); |
| 429 | kfree(connector); | 429 | kfree(connector); |
| @@ -432,28 +432,28 @@ static void intel_crt_destroy(struct drm_connector *connector) | |||
| 432 | static int intel_crt_get_modes(struct drm_connector *connector) | 432 | static int intel_crt_get_modes(struct drm_connector *connector) |
| 433 | { | 433 | { |
| 434 | int ret; | 434 | int ret; |
| 435 | struct intel_output *intel_output = to_intel_output(connector); | 435 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 436 | struct i2c_adapter *ddcbus; | 436 | struct i2c_adapter *ddcbus; |
| 437 | struct drm_device *dev = connector->dev; | 437 | struct drm_device *dev = connector->dev; |
| 438 | 438 | ||
| 439 | 439 | ||
| 440 | ret = intel_ddc_get_modes(intel_output); | 440 | ret = intel_ddc_get_modes(intel_encoder); |
| 441 | if (ret || !IS_G4X(dev)) | 441 | if (ret || !IS_G4X(dev)) |
| 442 | goto end; | 442 | goto end; |
| 443 | 443 | ||
| 444 | ddcbus = intel_output->ddc_bus; | 444 | ddcbus = intel_encoder->ddc_bus; |
| 445 | /* Try to probe digital port for output in DVI-I -> VGA mode. */ | 445 | /* Try to probe digital port for output in DVI-I -> VGA mode. */ |
| 446 | intel_output->ddc_bus = | 446 | intel_encoder->ddc_bus = |
| 447 | intel_i2c_create(connector->dev, GPIOD, "CRTDDC_D"); | 447 | intel_i2c_create(connector->dev, GPIOD, "CRTDDC_D"); |
| 448 | 448 | ||
| 449 | if (!intel_output->ddc_bus) { | 449 | if (!intel_encoder->ddc_bus) { |
| 450 | intel_output->ddc_bus = ddcbus; | 450 | intel_encoder->ddc_bus = ddcbus; |
| 451 | dev_printk(KERN_ERR, &connector->dev->pdev->dev, | 451 | dev_printk(KERN_ERR, &connector->dev->pdev->dev, |
| 452 | "DDC bus registration failed for CRTDDC_D.\n"); | 452 | "DDC bus registration failed for CRTDDC_D.\n"); |
| 453 | goto end; | 453 | goto end; |
| 454 | } | 454 | } |
| 455 | /* Try to get modes by GPIOD port */ | 455 | /* Try to get modes by GPIOD port */ |
| 456 | ret = intel_ddc_get_modes(intel_output); | 456 | ret = intel_ddc_get_modes(intel_encoder); |
| 457 | intel_i2c_destroy(ddcbus); | 457 | intel_i2c_destroy(ddcbus); |
| 458 | 458 | ||
| 459 | end: | 459 | end: |
| @@ -506,23 +506,23 @@ static const struct drm_encoder_funcs intel_crt_enc_funcs = { | |||
| 506 | void intel_crt_init(struct drm_device *dev) | 506 | void intel_crt_init(struct drm_device *dev) |
| 507 | { | 507 | { |
| 508 | struct drm_connector *connector; | 508 | struct drm_connector *connector; |
| 509 | struct intel_output *intel_output; | 509 | struct intel_encoder *intel_encoder; |
| 510 | struct drm_i915_private *dev_priv = dev->dev_private; | 510 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 511 | u32 i2c_reg; | 511 | u32 i2c_reg; |
| 512 | 512 | ||
| 513 | intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL); | 513 | intel_encoder = kzalloc(sizeof(struct intel_encoder), GFP_KERNEL); |
| 514 | if (!intel_output) | 514 | if (!intel_encoder) |
| 515 | return; | 515 | return; |
| 516 | 516 | ||
| 517 | connector = &intel_output->base; | 517 | connector = &intel_encoder->base; |
| 518 | drm_connector_init(dev, &intel_output->base, | 518 | drm_connector_init(dev, &intel_encoder->base, |
| 519 | &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); | 519 | &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); |
| 520 | 520 | ||
| 521 | drm_encoder_init(dev, &intel_output->enc, &intel_crt_enc_funcs, | 521 | drm_encoder_init(dev, &intel_encoder->enc, &intel_crt_enc_funcs, |
| 522 | DRM_MODE_ENCODER_DAC); | 522 | DRM_MODE_ENCODER_DAC); |
| 523 | 523 | ||
| 524 | drm_mode_connector_attach_encoder(&intel_output->base, | 524 | drm_mode_connector_attach_encoder(&intel_encoder->base, |
| 525 | &intel_output->enc); | 525 | &intel_encoder->enc); |
| 526 | 526 | ||
| 527 | /* Set up the DDC bus. */ | 527 | /* Set up the DDC bus. */ |
| 528 | if (HAS_PCH_SPLIT(dev)) | 528 | if (HAS_PCH_SPLIT(dev)) |
| @@ -533,22 +533,22 @@ void intel_crt_init(struct drm_device *dev) | |||
| 533 | if (dev_priv->crt_ddc_bus != 0) | 533 | if (dev_priv->crt_ddc_bus != 0) |
| 534 | i2c_reg = dev_priv->crt_ddc_bus; | 534 | i2c_reg = dev_priv->crt_ddc_bus; |
| 535 | } | 535 | } |
| 536 | intel_output->ddc_bus = intel_i2c_create(dev, i2c_reg, "CRTDDC_A"); | 536 | intel_encoder->ddc_bus = intel_i2c_create(dev, i2c_reg, "CRTDDC_A"); |
| 537 | if (!intel_output->ddc_bus) { | 537 | if (!intel_encoder->ddc_bus) { |
| 538 | dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " | 538 | dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " |
| 539 | "failed.\n"); | 539 | "failed.\n"); |
| 540 | return; | 540 | return; |
| 541 | } | 541 | } |
| 542 | 542 | ||
| 543 | intel_output->type = INTEL_OUTPUT_ANALOG; | 543 | intel_encoder->type = INTEL_OUTPUT_ANALOG; |
| 544 | intel_output->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | | 544 | intel_encoder->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | |
| 545 | (1 << INTEL_ANALOG_CLONE_BIT) | | 545 | (1 << INTEL_ANALOG_CLONE_BIT) | |
| 546 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); | 546 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); |
| 547 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 547 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 548 | connector->interlace_allowed = 0; | 548 | connector->interlace_allowed = 0; |
| 549 | connector->doublescan_allowed = 0; | 549 | connector->doublescan_allowed = 0; |
| 550 | 550 | ||
| 551 | drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs); | 551 | drm_encoder_helper_add(&intel_encoder->enc, &intel_crt_helper_funcs); |
| 552 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); | 552 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); |
| 553 | 553 | ||
| 554 | drm_sysfs_connector_add(connector); | 554 | drm_sysfs_connector_add(connector); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e7e753b2845f..e7356fb6c918 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -747,16 +747,16 @@ bool intel_pipe_has_type (struct drm_crtc *crtc, int type) | |||
| 747 | list_for_each_entry(l_entry, &mode_config->connector_list, head) { | 747 | list_for_each_entry(l_entry, &mode_config->connector_list, head) { |
| 748 | if (l_entry->encoder && | 748 | if (l_entry->encoder && |
| 749 | l_entry->encoder->crtc == crtc) { | 749 | l_entry->encoder->crtc == crtc) { |
| 750 | struct intel_output *intel_output = to_intel_output(l_entry); | 750 | struct intel_encoder *intel_encoder = to_intel_encoder(l_entry); |
| 751 | if (intel_output->type == type) | 751 | if (intel_encoder->type == type) |
| 752 | return true; | 752 | return true; |
| 753 | } | 753 | } |
| 754 | } | 754 | } |
| 755 | return false; | 755 | return false; |
| 756 | } | 756 | } |
| 757 | 757 | ||
| 758 | struct drm_connector * | 758 | static struct drm_connector * |
| 759 | intel_pipe_get_output (struct drm_crtc *crtc) | 759 | intel_pipe_get_connector (struct drm_crtc *crtc) |
| 760 | { | 760 | { |
| 761 | struct drm_device *dev = crtc->dev; | 761 | struct drm_device *dev = crtc->dev; |
| 762 | struct drm_mode_config *mode_config = &dev->mode_config; | 762 | struct drm_mode_config *mode_config = &dev->mode_config; |
| @@ -1003,7 +1003,7 @@ static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval) | |||
| 1003 | struct drm_i915_private *dev_priv = dev->dev_private; | 1003 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1004 | struct drm_framebuffer *fb = crtc->fb; | 1004 | struct drm_framebuffer *fb = crtc->fb; |
| 1005 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); | 1005 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); |
| 1006 | struct drm_i915_gem_object *obj_priv = intel_fb->obj->driver_private; | 1006 | struct drm_i915_gem_object *obj_priv = to_intel_bo(intel_fb->obj); |
| 1007 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1007 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 1008 | int plane, i; | 1008 | int plane, i; |
| 1009 | u32 fbc_ctl, fbc_ctl2; | 1009 | u32 fbc_ctl, fbc_ctl2; |
| @@ -1080,7 +1080,7 @@ static void g4x_enable_fbc(struct drm_crtc *crtc, unsigned long interval) | |||
| 1080 | struct drm_i915_private *dev_priv = dev->dev_private; | 1080 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1081 | struct drm_framebuffer *fb = crtc->fb; | 1081 | struct drm_framebuffer *fb = crtc->fb; |
| 1082 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); | 1082 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); |
| 1083 | struct drm_i915_gem_object *obj_priv = intel_fb->obj->driver_private; | 1083 | struct drm_i915_gem_object *obj_priv = to_intel_bo(intel_fb->obj); |
| 1084 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1084 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 1085 | int plane = (intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : | 1085 | int plane = (intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : |
| 1086 | DPFC_CTL_PLANEB); | 1086 | DPFC_CTL_PLANEB); |
| @@ -1176,7 +1176,7 @@ static void intel_update_fbc(struct drm_crtc *crtc, | |||
| 1176 | return; | 1176 | return; |
| 1177 | 1177 | ||
| 1178 | intel_fb = to_intel_framebuffer(fb); | 1178 | intel_fb = to_intel_framebuffer(fb); |
| 1179 | obj_priv = intel_fb->obj->driver_private; | 1179 | obj_priv = to_intel_bo(intel_fb->obj); |
| 1180 | 1180 | ||
| 1181 | /* | 1181 | /* |
| 1182 | * If FBC is already on, we just have to verify that we can | 1182 | * If FBC is already on, we just have to verify that we can |
| @@ -1243,7 +1243,7 @@ out_disable: | |||
| 1243 | static int | 1243 | static int |
| 1244 | intel_pin_and_fence_fb_obj(struct drm_device *dev, struct drm_gem_object *obj) | 1244 | intel_pin_and_fence_fb_obj(struct drm_device *dev, struct drm_gem_object *obj) |
| 1245 | { | 1245 | { |
| 1246 | struct drm_i915_gem_object *obj_priv = obj->driver_private; | 1246 | struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); |
| 1247 | u32 alignment; | 1247 | u32 alignment; |
| 1248 | int ret; | 1248 | int ret; |
| 1249 | 1249 | ||
| @@ -1323,7 +1323,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 1323 | 1323 | ||
| 1324 | intel_fb = to_intel_framebuffer(crtc->fb); | 1324 | intel_fb = to_intel_framebuffer(crtc->fb); |
| 1325 | obj = intel_fb->obj; | 1325 | obj = intel_fb->obj; |
| 1326 | obj_priv = obj->driver_private; | 1326 | obj_priv = to_intel_bo(obj); |
| 1327 | 1327 | ||
| 1328 | mutex_lock(&dev->struct_mutex); | 1328 | mutex_lock(&dev->struct_mutex); |
| 1329 | ret = intel_pin_and_fence_fb_obj(dev, obj); | 1329 | ret = intel_pin_and_fence_fb_obj(dev, obj); |
| @@ -1401,7 +1401,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 1401 | 1401 | ||
| 1402 | if (old_fb) { | 1402 | if (old_fb) { |
| 1403 | intel_fb = to_intel_framebuffer(old_fb); | 1403 | intel_fb = to_intel_framebuffer(old_fb); |
| 1404 | obj_priv = intel_fb->obj->driver_private; | 1404 | obj_priv = to_intel_bo(intel_fb->obj); |
| 1405 | i915_gem_object_unpin(intel_fb->obj); | 1405 | i915_gem_object_unpin(intel_fb->obj); |
| 1406 | } | 1406 | } |
| 1407 | intel_increase_pllclock(crtc, true); | 1407 | intel_increase_pllclock(crtc, true); |
| @@ -2917,7 +2917,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
| 2917 | int dspsize_reg = (plane == 0) ? DSPASIZE : DSPBSIZE; | 2917 | int dspsize_reg = (plane == 0) ? DSPASIZE : DSPBSIZE; |
| 2918 | int dsppos_reg = (plane == 0) ? DSPAPOS : DSPBPOS; | 2918 | int dsppos_reg = (plane == 0) ? DSPAPOS : DSPBPOS; |
| 2919 | int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC; | 2919 | int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC; |
| 2920 | int refclk, num_outputs = 0; | 2920 | int refclk, num_connectors = 0; |
| 2921 | intel_clock_t clock, reduced_clock; | 2921 | intel_clock_t clock, reduced_clock; |
| 2922 | u32 dpll = 0, fp = 0, fp2 = 0, dspcntr, pipeconf; | 2922 | u32 dpll = 0, fp = 0, fp2 = 0, dspcntr, pipeconf; |
| 2923 | bool ok, has_reduced_clock = false, is_sdvo = false, is_dvo = false; | 2923 | bool ok, has_reduced_clock = false, is_sdvo = false, is_dvo = false; |
| @@ -2943,19 +2943,19 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
| 2943 | drm_vblank_pre_modeset(dev, pipe); | 2943 | drm_vblank_pre_modeset(dev, pipe); |
| 2944 | 2944 | ||
| 2945 | list_for_each_entry(connector, &mode_config->connector_list, head) { | 2945 | list_for_each_entry(connector, &mode_config->connector_list, head) { |
| 2946 | struct intel_output *intel_output = to_intel_output(connector); | 2946 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 2947 | 2947 | ||
| 2948 | if (!connector->encoder || connector->encoder->crtc != crtc) | 2948 | if (!connector->encoder || connector->encoder->crtc != crtc) |
| 2949 | continue; | 2949 | continue; |
| 2950 | 2950 | ||
| 2951 | switch (intel_output->type) { | 2951 | switch (intel_encoder->type) { |
| 2952 | case INTEL_OUTPUT_LVDS: | 2952 | case INTEL_OUTPUT_LVDS: |
| 2953 | is_lvds = true; | 2953 | is_lvds = true; |
| 2954 | break; | 2954 | break; |
| 2955 | case INTEL_OUTPUT_SDVO: | 2955 | case INTEL_OUTPUT_SDVO: |
| 2956 | case INTEL_OUTPUT_HDMI: | 2956 | case INTEL_OUTPUT_HDMI: |
| 2957 | is_sdvo = true; | 2957 | is_sdvo = true; |
| 2958 | if (intel_output->needs_tv_clock) | 2958 | if (intel_encoder->needs_tv_clock) |
| 2959 | is_tv = true; | 2959 | is_tv = true; |
| 2960 | break; | 2960 | break; |
| 2961 | case INTEL_OUTPUT_DVO: | 2961 | case INTEL_OUTPUT_DVO: |
| @@ -2975,10 +2975,10 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
| 2975 | break; | 2975 | break; |
| 2976 | } | 2976 | } |
| 2977 | 2977 | ||
| 2978 | num_outputs++; | 2978 | num_connectors++; |
| 2979 | } | 2979 | } |
| 2980 | 2980 | ||
| 2981 | if (is_lvds && dev_priv->lvds_use_ssc && num_outputs < 2) { | 2981 | if (is_lvds && dev_priv->lvds_use_ssc && num_connectors < 2) { |
| 2982 | refclk = dev_priv->lvds_ssc_freq * 1000; | 2982 | refclk = dev_priv->lvds_ssc_freq * 1000; |
| 2983 | DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", | 2983 | DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", |
| 2984 | refclk / 1000); | 2984 | refclk / 1000); |
| @@ -3049,8 +3049,8 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
| 3049 | if (is_edp) { | 3049 | if (is_edp) { |
| 3050 | struct drm_connector *edp; | 3050 | struct drm_connector *edp; |
| 3051 | target_clock = mode->clock; | 3051 | target_clock = mode->clock; |
| 3052 | edp = intel_pipe_get_output(crtc); | 3052 | edp = intel_pipe_get_connector(crtc); |
| 3053 | intel_edp_link_config(to_intel_output(edp), | 3053 | intel_edp_link_config(to_intel_encoder(edp), |
| 3054 | &lane, &link_bw); | 3054 | &lane, &link_bw); |
| 3055 | } else { | 3055 | } else { |
| 3056 | /* DP over FDI requires target mode clock | 3056 | /* DP over FDI requires target mode clock |
| @@ -3231,7 +3231,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
| 3231 | /* XXX: just matching BIOS for now */ | 3231 | /* XXX: just matching BIOS for now */ |
| 3232 | /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ | 3232 | /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ |
| 3233 | dpll |= 3; | 3233 | dpll |= 3; |
| 3234 | else if (is_lvds && dev_priv->lvds_use_ssc && num_outputs < 2) | 3234 | else if (is_lvds && dev_priv->lvds_use_ssc && num_connectors < 2) |
| 3235 | dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; | 3235 | dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; |
| 3236 | else | 3236 | else |
| 3237 | dpll |= PLL_REF_INPUT_DREFCLK; | 3237 | dpll |= PLL_REF_INPUT_DREFCLK; |
| @@ -3511,7 +3511,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, | |||
| 3511 | if (!bo) | 3511 | if (!bo) |
| 3512 | return -ENOENT; | 3512 | return -ENOENT; |
| 3513 | 3513 | ||
| 3514 | obj_priv = bo->driver_private; | 3514 | obj_priv = to_intel_bo(bo); |
| 3515 | 3515 | ||
| 3516 | if (bo->size < width * height * 4) { | 3516 | if (bo->size < width * height * 4) { |
| 3517 | DRM_ERROR("buffer is to small\n"); | 3517 | DRM_ERROR("buffer is to small\n"); |
| @@ -3655,9 +3655,9 @@ static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, | |||
| 3655 | * detection. | 3655 | * detection. |
| 3656 | * | 3656 | * |
| 3657 | * It will be up to the load-detect code to adjust the pipe as appropriate for | 3657 | * It will be up to the load-detect code to adjust the pipe as appropriate for |
| 3658 | * its requirements. The pipe will be connected to no other outputs. | 3658 | * its requirements. The pipe will be connected to no other encoders. |
| 3659 | * | 3659 | * |
| 3660 | * Currently this code will only succeed if there is a pipe with no outputs | 3660 | * Currently this code will only succeed if there is a pipe with no encoders |
| 3661 | * configured for it. In the future, it could choose to temporarily disable | 3661 | * configured for it. In the future, it could choose to temporarily disable |
| 3662 | * some outputs to free up a pipe for its use. | 3662 | * some outputs to free up a pipe for its use. |
| 3663 | * | 3663 | * |
| @@ -3670,14 +3670,14 @@ static struct drm_display_mode load_detect_mode = { | |||
| 3670 | 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 3670 | 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
| 3671 | }; | 3671 | }; |
| 3672 | 3672 | ||
| 3673 | struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, | 3673 | struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, |
| 3674 | struct drm_display_mode *mode, | 3674 | struct drm_display_mode *mode, |
| 3675 | int *dpms_mode) | 3675 | int *dpms_mode) |
| 3676 | { | 3676 | { |
| 3677 | struct intel_crtc *intel_crtc; | 3677 | struct intel_crtc *intel_crtc; |
| 3678 | struct drm_crtc *possible_crtc; | 3678 | struct drm_crtc *possible_crtc; |
| 3679 | struct drm_crtc *supported_crtc =NULL; | 3679 | struct drm_crtc *supported_crtc =NULL; |
| 3680 | struct drm_encoder *encoder = &intel_output->enc; | 3680 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 3681 | struct drm_crtc *crtc = NULL; | 3681 | struct drm_crtc *crtc = NULL; |
| 3682 | struct drm_device *dev = encoder->dev; | 3682 | struct drm_device *dev = encoder->dev; |
| 3683 | struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; | 3683 | struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; |
| @@ -3729,8 +3729,8 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, | |||
| 3729 | } | 3729 | } |
| 3730 | 3730 | ||
| 3731 | encoder->crtc = crtc; | 3731 | encoder->crtc = crtc; |
| 3732 | intel_output->base.encoder = encoder; | 3732 | intel_encoder->base.encoder = encoder; |
| 3733 | intel_output->load_detect_temp = true; | 3733 | intel_encoder->load_detect_temp = true; |
| 3734 | 3734 | ||
| 3735 | intel_crtc = to_intel_crtc(crtc); | 3735 | intel_crtc = to_intel_crtc(crtc); |
| 3736 | *dpms_mode = intel_crtc->dpms_mode; | 3736 | *dpms_mode = intel_crtc->dpms_mode; |
| @@ -3755,23 +3755,23 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, | |||
| 3755 | return crtc; | 3755 | return crtc; |
| 3756 | } | 3756 | } |
| 3757 | 3757 | ||
| 3758 | void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_mode) | 3758 | void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, int dpms_mode) |
| 3759 | { | 3759 | { |
| 3760 | struct drm_encoder *encoder = &intel_output->enc; | 3760 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 3761 | struct drm_device *dev = encoder->dev; | 3761 | struct drm_device *dev = encoder->dev; |
| 3762 | struct drm_crtc *crtc = encoder->crtc; | 3762 | struct drm_crtc *crtc = encoder->crtc; |
| 3763 | struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; | 3763 | struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; |
| 3764 | struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; | 3764 | struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; |
| 3765 | 3765 | ||
| 3766 | if (intel_output->load_detect_temp) { | 3766 | if (intel_encoder->load_detect_temp) { |
| 3767 | encoder->crtc = NULL; | 3767 | encoder->crtc = NULL; |
| 3768 | intel_output->base.encoder = NULL; | 3768 | intel_encoder->base.encoder = NULL; |
| 3769 | intel_output->load_detect_temp = false; | 3769 | intel_encoder->load_detect_temp = false; |
| 3770 | crtc->enabled = drm_helper_crtc_in_use(crtc); | 3770 | crtc->enabled = drm_helper_crtc_in_use(crtc); |
| 3771 | drm_helper_disable_unused_functions(dev); | 3771 | drm_helper_disable_unused_functions(dev); |
| 3772 | } | 3772 | } |
| 3773 | 3773 | ||
| 3774 | /* Switch crtc and output back off if necessary */ | 3774 | /* Switch crtc and encoder back off if necessary */ |
| 3775 | if (crtc->enabled && dpms_mode != DRM_MODE_DPMS_ON) { | 3775 | if (crtc->enabled && dpms_mode != DRM_MODE_DPMS_ON) { |
| 3776 | if (encoder->crtc == crtc) | 3776 | if (encoder->crtc == crtc) |
| 3777 | encoder_funcs->dpms(encoder, dpms_mode); | 3777 | encoder_funcs->dpms(encoder, dpms_mode); |
| @@ -4156,7 +4156,7 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe) | |||
| 4156 | work = intel_crtc->unpin_work; | 4156 | work = intel_crtc->unpin_work; |
| 4157 | if (work == NULL || !work->pending) { | 4157 | if (work == NULL || !work->pending) { |
| 4158 | if (work && !work->pending) { | 4158 | if (work && !work->pending) { |
| 4159 | obj_priv = work->pending_flip_obj->driver_private; | 4159 | obj_priv = to_intel_bo(work->pending_flip_obj); |
| 4160 | DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n", | 4160 | DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n", |
| 4161 | obj_priv, | 4161 | obj_priv, |
| 4162 | atomic_read(&obj_priv->pending_flip)); | 4162 | atomic_read(&obj_priv->pending_flip)); |
| @@ -4181,7 +4181,7 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe) | |||
| 4181 | 4181 | ||
| 4182 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4182 | spin_unlock_irqrestore(&dev->event_lock, flags); |
| 4183 | 4183 | ||
| 4184 | obj_priv = work->pending_flip_obj->driver_private; | 4184 | obj_priv = to_intel_bo(work->pending_flip_obj); |
| 4185 | 4185 | ||
| 4186 | /* Initial scanout buffer will have a 0 pending flip count */ | 4186 | /* Initial scanout buffer will have a 0 pending flip count */ |
| 4187 | if ((atomic_read(&obj_priv->pending_flip) == 0) || | 4187 | if ((atomic_read(&obj_priv->pending_flip) == 0) || |
| @@ -4252,7 +4252,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
| 4252 | ret = intel_pin_and_fence_fb_obj(dev, obj); | 4252 | ret = intel_pin_and_fence_fb_obj(dev, obj); |
| 4253 | if (ret != 0) { | 4253 | if (ret != 0) { |
| 4254 | DRM_DEBUG_DRIVER("flip queue: %p pin & fence failed\n", | 4254 | DRM_DEBUG_DRIVER("flip queue: %p pin & fence failed\n", |
| 4255 | obj->driver_private); | 4255 | to_intel_bo(obj)); |
| 4256 | kfree(work); | 4256 | kfree(work); |
| 4257 | intel_crtc->unpin_work = NULL; | 4257 | intel_crtc->unpin_work = NULL; |
| 4258 | mutex_unlock(&dev->struct_mutex); | 4258 | mutex_unlock(&dev->struct_mutex); |
| @@ -4266,7 +4266,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
| 4266 | crtc->fb = fb; | 4266 | crtc->fb = fb; |
| 4267 | i915_gem_object_flush_write_domain(obj); | 4267 | i915_gem_object_flush_write_domain(obj); |
| 4268 | drm_vblank_get(dev, intel_crtc->pipe); | 4268 | drm_vblank_get(dev, intel_crtc->pipe); |
| 4269 | obj_priv = obj->driver_private; | 4269 | obj_priv = to_intel_bo(obj); |
| 4270 | atomic_inc(&obj_priv->pending_flip); | 4270 | atomic_inc(&obj_priv->pending_flip); |
| 4271 | work->pending_flip_obj = obj; | 4271 | work->pending_flip_obj = obj; |
| 4272 | 4272 | ||
| @@ -4399,8 +4399,8 @@ static int intel_connector_clones(struct drm_device *dev, int type_mask) | |||
| 4399 | int entry = 0; | 4399 | int entry = 0; |
| 4400 | 4400 | ||
| 4401 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 4401 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
| 4402 | struct intel_output *intel_output = to_intel_output(connector); | 4402 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 4403 | if (type_mask & intel_output->clone_mask) | 4403 | if (type_mask & intel_encoder->clone_mask) |
| 4404 | index_mask |= (1 << entry); | 4404 | index_mask |= (1 << entry); |
| 4405 | entry++; | 4405 | entry++; |
| 4406 | } | 4406 | } |
| @@ -4495,12 +4495,12 @@ static void intel_setup_outputs(struct drm_device *dev) | |||
| 4495 | intel_tv_init(dev); | 4495 | intel_tv_init(dev); |
| 4496 | 4496 | ||
| 4497 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 4497 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
| 4498 | struct intel_output *intel_output = to_intel_output(connector); | 4498 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 4499 | struct drm_encoder *encoder = &intel_output->enc; | 4499 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 4500 | 4500 | ||
| 4501 | encoder->possible_crtcs = intel_output->crtc_mask; | 4501 | encoder->possible_crtcs = intel_encoder->crtc_mask; |
| 4502 | encoder->possible_clones = intel_connector_clones(dev, | 4502 | encoder->possible_clones = intel_connector_clones(dev, |
| 4503 | intel_output->clone_mask); | 4503 | intel_encoder->clone_mask); |
| 4504 | } | 4504 | } |
| 4505 | } | 4505 | } |
| 4506 | 4506 | ||
| @@ -4779,14 +4779,14 @@ void intel_init_clock_gating(struct drm_device *dev) | |||
| 4779 | struct drm_i915_gem_object *obj_priv = NULL; | 4779 | struct drm_i915_gem_object *obj_priv = NULL; |
| 4780 | 4780 | ||
| 4781 | if (dev_priv->pwrctx) { | 4781 | if (dev_priv->pwrctx) { |
| 4782 | obj_priv = dev_priv->pwrctx->driver_private; | 4782 | obj_priv = to_intel_bo(dev_priv->pwrctx); |
| 4783 | } else { | 4783 | } else { |
| 4784 | struct drm_gem_object *pwrctx; | 4784 | struct drm_gem_object *pwrctx; |
| 4785 | 4785 | ||
| 4786 | pwrctx = intel_alloc_power_context(dev); | 4786 | pwrctx = intel_alloc_power_context(dev); |
| 4787 | if (pwrctx) { | 4787 | if (pwrctx) { |
| 4788 | dev_priv->pwrctx = pwrctx; | 4788 | dev_priv->pwrctx = pwrctx; |
| 4789 | obj_priv = pwrctx->driver_private; | 4789 | obj_priv = to_intel_bo(pwrctx); |
| 4790 | } | 4790 | } |
| 4791 | } | 4791 | } |
| 4792 | 4792 | ||
| @@ -4815,7 +4815,7 @@ static void intel_init_display(struct drm_device *dev) | |||
| 4815 | dev_priv->display.fbc_enabled = g4x_fbc_enabled; | 4815 | dev_priv->display.fbc_enabled = g4x_fbc_enabled; |
| 4816 | dev_priv->display.enable_fbc = g4x_enable_fbc; | 4816 | dev_priv->display.enable_fbc = g4x_enable_fbc; |
| 4817 | dev_priv->display.disable_fbc = g4x_disable_fbc; | 4817 | dev_priv->display.disable_fbc = g4x_disable_fbc; |
| 4818 | } else if (IS_I965GM(dev) || IS_I945GM(dev) || IS_I915GM(dev)) { | 4818 | } else if (IS_I965GM(dev)) { |
| 4819 | dev_priv->display.fbc_enabled = i8xx_fbc_enabled; | 4819 | dev_priv->display.fbc_enabled = i8xx_fbc_enabled; |
| 4820 | dev_priv->display.enable_fbc = i8xx_enable_fbc; | 4820 | dev_priv->display.enable_fbc = i8xx_enable_fbc; |
| 4821 | dev_priv->display.disable_fbc = i8xx_disable_fbc; | 4821 | dev_priv->display.disable_fbc = i8xx_disable_fbc; |
| @@ -4957,7 +4957,7 @@ void intel_modeset_cleanup(struct drm_device *dev) | |||
| 4957 | if (dev_priv->pwrctx) { | 4957 | if (dev_priv->pwrctx) { |
| 4958 | struct drm_i915_gem_object *obj_priv; | 4958 | struct drm_i915_gem_object *obj_priv; |
| 4959 | 4959 | ||
| 4960 | obj_priv = dev_priv->pwrctx->driver_private; | 4960 | obj_priv = to_intel_bo(dev_priv->pwrctx); |
| 4961 | I915_WRITE(PWRCTXA, obj_priv->gtt_offset &~ PWRCTX_EN); | 4961 | I915_WRITE(PWRCTXA, obj_priv->gtt_offset &~ PWRCTX_EN); |
| 4962 | I915_READ(PWRCTXA); | 4962 | I915_READ(PWRCTXA); |
| 4963 | i915_gem_object_unpin(dev_priv->pwrctx); | 4963 | i915_gem_object_unpin(dev_priv->pwrctx); |
| @@ -4978,9 +4978,9 @@ void intel_modeset_cleanup(struct drm_device *dev) | |||
| 4978 | */ | 4978 | */ |
| 4979 | struct drm_encoder *intel_best_encoder(struct drm_connector *connector) | 4979 | struct drm_encoder *intel_best_encoder(struct drm_connector *connector) |
| 4980 | { | 4980 | { |
| 4981 | struct intel_output *intel_output = to_intel_output(connector); | 4981 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 4982 | 4982 | ||
| 4983 | return &intel_output->enc; | 4983 | return &intel_encoder->enc; |
| 4984 | } | 4984 | } |
| 4985 | 4985 | ||
| 4986 | /* | 4986 | /* |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 8e283f75941d..77e40cfcf216 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -55,23 +55,23 @@ struct intel_dp_priv { | |||
| 55 | uint8_t link_bw; | 55 | uint8_t link_bw; |
| 56 | uint8_t lane_count; | 56 | uint8_t lane_count; |
| 57 | uint8_t dpcd[4]; | 57 | uint8_t dpcd[4]; |
| 58 | struct intel_output *intel_output; | 58 | struct intel_encoder *intel_encoder; |
| 59 | struct i2c_adapter adapter; | 59 | struct i2c_adapter adapter; |
| 60 | struct i2c_algo_dp_aux_data algo; | 60 | struct i2c_algo_dp_aux_data algo; |
| 61 | }; | 61 | }; |
| 62 | 62 | ||
| 63 | static void | 63 | static void |
| 64 | intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | 64 | intel_dp_link_train(struct intel_encoder *intel_encoder, uint32_t DP, |
| 65 | uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]); | 65 | uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]); |
| 66 | 66 | ||
| 67 | static void | 67 | static void |
| 68 | intel_dp_link_down(struct intel_output *intel_output, uint32_t DP); | 68 | intel_dp_link_down(struct intel_encoder *intel_encoder, uint32_t DP); |
| 69 | 69 | ||
| 70 | void | 70 | void |
| 71 | intel_edp_link_config (struct intel_output *intel_output, | 71 | intel_edp_link_config (struct intel_encoder *intel_encoder, |
| 72 | int *lane_num, int *link_bw) | 72 | int *lane_num, int *link_bw) |
| 73 | { | 73 | { |
| 74 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 74 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 75 | 75 | ||
| 76 | *lane_num = dp_priv->lane_count; | 76 | *lane_num = dp_priv->lane_count; |
| 77 | if (dp_priv->link_bw == DP_LINK_BW_1_62) | 77 | if (dp_priv->link_bw == DP_LINK_BW_1_62) |
| @@ -81,9 +81,9 @@ intel_edp_link_config (struct intel_output *intel_output, | |||
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | static int | 83 | static int |
| 84 | intel_dp_max_lane_count(struct intel_output *intel_output) | 84 | intel_dp_max_lane_count(struct intel_encoder *intel_encoder) |
| 85 | { | 85 | { |
| 86 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 86 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 87 | int max_lane_count = 4; | 87 | int max_lane_count = 4; |
| 88 | 88 | ||
| 89 | if (dp_priv->dpcd[0] >= 0x11) { | 89 | if (dp_priv->dpcd[0] >= 0x11) { |
| @@ -99,9 +99,9 @@ intel_dp_max_lane_count(struct intel_output *intel_output) | |||
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | static int | 101 | static int |
| 102 | intel_dp_max_link_bw(struct intel_output *intel_output) | 102 | intel_dp_max_link_bw(struct intel_encoder *intel_encoder) |
| 103 | { | 103 | { |
| 104 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 104 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 105 | int max_link_bw = dp_priv->dpcd[1]; | 105 | int max_link_bw = dp_priv->dpcd[1]; |
| 106 | 106 | ||
| 107 | switch (max_link_bw) { | 107 | switch (max_link_bw) { |
| @@ -127,11 +127,11 @@ intel_dp_link_clock(uint8_t link_bw) | |||
| 127 | /* I think this is a fiction */ | 127 | /* I think this is a fiction */ |
| 128 | static int | 128 | static int |
| 129 | intel_dp_link_required(struct drm_device *dev, | 129 | intel_dp_link_required(struct drm_device *dev, |
| 130 | struct intel_output *intel_output, int pixel_clock) | 130 | struct intel_encoder *intel_encoder, int pixel_clock) |
| 131 | { | 131 | { |
| 132 | struct drm_i915_private *dev_priv = dev->dev_private; | 132 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 133 | 133 | ||
| 134 | if (IS_eDP(intel_output)) | 134 | if (IS_eDP(intel_encoder)) |
| 135 | return (pixel_clock * dev_priv->edp_bpp) / 8; | 135 | return (pixel_clock * dev_priv->edp_bpp) / 8; |
| 136 | else | 136 | else |
| 137 | return pixel_clock * 3; | 137 | return pixel_clock * 3; |
| @@ -141,11 +141,11 @@ static int | |||
| 141 | intel_dp_mode_valid(struct drm_connector *connector, | 141 | intel_dp_mode_valid(struct drm_connector *connector, |
| 142 | struct drm_display_mode *mode) | 142 | struct drm_display_mode *mode) |
| 143 | { | 143 | { |
| 144 | struct intel_output *intel_output = to_intel_output(connector); | 144 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 145 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output)); | 145 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_encoder)); |
| 146 | int max_lanes = intel_dp_max_lane_count(intel_output); | 146 | int max_lanes = intel_dp_max_lane_count(intel_encoder); |
| 147 | 147 | ||
| 148 | if (intel_dp_link_required(connector->dev, intel_output, mode->clock) | 148 | if (intel_dp_link_required(connector->dev, intel_encoder, mode->clock) |
| 149 | > max_link_clock * max_lanes) | 149 | > max_link_clock * max_lanes) |
| 150 | return MODE_CLOCK_HIGH; | 150 | return MODE_CLOCK_HIGH; |
| 151 | 151 | ||
| @@ -209,13 +209,13 @@ intel_hrawclk(struct drm_device *dev) | |||
| 209 | } | 209 | } |
| 210 | 210 | ||
| 211 | static int | 211 | static int |
| 212 | intel_dp_aux_ch(struct intel_output *intel_output, | 212 | intel_dp_aux_ch(struct intel_encoder *intel_encoder, |
| 213 | uint8_t *send, int send_bytes, | 213 | uint8_t *send, int send_bytes, |
| 214 | uint8_t *recv, int recv_size) | 214 | uint8_t *recv, int recv_size) |
| 215 | { | 215 | { |
| 216 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 216 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 217 | uint32_t output_reg = dp_priv->output_reg; | 217 | uint32_t output_reg = dp_priv->output_reg; |
| 218 | struct drm_device *dev = intel_output->base.dev; | 218 | struct drm_device *dev = intel_encoder->base.dev; |
| 219 | struct drm_i915_private *dev_priv = dev->dev_private; | 219 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 220 | uint32_t ch_ctl = output_reg + 0x10; | 220 | uint32_t ch_ctl = output_reg + 0x10; |
| 221 | uint32_t ch_data = ch_ctl + 4; | 221 | uint32_t ch_data = ch_ctl + 4; |
| @@ -230,7 +230,7 @@ intel_dp_aux_ch(struct intel_output *intel_output, | |||
| 230 | * and would like to run at 2MHz. So, take the | 230 | * and would like to run at 2MHz. So, take the |
| 231 | * hrawclk value and divide by 2 and use that | 231 | * hrawclk value and divide by 2 and use that |
| 232 | */ | 232 | */ |
| 233 | if (IS_eDP(intel_output)) | 233 | if (IS_eDP(intel_encoder)) |
| 234 | aux_clock_divider = 225; /* eDP input clock at 450Mhz */ | 234 | aux_clock_divider = 225; /* eDP input clock at 450Mhz */ |
| 235 | else if (HAS_PCH_SPLIT(dev)) | 235 | else if (HAS_PCH_SPLIT(dev)) |
| 236 | aux_clock_divider = 62; /* IRL input clock fixed at 125Mhz */ | 236 | aux_clock_divider = 62; /* IRL input clock fixed at 125Mhz */ |
| @@ -313,7 +313,7 @@ intel_dp_aux_ch(struct intel_output *intel_output, | |||
| 313 | 313 | ||
| 314 | /* Write data to the aux channel in native mode */ | 314 | /* Write data to the aux channel in native mode */ |
| 315 | static int | 315 | static int |
| 316 | intel_dp_aux_native_write(struct intel_output *intel_output, | 316 | intel_dp_aux_native_write(struct intel_encoder *intel_encoder, |
| 317 | uint16_t address, uint8_t *send, int send_bytes) | 317 | uint16_t address, uint8_t *send, int send_bytes) |
| 318 | { | 318 | { |
| 319 | int ret; | 319 | int ret; |
| @@ -330,7 +330,7 @@ intel_dp_aux_native_write(struct intel_output *intel_output, | |||
| 330 | memcpy(&msg[4], send, send_bytes); | 330 | memcpy(&msg[4], send, send_bytes); |
| 331 | msg_bytes = send_bytes + 4; | 331 | msg_bytes = send_bytes + 4; |
| 332 | for (;;) { | 332 | for (;;) { |
| 333 | ret = intel_dp_aux_ch(intel_output, msg, msg_bytes, &ack, 1); | 333 | ret = intel_dp_aux_ch(intel_encoder, msg, msg_bytes, &ack, 1); |
| 334 | if (ret < 0) | 334 | if (ret < 0) |
| 335 | return ret; | 335 | return ret; |
| 336 | if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) | 336 | if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) |
| @@ -345,15 +345,15 @@ intel_dp_aux_native_write(struct intel_output *intel_output, | |||
| 345 | 345 | ||
| 346 | /* Write a single byte to the aux channel in native mode */ | 346 | /* Write a single byte to the aux channel in native mode */ |
| 347 | static int | 347 | static int |
| 348 | intel_dp_aux_native_write_1(struct intel_output *intel_output, | 348 | intel_dp_aux_native_write_1(struct intel_encoder *intel_encoder, |
| 349 | uint16_t address, uint8_t byte) | 349 | uint16_t address, uint8_t byte) |
| 350 | { | 350 | { |
| 351 | return intel_dp_aux_native_write(intel_output, address, &byte, 1); | 351 | return intel_dp_aux_native_write(intel_encoder, address, &byte, 1); |
| 352 | } | 352 | } |
| 353 | 353 | ||
| 354 | /* read bytes from a native aux channel */ | 354 | /* read bytes from a native aux channel */ |
| 355 | static int | 355 | static int |
| 356 | intel_dp_aux_native_read(struct intel_output *intel_output, | 356 | intel_dp_aux_native_read(struct intel_encoder *intel_encoder, |
| 357 | uint16_t address, uint8_t *recv, int recv_bytes) | 357 | uint16_t address, uint8_t *recv, int recv_bytes) |
| 358 | { | 358 | { |
| 359 | uint8_t msg[4]; | 359 | uint8_t msg[4]; |
| @@ -372,7 +372,7 @@ intel_dp_aux_native_read(struct intel_output *intel_output, | |||
| 372 | reply_bytes = recv_bytes + 1; | 372 | reply_bytes = recv_bytes + 1; |
| 373 | 373 | ||
| 374 | for (;;) { | 374 | for (;;) { |
| 375 | ret = intel_dp_aux_ch(intel_output, msg, msg_bytes, | 375 | ret = intel_dp_aux_ch(intel_encoder, msg, msg_bytes, |
| 376 | reply, reply_bytes); | 376 | reply, reply_bytes); |
| 377 | if (ret == 0) | 377 | if (ret == 0) |
| 378 | return -EPROTO; | 378 | return -EPROTO; |
| @@ -398,7 +398,7 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, | |||
| 398 | struct intel_dp_priv *dp_priv = container_of(adapter, | 398 | struct intel_dp_priv *dp_priv = container_of(adapter, |
| 399 | struct intel_dp_priv, | 399 | struct intel_dp_priv, |
| 400 | adapter); | 400 | adapter); |
| 401 | struct intel_output *intel_output = dp_priv->intel_output; | 401 | struct intel_encoder *intel_encoder = dp_priv->intel_encoder; |
| 402 | uint16_t address = algo_data->address; | 402 | uint16_t address = algo_data->address; |
| 403 | uint8_t msg[5]; | 403 | uint8_t msg[5]; |
| 404 | uint8_t reply[2]; | 404 | uint8_t reply[2]; |
| @@ -437,7 +437,7 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, | |||
| 437 | } | 437 | } |
| 438 | 438 | ||
| 439 | for (;;) { | 439 | for (;;) { |
| 440 | ret = intel_dp_aux_ch(intel_output, | 440 | ret = intel_dp_aux_ch(intel_encoder, |
| 441 | msg, msg_bytes, | 441 | msg, msg_bytes, |
| 442 | reply, reply_bytes); | 442 | reply, reply_bytes); |
| 443 | if (ret < 0) { | 443 | if (ret < 0) { |
| @@ -465,9 +465,9 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, | |||
| 465 | } | 465 | } |
| 466 | 466 | ||
| 467 | static int | 467 | static int |
| 468 | intel_dp_i2c_init(struct intel_output *intel_output, const char *name) | 468 | intel_dp_i2c_init(struct intel_encoder *intel_encoder, const char *name) |
| 469 | { | 469 | { |
| 470 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 470 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 471 | 471 | ||
| 472 | DRM_DEBUG_KMS("i2c_init %s\n", name); | 472 | DRM_DEBUG_KMS("i2c_init %s\n", name); |
| 473 | dp_priv->algo.running = false; | 473 | dp_priv->algo.running = false; |
| @@ -480,7 +480,7 @@ intel_dp_i2c_init(struct intel_output *intel_output, const char *name) | |||
| 480 | strncpy (dp_priv->adapter.name, name, sizeof(dp_priv->adapter.name) - 1); | 480 | strncpy (dp_priv->adapter.name, name, sizeof(dp_priv->adapter.name) - 1); |
| 481 | dp_priv->adapter.name[sizeof(dp_priv->adapter.name) - 1] = '\0'; | 481 | dp_priv->adapter.name[sizeof(dp_priv->adapter.name) - 1] = '\0'; |
| 482 | dp_priv->adapter.algo_data = &dp_priv->algo; | 482 | dp_priv->adapter.algo_data = &dp_priv->algo; |
| 483 | dp_priv->adapter.dev.parent = &intel_output->base.kdev; | 483 | dp_priv->adapter.dev.parent = &intel_encoder->base.kdev; |
| 484 | 484 | ||
| 485 | return i2c_dp_aux_add_bus(&dp_priv->adapter); | 485 | return i2c_dp_aux_add_bus(&dp_priv->adapter); |
| 486 | } | 486 | } |
| @@ -489,18 +489,18 @@ static bool | |||
| 489 | intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, | 489 | intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, |
| 490 | struct drm_display_mode *adjusted_mode) | 490 | struct drm_display_mode *adjusted_mode) |
| 491 | { | 491 | { |
| 492 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 492 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 493 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 493 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 494 | int lane_count, clock; | 494 | int lane_count, clock; |
| 495 | int max_lane_count = intel_dp_max_lane_count(intel_output); | 495 | int max_lane_count = intel_dp_max_lane_count(intel_encoder); |
| 496 | int max_clock = intel_dp_max_link_bw(intel_output) == DP_LINK_BW_2_7 ? 1 : 0; | 496 | int max_clock = intel_dp_max_link_bw(intel_encoder) == DP_LINK_BW_2_7 ? 1 : 0; |
| 497 | static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 }; | 497 | static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 }; |
| 498 | 498 | ||
| 499 | for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { | 499 | for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { |
| 500 | for (clock = 0; clock <= max_clock; clock++) { | 500 | for (clock = 0; clock <= max_clock; clock++) { |
| 501 | int link_avail = intel_dp_link_clock(bws[clock]) * lane_count; | 501 | int link_avail = intel_dp_link_clock(bws[clock]) * lane_count; |
| 502 | 502 | ||
| 503 | if (intel_dp_link_required(encoder->dev, intel_output, mode->clock) | 503 | if (intel_dp_link_required(encoder->dev, intel_encoder, mode->clock) |
| 504 | <= link_avail) { | 504 | <= link_avail) { |
| 505 | dp_priv->link_bw = bws[clock]; | 505 | dp_priv->link_bw = bws[clock]; |
| 506 | dp_priv->lane_count = lane_count; | 506 | dp_priv->lane_count = lane_count; |
| @@ -562,16 +562,16 @@ intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, | |||
| 562 | struct intel_dp_m_n m_n; | 562 | struct intel_dp_m_n m_n; |
| 563 | 563 | ||
| 564 | /* | 564 | /* |
| 565 | * Find the lane count in the intel_output private | 565 | * Find the lane count in the intel_encoder private |
| 566 | */ | 566 | */ |
| 567 | list_for_each_entry(connector, &mode_config->connector_list, head) { | 567 | list_for_each_entry(connector, &mode_config->connector_list, head) { |
| 568 | struct intel_output *intel_output = to_intel_output(connector); | 568 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 569 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 569 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 570 | 570 | ||
| 571 | if (!connector->encoder || connector->encoder->crtc != crtc) | 571 | if (!connector->encoder || connector->encoder->crtc != crtc) |
| 572 | continue; | 572 | continue; |
| 573 | 573 | ||
| 574 | if (intel_output->type == INTEL_OUTPUT_DISPLAYPORT) { | 574 | if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { |
| 575 | lane_count = dp_priv->lane_count; | 575 | lane_count = dp_priv->lane_count; |
| 576 | break; | 576 | break; |
| 577 | } | 577 | } |
| @@ -626,9 +626,9 @@ static void | |||
| 626 | intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, | 626 | intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, |
| 627 | struct drm_display_mode *adjusted_mode) | 627 | struct drm_display_mode *adjusted_mode) |
| 628 | { | 628 | { |
| 629 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 629 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 630 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 630 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 631 | struct drm_crtc *crtc = intel_output->enc.crtc; | 631 | struct drm_crtc *crtc = intel_encoder->enc.crtc; |
| 632 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 632 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 633 | 633 | ||
| 634 | dp_priv->DP = (DP_LINK_TRAIN_OFF | | 634 | dp_priv->DP = (DP_LINK_TRAIN_OFF | |
| @@ -667,7 +667,7 @@ intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
| 667 | if (intel_crtc->pipe == 1) | 667 | if (intel_crtc->pipe == 1) |
| 668 | dp_priv->DP |= DP_PIPEB_SELECT; | 668 | dp_priv->DP |= DP_PIPEB_SELECT; |
| 669 | 669 | ||
| 670 | if (IS_eDP(intel_output)) { | 670 | if (IS_eDP(intel_encoder)) { |
| 671 | /* don't miss out required setting for eDP */ | 671 | /* don't miss out required setting for eDP */ |
| 672 | dp_priv->DP |= DP_PLL_ENABLE; | 672 | dp_priv->DP |= DP_PLL_ENABLE; |
| 673 | if (adjusted_mode->clock < 200000) | 673 | if (adjusted_mode->clock < 200000) |
| @@ -702,22 +702,22 @@ static void ironlake_edp_backlight_off (struct drm_device *dev) | |||
| 702 | static void | 702 | static void |
| 703 | intel_dp_dpms(struct drm_encoder *encoder, int mode) | 703 | intel_dp_dpms(struct drm_encoder *encoder, int mode) |
| 704 | { | 704 | { |
| 705 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 705 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 706 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 706 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 707 | struct drm_device *dev = intel_output->base.dev; | 707 | struct drm_device *dev = intel_encoder->base.dev; |
| 708 | struct drm_i915_private *dev_priv = dev->dev_private; | 708 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 709 | uint32_t dp_reg = I915_READ(dp_priv->output_reg); | 709 | uint32_t dp_reg = I915_READ(dp_priv->output_reg); |
| 710 | 710 | ||
| 711 | if (mode != DRM_MODE_DPMS_ON) { | 711 | if (mode != DRM_MODE_DPMS_ON) { |
| 712 | if (dp_reg & DP_PORT_EN) { | 712 | if (dp_reg & DP_PORT_EN) { |
| 713 | intel_dp_link_down(intel_output, dp_priv->DP); | 713 | intel_dp_link_down(intel_encoder, dp_priv->DP); |
| 714 | if (IS_eDP(intel_output)) | 714 | if (IS_eDP(intel_encoder)) |
| 715 | ironlake_edp_backlight_off(dev); | 715 | ironlake_edp_backlight_off(dev); |
| 716 | } | 716 | } |
| 717 | } else { | 717 | } else { |
| 718 | if (!(dp_reg & DP_PORT_EN)) { | 718 | if (!(dp_reg & DP_PORT_EN)) { |
| 719 | intel_dp_link_train(intel_output, dp_priv->DP, dp_priv->link_configuration); | 719 | intel_dp_link_train(intel_encoder, dp_priv->DP, dp_priv->link_configuration); |
| 720 | if (IS_eDP(intel_output)) | 720 | if (IS_eDP(intel_encoder)) |
| 721 | ironlake_edp_backlight_on(dev); | 721 | ironlake_edp_backlight_on(dev); |
| 722 | } | 722 | } |
| 723 | } | 723 | } |
| @@ -729,12 +729,12 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode) | |||
| 729 | * link status information | 729 | * link status information |
| 730 | */ | 730 | */ |
| 731 | static bool | 731 | static bool |
| 732 | intel_dp_get_link_status(struct intel_output *intel_output, | 732 | intel_dp_get_link_status(struct intel_encoder *intel_encoder, |
| 733 | uint8_t link_status[DP_LINK_STATUS_SIZE]) | 733 | uint8_t link_status[DP_LINK_STATUS_SIZE]) |
| 734 | { | 734 | { |
| 735 | int ret; | 735 | int ret; |
| 736 | 736 | ||
| 737 | ret = intel_dp_aux_native_read(intel_output, | 737 | ret = intel_dp_aux_native_read(intel_encoder, |
| 738 | DP_LANE0_1_STATUS, | 738 | DP_LANE0_1_STATUS, |
| 739 | link_status, DP_LINK_STATUS_SIZE); | 739 | link_status, DP_LINK_STATUS_SIZE); |
| 740 | if (ret != DP_LINK_STATUS_SIZE) | 740 | if (ret != DP_LINK_STATUS_SIZE) |
| @@ -752,13 +752,13 @@ intel_dp_link_status(uint8_t link_status[DP_LINK_STATUS_SIZE], | |||
| 752 | static void | 752 | static void |
| 753 | intel_dp_save(struct drm_connector *connector) | 753 | intel_dp_save(struct drm_connector *connector) |
| 754 | { | 754 | { |
| 755 | struct intel_output *intel_output = to_intel_output(connector); | 755 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 756 | struct drm_device *dev = intel_output->base.dev; | 756 | struct drm_device *dev = intel_encoder->base.dev; |
| 757 | struct drm_i915_private *dev_priv = dev->dev_private; | 757 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 758 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 758 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 759 | 759 | ||
| 760 | dp_priv->save_DP = I915_READ(dp_priv->output_reg); | 760 | dp_priv->save_DP = I915_READ(dp_priv->output_reg); |
| 761 | intel_dp_aux_native_read(intel_output, DP_LINK_BW_SET, | 761 | intel_dp_aux_native_read(intel_encoder, DP_LINK_BW_SET, |
| 762 | dp_priv->save_link_configuration, | 762 | dp_priv->save_link_configuration, |
| 763 | sizeof (dp_priv->save_link_configuration)); | 763 | sizeof (dp_priv->save_link_configuration)); |
| 764 | } | 764 | } |
| @@ -825,7 +825,7 @@ intel_dp_pre_emphasis_max(uint8_t voltage_swing) | |||
| 825 | } | 825 | } |
| 826 | 826 | ||
| 827 | static void | 827 | static void |
| 828 | intel_get_adjust_train(struct intel_output *intel_output, | 828 | intel_get_adjust_train(struct intel_encoder *intel_encoder, |
| 829 | uint8_t link_status[DP_LINK_STATUS_SIZE], | 829 | uint8_t link_status[DP_LINK_STATUS_SIZE], |
| 830 | int lane_count, | 830 | int lane_count, |
| 831 | uint8_t train_set[4]) | 831 | uint8_t train_set[4]) |
| @@ -942,15 +942,15 @@ intel_channel_eq_ok(uint8_t link_status[DP_LINK_STATUS_SIZE], int lane_count) | |||
| 942 | } | 942 | } |
| 943 | 943 | ||
| 944 | static bool | 944 | static bool |
| 945 | intel_dp_set_link_train(struct intel_output *intel_output, | 945 | intel_dp_set_link_train(struct intel_encoder *intel_encoder, |
| 946 | uint32_t dp_reg_value, | 946 | uint32_t dp_reg_value, |
| 947 | uint8_t dp_train_pat, | 947 | uint8_t dp_train_pat, |
| 948 | uint8_t train_set[4], | 948 | uint8_t train_set[4], |
| 949 | bool first) | 949 | bool first) |
| 950 | { | 950 | { |
| 951 | struct drm_device *dev = intel_output->base.dev; | 951 | struct drm_device *dev = intel_encoder->base.dev; |
| 952 | struct drm_i915_private *dev_priv = dev->dev_private; | 952 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 953 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 953 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 954 | int ret; | 954 | int ret; |
| 955 | 955 | ||
| 956 | I915_WRITE(dp_priv->output_reg, dp_reg_value); | 956 | I915_WRITE(dp_priv->output_reg, dp_reg_value); |
| @@ -958,11 +958,11 @@ intel_dp_set_link_train(struct intel_output *intel_output, | |||
| 958 | if (first) | 958 | if (first) |
| 959 | intel_wait_for_vblank(dev); | 959 | intel_wait_for_vblank(dev); |
| 960 | 960 | ||
| 961 | intel_dp_aux_native_write_1(intel_output, | 961 | intel_dp_aux_native_write_1(intel_encoder, |
| 962 | DP_TRAINING_PATTERN_SET, | 962 | DP_TRAINING_PATTERN_SET, |
| 963 | dp_train_pat); | 963 | dp_train_pat); |
| 964 | 964 | ||
| 965 | ret = intel_dp_aux_native_write(intel_output, | 965 | ret = intel_dp_aux_native_write(intel_encoder, |
| 966 | DP_TRAINING_LANE0_SET, train_set, 4); | 966 | DP_TRAINING_LANE0_SET, train_set, 4); |
| 967 | if (ret != 4) | 967 | if (ret != 4) |
| 968 | return false; | 968 | return false; |
| @@ -971,12 +971,12 @@ intel_dp_set_link_train(struct intel_output *intel_output, | |||
| 971 | } | 971 | } |
| 972 | 972 | ||
| 973 | static void | 973 | static void |
| 974 | intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | 974 | intel_dp_link_train(struct intel_encoder *intel_encoder, uint32_t DP, |
| 975 | uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]) | 975 | uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]) |
| 976 | { | 976 | { |
| 977 | struct drm_device *dev = intel_output->base.dev; | 977 | struct drm_device *dev = intel_encoder->base.dev; |
| 978 | struct drm_i915_private *dev_priv = dev->dev_private; | 978 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 979 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 979 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 980 | uint8_t train_set[4]; | 980 | uint8_t train_set[4]; |
| 981 | uint8_t link_status[DP_LINK_STATUS_SIZE]; | 981 | uint8_t link_status[DP_LINK_STATUS_SIZE]; |
| 982 | int i; | 982 | int i; |
| @@ -987,7 +987,7 @@ intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | |||
| 987 | int tries; | 987 | int tries; |
| 988 | 988 | ||
| 989 | /* Write the link configuration data */ | 989 | /* Write the link configuration data */ |
| 990 | intel_dp_aux_native_write(intel_output, 0x100, | 990 | intel_dp_aux_native_write(intel_encoder, 0x100, |
| 991 | link_configuration, DP_LINK_CONFIGURATION_SIZE); | 991 | link_configuration, DP_LINK_CONFIGURATION_SIZE); |
| 992 | 992 | ||
| 993 | DP |= DP_PORT_EN; | 993 | DP |= DP_PORT_EN; |
| @@ -1001,14 +1001,14 @@ intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | |||
| 1001 | uint32_t signal_levels = intel_dp_signal_levels(train_set[0], dp_priv->lane_count); | 1001 | uint32_t signal_levels = intel_dp_signal_levels(train_set[0], dp_priv->lane_count); |
| 1002 | DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; | 1002 | DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; |
| 1003 | 1003 | ||
| 1004 | if (!intel_dp_set_link_train(intel_output, DP | DP_LINK_TRAIN_PAT_1, | 1004 | if (!intel_dp_set_link_train(intel_encoder, DP | DP_LINK_TRAIN_PAT_1, |
| 1005 | DP_TRAINING_PATTERN_1, train_set, first)) | 1005 | DP_TRAINING_PATTERN_1, train_set, first)) |
| 1006 | break; | 1006 | break; |
| 1007 | first = false; | 1007 | first = false; |
| 1008 | /* Set training pattern 1 */ | 1008 | /* Set training pattern 1 */ |
| 1009 | 1009 | ||
| 1010 | udelay(100); | 1010 | udelay(100); |
| 1011 | if (!intel_dp_get_link_status(intel_output, link_status)) | 1011 | if (!intel_dp_get_link_status(intel_encoder, link_status)) |
| 1012 | break; | 1012 | break; |
| 1013 | 1013 | ||
| 1014 | if (intel_clock_recovery_ok(link_status, dp_priv->lane_count)) { | 1014 | if (intel_clock_recovery_ok(link_status, dp_priv->lane_count)) { |
| @@ -1033,7 +1033,7 @@ intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | |||
| 1033 | voltage = train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; | 1033 | voltage = train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; |
| 1034 | 1034 | ||
| 1035 | /* Compute new train_set as requested by target */ | 1035 | /* Compute new train_set as requested by target */ |
| 1036 | intel_get_adjust_train(intel_output, link_status, dp_priv->lane_count, train_set); | 1036 | intel_get_adjust_train(intel_encoder, link_status, dp_priv->lane_count, train_set); |
| 1037 | } | 1037 | } |
| 1038 | 1038 | ||
| 1039 | /* channel equalization */ | 1039 | /* channel equalization */ |
| @@ -1045,13 +1045,13 @@ intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | |||
| 1045 | DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; | 1045 | DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; |
| 1046 | 1046 | ||
| 1047 | /* channel eq pattern */ | 1047 | /* channel eq pattern */ |
| 1048 | if (!intel_dp_set_link_train(intel_output, DP | DP_LINK_TRAIN_PAT_2, | 1048 | if (!intel_dp_set_link_train(intel_encoder, DP | DP_LINK_TRAIN_PAT_2, |
| 1049 | DP_TRAINING_PATTERN_2, train_set, | 1049 | DP_TRAINING_PATTERN_2, train_set, |
| 1050 | false)) | 1050 | false)) |
| 1051 | break; | 1051 | break; |
| 1052 | 1052 | ||
| 1053 | udelay(400); | 1053 | udelay(400); |
| 1054 | if (!intel_dp_get_link_status(intel_output, link_status)) | 1054 | if (!intel_dp_get_link_status(intel_encoder, link_status)) |
| 1055 | break; | 1055 | break; |
| 1056 | 1056 | ||
| 1057 | if (intel_channel_eq_ok(link_status, dp_priv->lane_count)) { | 1057 | if (intel_channel_eq_ok(link_status, dp_priv->lane_count)) { |
| @@ -1064,26 +1064,26 @@ intel_dp_link_train(struct intel_output *intel_output, uint32_t DP, | |||
| 1064 | break; | 1064 | break; |
| 1065 | 1065 | ||
| 1066 | /* Compute new train_set as requested by target */ | 1066 | /* Compute new train_set as requested by target */ |
| 1067 | intel_get_adjust_train(intel_output, link_status, dp_priv->lane_count, train_set); | 1067 | intel_get_adjust_train(intel_encoder, link_status, dp_priv->lane_count, train_set); |
| 1068 | ++tries; | 1068 | ++tries; |
| 1069 | } | 1069 | } |
| 1070 | 1070 | ||
| 1071 | I915_WRITE(dp_priv->output_reg, DP | DP_LINK_TRAIN_OFF); | 1071 | I915_WRITE(dp_priv->output_reg, DP | DP_LINK_TRAIN_OFF); |
| 1072 | POSTING_READ(dp_priv->output_reg); | 1072 | POSTING_READ(dp_priv->output_reg); |
| 1073 | intel_dp_aux_native_write_1(intel_output, | 1073 | intel_dp_aux_native_write_1(intel_encoder, |
| 1074 | DP_TRAINING_PATTERN_SET, DP_TRAINING_PATTERN_DISABLE); | 1074 | DP_TRAINING_PATTERN_SET, DP_TRAINING_PATTERN_DISABLE); |
| 1075 | } | 1075 | } |
| 1076 | 1076 | ||
| 1077 | static void | 1077 | static void |
| 1078 | intel_dp_link_down(struct intel_output *intel_output, uint32_t DP) | 1078 | intel_dp_link_down(struct intel_encoder *intel_encoder, uint32_t DP) |
| 1079 | { | 1079 | { |
| 1080 | struct drm_device *dev = intel_output->base.dev; | 1080 | struct drm_device *dev = intel_encoder->base.dev; |
| 1081 | struct drm_i915_private *dev_priv = dev->dev_private; | 1081 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1082 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1082 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1083 | 1083 | ||
| 1084 | DRM_DEBUG_KMS("\n"); | 1084 | DRM_DEBUG_KMS("\n"); |
| 1085 | 1085 | ||
| 1086 | if (IS_eDP(intel_output)) { | 1086 | if (IS_eDP(intel_encoder)) { |
| 1087 | DP &= ~DP_PLL_ENABLE; | 1087 | DP &= ~DP_PLL_ENABLE; |
| 1088 | I915_WRITE(dp_priv->output_reg, DP); | 1088 | I915_WRITE(dp_priv->output_reg, DP); |
| 1089 | POSTING_READ(dp_priv->output_reg); | 1089 | POSTING_READ(dp_priv->output_reg); |
| @@ -1096,7 +1096,7 @@ intel_dp_link_down(struct intel_output *intel_output, uint32_t DP) | |||
| 1096 | 1096 | ||
| 1097 | udelay(17000); | 1097 | udelay(17000); |
| 1098 | 1098 | ||
| 1099 | if (IS_eDP(intel_output)) | 1099 | if (IS_eDP(intel_encoder)) |
| 1100 | DP |= DP_LINK_TRAIN_OFF; | 1100 | DP |= DP_LINK_TRAIN_OFF; |
| 1101 | I915_WRITE(dp_priv->output_reg, DP & ~DP_PORT_EN); | 1101 | I915_WRITE(dp_priv->output_reg, DP & ~DP_PORT_EN); |
| 1102 | POSTING_READ(dp_priv->output_reg); | 1102 | POSTING_READ(dp_priv->output_reg); |
| @@ -1105,13 +1105,13 @@ intel_dp_link_down(struct intel_output *intel_output, uint32_t DP) | |||
| 1105 | static void | 1105 | static void |
| 1106 | intel_dp_restore(struct drm_connector *connector) | 1106 | intel_dp_restore(struct drm_connector *connector) |
| 1107 | { | 1107 | { |
| 1108 | struct intel_output *intel_output = to_intel_output(connector); | 1108 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1109 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1109 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1110 | 1110 | ||
| 1111 | if (dp_priv->save_DP & DP_PORT_EN) | 1111 | if (dp_priv->save_DP & DP_PORT_EN) |
| 1112 | intel_dp_link_train(intel_output, dp_priv->save_DP, dp_priv->save_link_configuration); | 1112 | intel_dp_link_train(intel_encoder, dp_priv->save_DP, dp_priv->save_link_configuration); |
| 1113 | else | 1113 | else |
| 1114 | intel_dp_link_down(intel_output, dp_priv->save_DP); | 1114 | intel_dp_link_down(intel_encoder, dp_priv->save_DP); |
| 1115 | } | 1115 | } |
| 1116 | 1116 | ||
| 1117 | /* | 1117 | /* |
| @@ -1124,32 +1124,32 @@ intel_dp_restore(struct drm_connector *connector) | |||
| 1124 | */ | 1124 | */ |
| 1125 | 1125 | ||
| 1126 | static void | 1126 | static void |
| 1127 | intel_dp_check_link_status(struct intel_output *intel_output) | 1127 | intel_dp_check_link_status(struct intel_encoder *intel_encoder) |
| 1128 | { | 1128 | { |
| 1129 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1129 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1130 | uint8_t link_status[DP_LINK_STATUS_SIZE]; | 1130 | uint8_t link_status[DP_LINK_STATUS_SIZE]; |
| 1131 | 1131 | ||
| 1132 | if (!intel_output->enc.crtc) | 1132 | if (!intel_encoder->enc.crtc) |
| 1133 | return; | 1133 | return; |
| 1134 | 1134 | ||
| 1135 | if (!intel_dp_get_link_status(intel_output, link_status)) { | 1135 | if (!intel_dp_get_link_status(intel_encoder, link_status)) { |
| 1136 | intel_dp_link_down(intel_output, dp_priv->DP); | 1136 | intel_dp_link_down(intel_encoder, dp_priv->DP); |
| 1137 | return; | 1137 | return; |
| 1138 | } | 1138 | } |
| 1139 | 1139 | ||
| 1140 | if (!intel_channel_eq_ok(link_status, dp_priv->lane_count)) | 1140 | if (!intel_channel_eq_ok(link_status, dp_priv->lane_count)) |
| 1141 | intel_dp_link_train(intel_output, dp_priv->DP, dp_priv->link_configuration); | 1141 | intel_dp_link_train(intel_encoder, dp_priv->DP, dp_priv->link_configuration); |
| 1142 | } | 1142 | } |
| 1143 | 1143 | ||
| 1144 | static enum drm_connector_status | 1144 | static enum drm_connector_status |
| 1145 | ironlake_dp_detect(struct drm_connector *connector) | 1145 | ironlake_dp_detect(struct drm_connector *connector) |
| 1146 | { | 1146 | { |
| 1147 | struct intel_output *intel_output = to_intel_output(connector); | 1147 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1148 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1148 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1149 | enum drm_connector_status status; | 1149 | enum drm_connector_status status; |
| 1150 | 1150 | ||
| 1151 | status = connector_status_disconnected; | 1151 | status = connector_status_disconnected; |
| 1152 | if (intel_dp_aux_native_read(intel_output, | 1152 | if (intel_dp_aux_native_read(intel_encoder, |
| 1153 | 0x000, dp_priv->dpcd, | 1153 | 0x000, dp_priv->dpcd, |
| 1154 | sizeof (dp_priv->dpcd)) == sizeof (dp_priv->dpcd)) | 1154 | sizeof (dp_priv->dpcd)) == sizeof (dp_priv->dpcd)) |
| 1155 | { | 1155 | { |
| @@ -1168,10 +1168,10 @@ ironlake_dp_detect(struct drm_connector *connector) | |||
| 1168 | static enum drm_connector_status | 1168 | static enum drm_connector_status |
| 1169 | intel_dp_detect(struct drm_connector *connector) | 1169 | intel_dp_detect(struct drm_connector *connector) |
| 1170 | { | 1170 | { |
| 1171 | struct intel_output *intel_output = to_intel_output(connector); | 1171 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1172 | struct drm_device *dev = intel_output->base.dev; | 1172 | struct drm_device *dev = intel_encoder->base.dev; |
| 1173 | struct drm_i915_private *dev_priv = dev->dev_private; | 1173 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1174 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1174 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1175 | uint32_t temp, bit; | 1175 | uint32_t temp, bit; |
| 1176 | enum drm_connector_status status; | 1176 | enum drm_connector_status status; |
| 1177 | 1177 | ||
| @@ -1210,7 +1210,7 @@ intel_dp_detect(struct drm_connector *connector) | |||
| 1210 | return connector_status_disconnected; | 1210 | return connector_status_disconnected; |
| 1211 | 1211 | ||
| 1212 | status = connector_status_disconnected; | 1212 | status = connector_status_disconnected; |
| 1213 | if (intel_dp_aux_native_read(intel_output, | 1213 | if (intel_dp_aux_native_read(intel_encoder, |
| 1214 | 0x000, dp_priv->dpcd, | 1214 | 0x000, dp_priv->dpcd, |
| 1215 | sizeof (dp_priv->dpcd)) == sizeof (dp_priv->dpcd)) | 1215 | sizeof (dp_priv->dpcd)) == sizeof (dp_priv->dpcd)) |
| 1216 | { | 1216 | { |
| @@ -1222,20 +1222,20 @@ intel_dp_detect(struct drm_connector *connector) | |||
| 1222 | 1222 | ||
| 1223 | static int intel_dp_get_modes(struct drm_connector *connector) | 1223 | static int intel_dp_get_modes(struct drm_connector *connector) |
| 1224 | { | 1224 | { |
| 1225 | struct intel_output *intel_output = to_intel_output(connector); | 1225 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1226 | struct drm_device *dev = intel_output->base.dev; | 1226 | struct drm_device *dev = intel_encoder->base.dev; |
| 1227 | struct drm_i915_private *dev_priv = dev->dev_private; | 1227 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1228 | int ret; | 1228 | int ret; |
| 1229 | 1229 | ||
| 1230 | /* We should parse the EDID data and find out if it has an audio sink | 1230 | /* We should parse the EDID data and find out if it has an audio sink |
| 1231 | */ | 1231 | */ |
| 1232 | 1232 | ||
| 1233 | ret = intel_ddc_get_modes(intel_output); | 1233 | ret = intel_ddc_get_modes(intel_encoder); |
| 1234 | if (ret) | 1234 | if (ret) |
| 1235 | return ret; | 1235 | return ret; |
| 1236 | 1236 | ||
| 1237 | /* if eDP has no EDID, try to use fixed panel mode from VBT */ | 1237 | /* if eDP has no EDID, try to use fixed panel mode from VBT */ |
| 1238 | if (IS_eDP(intel_output)) { | 1238 | if (IS_eDP(intel_encoder)) { |
| 1239 | if (dev_priv->panel_fixed_mode != NULL) { | 1239 | if (dev_priv->panel_fixed_mode != NULL) { |
| 1240 | struct drm_display_mode *mode; | 1240 | struct drm_display_mode *mode; |
| 1241 | mode = drm_mode_duplicate(dev, dev_priv->panel_fixed_mode); | 1241 | mode = drm_mode_duplicate(dev, dev_priv->panel_fixed_mode); |
| @@ -1249,13 +1249,13 @@ static int intel_dp_get_modes(struct drm_connector *connector) | |||
| 1249 | static void | 1249 | static void |
| 1250 | intel_dp_destroy (struct drm_connector *connector) | 1250 | intel_dp_destroy (struct drm_connector *connector) |
| 1251 | { | 1251 | { |
| 1252 | struct intel_output *intel_output = to_intel_output(connector); | 1252 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1253 | 1253 | ||
| 1254 | if (intel_output->i2c_bus) | 1254 | if (intel_encoder->i2c_bus) |
| 1255 | intel_i2c_destroy(intel_output->i2c_bus); | 1255 | intel_i2c_destroy(intel_encoder->i2c_bus); |
| 1256 | drm_sysfs_connector_remove(connector); | 1256 | drm_sysfs_connector_remove(connector); |
| 1257 | drm_connector_cleanup(connector); | 1257 | drm_connector_cleanup(connector); |
| 1258 | kfree(intel_output); | 1258 | kfree(intel_encoder); |
| 1259 | } | 1259 | } |
| 1260 | 1260 | ||
| 1261 | static const struct drm_encoder_helper_funcs intel_dp_helper_funcs = { | 1261 | static const struct drm_encoder_helper_funcs intel_dp_helper_funcs = { |
| @@ -1291,12 +1291,12 @@ static const struct drm_encoder_funcs intel_dp_enc_funcs = { | |||
| 1291 | }; | 1291 | }; |
| 1292 | 1292 | ||
| 1293 | void | 1293 | void |
| 1294 | intel_dp_hot_plug(struct intel_output *intel_output) | 1294 | intel_dp_hot_plug(struct intel_encoder *intel_encoder) |
| 1295 | { | 1295 | { |
| 1296 | struct intel_dp_priv *dp_priv = intel_output->dev_priv; | 1296 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; |
| 1297 | 1297 | ||
| 1298 | if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON) | 1298 | if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON) |
| 1299 | intel_dp_check_link_status(intel_output); | 1299 | intel_dp_check_link_status(intel_encoder); |
| 1300 | } | 1300 | } |
| 1301 | 1301 | ||
| 1302 | void | 1302 | void |
| @@ -1304,53 +1304,53 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
| 1304 | { | 1304 | { |
| 1305 | struct drm_i915_private *dev_priv = dev->dev_private; | 1305 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1306 | struct drm_connector *connector; | 1306 | struct drm_connector *connector; |
| 1307 | struct intel_output *intel_output; | 1307 | struct intel_encoder *intel_encoder; |
| 1308 | struct intel_dp_priv *dp_priv; | 1308 | struct intel_dp_priv *dp_priv; |
| 1309 | const char *name = NULL; | 1309 | const char *name = NULL; |
| 1310 | 1310 | ||
| 1311 | intel_output = kcalloc(sizeof(struct intel_output) + | 1311 | intel_encoder = kcalloc(sizeof(struct intel_encoder) + |
| 1312 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); | 1312 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); |
| 1313 | if (!intel_output) | 1313 | if (!intel_encoder) |
| 1314 | return; | 1314 | return; |
| 1315 | 1315 | ||
| 1316 | dp_priv = (struct intel_dp_priv *)(intel_output + 1); | 1316 | dp_priv = (struct intel_dp_priv *)(intel_encoder + 1); |
| 1317 | 1317 | ||
| 1318 | connector = &intel_output->base; | 1318 | connector = &intel_encoder->base; |
| 1319 | drm_connector_init(dev, connector, &intel_dp_connector_funcs, | 1319 | drm_connector_init(dev, connector, &intel_dp_connector_funcs, |
| 1320 | DRM_MODE_CONNECTOR_DisplayPort); | 1320 | DRM_MODE_CONNECTOR_DisplayPort); |
| 1321 | drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); | 1321 | drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); |
| 1322 | 1322 | ||
| 1323 | if (output_reg == DP_A) | 1323 | if (output_reg == DP_A) |
| 1324 | intel_output->type = INTEL_OUTPUT_EDP; | 1324 | intel_encoder->type = INTEL_OUTPUT_EDP; |
| 1325 | else | 1325 | else |
| 1326 | intel_output->type = INTEL_OUTPUT_DISPLAYPORT; | 1326 | intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; |
| 1327 | 1327 | ||
| 1328 | if (output_reg == DP_B || output_reg == PCH_DP_B) | 1328 | if (output_reg == DP_B || output_reg == PCH_DP_B) |
| 1329 | intel_output->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); | 1329 | intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); |
| 1330 | else if (output_reg == DP_C || output_reg == PCH_DP_C) | 1330 | else if (output_reg == DP_C || output_reg == PCH_DP_C) |
| 1331 | intel_output->clone_mask = (1 << INTEL_DP_C_CLONE_BIT); | 1331 | intel_encoder->clone_mask = (1 << INTEL_DP_C_CLONE_BIT); |
| 1332 | else if (output_reg == DP_D || output_reg == PCH_DP_D) | 1332 | else if (output_reg == DP_D || output_reg == PCH_DP_D) |
| 1333 | intel_output->clone_mask = (1 << INTEL_DP_D_CLONE_BIT); | 1333 | intel_encoder->clone_mask = (1 << INTEL_DP_D_CLONE_BIT); |
| 1334 | 1334 | ||
| 1335 | if (IS_eDP(intel_output)) | 1335 | if (IS_eDP(intel_encoder)) |
| 1336 | intel_output->clone_mask = (1 << INTEL_EDP_CLONE_BIT); | 1336 | intel_encoder->clone_mask = (1 << INTEL_EDP_CLONE_BIT); |
| 1337 | 1337 | ||
| 1338 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 1338 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 1339 | connector->interlace_allowed = true; | 1339 | connector->interlace_allowed = true; |
| 1340 | connector->doublescan_allowed = 0; | 1340 | connector->doublescan_allowed = 0; |
| 1341 | 1341 | ||
| 1342 | dp_priv->intel_output = intel_output; | 1342 | dp_priv->intel_encoder = intel_encoder; |
| 1343 | dp_priv->output_reg = output_reg; | 1343 | dp_priv->output_reg = output_reg; |
| 1344 | dp_priv->has_audio = false; | 1344 | dp_priv->has_audio = false; |
| 1345 | dp_priv->dpms_mode = DRM_MODE_DPMS_ON; | 1345 | dp_priv->dpms_mode = DRM_MODE_DPMS_ON; |
| 1346 | intel_output->dev_priv = dp_priv; | 1346 | intel_encoder->dev_priv = dp_priv; |
| 1347 | 1347 | ||
| 1348 | drm_encoder_init(dev, &intel_output->enc, &intel_dp_enc_funcs, | 1348 | drm_encoder_init(dev, &intel_encoder->enc, &intel_dp_enc_funcs, |
| 1349 | DRM_MODE_ENCODER_TMDS); | 1349 | DRM_MODE_ENCODER_TMDS); |
| 1350 | drm_encoder_helper_add(&intel_output->enc, &intel_dp_helper_funcs); | 1350 | drm_encoder_helper_add(&intel_encoder->enc, &intel_dp_helper_funcs); |
| 1351 | 1351 | ||
| 1352 | drm_mode_connector_attach_encoder(&intel_output->base, | 1352 | drm_mode_connector_attach_encoder(&intel_encoder->base, |
| 1353 | &intel_output->enc); | 1353 | &intel_encoder->enc); |
| 1354 | drm_sysfs_connector_add(connector); | 1354 | drm_sysfs_connector_add(connector); |
| 1355 | 1355 | ||
| 1356 | /* Set up the DDC bus. */ | 1356 | /* Set up the DDC bus. */ |
| @@ -1378,10 +1378,10 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
| 1378 | break; | 1378 | break; |
| 1379 | } | 1379 | } |
| 1380 | 1380 | ||
| 1381 | intel_dp_i2c_init(intel_output, name); | 1381 | intel_dp_i2c_init(intel_encoder, name); |
| 1382 | 1382 | ||
| 1383 | intel_output->ddc_bus = &dp_priv->adapter; | 1383 | intel_encoder->ddc_bus = &dp_priv->adapter; |
| 1384 | intel_output->hot_plug = intel_dp_hot_plug; | 1384 | intel_encoder->hot_plug = intel_dp_hot_plug; |
| 1385 | 1385 | ||
| 1386 | if (output_reg == DP_A) { | 1386 | if (output_reg == DP_A) { |
| 1387 | /* initialize panel mode from VBT if available for eDP */ | 1387 | /* initialize panel mode from VBT if available for eDP */ |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 3a467ca57857..e30253755f12 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
| @@ -95,7 +95,7 @@ struct intel_framebuffer { | |||
| 95 | }; | 95 | }; |
| 96 | 96 | ||
| 97 | 97 | ||
| 98 | struct intel_output { | 98 | struct intel_encoder { |
| 99 | struct drm_connector base; | 99 | struct drm_connector base; |
| 100 | 100 | ||
| 101 | struct drm_encoder enc; | 101 | struct drm_encoder enc; |
| @@ -105,7 +105,7 @@ struct intel_output { | |||
| 105 | bool load_detect_temp; | 105 | bool load_detect_temp; |
| 106 | bool needs_tv_clock; | 106 | bool needs_tv_clock; |
| 107 | void *dev_priv; | 107 | void *dev_priv; |
| 108 | void (*hot_plug)(struct intel_output *); | 108 | void (*hot_plug)(struct intel_encoder *); |
| 109 | int crtc_mask; | 109 | int crtc_mask; |
| 110 | int clone_mask; | 110 | int clone_mask; |
| 111 | }; | 111 | }; |
| @@ -152,15 +152,15 @@ struct intel_crtc { | |||
| 152 | }; | 152 | }; |
| 153 | 153 | ||
| 154 | #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) | 154 | #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) |
| 155 | #define to_intel_output(x) container_of(x, struct intel_output, base) | 155 | #define to_intel_encoder(x) container_of(x, struct intel_encoder, base) |
| 156 | #define enc_to_intel_output(x) container_of(x, struct intel_output, enc) | 156 | #define enc_to_intel_encoder(x) container_of(x, struct intel_encoder, enc) |
| 157 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) | 157 | #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) |
| 158 | 158 | ||
| 159 | struct i2c_adapter *intel_i2c_create(struct drm_device *dev, const u32 reg, | 159 | struct i2c_adapter *intel_i2c_create(struct drm_device *dev, const u32 reg, |
| 160 | const char *name); | 160 | const char *name); |
| 161 | void intel_i2c_destroy(struct i2c_adapter *adapter); | 161 | void intel_i2c_destroy(struct i2c_adapter *adapter); |
| 162 | int intel_ddc_get_modes(struct intel_output *intel_output); | 162 | int intel_ddc_get_modes(struct intel_encoder *intel_encoder); |
| 163 | extern bool intel_ddc_probe(struct intel_output *intel_output); | 163 | extern bool intel_ddc_probe(struct intel_encoder *intel_encoder); |
| 164 | void intel_i2c_quirk_set(struct drm_device *dev, bool enable); | 164 | void intel_i2c_quirk_set(struct drm_device *dev, bool enable); |
| 165 | void intel_i2c_reset_gmbus(struct drm_device *dev); | 165 | void intel_i2c_reset_gmbus(struct drm_device *dev); |
| 166 | 166 | ||
| @@ -175,7 +175,7 @@ extern void intel_dp_init(struct drm_device *dev, int dp_reg); | |||
| 175 | void | 175 | void |
| 176 | intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, | 176 | intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, |
| 177 | struct drm_display_mode *adjusted_mode); | 177 | struct drm_display_mode *adjusted_mode); |
| 178 | extern void intel_edp_link_config (struct intel_output *, int *, int *); | 178 | extern void intel_edp_link_config (struct intel_encoder *, int *, int *); |
| 179 | 179 | ||
| 180 | 180 | ||
| 181 | extern int intel_panel_fitter_pipe (struct drm_device *dev); | 181 | extern int intel_panel_fitter_pipe (struct drm_device *dev); |
| @@ -191,10 +191,10 @@ int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, | |||
| 191 | struct drm_file *file_priv); | 191 | struct drm_file *file_priv); |
| 192 | extern void intel_wait_for_vblank(struct drm_device *dev); | 192 | extern void intel_wait_for_vblank(struct drm_device *dev); |
| 193 | extern struct drm_crtc *intel_get_crtc_from_pipe(struct drm_device *dev, int pipe); | 193 | extern struct drm_crtc *intel_get_crtc_from_pipe(struct drm_device *dev, int pipe); |
| 194 | extern struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, | 194 | extern struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, |
| 195 | struct drm_display_mode *mode, | 195 | struct drm_display_mode *mode, |
| 196 | int *dpms_mode); | 196 | int *dpms_mode); |
| 197 | extern void intel_release_load_detect_pipe(struct intel_output *intel_output, | 197 | extern void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, |
| 198 | int dpms_mode); | 198 | int dpms_mode); |
| 199 | 199 | ||
| 200 | extern struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB); | 200 | extern struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB); |
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c index 0427ca5a2514..ebf213c96b9c 100644 --- a/drivers/gpu/drm/i915/intel_dvo.c +++ b/drivers/gpu/drm/i915/intel_dvo.c | |||
| @@ -80,8 +80,8 @@ static struct intel_dvo_device intel_dvo_devices[] = { | |||
| 80 | static void intel_dvo_dpms(struct drm_encoder *encoder, int mode) | 80 | static void intel_dvo_dpms(struct drm_encoder *encoder, int mode) |
| 81 | { | 81 | { |
| 82 | struct drm_i915_private *dev_priv = encoder->dev->dev_private; | 82 | struct drm_i915_private *dev_priv = encoder->dev->dev_private; |
| 83 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 83 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 84 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 84 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 85 | u32 dvo_reg = dvo->dvo_reg; | 85 | u32 dvo_reg = dvo->dvo_reg; |
| 86 | u32 temp = I915_READ(dvo_reg); | 86 | u32 temp = I915_READ(dvo_reg); |
| 87 | 87 | ||
| @@ -99,8 +99,8 @@ static void intel_dvo_dpms(struct drm_encoder *encoder, int mode) | |||
| 99 | static void intel_dvo_save(struct drm_connector *connector) | 99 | static void intel_dvo_save(struct drm_connector *connector) |
| 100 | { | 100 | { |
| 101 | struct drm_i915_private *dev_priv = connector->dev->dev_private; | 101 | struct drm_i915_private *dev_priv = connector->dev->dev_private; |
| 102 | struct intel_output *intel_output = to_intel_output(connector); | 102 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 103 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 103 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 104 | 104 | ||
| 105 | /* Each output should probably just save the registers it touches, | 105 | /* Each output should probably just save the registers it touches, |
| 106 | * but for now, use more overkill. | 106 | * but for now, use more overkill. |
| @@ -115,8 +115,8 @@ static void intel_dvo_save(struct drm_connector *connector) | |||
| 115 | static void intel_dvo_restore(struct drm_connector *connector) | 115 | static void intel_dvo_restore(struct drm_connector *connector) |
| 116 | { | 116 | { |
| 117 | struct drm_i915_private *dev_priv = connector->dev->dev_private; | 117 | struct drm_i915_private *dev_priv = connector->dev->dev_private; |
| 118 | struct intel_output *intel_output = to_intel_output(connector); | 118 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 119 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 119 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 120 | 120 | ||
| 121 | dvo->dev_ops->restore(dvo); | 121 | dvo->dev_ops->restore(dvo); |
| 122 | 122 | ||
| @@ -128,8 +128,8 @@ static void intel_dvo_restore(struct drm_connector *connector) | |||
| 128 | static int intel_dvo_mode_valid(struct drm_connector *connector, | 128 | static int intel_dvo_mode_valid(struct drm_connector *connector, |
| 129 | struct drm_display_mode *mode) | 129 | struct drm_display_mode *mode) |
| 130 | { | 130 | { |
| 131 | struct intel_output *intel_output = to_intel_output(connector); | 131 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 132 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 132 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 133 | 133 | ||
| 134 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) | 134 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) |
| 135 | return MODE_NO_DBLESCAN; | 135 | return MODE_NO_DBLESCAN; |
| @@ -150,8 +150,8 @@ static bool intel_dvo_mode_fixup(struct drm_encoder *encoder, | |||
| 150 | struct drm_display_mode *mode, | 150 | struct drm_display_mode *mode, |
| 151 | struct drm_display_mode *adjusted_mode) | 151 | struct drm_display_mode *adjusted_mode) |
| 152 | { | 152 | { |
| 153 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 153 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 154 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 154 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 155 | 155 | ||
| 156 | /* If we have timings from the BIOS for the panel, put them in | 156 | /* If we have timings from the BIOS for the panel, put them in |
| 157 | * to the adjusted mode. The CRTC will be set up for this mode, | 157 | * to the adjusted mode. The CRTC will be set up for this mode, |
| @@ -186,8 +186,8 @@ static void intel_dvo_mode_set(struct drm_encoder *encoder, | |||
| 186 | struct drm_device *dev = encoder->dev; | 186 | struct drm_device *dev = encoder->dev; |
| 187 | struct drm_i915_private *dev_priv = dev->dev_private; | 187 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 188 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); | 188 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
| 189 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 189 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 190 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 190 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 191 | int pipe = intel_crtc->pipe; | 191 | int pipe = intel_crtc->pipe; |
| 192 | u32 dvo_val; | 192 | u32 dvo_val; |
| 193 | u32 dvo_reg = dvo->dvo_reg, dvo_srcdim_reg; | 193 | u32 dvo_reg = dvo->dvo_reg, dvo_srcdim_reg; |
| @@ -241,23 +241,23 @@ static void intel_dvo_mode_set(struct drm_encoder *encoder, | |||
| 241 | */ | 241 | */ |
| 242 | static enum drm_connector_status intel_dvo_detect(struct drm_connector *connector) | 242 | static enum drm_connector_status intel_dvo_detect(struct drm_connector *connector) |
| 243 | { | 243 | { |
| 244 | struct intel_output *intel_output = to_intel_output(connector); | 244 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 245 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 245 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 246 | 246 | ||
| 247 | return dvo->dev_ops->detect(dvo); | 247 | return dvo->dev_ops->detect(dvo); |
| 248 | } | 248 | } |
| 249 | 249 | ||
| 250 | static int intel_dvo_get_modes(struct drm_connector *connector) | 250 | static int intel_dvo_get_modes(struct drm_connector *connector) |
| 251 | { | 251 | { |
| 252 | struct intel_output *intel_output = to_intel_output(connector); | 252 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 253 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 253 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 254 | 254 | ||
| 255 | /* We should probably have an i2c driver get_modes function for those | 255 | /* We should probably have an i2c driver get_modes function for those |
| 256 | * devices which will have a fixed set of modes determined by the chip | 256 | * devices which will have a fixed set of modes determined by the chip |
| 257 | * (TV-out, for example), but for now with just TMDS and LVDS, | 257 | * (TV-out, for example), but for now with just TMDS and LVDS, |
| 258 | * that's not the case. | 258 | * that's not the case. |
| 259 | */ | 259 | */ |
| 260 | intel_ddc_get_modes(intel_output); | 260 | intel_ddc_get_modes(intel_encoder); |
| 261 | if (!list_empty(&connector->probed_modes)) | 261 | if (!list_empty(&connector->probed_modes)) |
| 262 | return 1; | 262 | return 1; |
| 263 | 263 | ||
| @@ -275,8 +275,8 @@ static int intel_dvo_get_modes(struct drm_connector *connector) | |||
| 275 | 275 | ||
| 276 | static void intel_dvo_destroy (struct drm_connector *connector) | 276 | static void intel_dvo_destroy (struct drm_connector *connector) |
| 277 | { | 277 | { |
| 278 | struct intel_output *intel_output = to_intel_output(connector); | 278 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 279 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 279 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 280 | 280 | ||
| 281 | if (dvo) { | 281 | if (dvo) { |
| 282 | if (dvo->dev_ops->destroy) | 282 | if (dvo->dev_ops->destroy) |
| @@ -286,13 +286,13 @@ static void intel_dvo_destroy (struct drm_connector *connector) | |||
| 286 | /* no need, in i830_dvoices[] now */ | 286 | /* no need, in i830_dvoices[] now */ |
| 287 | //kfree(dvo); | 287 | //kfree(dvo); |
| 288 | } | 288 | } |
| 289 | if (intel_output->i2c_bus) | 289 | if (intel_encoder->i2c_bus) |
| 290 | intel_i2c_destroy(intel_output->i2c_bus); | 290 | intel_i2c_destroy(intel_encoder->i2c_bus); |
| 291 | if (intel_output->ddc_bus) | 291 | if (intel_encoder->ddc_bus) |
| 292 | intel_i2c_destroy(intel_output->ddc_bus); | 292 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 293 | drm_sysfs_connector_remove(connector); | 293 | drm_sysfs_connector_remove(connector); |
| 294 | drm_connector_cleanup(connector); | 294 | drm_connector_cleanup(connector); |
| 295 | kfree(intel_output); | 295 | kfree(intel_encoder); |
| 296 | } | 296 | } |
| 297 | 297 | ||
| 298 | #ifdef RANDR_GET_CRTC_INTERFACE | 298 | #ifdef RANDR_GET_CRTC_INTERFACE |
| @@ -300,8 +300,8 @@ static struct drm_crtc *intel_dvo_get_crtc(struct drm_connector *connector) | |||
| 300 | { | 300 | { |
| 301 | struct drm_device *dev = connector->dev; | 301 | struct drm_device *dev = connector->dev; |
| 302 | struct drm_i915_private *dev_priv = dev->dev_private; | 302 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 303 | struct intel_output *intel_output = to_intel_output(connector); | 303 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 304 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 304 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 305 | int pipe = !!(I915_READ(dvo->dvo_reg) & SDVO_PIPE_B_SELECT); | 305 | int pipe = !!(I915_READ(dvo->dvo_reg) & SDVO_PIPE_B_SELECT); |
| 306 | 306 | ||
| 307 | return intel_pipe_to_crtc(pScrn, pipe); | 307 | return intel_pipe_to_crtc(pScrn, pipe); |
| @@ -352,8 +352,8 @@ intel_dvo_get_current_mode (struct drm_connector *connector) | |||
| 352 | { | 352 | { |
| 353 | struct drm_device *dev = connector->dev; | 353 | struct drm_device *dev = connector->dev; |
| 354 | struct drm_i915_private *dev_priv = dev->dev_private; | 354 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 355 | struct intel_output *intel_output = to_intel_output(connector); | 355 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 356 | struct intel_dvo_device *dvo = intel_output->dev_priv; | 356 | struct intel_dvo_device *dvo = intel_encoder->dev_priv; |
| 357 | uint32_t dvo_reg = dvo->dvo_reg; | 357 | uint32_t dvo_reg = dvo->dvo_reg; |
| 358 | uint32_t dvo_val = I915_READ(dvo_reg); | 358 | uint32_t dvo_val = I915_READ(dvo_reg); |
| 359 | struct drm_display_mode *mode = NULL; | 359 | struct drm_display_mode *mode = NULL; |
| @@ -383,24 +383,24 @@ intel_dvo_get_current_mode (struct drm_connector *connector) | |||
| 383 | 383 | ||
| 384 | void intel_dvo_init(struct drm_device *dev) | 384 | void intel_dvo_init(struct drm_device *dev) |
| 385 | { | 385 | { |
| 386 | struct intel_output *intel_output; | 386 | struct intel_encoder *intel_encoder; |
| 387 | struct intel_dvo_device *dvo; | 387 | struct intel_dvo_device *dvo; |
| 388 | struct i2c_adapter *i2cbus = NULL; | 388 | struct i2c_adapter *i2cbus = NULL; |
| 389 | int ret = 0; | 389 | int ret = 0; |
| 390 | int i; | 390 | int i; |
| 391 | int encoder_type = DRM_MODE_ENCODER_NONE; | 391 | int encoder_type = DRM_MODE_ENCODER_NONE; |
| 392 | intel_output = kzalloc (sizeof(struct intel_output), GFP_KERNEL); | 392 | intel_encoder = kzalloc (sizeof(struct intel_encoder), GFP_KERNEL); |
| 393 | if (!intel_output) | 393 | if (!intel_encoder) |
| 394 | return; | 394 | return; |
| 395 | 395 | ||
| 396 | /* Set up the DDC bus */ | 396 | /* Set up the DDC bus */ |
| 397 | intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "DVODDC_D"); | 397 | intel_encoder->ddc_bus = intel_i2c_create(dev, GPIOD, "DVODDC_D"); |
| 398 | if (!intel_output->ddc_bus) | 398 | if (!intel_encoder->ddc_bus) |
| 399 | goto free_intel; | 399 | goto free_intel; |
| 400 | 400 | ||
| 401 | /* Now, try to find a controller */ | 401 | /* Now, try to find a controller */ |
| 402 | for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { | 402 | for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { |
| 403 | struct drm_connector *connector = &intel_output->base; | 403 | struct drm_connector *connector = &intel_encoder->base; |
| 404 | int gpio; | 404 | int gpio; |
| 405 | 405 | ||
| 406 | dvo = &intel_dvo_devices[i]; | 406 | dvo = &intel_dvo_devices[i]; |
| @@ -435,11 +435,11 @@ void intel_dvo_init(struct drm_device *dev) | |||
| 435 | if (!ret) | 435 | if (!ret) |
| 436 | continue; | 436 | continue; |
| 437 | 437 | ||
| 438 | intel_output->type = INTEL_OUTPUT_DVO; | 438 | intel_encoder->type = INTEL_OUTPUT_DVO; |
| 439 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 439 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 440 | switch (dvo->type) { | 440 | switch (dvo->type) { |
| 441 | case INTEL_DVO_CHIP_TMDS: | 441 | case INTEL_DVO_CHIP_TMDS: |
| 442 | intel_output->clone_mask = | 442 | intel_encoder->clone_mask = |
| 443 | (1 << INTEL_DVO_TMDS_CLONE_BIT) | | 443 | (1 << INTEL_DVO_TMDS_CLONE_BIT) | |
| 444 | (1 << INTEL_ANALOG_CLONE_BIT); | 444 | (1 << INTEL_ANALOG_CLONE_BIT); |
| 445 | drm_connector_init(dev, connector, | 445 | drm_connector_init(dev, connector, |
| @@ -448,7 +448,7 @@ void intel_dvo_init(struct drm_device *dev) | |||
| 448 | encoder_type = DRM_MODE_ENCODER_TMDS; | 448 | encoder_type = DRM_MODE_ENCODER_TMDS; |
| 449 | break; | 449 | break; |
| 450 | case INTEL_DVO_CHIP_LVDS: | 450 | case INTEL_DVO_CHIP_LVDS: |
| 451 | intel_output->clone_mask = | 451 | intel_encoder->clone_mask = |
| 452 | (1 << INTEL_DVO_LVDS_CLONE_BIT); | 452 | (1 << INTEL_DVO_LVDS_CLONE_BIT); |
| 453 | drm_connector_init(dev, connector, | 453 | drm_connector_init(dev, connector, |
| 454 | &intel_dvo_connector_funcs, | 454 | &intel_dvo_connector_funcs, |
| @@ -463,16 +463,16 @@ void intel_dvo_init(struct drm_device *dev) | |||
| 463 | connector->interlace_allowed = false; | 463 | connector->interlace_allowed = false; |
| 464 | connector->doublescan_allowed = false; | 464 | connector->doublescan_allowed = false; |
| 465 | 465 | ||
| 466 | intel_output->dev_priv = dvo; | 466 | intel_encoder->dev_priv = dvo; |
| 467 | intel_output->i2c_bus = i2cbus; | 467 | intel_encoder->i2c_bus = i2cbus; |
| 468 | 468 | ||
| 469 | drm_encoder_init(dev, &intel_output->enc, | 469 | drm_encoder_init(dev, &intel_encoder->enc, |
| 470 | &intel_dvo_enc_funcs, encoder_type); | 470 | &intel_dvo_enc_funcs, encoder_type); |
| 471 | drm_encoder_helper_add(&intel_output->enc, | 471 | drm_encoder_helper_add(&intel_encoder->enc, |
| 472 | &intel_dvo_helper_funcs); | 472 | &intel_dvo_helper_funcs); |
| 473 | 473 | ||
| 474 | drm_mode_connector_attach_encoder(&intel_output->base, | 474 | drm_mode_connector_attach_encoder(&intel_encoder->base, |
| 475 | &intel_output->enc); | 475 | &intel_encoder->enc); |
| 476 | if (dvo->type == INTEL_DVO_CHIP_LVDS) { | 476 | if (dvo->type == INTEL_DVO_CHIP_LVDS) { |
| 477 | /* For our LVDS chipsets, we should hopefully be able | 477 | /* For our LVDS chipsets, we should hopefully be able |
| 478 | * to dig the fixed panel mode out of the BIOS data. | 478 | * to dig the fixed panel mode out of the BIOS data. |
| @@ -490,10 +490,10 @@ void intel_dvo_init(struct drm_device *dev) | |||
| 490 | return; | 490 | return; |
| 491 | } | 491 | } |
| 492 | 492 | ||
| 493 | intel_i2c_destroy(intel_output->ddc_bus); | 493 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 494 | /* Didn't find a chip, so tear down. */ | 494 | /* Didn't find a chip, so tear down. */ |
| 495 | if (i2cbus != NULL) | 495 | if (i2cbus != NULL) |
| 496 | intel_i2c_destroy(i2cbus); | 496 | intel_i2c_destroy(i2cbus); |
| 497 | free_intel: | 497 | free_intel: |
| 498 | kfree(intel_output); | 498 | kfree(intel_encoder); |
| 499 | } | 499 | } |
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index 69bbef92f130..8a0b3bcdc7b1 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
| @@ -144,7 +144,7 @@ static int intelfb_create(struct drm_device *dev, uint32_t fb_width, | |||
| 144 | ret = -ENOMEM; | 144 | ret = -ENOMEM; |
| 145 | goto out; | 145 | goto out; |
| 146 | } | 146 | } |
| 147 | obj_priv = fbo->driver_private; | 147 | obj_priv = to_intel_bo(fbo); |
| 148 | 148 | ||
| 149 | mutex_lock(&dev->struct_mutex); | 149 | mutex_lock(&dev->struct_mutex); |
| 150 | 150 | ||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 1ed02f641258..48cade0cf7b1 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
| @@ -51,8 +51,8 @@ static void intel_hdmi_mode_set(struct drm_encoder *encoder, | |||
| 51 | struct drm_i915_private *dev_priv = dev->dev_private; | 51 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 52 | struct drm_crtc *crtc = encoder->crtc; | 52 | struct drm_crtc *crtc = encoder->crtc; |
| 53 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 53 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 54 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 54 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 55 | struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; | 55 | struct intel_hdmi_priv *hdmi_priv = intel_encoder->dev_priv; |
| 56 | u32 sdvox; | 56 | u32 sdvox; |
| 57 | 57 | ||
| 58 | sdvox = SDVO_ENCODING_HDMI | | 58 | sdvox = SDVO_ENCODING_HDMI | |
| @@ -74,8 +74,8 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode) | |||
| 74 | { | 74 | { |
| 75 | struct drm_device *dev = encoder->dev; | 75 | struct drm_device *dev = encoder->dev; |
| 76 | struct drm_i915_private *dev_priv = dev->dev_private; | 76 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 77 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 77 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 78 | struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; | 78 | struct intel_hdmi_priv *hdmi_priv = intel_encoder->dev_priv; |
| 79 | u32 temp; | 79 | u32 temp; |
| 80 | 80 | ||
| 81 | temp = I915_READ(hdmi_priv->sdvox_reg); | 81 | temp = I915_READ(hdmi_priv->sdvox_reg); |
| @@ -110,8 +110,8 @@ static void intel_hdmi_save(struct drm_connector *connector) | |||
| 110 | { | 110 | { |
| 111 | struct drm_device *dev = connector->dev; | 111 | struct drm_device *dev = connector->dev; |
| 112 | struct drm_i915_private *dev_priv = dev->dev_private; | 112 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 113 | struct intel_output *intel_output = to_intel_output(connector); | 113 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 114 | struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; | 114 | struct intel_hdmi_priv *hdmi_priv = intel_encoder->dev_priv; |
| 115 | 115 | ||
| 116 | hdmi_priv->save_SDVOX = I915_READ(hdmi_priv->sdvox_reg); | 116 | hdmi_priv->save_SDVOX = I915_READ(hdmi_priv->sdvox_reg); |
| 117 | } | 117 | } |
| @@ -120,8 +120,8 @@ static void intel_hdmi_restore(struct drm_connector *connector) | |||
| 120 | { | 120 | { |
| 121 | struct drm_device *dev = connector->dev; | 121 | struct drm_device *dev = connector->dev; |
| 122 | struct drm_i915_private *dev_priv = dev->dev_private; | 122 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 123 | struct intel_output *intel_output = to_intel_output(connector); | 123 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 124 | struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; | 124 | struct intel_hdmi_priv *hdmi_priv = intel_encoder->dev_priv; |
| 125 | 125 | ||
| 126 | I915_WRITE(hdmi_priv->sdvox_reg, hdmi_priv->save_SDVOX); | 126 | I915_WRITE(hdmi_priv->sdvox_reg, hdmi_priv->save_SDVOX); |
| 127 | POSTING_READ(hdmi_priv->sdvox_reg); | 127 | POSTING_READ(hdmi_priv->sdvox_reg); |
| @@ -151,21 +151,21 @@ static bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, | |||
| 151 | static enum drm_connector_status | 151 | static enum drm_connector_status |
| 152 | intel_hdmi_detect(struct drm_connector *connector) | 152 | intel_hdmi_detect(struct drm_connector *connector) |
| 153 | { | 153 | { |
| 154 | struct intel_output *intel_output = to_intel_output(connector); | 154 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 155 | struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; | 155 | struct intel_hdmi_priv *hdmi_priv = intel_encoder->dev_priv; |
| 156 | struct edid *edid = NULL; | 156 | struct edid *edid = NULL; |
| 157 | enum drm_connector_status status = connector_status_disconnected; | 157 | enum drm_connector_status status = connector_status_disconnected; |
| 158 | 158 | ||
| 159 | hdmi_priv->has_hdmi_sink = false; | 159 | hdmi_priv->has_hdmi_sink = false; |
| 160 | edid = drm_get_edid(&intel_output->base, | 160 | edid = drm_get_edid(&intel_encoder->base, |
| 161 | intel_output->ddc_bus); | 161 | intel_encoder->ddc_bus); |
| 162 | 162 | ||
| 163 | if (edid) { | 163 | if (edid) { |
| 164 | if (edid->input & DRM_EDID_INPUT_DIGITAL) { | 164 | if (edid->input & DRM_EDID_INPUT_DIGITAL) { |
| 165 | status = connector_status_connected; | 165 | status = connector_status_connected; |
| 166 | hdmi_priv->has_hdmi_sink = drm_detect_hdmi_monitor(edid); | 166 | hdmi_priv->has_hdmi_sink = drm_detect_hdmi_monitor(edid); |
| 167 | } | 167 | } |
| 168 | intel_output->base.display_info.raw_edid = NULL; | 168 | intel_encoder->base.display_info.raw_edid = NULL; |
| 169 | kfree(edid); | 169 | kfree(edid); |
| 170 | } | 170 | } |
| 171 | 171 | ||
| @@ -174,24 +174,24 @@ intel_hdmi_detect(struct drm_connector *connector) | |||
| 174 | 174 | ||
| 175 | static int intel_hdmi_get_modes(struct drm_connector *connector) | 175 | static int intel_hdmi_get_modes(struct drm_connector *connector) |
| 176 | { | 176 | { |
| 177 | struct intel_output *intel_output = to_intel_output(connector); | 177 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 178 | 178 | ||
| 179 | /* We should parse the EDID data and find out if it's an HDMI sink so | 179 | /* We should parse the EDID data and find out if it's an HDMI sink so |
| 180 | * we can send audio to it. | 180 | * we can send audio to it. |
| 181 | */ | 181 | */ |
| 182 | 182 | ||
| 183 | return intel_ddc_get_modes(intel_output); | 183 | return intel_ddc_get_modes(intel_encoder); |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | static void intel_hdmi_destroy(struct drm_connector *connector) | 186 | static void intel_hdmi_destroy(struct drm_connector *connector) |
| 187 | { | 187 | { |
| 188 | struct intel_output *intel_output = to_intel_output(connector); | 188 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 189 | 189 | ||
| 190 | if (intel_output->i2c_bus) | 190 | if (intel_encoder->i2c_bus) |
| 191 | intel_i2c_destroy(intel_output->i2c_bus); | 191 | intel_i2c_destroy(intel_encoder->i2c_bus); |
| 192 | drm_sysfs_connector_remove(connector); | 192 | drm_sysfs_connector_remove(connector); |
| 193 | drm_connector_cleanup(connector); | 193 | drm_connector_cleanup(connector); |
| 194 | kfree(intel_output); | 194 | kfree(intel_encoder); |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | static const struct drm_encoder_helper_funcs intel_hdmi_helper_funcs = { | 197 | static const struct drm_encoder_helper_funcs intel_hdmi_helper_funcs = { |
| @@ -230,63 +230,63 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) | |||
| 230 | { | 230 | { |
| 231 | struct drm_i915_private *dev_priv = dev->dev_private; | 231 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 232 | struct drm_connector *connector; | 232 | struct drm_connector *connector; |
| 233 | struct intel_output *intel_output; | 233 | struct intel_encoder *intel_encoder; |
| 234 | struct intel_hdmi_priv *hdmi_priv; | 234 | struct intel_hdmi_priv *hdmi_priv; |
| 235 | 235 | ||
| 236 | intel_output = kcalloc(sizeof(struct intel_output) + | 236 | intel_encoder = kcalloc(sizeof(struct intel_encoder) + |
| 237 | sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL); | 237 | sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL); |
| 238 | if (!intel_output) | 238 | if (!intel_encoder) |
| 239 | return; | 239 | return; |
| 240 | hdmi_priv = (struct intel_hdmi_priv *)(intel_output + 1); | 240 | hdmi_priv = (struct intel_hdmi_priv *)(intel_encoder + 1); |
| 241 | 241 | ||
| 242 | connector = &intel_output->base; | 242 | connector = &intel_encoder->base; |
| 243 | drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, | 243 | drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, |
| 244 | DRM_MODE_CONNECTOR_HDMIA); | 244 | DRM_MODE_CONNECTOR_HDMIA); |
| 245 | drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); | 245 | drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); |
| 246 | 246 | ||
| 247 | intel_output->type = INTEL_OUTPUT_HDMI; | 247 | intel_encoder->type = INTEL_OUTPUT_HDMI; |
| 248 | 248 | ||
| 249 | connector->interlace_allowed = 0; | 249 | connector->interlace_allowed = 0; |
| 250 | connector->doublescan_allowed = 0; | 250 | connector->doublescan_allowed = 0; |
| 251 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 251 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 252 | 252 | ||
| 253 | /* Set up the DDC bus. */ | 253 | /* Set up the DDC bus. */ |
| 254 | if (sdvox_reg == SDVOB) { | 254 | if (sdvox_reg == SDVOB) { |
| 255 | intel_output->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT); | 255 | intel_encoder->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT); |
| 256 | intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB"); | 256 | intel_encoder->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB"); |
| 257 | dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; | 257 | dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; |
| 258 | } else if (sdvox_reg == SDVOC) { | 258 | } else if (sdvox_reg == SDVOC) { |
| 259 | intel_output->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT); | 259 | intel_encoder->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT); |
| 260 | intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC"); | 260 | intel_encoder->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC"); |
| 261 | dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; | 261 | dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; |
| 262 | } else if (sdvox_reg == HDMIB) { | 262 | } else if (sdvox_reg == HDMIB) { |
| 263 | intel_output->clone_mask = (1 << INTEL_HDMID_CLONE_BIT); | 263 | intel_encoder->clone_mask = (1 << INTEL_HDMID_CLONE_BIT); |
| 264 | intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE, | 264 | intel_encoder->ddc_bus = intel_i2c_create(dev, PCH_GPIOE, |
| 265 | "HDMIB"); | 265 | "HDMIB"); |
| 266 | dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; | 266 | dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; |
| 267 | } else if (sdvox_reg == HDMIC) { | 267 | } else if (sdvox_reg == HDMIC) { |
| 268 | intel_output->clone_mask = (1 << INTEL_HDMIE_CLONE_BIT); | 268 | intel_encoder->clone_mask = (1 << INTEL_HDMIE_CLONE_BIT); |
| 269 | intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD, | 269 | intel_encoder->ddc_bus = intel_i2c_create(dev, PCH_GPIOD, |
| 270 | "HDMIC"); | 270 | "HDMIC"); |
| 271 | dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; | 271 | dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; |
| 272 | } else if (sdvox_reg == HDMID) { | 272 | } else if (sdvox_reg == HDMID) { |
| 273 | intel_output->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT); | 273 | intel_encoder->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT); |
| 274 | intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF, | 274 | intel_encoder->ddc_bus = intel_i2c_create(dev, PCH_GPIOF, |
| 275 | "HDMID"); | 275 | "HDMID"); |
| 276 | dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS; | 276 | dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS; |
| 277 | } | 277 | } |
| 278 | if (!intel_output->ddc_bus) | 278 | if (!intel_encoder->ddc_bus) |
| 279 | goto err_connector; | 279 | goto err_connector; |
| 280 | 280 | ||
| 281 | hdmi_priv->sdvox_reg = sdvox_reg; | 281 | hdmi_priv->sdvox_reg = sdvox_reg; |
| 282 | intel_output->dev_priv = hdmi_priv; | 282 | intel_encoder->dev_priv = hdmi_priv; |
| 283 | 283 | ||
| 284 | drm_encoder_init(dev, &intel_output->enc, &intel_hdmi_enc_funcs, | 284 | drm_encoder_init(dev, &intel_encoder->enc, &intel_hdmi_enc_funcs, |
| 285 | DRM_MODE_ENCODER_TMDS); | 285 | DRM_MODE_ENCODER_TMDS); |
| 286 | drm_encoder_helper_add(&intel_output->enc, &intel_hdmi_helper_funcs); | 286 | drm_encoder_helper_add(&intel_encoder->enc, &intel_hdmi_helper_funcs); |
| 287 | 287 | ||
| 288 | drm_mode_connector_attach_encoder(&intel_output->base, | 288 | drm_mode_connector_attach_encoder(&intel_encoder->base, |
| 289 | &intel_output->enc); | 289 | &intel_encoder->enc); |
| 290 | drm_sysfs_connector_add(connector); | 290 | drm_sysfs_connector_add(connector); |
| 291 | 291 | ||
| 292 | /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written | 292 | /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written |
| @@ -302,7 +302,7 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) | |||
| 302 | 302 | ||
| 303 | err_connector: | 303 | err_connector: |
| 304 | drm_connector_cleanup(connector); | 304 | drm_connector_cleanup(connector); |
| 305 | kfree(intel_output); | 305 | kfree(intel_encoder); |
| 306 | 306 | ||
| 307 | return; | 307 | return; |
| 308 | } | 308 | } |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 216e9f52b6e0..b66806a37d37 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
| @@ -239,8 +239,8 @@ static bool intel_lvds_mode_fixup(struct drm_encoder *encoder, | |||
| 239 | struct drm_i915_private *dev_priv = dev->dev_private; | 239 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 240 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); | 240 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
| 241 | struct drm_encoder *tmp_encoder; | 241 | struct drm_encoder *tmp_encoder; |
| 242 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 242 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 243 | struct intel_lvds_priv *lvds_priv = intel_output->dev_priv; | 243 | struct intel_lvds_priv *lvds_priv = intel_encoder->dev_priv; |
| 244 | u32 pfit_control = 0, pfit_pgm_ratios = 0; | 244 | u32 pfit_control = 0, pfit_pgm_ratios = 0; |
| 245 | int left_border = 0, right_border = 0, top_border = 0; | 245 | int left_border = 0, right_border = 0, top_border = 0; |
| 246 | int bottom_border = 0; | 246 | int bottom_border = 0; |
| @@ -587,8 +587,8 @@ static void intel_lvds_mode_set(struct drm_encoder *encoder, | |||
| 587 | { | 587 | { |
| 588 | struct drm_device *dev = encoder->dev; | 588 | struct drm_device *dev = encoder->dev; |
| 589 | struct drm_i915_private *dev_priv = dev->dev_private; | 589 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 590 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 590 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 591 | struct intel_lvds_priv *lvds_priv = intel_output->dev_priv; | 591 | struct intel_lvds_priv *lvds_priv = intel_encoder->dev_priv; |
| 592 | 592 | ||
| 593 | /* | 593 | /* |
| 594 | * The LVDS pin pair will already have been turned on in the | 594 | * The LVDS pin pair will already have been turned on in the |
| @@ -635,14 +635,16 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect | |||
| 635 | static int intel_lvds_get_modes(struct drm_connector *connector) | 635 | static int intel_lvds_get_modes(struct drm_connector *connector) |
| 636 | { | 636 | { |
| 637 | struct drm_device *dev = connector->dev; | 637 | struct drm_device *dev = connector->dev; |
| 638 | struct intel_output *intel_output = to_intel_output(connector); | 638 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 639 | struct drm_i915_private *dev_priv = dev->dev_private; | 639 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 640 | int ret = 0; | 640 | int ret = 0; |
| 641 | 641 | ||
| 642 | ret = intel_ddc_get_modes(intel_output); | 642 | if (dev_priv->lvds_edid_good) { |
| 643 | ret = intel_ddc_get_modes(intel_encoder); | ||
| 643 | 644 | ||
| 644 | if (ret) | 645 | if (ret) |
| 645 | return ret; | 646 | return ret; |
| 647 | } | ||
| 646 | 648 | ||
| 647 | /* Didn't get an EDID, so | 649 | /* Didn't get an EDID, so |
| 648 | * Set wide sync ranges so we get all modes | 650 | * Set wide sync ranges so we get all modes |
| @@ -715,11 +717,11 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val, | |||
| 715 | static void intel_lvds_destroy(struct drm_connector *connector) | 717 | static void intel_lvds_destroy(struct drm_connector *connector) |
| 716 | { | 718 | { |
| 717 | struct drm_device *dev = connector->dev; | 719 | struct drm_device *dev = connector->dev; |
| 718 | struct intel_output *intel_output = to_intel_output(connector); | 720 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 719 | struct drm_i915_private *dev_priv = dev->dev_private; | 721 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 720 | 722 | ||
| 721 | if (intel_output->ddc_bus) | 723 | if (intel_encoder->ddc_bus) |
| 722 | intel_i2c_destroy(intel_output->ddc_bus); | 724 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 723 | if (dev_priv->lid_notifier.notifier_call) | 725 | if (dev_priv->lid_notifier.notifier_call) |
| 724 | acpi_lid_notifier_unregister(&dev_priv->lid_notifier); | 726 | acpi_lid_notifier_unregister(&dev_priv->lid_notifier); |
| 725 | drm_sysfs_connector_remove(connector); | 727 | drm_sysfs_connector_remove(connector); |
| @@ -732,13 +734,13 @@ static int intel_lvds_set_property(struct drm_connector *connector, | |||
| 732 | uint64_t value) | 734 | uint64_t value) |
| 733 | { | 735 | { |
| 734 | struct drm_device *dev = connector->dev; | 736 | struct drm_device *dev = connector->dev; |
| 735 | struct intel_output *intel_output = | 737 | struct intel_encoder *intel_encoder = |
| 736 | to_intel_output(connector); | 738 | to_intel_encoder(connector); |
| 737 | 739 | ||
| 738 | if (property == dev->mode_config.scaling_mode_property && | 740 | if (property == dev->mode_config.scaling_mode_property && |
| 739 | connector->encoder) { | 741 | connector->encoder) { |
| 740 | struct drm_crtc *crtc = connector->encoder->crtc; | 742 | struct drm_crtc *crtc = connector->encoder->crtc; |
| 741 | struct intel_lvds_priv *lvds_priv = intel_output->dev_priv; | 743 | struct intel_lvds_priv *lvds_priv = intel_encoder->dev_priv; |
| 742 | if (value == DRM_MODE_SCALE_NONE) { | 744 | if (value == DRM_MODE_SCALE_NONE) { |
| 743 | DRM_DEBUG_KMS("no scaling not supported\n"); | 745 | DRM_DEBUG_KMS("no scaling not supported\n"); |
| 744 | return 0; | 746 | return 0; |
| @@ -858,6 +860,14 @@ static const struct dmi_system_id intel_no_lvds[] = { | |||
| 858 | DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"), | 860 | DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"), |
| 859 | }, | 861 | }, |
| 860 | }, | 862 | }, |
| 863 | { | ||
| 864 | .callback = intel_no_lvds_dmi_callback, | ||
| 865 | .ident = "Clientron U800", | ||
| 866 | .matches = { | ||
| 867 | DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), | ||
| 868 | DMI_MATCH(DMI_PRODUCT_NAME, "U800"), | ||
| 869 | }, | ||
| 870 | }, | ||
| 861 | 871 | ||
| 862 | { } /* terminating entry */ | 872 | { } /* terminating entry */ |
| 863 | }; | 873 | }; |
| @@ -968,7 +978,7 @@ static int lvds_is_present_in_vbt(struct drm_device *dev) | |||
| 968 | void intel_lvds_init(struct drm_device *dev) | 978 | void intel_lvds_init(struct drm_device *dev) |
| 969 | { | 979 | { |
| 970 | struct drm_i915_private *dev_priv = dev->dev_private; | 980 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 971 | struct intel_output *intel_output; | 981 | struct intel_encoder *intel_encoder; |
| 972 | struct drm_connector *connector; | 982 | struct drm_connector *connector; |
| 973 | struct drm_encoder *encoder; | 983 | struct drm_encoder *encoder; |
| 974 | struct drm_display_mode *scan; /* *modes, *bios_mode; */ | 984 | struct drm_display_mode *scan; /* *modes, *bios_mode; */ |
| @@ -996,40 +1006,40 @@ void intel_lvds_init(struct drm_device *dev) | |||
| 996 | gpio = PCH_GPIOC; | 1006 | gpio = PCH_GPIOC; |
| 997 | } | 1007 | } |
| 998 | 1008 | ||
| 999 | intel_output = kzalloc(sizeof(struct intel_output) + | 1009 | intel_encoder = kzalloc(sizeof(struct intel_encoder) + |
| 1000 | sizeof(struct intel_lvds_priv), GFP_KERNEL); | 1010 | sizeof(struct intel_lvds_priv), GFP_KERNEL); |
| 1001 | if (!intel_output) { | 1011 | if (!intel_encoder) { |
| 1002 | return; | 1012 | return; |
| 1003 | } | 1013 | } |
| 1004 | 1014 | ||
| 1005 | connector = &intel_output->base; | 1015 | connector = &intel_encoder->base; |
| 1006 | encoder = &intel_output->enc; | 1016 | encoder = &intel_encoder->enc; |
| 1007 | drm_connector_init(dev, &intel_output->base, &intel_lvds_connector_funcs, | 1017 | drm_connector_init(dev, &intel_encoder->base, &intel_lvds_connector_funcs, |
| 1008 | DRM_MODE_CONNECTOR_LVDS); | 1018 | DRM_MODE_CONNECTOR_LVDS); |
| 1009 | 1019 | ||
| 1010 | drm_encoder_init(dev, &intel_output->enc, &intel_lvds_enc_funcs, | 1020 | drm_encoder_init(dev, &intel_encoder->enc, &intel_lvds_enc_funcs, |
| 1011 | DRM_MODE_ENCODER_LVDS); | 1021 | DRM_MODE_ENCODER_LVDS); |
| 1012 | 1022 | ||
| 1013 | drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc); | 1023 | drm_mode_connector_attach_encoder(&intel_encoder->base, &intel_encoder->enc); |
| 1014 | intel_output->type = INTEL_OUTPUT_LVDS; | 1024 | intel_encoder->type = INTEL_OUTPUT_LVDS; |
| 1015 | 1025 | ||
| 1016 | intel_output->clone_mask = (1 << INTEL_LVDS_CLONE_BIT); | 1026 | intel_encoder->clone_mask = (1 << INTEL_LVDS_CLONE_BIT); |
| 1017 | intel_output->crtc_mask = (1 << 1); | 1027 | intel_encoder->crtc_mask = (1 << 1); |
| 1018 | drm_encoder_helper_add(encoder, &intel_lvds_helper_funcs); | 1028 | drm_encoder_helper_add(encoder, &intel_lvds_helper_funcs); |
| 1019 | drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs); | 1029 | drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs); |
| 1020 | connector->display_info.subpixel_order = SubPixelHorizontalRGB; | 1030 | connector->display_info.subpixel_order = SubPixelHorizontalRGB; |
| 1021 | connector->interlace_allowed = false; | 1031 | connector->interlace_allowed = false; |
| 1022 | connector->doublescan_allowed = false; | 1032 | connector->doublescan_allowed = false; |
| 1023 | 1033 | ||
| 1024 | lvds_priv = (struct intel_lvds_priv *)(intel_output + 1); | 1034 | lvds_priv = (struct intel_lvds_priv *)(intel_encoder + 1); |
| 1025 | intel_output->dev_priv = lvds_priv; | 1035 | intel_encoder->dev_priv = lvds_priv; |
| 1026 | /* create the scaling mode property */ | 1036 | /* create the scaling mode property */ |
| 1027 | drm_mode_create_scaling_mode_property(dev); | 1037 | drm_mode_create_scaling_mode_property(dev); |
| 1028 | /* | 1038 | /* |
| 1029 | * the initial panel fitting mode will be FULL_SCREEN. | 1039 | * the initial panel fitting mode will be FULL_SCREEN. |
| 1030 | */ | 1040 | */ |
| 1031 | 1041 | ||
| 1032 | drm_connector_attach_property(&intel_output->base, | 1042 | drm_connector_attach_property(&intel_encoder->base, |
| 1033 | dev->mode_config.scaling_mode_property, | 1043 | dev->mode_config.scaling_mode_property, |
| 1034 | DRM_MODE_SCALE_FULLSCREEN); | 1044 | DRM_MODE_SCALE_FULLSCREEN); |
| 1035 | lvds_priv->fitting_mode = DRM_MODE_SCALE_FULLSCREEN; | 1045 | lvds_priv->fitting_mode = DRM_MODE_SCALE_FULLSCREEN; |
| @@ -1044,8 +1054,8 @@ void intel_lvds_init(struct drm_device *dev) | |||
| 1044 | */ | 1054 | */ |
| 1045 | 1055 | ||
| 1046 | /* Set up the DDC bus. */ | 1056 | /* Set up the DDC bus. */ |
| 1047 | intel_output->ddc_bus = intel_i2c_create(dev, gpio, "LVDSDDC_C"); | 1057 | intel_encoder->ddc_bus = intel_i2c_create(dev, gpio, "LVDSDDC_C"); |
| 1048 | if (!intel_output->ddc_bus) { | 1058 | if (!intel_encoder->ddc_bus) { |
| 1049 | dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " | 1059 | dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " |
| 1050 | "failed.\n"); | 1060 | "failed.\n"); |
| 1051 | goto failed; | 1061 | goto failed; |
| @@ -1055,7 +1065,10 @@ void intel_lvds_init(struct drm_device *dev) | |||
| 1055 | * Attempt to get the fixed panel mode from DDC. Assume that the | 1065 | * Attempt to get the fixed panel mode from DDC. Assume that the |
| 1056 | * preferred mode is the right one. | 1066 | * preferred mode is the right one. |
| 1057 | */ | 1067 | */ |
| 1058 | intel_ddc_get_modes(intel_output); | 1068 | dev_priv->lvds_edid_good = true; |
| 1069 | |||
| 1070 | if (!intel_ddc_get_modes(intel_encoder)) | ||
| 1071 | dev_priv->lvds_edid_good = false; | ||
| 1059 | 1072 | ||
| 1060 | list_for_each_entry(scan, &connector->probed_modes, head) { | 1073 | list_for_each_entry(scan, &connector->probed_modes, head) { |
| 1061 | mutex_lock(&dev->mode_config.mutex); | 1074 | mutex_lock(&dev->mode_config.mutex); |
| @@ -1133,9 +1146,9 @@ out: | |||
| 1133 | 1146 | ||
| 1134 | failed: | 1147 | failed: |
| 1135 | DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); | 1148 | DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); |
| 1136 | if (intel_output->ddc_bus) | 1149 | if (intel_encoder->ddc_bus) |
| 1137 | intel_i2c_destroy(intel_output->ddc_bus); | 1150 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 1138 | drm_connector_cleanup(connector); | 1151 | drm_connector_cleanup(connector); |
| 1139 | drm_encoder_cleanup(encoder); | 1152 | drm_encoder_cleanup(encoder); |
| 1140 | kfree(intel_output); | 1153 | kfree(intel_encoder); |
| 1141 | } | 1154 | } |
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c index 89d303d1d3fb..8e5c83b2d120 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | * intel_ddc_probe | 34 | * intel_ddc_probe |
| 35 | * | 35 | * |
| 36 | */ | 36 | */ |
| 37 | bool intel_ddc_probe(struct intel_output *intel_output) | 37 | bool intel_ddc_probe(struct intel_encoder *intel_encoder) |
| 38 | { | 38 | { |
| 39 | u8 out_buf[] = { 0x0, 0x0}; | 39 | u8 out_buf[] = { 0x0, 0x0}; |
| 40 | u8 buf[2]; | 40 | u8 buf[2]; |
| @@ -54,9 +54,9 @@ bool intel_ddc_probe(struct intel_output *intel_output) | |||
| 54 | } | 54 | } |
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | intel_i2c_quirk_set(intel_output->base.dev, true); | 57 | intel_i2c_quirk_set(intel_encoder->base.dev, true); |
| 58 | ret = i2c_transfer(intel_output->ddc_bus, msgs, 2); | 58 | ret = i2c_transfer(intel_encoder->ddc_bus, msgs, 2); |
| 59 | intel_i2c_quirk_set(intel_output->base.dev, false); | 59 | intel_i2c_quirk_set(intel_encoder->base.dev, false); |
| 60 | if (ret == 2) | 60 | if (ret == 2) |
| 61 | return true; | 61 | return true; |
| 62 | 62 | ||
| @@ -69,19 +69,19 @@ bool intel_ddc_probe(struct intel_output *intel_output) | |||
| 69 | * | 69 | * |
| 70 | * Fetch the EDID information from @connector using the DDC bus. | 70 | * Fetch the EDID information from @connector using the DDC bus. |
| 71 | */ | 71 | */ |
| 72 | int intel_ddc_get_modes(struct intel_output *intel_output) | 72 | int intel_ddc_get_modes(struct intel_encoder *intel_encoder) |
| 73 | { | 73 | { |
| 74 | struct edid *edid; | 74 | struct edid *edid; |
| 75 | int ret = 0; | 75 | int ret = 0; |
| 76 | 76 | ||
| 77 | intel_i2c_quirk_set(intel_output->base.dev, true); | 77 | intel_i2c_quirk_set(intel_encoder->base.dev, true); |
| 78 | edid = drm_get_edid(&intel_output->base, intel_output->ddc_bus); | 78 | edid = drm_get_edid(&intel_encoder->base, intel_encoder->ddc_bus); |
| 79 | intel_i2c_quirk_set(intel_output->base.dev, false); | 79 | intel_i2c_quirk_set(intel_encoder->base.dev, false); |
| 80 | if (edid) { | 80 | if (edid) { |
| 81 | drm_mode_connector_update_edid_property(&intel_output->base, | 81 | drm_mode_connector_update_edid_property(&intel_encoder->base, |
| 82 | edid); | 82 | edid); |
| 83 | ret = drm_add_edid_modes(&intel_output->base, edid); | 83 | ret = drm_add_edid_modes(&intel_encoder->base, edid); |
| 84 | intel_output->base.display_info.raw_edid = NULL; | 84 | intel_encoder->base.display_info.raw_edid = NULL; |
| 85 | kfree(edid); | 85 | kfree(edid); |
| 86 | } | 86 | } |
| 87 | 87 | ||
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c index 60595fc26fdd..6d524a1fc271 100644 --- a/drivers/gpu/drm/i915/intel_overlay.c +++ b/drivers/gpu/drm/i915/intel_overlay.c | |||
| @@ -724,7 +724,7 @@ int intel_overlay_do_put_image(struct intel_overlay *overlay, | |||
| 724 | int ret, tmp_width; | 724 | int ret, tmp_width; |
| 725 | struct overlay_registers *regs; | 725 | struct overlay_registers *regs; |
| 726 | bool scale_changed = false; | 726 | bool scale_changed = false; |
| 727 | struct drm_i915_gem_object *bo_priv = new_bo->driver_private; | 727 | struct drm_i915_gem_object *bo_priv = to_intel_bo(new_bo); |
| 728 | struct drm_device *dev = overlay->dev; | 728 | struct drm_device *dev = overlay->dev; |
| 729 | 729 | ||
| 730 | BUG_ON(!mutex_is_locked(&dev->struct_mutex)); | 730 | BUG_ON(!mutex_is_locked(&dev->struct_mutex)); |
| @@ -809,7 +809,7 @@ int intel_overlay_do_put_image(struct intel_overlay *overlay, | |||
| 809 | intel_overlay_continue(overlay, scale_changed); | 809 | intel_overlay_continue(overlay, scale_changed); |
| 810 | 810 | ||
| 811 | overlay->old_vid_bo = overlay->vid_bo; | 811 | overlay->old_vid_bo = overlay->vid_bo; |
| 812 | overlay->vid_bo = new_bo->driver_private; | 812 | overlay->vid_bo = to_intel_bo(new_bo); |
| 813 | 813 | ||
| 814 | return 0; | 814 | return 0; |
| 815 | 815 | ||
| @@ -1344,7 +1344,7 @@ void intel_setup_overlay(struct drm_device *dev) | |||
| 1344 | reg_bo = drm_gem_object_alloc(dev, PAGE_SIZE); | 1344 | reg_bo = drm_gem_object_alloc(dev, PAGE_SIZE); |
| 1345 | if (!reg_bo) | 1345 | if (!reg_bo) |
| 1346 | goto out_free; | 1346 | goto out_free; |
| 1347 | overlay->reg_bo = reg_bo->driver_private; | 1347 | overlay->reg_bo = to_intel_bo(reg_bo); |
| 1348 | 1348 | ||
| 1349 | if (OVERLAY_NONPHYSICAL(dev)) { | 1349 | if (OVERLAY_NONPHYSICAL(dev)) { |
| 1350 | ret = i915_gem_object_pin(reg_bo, PAGE_SIZE); | 1350 | ret = i915_gem_object_pin(reg_bo, PAGE_SIZE); |
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 26e13a0bf30b..87d953664cb0 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
| @@ -54,7 +54,7 @@ struct intel_sdvo_priv { | |||
| 54 | u8 slave_addr; | 54 | u8 slave_addr; |
| 55 | 55 | ||
| 56 | /* Register for the SDVO device: SDVOB or SDVOC */ | 56 | /* Register for the SDVO device: SDVOB or SDVOC */ |
| 57 | int output_device; | 57 | int sdvo_reg; |
| 58 | 58 | ||
| 59 | /* Active outputs controlled by this SDVO output */ | 59 | /* Active outputs controlled by this SDVO output */ |
| 60 | uint16_t controlled_output; | 60 | uint16_t controlled_output; |
| @@ -124,7 +124,7 @@ struct intel_sdvo_priv { | |||
| 124 | */ | 124 | */ |
| 125 | struct intel_sdvo_encode encode; | 125 | struct intel_sdvo_encode encode; |
| 126 | 126 | ||
| 127 | /* DDC bus used by this SDVO output */ | 127 | /* DDC bus used by this SDVO encoder */ |
| 128 | uint8_t ddc_bus; | 128 | uint8_t ddc_bus; |
| 129 | 129 | ||
| 130 | /* Mac mini hack -- use the same DDC as the analog connector */ | 130 | /* Mac mini hack -- use the same DDC as the analog connector */ |
| @@ -162,22 +162,22 @@ struct intel_sdvo_priv { | |||
| 162 | }; | 162 | }; |
| 163 | 163 | ||
| 164 | static bool | 164 | static bool |
| 165 | intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags); | 165 | intel_sdvo_output_setup(struct intel_encoder *intel_encoder, uint16_t flags); |
| 166 | 166 | ||
| 167 | /** | 167 | /** |
| 168 | * Writes the SDVOB or SDVOC with the given value, but always writes both | 168 | * Writes the SDVOB or SDVOC with the given value, but always writes both |
| 169 | * SDVOB and SDVOC to work around apparent hardware issues (according to | 169 | * SDVOB and SDVOC to work around apparent hardware issues (according to |
| 170 | * comments in the BIOS). | 170 | * comments in the BIOS). |
| 171 | */ | 171 | */ |
| 172 | static void intel_sdvo_write_sdvox(struct intel_output *intel_output, u32 val) | 172 | static void intel_sdvo_write_sdvox(struct intel_encoder *intel_encoder, u32 val) |
| 173 | { | 173 | { |
| 174 | struct drm_device *dev = intel_output->base.dev; | 174 | struct drm_device *dev = intel_encoder->base.dev; |
| 175 | struct drm_i915_private *dev_priv = dev->dev_private; | 175 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 176 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 176 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 177 | u32 bval = val, cval = val; | 177 | u32 bval = val, cval = val; |
| 178 | int i; | 178 | int i; |
| 179 | 179 | ||
| 180 | if (sdvo_priv->output_device == SDVOB) { | 180 | if (sdvo_priv->sdvo_reg == SDVOB) { |
| 181 | cval = I915_READ(SDVOC); | 181 | cval = I915_READ(SDVOC); |
| 182 | } else { | 182 | } else { |
| 183 | bval = I915_READ(SDVOB); | 183 | bval = I915_READ(SDVOB); |
| @@ -196,10 +196,10 @@ static void intel_sdvo_write_sdvox(struct intel_output *intel_output, u32 val) | |||
| 196 | } | 196 | } |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | static bool intel_sdvo_read_byte(struct intel_output *intel_output, u8 addr, | 199 | static bool intel_sdvo_read_byte(struct intel_encoder *intel_encoder, u8 addr, |
| 200 | u8 *ch) | 200 | u8 *ch) |
| 201 | { | 201 | { |
| 202 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 202 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 203 | u8 out_buf[2]; | 203 | u8 out_buf[2]; |
| 204 | u8 buf[2]; | 204 | u8 buf[2]; |
| 205 | int ret; | 205 | int ret; |
| @@ -222,7 +222,7 @@ static bool intel_sdvo_read_byte(struct intel_output *intel_output, u8 addr, | |||
| 222 | out_buf[0] = addr; | 222 | out_buf[0] = addr; |
| 223 | out_buf[1] = 0; | 223 | out_buf[1] = 0; |
| 224 | 224 | ||
| 225 | if ((ret = i2c_transfer(intel_output->i2c_bus, msgs, 2)) == 2) | 225 | if ((ret = i2c_transfer(intel_encoder->i2c_bus, msgs, 2)) == 2) |
| 226 | { | 226 | { |
| 227 | *ch = buf[0]; | 227 | *ch = buf[0]; |
| 228 | return true; | 228 | return true; |
| @@ -232,10 +232,10 @@ static bool intel_sdvo_read_byte(struct intel_output *intel_output, u8 addr, | |||
| 232 | return false; | 232 | return false; |
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | static bool intel_sdvo_write_byte(struct intel_output *intel_output, int addr, | 235 | static bool intel_sdvo_write_byte(struct intel_encoder *intel_encoder, int addr, |
| 236 | u8 ch) | 236 | u8 ch) |
| 237 | { | 237 | { |
| 238 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 238 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 239 | u8 out_buf[2]; | 239 | u8 out_buf[2]; |
| 240 | struct i2c_msg msgs[] = { | 240 | struct i2c_msg msgs[] = { |
| 241 | { | 241 | { |
| @@ -249,7 +249,7 @@ static bool intel_sdvo_write_byte(struct intel_output *intel_output, int addr, | |||
| 249 | out_buf[0] = addr; | 249 | out_buf[0] = addr; |
| 250 | out_buf[1] = ch; | 250 | out_buf[1] = ch; |
| 251 | 251 | ||
| 252 | if (i2c_transfer(intel_output->i2c_bus, msgs, 1) == 1) | 252 | if (i2c_transfer(intel_encoder->i2c_bus, msgs, 1) == 1) |
| 253 | { | 253 | { |
| 254 | return true; | 254 | return true; |
| 255 | } | 255 | } |
| @@ -353,13 +353,13 @@ static const struct _sdvo_cmd_name { | |||
| 353 | SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA), | 353 | SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA), |
| 354 | }; | 354 | }; |
| 355 | 355 | ||
| 356 | #define SDVO_NAME(dev_priv) ((dev_priv)->output_device == SDVOB ? "SDVOB" : "SDVOC") | 356 | #define SDVO_NAME(dev_priv) ((dev_priv)->sdvo_reg == SDVOB ? "SDVOB" : "SDVOC") |
| 357 | #define SDVO_PRIV(output) ((struct intel_sdvo_priv *) (output)->dev_priv) | 357 | #define SDVO_PRIV(encoder) ((struct intel_sdvo_priv *) (encoder)->dev_priv) |
| 358 | 358 | ||
| 359 | static void intel_sdvo_debug_write(struct intel_output *intel_output, u8 cmd, | 359 | static void intel_sdvo_debug_write(struct intel_encoder *intel_encoder, u8 cmd, |
| 360 | void *args, int args_len) | 360 | void *args, int args_len) |
| 361 | { | 361 | { |
| 362 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 362 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 363 | int i; | 363 | int i; |
| 364 | 364 | ||
| 365 | DRM_DEBUG_KMS("%s: W: %02X ", | 365 | DRM_DEBUG_KMS("%s: W: %02X ", |
| @@ -379,19 +379,19 @@ static void intel_sdvo_debug_write(struct intel_output *intel_output, u8 cmd, | |||
| 379 | DRM_LOG_KMS("\n"); | 379 | DRM_LOG_KMS("\n"); |
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | static void intel_sdvo_write_cmd(struct intel_output *intel_output, u8 cmd, | 382 | static void intel_sdvo_write_cmd(struct intel_encoder *intel_encoder, u8 cmd, |
| 383 | void *args, int args_len) | 383 | void *args, int args_len) |
| 384 | { | 384 | { |
| 385 | int i; | 385 | int i; |
| 386 | 386 | ||
| 387 | intel_sdvo_debug_write(intel_output, cmd, args, args_len); | 387 | intel_sdvo_debug_write(intel_encoder, cmd, args, args_len); |
| 388 | 388 | ||
| 389 | for (i = 0; i < args_len; i++) { | 389 | for (i = 0; i < args_len; i++) { |
| 390 | intel_sdvo_write_byte(intel_output, SDVO_I2C_ARG_0 - i, | 390 | intel_sdvo_write_byte(intel_encoder, SDVO_I2C_ARG_0 - i, |
| 391 | ((u8*)args)[i]); | 391 | ((u8*)args)[i]); |
| 392 | } | 392 | } |
| 393 | 393 | ||
| 394 | intel_sdvo_write_byte(intel_output, SDVO_I2C_OPCODE, cmd); | 394 | intel_sdvo_write_byte(intel_encoder, SDVO_I2C_OPCODE, cmd); |
| 395 | } | 395 | } |
| 396 | 396 | ||
| 397 | static const char *cmd_status_names[] = { | 397 | static const char *cmd_status_names[] = { |
| @@ -404,11 +404,11 @@ static const char *cmd_status_names[] = { | |||
| 404 | "Scaling not supported" | 404 | "Scaling not supported" |
| 405 | }; | 405 | }; |
| 406 | 406 | ||
| 407 | static void intel_sdvo_debug_response(struct intel_output *intel_output, | 407 | static void intel_sdvo_debug_response(struct intel_encoder *intel_encoder, |
| 408 | void *response, int response_len, | 408 | void *response, int response_len, |
| 409 | u8 status) | 409 | u8 status) |
| 410 | { | 410 | { |
| 411 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 411 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 412 | int i; | 412 | int i; |
| 413 | 413 | ||
| 414 | DRM_DEBUG_KMS("%s: R: ", SDVO_NAME(sdvo_priv)); | 414 | DRM_DEBUG_KMS("%s: R: ", SDVO_NAME(sdvo_priv)); |
| @@ -423,7 +423,7 @@ static void intel_sdvo_debug_response(struct intel_output *intel_output, | |||
| 423 | DRM_LOG_KMS("\n"); | 423 | DRM_LOG_KMS("\n"); |
| 424 | } | 424 | } |
| 425 | 425 | ||
| 426 | static u8 intel_sdvo_read_response(struct intel_output *intel_output, | 426 | static u8 intel_sdvo_read_response(struct intel_encoder *intel_encoder, |
| 427 | void *response, int response_len) | 427 | void *response, int response_len) |
| 428 | { | 428 | { |
| 429 | int i; | 429 | int i; |
| @@ -433,16 +433,16 @@ static u8 intel_sdvo_read_response(struct intel_output *intel_output, | |||
| 433 | while (retry--) { | 433 | while (retry--) { |
| 434 | /* Read the command response */ | 434 | /* Read the command response */ |
| 435 | for (i = 0; i < response_len; i++) { | 435 | for (i = 0; i < response_len; i++) { |
| 436 | intel_sdvo_read_byte(intel_output, | 436 | intel_sdvo_read_byte(intel_encoder, |
| 437 | SDVO_I2C_RETURN_0 + i, | 437 | SDVO_I2C_RETURN_0 + i, |
| 438 | &((u8 *)response)[i]); | 438 | &((u8 *)response)[i]); |
| 439 | } | 439 | } |
| 440 | 440 | ||
| 441 | /* read the return status */ | 441 | /* read the return status */ |
| 442 | intel_sdvo_read_byte(intel_output, SDVO_I2C_CMD_STATUS, | 442 | intel_sdvo_read_byte(intel_encoder, SDVO_I2C_CMD_STATUS, |
| 443 | &status); | 443 | &status); |
| 444 | 444 | ||
| 445 | intel_sdvo_debug_response(intel_output, response, response_len, | 445 | intel_sdvo_debug_response(intel_encoder, response, response_len, |
| 446 | status); | 446 | status); |
| 447 | if (status != SDVO_CMD_STATUS_PENDING) | 447 | if (status != SDVO_CMD_STATUS_PENDING) |
| 448 | return status; | 448 | return status; |
| @@ -470,10 +470,10 @@ static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode) | |||
| 470 | * another I2C transaction after issuing the DDC bus switch, it will be | 470 | * another I2C transaction after issuing the DDC bus switch, it will be |
| 471 | * switched to the internal SDVO register. | 471 | * switched to the internal SDVO register. |
| 472 | */ | 472 | */ |
| 473 | static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, | 473 | static void intel_sdvo_set_control_bus_switch(struct intel_encoder *intel_encoder, |
| 474 | u8 target) | 474 | u8 target) |
| 475 | { | 475 | { |
| 476 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 476 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 477 | u8 out_buf[2], cmd_buf[2], ret_value[2], ret; | 477 | u8 out_buf[2], cmd_buf[2], ret_value[2], ret; |
| 478 | struct i2c_msg msgs[] = { | 478 | struct i2c_msg msgs[] = { |
| 479 | { | 479 | { |
| @@ -497,10 +497,10 @@ static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, | |||
| 497 | }, | 497 | }, |
| 498 | }; | 498 | }; |
| 499 | 499 | ||
| 500 | intel_sdvo_debug_write(intel_output, SDVO_CMD_SET_CONTROL_BUS_SWITCH, | 500 | intel_sdvo_debug_write(intel_encoder, SDVO_CMD_SET_CONTROL_BUS_SWITCH, |
| 501 | &target, 1); | 501 | &target, 1); |
| 502 | /* write the DDC switch command argument */ | 502 | /* write the DDC switch command argument */ |
| 503 | intel_sdvo_write_byte(intel_output, SDVO_I2C_ARG_0, target); | 503 | intel_sdvo_write_byte(intel_encoder, SDVO_I2C_ARG_0, target); |
| 504 | 504 | ||
| 505 | out_buf[0] = SDVO_I2C_OPCODE; | 505 | out_buf[0] = SDVO_I2C_OPCODE; |
| 506 | out_buf[1] = SDVO_CMD_SET_CONTROL_BUS_SWITCH; | 506 | out_buf[1] = SDVO_CMD_SET_CONTROL_BUS_SWITCH; |
| @@ -509,7 +509,7 @@ static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, | |||
| 509 | ret_value[0] = 0; | 509 | ret_value[0] = 0; |
| 510 | ret_value[1] = 0; | 510 | ret_value[1] = 0; |
| 511 | 511 | ||
| 512 | ret = i2c_transfer(intel_output->i2c_bus, msgs, 3); | 512 | ret = i2c_transfer(intel_encoder->i2c_bus, msgs, 3); |
| 513 | if (ret != 3) { | 513 | if (ret != 3) { |
| 514 | /* failure in I2C transfer */ | 514 | /* failure in I2C transfer */ |
| 515 | DRM_DEBUG_KMS("I2c transfer returned %d\n", ret); | 515 | DRM_DEBUG_KMS("I2c transfer returned %d\n", ret); |
| @@ -523,7 +523,7 @@ static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, | |||
| 523 | return; | 523 | return; |
| 524 | } | 524 | } |
| 525 | 525 | ||
| 526 | static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool target_0, bool target_1) | 526 | static bool intel_sdvo_set_target_input(struct intel_encoder *intel_encoder, bool target_0, bool target_1) |
| 527 | { | 527 | { |
| 528 | struct intel_sdvo_set_target_input_args targets = {0}; | 528 | struct intel_sdvo_set_target_input_args targets = {0}; |
| 529 | u8 status; | 529 | u8 status; |
| @@ -534,10 +534,10 @@ static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool | |||
| 534 | if (target_1) | 534 | if (target_1) |
| 535 | targets.target_1 = 1; | 535 | targets.target_1 = 1; |
| 536 | 536 | ||
| 537 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_TARGET_INPUT, &targets, | 537 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_TARGET_INPUT, &targets, |
| 538 | sizeof(targets)); | 538 | sizeof(targets)); |
| 539 | 539 | ||
| 540 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 540 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 541 | 541 | ||
| 542 | return (status == SDVO_CMD_STATUS_SUCCESS); | 542 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 543 | } | 543 | } |
| @@ -548,13 +548,13 @@ static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool | |||
| 548 | * This function is making an assumption about the layout of the response, | 548 | * This function is making an assumption about the layout of the response, |
| 549 | * which should be checked against the docs. | 549 | * which should be checked against the docs. |
| 550 | */ | 550 | */ |
| 551 | static bool intel_sdvo_get_trained_inputs(struct intel_output *intel_output, bool *input_1, bool *input_2) | 551 | static bool intel_sdvo_get_trained_inputs(struct intel_encoder *intel_encoder, bool *input_1, bool *input_2) |
| 552 | { | 552 | { |
| 553 | struct intel_sdvo_get_trained_inputs_response response; | 553 | struct intel_sdvo_get_trained_inputs_response response; |
| 554 | u8 status; | 554 | u8 status; |
| 555 | 555 | ||
| 556 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_TRAINED_INPUTS, NULL, 0); | 556 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_TRAINED_INPUTS, NULL, 0); |
| 557 | status = intel_sdvo_read_response(intel_output, &response, sizeof(response)); | 557 | status = intel_sdvo_read_response(intel_encoder, &response, sizeof(response)); |
| 558 | if (status != SDVO_CMD_STATUS_SUCCESS) | 558 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 559 | return false; | 559 | return false; |
| 560 | 560 | ||
| @@ -563,29 +563,29 @@ static bool intel_sdvo_get_trained_inputs(struct intel_output *intel_output, boo | |||
| 563 | return true; | 563 | return true; |
| 564 | } | 564 | } |
| 565 | 565 | ||
| 566 | static bool intel_sdvo_get_active_outputs(struct intel_output *intel_output, | 566 | static bool intel_sdvo_get_active_outputs(struct intel_encoder *intel_encoder, |
| 567 | u16 *outputs) | 567 | u16 *outputs) |
| 568 | { | 568 | { |
| 569 | u8 status; | 569 | u8 status; |
| 570 | 570 | ||
| 571 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_ACTIVE_OUTPUTS, NULL, 0); | 571 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_ACTIVE_OUTPUTS, NULL, 0); |
| 572 | status = intel_sdvo_read_response(intel_output, outputs, sizeof(*outputs)); | 572 | status = intel_sdvo_read_response(intel_encoder, outputs, sizeof(*outputs)); |
| 573 | 573 | ||
| 574 | return (status == SDVO_CMD_STATUS_SUCCESS); | 574 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 575 | } | 575 | } |
| 576 | 576 | ||
| 577 | static bool intel_sdvo_set_active_outputs(struct intel_output *intel_output, | 577 | static bool intel_sdvo_set_active_outputs(struct intel_encoder *intel_encoder, |
| 578 | u16 outputs) | 578 | u16 outputs) |
| 579 | { | 579 | { |
| 580 | u8 status; | 580 | u8 status; |
| 581 | 581 | ||
| 582 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_ACTIVE_OUTPUTS, &outputs, | 582 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_ACTIVE_OUTPUTS, &outputs, |
| 583 | sizeof(outputs)); | 583 | sizeof(outputs)); |
| 584 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 584 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 585 | return (status == SDVO_CMD_STATUS_SUCCESS); | 585 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 586 | } | 586 | } |
| 587 | 587 | ||
| 588 | static bool intel_sdvo_set_encoder_power_state(struct intel_output *intel_output, | 588 | static bool intel_sdvo_set_encoder_power_state(struct intel_encoder *intel_encoder, |
| 589 | int mode) | 589 | int mode) |
| 590 | { | 590 | { |
| 591 | u8 status, state = SDVO_ENCODER_STATE_ON; | 591 | u8 status, state = SDVO_ENCODER_STATE_ON; |
| @@ -605,24 +605,24 @@ static bool intel_sdvo_set_encoder_power_state(struct intel_output *intel_output | |||
| 605 | break; | 605 | break; |
| 606 | } | 606 | } |
| 607 | 607 | ||
| 608 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_ENCODER_POWER_STATE, &state, | 608 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_ENCODER_POWER_STATE, &state, |
| 609 | sizeof(state)); | 609 | sizeof(state)); |
| 610 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 610 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 611 | 611 | ||
| 612 | return (status == SDVO_CMD_STATUS_SUCCESS); | 612 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 613 | } | 613 | } |
| 614 | 614 | ||
| 615 | static bool intel_sdvo_get_input_pixel_clock_range(struct intel_output *intel_output, | 615 | static bool intel_sdvo_get_input_pixel_clock_range(struct intel_encoder *intel_encoder, |
| 616 | int *clock_min, | 616 | int *clock_min, |
| 617 | int *clock_max) | 617 | int *clock_max) |
| 618 | { | 618 | { |
| 619 | struct intel_sdvo_pixel_clock_range clocks; | 619 | struct intel_sdvo_pixel_clock_range clocks; |
| 620 | u8 status; | 620 | u8 status; |
| 621 | 621 | ||
| 622 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE, | 622 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE, |
| 623 | NULL, 0); | 623 | NULL, 0); |
| 624 | 624 | ||
| 625 | status = intel_sdvo_read_response(intel_output, &clocks, sizeof(clocks)); | 625 | status = intel_sdvo_read_response(intel_encoder, &clocks, sizeof(clocks)); |
| 626 | 626 | ||
| 627 | if (status != SDVO_CMD_STATUS_SUCCESS) | 627 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 628 | return false; | 628 | return false; |
| @@ -634,31 +634,31 @@ static bool intel_sdvo_get_input_pixel_clock_range(struct intel_output *intel_ou | |||
| 634 | return true; | 634 | return true; |
| 635 | } | 635 | } |
| 636 | 636 | ||
| 637 | static bool intel_sdvo_set_target_output(struct intel_output *intel_output, | 637 | static bool intel_sdvo_set_target_output(struct intel_encoder *intel_encoder, |
| 638 | u16 outputs) | 638 | u16 outputs) |
| 639 | { | 639 | { |
| 640 | u8 status; | 640 | u8 status; |
| 641 | 641 | ||
| 642 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_TARGET_OUTPUT, &outputs, | 642 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_TARGET_OUTPUT, &outputs, |
| 643 | sizeof(outputs)); | 643 | sizeof(outputs)); |
| 644 | 644 | ||
| 645 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 645 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 646 | return (status == SDVO_CMD_STATUS_SUCCESS); | 646 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 647 | } | 647 | } |
| 648 | 648 | ||
| 649 | static bool intel_sdvo_get_timing(struct intel_output *intel_output, u8 cmd, | 649 | static bool intel_sdvo_get_timing(struct intel_encoder *intel_encoder, u8 cmd, |
| 650 | struct intel_sdvo_dtd *dtd) | 650 | struct intel_sdvo_dtd *dtd) |
| 651 | { | 651 | { |
| 652 | u8 status; | 652 | u8 status; |
| 653 | 653 | ||
| 654 | intel_sdvo_write_cmd(intel_output, cmd, NULL, 0); | 654 | intel_sdvo_write_cmd(intel_encoder, cmd, NULL, 0); |
| 655 | status = intel_sdvo_read_response(intel_output, &dtd->part1, | 655 | status = intel_sdvo_read_response(intel_encoder, &dtd->part1, |
| 656 | sizeof(dtd->part1)); | 656 | sizeof(dtd->part1)); |
| 657 | if (status != SDVO_CMD_STATUS_SUCCESS) | 657 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 658 | return false; | 658 | return false; |
| 659 | 659 | ||
| 660 | intel_sdvo_write_cmd(intel_output, cmd + 1, NULL, 0); | 660 | intel_sdvo_write_cmd(intel_encoder, cmd + 1, NULL, 0); |
| 661 | status = intel_sdvo_read_response(intel_output, &dtd->part2, | 661 | status = intel_sdvo_read_response(intel_encoder, &dtd->part2, |
| 662 | sizeof(dtd->part2)); | 662 | sizeof(dtd->part2)); |
| 663 | if (status != SDVO_CMD_STATUS_SUCCESS) | 663 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 664 | return false; | 664 | return false; |
| @@ -666,60 +666,60 @@ static bool intel_sdvo_get_timing(struct intel_output *intel_output, u8 cmd, | |||
| 666 | return true; | 666 | return true; |
| 667 | } | 667 | } |
| 668 | 668 | ||
| 669 | static bool intel_sdvo_get_input_timing(struct intel_output *intel_output, | 669 | static bool intel_sdvo_get_input_timing(struct intel_encoder *intel_encoder, |
| 670 | struct intel_sdvo_dtd *dtd) | 670 | struct intel_sdvo_dtd *dtd) |
| 671 | { | 671 | { |
| 672 | return intel_sdvo_get_timing(intel_output, | 672 | return intel_sdvo_get_timing(intel_encoder, |
| 673 | SDVO_CMD_GET_INPUT_TIMINGS_PART1, dtd); | 673 | SDVO_CMD_GET_INPUT_TIMINGS_PART1, dtd); |
| 674 | } | 674 | } |
| 675 | 675 | ||
| 676 | static bool intel_sdvo_get_output_timing(struct intel_output *intel_output, | 676 | static bool intel_sdvo_get_output_timing(struct intel_encoder *intel_encoder, |
| 677 | struct intel_sdvo_dtd *dtd) | 677 | struct intel_sdvo_dtd *dtd) |
| 678 | { | 678 | { |
| 679 | return intel_sdvo_get_timing(intel_output, | 679 | return intel_sdvo_get_timing(intel_encoder, |
| 680 | SDVO_CMD_GET_OUTPUT_TIMINGS_PART1, dtd); | 680 | SDVO_CMD_GET_OUTPUT_TIMINGS_PART1, dtd); |
| 681 | } | 681 | } |
| 682 | 682 | ||
| 683 | static bool intel_sdvo_set_timing(struct intel_output *intel_output, u8 cmd, | 683 | static bool intel_sdvo_set_timing(struct intel_encoder *intel_encoder, u8 cmd, |
| 684 | struct intel_sdvo_dtd *dtd) | 684 | struct intel_sdvo_dtd *dtd) |
| 685 | { | 685 | { |
| 686 | u8 status; | 686 | u8 status; |
| 687 | 687 | ||
| 688 | intel_sdvo_write_cmd(intel_output, cmd, &dtd->part1, sizeof(dtd->part1)); | 688 | intel_sdvo_write_cmd(intel_encoder, cmd, &dtd->part1, sizeof(dtd->part1)); |
| 689 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 689 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 690 | if (status != SDVO_CMD_STATUS_SUCCESS) | 690 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 691 | return false; | 691 | return false; |
| 692 | 692 | ||
| 693 | intel_sdvo_write_cmd(intel_output, cmd + 1, &dtd->part2, sizeof(dtd->part2)); | 693 | intel_sdvo_write_cmd(intel_encoder, cmd + 1, &dtd->part2, sizeof(dtd->part2)); |
| 694 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 694 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 695 | if (status != SDVO_CMD_STATUS_SUCCESS) | 695 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 696 | return false; | 696 | return false; |
| 697 | 697 | ||
| 698 | return true; | 698 | return true; |
| 699 | } | 699 | } |
| 700 | 700 | ||
| 701 | static bool intel_sdvo_set_input_timing(struct intel_output *intel_output, | 701 | static bool intel_sdvo_set_input_timing(struct intel_encoder *intel_encoder, |
| 702 | struct intel_sdvo_dtd *dtd) | 702 | struct intel_sdvo_dtd *dtd) |
| 703 | { | 703 | { |
| 704 | return intel_sdvo_set_timing(intel_output, | 704 | return intel_sdvo_set_timing(intel_encoder, |
| 705 | SDVO_CMD_SET_INPUT_TIMINGS_PART1, dtd); | 705 | SDVO_CMD_SET_INPUT_TIMINGS_PART1, dtd); |
| 706 | } | 706 | } |
| 707 | 707 | ||
| 708 | static bool intel_sdvo_set_output_timing(struct intel_output *intel_output, | 708 | static bool intel_sdvo_set_output_timing(struct intel_encoder *intel_encoder, |
| 709 | struct intel_sdvo_dtd *dtd) | 709 | struct intel_sdvo_dtd *dtd) |
| 710 | { | 710 | { |
| 711 | return intel_sdvo_set_timing(intel_output, | 711 | return intel_sdvo_set_timing(intel_encoder, |
| 712 | SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd); | 712 | SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd); |
| 713 | } | 713 | } |
| 714 | 714 | ||
| 715 | static bool | 715 | static bool |
| 716 | intel_sdvo_create_preferred_input_timing(struct intel_output *output, | 716 | intel_sdvo_create_preferred_input_timing(struct intel_encoder *intel_encoder, |
| 717 | uint16_t clock, | 717 | uint16_t clock, |
| 718 | uint16_t width, | 718 | uint16_t width, |
| 719 | uint16_t height) | 719 | uint16_t height) |
| 720 | { | 720 | { |
| 721 | struct intel_sdvo_preferred_input_timing_args args; | 721 | struct intel_sdvo_preferred_input_timing_args args; |
| 722 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 722 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 723 | uint8_t status; | 723 | uint8_t status; |
| 724 | 724 | ||
| 725 | memset(&args, 0, sizeof(args)); | 725 | memset(&args, 0, sizeof(args)); |
| @@ -733,32 +733,33 @@ intel_sdvo_create_preferred_input_timing(struct intel_output *output, | |||
| 733 | sdvo_priv->sdvo_lvds_fixed_mode->vdisplay != height)) | 733 | sdvo_priv->sdvo_lvds_fixed_mode->vdisplay != height)) |
| 734 | args.scaled = 1; | 734 | args.scaled = 1; |
| 735 | 735 | ||
| 736 | intel_sdvo_write_cmd(output, SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING, | 736 | intel_sdvo_write_cmd(intel_encoder, |
| 737 | SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING, | ||
| 737 | &args, sizeof(args)); | 738 | &args, sizeof(args)); |
| 738 | status = intel_sdvo_read_response(output, NULL, 0); | 739 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 739 | if (status != SDVO_CMD_STATUS_SUCCESS) | 740 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 740 | return false; | 741 | return false; |
| 741 | 742 | ||
| 742 | return true; | 743 | return true; |
| 743 | } | 744 | } |
| 744 | 745 | ||
| 745 | static bool intel_sdvo_get_preferred_input_timing(struct intel_output *output, | 746 | static bool intel_sdvo_get_preferred_input_timing(struct intel_encoder *intel_encoder, |
| 746 | struct intel_sdvo_dtd *dtd) | 747 | struct intel_sdvo_dtd *dtd) |
| 747 | { | 748 | { |
| 748 | bool status; | 749 | bool status; |
| 749 | 750 | ||
| 750 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, | 751 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, |
| 751 | NULL, 0); | 752 | NULL, 0); |
| 752 | 753 | ||
| 753 | status = intel_sdvo_read_response(output, &dtd->part1, | 754 | status = intel_sdvo_read_response(intel_encoder, &dtd->part1, |
| 754 | sizeof(dtd->part1)); | 755 | sizeof(dtd->part1)); |
| 755 | if (status != SDVO_CMD_STATUS_SUCCESS) | 756 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 756 | return false; | 757 | return false; |
| 757 | 758 | ||
| 758 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, | 759 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, |
| 759 | NULL, 0); | 760 | NULL, 0); |
| 760 | 761 | ||
| 761 | status = intel_sdvo_read_response(output, &dtd->part2, | 762 | status = intel_sdvo_read_response(intel_encoder, &dtd->part2, |
| 762 | sizeof(dtd->part2)); | 763 | sizeof(dtd->part2)); |
| 763 | if (status != SDVO_CMD_STATUS_SUCCESS) | 764 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 764 | return false; | 765 | return false; |
| @@ -766,12 +767,12 @@ static bool intel_sdvo_get_preferred_input_timing(struct intel_output *output, | |||
| 766 | return false; | 767 | return false; |
| 767 | } | 768 | } |
| 768 | 769 | ||
| 769 | static int intel_sdvo_get_clock_rate_mult(struct intel_output *intel_output) | 770 | static int intel_sdvo_get_clock_rate_mult(struct intel_encoder *intel_encoder) |
| 770 | { | 771 | { |
| 771 | u8 response, status; | 772 | u8 response, status; |
| 772 | 773 | ||
| 773 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_CLOCK_RATE_MULT, NULL, 0); | 774 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_CLOCK_RATE_MULT, NULL, 0); |
| 774 | status = intel_sdvo_read_response(intel_output, &response, 1); | 775 | status = intel_sdvo_read_response(intel_encoder, &response, 1); |
| 775 | 776 | ||
| 776 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 777 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 777 | DRM_DEBUG_KMS("Couldn't get SDVO clock rate multiplier\n"); | 778 | DRM_DEBUG_KMS("Couldn't get SDVO clock rate multiplier\n"); |
| @@ -783,12 +784,12 @@ static int intel_sdvo_get_clock_rate_mult(struct intel_output *intel_output) | |||
| 783 | return response; | 784 | return response; |
| 784 | } | 785 | } |
| 785 | 786 | ||
| 786 | static bool intel_sdvo_set_clock_rate_mult(struct intel_output *intel_output, u8 val) | 787 | static bool intel_sdvo_set_clock_rate_mult(struct intel_encoder *intel_encoder, u8 val) |
| 787 | { | 788 | { |
| 788 | u8 status; | 789 | u8 status; |
| 789 | 790 | ||
| 790 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); | 791 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); |
| 791 | status = intel_sdvo_read_response(intel_output, NULL, 0); | 792 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 792 | if (status != SDVO_CMD_STATUS_SUCCESS) | 793 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 793 | return false; | 794 | return false; |
| 794 | 795 | ||
| @@ -877,13 +878,13 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode, | |||
| 877 | mode->flags |= DRM_MODE_FLAG_PVSYNC; | 878 | mode->flags |= DRM_MODE_FLAG_PVSYNC; |
| 878 | } | 879 | } |
| 879 | 880 | ||
| 880 | static bool intel_sdvo_get_supp_encode(struct intel_output *output, | 881 | static bool intel_sdvo_get_supp_encode(struct intel_encoder *intel_encoder, |
| 881 | struct intel_sdvo_encode *encode) | 882 | struct intel_sdvo_encode *encode) |
| 882 | { | 883 | { |
| 883 | uint8_t status; | 884 | uint8_t status; |
| 884 | 885 | ||
| 885 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_SUPP_ENCODE, NULL, 0); | 886 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_SUPP_ENCODE, NULL, 0); |
| 886 | status = intel_sdvo_read_response(output, encode, sizeof(*encode)); | 887 | status = intel_sdvo_read_response(intel_encoder, encode, sizeof(*encode)); |
| 887 | if (status != SDVO_CMD_STATUS_SUCCESS) { /* non-support means DVI */ | 888 | if (status != SDVO_CMD_STATUS_SUCCESS) { /* non-support means DVI */ |
| 888 | memset(encode, 0, sizeof(*encode)); | 889 | memset(encode, 0, sizeof(*encode)); |
| 889 | return false; | 890 | return false; |
| @@ -892,29 +893,30 @@ static bool intel_sdvo_get_supp_encode(struct intel_output *output, | |||
| 892 | return true; | 893 | return true; |
| 893 | } | 894 | } |
| 894 | 895 | ||
| 895 | static bool intel_sdvo_set_encode(struct intel_output *output, uint8_t mode) | 896 | static bool intel_sdvo_set_encode(struct intel_encoder *intel_encoder, |
| 897 | uint8_t mode) | ||
| 896 | { | 898 | { |
| 897 | uint8_t status; | 899 | uint8_t status; |
| 898 | 900 | ||
| 899 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODE, &mode, 1); | 901 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_ENCODE, &mode, 1); |
| 900 | status = intel_sdvo_read_response(output, NULL, 0); | 902 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 901 | 903 | ||
| 902 | return (status == SDVO_CMD_STATUS_SUCCESS); | 904 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 903 | } | 905 | } |
| 904 | 906 | ||
| 905 | static bool intel_sdvo_set_colorimetry(struct intel_output *output, | 907 | static bool intel_sdvo_set_colorimetry(struct intel_encoder *intel_encoder, |
| 906 | uint8_t mode) | 908 | uint8_t mode) |
| 907 | { | 909 | { |
| 908 | uint8_t status; | 910 | uint8_t status; |
| 909 | 911 | ||
| 910 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_COLORIMETRY, &mode, 1); | 912 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_COLORIMETRY, &mode, 1); |
| 911 | status = intel_sdvo_read_response(output, NULL, 0); | 913 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 912 | 914 | ||
| 913 | return (status == SDVO_CMD_STATUS_SUCCESS); | 915 | return (status == SDVO_CMD_STATUS_SUCCESS); |
| 914 | } | 916 | } |
| 915 | 917 | ||
| 916 | #if 0 | 918 | #if 0 |
| 917 | static void intel_sdvo_dump_hdmi_buf(struct intel_output *output) | 919 | static void intel_sdvo_dump_hdmi_buf(struct intel_encoder *intel_encoder) |
| 918 | { | 920 | { |
| 919 | int i, j; | 921 | int i, j; |
| 920 | uint8_t set_buf_index[2]; | 922 | uint8_t set_buf_index[2]; |
| @@ -923,43 +925,45 @@ static void intel_sdvo_dump_hdmi_buf(struct intel_output *output) | |||
| 923 | uint8_t buf[48]; | 925 | uint8_t buf[48]; |
| 924 | uint8_t *pos; | 926 | uint8_t *pos; |
| 925 | 927 | ||
| 926 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0); | 928 | intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0); |
| 927 | intel_sdvo_read_response(output, &av_split, 1); | 929 | intel_sdvo_read_response(encoder, &av_split, 1); |
| 928 | 930 | ||
| 929 | for (i = 0; i <= av_split; i++) { | 931 | for (i = 0; i <= av_split; i++) { |
| 930 | set_buf_index[0] = i; set_buf_index[1] = 0; | 932 | set_buf_index[0] = i; set_buf_index[1] = 0; |
| 931 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX, | 933 | intel_sdvo_write_cmd(encoder, SDVO_CMD_SET_HBUF_INDEX, |
| 932 | set_buf_index, 2); | 934 | set_buf_index, 2); |
| 933 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_INFO, NULL, 0); | 935 | intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_INFO, NULL, 0); |
| 934 | intel_sdvo_read_response(output, &buf_size, 1); | 936 | intel_sdvo_read_response(encoder, &buf_size, 1); |
| 935 | 937 | ||
| 936 | pos = buf; | 938 | pos = buf; |
| 937 | for (j = 0; j <= buf_size; j += 8) { | 939 | for (j = 0; j <= buf_size; j += 8) { |
| 938 | intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_DATA, | 940 | intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_DATA, |
| 939 | NULL, 0); | 941 | NULL, 0); |
| 940 | intel_sdvo_read_response(output, pos, 8); | 942 | intel_sdvo_read_response(encoder, pos, 8); |
| 941 | pos += 8; | 943 | pos += 8; |
| 942 | } | 944 | } |
| 943 | } | 945 | } |
| 944 | } | 946 | } |
| 945 | #endif | 947 | #endif |
| 946 | 948 | ||
| 947 | static void intel_sdvo_set_hdmi_buf(struct intel_output *output, int index, | 949 | static void intel_sdvo_set_hdmi_buf(struct intel_encoder *intel_encoder, |
| 948 | uint8_t *data, int8_t size, uint8_t tx_rate) | 950 | int index, |
| 951 | uint8_t *data, int8_t size, uint8_t tx_rate) | ||
| 949 | { | 952 | { |
| 950 | uint8_t set_buf_index[2]; | 953 | uint8_t set_buf_index[2]; |
| 951 | 954 | ||
| 952 | set_buf_index[0] = index; | 955 | set_buf_index[0] = index; |
| 953 | set_buf_index[1] = 0; | 956 | set_buf_index[1] = 0; |
| 954 | 957 | ||
| 955 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX, set_buf_index, 2); | 958 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_HBUF_INDEX, |
| 959 | set_buf_index, 2); | ||
| 956 | 960 | ||
| 957 | for (; size > 0; size -= 8) { | 961 | for (; size > 0; size -= 8) { |
| 958 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_DATA, data, 8); | 962 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_HBUF_DATA, data, 8); |
| 959 | data += 8; | 963 | data += 8; |
| 960 | } | 964 | } |
| 961 | 965 | ||
| 962 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_TXRATE, &tx_rate, 1); | 966 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_HBUF_TXRATE, &tx_rate, 1); |
| 963 | } | 967 | } |
| 964 | 968 | ||
| 965 | static uint8_t intel_sdvo_calc_hbuf_csum(uint8_t *data, uint8_t size) | 969 | static uint8_t intel_sdvo_calc_hbuf_csum(uint8_t *data, uint8_t size) |
| @@ -1034,7 +1038,7 @@ struct dip_infoframe { | |||
| 1034 | } __attribute__ ((packed)) u; | 1038 | } __attribute__ ((packed)) u; |
| 1035 | } __attribute__((packed)); | 1039 | } __attribute__((packed)); |
| 1036 | 1040 | ||
| 1037 | static void intel_sdvo_set_avi_infoframe(struct intel_output *output, | 1041 | static void intel_sdvo_set_avi_infoframe(struct intel_encoder *intel_encoder, |
| 1038 | struct drm_display_mode * mode) | 1042 | struct drm_display_mode * mode) |
| 1039 | { | 1043 | { |
| 1040 | struct dip_infoframe avi_if = { | 1044 | struct dip_infoframe avi_if = { |
| @@ -1045,15 +1049,16 @@ static void intel_sdvo_set_avi_infoframe(struct intel_output *output, | |||
| 1045 | 1049 | ||
| 1046 | avi_if.checksum = intel_sdvo_calc_hbuf_csum((uint8_t *)&avi_if, | 1050 | avi_if.checksum = intel_sdvo_calc_hbuf_csum((uint8_t *)&avi_if, |
| 1047 | 4 + avi_if.len); | 1051 | 4 + avi_if.len); |
| 1048 | intel_sdvo_set_hdmi_buf(output, 1, (uint8_t *)&avi_if, 4 + avi_if.len, | 1052 | intel_sdvo_set_hdmi_buf(intel_encoder, 1, (uint8_t *)&avi_if, |
| 1053 | 4 + avi_if.len, | ||
| 1049 | SDVO_HBUF_TX_VSYNC); | 1054 | SDVO_HBUF_TX_VSYNC); |
| 1050 | } | 1055 | } |
| 1051 | 1056 | ||
| 1052 | static void intel_sdvo_set_tv_format(struct intel_output *output) | 1057 | static void intel_sdvo_set_tv_format(struct intel_encoder *intel_encoder) |
| 1053 | { | 1058 | { |
| 1054 | 1059 | ||
| 1055 | struct intel_sdvo_tv_format format; | 1060 | struct intel_sdvo_tv_format format; |
| 1056 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 1061 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1057 | uint32_t format_map, i; | 1062 | uint32_t format_map, i; |
| 1058 | uint8_t status; | 1063 | uint8_t status; |
| 1059 | 1064 | ||
| @@ -1066,10 +1071,10 @@ static void intel_sdvo_set_tv_format(struct intel_output *output) | |||
| 1066 | memcpy(&format, &format_map, sizeof(format_map) > sizeof(format) ? | 1071 | memcpy(&format, &format_map, sizeof(format_map) > sizeof(format) ? |
| 1067 | sizeof(format) : sizeof(format_map)); | 1072 | sizeof(format) : sizeof(format_map)); |
| 1068 | 1073 | ||
| 1069 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_TV_FORMAT, &format_map, | 1074 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_TV_FORMAT, &format_map, |
| 1070 | sizeof(format)); | 1075 | sizeof(format)); |
| 1071 | 1076 | ||
| 1072 | status = intel_sdvo_read_response(output, NULL, 0); | 1077 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 1073 | if (status != SDVO_CMD_STATUS_SUCCESS) | 1078 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 1074 | DRM_DEBUG_KMS("%s: Failed to set TV format\n", | 1079 | DRM_DEBUG_KMS("%s: Failed to set TV format\n", |
| 1075 | SDVO_NAME(sdvo_priv)); | 1080 | SDVO_NAME(sdvo_priv)); |
| @@ -1079,8 +1084,8 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, | |||
| 1079 | struct drm_display_mode *mode, | 1084 | struct drm_display_mode *mode, |
| 1080 | struct drm_display_mode *adjusted_mode) | 1085 | struct drm_display_mode *adjusted_mode) |
| 1081 | { | 1086 | { |
| 1082 | struct intel_output *output = enc_to_intel_output(encoder); | 1087 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 1083 | struct intel_sdvo_priv *dev_priv = output->dev_priv; | 1088 | struct intel_sdvo_priv *dev_priv = intel_encoder->dev_priv; |
| 1084 | 1089 | ||
| 1085 | if (dev_priv->is_tv) { | 1090 | if (dev_priv->is_tv) { |
| 1086 | struct intel_sdvo_dtd output_dtd; | 1091 | struct intel_sdvo_dtd output_dtd; |
| @@ -1095,22 +1100,22 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, | |||
| 1095 | 1100 | ||
| 1096 | /* Set output timings */ | 1101 | /* Set output timings */ |
| 1097 | intel_sdvo_get_dtd_from_mode(&output_dtd, mode); | 1102 | intel_sdvo_get_dtd_from_mode(&output_dtd, mode); |
| 1098 | intel_sdvo_set_target_output(output, | 1103 | intel_sdvo_set_target_output(intel_encoder, |
| 1099 | dev_priv->controlled_output); | 1104 | dev_priv->controlled_output); |
| 1100 | intel_sdvo_set_output_timing(output, &output_dtd); | 1105 | intel_sdvo_set_output_timing(intel_encoder, &output_dtd); |
| 1101 | 1106 | ||
| 1102 | /* Set the input timing to the screen. Assume always input 0. */ | 1107 | /* Set the input timing to the screen. Assume always input 0. */ |
| 1103 | intel_sdvo_set_target_input(output, true, false); | 1108 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 1104 | 1109 | ||
| 1105 | 1110 | ||
| 1106 | success = intel_sdvo_create_preferred_input_timing(output, | 1111 | success = intel_sdvo_create_preferred_input_timing(intel_encoder, |
| 1107 | mode->clock / 10, | 1112 | mode->clock / 10, |
| 1108 | mode->hdisplay, | 1113 | mode->hdisplay, |
| 1109 | mode->vdisplay); | 1114 | mode->vdisplay); |
| 1110 | if (success) { | 1115 | if (success) { |
| 1111 | struct intel_sdvo_dtd input_dtd; | 1116 | struct intel_sdvo_dtd input_dtd; |
| 1112 | 1117 | ||
| 1113 | intel_sdvo_get_preferred_input_timing(output, | 1118 | intel_sdvo_get_preferred_input_timing(intel_encoder, |
| 1114 | &input_dtd); | 1119 | &input_dtd); |
| 1115 | intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); | 1120 | intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); |
| 1116 | dev_priv->sdvo_flags = input_dtd.part2.sdvo_flags; | 1121 | dev_priv->sdvo_flags = input_dtd.part2.sdvo_flags; |
| @@ -1133,16 +1138,16 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, | |||
| 1133 | intel_sdvo_get_dtd_from_mode(&output_dtd, | 1138 | intel_sdvo_get_dtd_from_mode(&output_dtd, |
| 1134 | dev_priv->sdvo_lvds_fixed_mode); | 1139 | dev_priv->sdvo_lvds_fixed_mode); |
| 1135 | 1140 | ||
| 1136 | intel_sdvo_set_target_output(output, | 1141 | intel_sdvo_set_target_output(intel_encoder, |
| 1137 | dev_priv->controlled_output); | 1142 | dev_priv->controlled_output); |
| 1138 | intel_sdvo_set_output_timing(output, &output_dtd); | 1143 | intel_sdvo_set_output_timing(intel_encoder, &output_dtd); |
| 1139 | 1144 | ||
| 1140 | /* Set the input timing to the screen. Assume always input 0. */ | 1145 | /* Set the input timing to the screen. Assume always input 0. */ |
| 1141 | intel_sdvo_set_target_input(output, true, false); | 1146 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 1142 | 1147 | ||
| 1143 | 1148 | ||
| 1144 | success = intel_sdvo_create_preferred_input_timing( | 1149 | success = intel_sdvo_create_preferred_input_timing( |
| 1145 | output, | 1150 | intel_encoder, |
| 1146 | mode->clock / 10, | 1151 | mode->clock / 10, |
| 1147 | mode->hdisplay, | 1152 | mode->hdisplay, |
| 1148 | mode->vdisplay); | 1153 | mode->vdisplay); |
| @@ -1150,7 +1155,7 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, | |||
| 1150 | if (success) { | 1155 | if (success) { |
| 1151 | struct intel_sdvo_dtd input_dtd; | 1156 | struct intel_sdvo_dtd input_dtd; |
| 1152 | 1157 | ||
| 1153 | intel_sdvo_get_preferred_input_timing(output, | 1158 | intel_sdvo_get_preferred_input_timing(intel_encoder, |
| 1154 | &input_dtd); | 1159 | &input_dtd); |
| 1155 | intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); | 1160 | intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); |
| 1156 | dev_priv->sdvo_flags = input_dtd.part2.sdvo_flags; | 1161 | dev_priv->sdvo_flags = input_dtd.part2.sdvo_flags; |
| @@ -1182,8 +1187,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1182 | struct drm_i915_private *dev_priv = dev->dev_private; | 1187 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1183 | struct drm_crtc *crtc = encoder->crtc; | 1188 | struct drm_crtc *crtc = encoder->crtc; |
| 1184 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1189 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 1185 | struct intel_output *output = enc_to_intel_output(encoder); | 1190 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 1186 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 1191 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1187 | u32 sdvox = 0; | 1192 | u32 sdvox = 0; |
| 1188 | int sdvo_pixel_multiply; | 1193 | int sdvo_pixel_multiply; |
| 1189 | struct intel_sdvo_in_out_map in_out; | 1194 | struct intel_sdvo_in_out_map in_out; |
| @@ -1202,12 +1207,12 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1202 | in_out.in0 = sdvo_priv->controlled_output; | 1207 | in_out.in0 = sdvo_priv->controlled_output; |
| 1203 | in_out.in1 = 0; | 1208 | in_out.in1 = 0; |
| 1204 | 1209 | ||
| 1205 | intel_sdvo_write_cmd(output, SDVO_CMD_SET_IN_OUT_MAP, | 1210 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_IN_OUT_MAP, |
| 1206 | &in_out, sizeof(in_out)); | 1211 | &in_out, sizeof(in_out)); |
| 1207 | status = intel_sdvo_read_response(output, NULL, 0); | 1212 | status = intel_sdvo_read_response(intel_encoder, NULL, 0); |
| 1208 | 1213 | ||
| 1209 | if (sdvo_priv->is_hdmi) { | 1214 | if (sdvo_priv->is_hdmi) { |
| 1210 | intel_sdvo_set_avi_infoframe(output, mode); | 1215 | intel_sdvo_set_avi_infoframe(intel_encoder, mode); |
| 1211 | sdvox |= SDVO_AUDIO_ENABLE; | 1216 | sdvox |= SDVO_AUDIO_ENABLE; |
| 1212 | } | 1217 | } |
| 1213 | 1218 | ||
| @@ -1224,16 +1229,16 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1224 | */ | 1229 | */ |
| 1225 | if (!sdvo_priv->is_tv && !sdvo_priv->is_lvds) { | 1230 | if (!sdvo_priv->is_tv && !sdvo_priv->is_lvds) { |
| 1226 | /* Set the output timing to the screen */ | 1231 | /* Set the output timing to the screen */ |
| 1227 | intel_sdvo_set_target_output(output, | 1232 | intel_sdvo_set_target_output(intel_encoder, |
| 1228 | sdvo_priv->controlled_output); | 1233 | sdvo_priv->controlled_output); |
| 1229 | intel_sdvo_set_output_timing(output, &input_dtd); | 1234 | intel_sdvo_set_output_timing(intel_encoder, &input_dtd); |
| 1230 | } | 1235 | } |
| 1231 | 1236 | ||
| 1232 | /* Set the input timing to the screen. Assume always input 0. */ | 1237 | /* Set the input timing to the screen. Assume always input 0. */ |
| 1233 | intel_sdvo_set_target_input(output, true, false); | 1238 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 1234 | 1239 | ||
| 1235 | if (sdvo_priv->is_tv) | 1240 | if (sdvo_priv->is_tv) |
| 1236 | intel_sdvo_set_tv_format(output); | 1241 | intel_sdvo_set_tv_format(intel_encoder); |
| 1237 | 1242 | ||
| 1238 | /* We would like to use intel_sdvo_create_preferred_input_timing() to | 1243 | /* We would like to use intel_sdvo_create_preferred_input_timing() to |
| 1239 | * provide the device with a timing it can support, if it supports that | 1244 | * provide the device with a timing it can support, if it supports that |
| @@ -1241,29 +1246,29 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1241 | * output the preferred timing, and we don't support that currently. | 1246 | * output the preferred timing, and we don't support that currently. |
| 1242 | */ | 1247 | */ |
| 1243 | #if 0 | 1248 | #if 0 |
| 1244 | success = intel_sdvo_create_preferred_input_timing(output, clock, | 1249 | success = intel_sdvo_create_preferred_input_timing(encoder, clock, |
| 1245 | width, height); | 1250 | width, height); |
| 1246 | if (success) { | 1251 | if (success) { |
| 1247 | struct intel_sdvo_dtd *input_dtd; | 1252 | struct intel_sdvo_dtd *input_dtd; |
| 1248 | 1253 | ||
| 1249 | intel_sdvo_get_preferred_input_timing(output, &input_dtd); | 1254 | intel_sdvo_get_preferred_input_timing(encoder, &input_dtd); |
| 1250 | intel_sdvo_set_input_timing(output, &input_dtd); | 1255 | intel_sdvo_set_input_timing(encoder, &input_dtd); |
| 1251 | } | 1256 | } |
| 1252 | #else | 1257 | #else |
| 1253 | intel_sdvo_set_input_timing(output, &input_dtd); | 1258 | intel_sdvo_set_input_timing(intel_encoder, &input_dtd); |
| 1254 | #endif | 1259 | #endif |
| 1255 | 1260 | ||
| 1256 | switch (intel_sdvo_get_pixel_multiplier(mode)) { | 1261 | switch (intel_sdvo_get_pixel_multiplier(mode)) { |
| 1257 | case 1: | 1262 | case 1: |
| 1258 | intel_sdvo_set_clock_rate_mult(output, | 1263 | intel_sdvo_set_clock_rate_mult(intel_encoder, |
| 1259 | SDVO_CLOCK_RATE_MULT_1X); | 1264 | SDVO_CLOCK_RATE_MULT_1X); |
| 1260 | break; | 1265 | break; |
| 1261 | case 2: | 1266 | case 2: |
| 1262 | intel_sdvo_set_clock_rate_mult(output, | 1267 | intel_sdvo_set_clock_rate_mult(intel_encoder, |
| 1263 | SDVO_CLOCK_RATE_MULT_2X); | 1268 | SDVO_CLOCK_RATE_MULT_2X); |
| 1264 | break; | 1269 | break; |
| 1265 | case 4: | 1270 | case 4: |
| 1266 | intel_sdvo_set_clock_rate_mult(output, | 1271 | intel_sdvo_set_clock_rate_mult(intel_encoder, |
| 1267 | SDVO_CLOCK_RATE_MULT_4X); | 1272 | SDVO_CLOCK_RATE_MULT_4X); |
| 1268 | break; | 1273 | break; |
| 1269 | } | 1274 | } |
| @@ -1274,8 +1279,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1274 | SDVO_VSYNC_ACTIVE_HIGH | | 1279 | SDVO_VSYNC_ACTIVE_HIGH | |
| 1275 | SDVO_HSYNC_ACTIVE_HIGH; | 1280 | SDVO_HSYNC_ACTIVE_HIGH; |
| 1276 | } else { | 1281 | } else { |
| 1277 | sdvox |= I915_READ(sdvo_priv->output_device); | 1282 | sdvox |= I915_READ(sdvo_priv->sdvo_reg); |
| 1278 | switch (sdvo_priv->output_device) { | 1283 | switch (sdvo_priv->sdvo_reg) { |
| 1279 | case SDVOB: | 1284 | case SDVOB: |
| 1280 | sdvox &= SDVOB_PRESERVE_MASK; | 1285 | sdvox &= SDVOB_PRESERVE_MASK; |
| 1281 | break; | 1286 | break; |
| @@ -1299,26 +1304,26 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
| 1299 | 1304 | ||
| 1300 | if (sdvo_priv->sdvo_flags & SDVO_NEED_TO_STALL) | 1305 | if (sdvo_priv->sdvo_flags & SDVO_NEED_TO_STALL) |
| 1301 | sdvox |= SDVO_STALL_SELECT; | 1306 | sdvox |= SDVO_STALL_SELECT; |
| 1302 | intel_sdvo_write_sdvox(output, sdvox); | 1307 | intel_sdvo_write_sdvox(intel_encoder, sdvox); |
| 1303 | } | 1308 | } |
| 1304 | 1309 | ||
| 1305 | static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode) | 1310 | static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode) |
| 1306 | { | 1311 | { |
| 1307 | struct drm_device *dev = encoder->dev; | 1312 | struct drm_device *dev = encoder->dev; |
| 1308 | struct drm_i915_private *dev_priv = dev->dev_private; | 1313 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1309 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 1314 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 1310 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1315 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1311 | u32 temp; | 1316 | u32 temp; |
| 1312 | 1317 | ||
| 1313 | if (mode != DRM_MODE_DPMS_ON) { | 1318 | if (mode != DRM_MODE_DPMS_ON) { |
| 1314 | intel_sdvo_set_active_outputs(intel_output, 0); | 1319 | intel_sdvo_set_active_outputs(intel_encoder, 0); |
| 1315 | if (0) | 1320 | if (0) |
| 1316 | intel_sdvo_set_encoder_power_state(intel_output, mode); | 1321 | intel_sdvo_set_encoder_power_state(intel_encoder, mode); |
| 1317 | 1322 | ||
| 1318 | if (mode == DRM_MODE_DPMS_OFF) { | 1323 | if (mode == DRM_MODE_DPMS_OFF) { |
| 1319 | temp = I915_READ(sdvo_priv->output_device); | 1324 | temp = I915_READ(sdvo_priv->sdvo_reg); |
| 1320 | if ((temp & SDVO_ENABLE) != 0) { | 1325 | if ((temp & SDVO_ENABLE) != 0) { |
| 1321 | intel_sdvo_write_sdvox(intel_output, temp & ~SDVO_ENABLE); | 1326 | intel_sdvo_write_sdvox(intel_encoder, temp & ~SDVO_ENABLE); |
| 1322 | } | 1327 | } |
| 1323 | } | 1328 | } |
| 1324 | } else { | 1329 | } else { |
| @@ -1326,13 +1331,13 @@ static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode) | |||
| 1326 | int i; | 1331 | int i; |
| 1327 | u8 status; | 1332 | u8 status; |
| 1328 | 1333 | ||
| 1329 | temp = I915_READ(sdvo_priv->output_device); | 1334 | temp = I915_READ(sdvo_priv->sdvo_reg); |
| 1330 | if ((temp & SDVO_ENABLE) == 0) | 1335 | if ((temp & SDVO_ENABLE) == 0) |
| 1331 | intel_sdvo_write_sdvox(intel_output, temp | SDVO_ENABLE); | 1336 | intel_sdvo_write_sdvox(intel_encoder, temp | SDVO_ENABLE); |
| 1332 | for (i = 0; i < 2; i++) | 1337 | for (i = 0; i < 2; i++) |
| 1333 | intel_wait_for_vblank(dev); | 1338 | intel_wait_for_vblank(dev); |
| 1334 | 1339 | ||
| 1335 | status = intel_sdvo_get_trained_inputs(intel_output, &input1, | 1340 | status = intel_sdvo_get_trained_inputs(intel_encoder, &input1, |
| 1336 | &input2); | 1341 | &input2); |
| 1337 | 1342 | ||
| 1338 | 1343 | ||
| @@ -1346,8 +1351,8 @@ static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode) | |||
| 1346 | } | 1351 | } |
| 1347 | 1352 | ||
| 1348 | if (0) | 1353 | if (0) |
| 1349 | intel_sdvo_set_encoder_power_state(intel_output, mode); | 1354 | intel_sdvo_set_encoder_power_state(intel_encoder, mode); |
| 1350 | intel_sdvo_set_active_outputs(intel_output, sdvo_priv->controlled_output); | 1355 | intel_sdvo_set_active_outputs(intel_encoder, sdvo_priv->controlled_output); |
| 1351 | } | 1356 | } |
| 1352 | return; | 1357 | return; |
| 1353 | } | 1358 | } |
| @@ -1356,22 +1361,22 @@ static void intel_sdvo_save(struct drm_connector *connector) | |||
| 1356 | { | 1361 | { |
| 1357 | struct drm_device *dev = connector->dev; | 1362 | struct drm_device *dev = connector->dev; |
| 1358 | struct drm_i915_private *dev_priv = dev->dev_private; | 1363 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1359 | struct intel_output *intel_output = to_intel_output(connector); | 1364 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1360 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1365 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1361 | int o; | 1366 | int o; |
| 1362 | 1367 | ||
| 1363 | sdvo_priv->save_sdvo_mult = intel_sdvo_get_clock_rate_mult(intel_output); | 1368 | sdvo_priv->save_sdvo_mult = intel_sdvo_get_clock_rate_mult(intel_encoder); |
| 1364 | intel_sdvo_get_active_outputs(intel_output, &sdvo_priv->save_active_outputs); | 1369 | intel_sdvo_get_active_outputs(intel_encoder, &sdvo_priv->save_active_outputs); |
| 1365 | 1370 | ||
| 1366 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x1) { | 1371 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x1) { |
| 1367 | intel_sdvo_set_target_input(intel_output, true, false); | 1372 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 1368 | intel_sdvo_get_input_timing(intel_output, | 1373 | intel_sdvo_get_input_timing(intel_encoder, |
| 1369 | &sdvo_priv->save_input_dtd_1); | 1374 | &sdvo_priv->save_input_dtd_1); |
| 1370 | } | 1375 | } |
| 1371 | 1376 | ||
| 1372 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x2) { | 1377 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x2) { |
| 1373 | intel_sdvo_set_target_input(intel_output, false, true); | 1378 | intel_sdvo_set_target_input(intel_encoder, false, true); |
| 1374 | intel_sdvo_get_input_timing(intel_output, | 1379 | intel_sdvo_get_input_timing(intel_encoder, |
| 1375 | &sdvo_priv->save_input_dtd_2); | 1380 | &sdvo_priv->save_input_dtd_2); |
| 1376 | } | 1381 | } |
| 1377 | 1382 | ||
| @@ -1380,8 +1385,8 @@ static void intel_sdvo_save(struct drm_connector *connector) | |||
| 1380 | u16 this_output = (1 << o); | 1385 | u16 this_output = (1 << o); |
| 1381 | if (sdvo_priv->caps.output_flags & this_output) | 1386 | if (sdvo_priv->caps.output_flags & this_output) |
| 1382 | { | 1387 | { |
| 1383 | intel_sdvo_set_target_output(intel_output, this_output); | 1388 | intel_sdvo_set_target_output(intel_encoder, this_output); |
| 1384 | intel_sdvo_get_output_timing(intel_output, | 1389 | intel_sdvo_get_output_timing(intel_encoder, |
| 1385 | &sdvo_priv->save_output_dtd[o]); | 1390 | &sdvo_priv->save_output_dtd[o]); |
| 1386 | } | 1391 | } |
| 1387 | } | 1392 | } |
| @@ -1389,66 +1394,66 @@ static void intel_sdvo_save(struct drm_connector *connector) | |||
| 1389 | /* XXX: Save TV format/enhancements. */ | 1394 | /* XXX: Save TV format/enhancements. */ |
| 1390 | } | 1395 | } |
| 1391 | 1396 | ||
| 1392 | sdvo_priv->save_SDVOX = I915_READ(sdvo_priv->output_device); | 1397 | sdvo_priv->save_SDVOX = I915_READ(sdvo_priv->sdvo_reg); |
| 1393 | } | 1398 | } |
| 1394 | 1399 | ||
| 1395 | static void intel_sdvo_restore(struct drm_connector *connector) | 1400 | static void intel_sdvo_restore(struct drm_connector *connector) |
| 1396 | { | 1401 | { |
| 1397 | struct drm_device *dev = connector->dev; | 1402 | struct drm_device *dev = connector->dev; |
| 1398 | struct intel_output *intel_output = to_intel_output(connector); | 1403 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1399 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1404 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1400 | int o; | 1405 | int o; |
| 1401 | int i; | 1406 | int i; |
| 1402 | bool input1, input2; | 1407 | bool input1, input2; |
| 1403 | u8 status; | 1408 | u8 status; |
| 1404 | 1409 | ||
| 1405 | intel_sdvo_set_active_outputs(intel_output, 0); | 1410 | intel_sdvo_set_active_outputs(intel_encoder, 0); |
| 1406 | 1411 | ||
| 1407 | for (o = SDVO_OUTPUT_FIRST; o <= SDVO_OUTPUT_LAST; o++) | 1412 | for (o = SDVO_OUTPUT_FIRST; o <= SDVO_OUTPUT_LAST; o++) |
| 1408 | { | 1413 | { |
| 1409 | u16 this_output = (1 << o); | 1414 | u16 this_output = (1 << o); |
| 1410 | if (sdvo_priv->caps.output_flags & this_output) { | 1415 | if (sdvo_priv->caps.output_flags & this_output) { |
| 1411 | intel_sdvo_set_target_output(intel_output, this_output); | 1416 | intel_sdvo_set_target_output(intel_encoder, this_output); |
| 1412 | intel_sdvo_set_output_timing(intel_output, &sdvo_priv->save_output_dtd[o]); | 1417 | intel_sdvo_set_output_timing(intel_encoder, &sdvo_priv->save_output_dtd[o]); |
| 1413 | } | 1418 | } |
| 1414 | } | 1419 | } |
| 1415 | 1420 | ||
| 1416 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x1) { | 1421 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x1) { |
| 1417 | intel_sdvo_set_target_input(intel_output, true, false); | 1422 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 1418 | intel_sdvo_set_input_timing(intel_output, &sdvo_priv->save_input_dtd_1); | 1423 | intel_sdvo_set_input_timing(intel_encoder, &sdvo_priv->save_input_dtd_1); |
| 1419 | } | 1424 | } |
| 1420 | 1425 | ||
| 1421 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x2) { | 1426 | if (sdvo_priv->caps.sdvo_inputs_mask & 0x2) { |
| 1422 | intel_sdvo_set_target_input(intel_output, false, true); | 1427 | intel_sdvo_set_target_input(intel_encoder, false, true); |
| 1423 | intel_sdvo_set_input_timing(intel_output, &sdvo_priv->save_input_dtd_2); | 1428 | intel_sdvo_set_input_timing(intel_encoder, &sdvo_priv->save_input_dtd_2); |
| 1424 | } | 1429 | } |
| 1425 | 1430 | ||
| 1426 | intel_sdvo_set_clock_rate_mult(intel_output, sdvo_priv->save_sdvo_mult); | 1431 | intel_sdvo_set_clock_rate_mult(intel_encoder, sdvo_priv->save_sdvo_mult); |
| 1427 | 1432 | ||
| 1428 | if (sdvo_priv->is_tv) { | 1433 | if (sdvo_priv->is_tv) { |
| 1429 | /* XXX: Restore TV format/enhancements. */ | 1434 | /* XXX: Restore TV format/enhancements. */ |
| 1430 | } | 1435 | } |
| 1431 | 1436 | ||
| 1432 | intel_sdvo_write_sdvox(intel_output, sdvo_priv->save_SDVOX); | 1437 | intel_sdvo_write_sdvox(intel_encoder, sdvo_priv->save_SDVOX); |
| 1433 | 1438 | ||
| 1434 | if (sdvo_priv->save_SDVOX & SDVO_ENABLE) | 1439 | if (sdvo_priv->save_SDVOX & SDVO_ENABLE) |
| 1435 | { | 1440 | { |
| 1436 | for (i = 0; i < 2; i++) | 1441 | for (i = 0; i < 2; i++) |
| 1437 | intel_wait_for_vblank(dev); | 1442 | intel_wait_for_vblank(dev); |
| 1438 | status = intel_sdvo_get_trained_inputs(intel_output, &input1, &input2); | 1443 | status = intel_sdvo_get_trained_inputs(intel_encoder, &input1, &input2); |
| 1439 | if (status == SDVO_CMD_STATUS_SUCCESS && !input1) | 1444 | if (status == SDVO_CMD_STATUS_SUCCESS && !input1) |
| 1440 | DRM_DEBUG_KMS("First %s output reported failure to " | 1445 | DRM_DEBUG_KMS("First %s output reported failure to " |
| 1441 | "sync\n", SDVO_NAME(sdvo_priv)); | 1446 | "sync\n", SDVO_NAME(sdvo_priv)); |
| 1442 | } | 1447 | } |
| 1443 | 1448 | ||
| 1444 | intel_sdvo_set_active_outputs(intel_output, sdvo_priv->save_active_outputs); | 1449 | intel_sdvo_set_active_outputs(intel_encoder, sdvo_priv->save_active_outputs); |
| 1445 | } | 1450 | } |
| 1446 | 1451 | ||
| 1447 | static int intel_sdvo_mode_valid(struct drm_connector *connector, | 1452 | static int intel_sdvo_mode_valid(struct drm_connector *connector, |
| 1448 | struct drm_display_mode *mode) | 1453 | struct drm_display_mode *mode) |
| 1449 | { | 1454 | { |
| 1450 | struct intel_output *intel_output = to_intel_output(connector); | 1455 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1451 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1456 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1452 | 1457 | ||
| 1453 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) | 1458 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) |
| 1454 | return MODE_NO_DBLESCAN; | 1459 | return MODE_NO_DBLESCAN; |
| @@ -1473,12 +1478,12 @@ static int intel_sdvo_mode_valid(struct drm_connector *connector, | |||
| 1473 | return MODE_OK; | 1478 | return MODE_OK; |
| 1474 | } | 1479 | } |
| 1475 | 1480 | ||
| 1476 | static bool intel_sdvo_get_capabilities(struct intel_output *intel_output, struct intel_sdvo_caps *caps) | 1481 | static bool intel_sdvo_get_capabilities(struct intel_encoder *intel_encoder, struct intel_sdvo_caps *caps) |
| 1477 | { | 1482 | { |
| 1478 | u8 status; | 1483 | u8 status; |
| 1479 | 1484 | ||
| 1480 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_DEVICE_CAPS, NULL, 0); | 1485 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_DEVICE_CAPS, NULL, 0); |
| 1481 | status = intel_sdvo_read_response(intel_output, caps, sizeof(*caps)); | 1486 | status = intel_sdvo_read_response(intel_encoder, caps, sizeof(*caps)); |
| 1482 | if (status != SDVO_CMD_STATUS_SUCCESS) | 1487 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 1483 | return false; | 1488 | return false; |
| 1484 | 1489 | ||
| @@ -1488,22 +1493,22 @@ static bool intel_sdvo_get_capabilities(struct intel_output *intel_output, struc | |||
| 1488 | struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB) | 1493 | struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB) |
| 1489 | { | 1494 | { |
| 1490 | struct drm_connector *connector = NULL; | 1495 | struct drm_connector *connector = NULL; |
| 1491 | struct intel_output *iout = NULL; | 1496 | struct intel_encoder *iout = NULL; |
| 1492 | struct intel_sdvo_priv *sdvo; | 1497 | struct intel_sdvo_priv *sdvo; |
| 1493 | 1498 | ||
| 1494 | /* find the sdvo connector */ | 1499 | /* find the sdvo connector */ |
| 1495 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 1500 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
| 1496 | iout = to_intel_output(connector); | 1501 | iout = to_intel_encoder(connector); |
| 1497 | 1502 | ||
| 1498 | if (iout->type != INTEL_OUTPUT_SDVO) | 1503 | if (iout->type != INTEL_OUTPUT_SDVO) |
| 1499 | continue; | 1504 | continue; |
| 1500 | 1505 | ||
| 1501 | sdvo = iout->dev_priv; | 1506 | sdvo = iout->dev_priv; |
| 1502 | 1507 | ||
| 1503 | if (sdvo->output_device == SDVOB && sdvoB) | 1508 | if (sdvo->sdvo_reg == SDVOB && sdvoB) |
| 1504 | return connector; | 1509 | return connector; |
| 1505 | 1510 | ||
| 1506 | if (sdvo->output_device == SDVOC && !sdvoB) | 1511 | if (sdvo->sdvo_reg == SDVOC && !sdvoB) |
| 1507 | return connector; | 1512 | return connector; |
| 1508 | 1513 | ||
| 1509 | } | 1514 | } |
| @@ -1515,16 +1520,16 @@ int intel_sdvo_supports_hotplug(struct drm_connector *connector) | |||
| 1515 | { | 1520 | { |
| 1516 | u8 response[2]; | 1521 | u8 response[2]; |
| 1517 | u8 status; | 1522 | u8 status; |
| 1518 | struct intel_output *intel_output; | 1523 | struct intel_encoder *intel_encoder; |
| 1519 | DRM_DEBUG_KMS("\n"); | 1524 | DRM_DEBUG_KMS("\n"); |
| 1520 | 1525 | ||
| 1521 | if (!connector) | 1526 | if (!connector) |
| 1522 | return 0; | 1527 | return 0; |
| 1523 | 1528 | ||
| 1524 | intel_output = to_intel_output(connector); | 1529 | intel_encoder = to_intel_encoder(connector); |
| 1525 | 1530 | ||
| 1526 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_HOT_PLUG_SUPPORT, NULL, 0); | 1531 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_HOT_PLUG_SUPPORT, NULL, 0); |
| 1527 | status = intel_sdvo_read_response(intel_output, &response, 2); | 1532 | status = intel_sdvo_read_response(intel_encoder, &response, 2); |
| 1528 | 1533 | ||
| 1529 | if (response[0] !=0) | 1534 | if (response[0] !=0) |
| 1530 | return 1; | 1535 | return 1; |
| @@ -1536,30 +1541,30 @@ void intel_sdvo_set_hotplug(struct drm_connector *connector, int on) | |||
| 1536 | { | 1541 | { |
| 1537 | u8 response[2]; | 1542 | u8 response[2]; |
| 1538 | u8 status; | 1543 | u8 status; |
| 1539 | struct intel_output *intel_output = to_intel_output(connector); | 1544 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1540 | 1545 | ||
| 1541 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0); | 1546 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0); |
| 1542 | intel_sdvo_read_response(intel_output, &response, 2); | 1547 | intel_sdvo_read_response(intel_encoder, &response, 2); |
| 1543 | 1548 | ||
| 1544 | if (on) { | 1549 | if (on) { |
| 1545 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_HOT_PLUG_SUPPORT, NULL, 0); | 1550 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_HOT_PLUG_SUPPORT, NULL, 0); |
| 1546 | status = intel_sdvo_read_response(intel_output, &response, 2); | 1551 | status = intel_sdvo_read_response(intel_encoder, &response, 2); |
| 1547 | 1552 | ||
| 1548 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2); | 1553 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2); |
| 1549 | } else { | 1554 | } else { |
| 1550 | response[0] = 0; | 1555 | response[0] = 0; |
| 1551 | response[1] = 0; | 1556 | response[1] = 0; |
| 1552 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2); | 1557 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2); |
| 1553 | } | 1558 | } |
| 1554 | 1559 | ||
| 1555 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0); | 1560 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0); |
| 1556 | intel_sdvo_read_response(intel_output, &response, 2); | 1561 | intel_sdvo_read_response(intel_encoder, &response, 2); |
| 1557 | } | 1562 | } |
| 1558 | 1563 | ||
| 1559 | static bool | 1564 | static bool |
| 1560 | intel_sdvo_multifunc_encoder(struct intel_output *intel_output) | 1565 | intel_sdvo_multifunc_encoder(struct intel_encoder *intel_encoder) |
| 1561 | { | 1566 | { |
| 1562 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1567 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1563 | int caps = 0; | 1568 | int caps = 0; |
| 1564 | 1569 | ||
| 1565 | if (sdvo_priv->caps.output_flags & | 1570 | if (sdvo_priv->caps.output_flags & |
| @@ -1593,11 +1598,11 @@ static struct drm_connector * | |||
| 1593 | intel_find_analog_connector(struct drm_device *dev) | 1598 | intel_find_analog_connector(struct drm_device *dev) |
| 1594 | { | 1599 | { |
| 1595 | struct drm_connector *connector; | 1600 | struct drm_connector *connector; |
| 1596 | struct intel_output *intel_output; | 1601 | struct intel_encoder *intel_encoder; |
| 1597 | 1602 | ||
| 1598 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 1603 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
| 1599 | intel_output = to_intel_output(connector); | 1604 | intel_encoder = to_intel_encoder(connector); |
| 1600 | if (intel_output->type == INTEL_OUTPUT_ANALOG) | 1605 | if (intel_encoder->type == INTEL_OUTPUT_ANALOG) |
| 1601 | return connector; | 1606 | return connector; |
| 1602 | } | 1607 | } |
| 1603 | return NULL; | 1608 | return NULL; |
| @@ -1622,16 +1627,16 @@ intel_analog_is_connected(struct drm_device *dev) | |||
| 1622 | enum drm_connector_status | 1627 | enum drm_connector_status |
| 1623 | intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) | 1628 | intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) |
| 1624 | { | 1629 | { |
| 1625 | struct intel_output *intel_output = to_intel_output(connector); | 1630 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1626 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1631 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1627 | enum drm_connector_status status = connector_status_connected; | 1632 | enum drm_connector_status status = connector_status_connected; |
| 1628 | struct edid *edid = NULL; | 1633 | struct edid *edid = NULL; |
| 1629 | 1634 | ||
| 1630 | edid = drm_get_edid(&intel_output->base, | 1635 | edid = drm_get_edid(&intel_encoder->base, |
| 1631 | intel_output->ddc_bus); | 1636 | intel_encoder->ddc_bus); |
| 1632 | 1637 | ||
| 1633 | /* This is only applied to SDVO cards with multiple outputs */ | 1638 | /* This is only applied to SDVO cards with multiple outputs */ |
| 1634 | if (edid == NULL && intel_sdvo_multifunc_encoder(intel_output)) { | 1639 | if (edid == NULL && intel_sdvo_multifunc_encoder(intel_encoder)) { |
| 1635 | uint8_t saved_ddc, temp_ddc; | 1640 | uint8_t saved_ddc, temp_ddc; |
| 1636 | saved_ddc = sdvo_priv->ddc_bus; | 1641 | saved_ddc = sdvo_priv->ddc_bus; |
| 1637 | temp_ddc = sdvo_priv->ddc_bus >> 1; | 1642 | temp_ddc = sdvo_priv->ddc_bus >> 1; |
| @@ -1641,8 +1646,8 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) | |||
| 1641 | */ | 1646 | */ |
| 1642 | while(temp_ddc > 1) { | 1647 | while(temp_ddc > 1) { |
| 1643 | sdvo_priv->ddc_bus = temp_ddc; | 1648 | sdvo_priv->ddc_bus = temp_ddc; |
| 1644 | edid = drm_get_edid(&intel_output->base, | 1649 | edid = drm_get_edid(&intel_encoder->base, |
| 1645 | intel_output->ddc_bus); | 1650 | intel_encoder->ddc_bus); |
| 1646 | if (edid) { | 1651 | if (edid) { |
| 1647 | /* | 1652 | /* |
| 1648 | * When we can get the EDID, maybe it is the | 1653 | * When we can get the EDID, maybe it is the |
| @@ -1661,8 +1666,8 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) | |||
| 1661 | */ | 1666 | */ |
| 1662 | if (edid == NULL && | 1667 | if (edid == NULL && |
| 1663 | sdvo_priv->analog_ddc_bus && | 1668 | sdvo_priv->analog_ddc_bus && |
| 1664 | !intel_analog_is_connected(intel_output->base.dev)) | 1669 | !intel_analog_is_connected(intel_encoder->base.dev)) |
| 1665 | edid = drm_get_edid(&intel_output->base, | 1670 | edid = drm_get_edid(&intel_encoder->base, |
| 1666 | sdvo_priv->analog_ddc_bus); | 1671 | sdvo_priv->analog_ddc_bus); |
| 1667 | if (edid != NULL) { | 1672 | if (edid != NULL) { |
| 1668 | /* Don't report the output as connected if it's a DVI-I | 1673 | /* Don't report the output as connected if it's a DVI-I |
| @@ -1677,7 +1682,7 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response) | |||
| 1677 | } | 1682 | } |
| 1678 | 1683 | ||
| 1679 | kfree(edid); | 1684 | kfree(edid); |
| 1680 | intel_output->base.display_info.raw_edid = NULL; | 1685 | intel_encoder->base.display_info.raw_edid = NULL; |
| 1681 | 1686 | ||
| 1682 | } else if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) | 1687 | } else if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) |
| 1683 | status = connector_status_disconnected; | 1688 | status = connector_status_disconnected; |
| @@ -1689,16 +1694,16 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect | |||
| 1689 | { | 1694 | { |
| 1690 | uint16_t response; | 1695 | uint16_t response; |
| 1691 | u8 status; | 1696 | u8 status; |
| 1692 | struct intel_output *intel_output = to_intel_output(connector); | 1697 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1693 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1698 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1694 | 1699 | ||
| 1695 | intel_sdvo_write_cmd(intel_output, | 1700 | intel_sdvo_write_cmd(intel_encoder, |
| 1696 | SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0); | 1701 | SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0); |
| 1697 | if (sdvo_priv->is_tv) { | 1702 | if (sdvo_priv->is_tv) { |
| 1698 | /* add 30ms delay when the output type is SDVO-TV */ | 1703 | /* add 30ms delay when the output type is SDVO-TV */ |
| 1699 | mdelay(30); | 1704 | mdelay(30); |
| 1700 | } | 1705 | } |
| 1701 | status = intel_sdvo_read_response(intel_output, &response, 2); | 1706 | status = intel_sdvo_read_response(intel_encoder, &response, 2); |
| 1702 | 1707 | ||
| 1703 | DRM_DEBUG_KMS("SDVO response %d %d\n", response & 0xff, response >> 8); | 1708 | DRM_DEBUG_KMS("SDVO response %d %d\n", response & 0xff, response >> 8); |
| 1704 | 1709 | ||
| @@ -1708,10 +1713,10 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect | |||
| 1708 | if (response == 0) | 1713 | if (response == 0) |
| 1709 | return connector_status_disconnected; | 1714 | return connector_status_disconnected; |
| 1710 | 1715 | ||
| 1711 | if (intel_sdvo_multifunc_encoder(intel_output) && | 1716 | if (intel_sdvo_multifunc_encoder(intel_encoder) && |
| 1712 | sdvo_priv->attached_output != response) { | 1717 | sdvo_priv->attached_output != response) { |
| 1713 | if (sdvo_priv->controlled_output != response && | 1718 | if (sdvo_priv->controlled_output != response && |
| 1714 | intel_sdvo_output_setup(intel_output, response) != true) | 1719 | intel_sdvo_output_setup(intel_encoder, response) != true) |
| 1715 | return connector_status_unknown; | 1720 | return connector_status_unknown; |
| 1716 | sdvo_priv->attached_output = response; | 1721 | sdvo_priv->attached_output = response; |
| 1717 | } | 1722 | } |
| @@ -1720,12 +1725,12 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect | |||
| 1720 | 1725 | ||
| 1721 | static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) | 1726 | static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) |
| 1722 | { | 1727 | { |
| 1723 | struct intel_output *intel_output = to_intel_output(connector); | 1728 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1724 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1729 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1725 | int num_modes; | 1730 | int num_modes; |
| 1726 | 1731 | ||
| 1727 | /* set the bus switch and get the modes */ | 1732 | /* set the bus switch and get the modes */ |
| 1728 | num_modes = intel_ddc_get_modes(intel_output); | 1733 | num_modes = intel_ddc_get_modes(intel_encoder); |
| 1729 | 1734 | ||
| 1730 | /* | 1735 | /* |
| 1731 | * Mac mini hack. On this device, the DVI-I connector shares one DDC | 1736 | * Mac mini hack. On this device, the DVI-I connector shares one DDC |
| @@ -1735,17 +1740,17 @@ static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) | |||
| 1735 | */ | 1740 | */ |
| 1736 | if (num_modes == 0 && | 1741 | if (num_modes == 0 && |
| 1737 | sdvo_priv->analog_ddc_bus && | 1742 | sdvo_priv->analog_ddc_bus && |
| 1738 | !intel_analog_is_connected(intel_output->base.dev)) { | 1743 | !intel_analog_is_connected(intel_encoder->base.dev)) { |
| 1739 | struct i2c_adapter *digital_ddc_bus; | 1744 | struct i2c_adapter *digital_ddc_bus; |
| 1740 | 1745 | ||
| 1741 | /* Switch to the analog ddc bus and try that | 1746 | /* Switch to the analog ddc bus and try that |
| 1742 | */ | 1747 | */ |
| 1743 | digital_ddc_bus = intel_output->ddc_bus; | 1748 | digital_ddc_bus = intel_encoder->ddc_bus; |
| 1744 | intel_output->ddc_bus = sdvo_priv->analog_ddc_bus; | 1749 | intel_encoder->ddc_bus = sdvo_priv->analog_ddc_bus; |
| 1745 | 1750 | ||
| 1746 | (void) intel_ddc_get_modes(intel_output); | 1751 | (void) intel_ddc_get_modes(intel_encoder); |
| 1747 | 1752 | ||
| 1748 | intel_output->ddc_bus = digital_ddc_bus; | 1753 | intel_encoder->ddc_bus = digital_ddc_bus; |
| 1749 | } | 1754 | } |
| 1750 | } | 1755 | } |
| 1751 | 1756 | ||
| @@ -1816,7 +1821,7 @@ struct drm_display_mode sdvo_tv_modes[] = { | |||
| 1816 | 1821 | ||
| 1817 | static void intel_sdvo_get_tv_modes(struct drm_connector *connector) | 1822 | static void intel_sdvo_get_tv_modes(struct drm_connector *connector) |
| 1818 | { | 1823 | { |
| 1819 | struct intel_output *output = to_intel_output(connector); | 1824 | struct intel_encoder *output = to_intel_encoder(connector); |
| 1820 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 1825 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; |
| 1821 | struct intel_sdvo_sdtv_resolution_request tv_res; | 1826 | struct intel_sdvo_sdtv_resolution_request tv_res; |
| 1822 | uint32_t reply = 0, format_map = 0; | 1827 | uint32_t reply = 0, format_map = 0; |
| @@ -1858,9 +1863,9 @@ static void intel_sdvo_get_tv_modes(struct drm_connector *connector) | |||
| 1858 | 1863 | ||
| 1859 | static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) | 1864 | static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) |
| 1860 | { | 1865 | { |
| 1861 | struct intel_output *intel_output = to_intel_output(connector); | 1866 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1862 | struct drm_i915_private *dev_priv = connector->dev->dev_private; | 1867 | struct drm_i915_private *dev_priv = connector->dev->dev_private; |
| 1863 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1868 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1864 | struct drm_display_mode *newmode; | 1869 | struct drm_display_mode *newmode; |
| 1865 | 1870 | ||
| 1866 | /* | 1871 | /* |
| @@ -1868,7 +1873,7 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) | |||
| 1868 | * Assume that the preferred modes are | 1873 | * Assume that the preferred modes are |
| 1869 | * arranged in priority order. | 1874 | * arranged in priority order. |
| 1870 | */ | 1875 | */ |
| 1871 | intel_ddc_get_modes(intel_output); | 1876 | intel_ddc_get_modes(intel_encoder); |
| 1872 | if (list_empty(&connector->probed_modes) == false) | 1877 | if (list_empty(&connector->probed_modes) == false) |
| 1873 | goto end; | 1878 | goto end; |
| 1874 | 1879 | ||
| @@ -1897,7 +1902,7 @@ end: | |||
| 1897 | 1902 | ||
| 1898 | static int intel_sdvo_get_modes(struct drm_connector *connector) | 1903 | static int intel_sdvo_get_modes(struct drm_connector *connector) |
| 1899 | { | 1904 | { |
| 1900 | struct intel_output *output = to_intel_output(connector); | 1905 | struct intel_encoder *output = to_intel_encoder(connector); |
| 1901 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 1906 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; |
| 1902 | 1907 | ||
| 1903 | if (sdvo_priv->is_tv) | 1908 | if (sdvo_priv->is_tv) |
| @@ -1915,8 +1920,8 @@ static int intel_sdvo_get_modes(struct drm_connector *connector) | |||
| 1915 | static | 1920 | static |
| 1916 | void intel_sdvo_destroy_enhance_property(struct drm_connector *connector) | 1921 | void intel_sdvo_destroy_enhance_property(struct drm_connector *connector) |
| 1917 | { | 1922 | { |
| 1918 | struct intel_output *intel_output = to_intel_output(connector); | 1923 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1919 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1924 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1920 | struct drm_device *dev = connector->dev; | 1925 | struct drm_device *dev = connector->dev; |
| 1921 | 1926 | ||
| 1922 | if (sdvo_priv->is_tv) { | 1927 | if (sdvo_priv->is_tv) { |
| @@ -1953,13 +1958,13 @@ void intel_sdvo_destroy_enhance_property(struct drm_connector *connector) | |||
| 1953 | 1958 | ||
| 1954 | static void intel_sdvo_destroy(struct drm_connector *connector) | 1959 | static void intel_sdvo_destroy(struct drm_connector *connector) |
| 1955 | { | 1960 | { |
| 1956 | struct intel_output *intel_output = to_intel_output(connector); | 1961 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1957 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1962 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1958 | 1963 | ||
| 1959 | if (intel_output->i2c_bus) | 1964 | if (intel_encoder->i2c_bus) |
| 1960 | intel_i2c_destroy(intel_output->i2c_bus); | 1965 | intel_i2c_destroy(intel_encoder->i2c_bus); |
| 1961 | if (intel_output->ddc_bus) | 1966 | if (intel_encoder->ddc_bus) |
| 1962 | intel_i2c_destroy(intel_output->ddc_bus); | 1967 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 1963 | if (sdvo_priv->analog_ddc_bus) | 1968 | if (sdvo_priv->analog_ddc_bus) |
| 1964 | intel_i2c_destroy(sdvo_priv->analog_ddc_bus); | 1969 | intel_i2c_destroy(sdvo_priv->analog_ddc_bus); |
| 1965 | 1970 | ||
| @@ -1977,7 +1982,7 @@ static void intel_sdvo_destroy(struct drm_connector *connector) | |||
| 1977 | drm_sysfs_connector_remove(connector); | 1982 | drm_sysfs_connector_remove(connector); |
| 1978 | drm_connector_cleanup(connector); | 1983 | drm_connector_cleanup(connector); |
| 1979 | 1984 | ||
| 1980 | kfree(intel_output); | 1985 | kfree(intel_encoder); |
| 1981 | } | 1986 | } |
| 1982 | 1987 | ||
| 1983 | static int | 1988 | static int |
| @@ -1985,9 +1990,9 @@ intel_sdvo_set_property(struct drm_connector *connector, | |||
| 1985 | struct drm_property *property, | 1990 | struct drm_property *property, |
| 1986 | uint64_t val) | 1991 | uint64_t val) |
| 1987 | { | 1992 | { |
| 1988 | struct intel_output *intel_output = to_intel_output(connector); | 1993 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1989 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 1994 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 1990 | struct drm_encoder *encoder = &intel_output->enc; | 1995 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 1991 | struct drm_crtc *crtc = encoder->crtc; | 1996 | struct drm_crtc *crtc = encoder->crtc; |
| 1992 | int ret = 0; | 1997 | int ret = 0; |
| 1993 | bool changed = false; | 1998 | bool changed = false; |
| @@ -2095,8 +2100,8 @@ intel_sdvo_set_property(struct drm_connector *connector, | |||
| 2095 | sdvo_priv->cur_brightness = temp_value; | 2100 | sdvo_priv->cur_brightness = temp_value; |
| 2096 | } | 2101 | } |
| 2097 | if (cmd) { | 2102 | if (cmd) { |
| 2098 | intel_sdvo_write_cmd(intel_output, cmd, &temp_value, 2); | 2103 | intel_sdvo_write_cmd(intel_encoder, cmd, &temp_value, 2); |
| 2099 | status = intel_sdvo_read_response(intel_output, | 2104 | status = intel_sdvo_read_response(intel_encoder, |
| 2100 | NULL, 0); | 2105 | NULL, 0); |
| 2101 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2106 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2102 | DRM_DEBUG_KMS("Incorrect SDVO command \n"); | 2107 | DRM_DEBUG_KMS("Incorrect SDVO command \n"); |
| @@ -2191,7 +2196,7 @@ intel_sdvo_select_ddc_bus(struct intel_sdvo_priv *dev_priv) | |||
| 2191 | } | 2196 | } |
| 2192 | 2197 | ||
| 2193 | static bool | 2198 | static bool |
| 2194 | intel_sdvo_get_digital_encoding_mode(struct intel_output *output) | 2199 | intel_sdvo_get_digital_encoding_mode(struct intel_encoder *output) |
| 2195 | { | 2200 | { |
| 2196 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; | 2201 | struct intel_sdvo_priv *sdvo_priv = output->dev_priv; |
| 2197 | uint8_t status; | 2202 | uint8_t status; |
| @@ -2205,42 +2210,42 @@ intel_sdvo_get_digital_encoding_mode(struct intel_output *output) | |||
| 2205 | return true; | 2210 | return true; |
| 2206 | } | 2211 | } |
| 2207 | 2212 | ||
| 2208 | static struct intel_output * | 2213 | static struct intel_encoder * |
| 2209 | intel_sdvo_chan_to_intel_output(struct intel_i2c_chan *chan) | 2214 | intel_sdvo_chan_to_intel_encoder(struct intel_i2c_chan *chan) |
| 2210 | { | 2215 | { |
| 2211 | struct drm_device *dev = chan->drm_dev; | 2216 | struct drm_device *dev = chan->drm_dev; |
| 2212 | struct drm_connector *connector; | 2217 | struct drm_connector *connector; |
| 2213 | struct intel_output *intel_output = NULL; | 2218 | struct intel_encoder *intel_encoder = NULL; |
| 2214 | 2219 | ||
| 2215 | list_for_each_entry(connector, | 2220 | list_for_each_entry(connector, |
| 2216 | &dev->mode_config.connector_list, head) { | 2221 | &dev->mode_config.connector_list, head) { |
| 2217 | if (to_intel_output(connector)->ddc_bus == &chan->adapter) { | 2222 | if (to_intel_encoder(connector)->ddc_bus == &chan->adapter) { |
| 2218 | intel_output = to_intel_output(connector); | 2223 | intel_encoder = to_intel_encoder(connector); |
| 2219 | break; | 2224 | break; |
| 2220 | } | 2225 | } |
| 2221 | } | 2226 | } |
| 2222 | return intel_output; | 2227 | return intel_encoder; |
| 2223 | } | 2228 | } |
| 2224 | 2229 | ||
| 2225 | static int intel_sdvo_master_xfer(struct i2c_adapter *i2c_adap, | 2230 | static int intel_sdvo_master_xfer(struct i2c_adapter *i2c_adap, |
| 2226 | struct i2c_msg msgs[], int num) | 2231 | struct i2c_msg msgs[], int num) |
| 2227 | { | 2232 | { |
| 2228 | struct intel_output *intel_output; | 2233 | struct intel_encoder *intel_encoder; |
| 2229 | struct intel_sdvo_priv *sdvo_priv; | 2234 | struct intel_sdvo_priv *sdvo_priv; |
| 2230 | struct i2c_algo_bit_data *algo_data; | 2235 | struct i2c_algo_bit_data *algo_data; |
| 2231 | const struct i2c_algorithm *algo; | 2236 | const struct i2c_algorithm *algo; |
| 2232 | 2237 | ||
| 2233 | algo_data = (struct i2c_algo_bit_data *)i2c_adap->algo_data; | 2238 | algo_data = (struct i2c_algo_bit_data *)i2c_adap->algo_data; |
| 2234 | intel_output = | 2239 | intel_encoder = |
| 2235 | intel_sdvo_chan_to_intel_output( | 2240 | intel_sdvo_chan_to_intel_encoder( |
| 2236 | (struct intel_i2c_chan *)(algo_data->data)); | 2241 | (struct intel_i2c_chan *)(algo_data->data)); |
| 2237 | if (intel_output == NULL) | 2242 | if (intel_encoder == NULL) |
| 2238 | return -EINVAL; | 2243 | return -EINVAL; |
| 2239 | 2244 | ||
| 2240 | sdvo_priv = intel_output->dev_priv; | 2245 | sdvo_priv = intel_encoder->dev_priv; |
| 2241 | algo = intel_output->i2c_bus->algo; | 2246 | algo = intel_encoder->i2c_bus->algo; |
| 2242 | 2247 | ||
| 2243 | intel_sdvo_set_control_bus_switch(intel_output, sdvo_priv->ddc_bus); | 2248 | intel_sdvo_set_control_bus_switch(intel_encoder, sdvo_priv->ddc_bus); |
| 2244 | return algo->master_xfer(i2c_adap, msgs, num); | 2249 | return algo->master_xfer(i2c_adap, msgs, num); |
| 2245 | } | 2250 | } |
| 2246 | 2251 | ||
| @@ -2249,12 +2254,12 @@ static struct i2c_algorithm intel_sdvo_i2c_bit_algo = { | |||
| 2249 | }; | 2254 | }; |
| 2250 | 2255 | ||
| 2251 | static u8 | 2256 | static u8 |
| 2252 | intel_sdvo_get_slave_addr(struct drm_device *dev, int output_device) | 2257 | intel_sdvo_get_slave_addr(struct drm_device *dev, int sdvo_reg) |
| 2253 | { | 2258 | { |
| 2254 | struct drm_i915_private *dev_priv = dev->dev_private; | 2259 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 2255 | struct sdvo_device_mapping *my_mapping, *other_mapping; | 2260 | struct sdvo_device_mapping *my_mapping, *other_mapping; |
| 2256 | 2261 | ||
| 2257 | if (output_device == SDVOB) { | 2262 | if (sdvo_reg == SDVOB) { |
| 2258 | my_mapping = &dev_priv->sdvo_mappings[0]; | 2263 | my_mapping = &dev_priv->sdvo_mappings[0]; |
| 2259 | other_mapping = &dev_priv->sdvo_mappings[1]; | 2264 | other_mapping = &dev_priv->sdvo_mappings[1]; |
| 2260 | } else { | 2265 | } else { |
| @@ -2279,7 +2284,7 @@ intel_sdvo_get_slave_addr(struct drm_device *dev, int output_device) | |||
| 2279 | /* No SDVO device info is found for another DVO port, | 2284 | /* No SDVO device info is found for another DVO port, |
| 2280 | * so use mapping assumption we had before BIOS parsing. | 2285 | * so use mapping assumption we had before BIOS parsing. |
| 2281 | */ | 2286 | */ |
| 2282 | if (output_device == SDVOB) | 2287 | if (sdvo_reg == SDVOB) |
| 2283 | return 0x70; | 2288 | return 0x70; |
| 2284 | else | 2289 | else |
| 2285 | return 0x72; | 2290 | return 0x72; |
| @@ -2305,15 +2310,15 @@ static struct dmi_system_id intel_sdvo_bad_tv[] = { | |||
| 2305 | }; | 2310 | }; |
| 2306 | 2311 | ||
| 2307 | static bool | 2312 | static bool |
| 2308 | intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | 2313 | intel_sdvo_output_setup(struct intel_encoder *intel_encoder, uint16_t flags) |
| 2309 | { | 2314 | { |
| 2310 | struct drm_connector *connector = &intel_output->base; | 2315 | struct drm_connector *connector = &intel_encoder->base; |
| 2311 | struct drm_encoder *encoder = &intel_output->enc; | 2316 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 2312 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 2317 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 2313 | bool ret = true, registered = false; | 2318 | bool ret = true, registered = false; |
| 2314 | 2319 | ||
| 2315 | sdvo_priv->is_tv = false; | 2320 | sdvo_priv->is_tv = false; |
| 2316 | intel_output->needs_tv_clock = false; | 2321 | intel_encoder->needs_tv_clock = false; |
| 2317 | sdvo_priv->is_lvds = false; | 2322 | sdvo_priv->is_lvds = false; |
| 2318 | 2323 | ||
| 2319 | if (device_is_registered(&connector->kdev)) { | 2324 | if (device_is_registered(&connector->kdev)) { |
| @@ -2331,16 +2336,16 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2331 | encoder->encoder_type = DRM_MODE_ENCODER_TMDS; | 2336 | encoder->encoder_type = DRM_MODE_ENCODER_TMDS; |
| 2332 | connector->connector_type = DRM_MODE_CONNECTOR_DVID; | 2337 | connector->connector_type = DRM_MODE_CONNECTOR_DVID; |
| 2333 | 2338 | ||
| 2334 | if (intel_sdvo_get_supp_encode(intel_output, | 2339 | if (intel_sdvo_get_supp_encode(intel_encoder, |
| 2335 | &sdvo_priv->encode) && | 2340 | &sdvo_priv->encode) && |
| 2336 | intel_sdvo_get_digital_encoding_mode(intel_output) && | 2341 | intel_sdvo_get_digital_encoding_mode(intel_encoder) && |
| 2337 | sdvo_priv->is_hdmi) { | 2342 | sdvo_priv->is_hdmi) { |
| 2338 | /* enable hdmi encoding mode if supported */ | 2343 | /* enable hdmi encoding mode if supported */ |
| 2339 | intel_sdvo_set_encode(intel_output, SDVO_ENCODE_HDMI); | 2344 | intel_sdvo_set_encode(intel_encoder, SDVO_ENCODE_HDMI); |
| 2340 | intel_sdvo_set_colorimetry(intel_output, | 2345 | intel_sdvo_set_colorimetry(intel_encoder, |
| 2341 | SDVO_COLORIMETRY_RGB256); | 2346 | SDVO_COLORIMETRY_RGB256); |
| 2342 | connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; | 2347 | connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; |
| 2343 | intel_output->clone_mask = | 2348 | intel_encoder->clone_mask = |
| 2344 | (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | | 2349 | (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | |
| 2345 | (1 << INTEL_ANALOG_CLONE_BIT); | 2350 | (1 << INTEL_ANALOG_CLONE_BIT); |
| 2346 | } | 2351 | } |
| @@ -2351,21 +2356,21 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2351 | encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; | 2356 | encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; |
| 2352 | connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; | 2357 | connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; |
| 2353 | sdvo_priv->is_tv = true; | 2358 | sdvo_priv->is_tv = true; |
| 2354 | intel_output->needs_tv_clock = true; | 2359 | intel_encoder->needs_tv_clock = true; |
| 2355 | intel_output->clone_mask = 1 << INTEL_SDVO_TV_CLONE_BIT; | 2360 | intel_encoder->clone_mask = 1 << INTEL_SDVO_TV_CLONE_BIT; |
| 2356 | } else if (flags & SDVO_OUTPUT_RGB0) { | 2361 | } else if (flags & SDVO_OUTPUT_RGB0) { |
| 2357 | 2362 | ||
| 2358 | sdvo_priv->controlled_output = SDVO_OUTPUT_RGB0; | 2363 | sdvo_priv->controlled_output = SDVO_OUTPUT_RGB0; |
| 2359 | encoder->encoder_type = DRM_MODE_ENCODER_DAC; | 2364 | encoder->encoder_type = DRM_MODE_ENCODER_DAC; |
| 2360 | connector->connector_type = DRM_MODE_CONNECTOR_VGA; | 2365 | connector->connector_type = DRM_MODE_CONNECTOR_VGA; |
| 2361 | intel_output->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | | 2366 | intel_encoder->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | |
| 2362 | (1 << INTEL_ANALOG_CLONE_BIT); | 2367 | (1 << INTEL_ANALOG_CLONE_BIT); |
| 2363 | } else if (flags & SDVO_OUTPUT_RGB1) { | 2368 | } else if (flags & SDVO_OUTPUT_RGB1) { |
| 2364 | 2369 | ||
| 2365 | sdvo_priv->controlled_output = SDVO_OUTPUT_RGB1; | 2370 | sdvo_priv->controlled_output = SDVO_OUTPUT_RGB1; |
| 2366 | encoder->encoder_type = DRM_MODE_ENCODER_DAC; | 2371 | encoder->encoder_type = DRM_MODE_ENCODER_DAC; |
| 2367 | connector->connector_type = DRM_MODE_CONNECTOR_VGA; | 2372 | connector->connector_type = DRM_MODE_CONNECTOR_VGA; |
| 2368 | intel_output->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | | 2373 | intel_encoder->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | |
| 2369 | (1 << INTEL_ANALOG_CLONE_BIT); | 2374 | (1 << INTEL_ANALOG_CLONE_BIT); |
| 2370 | } else if (flags & SDVO_OUTPUT_CVBS0) { | 2375 | } else if (flags & SDVO_OUTPUT_CVBS0) { |
| 2371 | 2376 | ||
| @@ -2373,15 +2378,15 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2373 | encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; | 2378 | encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; |
| 2374 | connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; | 2379 | connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; |
| 2375 | sdvo_priv->is_tv = true; | 2380 | sdvo_priv->is_tv = true; |
| 2376 | intel_output->needs_tv_clock = true; | 2381 | intel_encoder->needs_tv_clock = true; |
| 2377 | intel_output->clone_mask = 1 << INTEL_SDVO_TV_CLONE_BIT; | 2382 | intel_encoder->clone_mask = 1 << INTEL_SDVO_TV_CLONE_BIT; |
| 2378 | } else if (flags & SDVO_OUTPUT_LVDS0) { | 2383 | } else if (flags & SDVO_OUTPUT_LVDS0) { |
| 2379 | 2384 | ||
| 2380 | sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS0; | 2385 | sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS0; |
| 2381 | encoder->encoder_type = DRM_MODE_ENCODER_LVDS; | 2386 | encoder->encoder_type = DRM_MODE_ENCODER_LVDS; |
| 2382 | connector->connector_type = DRM_MODE_CONNECTOR_LVDS; | 2387 | connector->connector_type = DRM_MODE_CONNECTOR_LVDS; |
| 2383 | sdvo_priv->is_lvds = true; | 2388 | sdvo_priv->is_lvds = true; |
| 2384 | intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT) | | 2389 | intel_encoder->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT) | |
| 2385 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); | 2390 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); |
| 2386 | } else if (flags & SDVO_OUTPUT_LVDS1) { | 2391 | } else if (flags & SDVO_OUTPUT_LVDS1) { |
| 2387 | 2392 | ||
| @@ -2389,7 +2394,7 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2389 | encoder->encoder_type = DRM_MODE_ENCODER_LVDS; | 2394 | encoder->encoder_type = DRM_MODE_ENCODER_LVDS; |
| 2390 | connector->connector_type = DRM_MODE_CONNECTOR_LVDS; | 2395 | connector->connector_type = DRM_MODE_CONNECTOR_LVDS; |
| 2391 | sdvo_priv->is_lvds = true; | 2396 | sdvo_priv->is_lvds = true; |
| 2392 | intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT) | | 2397 | intel_encoder->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT) | |
| 2393 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); | 2398 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); |
| 2394 | } else { | 2399 | } else { |
| 2395 | 2400 | ||
| @@ -2402,7 +2407,7 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2402 | bytes[0], bytes[1]); | 2407 | bytes[0], bytes[1]); |
| 2403 | ret = false; | 2408 | ret = false; |
| 2404 | } | 2409 | } |
| 2405 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 2410 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 2406 | 2411 | ||
| 2407 | if (ret && registered) | 2412 | if (ret && registered) |
| 2408 | ret = drm_sysfs_connector_add(connector) == 0 ? true : false; | 2413 | ret = drm_sysfs_connector_add(connector) == 0 ? true : false; |
| @@ -2414,18 +2419,18 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) | |||
| 2414 | 2419 | ||
| 2415 | static void intel_sdvo_tv_create_property(struct drm_connector *connector) | 2420 | static void intel_sdvo_tv_create_property(struct drm_connector *connector) |
| 2416 | { | 2421 | { |
| 2417 | struct intel_output *intel_output = to_intel_output(connector); | 2422 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 2418 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 2423 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 2419 | struct intel_sdvo_tv_format format; | 2424 | struct intel_sdvo_tv_format format; |
| 2420 | uint32_t format_map, i; | 2425 | uint32_t format_map, i; |
| 2421 | uint8_t status; | 2426 | uint8_t status; |
| 2422 | 2427 | ||
| 2423 | intel_sdvo_set_target_output(intel_output, | 2428 | intel_sdvo_set_target_output(intel_encoder, |
| 2424 | sdvo_priv->controlled_output); | 2429 | sdvo_priv->controlled_output); |
| 2425 | 2430 | ||
| 2426 | intel_sdvo_write_cmd(intel_output, | 2431 | intel_sdvo_write_cmd(intel_encoder, |
| 2427 | SDVO_CMD_GET_SUPPORTED_TV_FORMATS, NULL, 0); | 2432 | SDVO_CMD_GET_SUPPORTED_TV_FORMATS, NULL, 0); |
| 2428 | status = intel_sdvo_read_response(intel_output, | 2433 | status = intel_sdvo_read_response(intel_encoder, |
| 2429 | &format, sizeof(format)); | 2434 | &format, sizeof(format)); |
| 2430 | if (status != SDVO_CMD_STATUS_SUCCESS) | 2435 | if (status != SDVO_CMD_STATUS_SUCCESS) |
| 2431 | return; | 2436 | return; |
| @@ -2463,16 +2468,16 @@ static void intel_sdvo_tv_create_property(struct drm_connector *connector) | |||
| 2463 | 2468 | ||
| 2464 | static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | 2469 | static void intel_sdvo_create_enhance_property(struct drm_connector *connector) |
| 2465 | { | 2470 | { |
| 2466 | struct intel_output *intel_output = to_intel_output(connector); | 2471 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 2467 | struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 2472 | struct intel_sdvo_priv *sdvo_priv = intel_encoder->dev_priv; |
| 2468 | struct intel_sdvo_enhancements_reply sdvo_data; | 2473 | struct intel_sdvo_enhancements_reply sdvo_data; |
| 2469 | struct drm_device *dev = connector->dev; | 2474 | struct drm_device *dev = connector->dev; |
| 2470 | uint8_t status; | 2475 | uint8_t status; |
| 2471 | uint16_t response, data_value[2]; | 2476 | uint16_t response, data_value[2]; |
| 2472 | 2477 | ||
| 2473 | intel_sdvo_write_cmd(intel_output, SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, | 2478 | intel_sdvo_write_cmd(intel_encoder, SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, |
| 2474 | NULL, 0); | 2479 | NULL, 0); |
| 2475 | status = intel_sdvo_read_response(intel_output, &sdvo_data, | 2480 | status = intel_sdvo_read_response(intel_encoder, &sdvo_data, |
| 2476 | sizeof(sdvo_data)); | 2481 | sizeof(sdvo_data)); |
| 2477 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2482 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2478 | DRM_DEBUG_KMS(" incorrect response is returned\n"); | 2483 | DRM_DEBUG_KMS(" incorrect response is returned\n"); |
| @@ -2488,18 +2493,18 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2488 | * property | 2493 | * property |
| 2489 | */ | 2494 | */ |
| 2490 | if (sdvo_data.overscan_h) { | 2495 | if (sdvo_data.overscan_h) { |
| 2491 | intel_sdvo_write_cmd(intel_output, | 2496 | intel_sdvo_write_cmd(intel_encoder, |
| 2492 | SDVO_CMD_GET_MAX_OVERSCAN_H, NULL, 0); | 2497 | SDVO_CMD_GET_MAX_OVERSCAN_H, NULL, 0); |
| 2493 | status = intel_sdvo_read_response(intel_output, | 2498 | status = intel_sdvo_read_response(intel_encoder, |
| 2494 | &data_value, 4); | 2499 | &data_value, 4); |
| 2495 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2500 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2496 | DRM_DEBUG_KMS("Incorrect SDVO max " | 2501 | DRM_DEBUG_KMS("Incorrect SDVO max " |
| 2497 | "h_overscan\n"); | 2502 | "h_overscan\n"); |
| 2498 | return; | 2503 | return; |
| 2499 | } | 2504 | } |
| 2500 | intel_sdvo_write_cmd(intel_output, | 2505 | intel_sdvo_write_cmd(intel_encoder, |
| 2501 | SDVO_CMD_GET_OVERSCAN_H, NULL, 0); | 2506 | SDVO_CMD_GET_OVERSCAN_H, NULL, 0); |
| 2502 | status = intel_sdvo_read_response(intel_output, | 2507 | status = intel_sdvo_read_response(intel_encoder, |
| 2503 | &response, 2); | 2508 | &response, 2); |
| 2504 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2509 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2505 | DRM_DEBUG_KMS("Incorrect SDVO h_overscan\n"); | 2510 | DRM_DEBUG_KMS("Incorrect SDVO h_overscan\n"); |
| @@ -2529,18 +2534,18 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2529 | data_value[0], data_value[1], response); | 2534 | data_value[0], data_value[1], response); |
| 2530 | } | 2535 | } |
| 2531 | if (sdvo_data.overscan_v) { | 2536 | if (sdvo_data.overscan_v) { |
| 2532 | intel_sdvo_write_cmd(intel_output, | 2537 | intel_sdvo_write_cmd(intel_encoder, |
| 2533 | SDVO_CMD_GET_MAX_OVERSCAN_V, NULL, 0); | 2538 | SDVO_CMD_GET_MAX_OVERSCAN_V, NULL, 0); |
| 2534 | status = intel_sdvo_read_response(intel_output, | 2539 | status = intel_sdvo_read_response(intel_encoder, |
| 2535 | &data_value, 4); | 2540 | &data_value, 4); |
| 2536 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2541 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2537 | DRM_DEBUG_KMS("Incorrect SDVO max " | 2542 | DRM_DEBUG_KMS("Incorrect SDVO max " |
| 2538 | "v_overscan\n"); | 2543 | "v_overscan\n"); |
| 2539 | return; | 2544 | return; |
| 2540 | } | 2545 | } |
| 2541 | intel_sdvo_write_cmd(intel_output, | 2546 | intel_sdvo_write_cmd(intel_encoder, |
| 2542 | SDVO_CMD_GET_OVERSCAN_V, NULL, 0); | 2547 | SDVO_CMD_GET_OVERSCAN_V, NULL, 0); |
| 2543 | status = intel_sdvo_read_response(intel_output, | 2548 | status = intel_sdvo_read_response(intel_encoder, |
| 2544 | &response, 2); | 2549 | &response, 2); |
| 2545 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2550 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2546 | DRM_DEBUG_KMS("Incorrect SDVO v_overscan\n"); | 2551 | DRM_DEBUG_KMS("Incorrect SDVO v_overscan\n"); |
| @@ -2570,17 +2575,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2570 | data_value[0], data_value[1], response); | 2575 | data_value[0], data_value[1], response); |
| 2571 | } | 2576 | } |
| 2572 | if (sdvo_data.position_h) { | 2577 | if (sdvo_data.position_h) { |
| 2573 | intel_sdvo_write_cmd(intel_output, | 2578 | intel_sdvo_write_cmd(intel_encoder, |
| 2574 | SDVO_CMD_GET_MAX_POSITION_H, NULL, 0); | 2579 | SDVO_CMD_GET_MAX_POSITION_H, NULL, 0); |
| 2575 | status = intel_sdvo_read_response(intel_output, | 2580 | status = intel_sdvo_read_response(intel_encoder, |
| 2576 | &data_value, 4); | 2581 | &data_value, 4); |
| 2577 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2582 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2578 | DRM_DEBUG_KMS("Incorrect SDVO Max h_pos\n"); | 2583 | DRM_DEBUG_KMS("Incorrect SDVO Max h_pos\n"); |
| 2579 | return; | 2584 | return; |
| 2580 | } | 2585 | } |
| 2581 | intel_sdvo_write_cmd(intel_output, | 2586 | intel_sdvo_write_cmd(intel_encoder, |
| 2582 | SDVO_CMD_GET_POSITION_H, NULL, 0); | 2587 | SDVO_CMD_GET_POSITION_H, NULL, 0); |
| 2583 | status = intel_sdvo_read_response(intel_output, | 2588 | status = intel_sdvo_read_response(intel_encoder, |
| 2584 | &response, 2); | 2589 | &response, 2); |
| 2585 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2590 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2586 | DRM_DEBUG_KMS("Incorrect SDVO get h_postion\n"); | 2591 | DRM_DEBUG_KMS("Incorrect SDVO get h_postion\n"); |
| @@ -2601,17 +2606,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2601 | data_value[0], data_value[1], response); | 2606 | data_value[0], data_value[1], response); |
| 2602 | } | 2607 | } |
| 2603 | if (sdvo_data.position_v) { | 2608 | if (sdvo_data.position_v) { |
| 2604 | intel_sdvo_write_cmd(intel_output, | 2609 | intel_sdvo_write_cmd(intel_encoder, |
| 2605 | SDVO_CMD_GET_MAX_POSITION_V, NULL, 0); | 2610 | SDVO_CMD_GET_MAX_POSITION_V, NULL, 0); |
| 2606 | status = intel_sdvo_read_response(intel_output, | 2611 | status = intel_sdvo_read_response(intel_encoder, |
| 2607 | &data_value, 4); | 2612 | &data_value, 4); |
| 2608 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2613 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2609 | DRM_DEBUG_KMS("Incorrect SDVO Max v_pos\n"); | 2614 | DRM_DEBUG_KMS("Incorrect SDVO Max v_pos\n"); |
| 2610 | return; | 2615 | return; |
| 2611 | } | 2616 | } |
| 2612 | intel_sdvo_write_cmd(intel_output, | 2617 | intel_sdvo_write_cmd(intel_encoder, |
| 2613 | SDVO_CMD_GET_POSITION_V, NULL, 0); | 2618 | SDVO_CMD_GET_POSITION_V, NULL, 0); |
| 2614 | status = intel_sdvo_read_response(intel_output, | 2619 | status = intel_sdvo_read_response(intel_encoder, |
| 2615 | &response, 2); | 2620 | &response, 2); |
| 2616 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2621 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2617 | DRM_DEBUG_KMS("Incorrect SDVO get v_postion\n"); | 2622 | DRM_DEBUG_KMS("Incorrect SDVO get v_postion\n"); |
| @@ -2634,17 +2639,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2634 | } | 2639 | } |
| 2635 | if (sdvo_priv->is_tv) { | 2640 | if (sdvo_priv->is_tv) { |
| 2636 | if (sdvo_data.saturation) { | 2641 | if (sdvo_data.saturation) { |
| 2637 | intel_sdvo_write_cmd(intel_output, | 2642 | intel_sdvo_write_cmd(intel_encoder, |
| 2638 | SDVO_CMD_GET_MAX_SATURATION, NULL, 0); | 2643 | SDVO_CMD_GET_MAX_SATURATION, NULL, 0); |
| 2639 | status = intel_sdvo_read_response(intel_output, | 2644 | status = intel_sdvo_read_response(intel_encoder, |
| 2640 | &data_value, 4); | 2645 | &data_value, 4); |
| 2641 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2646 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2642 | DRM_DEBUG_KMS("Incorrect SDVO Max sat\n"); | 2647 | DRM_DEBUG_KMS("Incorrect SDVO Max sat\n"); |
| 2643 | return; | 2648 | return; |
| 2644 | } | 2649 | } |
| 2645 | intel_sdvo_write_cmd(intel_output, | 2650 | intel_sdvo_write_cmd(intel_encoder, |
| 2646 | SDVO_CMD_GET_SATURATION, NULL, 0); | 2651 | SDVO_CMD_GET_SATURATION, NULL, 0); |
| 2647 | status = intel_sdvo_read_response(intel_output, | 2652 | status = intel_sdvo_read_response(intel_encoder, |
| 2648 | &response, 2); | 2653 | &response, 2); |
| 2649 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2654 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2650 | DRM_DEBUG_KMS("Incorrect SDVO get sat\n"); | 2655 | DRM_DEBUG_KMS("Incorrect SDVO get sat\n"); |
| @@ -2666,17 +2671,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2666 | data_value[0], data_value[1], response); | 2671 | data_value[0], data_value[1], response); |
| 2667 | } | 2672 | } |
| 2668 | if (sdvo_data.contrast) { | 2673 | if (sdvo_data.contrast) { |
| 2669 | intel_sdvo_write_cmd(intel_output, | 2674 | intel_sdvo_write_cmd(intel_encoder, |
| 2670 | SDVO_CMD_GET_MAX_CONTRAST, NULL, 0); | 2675 | SDVO_CMD_GET_MAX_CONTRAST, NULL, 0); |
| 2671 | status = intel_sdvo_read_response(intel_output, | 2676 | status = intel_sdvo_read_response(intel_encoder, |
| 2672 | &data_value, 4); | 2677 | &data_value, 4); |
| 2673 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2678 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2674 | DRM_DEBUG_KMS("Incorrect SDVO Max contrast\n"); | 2679 | DRM_DEBUG_KMS("Incorrect SDVO Max contrast\n"); |
| 2675 | return; | 2680 | return; |
| 2676 | } | 2681 | } |
| 2677 | intel_sdvo_write_cmd(intel_output, | 2682 | intel_sdvo_write_cmd(intel_encoder, |
| 2678 | SDVO_CMD_GET_CONTRAST, NULL, 0); | 2683 | SDVO_CMD_GET_CONTRAST, NULL, 0); |
| 2679 | status = intel_sdvo_read_response(intel_output, | 2684 | status = intel_sdvo_read_response(intel_encoder, |
| 2680 | &response, 2); | 2685 | &response, 2); |
| 2681 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2686 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2682 | DRM_DEBUG_KMS("Incorrect SDVO get contrast\n"); | 2687 | DRM_DEBUG_KMS("Incorrect SDVO get contrast\n"); |
| @@ -2697,17 +2702,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2697 | data_value[0], data_value[1], response); | 2702 | data_value[0], data_value[1], response); |
| 2698 | } | 2703 | } |
| 2699 | if (sdvo_data.hue) { | 2704 | if (sdvo_data.hue) { |
| 2700 | intel_sdvo_write_cmd(intel_output, | 2705 | intel_sdvo_write_cmd(intel_encoder, |
| 2701 | SDVO_CMD_GET_MAX_HUE, NULL, 0); | 2706 | SDVO_CMD_GET_MAX_HUE, NULL, 0); |
| 2702 | status = intel_sdvo_read_response(intel_output, | 2707 | status = intel_sdvo_read_response(intel_encoder, |
| 2703 | &data_value, 4); | 2708 | &data_value, 4); |
| 2704 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2709 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2705 | DRM_DEBUG_KMS("Incorrect SDVO Max hue\n"); | 2710 | DRM_DEBUG_KMS("Incorrect SDVO Max hue\n"); |
| 2706 | return; | 2711 | return; |
| 2707 | } | 2712 | } |
| 2708 | intel_sdvo_write_cmd(intel_output, | 2713 | intel_sdvo_write_cmd(intel_encoder, |
| 2709 | SDVO_CMD_GET_HUE, NULL, 0); | 2714 | SDVO_CMD_GET_HUE, NULL, 0); |
| 2710 | status = intel_sdvo_read_response(intel_output, | 2715 | status = intel_sdvo_read_response(intel_encoder, |
| 2711 | &response, 2); | 2716 | &response, 2); |
| 2712 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2717 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2713 | DRM_DEBUG_KMS("Incorrect SDVO get hue\n"); | 2718 | DRM_DEBUG_KMS("Incorrect SDVO get hue\n"); |
| @@ -2730,17 +2735,17 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2730 | } | 2735 | } |
| 2731 | if (sdvo_priv->is_tv || sdvo_priv->is_lvds) { | 2736 | if (sdvo_priv->is_tv || sdvo_priv->is_lvds) { |
| 2732 | if (sdvo_data.brightness) { | 2737 | if (sdvo_data.brightness) { |
| 2733 | intel_sdvo_write_cmd(intel_output, | 2738 | intel_sdvo_write_cmd(intel_encoder, |
| 2734 | SDVO_CMD_GET_MAX_BRIGHTNESS, NULL, 0); | 2739 | SDVO_CMD_GET_MAX_BRIGHTNESS, NULL, 0); |
| 2735 | status = intel_sdvo_read_response(intel_output, | 2740 | status = intel_sdvo_read_response(intel_encoder, |
| 2736 | &data_value, 4); | 2741 | &data_value, 4); |
| 2737 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2742 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2738 | DRM_DEBUG_KMS("Incorrect SDVO Max bright\n"); | 2743 | DRM_DEBUG_KMS("Incorrect SDVO Max bright\n"); |
| 2739 | return; | 2744 | return; |
| 2740 | } | 2745 | } |
| 2741 | intel_sdvo_write_cmd(intel_output, | 2746 | intel_sdvo_write_cmd(intel_encoder, |
| 2742 | SDVO_CMD_GET_BRIGHTNESS, NULL, 0); | 2747 | SDVO_CMD_GET_BRIGHTNESS, NULL, 0); |
| 2743 | status = intel_sdvo_read_response(intel_output, | 2748 | status = intel_sdvo_read_response(intel_encoder, |
| 2744 | &response, 2); | 2749 | &response, 2); |
| 2745 | if (status != SDVO_CMD_STATUS_SUCCESS) { | 2750 | if (status != SDVO_CMD_STATUS_SUCCESS) { |
| 2746 | DRM_DEBUG_KMS("Incorrect SDVO get brigh\n"); | 2751 | DRM_DEBUG_KMS("Incorrect SDVO get brigh\n"); |
| @@ -2765,81 +2770,81 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector) | |||
| 2765 | return; | 2770 | return; |
| 2766 | } | 2771 | } |
| 2767 | 2772 | ||
| 2768 | bool intel_sdvo_init(struct drm_device *dev, int output_device) | 2773 | bool intel_sdvo_init(struct drm_device *dev, int sdvo_reg) |
| 2769 | { | 2774 | { |
| 2770 | struct drm_i915_private *dev_priv = dev->dev_private; | 2775 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 2771 | struct drm_connector *connector; | 2776 | struct drm_connector *connector; |
| 2772 | struct intel_output *intel_output; | 2777 | struct intel_encoder *intel_encoder; |
| 2773 | struct intel_sdvo_priv *sdvo_priv; | 2778 | struct intel_sdvo_priv *sdvo_priv; |
| 2774 | 2779 | ||
| 2775 | u8 ch[0x40]; | 2780 | u8 ch[0x40]; |
| 2776 | int i; | 2781 | int i; |
| 2777 | 2782 | ||
| 2778 | intel_output = kcalloc(sizeof(struct intel_output)+sizeof(struct intel_sdvo_priv), 1, GFP_KERNEL); | 2783 | intel_encoder = kcalloc(sizeof(struct intel_encoder)+sizeof(struct intel_sdvo_priv), 1, GFP_KERNEL); |
| 2779 | if (!intel_output) { | 2784 | if (!intel_encoder) { |
| 2780 | return false; | 2785 | return false; |
| 2781 | } | 2786 | } |
| 2782 | 2787 | ||
| 2783 | sdvo_priv = (struct intel_sdvo_priv *)(intel_output + 1); | 2788 | sdvo_priv = (struct intel_sdvo_priv *)(intel_encoder + 1); |
| 2784 | sdvo_priv->output_device = output_device; | 2789 | sdvo_priv->sdvo_reg = sdvo_reg; |
| 2785 | 2790 | ||
| 2786 | intel_output->dev_priv = sdvo_priv; | 2791 | intel_encoder->dev_priv = sdvo_priv; |
| 2787 | intel_output->type = INTEL_OUTPUT_SDVO; | 2792 | intel_encoder->type = INTEL_OUTPUT_SDVO; |
| 2788 | 2793 | ||
| 2789 | /* setup the DDC bus. */ | 2794 | /* setup the DDC bus. */ |
| 2790 | if (output_device == SDVOB) | 2795 | if (sdvo_reg == SDVOB) |
| 2791 | intel_output->i2c_bus = intel_i2c_create(dev, GPIOE, "SDVOCTRL_E for SDVOB"); | 2796 | intel_encoder->i2c_bus = intel_i2c_create(dev, GPIOE, "SDVOCTRL_E for SDVOB"); |
| 2792 | else | 2797 | else |
| 2793 | intel_output->i2c_bus = intel_i2c_create(dev, GPIOE, "SDVOCTRL_E for SDVOC"); | 2798 | intel_encoder->i2c_bus = intel_i2c_create(dev, GPIOE, "SDVOCTRL_E for SDVOC"); |
| 2794 | 2799 | ||
| 2795 | if (!intel_output->i2c_bus) | 2800 | if (!intel_encoder->i2c_bus) |
| 2796 | goto err_inteloutput; | 2801 | goto err_inteloutput; |
| 2797 | 2802 | ||
| 2798 | sdvo_priv->slave_addr = intel_sdvo_get_slave_addr(dev, output_device); | 2803 | sdvo_priv->slave_addr = intel_sdvo_get_slave_addr(dev, sdvo_reg); |
| 2799 | 2804 | ||
| 2800 | /* Save the bit-banging i2c functionality for use by the DDC wrapper */ | 2805 | /* Save the bit-banging i2c functionality for use by the DDC wrapper */ |
| 2801 | intel_sdvo_i2c_bit_algo.functionality = intel_output->i2c_bus->algo->functionality; | 2806 | intel_sdvo_i2c_bit_algo.functionality = intel_encoder->i2c_bus->algo->functionality; |
| 2802 | 2807 | ||
| 2803 | /* Read the regs to test if we can talk to the device */ | 2808 | /* Read the regs to test if we can talk to the device */ |
| 2804 | for (i = 0; i < 0x40; i++) { | 2809 | for (i = 0; i < 0x40; i++) { |
| 2805 | if (!intel_sdvo_read_byte(intel_output, i, &ch[i])) { | 2810 | if (!intel_sdvo_read_byte(intel_encoder, i, &ch[i])) { |
| 2806 | DRM_DEBUG_KMS("No SDVO device found on SDVO%c\n", | 2811 | DRM_DEBUG_KMS("No SDVO device found on SDVO%c\n", |
| 2807 | output_device == SDVOB ? 'B' : 'C'); | 2812 | sdvo_reg == SDVOB ? 'B' : 'C'); |
| 2808 | goto err_i2c; | 2813 | goto err_i2c; |
| 2809 | } | 2814 | } |
| 2810 | } | 2815 | } |
| 2811 | 2816 | ||
| 2812 | /* setup the DDC bus. */ | 2817 | /* setup the DDC bus. */ |
| 2813 | if (output_device == SDVOB) { | 2818 | if (sdvo_reg == SDVOB) { |
| 2814 | intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOB DDC BUS"); | 2819 | intel_encoder->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOB DDC BUS"); |
| 2815 | sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, | 2820 | sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, |
| 2816 | "SDVOB/VGA DDC BUS"); | 2821 | "SDVOB/VGA DDC BUS"); |
| 2817 | dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; | 2822 | dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; |
| 2818 | } else { | 2823 | } else { |
| 2819 | intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOC DDC BUS"); | 2824 | intel_encoder->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOC DDC BUS"); |
| 2820 | sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, | 2825 | sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, |
| 2821 | "SDVOC/VGA DDC BUS"); | 2826 | "SDVOC/VGA DDC BUS"); |
| 2822 | dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; | 2827 | dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; |
| 2823 | } | 2828 | } |
| 2824 | 2829 | ||
| 2825 | if (intel_output->ddc_bus == NULL) | 2830 | if (intel_encoder->ddc_bus == NULL) |
| 2826 | goto err_i2c; | 2831 | goto err_i2c; |
| 2827 | 2832 | ||
| 2828 | /* Wrap with our custom algo which switches to DDC mode */ | 2833 | /* Wrap with our custom algo which switches to DDC mode */ |
| 2829 | intel_output->ddc_bus->algo = &intel_sdvo_i2c_bit_algo; | 2834 | intel_encoder->ddc_bus->algo = &intel_sdvo_i2c_bit_algo; |
| 2830 | 2835 | ||
| 2831 | /* In default case sdvo lvds is false */ | 2836 | /* In default case sdvo lvds is false */ |
| 2832 | intel_sdvo_get_capabilities(intel_output, &sdvo_priv->caps); | 2837 | intel_sdvo_get_capabilities(intel_encoder, &sdvo_priv->caps); |
| 2833 | 2838 | ||
| 2834 | if (intel_sdvo_output_setup(intel_output, | 2839 | if (intel_sdvo_output_setup(intel_encoder, |
| 2835 | sdvo_priv->caps.output_flags) != true) { | 2840 | sdvo_priv->caps.output_flags) != true) { |
| 2836 | DRM_DEBUG_KMS("SDVO output failed to setup on SDVO%c\n", | 2841 | DRM_DEBUG_KMS("SDVO output failed to setup on SDVO%c\n", |
| 2837 | output_device == SDVOB ? 'B' : 'C'); | 2842 | sdvo_reg == SDVOB ? 'B' : 'C'); |
| 2838 | goto err_i2c; | 2843 | goto err_i2c; |
| 2839 | } | 2844 | } |
| 2840 | 2845 | ||
| 2841 | 2846 | ||
| 2842 | connector = &intel_output->base; | 2847 | connector = &intel_encoder->base; |
| 2843 | drm_connector_init(dev, connector, &intel_sdvo_connector_funcs, | 2848 | drm_connector_init(dev, connector, &intel_sdvo_connector_funcs, |
| 2844 | connector->connector_type); | 2849 | connector->connector_type); |
| 2845 | 2850 | ||
| @@ -2848,12 +2853,12 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device) | |||
| 2848 | connector->doublescan_allowed = 0; | 2853 | connector->doublescan_allowed = 0; |
| 2849 | connector->display_info.subpixel_order = SubPixelHorizontalRGB; | 2854 | connector->display_info.subpixel_order = SubPixelHorizontalRGB; |
| 2850 | 2855 | ||
| 2851 | drm_encoder_init(dev, &intel_output->enc, | 2856 | drm_encoder_init(dev, &intel_encoder->enc, |
| 2852 | &intel_sdvo_enc_funcs, intel_output->enc.encoder_type); | 2857 | &intel_sdvo_enc_funcs, intel_encoder->enc.encoder_type); |
| 2853 | 2858 | ||
| 2854 | drm_encoder_helper_add(&intel_output->enc, &intel_sdvo_helper_funcs); | 2859 | drm_encoder_helper_add(&intel_encoder->enc, &intel_sdvo_helper_funcs); |
| 2855 | 2860 | ||
| 2856 | drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc); | 2861 | drm_mode_connector_attach_encoder(&intel_encoder->base, &intel_encoder->enc); |
| 2857 | if (sdvo_priv->is_tv) | 2862 | if (sdvo_priv->is_tv) |
| 2858 | intel_sdvo_tv_create_property(connector); | 2863 | intel_sdvo_tv_create_property(connector); |
| 2859 | 2864 | ||
| @@ -2865,9 +2870,9 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device) | |||
| 2865 | intel_sdvo_select_ddc_bus(sdvo_priv); | 2870 | intel_sdvo_select_ddc_bus(sdvo_priv); |
| 2866 | 2871 | ||
| 2867 | /* Set the input timing to the screen. Assume always input 0. */ | 2872 | /* Set the input timing to the screen. Assume always input 0. */ |
| 2868 | intel_sdvo_set_target_input(intel_output, true, false); | 2873 | intel_sdvo_set_target_input(intel_encoder, true, false); |
| 2869 | 2874 | ||
| 2870 | intel_sdvo_get_input_pixel_clock_range(intel_output, | 2875 | intel_sdvo_get_input_pixel_clock_range(intel_encoder, |
| 2871 | &sdvo_priv->pixel_clock_min, | 2876 | &sdvo_priv->pixel_clock_min, |
| 2872 | &sdvo_priv->pixel_clock_max); | 2877 | &sdvo_priv->pixel_clock_max); |
| 2873 | 2878 | ||
| @@ -2894,12 +2899,12 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device) | |||
| 2894 | err_i2c: | 2899 | err_i2c: |
| 2895 | if (sdvo_priv->analog_ddc_bus != NULL) | 2900 | if (sdvo_priv->analog_ddc_bus != NULL) |
| 2896 | intel_i2c_destroy(sdvo_priv->analog_ddc_bus); | 2901 | intel_i2c_destroy(sdvo_priv->analog_ddc_bus); |
| 2897 | if (intel_output->ddc_bus != NULL) | 2902 | if (intel_encoder->ddc_bus != NULL) |
| 2898 | intel_i2c_destroy(intel_output->ddc_bus); | 2903 | intel_i2c_destroy(intel_encoder->ddc_bus); |
| 2899 | if (intel_output->i2c_bus != NULL) | 2904 | if (intel_encoder->i2c_bus != NULL) |
| 2900 | intel_i2c_destroy(intel_output->i2c_bus); | 2905 | intel_i2c_destroy(intel_encoder->i2c_bus); |
| 2901 | err_inteloutput: | 2906 | err_inteloutput: |
| 2902 | kfree(intel_output); | 2907 | kfree(intel_encoder); |
| 2903 | 2908 | ||
| 2904 | return false; | 2909 | return false; |
| 2905 | } | 2910 | } |
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index 552ec110b741..d7d39b2327df 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c | |||
| @@ -921,8 +921,8 @@ intel_tv_save(struct drm_connector *connector) | |||
| 921 | { | 921 | { |
| 922 | struct drm_device *dev = connector->dev; | 922 | struct drm_device *dev = connector->dev; |
| 923 | struct drm_i915_private *dev_priv = dev->dev_private; | 923 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 924 | struct intel_output *intel_output = to_intel_output(connector); | 924 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 925 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 925 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 926 | int i; | 926 | int i; |
| 927 | 927 | ||
| 928 | tv_priv->save_TV_H_CTL_1 = I915_READ(TV_H_CTL_1); | 928 | tv_priv->save_TV_H_CTL_1 = I915_READ(TV_H_CTL_1); |
| @@ -971,8 +971,8 @@ intel_tv_restore(struct drm_connector *connector) | |||
| 971 | { | 971 | { |
| 972 | struct drm_device *dev = connector->dev; | 972 | struct drm_device *dev = connector->dev; |
| 973 | struct drm_i915_private *dev_priv = dev->dev_private; | 973 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 974 | struct intel_output *intel_output = to_intel_output(connector); | 974 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 975 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 975 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 976 | struct drm_crtc *crtc = connector->encoder->crtc; | 976 | struct drm_crtc *crtc = connector->encoder->crtc; |
| 977 | struct intel_crtc *intel_crtc; | 977 | struct intel_crtc *intel_crtc; |
| 978 | int i; | 978 | int i; |
| @@ -1068,9 +1068,9 @@ intel_tv_mode_lookup (char *tv_format) | |||
| 1068 | } | 1068 | } |
| 1069 | 1069 | ||
| 1070 | static const struct tv_mode * | 1070 | static const struct tv_mode * |
| 1071 | intel_tv_mode_find (struct intel_output *intel_output) | 1071 | intel_tv_mode_find (struct intel_encoder *intel_encoder) |
| 1072 | { | 1072 | { |
| 1073 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1073 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 1074 | 1074 | ||
| 1075 | return intel_tv_mode_lookup(tv_priv->tv_format); | 1075 | return intel_tv_mode_lookup(tv_priv->tv_format); |
| 1076 | } | 1076 | } |
| @@ -1078,8 +1078,8 @@ intel_tv_mode_find (struct intel_output *intel_output) | |||
| 1078 | static enum drm_mode_status | 1078 | static enum drm_mode_status |
| 1079 | intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) | 1079 | intel_tv_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) |
| 1080 | { | 1080 | { |
| 1081 | struct intel_output *intel_output = to_intel_output(connector); | 1081 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1082 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1082 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
| 1083 | 1083 | ||
| 1084 | /* Ensure TV refresh is close to desired refresh */ | 1084 | /* Ensure TV refresh is close to desired refresh */ |
| 1085 | if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) | 1085 | if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) |
| @@ -1095,8 +1095,8 @@ intel_tv_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
| 1095 | { | 1095 | { |
| 1096 | struct drm_device *dev = encoder->dev; | 1096 | struct drm_device *dev = encoder->dev; |
| 1097 | struct drm_mode_config *drm_config = &dev->mode_config; | 1097 | struct drm_mode_config *drm_config = &dev->mode_config; |
| 1098 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 1098 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 1099 | const struct tv_mode *tv_mode = intel_tv_mode_find (intel_output); | 1099 | const struct tv_mode *tv_mode = intel_tv_mode_find (intel_encoder); |
| 1100 | struct drm_encoder *other_encoder; | 1100 | struct drm_encoder *other_encoder; |
| 1101 | 1101 | ||
| 1102 | if (!tv_mode) | 1102 | if (!tv_mode) |
| @@ -1121,9 +1121,9 @@ intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, | |||
| 1121 | struct drm_i915_private *dev_priv = dev->dev_private; | 1121 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1122 | struct drm_crtc *crtc = encoder->crtc; | 1122 | struct drm_crtc *crtc = encoder->crtc; |
| 1123 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 1123 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 1124 | struct intel_output *intel_output = enc_to_intel_output(encoder); | 1124 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 1125 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1125 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 1126 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1126 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
| 1127 | u32 tv_ctl; | 1127 | u32 tv_ctl; |
| 1128 | u32 hctl1, hctl2, hctl3; | 1128 | u32 hctl1, hctl2, hctl3; |
| 1129 | u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; | 1129 | u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; |
| @@ -1360,9 +1360,9 @@ static const struct drm_display_mode reported_modes[] = { | |||
| 1360 | * \return false if TV is disconnected. | 1360 | * \return false if TV is disconnected. |
| 1361 | */ | 1361 | */ |
| 1362 | static int | 1362 | static int |
| 1363 | intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) | 1363 | intel_tv_detect_type (struct drm_crtc *crtc, struct intel_encoder *intel_encoder) |
| 1364 | { | 1364 | { |
| 1365 | struct drm_encoder *encoder = &intel_output->enc; | 1365 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 1366 | struct drm_device *dev = encoder->dev; | 1366 | struct drm_device *dev = encoder->dev; |
| 1367 | struct drm_i915_private *dev_priv = dev->dev_private; | 1367 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1368 | unsigned long irqflags; | 1368 | unsigned long irqflags; |
| @@ -1441,9 +1441,9 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_output *intel_output) | |||
| 1441 | */ | 1441 | */ |
| 1442 | static void intel_tv_find_better_format(struct drm_connector *connector) | 1442 | static void intel_tv_find_better_format(struct drm_connector *connector) |
| 1443 | { | 1443 | { |
| 1444 | struct intel_output *intel_output = to_intel_output(connector); | 1444 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1445 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1445 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 1446 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1446 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
| 1447 | int i; | 1447 | int i; |
| 1448 | 1448 | ||
| 1449 | if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == | 1449 | if ((tv_priv->type == DRM_MODE_CONNECTOR_Component) == |
| @@ -1475,9 +1475,9 @@ intel_tv_detect(struct drm_connector *connector) | |||
| 1475 | { | 1475 | { |
| 1476 | struct drm_crtc *crtc; | 1476 | struct drm_crtc *crtc; |
| 1477 | struct drm_display_mode mode; | 1477 | struct drm_display_mode mode; |
| 1478 | struct intel_output *intel_output = to_intel_output(connector); | 1478 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1479 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1479 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 1480 | struct drm_encoder *encoder = &intel_output->enc; | 1480 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 1481 | int dpms_mode; | 1481 | int dpms_mode; |
| 1482 | int type = tv_priv->type; | 1482 | int type = tv_priv->type; |
| 1483 | 1483 | ||
| @@ -1485,12 +1485,12 @@ intel_tv_detect(struct drm_connector *connector) | |||
| 1485 | drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V); | 1485 | drm_mode_set_crtcinfo(&mode, CRTC_INTERLACE_HALVE_V); |
| 1486 | 1486 | ||
| 1487 | if (encoder->crtc && encoder->crtc->enabled) { | 1487 | if (encoder->crtc && encoder->crtc->enabled) { |
| 1488 | type = intel_tv_detect_type(encoder->crtc, intel_output); | 1488 | type = intel_tv_detect_type(encoder->crtc, intel_encoder); |
| 1489 | } else { | 1489 | } else { |
| 1490 | crtc = intel_get_load_detect_pipe(intel_output, &mode, &dpms_mode); | 1490 | crtc = intel_get_load_detect_pipe(intel_encoder, &mode, &dpms_mode); |
| 1491 | if (crtc) { | 1491 | if (crtc) { |
| 1492 | type = intel_tv_detect_type(crtc, intel_output); | 1492 | type = intel_tv_detect_type(crtc, intel_encoder); |
| 1493 | intel_release_load_detect_pipe(intel_output, dpms_mode); | 1493 | intel_release_load_detect_pipe(intel_encoder, dpms_mode); |
| 1494 | } else | 1494 | } else |
| 1495 | type = -1; | 1495 | type = -1; |
| 1496 | } | 1496 | } |
| @@ -1525,8 +1525,8 @@ static void | |||
| 1525 | intel_tv_chose_preferred_modes(struct drm_connector *connector, | 1525 | intel_tv_chose_preferred_modes(struct drm_connector *connector, |
| 1526 | struct drm_display_mode *mode_ptr) | 1526 | struct drm_display_mode *mode_ptr) |
| 1527 | { | 1527 | { |
| 1528 | struct intel_output *intel_output = to_intel_output(connector); | 1528 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1529 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1529 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
| 1530 | 1530 | ||
| 1531 | if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) | 1531 | if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) |
| 1532 | mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; | 1532 | mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; |
| @@ -1550,8 +1550,8 @@ static int | |||
| 1550 | intel_tv_get_modes(struct drm_connector *connector) | 1550 | intel_tv_get_modes(struct drm_connector *connector) |
| 1551 | { | 1551 | { |
| 1552 | struct drm_display_mode *mode_ptr; | 1552 | struct drm_display_mode *mode_ptr; |
| 1553 | struct intel_output *intel_output = to_intel_output(connector); | 1553 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1554 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_output); | 1554 | const struct tv_mode *tv_mode = intel_tv_mode_find(intel_encoder); |
| 1555 | int j, count = 0; | 1555 | int j, count = 0; |
| 1556 | u64 tmp; | 1556 | u64 tmp; |
| 1557 | 1557 | ||
| @@ -1604,11 +1604,11 @@ intel_tv_get_modes(struct drm_connector *connector) | |||
| 1604 | static void | 1604 | static void |
| 1605 | intel_tv_destroy (struct drm_connector *connector) | 1605 | intel_tv_destroy (struct drm_connector *connector) |
| 1606 | { | 1606 | { |
| 1607 | struct intel_output *intel_output = to_intel_output(connector); | 1607 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1608 | 1608 | ||
| 1609 | drm_sysfs_connector_remove(connector); | 1609 | drm_sysfs_connector_remove(connector); |
| 1610 | drm_connector_cleanup(connector); | 1610 | drm_connector_cleanup(connector); |
| 1611 | kfree(intel_output); | 1611 | kfree(intel_encoder); |
| 1612 | } | 1612 | } |
| 1613 | 1613 | ||
| 1614 | 1614 | ||
| @@ -1617,9 +1617,9 @@ intel_tv_set_property(struct drm_connector *connector, struct drm_property *prop | |||
| 1617 | uint64_t val) | 1617 | uint64_t val) |
| 1618 | { | 1618 | { |
| 1619 | struct drm_device *dev = connector->dev; | 1619 | struct drm_device *dev = connector->dev; |
| 1620 | struct intel_output *intel_output = to_intel_output(connector); | 1620 | struct intel_encoder *intel_encoder = to_intel_encoder(connector); |
| 1621 | struct intel_tv_priv *tv_priv = intel_output->dev_priv; | 1621 | struct intel_tv_priv *tv_priv = intel_encoder->dev_priv; |
| 1622 | struct drm_encoder *encoder = &intel_output->enc; | 1622 | struct drm_encoder *encoder = &intel_encoder->enc; |
| 1623 | struct drm_crtc *crtc = encoder->crtc; | 1623 | struct drm_crtc *crtc = encoder->crtc; |
| 1624 | int ret = 0; | 1624 | int ret = 0; |
| 1625 | bool changed = false; | 1625 | bool changed = false; |
| @@ -1740,7 +1740,7 @@ intel_tv_init(struct drm_device *dev) | |||
| 1740 | { | 1740 | { |
| 1741 | struct drm_i915_private *dev_priv = dev->dev_private; | 1741 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 1742 | struct drm_connector *connector; | 1742 | struct drm_connector *connector; |
| 1743 | struct intel_output *intel_output; | 1743 | struct intel_encoder *intel_encoder; |
| 1744 | struct intel_tv_priv *tv_priv; | 1744 | struct intel_tv_priv *tv_priv; |
| 1745 | u32 tv_dac_on, tv_dac_off, save_tv_dac; | 1745 | u32 tv_dac_on, tv_dac_off, save_tv_dac; |
| 1746 | char **tv_format_names; | 1746 | char **tv_format_names; |
| @@ -1780,28 +1780,28 @@ intel_tv_init(struct drm_device *dev) | |||
| 1780 | (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) | 1780 | (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) |
| 1781 | return; | 1781 | return; |
| 1782 | 1782 | ||
| 1783 | intel_output = kzalloc(sizeof(struct intel_output) + | 1783 | intel_encoder = kzalloc(sizeof(struct intel_encoder) + |
| 1784 | sizeof(struct intel_tv_priv), GFP_KERNEL); | 1784 | sizeof(struct intel_tv_priv), GFP_KERNEL); |
| 1785 | if (!intel_output) { | 1785 | if (!intel_encoder) { |
| 1786 | return; | 1786 | return; |
| 1787 | } | 1787 | } |
| 1788 | 1788 | ||
| 1789 | connector = &intel_output->base; | 1789 | connector = &intel_encoder->base; |
| 1790 | 1790 | ||
| 1791 | drm_connector_init(dev, connector, &intel_tv_connector_funcs, | 1791 | drm_connector_init(dev, connector, &intel_tv_connector_funcs, |
| 1792 | DRM_MODE_CONNECTOR_SVIDEO); | 1792 | DRM_MODE_CONNECTOR_SVIDEO); |
| 1793 | 1793 | ||
| 1794 | drm_encoder_init(dev, &intel_output->enc, &intel_tv_enc_funcs, | 1794 | drm_encoder_init(dev, &intel_encoder->enc, &intel_tv_enc_funcs, |
| 1795 | DRM_MODE_ENCODER_TVDAC); | 1795 | DRM_MODE_ENCODER_TVDAC); |
| 1796 | 1796 | ||
| 1797 | drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc); | 1797 | drm_mode_connector_attach_encoder(&intel_encoder->base, &intel_encoder->enc); |
| 1798 | tv_priv = (struct intel_tv_priv *)(intel_output + 1); | 1798 | tv_priv = (struct intel_tv_priv *)(intel_encoder + 1); |
| 1799 | intel_output->type = INTEL_OUTPUT_TVOUT; | 1799 | intel_encoder->type = INTEL_OUTPUT_TVOUT; |
| 1800 | intel_output->crtc_mask = (1 << 0) | (1 << 1); | 1800 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
| 1801 | intel_output->clone_mask = (1 << INTEL_TV_CLONE_BIT); | 1801 | intel_encoder->clone_mask = (1 << INTEL_TV_CLONE_BIT); |
| 1802 | intel_output->enc.possible_crtcs = ((1 << 0) | (1 << 1)); | 1802 | intel_encoder->enc.possible_crtcs = ((1 << 0) | (1 << 1)); |
| 1803 | intel_output->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT); | 1803 | intel_encoder->enc.possible_clones = (1 << INTEL_OUTPUT_TVOUT); |
| 1804 | intel_output->dev_priv = tv_priv; | 1804 | intel_encoder->dev_priv = tv_priv; |
| 1805 | tv_priv->type = DRM_MODE_CONNECTOR_Unknown; | 1805 | tv_priv->type = DRM_MODE_CONNECTOR_Unknown; |
| 1806 | 1806 | ||
| 1807 | /* BIOS margin values */ | 1807 | /* BIOS margin values */ |
| @@ -1812,7 +1812,7 @@ intel_tv_init(struct drm_device *dev) | |||
| 1812 | 1812 | ||
| 1813 | tv_priv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL); | 1813 | tv_priv->tv_format = kstrdup(tv_modes[initial_mode].name, GFP_KERNEL); |
| 1814 | 1814 | ||
| 1815 | drm_encoder_helper_add(&intel_output->enc, &intel_tv_helper_funcs); | 1815 | drm_encoder_helper_add(&intel_encoder->enc, &intel_tv_helper_funcs); |
| 1816 | drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); | 1816 | drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); |
| 1817 | connector->interlace_allowed = false; | 1817 | connector->interlace_allowed = false; |
| 1818 | connector->doublescan_allowed = false; | 1818 | connector->doublescan_allowed = false; |
