diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2009-02-11 09:47:42 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2009-02-11 09:47:42 +0000 |
commit | 10f46e011775bec893f22ec88e7f4ee4acccb7db (patch) | |
tree | 3245c2fa5080131d23110e79c068b72c9c8198a6 | |
parent | 0903f6a455ff194a49ebbdb6bf1a6c03eeb970a2 (diff) | |
download | poky-10f46e011775bec893f22ec88e7f4ee4acccb7db.tar.gz |
linux-moblin: Cleanup patch whitespace
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin-2.6.27/psb-driver.patch | 1149 | ||||
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin_2.6.27.bb | 2 |
2 files changed, 381 insertions, 770 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.27/psb-driver.patch b/meta-moblin/packages/linux/linux-moblin-2.6.27/psb-driver.patch index adc33b492a..1ef6e378fe 100644 --- a/meta-moblin/packages/linux/linux-moblin-2.6.27/psb-driver.patch +++ b/meta-moblin/packages/linux/linux-moblin-2.6.27/psb-driver.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | Index: linux-2.6.27/include/drm/drm.h | 1 | Index: linux-2.6.27/include/drm/drm.h |
2 | =================================================================== | 2 | =================================================================== |
3 | --- linux-2.6.27.orig/include/drm/drm.h 2009-01-14 11:54:35.000000000 +0000 | 3 | --- linux-2.6.27.orig/include/drm/drm.h 2009-02-05 13:29:29.000000000 +0000 |
4 | +++ linux-2.6.27/include/drm/drm.h 2009-01-14 11:58:01.000000000 +0000 | 4 | +++ linux-2.6.27/include/drm/drm.h 2009-02-05 13:29:33.000000000 +0000 |
5 | @@ -173,6 +173,7 @@ | 5 | @@ -173,6 +173,7 @@ |
6 | _DRM_AGP = 3, /**< AGP/GART */ | 6 | _DRM_AGP = 3, /**< AGP/GART */ |
7 | _DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */ | 7 | _DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */ |
@@ -380,7 +380,7 @@ Index: linux-2.6.27/include/drm/drm.h | |||
380 | + uint32_t value; | 380 | + uint32_t value; |
381 | + unsigned char name[DRM_PROP_NAME_LEN]; | 381 | + unsigned char name[DRM_PROP_NAME_LEN]; |
382 | +}; | 382 | +}; |
383 | + | 383 | + |
384 | +struct drm_mode_get_property { | 384 | +struct drm_mode_get_property { |
385 | + | 385 | + |
386 | + unsigned int prop_id; | 386 | + unsigned int prop_id; |
@@ -473,8 +473,8 @@ Index: linux-2.6.27/include/drm/drm.h | |||
473 | #endif | 473 | #endif |
474 | Index: linux-2.6.27/include/drm/drmP.h | 474 | Index: linux-2.6.27/include/drm/drmP.h |
475 | =================================================================== | 475 | =================================================================== |
476 | --- linux-2.6.27.orig/include/drm/drmP.h 2009-01-14 11:54:35.000000000 +0000 | 476 | --- linux-2.6.27.orig/include/drm/drmP.h 2009-02-05 13:29:30.000000000 +0000 |
477 | +++ linux-2.6.27/include/drm/drmP.h 2009-01-14 11:58:31.000000000 +0000 | 477 | +++ linux-2.6.27/include/drm/drmP.h 2009-02-05 13:29:33.000000000 +0000 |
478 | @@ -57,6 +57,7 @@ | 478 | @@ -57,6 +57,7 @@ |
479 | #include <linux/dma-mapping.h> | 479 | #include <linux/dma-mapping.h> |
480 | #include <linux/mm.h> | 480 | #include <linux/mm.h> |
@@ -738,8 +738,8 @@ Index: linux-2.6.27/include/drm/drmP.h | |||
738 | extern long drm_compat_ioctl(struct file *filp, | 738 | extern long drm_compat_ioctl(struct file *filp, |
739 | Index: linux-2.6.27/include/drm/drm_pciids.h | 739 | Index: linux-2.6.27/include/drm/drm_pciids.h |
740 | =================================================================== | 740 | =================================================================== |
741 | --- linux-2.6.27.orig/include/drm/drm_pciids.h 2009-01-14 11:54:35.000000000 +0000 | 741 | --- linux-2.6.27.orig/include/drm/drm_pciids.h 2008-10-09 23:13:53.000000000 +0100 |
742 | +++ linux-2.6.27/include/drm/drm_pciids.h 2009-01-14 11:58:01.000000000 +0000 | 742 | +++ linux-2.6.27/include/drm/drm_pciids.h 2009-02-05 13:29:33.000000000 +0000 |
743 | @@ -413,3 +413,9 @@ | 743 | @@ -413,3 +413,9 @@ |
744 | {0x8086, 0x2e12, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 744 | {0x8086, 0x2e12, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
745 | {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 745 | {0x8086, 0x2e22, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
@@ -752,8 +752,8 @@ Index: linux-2.6.27/include/drm/drm_pciids.h | |||
752 | + | 752 | + |
753 | Index: linux-2.6.27/drivers/gpu/drm/Makefile | 753 | Index: linux-2.6.27/drivers/gpu/drm/Makefile |
754 | =================================================================== | 754 | =================================================================== |
755 | --- linux-2.6.27.orig/drivers/gpu/drm/Makefile 2009-01-14 11:54:35.000000000 +0000 | 755 | --- linux-2.6.27.orig/drivers/gpu/drm/Makefile 2009-02-05 13:29:29.000000000 +0000 |
756 | +++ linux-2.6.27/drivers/gpu/drm/Makefile 2009-01-14 12:11:06.000000000 +0000 | 756 | +++ linux-2.6.27/drivers/gpu/drm/Makefile 2009-02-05 13:29:33.000000000 +0000 |
757 | @@ -9,11 +9,14 @@ | 757 | @@ -9,11 +9,14 @@ |
758 | drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ | 758 | drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \ |
759 | drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ | 759 | drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ |
@@ -777,8 +777,8 @@ Index: linux-2.6.27/drivers/gpu/drm/Makefile | |||
777 | - | 777 | - |
778 | Index: linux-2.6.27/drivers/gpu/drm/drm_agpsupport.c | 778 | Index: linux-2.6.27/drivers/gpu/drm/drm_agpsupport.c |
779 | =================================================================== | 779 | =================================================================== |
780 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_agpsupport.c 2009-01-14 11:54:35.000000000 +0000 | 780 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_agpsupport.c 2009-02-05 13:29:29.000000000 +0000 |
781 | +++ linux-2.6.27/drivers/gpu/drm/drm_agpsupport.c 2009-01-14 11:58:01.000000000 +0000 | 781 | +++ linux-2.6.27/drivers/gpu/drm/drm_agpsupport.c 2009-02-05 13:29:33.000000000 +0000 |
782 | @@ -453,47 +453,158 @@ | 782 | @@ -453,47 +453,158 @@ |
783 | return agp_unbind_memory(handle); | 783 | return agp_unbind_memory(handle); |
784 | } | 784 | } |
@@ -970,7 +970,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_agpsupport.c | |||
970 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo.c | 970 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo.c |
971 | =================================================================== | 971 | =================================================================== |
972 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 972 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
973 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo.c 2009-01-14 11:58:01.000000000 +0000 | 973 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo.c 2009-02-05 13:29:33.000000000 +0000 |
974 | @@ -0,0 +1,2660 @@ | 974 | @@ -0,0 +1,2660 @@ |
975 | +/************************************************************************** | 975 | +/************************************************************************** |
976 | + * | 976 | + * |
@@ -1183,15 +1183,15 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bo.c | |||
1183 | + struct drm_bo_mem_reg *old_mem = &bo->mem; | 1183 | + struct drm_bo_mem_reg *old_mem = &bo->mem; |
1184 | + uint64_t save_flags = old_mem->flags; | 1184 | + uint64_t save_flags = old_mem->flags; |
1185 | + uint64_t save_mask = old_mem->mask; | 1185 | + uint64_t save_mask = old_mem->mask; |
1186 | + | 1186 | + |
1187 | + *old_mem = *mem; | 1187 | + *old_mem = *mem; |
1188 | + mem->mm_node = NULL; | 1188 | + mem->mm_node = NULL; |
1189 | + old_mem->mask = save_mask; | 1189 | + old_mem->mask = save_mask; |
1190 | + DRM_FLAG_MASKED(save_flags, mem->flags, | 1190 | + DRM_FLAG_MASKED(save_flags, mem->flags, |
1191 | + DRM_BO_MASK_MEMTYPE); | 1191 | + DRM_BO_MASK_MEMTYPE); |
1192 | + goto moved; | 1192 | + goto moved; |
1193 | + } | 1193 | + } |
1194 | + | 1194 | + |
1195 | + } | 1195 | + } |
1196 | + | 1196 | + |
1197 | + if (!(old_man->flags & _DRM_FLAG_MEMTYPE_FIXED) && | 1197 | + if (!(old_man->flags & _DRM_FLAG_MEMTYPE_FIXED) && |
@@ -1939,13 +1939,13 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bo.c | |||
1939 | + DRM_ERROR("DRM_BO_FLAG_NO_EVICT is only available to priviliged processes.\n"); | 1939 | + DRM_ERROR("DRM_BO_FLAG_NO_EVICT is only available to priviliged processes.\n"); |
1940 | + return -EPERM; | 1940 | + return -EPERM; |
1941 | + } | 1941 | + } |
1942 | + | 1942 | + |
1943 | + if (likely(used_mask & DRM_BO_MASK_MEM) && | 1943 | + if (likely(used_mask & DRM_BO_MASK_MEM) && |
1944 | + (bo->mem.flags & DRM_BO_FLAG_NO_EVICT) && | 1944 | + (bo->mem.flags & DRM_BO_FLAG_NO_EVICT) && |
1945 | + !DRM_SUSER(DRM_CURPROC)) { | 1945 | + !DRM_SUSER(DRM_CURPROC)) { |
1946 | + if (likely(bo->mem.flags & new_flags & used_mask & | 1946 | + if (likely(bo->mem.flags & new_flags & used_mask & |
1947 | + DRM_BO_MASK_MEM)) | 1947 | + DRM_BO_MASK_MEM)) |
1948 | + new_flags = (new_flags & ~DRM_BO_MASK_MEM) | | 1948 | + new_flags = (new_flags & ~DRM_BO_MASK_MEM) | |
1949 | + (bo->mem.flags & DRM_BO_MASK_MEM); | 1949 | + (bo->mem.flags & DRM_BO_MASK_MEM); |
1950 | + else { | 1950 | + else { |
1951 | + DRM_ERROR("Incompatible memory type specification " | 1951 | + DRM_ERROR("Incompatible memory type specification " |
@@ -3635,7 +3635,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bo.c | |||
3635 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo_lock.c | 3635 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo_lock.c |
3636 | =================================================================== | 3636 | =================================================================== |
3637 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 3637 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
3638 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo_lock.c 2009-01-14 11:58:01.000000000 +0000 | 3638 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo_lock.c 2009-02-05 13:29:33.000000000 +0000 |
3639 | @@ -0,0 +1,175 @@ | 3639 | @@ -0,0 +1,175 @@ |
3640 | +/************************************************************************** | 3640 | +/************************************************************************** |
3641 | + * | 3641 | + * |
@@ -3815,7 +3815,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bo_lock.c | |||
3815 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo_move.c | 3815 | Index: linux-2.6.27/drivers/gpu/drm/drm_bo_move.c |
3816 | =================================================================== | 3816 | =================================================================== |
3817 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 3817 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
3818 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo_move.c 2009-01-14 11:58:01.000000000 +0000 | 3818 | +++ linux-2.6.27/drivers/gpu/drm/drm_bo_move.c 2009-02-05 13:29:33.000000000 +0000 |
3819 | @@ -0,0 +1,597 @@ | 3819 | @@ -0,0 +1,597 @@ |
3820 | +/************************************************************************** | 3820 | +/************************************************************************** |
3821 | + * | 3821 | + * |
@@ -4416,8 +4416,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bo_move.c | |||
4416 | +EXPORT_SYMBOL(drm_bo_kunmap); | 4416 | +EXPORT_SYMBOL(drm_bo_kunmap); |
4417 | Index: linux-2.6.27/drivers/gpu/drm/drm_bufs.c | 4417 | Index: linux-2.6.27/drivers/gpu/drm/drm_bufs.c |
4418 | =================================================================== | 4418 | =================================================================== |
4419 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_bufs.c 2009-01-14 11:54:35.000000000 +0000 | 4419 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_bufs.c 2008-10-09 23:13:53.000000000 +0100 |
4420 | +++ linux-2.6.27/drivers/gpu/drm/drm_bufs.c 2009-01-14 11:58:01.000000000 +0000 | 4420 | +++ linux-2.6.27/drivers/gpu/drm/drm_bufs.c 2009-02-05 13:29:33.000000000 +0000 |
4421 | @@ -409,6 +409,7 @@ | 4421 | @@ -409,6 +409,7 @@ |
4422 | break; | 4422 | break; |
4423 | case _DRM_SHM: | 4423 | case _DRM_SHM: |
@@ -4438,7 +4438,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_bufs.c | |||
4438 | Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | 4438 | Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c |
4439 | =================================================================== | 4439 | =================================================================== |
4440 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4440 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
4441 | +++ linux-2.6.27/drivers/gpu/drm/drm_crtc.c 2009-01-14 11:58:01.000000000 +0000 | 4441 | +++ linux-2.6.27/drivers/gpu/drm/drm_crtc.c 2009-02-05 13:29:33.000000000 +0000 |
4442 | @@ -0,0 +1,2170 @@ | 4442 | @@ -0,0 +1,2170 @@ |
4443 | +/* | 4443 | +/* |
4444 | + * Copyright (c) 2006-2007 Intel Corporation | 4444 | + * Copyright (c) 2006-2007 Intel Corporation |
@@ -4502,7 +4502,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4502 | + | 4502 | + |
4503 | + ret = idr_get_new_above(&dev->mode_config.crtc_idr, ptr, 1, &new_id); | 4503 | + ret = idr_get_new_above(&dev->mode_config.crtc_idr, ptr, 1, &new_id); |
4504 | + if (ret == -EAGAIN) | 4504 | + if (ret == -EAGAIN) |
4505 | + goto again; | 4505 | + goto again; |
4506 | + | 4506 | + |
4507 | + return new_id; | 4507 | + return new_id; |
4508 | +} | 4508 | +} |
@@ -4573,7 +4573,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4573 | + fb = kzalloc(sizeof(struct drm_framebuffer), GFP_KERNEL); | 4573 | + fb = kzalloc(sizeof(struct drm_framebuffer), GFP_KERNEL); |
4574 | + if (!fb) | 4574 | + if (!fb) |
4575 | + return NULL; | 4575 | + return NULL; |
4576 | + | 4576 | + |
4577 | + fb->id = drm_idr_get(dev, fb); | 4577 | + fb->id = drm_idr_get(dev, fb); |
4578 | + fb->dev = dev; | 4578 | + fb->dev = dev; |
4579 | + dev->mode_config.num_fb++; | 4579 | + dev->mode_config.num_fb++; |
@@ -4727,7 +4727,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4727 | + struct drm_output *output; | 4727 | + struct drm_output *output; |
4728 | + struct drm_display_mode *mode, *t; | 4728 | + struct drm_display_mode *mode, *t; |
4729 | + int ret; | 4729 | + int ret; |
4730 | + //if (maxX == 0 || maxY == 0) | 4730 | + //if (maxX == 0 || maxY == 0) |
4731 | + // TODO | 4731 | + // TODO |
4732 | + | 4732 | + |
4733 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { | 4733 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { |
@@ -4735,7 +4735,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4735 | + /* set all modes to the unverified state */ | 4735 | + /* set all modes to the unverified state */ |
4736 | + list_for_each_entry_safe(mode, t, &output->modes, head) | 4736 | + list_for_each_entry_safe(mode, t, &output->modes, head) |
4737 | + mode->status = MODE_UNVERIFIED; | 4737 | + mode->status = MODE_UNVERIFIED; |
4738 | + | 4738 | + |
4739 | + output->status = (*output->funcs->detect)(output); | 4739 | + output->status = (*output->funcs->detect)(output); |
4740 | + | 4740 | + |
4741 | + if (output->status == output_status_disconnected) { | 4741 | + if (output->status == output_status_disconnected) { |
@@ -4757,7 +4757,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4757 | + if (mode->status == MODE_OK) | 4757 | + if (mode->status == MODE_OK) |
4758 | + mode->status = (*output->funcs->mode_valid)(output,mode); | 4758 | + mode->status = (*output->funcs->mode_valid)(output,mode); |
4759 | + } | 4759 | + } |
4760 | + | 4760 | + |
4761 | + | 4761 | + |
4762 | + drm_mode_prune_invalid(dev, &output->modes, 1); | 4762 | + drm_mode_prune_invalid(dev, &output->modes, 1); |
4763 | + | 4763 | + |
@@ -4832,7 +4832,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4832 | + saved_mode = crtc->mode; | 4832 | + saved_mode = crtc->mode; |
4833 | + saved_x = crtc->x; | 4833 | + saved_x = crtc->x; |
4834 | + saved_y = crtc->y; | 4834 | + saved_y = crtc->y; |
4835 | + | 4835 | + |
4836 | + /* Update crtc values up front so the driver can rely on them for mode | 4836 | + /* Update crtc values up front so the driver can rely on them for mode |
4837 | + * setting. | 4837 | + * setting. |
4838 | + */ | 4838 | + */ |
@@ -4841,21 +4841,21 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4841 | + crtc->y = y; | 4841 | + crtc->y = y; |
4842 | + | 4842 | + |
4843 | + /* XXX short-circuit changes to base location only */ | 4843 | + /* XXX short-circuit changes to base location only */ |
4844 | + | 4844 | + |
4845 | + /* Pass our mode to the outputs and the CRTC to give them a chance to | 4845 | + /* Pass our mode to the outputs and the CRTC to give them a chance to |
4846 | + * adjust it according to limitations or output properties, and also | 4846 | + * adjust it according to limitations or output properties, and also |
4847 | + * a chance to reject the mode entirely. | 4847 | + * a chance to reject the mode entirely. |
4848 | + */ | 4848 | + */ |
4849 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { | 4849 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { |
4850 | + | 4850 | + |
4851 | + if (output->crtc != crtc) | 4851 | + if (output->crtc != crtc) |
4852 | + continue; | 4852 | + continue; |
4853 | + | 4853 | + |
4854 | + if (!output->funcs->mode_fixup(output, mode, adjusted_mode)) { | 4854 | + if (!output->funcs->mode_fixup(output, mode, adjusted_mode)) { |
4855 | + goto done; | 4855 | + goto done; |
4856 | + } | 4856 | + } |
4857 | + } | 4857 | + } |
4858 | + | 4858 | + |
4859 | + if (!crtc->funcs->mode_fixup(crtc, mode, adjusted_mode)) { | 4859 | + if (!crtc->funcs->mode_fixup(crtc, mode, adjusted_mode)) { |
4860 | + goto done; | 4860 | + goto done; |
4861 | + } | 4861 | + } |
@@ -4865,13 +4865,13 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4865 | + | 4865 | + |
4866 | + if (output->crtc != crtc) | 4866 | + if (output->crtc != crtc) |
4867 | + continue; | 4867 | + continue; |
4868 | + | 4868 | + |
4869 | + /* Disable the output as the first thing we do. */ | 4869 | + /* Disable the output as the first thing we do. */ |
4870 | + output->funcs->prepare(output); | 4870 | + output->funcs->prepare(output); |
4871 | + } | 4871 | + } |
4872 | + | 4872 | + |
4873 | + crtc->funcs->prepare(crtc); | 4873 | + crtc->funcs->prepare(crtc); |
4874 | + | 4874 | + |
4875 | + /* Set up the DPLL and any output state that needs to adjust or depend | 4875 | + /* Set up the DPLL and any output state that needs to adjust or depend |
4876 | + * on the DPLL. | 4876 | + * on the DPLL. |
4877 | + */ | 4877 | + */ |
@@ -4881,12 +4881,12 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4881 | + | 4881 | + |
4882 | + if (output->crtc != crtc) | 4882 | + if (output->crtc != crtc) |
4883 | + continue; | 4883 | + continue; |
4884 | + | 4884 | + |
4885 | + DRM_INFO("%s: set mode %s %x\n", output->name, mode->name, mode->mode_id); | 4885 | + DRM_INFO("%s: set mode %s %x\n", output->name, mode->name, mode->mode_id); |
4886 | + | 4886 | + |
4887 | + output->funcs->mode_set(output, mode, adjusted_mode); | 4887 | + output->funcs->mode_set(output, mode, adjusted_mode); |
4888 | + } | 4888 | + } |
4889 | + | 4889 | + |
4890 | + /* Now, enable the clocks, plane, pipe, and outputs that we set up. */ | 4890 | + /* Now, enable the clocks, plane, pipe, and outputs that we set up. */ |
4891 | + crtc->funcs->commit(crtc); | 4891 | + crtc->funcs->commit(crtc); |
4892 | + | 4892 | + |
@@ -4894,7 +4894,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4894 | + | 4894 | + |
4895 | + if (output->crtc != crtc) | 4895 | + if (output->crtc != crtc) |
4896 | + continue; | 4896 | + continue; |
4897 | + | 4897 | + |
4898 | + output->funcs->commit(output); | 4898 | + output->funcs->commit(output); |
4899 | + | 4899 | + |
4900 | +#if 0 // TODO def RANDR_12_INTERFACE | 4900 | +#if 0 // TODO def RANDR_12_INTERFACE |
@@ -4902,7 +4902,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4902 | + RRPostPendingProperties (output->randr_output); | 4902 | + RRPostPendingProperties (output->randr_output); |
4903 | +#endif | 4903 | +#endif |
4904 | + } | 4904 | + } |
4905 | + | 4905 | + |
4906 | + /* XXX free adjustedmode */ | 4906 | + /* XXX free adjustedmode */ |
4907 | + drm_mode_destroy(dev, adjusted_mode); | 4907 | + drm_mode_destroy(dev, adjusted_mode); |
4908 | + ret = 1; | 4908 | + ret = 1; |
@@ -4916,10 +4916,10 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4916 | + crtc->y = saved_y; | 4916 | + crtc->y = saved_y; |
4917 | + crtc->mode = saved_mode; | 4917 | + crtc->mode = saved_mode; |
4918 | + } | 4918 | + } |
4919 | + | 4919 | + |
4920 | + if (didLock) | 4920 | + if (didLock) |
4921 | + crtc->funcs->unlock (crtc); | 4921 | + crtc->funcs->unlock (crtc); |
4922 | + | 4922 | + |
4923 | + return ret; | 4923 | + return ret; |
4924 | +} | 4924 | +} |
4925 | +EXPORT_SYMBOL(drm_crtc_set_mode); | 4925 | +EXPORT_SYMBOL(drm_crtc_set_mode); |
@@ -4958,7 +4958,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4958 | + * | 4958 | + * |
4959 | + * LOCKING: | 4959 | + * LOCKING: |
4960 | + * Caller must hold mode config lock. | 4960 | + * Caller must hold mode config lock. |
4961 | + * | 4961 | + * |
4962 | + * Add @mode to @output's mode list for later use. | 4962 | + * Add @mode to @output's mode list for later use. |
4963 | + */ | 4963 | + */ |
4964 | +void drm_mode_probed_add(struct drm_output *output, | 4964 | +void drm_mode_probed_add(struct drm_output *output, |
@@ -4975,7 +4975,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
4975 | + * | 4975 | + * |
4976 | + * LOCKING: | 4976 | + * LOCKING: |
4977 | + * Caller must hold mode config lock. | 4977 | + * Caller must hold mode config lock. |
4978 | + * | 4978 | + * |
4979 | + * Remove @mode from @output's mode list, then free it. | 4979 | + * Remove @mode from @output's mode list, then free it. |
4980 | + */ | 4980 | + */ |
4981 | +void drm_mode_remove(struct drm_output *output, struct drm_display_mode *mode) | 4981 | +void drm_mode_remove(struct drm_output *output, struct drm_display_mode *mode) |
@@ -5009,7 +5009,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5009 | + output = kzalloc(sizeof(struct drm_output), GFP_KERNEL); | 5009 | + output = kzalloc(sizeof(struct drm_output), GFP_KERNEL); |
5010 | + if (!output) | 5010 | + if (!output) |
5011 | + return NULL; | 5011 | + return NULL; |
5012 | + | 5012 | + |
5013 | + output->dev = dev; | 5013 | + output->dev = dev; |
5014 | + output->funcs = funcs; | 5014 | + output->funcs = funcs; |
5015 | + output->id = drm_idr_get(dev, output); | 5015 | + output->id = drm_idr_get(dev, output); |
@@ -5197,7 +5197,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5197 | + ret = -EINVAL; | 5197 | + ret = -EINVAL; |
5198 | + goto out_err; | 5198 | + goto out_err; |
5199 | + } | 5199 | + } |
5200 | + | 5200 | + |
5201 | + *bo = drm_user_object_entry(uo, struct drm_buffer_object, base); | 5201 | + *bo = drm_user_object_entry(uo, struct drm_buffer_object, base); |
5202 | + ret = 0; | 5202 | + ret = 0; |
5203 | +out_err: | 5203 | +out_err: |
@@ -5228,7 +5228,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5228 | + | 5228 | + |
5229 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { | 5229 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { |
5230 | + output->crtc = NULL; | 5230 | + output->crtc = NULL; |
5231 | + | 5231 | + |
5232 | + /* Don't hook up outputs that are disconnected ?? | 5232 | + /* Don't hook up outputs that are disconnected ?? |
5233 | + * | 5233 | + * |
5234 | + * This is debateable. Do we want fixed /dev/fbX or | 5234 | + * This is debateable. Do we want fixed /dev/fbX or |
@@ -5280,7 +5280,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5280 | + c++; | 5280 | + c++; |
5281 | + if ((output->possible_crtcs & (1 << c)) == 0) | 5281 | + if ((output->possible_crtcs & (1 << c)) == 0) |
5282 | + continue; | 5282 | + continue; |
5283 | + | 5283 | + |
5284 | + list_for_each_entry(output_equal, &dev->mode_config.output_list, head) { | 5284 | + list_for_each_entry(output_equal, &dev->mode_config.output_list, head) { |
5285 | + if (output->id == output_equal->id) | 5285 | + if (output->id == output_equal->id) |
5286 | + continue; | 5286 | + continue; |
@@ -5368,7 +5368,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5368 | + dev->driver->fb_probe(dev, crtc); | 5368 | + dev->driver->fb_probe(dev, crtc); |
5369 | + } | 5369 | + } |
5370 | + | 5370 | + |
5371 | + /* This is a little screwy, as we've already walked the outputs | 5371 | + /* This is a little screwy, as we've already walked the outputs |
5372 | + * above, but it's a little bit of magic too. There's the potential | 5372 | + * above, but it's a little bit of magic too. There's the potential |
5373 | + * for things not to get setup above if an existing device gets | 5373 | + * for things not to get setup above if an existing device gets |
5374 | + * re-assigned thus confusing the hardware. By walking the outputs | 5374 | + * re-assigned thus confusing the hardware. By walking the outputs |
@@ -5583,7 +5583,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5583 | + strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN); | 5583 | + strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN); |
5584 | + out->name[DRM_DISPLAY_MODE_LEN-1] = 0; | 5584 | + out->name[DRM_DISPLAY_MODE_LEN-1] = 0; |
5585 | +} | 5585 | +} |
5586 | + | 5586 | + |
5587 | +/** | 5587 | +/** |
5588 | + * drm_mode_getresources - get graphics configuration | 5588 | + * drm_mode_getresources - get graphics configuration |
5589 | + * @inode: inode from the ioctl | 5589 | + * @inode: inode from the ioctl |
@@ -5687,7 +5687,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5687 | + } | 5687 | + } |
5688 | + } | 5688 | + } |
5689 | + card_res->count_outputs = output_count; | 5689 | + card_res->count_outputs = output_count; |
5690 | + | 5690 | + |
5691 | + /* Modes */ | 5691 | + /* Modes */ |
5692 | + if (card_res->count_modes >= mode_count) { | 5692 | + if (card_res->count_modes >= mode_count) { |
5693 | + copied = 0; | 5693 | + copied = 0; |
@@ -5715,7 +5715,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5715 | + DRM_DEBUG("Counted %d %d %d\n", card_res->count_crtcs, | 5715 | + DRM_DEBUG("Counted %d %d %d\n", card_res->count_crtcs, |
5716 | + card_res->count_outputs, | 5716 | + card_res->count_outputs, |
5717 | + card_res->count_modes); | 5717 | + card_res->count_modes); |
5718 | + | 5718 | + |
5719 | + mutex_unlock(&dev->mode_config.mutex); | 5719 | + mutex_unlock(&dev->mode_config.mutex); |
5720 | + return ret; | 5720 | + return ret; |
5721 | +} | 5721 | +} |
@@ -5819,7 +5819,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5819 | + | 5819 | + |
5820 | + list_for_each_entry(mode, &output->modes, head) | 5820 | + list_for_each_entry(mode, &output->modes, head) |
5821 | + mode_count++; | 5821 | + mode_count++; |
5822 | + | 5822 | + |
5823 | + for (i = 0; i < DRM_OUTPUT_MAX_UMODES; i++) | 5823 | + for (i = 0; i < DRM_OUTPUT_MAX_UMODES; i++) |
5824 | + if (output->user_mode_ids[i] != 0) | 5824 | + if (output->user_mode_ids[i] != 0) |
5825 | + mode_count++; | 5825 | + mode_count++; |
@@ -5933,13 +5933,13 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5933 | + mode = idr_find(&dev->mode_config.crtc_idr, crtc_req->mode); | 5933 | + mode = idr_find(&dev->mode_config.crtc_idr, crtc_req->mode); |
5934 | + if (!mode || (mode->mode_id != crtc_req->mode)) { | 5934 | + if (!mode || (mode->mode_id != crtc_req->mode)) { |
5935 | + struct drm_output *output; | 5935 | + struct drm_output *output; |
5936 | + | 5936 | + |
5937 | + list_for_each_entry(output, | 5937 | + list_for_each_entry(output, |
5938 | + &dev->mode_config.output_list, | 5938 | + &dev->mode_config.output_list, |
5939 | + head) { | 5939 | + head) { |
5940 | + list_for_each_entry(mode, &output->modes, | 5940 | + list_for_each_entry(mode, &output->modes, |
5941 | + head) { | 5941 | + head) { |
5942 | + drm_mode_debug_printmodeline(dev, | 5942 | + drm_mode_debug_printmodeline(dev, |
5943 | + mode); | 5943 | + mode); |
5944 | + } | 5944 | + } |
5945 | + } | 5945 | + } |
@@ -5988,7 +5988,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
5988 | + output_set[i] = output; | 5988 | + output_set[i] = output; |
5989 | + } | 5989 | + } |
5990 | + } | 5990 | + } |
5991 | + | 5991 | + |
5992 | + ret = drm_crtc_set_config(crtc, crtc_req, mode, output_set, fb); | 5992 | + ret = drm_crtc_set_config(crtc, crtc_req, mode, output_set, fb); |
5993 | + | 5993 | + |
5994 | +out: | 5994 | +out: |
@@ -6349,7 +6349,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6349 | + struct drm_display_mode *mode; | 6349 | + struct drm_display_mode *mode; |
6350 | + int ret = -EINVAL; | 6350 | + int ret = -EINVAL; |
6351 | + | 6351 | + |
6352 | + mutex_lock(&dev->mode_config.mutex); | 6352 | + mutex_lock(&dev->mode_config.mutex); |
6353 | + mode = idr_find(&dev->mode_config.crtc_idr, *id); | 6353 | + mode = idr_find(&dev->mode_config.crtc_idr, *id); |
6354 | + if (!mode || (*id != mode->mode_id)) { | 6354 | + if (!mode || (*id != mode->mode_id)) { |
6355 | + goto out; | 6355 | + goto out; |
@@ -6448,7 +6448,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6448 | + | 6448 | + |
6449 | + | 6449 | + |
6450 | + ret = drm_mode_detachmode(dev, output, mode); | 6450 | + ret = drm_mode_detachmode(dev, output, mode); |
6451 | +out: | 6451 | +out: |
6452 | + mutex_unlock(&dev->mode_config.mutex); | 6452 | + mutex_unlock(&dev->mode_config.mutex); |
6453 | + return ret; | 6453 | + return ret; |
6454 | +} | 6454 | +} |
@@ -6461,7 +6461,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6461 | + property = kzalloc(sizeof(struct drm_output), GFP_KERNEL); | 6461 | + property = kzalloc(sizeof(struct drm_output), GFP_KERNEL); |
6462 | + if (!property) | 6462 | + if (!property) |
6463 | + return NULL; | 6463 | + return NULL; |
6464 | + | 6464 | + |
6465 | + property->values = kzalloc(sizeof(uint32_t)*num_values, GFP_KERNEL); | 6465 | + property->values = kzalloc(sizeof(uint32_t)*num_values, GFP_KERNEL); |
6466 | + if (!property->values) | 6466 | + if (!property->values) |
6467 | + goto fail; | 6467 | + goto fail; |
@@ -6493,7 +6493,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6493 | + if (!list_empty(&property->enum_list)) { | 6493 | + if (!list_empty(&property->enum_list)) { |
6494 | + list_for_each_entry(prop_enum, &property->enum_list, head) { | 6494 | + list_for_each_entry(prop_enum, &property->enum_list, head) { |
6495 | + if (prop_enum->value == value) { | 6495 | + if (prop_enum->value == value) { |
6496 | + strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN); | 6496 | + strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN); |
6497 | + prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0'; | 6497 | + prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0'; |
6498 | + return 0; | 6498 | + return 0; |
6499 | + } | 6499 | + } |
@@ -6504,7 +6504,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6504 | + if (!prop_enum) | 6504 | + if (!prop_enum) |
6505 | + return -ENOMEM; | 6505 | + return -ENOMEM; |
6506 | + | 6506 | + |
6507 | + strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN); | 6507 | + strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN); |
6508 | + prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0'; | 6508 | + prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0'; |
6509 | + prop_enum->value = value; | 6509 | + prop_enum->value = value; |
6510 | + | 6510 | + |
@@ -6526,7 +6526,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6526 | + kfree(property->values); | 6526 | + kfree(property->values); |
6527 | + drm_idr_put(dev, property->id); | 6527 | + drm_idr_put(dev, property->id); |
6528 | + list_del(&property->head); | 6528 | + list_del(&property->head); |
6529 | + kfree(property); | 6529 | + kfree(property); |
6530 | +} | 6530 | +} |
6531 | +EXPORT_SYMBOL(drm_property_destroy); | 6531 | +EXPORT_SYMBOL(drm_property_destroy); |
6532 | + | 6532 | + |
@@ -6612,8 +6612,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_crtc.c | |||
6612 | +} | 6612 | +} |
6613 | Index: linux-2.6.27/drivers/gpu/drm/drm_drv.c | 6613 | Index: linux-2.6.27/drivers/gpu/drm/drm_drv.c |
6614 | =================================================================== | 6614 | =================================================================== |
6615 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_drv.c 2009-01-14 11:54:35.000000000 +0000 | 6615 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_drv.c 2009-02-05 13:29:29.000000000 +0000 |
6616 | +++ linux-2.6.27/drivers/gpu/drm/drm_drv.c 2009-01-14 11:58:01.000000000 +0000 | 6616 | +++ linux-2.6.27/drivers/gpu/drm/drm_drv.c 2009-02-05 13:29:33.000000000 +0000 |
6617 | @@ -49,6 +49,9 @@ | 6617 | @@ -49,6 +49,9 @@ |
6618 | #include "drmP.h" | 6618 | #include "drmP.h" |
6619 | #include "drm_core.h" | 6619 | #include "drm_core.h" |
@@ -6833,7 +6833,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_drv.c | |||
6833 | Index: linux-2.6.27/drivers/gpu/drm/drm_edid.c | 6833 | Index: linux-2.6.27/drivers/gpu/drm/drm_edid.c |
6834 | =================================================================== | 6834 | =================================================================== |
6835 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 6835 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
6836 | +++ linux-2.6.27/drivers/gpu/drm/drm_edid.c 2009-01-14 11:58:01.000000000 +0000 | 6836 | +++ linux-2.6.27/drivers/gpu/drm/drm_edid.c 2009-02-05 13:29:33.000000000 +0000 |
6837 | @@ -0,0 +1,519 @@ | 6837 | @@ -0,0 +1,519 @@ |
6838 | +/* | 6838 | +/* |
6839 | + * Copyright (c) 2007 Intel Corporation | 6839 | + * Copyright (c) 2007 Intel Corporation |
@@ -7157,7 +7157,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_edid.c | |||
7157 | + if (i == 0 && edid->preferred_timing) | 7157 | + if (i == 0 && edid->preferred_timing) |
7158 | + newmode->type |= DRM_MODE_TYPE_PREFERRED; | 7158 | + newmode->type |= DRM_MODE_TYPE_PREFERRED; |
7159 | + drm_mode_probed_add(output, newmode); | 7159 | + drm_mode_probed_add(output, newmode); |
7160 | + | 7160 | + |
7161 | + modes++; | 7161 | + modes++; |
7162 | + continue; | 7162 | + continue; |
7163 | + } | 7163 | + } |
@@ -7303,7 +7303,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_edid.c | |||
7303 | + * @adapter: i2c adapter to use for DDC | 7303 | + * @adapter: i2c adapter to use for DDC |
7304 | + * | 7304 | + * |
7305 | + * Poke the given output's i2c channel to grab EDID data if possible. | 7305 | + * Poke the given output's i2c channel to grab EDID data if possible. |
7306 | + * | 7306 | + * |
7307 | + * Return edid data or NULL if we couldn't find any. | 7307 | + * Return edid data or NULL if we couldn't find any. |
7308 | + */ | 7308 | + */ |
7309 | +struct edid *drm_get_edid(struct drm_output *output, | 7309 | +struct edid *drm_get_edid(struct drm_output *output, |
@@ -7357,7 +7357,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_edid.c | |||
7357 | Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | 7357 | Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c |
7358 | =================================================================== | 7358 | =================================================================== |
7359 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 7359 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
7360 | +++ linux-2.6.27/drivers/gpu/drm/drm_fence.c 2009-01-14 11:58:01.000000000 +0000 | 7360 | +++ linux-2.6.27/drivers/gpu/drm/drm_fence.c 2009-02-05 13:29:33.000000000 +0000 |
7361 | @@ -0,0 +1,829 @@ | 7361 | @@ -0,0 +1,829 @@ |
7362 | +/************************************************************************** | 7362 | +/************************************************************************** |
7363 | + * | 7363 | + * |
@@ -7398,7 +7398,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7398 | + */ | 7398 | + */ |
7399 | + | 7399 | + |
7400 | +int drm_fence_wait_polling(struct drm_fence_object *fence, int lazy, | 7400 | +int drm_fence_wait_polling(struct drm_fence_object *fence, int lazy, |
7401 | + int interruptible, uint32_t mask, | 7401 | + int interruptible, uint32_t mask, |
7402 | + unsigned long end_jiffies) | 7402 | + unsigned long end_jiffies) |
7403 | +{ | 7403 | +{ |
7404 | + struct drm_device *dev = fence->dev; | 7404 | + struct drm_device *dev = fence->dev; |
@@ -7411,9 +7411,9 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7411 | + add_wait_queue(&fc->fence_queue, &entry); | 7411 | + add_wait_queue(&fc->fence_queue, &entry); |
7412 | + | 7412 | + |
7413 | + ret = 0; | 7413 | + ret = 0; |
7414 | + | 7414 | + |
7415 | + for (;;) { | 7415 | + for (;;) { |
7416 | + __set_current_state((interruptible) ? | 7416 | + __set_current_state((interruptible) ? |
7417 | + TASK_INTERRUPTIBLE : | 7417 | + TASK_INTERRUPTIBLE : |
7418 | + TASK_UNINTERRUPTIBLE); | 7418 | + TASK_UNINTERRUPTIBLE); |
7419 | + if (drm_fence_object_signaled(fence, mask)) | 7419 | + if (drm_fence_object_signaled(fence, mask)) |
@@ -7427,10 +7427,10 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7427 | + else if ((++count & 0x0F) == 0){ | 7427 | + else if ((++count & 0x0F) == 0){ |
7428 | + __set_current_state(TASK_RUNNING); | 7428 | + __set_current_state(TASK_RUNNING); |
7429 | + schedule(); | 7429 | + schedule(); |
7430 | + __set_current_state((interruptible) ? | 7430 | + __set_current_state((interruptible) ? |
7431 | + TASK_INTERRUPTIBLE : | 7431 | + TASK_INTERRUPTIBLE : |
7432 | + TASK_UNINTERRUPTIBLE); | 7432 | + TASK_UNINTERRUPTIBLE); |
7433 | + } | 7433 | + } |
7434 | + if (interruptible && signal_pending(current)) { | 7434 | + if (interruptible && signal_pending(current)) { |
7435 | + ret = -EAGAIN; | 7435 | + ret = -EAGAIN; |
7436 | + break; | 7436 | + break; |
@@ -7527,12 +7527,12 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7527 | + driver->sequence_mask; | 7527 | + driver->sequence_mask; |
7528 | + if (diff > driver->wrap_diff) | 7528 | + if (diff > driver->wrap_diff) |
7529 | + break; | 7529 | + break; |
7530 | + | 7530 | + |
7531 | + fc->waiting_types |= fence->waiting_types & ~fence->signaled_types; | 7531 | + fc->waiting_types |= fence->waiting_types & ~fence->signaled_types; |
7532 | + } | 7532 | + } |
7533 | + } | 7533 | + } |
7534 | + | 7534 | + |
7535 | + if (wake) | 7535 | + if (wake) |
7536 | + wake_up_all(&fc->fence_queue); | 7536 | + wake_up_all(&fc->fence_queue); |
7537 | +} | 7537 | +} |
7538 | +EXPORT_SYMBOL(drm_fence_handler); | 7538 | +EXPORT_SYMBOL(drm_fence_handler); |
@@ -7621,7 +7621,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7621 | + struct drm_device *dev = fence->dev; | 7621 | + struct drm_device *dev = fence->dev; |
7622 | + struct drm_fence_manager *fm = &dev->fm; | 7622 | + struct drm_fence_manager *fm = &dev->fm; |
7623 | + struct drm_fence_driver *driver = dev->driver->fence_driver; | 7623 | + struct drm_fence_driver *driver = dev->driver->fence_driver; |
7624 | + | 7624 | + |
7625 | + mask &= fence->type; | 7625 | + mask &= fence->type; |
7626 | + read_lock_irqsave(&fm->lock, flags); | 7626 | + read_lock_irqsave(&fm->lock, flags); |
7627 | + signaled = (mask & fence->signaled_types) == mask; | 7627 | + signaled = (mask & fence->signaled_types) == mask; |
@@ -7658,7 +7658,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7658 | + write_lock_irqsave(&fm->lock, irq_flags); | 7658 | + write_lock_irqsave(&fm->lock, irq_flags); |
7659 | + fence->waiting_types |= type; | 7659 | + fence->waiting_types |= type; |
7660 | + fc->waiting_types |= fence->waiting_types; | 7660 | + fc->waiting_types |= fence->waiting_types; |
7661 | + diff = (fence->sequence - fc->highest_waiting_sequence) & | 7661 | + diff = (fence->sequence - fc->highest_waiting_sequence) & |
7662 | + driver->sequence_mask; | 7662 | + driver->sequence_mask; |
7663 | + | 7663 | + |
7664 | + if (diff < driver->wrap_diff) | 7664 | + if (diff < driver->wrap_diff) |
@@ -7670,7 +7670,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7670 | + */ | 7670 | + */ |
7671 | + | 7671 | + |
7672 | + saved_pending_flush = fc->pending_flush; | 7672 | + saved_pending_flush = fc->pending_flush; |
7673 | + if (driver->needed_flush) | 7673 | + if (driver->needed_flush) |
7674 | + fc->pending_flush |= driver->needed_flush(fence); | 7674 | + fc->pending_flush |= driver->needed_flush(fence); |
7675 | + | 7675 | + |
7676 | + if (driver->poll) | 7676 | + if (driver->poll) |
@@ -7709,14 +7709,14 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7709 | + diff = (sequence - fence->sequence) & driver->sequence_mask; | 7709 | + diff = (sequence - fence->sequence) & driver->sequence_mask; |
7710 | + if (diff <= driver->flush_diff) | 7710 | + if (diff <= driver->flush_diff) |
7711 | + break; | 7711 | + break; |
7712 | + | 7712 | + |
7713 | + fence->waiting_types = fence->type; | 7713 | + fence->waiting_types = fence->type; |
7714 | + fc->waiting_types |= fence->type; | 7714 | + fc->waiting_types |= fence->type; |
7715 | + | 7715 | + |
7716 | + if (driver->needed_flush) | 7716 | + if (driver->needed_flush) |
7717 | + fc->pending_flush |= driver->needed_flush(fence); | 7717 | + fc->pending_flush |= driver->needed_flush(fence); |
7718 | + } | 7718 | + } |
7719 | + | 7719 | + |
7720 | + if (driver->poll) | 7720 | + if (driver->poll) |
7721 | + driver->poll(dev, fence_class, fc->waiting_types); | 7721 | + driver->poll(dev, fence_class, fc->waiting_types); |
7722 | + | 7722 | + |
@@ -7758,13 +7758,13 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
7758 | + if (driver->has_irq(dev, fence->fence_class, mask)) { | 7758 | + if (driver->has_irq(dev, fence->fence_class, mask)) { |
7759 | + if (!ignore_signals) | 7759 | + if (!ignore_signals) |
7760 | + ret = wait_event_interruptible_timeout | 7760 | + ret = wait_event_interruptible_timeout |
7761 | + (fc->fence_queue, | 7761 | + (fc->fence_queue, |
7762 | + drm_fence_object_signaled(fence, mask), | 7762 | + drm_fence_object_signaled(fence, mask), |
7763 | + 3 * DRM_HZ); | 7763 | + 3 * DRM_HZ); |
7764 | + else | 7764 | + else |
7765 | + ret = wait_event_timeout | 7765 | + ret = wait_event_timeout |
7766 | + (fc->fence_queue, | 7766 | + (fc->fence_queue, |
7767 | + drm_fence_object_signaled(fence, mask), | 7767 | + drm_fence_object_signaled(fence, mask), |
7768 | + 3 * DRM_HZ); | 7768 | + 3 * DRM_HZ); |
7769 | + | 7769 | + |
7770 | + if (unlikely(ret == -ERESTARTSYS)) | 7770 | + if (unlikely(ret == -ERESTARTSYS)) |
@@ -8190,8 +8190,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fence.c | |||
8190 | +} | 8190 | +} |
8191 | Index: linux-2.6.27/drivers/gpu/drm/drm_fops.c | 8191 | Index: linux-2.6.27/drivers/gpu/drm/drm_fops.c |
8192 | =================================================================== | 8192 | =================================================================== |
8193 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_fops.c 2009-01-14 11:54:35.000000000 +0000 | 8193 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_fops.c 2009-02-05 13:29:29.000000000 +0000 |
8194 | +++ linux-2.6.27/drivers/gpu/drm/drm_fops.c 2009-01-14 11:58:01.000000000 +0000 | 8194 | +++ linux-2.6.27/drivers/gpu/drm/drm_fops.c 2009-02-05 13:29:33.000000000 +0000 |
8195 | @@ -231,6 +231,7 @@ | 8195 | @@ -231,6 +231,7 @@ |
8196 | int minor_id = iminor(inode); | 8196 | int minor_id = iminor(inode); |
8197 | struct drm_file *priv; | 8197 | struct drm_file *priv; |
@@ -8279,8 +8279,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_fops.c | |||
8279 | 8279 | ||
8280 | Index: linux-2.6.27/drivers/gpu/drm/drm_hashtab.c | 8280 | Index: linux-2.6.27/drivers/gpu/drm/drm_hashtab.c |
8281 | =================================================================== | 8281 | =================================================================== |
8282 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_hashtab.c 2009-01-14 11:54:35.000000000 +0000 | 8282 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_hashtab.c 2008-10-09 23:13:53.000000000 +0100 |
8283 | +++ linux-2.6.27/drivers/gpu/drm/drm_hashtab.c 2009-01-14 11:58:01.000000000 +0000 | 8283 | +++ linux-2.6.27/drivers/gpu/drm/drm_hashtab.c 2009-02-05 13:29:33.000000000 +0000 |
8284 | @@ -29,7 +29,7 @@ | 8284 | @@ -29,7 +29,7 @@ |
8285 | * Simple open hash tab implementation. | 8285 | * Simple open hash tab implementation. |
8286 | * | 8286 | * |
@@ -8292,8 +8292,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_hashtab.c | |||
8292 | #include "drmP.h" | 8292 | #include "drmP.h" |
8293 | Index: linux-2.6.27/drivers/gpu/drm/drm_irq.c | 8293 | Index: linux-2.6.27/drivers/gpu/drm/drm_irq.c |
8294 | =================================================================== | 8294 | =================================================================== |
8295 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_irq.c 2009-01-14 11:54:35.000000000 +0000 | 8295 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_irq.c 2009-02-05 13:29:29.000000000 +0000 |
8296 | +++ linux-2.6.27/drivers/gpu/drm/drm_irq.c 2009-01-14 11:58:01.000000000 +0000 | 8296 | +++ linux-2.6.27/drivers/gpu/drm/drm_irq.c 2009-02-05 13:29:33.000000000 +0000 |
8297 | @@ -70,6 +70,7 @@ | 8297 | @@ -70,6 +70,7 @@ |
8298 | 8298 | ||
8299 | return 0; | 8299 | return 0; |
@@ -8737,8 +8737,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_irq.c | |||
8737 | * Tasklet wrapper function. | 8737 | * Tasklet wrapper function. |
8738 | Index: linux-2.6.27/drivers/gpu/drm/drm_mm.c | 8738 | Index: linux-2.6.27/drivers/gpu/drm/drm_mm.c |
8739 | =================================================================== | 8739 | =================================================================== |
8740 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_mm.c 2009-01-14 11:54:35.000000000 +0000 | 8740 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_mm.c 2009-02-05 13:29:29.000000000 +0000 |
8741 | +++ linux-2.6.27/drivers/gpu/drm/drm_mm.c 2009-01-14 11:58:01.000000000 +0000 | 8741 | +++ linux-2.6.27/drivers/gpu/drm/drm_mm.c 2009-02-05 13:29:33.000000000 +0000 |
8742 | @@ -38,7 +38,7 @@ | 8742 | @@ -38,7 +38,7 @@ |
8743 | * Aligned allocations can also see improvement. | 8743 | * Aligned allocations can also see improvement. |
8744 | * | 8744 | * |
@@ -8751,7 +8751,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_mm.c | |||
8751 | Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | 8751 | Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c |
8752 | =================================================================== | 8752 | =================================================================== |
8753 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 8753 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
8754 | +++ linux-2.6.27/drivers/gpu/drm/drm_modes.c 2009-01-14 11:58:01.000000000 +0000 | 8754 | +++ linux-2.6.27/drivers/gpu/drm/drm_modes.c 2009-02-05 13:29:33.000000000 +0000 |
8755 | @@ -0,0 +1,560 @@ | 8755 | @@ -0,0 +1,560 @@ |
8756 | +/* | 8756 | +/* |
8757 | + * Copyright © 1997-2003 by The XFree86 Project, Inc. | 8757 | + * Copyright © 1997-2003 by The XFree86 Project, Inc. |
@@ -8927,7 +8927,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
8927 | + return refresh; | 8927 | + return refresh; |
8928 | +} | 8928 | +} |
8929 | +EXPORT_SYMBOL(drm_mode_vrefresh); | 8929 | +EXPORT_SYMBOL(drm_mode_vrefresh); |
8930 | + | 8930 | + |
8931 | +/** | 8931 | +/** |
8932 | + * drm_mode_set_crtcinfo - set CRTC modesetting parameters | 8932 | + * drm_mode_set_crtcinfo - set CRTC modesetting parameters |
8933 | + * @p: mode | 8933 | + * @p: mode |
@@ -9045,7 +9045,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9045 | + mode1->vscan == mode2->vscan && | 9045 | + mode1->vscan == mode2->vscan && |
9046 | + mode1->flags == mode2->flags) | 9046 | + mode1->flags == mode2->flags) |
9047 | + return true; | 9047 | + return true; |
9048 | + | 9048 | + |
9049 | + return false; | 9049 | + return false; |
9050 | +} | 9050 | +} |
9051 | +EXPORT_SYMBOL(drm_mode_equal); | 9051 | +EXPORT_SYMBOL(drm_mode_equal); |
@@ -9074,7 +9074,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9074 | + list_for_each_entry(mode, mode_list, head) { | 9074 | + list_for_each_entry(mode, mode_list, head) { |
9075 | + if (maxPitch > 0 && mode->hdisplay > maxPitch) | 9075 | + if (maxPitch > 0 && mode->hdisplay > maxPitch) |
9076 | + mode->status = MODE_BAD_WIDTH; | 9076 | + mode->status = MODE_BAD_WIDTH; |
9077 | + | 9077 | + |
9078 | + if (maxX > 0 && mode->hdisplay > maxX) | 9078 | + if (maxX > 0 && mode->hdisplay > maxX) |
9079 | + mode->status = MODE_VIRTUAL_X; | 9079 | + mode->status = MODE_VIRTUAL_X; |
9080 | + | 9080 | + |
@@ -9189,7 +9189,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9189 | +{ | 9189 | +{ |
9190 | + struct list_head *p, *q, *e, *list, *tail, *oldhead; | 9190 | + struct list_head *p, *q, *e, *list, *tail, *oldhead; |
9191 | + int insize, nmerges, psize, qsize, i; | 9191 | + int insize, nmerges, psize, qsize, i; |
9192 | + | 9192 | + |
9193 | + list = head->next; | 9193 | + list = head->next; |
9194 | + list_del(head); | 9194 | + list_del(head); |
9195 | + insize = 1; | 9195 | + insize = 1; |
@@ -9197,7 +9197,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9197 | + p = oldhead = list; | 9197 | + p = oldhead = list; |
9198 | + list = tail = NULL; | 9198 | + list = tail = NULL; |
9199 | + nmerges = 0; | 9199 | + nmerges = 0; |
9200 | + | 9200 | + |
9201 | + while (p) { | 9201 | + while (p) { |
9202 | + nmerges++; | 9202 | + nmerges++; |
9203 | + q = p; | 9203 | + q = p; |
@@ -9208,7 +9208,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9208 | + if (!q) | 9208 | + if (!q) |
9209 | + break; | 9209 | + break; |
9210 | + } | 9210 | + } |
9211 | + | 9211 | + |
9212 | + qsize = insize; | 9212 | + qsize = insize; |
9213 | + while (psize > 0 || (qsize > 0 && q)) { | 9213 | + while (psize > 0 || (qsize > 0 && q)) { |
9214 | + if (!psize) { | 9214 | + if (!psize) { |
@@ -9245,16 +9245,16 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9245 | + } | 9245 | + } |
9246 | + p = q; | 9246 | + p = q; |
9247 | + } | 9247 | + } |
9248 | + | 9248 | + |
9249 | + tail->next = list; | 9249 | + tail->next = list; |
9250 | + list->prev = tail; | 9250 | + list->prev = tail; |
9251 | + | 9251 | + |
9252 | + if (nmerges <= 1) | 9252 | + if (nmerges <= 1) |
9253 | + break; | 9253 | + break; |
9254 | + | 9254 | + |
9255 | + insize *= 2; | 9255 | + insize *= 2; |
9256 | + } | 9256 | + } |
9257 | + | 9257 | + |
9258 | + head->next = list; | 9258 | + head->next = list; |
9259 | + head->prev = list->prev; | 9259 | + head->prev = list->prev; |
9260 | + list->prev->next = head; | 9260 | + list->prev->next = head; |
@@ -9316,7 +9316,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_modes.c | |||
9316 | Index: linux-2.6.27/drivers/gpu/drm/drm_object.c | 9316 | Index: linux-2.6.27/drivers/gpu/drm/drm_object.c |
9317 | =================================================================== | 9317 | =================================================================== |
9318 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 9318 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
9319 | +++ linux-2.6.27/drivers/gpu/drm/drm_object.c 2009-01-14 11:58:01.000000000 +0000 | 9319 | +++ linux-2.6.27/drivers/gpu/drm/drm_object.c 2009-02-05 13:29:33.000000000 +0000 |
9320 | @@ -0,0 +1,294 @@ | 9320 | @@ -0,0 +1,294 @@ |
9321 | +/************************************************************************** | 9321 | +/************************************************************************** |
9322 | + * | 9322 | + * |
@@ -9615,7 +9615,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_object.c | |||
9615 | Index: linux-2.6.27/drivers/gpu/drm/drm_regman.c | 9615 | Index: linux-2.6.27/drivers/gpu/drm/drm_regman.c |
9616 | =================================================================== | 9616 | =================================================================== |
9617 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 9617 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
9618 | +++ linux-2.6.27/drivers/gpu/drm/drm_regman.c 2009-01-14 11:58:01.000000000 +0000 | 9618 | +++ linux-2.6.27/drivers/gpu/drm/drm_regman.c 2009-02-05 13:29:33.000000000 +0000 |
9619 | @@ -0,0 +1,200 @@ | 9619 | @@ -0,0 +1,200 @@ |
9620 | +/************************************************************************** | 9620 | +/************************************************************************** |
9621 | + * Copyright (c) 2007 Tungsten Graphics, Inc., Cedar Park, TX., USA | 9621 | + * Copyright (c) 2007 Tungsten Graphics, Inc., Cedar Park, TX., USA |
@@ -9819,8 +9819,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_regman.c | |||
9819 | +EXPORT_SYMBOL(drm_regs_init); | 9819 | +EXPORT_SYMBOL(drm_regs_init); |
9820 | Index: linux-2.6.27/drivers/gpu/drm/drm_sman.c | 9820 | Index: linux-2.6.27/drivers/gpu/drm/drm_sman.c |
9821 | =================================================================== | 9821 | =================================================================== |
9822 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_sman.c 2009-01-14 11:54:35.000000000 +0000 | 9822 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_sman.c 2008-10-09 23:13:53.000000000 +0100 |
9823 | +++ linux-2.6.27/drivers/gpu/drm/drm_sman.c 2009-01-14 11:58:01.000000000 +0000 | 9823 | +++ linux-2.6.27/drivers/gpu/drm/drm_sman.c 2009-02-05 13:29:33.000000000 +0000 |
9824 | @@ -33,7 +33,7 @@ | 9824 | @@ -33,7 +33,7 @@ |
9825 | * struct or a context identifier. | 9825 | * struct or a context identifier. |
9826 | * | 9826 | * |
@@ -9832,8 +9832,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_sman.c | |||
9832 | #include "drm_sman.h" | 9832 | #include "drm_sman.h" |
9833 | Index: linux-2.6.27/drivers/gpu/drm/drm_stub.c | 9833 | Index: linux-2.6.27/drivers/gpu/drm/drm_stub.c |
9834 | =================================================================== | 9834 | =================================================================== |
9835 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_stub.c 2009-01-14 11:54:35.000000000 +0000 | 9835 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_stub.c 2009-02-05 13:29:29.000000000 +0000 |
9836 | +++ linux-2.6.27/drivers/gpu/drm/drm_stub.c 2009-01-14 11:58:01.000000000 +0000 | 9836 | +++ linux-2.6.27/drivers/gpu/drm/drm_stub.c 2009-02-05 13:29:33.000000000 +0000 |
9837 | @@ -97,6 +97,7 @@ | 9837 | @@ -97,6 +97,7 @@ |
9838 | init_timer(&dev->timer); | 9838 | init_timer(&dev->timer); |
9839 | mutex_init(&dev->struct_mutex); | 9839 | mutex_init(&dev->struct_mutex); |
@@ -9890,7 +9890,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_stub.c | |||
9890 | Index: linux-2.6.27/drivers/gpu/drm/drm_ttm.c | 9890 | Index: linux-2.6.27/drivers/gpu/drm/drm_ttm.c |
9891 | =================================================================== | 9891 | =================================================================== |
9892 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 9892 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
9893 | +++ linux-2.6.27/drivers/gpu/drm/drm_ttm.c 2009-01-14 11:58:01.000000000 +0000 | 9893 | +++ linux-2.6.27/drivers/gpu/drm/drm_ttm.c 2009-02-05 13:29:33.000000000 +0000 |
9894 | @@ -0,0 +1,430 @@ | 9894 | @@ -0,0 +1,430 @@ |
9895 | +/************************************************************************** | 9895 | +/************************************************************************** |
9896 | + * | 9896 | + * |
@@ -10324,8 +10324,8 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_ttm.c | |||
10324 | +EXPORT_SYMBOL(drm_bind_ttm); | 10324 | +EXPORT_SYMBOL(drm_bind_ttm); |
10325 | Index: linux-2.6.27/drivers/gpu/drm/drm_vm.c | 10325 | Index: linux-2.6.27/drivers/gpu/drm/drm_vm.c |
10326 | =================================================================== | 10326 | =================================================================== |
10327 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_vm.c 2009-01-14 11:54:35.000000000 +0000 | 10327 | --- linux-2.6.27.orig/drivers/gpu/drm/drm_vm.c 2008-10-09 23:13:53.000000000 +0100 |
10328 | +++ linux-2.6.27/drivers/gpu/drm/drm_vm.c 2009-01-14 11:58:01.000000000 +0000 | 10328 | +++ linux-2.6.27/drivers/gpu/drm/drm_vm.c 2009-02-05 13:29:33.000000000 +0000 |
10329 | @@ -40,6 +40,10 @@ | 10329 | @@ -40,6 +40,10 @@ |
10330 | 10330 | ||
10331 | static void drm_vm_open(struct vm_area_struct *vma); | 10331 | static void drm_vm_open(struct vm_area_struct *vma); |
@@ -10480,7 +10480,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_vm.c | |||
10480 | + if (address >= vma->vm_end) | 10480 | + if (address >= vma->vm_end) |
10481 | + break; | 10481 | + break; |
10482 | + if (bus_size) { | 10482 | + if (bus_size) { |
10483 | + pfn = ((bus_base + bus_offset) >> PAGE_SHIFT) | 10483 | + pfn = ((bus_base + bus_offset) >> PAGE_SHIFT) |
10484 | + + page_offset; | 10484 | + + page_offset; |
10485 | + } else { | 10485 | + } else { |
10486 | + page = drm_ttm_get_page(ttm, page_offset); | 10486 | + page = drm_ttm_get_page(ttm, page_offset); |
@@ -10573,7 +10573,7 @@ Index: linux-2.6.27/drivers/gpu/drm/drm_vm.c | |||
10573 | Index: linux-2.6.27/drivers/gpu/drm/psb/Makefile | 10573 | Index: linux-2.6.27/drivers/gpu/drm/psb/Makefile |
10574 | =================================================================== | 10574 | =================================================================== |
10575 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 10575 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
10576 | +++ linux-2.6.27/drivers/gpu/drm/psb/Makefile 2009-01-14 11:58:01.000000000 +0000 | 10576 | +++ linux-2.6.27/drivers/gpu/drm/psb/Makefile 2009-02-05 13:29:33.000000000 +0000 |
10577 | @@ -0,0 +1,13 @@ | 10577 | @@ -0,0 +1,13 @@ |
10578 | +# | 10578 | +# |
10579 | +# Makefile for the drm device driver. This driver provides support for the | 10579 | +# Makefile for the drm device driver. This driver provides support for the |
@@ -10591,7 +10591,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/Makefile | |||
10591 | Index: linux-2.6.27/drivers/gpu/drm/psb/i915_drv.h | 10591 | Index: linux-2.6.27/drivers/gpu/drm/psb/i915_drv.h |
10592 | =================================================================== | 10592 | =================================================================== |
10593 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 10593 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
10594 | +++ linux-2.6.27/drivers/gpu/drm/psb/i915_drv.h 2009-01-14 11:58:01.000000000 +0000 | 10594 | +++ linux-2.6.27/drivers/gpu/drm/psb/i915_drv.h 2009-02-05 13:29:33.000000000 +0000 |
10595 | @@ -0,0 +1,795 @@ | 10595 | @@ -0,0 +1,795 @@ |
10596 | +/* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- | 10596 | +/* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- |
10597 | + */ | 10597 | + */ |
@@ -11391,28 +11391,33 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/i915_drv.h | |||
11391 | Index: linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h | 11391 | Index: linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h |
11392 | =================================================================== | 11392 | =================================================================== |
11393 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 11393 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
11394 | +++ linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h 2009-01-14 11:58:01.000000000 +0000 | 11394 | +++ linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h 2009-02-05 18:29:58.000000000 +0000 |
11395 | @@ -0,0 +1,487 @@ | 11395 | @@ -0,0 +1,98 @@ |
11396 | +#define BLC_PWM_CTL 0x61254 | 11396 | +/* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. |
11397 | +#define BLC_PWM_CTL2 0x61250 | 11397 | + * All Rights Reserved. |
11398 | +#define BACKLIGHT_MODULATION_FREQ_SHIFT (17) | ||
11399 | +/** | ||
11400 | + * This is the most significant 15 bits of the number of backlight cycles in a | ||
11401 | + * complete cycle of the modulated backlight control. | ||
11402 | + * | 11398 | + * |
11403 | + * The actual value is this field multiplied by two. | 11399 | + * Permission is hereby granted, free of charge, to any person obtaining a |
11404 | + */ | 11400 | + * copy of this software and associated documentation files (the |
11405 | +#define BACKLIGHT_MODULATION_FREQ_MASK (0x7fff << 17) | 11401 | + * "Software"), to deal in the Software without restriction, including |
11406 | +#define BLM_LEGACY_MODE (1 << 16) | 11402 | + * without limitation the rights to use, copy, modify, merge, publish, |
11407 | +/** | 11403 | + * distribute, sub license, and/or sell copies of the Software, and to |
11408 | + * This is the number of cycles out of the backlight modulation cycle for which | 11404 | + * permit persons to whom the Software is furnished to do so, subject to |
11409 | + * the backlight is on. | 11405 | + * the following conditions: |
11410 | + * | 11406 | + * |
11411 | + * This field must be no greater than the number of cycles in the complete | 11407 | + * The above copyright notice and this permission notice (including the |
11412 | + * backlight modulation cycle. | 11408 | + * next paragraph) shall be included in all copies or substantial portions |
11409 | + * of the Software. | ||
11410 | + * | ||
11411 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
11412 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
11413 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | ||
11414 | + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR | ||
11415 | + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
11416 | + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
11417 | + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
11413 | + */ | 11418 | + */ |
11414 | +#define BACKLIGHT_DUTY_CYCLE_SHIFT (0) | 11419 | + |
11415 | +#define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) | 11420 | +#include "../i915/i915_reg.h" |
11416 | + | 11421 | + |
11417 | +#define I915_GCFGC 0xf0 | 11422 | +#define I915_GCFGC 0xf0 |
11418 | +#define I915_LOW_FREQUENCY_ENABLE (1 << 7) | 11423 | +#define I915_LOW_FREQUENCY_ENABLE (1 << 7) |
@@ -11427,426 +11432,11 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h | |||
11427 | +#define I855_CLOCK_100_133 (2 << 0) | 11432 | +#define I855_CLOCK_100_133 (2 << 0) |
11428 | +#define I855_CLOCK_166_250 (3 << 0) | 11433 | +#define I855_CLOCK_166_250 (3 << 0) |
11429 | + | 11434 | + |
11430 | +/* I830 CRTC registers */ | ||
11431 | +#define HTOTAL_A 0x60000 | ||
11432 | +#define HBLANK_A 0x60004 | ||
11433 | +#define HSYNC_A 0x60008 | ||
11434 | +#define VTOTAL_A 0x6000c | ||
11435 | +#define VBLANK_A 0x60010 | ||
11436 | +#define VSYNC_A 0x60014 | ||
11437 | +#define PIPEASRC 0x6001c | ||
11438 | +#define BCLRPAT_A 0x60020 | ||
11439 | +#define VSYNCSHIFT_A 0x60028 | ||
11440 | + | ||
11441 | +#define HTOTAL_B 0x61000 | ||
11442 | +#define HBLANK_B 0x61004 | ||
11443 | +#define HSYNC_B 0x61008 | ||
11444 | +#define VTOTAL_B 0x6100c | ||
11445 | +#define VBLANK_B 0x61010 | ||
11446 | +#define VSYNC_B 0x61014 | ||
11447 | +#define PIPEBSRC 0x6101c | ||
11448 | +#define BCLRPAT_B 0x61020 | ||
11449 | +#define VSYNCSHIFT_B 0x61028 | ||
11450 | + | ||
11451 | +#define PP_STATUS 0x61200 | ||
11452 | +# define PP_ON (1 << 31) | ||
11453 | +/** | ||
11454 | + * Indicates that all dependencies of the panel are on: | ||
11455 | + * | ||
11456 | + * - PLL enabled | ||
11457 | + * - pipe enabled | ||
11458 | + * - LVDS/DVOB/DVOC on | ||
11459 | + */ | ||
11460 | +# define PP_READY (1 << 30) | ||
11461 | +# define PP_SEQUENCE_NONE (0 << 28) | ||
11462 | +# define PP_SEQUENCE_ON (1 << 28) | ||
11463 | +# define PP_SEQUENCE_OFF (2 << 28) | ||
11464 | +# define PP_SEQUENCE_MASK 0x30000000 | ||
11465 | +#define PP_CONTROL 0x61204 | ||
11466 | +# define POWER_TARGET_ON (1 << 0) | ||
11467 | + | ||
11468 | +#define LVDSPP_ON 0x61208 | 11435 | +#define LVDSPP_ON 0x61208 |
11469 | +#define LVDSPP_OFF 0x6120c | 11436 | +#define LVDSPP_OFF 0x6120c |
11470 | +#define PP_CYCLE 0x61210 | 11437 | +#define PP_CYCLE 0x61210 |
11471 | + | 11438 | + |
11472 | +#define PFIT_CONTROL 0x61230 | ||
11473 | +# define PFIT_ENABLE (1 << 31) | ||
11474 | +# define PFIT_PIPE_MASK (3 << 29) | ||
11475 | +# define PFIT_PIPE_SHIFT 29 | ||
11476 | +# define VERT_INTERP_DISABLE (0 << 10) | ||
11477 | +# define VERT_INTERP_BILINEAR (1 << 10) | ||
11478 | +# define VERT_INTERP_MASK (3 << 10) | ||
11479 | +# define VERT_AUTO_SCALE (1 << 9) | ||
11480 | +# define HORIZ_INTERP_DISABLE (0 << 6) | ||
11481 | +# define HORIZ_INTERP_BILINEAR (1 << 6) | ||
11482 | +# define HORIZ_INTERP_MASK (3 << 6) | ||
11483 | +# define HORIZ_AUTO_SCALE (1 << 5) | ||
11484 | +# define PANEL_8TO6_DITHER_ENABLE (1 << 3) | ||
11485 | + | ||
11486 | +#define PFIT_PGM_RATIOS 0x61234 | ||
11487 | +# define PFIT_VERT_SCALE_MASK 0xfff00000 | ||
11488 | +# define PFIT_HORIZ_SCALE_MASK 0x0000fff0 | ||
11489 | + | ||
11490 | +#define PFIT_AUTO_RATIOS 0x61238 | ||
11491 | + | ||
11492 | + | ||
11493 | +#define DPLL_A 0x06014 | ||
11494 | +#define DPLL_B 0x06018 | ||
11495 | +# define DPLL_VCO_ENABLE (1 << 31) | ||
11496 | +# define DPLL_DVO_HIGH_SPEED (1 << 30) | ||
11497 | +# define DPLL_SYNCLOCK_ENABLE (1 << 29) | ||
11498 | +# define DPLL_VGA_MODE_DIS (1 << 28) | ||
11499 | +# define DPLLB_MODE_DAC_SERIAL (1 << 26) /* i915 */ | ||
11500 | +# define DPLLB_MODE_LVDS (2 << 26) /* i915 */ | ||
11501 | +# define DPLL_MODE_MASK (3 << 26) | ||
11502 | +# define DPLL_DAC_SERIAL_P2_CLOCK_DIV_10 (0 << 24) /* i915 */ | ||
11503 | +# define DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 (1 << 24) /* i915 */ | ||
11504 | +# define DPLLB_LVDS_P2_CLOCK_DIV_14 (0 << 24) /* i915 */ | ||
11505 | +# define DPLLB_LVDS_P2_CLOCK_DIV_7 (1 << 24) /* i915 */ | ||
11506 | +# define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ | ||
11507 | +# define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ | ||
11508 | +/** | ||
11509 | + * The i830 generation, in DAC/serial mode, defines p1 as two plus this | ||
11510 | + * bitfield, or just 2 if PLL_P1_DIVIDE_BY_TWO is set. | ||
11511 | + */ | ||
11512 | +# define DPLL_FPA01_P1_POST_DIV_MASK_I830 0x001f0000 | ||
11513 | +/** | ||
11514 | + * The i830 generation, in LVDS mode, defines P1 as the bit number set within | ||
11515 | + * this field (only one bit may be set). | ||
11516 | + */ | ||
11517 | +# define DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS 0x003f0000 | ||
11518 | +# define DPLL_FPA01_P1_POST_DIV_SHIFT 16 | ||
11519 | +# define PLL_P2_DIVIDE_BY_4 (1 << 23) /* i830, required in DVO non-gang */ | ||
11520 | +# define PLL_P1_DIVIDE_BY_TWO (1 << 21) /* i830 */ | ||
11521 | +# define PLL_REF_INPUT_DREFCLK (0 << 13) | ||
11522 | +# define PLL_REF_INPUT_TVCLKINA (1 << 13) /* i830 */ | ||
11523 | +# define PLL_REF_INPUT_TVCLKINBC (2 << 13) /* SDVO TVCLKIN */ | ||
11524 | +# define PLLB_REF_INPUT_SPREADSPECTRUMIN (3 << 13) | ||
11525 | +# define PLL_REF_INPUT_MASK (3 << 13) | ||
11526 | +# define PLL_LOAD_PULSE_PHASE_SHIFT 9 | ||
11527 | +/* | ||
11528 | + * Parallel to Serial Load Pulse phase selection. | ||
11529 | + * Selects the phase for the 10X DPLL clock for the PCIe | ||
11530 | + * digital display port. The range is 4 to 13; 10 or more | ||
11531 | + * is just a flip delay. The default is 6 | ||
11532 | + */ | ||
11533 | +# define PLL_LOAD_PULSE_PHASE_MASK (0xf << PLL_LOAD_PULSE_PHASE_SHIFT) | ||
11534 | +# define DISPLAY_RATE_SELECT_FPA1 (1 << 8) | ||
11535 | + | ||
11536 | +/** | ||
11537 | + * SDVO multiplier for 945G/GM. Not used on 965. | ||
11538 | + * | ||
11539 | + * \sa DPLL_MD_UDI_MULTIPLIER_MASK | ||
11540 | + */ | ||
11541 | +# define SDVO_MULTIPLIER_MASK 0x000000ff | ||
11542 | +# define SDVO_MULTIPLIER_SHIFT_HIRES 4 | ||
11543 | +# define SDVO_MULTIPLIER_SHIFT_VGA 0 | ||
11544 | + | ||
11545 | +/** @defgroup DPLL_MD | ||
11546 | + * @{ | ||
11547 | + */ | ||
11548 | +/** Pipe A SDVO/UDI clock multiplier/divider register for G965. */ | ||
11549 | +#define DPLL_A_MD 0x0601c | ||
11550 | +/** Pipe B SDVO/UDI clock multiplier/divider register for G965. */ | ||
11551 | +#define DPLL_B_MD 0x06020 | ||
11552 | +/** | ||
11553 | + * UDI pixel divider, controlling how many pixels are stuffed into a packet. | ||
11554 | + * | ||
11555 | + * Value is pixels minus 1. Must be set to 1 pixel for SDVO. | ||
11556 | + */ | ||
11557 | +# define DPLL_MD_UDI_DIVIDER_MASK 0x3f000000 | ||
11558 | +# define DPLL_MD_UDI_DIVIDER_SHIFT 24 | ||
11559 | +/** UDI pixel divider for VGA, same as DPLL_MD_UDI_DIVIDER_MASK. */ | ||
11560 | +# define DPLL_MD_VGA_UDI_DIVIDER_MASK 0x003f0000 | ||
11561 | +# define DPLL_MD_VGA_UDI_DIVIDER_SHIFT 16 | ||
11562 | +/** | ||
11563 | + * SDVO/UDI pixel multiplier. | ||
11564 | + * | ||
11565 | + * SDVO requires that the bus clock rate be between 1 and 2 Ghz, and the bus | ||
11566 | + * clock rate is 10 times the DPLL clock. At low resolution/refresh rate | ||
11567 | + * modes, the bus rate would be below the limits, so SDVO allows for stuffing | ||
11568 | + * dummy bytes in the datastream at an increased clock rate, with both sides of | ||
11569 | + * the link knowing how many bytes are fill. | ||
11570 | + * | ||
11571 | + * So, for a mode with a dotclock of 65Mhz, we would want to double the clock | ||
11572 | + * rate to 130Mhz to get a bus rate of 1.30Ghz. The DPLL clock rate would be | ||
11573 | + * set to 130Mhz, and the SDVO multiplier set to 2x in this register and | ||
11574 | + * through an SDVO command. | ||
11575 | + * | ||
11576 | + * This register field has values of multiplication factor minus 1, with | ||
11577 | + * a maximum multiplier of 5 for SDVO. | ||
11578 | + */ | ||
11579 | +# define DPLL_MD_UDI_MULTIPLIER_MASK 0x00003f00 | ||
11580 | +# define DPLL_MD_UDI_MULTIPLIER_SHIFT 8 | ||
11581 | +/** SDVO/UDI pixel multiplier for VGA, same as DPLL_MD_UDI_MULTIPLIER_MASK. | ||
11582 | + * This best be set to the default value (3) or the CRT won't work. No, | ||
11583 | + * I don't entirely understand what this does... | ||
11584 | + */ | ||
11585 | +# define DPLL_MD_VGA_UDI_MULTIPLIER_MASK 0x0000003f | ||
11586 | +# define DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT 0 | ||
11587 | +/** @} */ | ||
11588 | + | ||
11589 | +#define DPLL_TEST 0x606c | ||
11590 | +# define DPLLB_TEST_SDVO_DIV_1 (0 << 22) | ||
11591 | +# define DPLLB_TEST_SDVO_DIV_2 (1 << 22) | ||
11592 | +# define DPLLB_TEST_SDVO_DIV_4 (2 << 22) | ||
11593 | +# define DPLLB_TEST_SDVO_DIV_MASK (3 << 22) | ||
11594 | +# define DPLLB_TEST_N_BYPASS (1 << 19) | ||
11595 | +# define DPLLB_TEST_M_BYPASS (1 << 18) | ||
11596 | +# define DPLLB_INPUT_BUFFER_ENABLE (1 << 16) | ||
11597 | +# define DPLLA_TEST_N_BYPASS (1 << 3) | ||
11598 | +# define DPLLA_TEST_M_BYPASS (1 << 2) | ||
11599 | +# define DPLLA_INPUT_BUFFER_ENABLE (1 << 0) | ||
11600 | + | ||
11601 | +#define ADPA 0x61100 | ||
11602 | +#define ADPA_DAC_ENABLE (1<<31) | ||
11603 | +#define ADPA_DAC_DISABLE 0 | ||
11604 | +#define ADPA_PIPE_SELECT_MASK (1<<30) | ||
11605 | +#define ADPA_PIPE_A_SELECT 0 | ||
11606 | +#define ADPA_PIPE_B_SELECT (1<<30) | ||
11607 | +#define ADPA_USE_VGA_HVPOLARITY (1<<15) | ||
11608 | +#define ADPA_SETS_HVPOLARITY 0 | ||
11609 | +#define ADPA_VSYNC_CNTL_DISABLE (1<<11) | ||
11610 | +#define ADPA_VSYNC_CNTL_ENABLE 0 | ||
11611 | +#define ADPA_HSYNC_CNTL_DISABLE (1<<10) | ||
11612 | +#define ADPA_HSYNC_CNTL_ENABLE 0 | ||
11613 | +#define ADPA_VSYNC_ACTIVE_HIGH (1<<4) | ||
11614 | +#define ADPA_VSYNC_ACTIVE_LOW 0 | ||
11615 | +#define ADPA_HSYNC_ACTIVE_HIGH (1<<3) | ||
11616 | +#define ADPA_HSYNC_ACTIVE_LOW 0 | ||
11617 | + | ||
11618 | +#define FPA0 0x06040 | ||
11619 | +#define FPA1 0x06044 | ||
11620 | +#define FPB0 0x06048 | ||
11621 | +#define FPB1 0x0604c | ||
11622 | +# define FP_N_DIV_MASK 0x003f0000 | ||
11623 | +# define FP_N_DIV_SHIFT 16 | ||
11624 | +# define FP_M1_DIV_MASK 0x00003f00 | ||
11625 | +# define FP_M1_DIV_SHIFT 8 | ||
11626 | +# define FP_M2_DIV_MASK 0x0000003f | ||
11627 | +# define FP_M2_DIV_SHIFT 0 | ||
11628 | + | ||
11629 | + | ||
11630 | +#define PORT_HOTPLUG_EN 0x61110 | ||
11631 | +# define SDVOB_HOTPLUG_INT_EN (1 << 26) | ||
11632 | +# define SDVOC_HOTPLUG_INT_EN (1 << 25) | ||
11633 | +# define TV_HOTPLUG_INT_EN (1 << 18) | ||
11634 | +# define CRT_HOTPLUG_INT_EN (1 << 9) | ||
11635 | +# define CRT_HOTPLUG_FORCE_DETECT (1 << 3) | ||
11636 | + | ||
11637 | +#define PORT_HOTPLUG_STAT 0x61114 | ||
11638 | +# define CRT_HOTPLUG_INT_STATUS (1 << 11) | ||
11639 | +# define TV_HOTPLUG_INT_STATUS (1 << 10) | ||
11640 | +# define CRT_HOTPLUG_MONITOR_MASK (3 << 8) | ||
11641 | +# define CRT_HOTPLUG_MONITOR_COLOR (3 << 8) | ||
11642 | +# define CRT_HOTPLUG_MONITOR_MONO (2 << 8) | ||
11643 | +# define CRT_HOTPLUG_MONITOR_NONE (0 << 8) | ||
11644 | +# define SDVOC_HOTPLUG_INT_STATUS (1 << 7) | ||
11645 | +# define SDVOB_HOTPLUG_INT_STATUS (1 << 6) | ||
11646 | + | ||
11647 | +#define SDVOB 0x61140 | ||
11648 | +#define SDVOC 0x61160 | ||
11649 | +#define SDVO_ENABLE (1 << 31) | ||
11650 | +#define SDVO_PIPE_B_SELECT (1 << 30) | ||
11651 | +#define SDVO_STALL_SELECT (1 << 29) | ||
11652 | +#define SDVO_INTERRUPT_ENABLE (1 << 26) | ||
11653 | +/** | ||
11654 | + * 915G/GM SDVO pixel multiplier. | ||
11655 | + * | ||
11656 | + * Programmed value is multiplier - 1, up to 5x. | ||
11657 | + * | ||
11658 | + * \sa DPLL_MD_UDI_MULTIPLIER_MASK | ||
11659 | + */ | ||
11660 | +#define SDVO_PORT_MULTIPLY_MASK (7 << 23) | ||
11661 | +#define SDVO_PORT_MULTIPLY_SHIFT 23 | ||
11662 | +#define SDVO_PHASE_SELECT_MASK (15 << 19) | ||
11663 | +#define SDVO_PHASE_SELECT_DEFAULT (6 << 19) | ||
11664 | +#define SDVO_CLOCK_OUTPUT_INVERT (1 << 18) | ||
11665 | +#define SDVOC_GANG_MODE (1 << 16) | ||
11666 | +#define SDVO_BORDER_ENABLE (1 << 7) | ||
11667 | +#define SDVOB_PCIE_CONCURRENCY (1 << 3) | ||
11668 | +#define SDVO_DETECTED (1 << 2) | ||
11669 | +/* Bits to be preserved when writing */ | ||
11670 | +#define SDVOB_PRESERVE_MASK ((1 << 17) | (1 << 16) | (1 << 14)) | ||
11671 | +#define SDVOC_PRESERVE_MASK (1 << 17) | ||
11672 | + | ||
11673 | +/** @defgroup LVDS | ||
11674 | + * @{ | ||
11675 | + */ | ||
11676 | +/** | ||
11677 | + * This register controls the LVDS output enable, pipe selection, and data | ||
11678 | + * format selection. | ||
11679 | + * | ||
11680 | + * All of the clock/data pairs are force powered down by power sequencing. | ||
11681 | + */ | ||
11682 | +#define LVDS 0x61180 | ||
11683 | +/** | ||
11684 | + * Enables the LVDS port. This bit must be set before DPLLs are enabled, as | ||
11685 | + * the DPLL semantics change when the LVDS is assigned to that pipe. | ||
11686 | + */ | ||
11687 | +# define LVDS_PORT_EN (1 << 31) | ||
11688 | +/** Selects pipe B for LVDS data. Must be set on pre-965. */ | ||
11689 | +# define LVDS_PIPEB_SELECT (1 << 30) | ||
11690 | + | ||
11691 | +/** | ||
11692 | + * Enables the A0-A2 data pairs and CLKA, containing 18 bits of color data per | ||
11693 | + * pixel. | ||
11694 | + */ | ||
11695 | +# define LVDS_A0A2_CLKA_POWER_MASK (3 << 8) | ||
11696 | +# define LVDS_A0A2_CLKA_POWER_DOWN (0 << 8) | ||
11697 | +# define LVDS_A0A2_CLKA_POWER_UP (3 << 8) | ||
11698 | +/** | ||
11699 | + * Controls the A3 data pair, which contains the additional LSBs for 24 bit | ||
11700 | + * mode. Only enabled if LVDS_A0A2_CLKA_POWER_UP also indicates it should be | ||
11701 | + * on. | ||
11702 | + */ | ||
11703 | +# define LVDS_A3_POWER_MASK (3 << 6) | ||
11704 | +# define LVDS_A3_POWER_DOWN (0 << 6) | ||
11705 | +# define LVDS_A3_POWER_UP (3 << 6) | ||
11706 | +/** | ||
11707 | + * Controls the CLKB pair. This should only be set when LVDS_B0B3_POWER_UP | ||
11708 | + * is set. | ||
11709 | + */ | ||
11710 | +# define LVDS_CLKB_POWER_MASK (3 << 4) | ||
11711 | +# define LVDS_CLKB_POWER_DOWN (0 << 4) | ||
11712 | +# define LVDS_CLKB_POWER_UP (3 << 4) | ||
11713 | + | ||
11714 | +/** | ||
11715 | + * Controls the B0-B3 data pairs. This must be set to match the DPLL p2 | ||
11716 | + * setting for whether we are in dual-channel mode. The B3 pair will | ||
11717 | + * additionally only be powered up when LVDS_A3_POWER_UP is set. | ||
11718 | + */ | ||
11719 | +# define LVDS_B0B3_POWER_MASK (3 << 2) | ||
11720 | +# define LVDS_B0B3_POWER_DOWN (0 << 2) | ||
11721 | +# define LVDS_B0B3_POWER_UP (3 << 2) | ||
11722 | + | ||
11723 | +#define PIPEACONF 0x70008 | ||
11724 | +#define PIPEACONF_ENABLE (1<<31) | ||
11725 | +#define PIPEACONF_DISABLE 0 | ||
11726 | +#define PIPEACONF_DOUBLE_WIDE (1<<30) | ||
11727 | +#define I965_PIPECONF_ACTIVE (1<<30) | ||
11728 | +#define PIPEACONF_SINGLE_WIDE 0 | ||
11729 | +#define PIPEACONF_PIPE_UNLOCKED 0 | ||
11730 | +#define PIPEACONF_PIPE_LOCKED (1<<25) | ||
11731 | +#define PIPEACONF_PALETTE 0 | ||
11732 | +#define PIPEACONF_GAMMA (1<<24) | ||
11733 | +#define PIPECONF_FORCE_BORDER (1<<25) | ||
11734 | +#define PIPECONF_PROGRESSIVE (0 << 21) | ||
11735 | +#define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21) | ||
11736 | +#define PIPECONF_INTERLACE_FIELD_0_ONLY (7 << 21) | ||
11737 | + | ||
11738 | +#define PIPEBCONF 0x71008 | ||
11739 | +#define PIPEBCONF_ENABLE (1<<31) | ||
11740 | +#define PIPEBCONF_DISABLE 0 | ||
11741 | +#define PIPEBCONF_DOUBLE_WIDE (1<<30) | ||
11742 | +#define PIPEBCONF_DISABLE 0 | ||
11743 | +#define PIPEBCONF_GAMMA (1<<24) | ||
11744 | +#define PIPEBCONF_PALETTE 0 | ||
11745 | + | ||
11746 | +#define PIPEBGCMAXRED 0x71010 | ||
11747 | +#define PIPEBGCMAXGREEN 0x71014 | ||
11748 | +#define PIPEBGCMAXBLUE 0x71018 | ||
11749 | +#define PIPEBSTAT 0x71024 | ||
11750 | +#define PIPEBFRAMEHIGH 0x71040 | ||
11751 | +#define PIPEBFRAMEPIXEL 0x71044 | ||
11752 | + | ||
11753 | +#define DSPACNTR 0x70180 | ||
11754 | +#define DSPBCNTR 0x71180 | ||
11755 | +#define DISPLAY_PLANE_ENABLE (1<<31) | ||
11756 | +#define DISPLAY_PLANE_DISABLE 0 | ||
11757 | +#define DISPPLANE_GAMMA_ENABLE (1<<30) | ||
11758 | +#define DISPPLANE_GAMMA_DISABLE 0 | ||
11759 | +#define DISPPLANE_PIXFORMAT_MASK (0xf<<26) | ||
11760 | +#define DISPPLANE_8BPP (0x2<<26) | ||
11761 | +#define DISPPLANE_15_16BPP (0x4<<26) | ||
11762 | +#define DISPPLANE_16BPP (0x5<<26) | ||
11763 | +#define DISPPLANE_32BPP_NO_ALPHA (0x6<<26) | ||
11764 | +#define DISPPLANE_32BPP (0x7<<26) | ||
11765 | +#define DISPPLANE_STEREO_ENABLE (1<<25) | ||
11766 | +#define DISPPLANE_STEREO_DISABLE 0 | ||
11767 | +#define DISPPLANE_SEL_PIPE_MASK (1<<24) | ||
11768 | +#define DISPPLANE_SEL_PIPE_A 0 | ||
11769 | +#define DISPPLANE_SEL_PIPE_B (1<<24) | ||
11770 | +#define DISPPLANE_SRC_KEY_ENABLE (1<<22) | ||
11771 | +#define DISPPLANE_SRC_KEY_DISABLE 0 | ||
11772 | +#define DISPPLANE_LINE_DOUBLE (1<<20) | ||
11773 | +#define DISPPLANE_NO_LINE_DOUBLE 0 | ||
11774 | +#define DISPPLANE_STEREO_POLARITY_FIRST 0 | ||
11775 | +#define DISPPLANE_STEREO_POLARITY_SECOND (1<<18) | ||
11776 | +/* plane B only */ | ||
11777 | +#define DISPPLANE_ALPHA_TRANS_ENABLE (1<<15) | ||
11778 | +#define DISPPLANE_ALPHA_TRANS_DISABLE 0 | ||
11779 | +#define DISPPLANE_SPRITE_ABOVE_DISPLAYA 0 | ||
11780 | +#define DISPPLANE_SPRITE_ABOVE_OVERLAY (1) | ||
11781 | + | ||
11782 | +#define DSPABASE 0x70184 | ||
11783 | +#define DSPASTRIDE 0x70188 | ||
11784 | + | ||
11785 | +#define DSPBBASE 0x71184 | ||
11786 | +#define DSPBADDR DSPBBASE | ||
11787 | +#define DSPBSTRIDE 0x71188 | ||
11788 | + | 11439 | + |
11789 | +#define DSPAKEYVAL 0x70194 | ||
11790 | +#define DSPAKEYMASK 0x70198 | ||
11791 | + | ||
11792 | +#define DSPAPOS 0x7018C /* reserved */ | ||
11793 | +#define DSPASIZE 0x70190 | ||
11794 | +#define DSPBPOS 0x7118C | ||
11795 | +#define DSPBSIZE 0x71190 | ||
11796 | + | ||
11797 | +#define DSPASURF 0x7019C | ||
11798 | +#define DSPATILEOFF 0x701A4 | ||
11799 | + | ||
11800 | +#define DSPBSURF 0x7119C | ||
11801 | +#define DSPBTILEOFF 0x711A4 | ||
11802 | + | ||
11803 | +#define VGACNTRL 0x71400 | ||
11804 | +# define VGA_DISP_DISABLE (1 << 31) | ||
11805 | +# define VGA_2X_MODE (1 << 30) | ||
11806 | +# define VGA_PIPE_B_SELECT (1 << 29) | ||
11807 | + | ||
11808 | +/* | ||
11809 | + * Some BIOS scratch area registers. The 845 (and 830?) store the amount | ||
11810 | + * of video memory available to the BIOS in SWF1. | ||
11811 | + */ | ||
11812 | + | ||
11813 | +#define SWF0 0x71410 | ||
11814 | +#define SWF1 0x71414 | ||
11815 | +#define SWF2 0x71418 | ||
11816 | +#define SWF3 0x7141c | ||
11817 | +#define SWF4 0x71420 | ||
11818 | +#define SWF5 0x71424 | ||
11819 | +#define SWF6 0x71428 | ||
11820 | + | ||
11821 | +/* | ||
11822 | + * 855 scratch registers. | ||
11823 | + */ | ||
11824 | +#define SWF00 0x70410 | ||
11825 | +#define SWF01 0x70414 | ||
11826 | +#define SWF02 0x70418 | ||
11827 | +#define SWF03 0x7041c | ||
11828 | +#define SWF04 0x70420 | ||
11829 | +#define SWF05 0x70424 | ||
11830 | +#define SWF06 0x70428 | ||
11831 | + | ||
11832 | +#define SWF10 SWF0 | ||
11833 | +#define SWF11 SWF1 | ||
11834 | +#define SWF12 SWF2 | ||
11835 | +#define SWF13 SWF3 | ||
11836 | +#define SWF14 SWF4 | ||
11837 | +#define SWF15 SWF5 | ||
11838 | +#define SWF16 SWF6 | ||
11839 | + | ||
11840 | +#define SWF30 0x72414 | ||
11841 | +#define SWF31 0x72418 | ||
11842 | +#define SWF32 0x7241c | ||
11843 | + | ||
11844 | + | ||
11845 | +/* | ||
11846 | + * Palette registers | ||
11847 | + */ | ||
11848 | +#define PALETTE_A 0x0a000 | ||
11849 | +#define PALETTE_B 0x0a800 | ||
11850 | + | 11440 | + |
11851 | +#define IS_I830(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82830_CGC) | 11441 | +#define IS_I830(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82830_CGC) |
11852 | +#define IS_845G(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82845G_IG) | 11442 | +#define IS_845G(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82845G_IG) |
@@ -11880,10 +11470,31 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/i915_reg.h | |||
11880 | + | 11470 | + |
11881 | +#define IS_POULSBO(dev) (((dev)->pci_device == 0x8108) || \ | 11471 | +#define IS_POULSBO(dev) (((dev)->pci_device == 0x8108) || \ |
11882 | + ((dev)->pci_device == 0x8109)) | 11472 | + ((dev)->pci_device == 0x8109)) |
11473 | + | ||
11474 | +#define FPA0 0x06040 | ||
11475 | +#define FPA1 0x06044 | ||
11476 | +#define FPB0 0x06048 | ||
11477 | +#define FPB1 0x0604c | ||
11478 | +#define FP_N_DIV_MASK 0x003f0000 | ||
11479 | +#define FP_N_DIV_SHIFT 16 | ||
11480 | +#define FP_M1_DIV_MASK 0x00003f00 | ||
11481 | +#define FP_M1_DIV_SHIFT 8 | ||
11482 | +#define FP_M2_DIV_MASK 0x0000003f | ||
11483 | +#define FP_M2_DIV_SHIFT 0 | ||
11484 | + | ||
11485 | +#define DSPABASE 0x70184 | ||
11486 | +#define DSPBBASE 0x71184 | ||
11487 | +#define DSPAKEYVAL 0x70194 | ||
11488 | +#define DSPAKEYMASK 0x70198 | ||
11489 | + | ||
11490 | +#define VSYNCSHIFT_A 0x60028 | ||
11491 | +#define VSYNCSHIFT_B 0x61028 | ||
11492 | +#define DPLL_B_MD 0x06020 | ||
11493 | + | ||
11883 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | 11494 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c |
11884 | =================================================================== | 11495 | =================================================================== |
11885 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 11496 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
11886 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c 2009-01-14 11:58:01.000000000 +0000 | 11497 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c 2009-02-05 13:29:33.000000000 +0000 |
11887 | @@ -0,0 +1,242 @@ | 11498 | @@ -0,0 +1,242 @@ |
11888 | +/* | 11499 | +/* |
11889 | + * Copyright © 2006-2007 Intel Corporation | 11500 | + * Copyright © 2006-2007 Intel Corporation |
@@ -11918,11 +11529,11 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
11918 | + struct drm_device *dev = output->dev; | 11529 | + struct drm_device *dev = output->dev; |
11919 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; | 11530 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; |
11920 | + u32 temp; | 11531 | + u32 temp; |
11921 | + | 11532 | + |
11922 | + temp = I915_READ(ADPA); | 11533 | + temp = I915_READ(ADPA); |
11923 | + temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE); | 11534 | + temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE); |
11924 | + temp &= ~ADPA_DAC_ENABLE; | 11535 | + temp &= ~ADPA_DAC_ENABLE; |
11925 | + | 11536 | + |
11926 | + switch(mode) { | 11537 | + switch(mode) { |
11927 | + case DPMSModeOn: | 11538 | + case DPMSModeOn: |
11928 | + temp |= ADPA_DAC_ENABLE; | 11539 | + temp |= ADPA_DAC_ENABLE; |
@@ -11937,13 +11548,13 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
11937 | + temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE; | 11548 | + temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE; |
11938 | + break; | 11549 | + break; |
11939 | + } | 11550 | + } |
11940 | + | 11551 | + |
11941 | + I915_WRITE(ADPA, temp); | 11552 | + I915_WRITE(ADPA, temp); |
11942 | +} | 11553 | +} |
11943 | + | 11554 | + |
11944 | +static void intel_crt_save(struct drm_output *output) | 11555 | +static void intel_crt_save(struct drm_output *output) |
11945 | +{ | 11556 | +{ |
11946 | + | 11557 | + |
11947 | +} | 11558 | +} |
11948 | + | 11559 | + |
11949 | +static void intel_crt_restore(struct drm_output *output) | 11560 | +static void intel_crt_restore(struct drm_output *output) |
@@ -11981,7 +11592,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
11981 | + int dpll_md_reg; | 11592 | + int dpll_md_reg; |
11982 | + u32 adpa, dpll_md; | 11593 | + u32 adpa, dpll_md; |
11983 | + | 11594 | + |
11984 | + if (intel_crtc->pipe == 0) | 11595 | + if (intel_crtc->pipe == 0) |
11985 | + dpll_md_reg = DPLL_A_MD; | 11596 | + dpll_md_reg = DPLL_A_MD; |
11986 | + else | 11597 | + else |
11987 | + dpll_md_reg = DPLL_B_MD; | 11598 | + dpll_md_reg = DPLL_B_MD; |
@@ -11995,18 +11606,18 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
11995 | + I915_WRITE(dpll_md_reg, | 11606 | + I915_WRITE(dpll_md_reg, |
11996 | + dpll_md & ~DPLL_MD_UDI_MULTIPLIER_MASK); | 11607 | + dpll_md & ~DPLL_MD_UDI_MULTIPLIER_MASK); |
11997 | + } | 11608 | + } |
11998 | + | 11609 | + |
11999 | + adpa = 0; | 11610 | + adpa = 0; |
12000 | + if (adjusted_mode->flags & V_PHSYNC) | 11611 | + if (adjusted_mode->flags & V_PHSYNC) |
12001 | + adpa |= ADPA_HSYNC_ACTIVE_HIGH; | 11612 | + adpa |= ADPA_HSYNC_ACTIVE_HIGH; |
12002 | + if (adjusted_mode->flags & V_PVSYNC) | 11613 | + if (adjusted_mode->flags & V_PVSYNC) |
12003 | + adpa |= ADPA_VSYNC_ACTIVE_HIGH; | 11614 | + adpa |= ADPA_VSYNC_ACTIVE_HIGH; |
12004 | + | 11615 | + |
12005 | + if (intel_crtc->pipe == 0) | 11616 | + if (intel_crtc->pipe == 0) |
12006 | + adpa |= ADPA_PIPE_A_SELECT; | 11617 | + adpa |= ADPA_PIPE_A_SELECT; |
12007 | + else | 11618 | + else |
12008 | + adpa |= ADPA_PIPE_B_SELECT; | 11619 | + adpa |= ADPA_PIPE_B_SELECT; |
12009 | + | 11620 | + |
12010 | + I915_WRITE(ADPA, adpa); | 11621 | + I915_WRITE(ADPA, adpa); |
12011 | +} | 11622 | +} |
12012 | + | 11623 | + |
@@ -12050,14 +11661,14 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
12050 | + /* CRT should always be at 0, but check anyway */ | 11661 | + /* CRT should always be at 0, but check anyway */ |
12051 | + if (intel_output->type != INTEL_OUTPUT_ANALOG) | 11662 | + if (intel_output->type != INTEL_OUTPUT_ANALOG) |
12052 | + return false; | 11663 | + return false; |
12053 | + | 11664 | + |
12054 | + return intel_ddc_probe(output); | 11665 | + return intel_ddc_probe(output); |
12055 | +} | 11666 | +} |
12056 | + | 11667 | + |
12057 | +static enum drm_output_status intel_crt_detect(struct drm_output *output) | 11668 | +static enum drm_output_status intel_crt_detect(struct drm_output *output) |
12058 | +{ | 11669 | +{ |
12059 | + struct drm_device *dev = output->dev; | 11670 | + struct drm_device *dev = output->dev; |
12060 | + | 11671 | + |
12061 | + if (IS_I945G(dev) || IS_I945GM(dev) || IS_I965G(dev)) { | 11672 | + if (IS_I945G(dev) || IS_I945GM(dev) || IS_I965G(dev)) { |
12062 | + if (intel_crt_detect_hotplug(output)) | 11673 | + if (intel_crt_detect_hotplug(output)) |
12063 | + return output_status_connected; | 11674 | + return output_status_connected; |
@@ -12130,7 +11741,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_crt.c | |||
12130 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | 11741 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c |
12131 | =================================================================== | 11742 | =================================================================== |
12132 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 11743 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
12133 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_display.c 2009-01-14 11:58:01.000000000 +0000 | 11744 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_display.c 2009-02-05 13:29:33.000000000 +0000 |
12134 | @@ -0,0 +1,1472 @@ | 11745 | @@ -0,0 +1,1472 @@ |
12135 | +/* | 11746 | +/* |
12136 | + * Copyright © 2006-2007 Intel Corporation | 11747 | + * Copyright © 2006-2007 Intel Corporation |
@@ -12163,7 +11774,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12163 | +bool intel_pipe_has_type (struct drm_crtc *crtc, int type); | 11774 | +bool intel_pipe_has_type (struct drm_crtc *crtc, int type); |
12164 | + | 11775 | + |
12165 | +typedef struct { | 11776 | +typedef struct { |
12166 | + /* given values */ | 11777 | + /* given values */ |
12167 | + int n; | 11778 | + int n; |
12168 | + int m1, m2; | 11779 | + int m1, m2; |
12169 | + int p1, p2; | 11780 | + int p1, p2; |
@@ -12302,7 +11913,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12302 | +{ | 11913 | +{ |
12303 | + struct drm_device *dev = crtc->dev; | 11914 | + struct drm_device *dev = crtc->dev; |
12304 | + const intel_limit_t *limit; | 11915 | + const intel_limit_t *limit; |
12305 | + | 11916 | + |
12306 | + if (IS_I9XX(dev)) { | 11917 | + if (IS_I9XX(dev)) { |
12307 | + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) | 11918 | + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) |
12308 | + limit = &intel_limits[INTEL_LIMIT_I9XX_LVDS]; | 11919 | + limit = &intel_limits[INTEL_LIMIT_I9XX_LVDS]; |
@@ -12374,7 +11985,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12374 | +static bool intel_PLL_is_valid(struct drm_crtc *crtc, intel_clock_t *clock) | 11985 | +static bool intel_PLL_is_valid(struct drm_crtc *crtc, intel_clock_t *clock) |
12375 | +{ | 11986 | +{ |
12376 | + const intel_limit_t *limit = intel_limit (crtc); | 11987 | + const intel_limit_t *limit = intel_limit (crtc); |
12377 | + | 11988 | + |
12378 | + if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1) | 11989 | + if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1) |
12379 | + INTELPllInvalid ("p1 out of range\n"); | 11990 | + INTELPllInvalid ("p1 out of range\n"); |
12380 | + if (clock->p < limit->p.min || limit->p.max < clock->p) | 11991 | + if (clock->p < limit->p.min || limit->p.max < clock->p) |
@@ -12396,7 +12007,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12396 | + */ | 12007 | + */ |
12397 | + if (clock->dot < limit->dot.min || limit->dot.max < clock->dot) | 12008 | + if (clock->dot < limit->dot.min || limit->dot.max < clock->dot) |
12398 | + INTELPllInvalid ("dot out of range\n"); | 12009 | + INTELPllInvalid ("dot out of range\n"); |
12399 | + | 12010 | + |
12400 | + return true; | 12011 | + return true; |
12401 | +} | 12012 | +} |
12402 | + | 12013 | + |
@@ -12433,9 +12044,9 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12433 | + else | 12044 | + else |
12434 | + clock.p2 = limit->p2.p2_fast; | 12045 | + clock.p2 = limit->p2.p2_fast; |
12435 | + } | 12046 | + } |
12436 | + | 12047 | + |
12437 | + memset (best_clock, 0, sizeof (*best_clock)); | 12048 | + memset (best_clock, 0, sizeof (*best_clock)); |
12438 | + | 12049 | + |
12439 | + for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; clock.m1++) { | 12050 | + for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; clock.m1++) { |
12440 | + for (clock.m2 = limit->m2.min; clock.m2 < clock.m1 && | 12051 | + for (clock.m2 = limit->m2.min; clock.m2 < clock.m1 && |
12441 | + clock.m2 <= limit->m2.max; clock.m2++) { | 12052 | + clock.m2 <= limit->m2.max; clock.m2++) { |
@@ -12444,12 +12055,12 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12444 | + for (clock.p1 = limit->p1.min; | 12055 | + for (clock.p1 = limit->p1.min; |
12445 | + clock.p1 <= limit->p1.max; clock.p1++) { | 12056 | + clock.p1 <= limit->p1.max; clock.p1++) { |
12446 | + int this_err; | 12057 | + int this_err; |
12447 | + | 12058 | + |
12448 | + intel_clock(dev, refclk, &clock); | 12059 | + intel_clock(dev, refclk, &clock); |
12449 | + | 12060 | + |
12450 | + if (!intel_PLL_is_valid(crtc, &clock)) | 12061 | + if (!intel_PLL_is_valid(crtc, &clock)) |
12451 | + continue; | 12062 | + continue; |
12452 | + | 12063 | + |
12453 | + this_err = abs(clock.dot - target); | 12064 | + this_err = abs(clock.dot - target); |
12454 | + if (this_err < err) { | 12065 | + if (this_err < err) { |
12455 | + *best_clock = clock; | 12066 | + *best_clock = clock; |
@@ -12515,11 +12126,11 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12515 | + I915_WRITE(dspbase, Start + Offset); | 12126 | + I915_WRITE(dspbase, Start + Offset); |
12516 | + I915_READ(dspbase); | 12127 | + I915_READ(dspbase); |
12517 | + } | 12128 | + } |
12518 | + | ||
12519 | + | 12129 | + |
12520 | + if (!dev_priv->sarea_priv) | 12130 | + |
12131 | + if (!dev_priv->sarea_priv) | ||
12521 | + return; | 12132 | + return; |
12522 | + | 12133 | + |
12523 | + switch (pipe) { | 12134 | + switch (pipe) { |
12524 | + case 0: | 12135 | + case 0: |
12525 | + dev_priv->sarea_priv->planeA_x = x; | 12136 | + dev_priv->sarea_priv->planeA_x = x; |
@@ -12577,7 +12188,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12577 | + /* Wait for the clocks to stabilize. */ | 12188 | + /* Wait for the clocks to stabilize. */ |
12578 | + udelay(150); | 12189 | + udelay(150); |
12579 | + } | 12190 | + } |
12580 | + | 12191 | + |
12581 | + /* Enable the pipe */ | 12192 | + /* Enable the pipe */ |
12582 | + temp = I915_READ(pipeconf_reg); | 12193 | + temp = I915_READ(pipeconf_reg); |
12583 | + if ((temp & PIPEACONF_ENABLE) == 0) | 12194 | + if ((temp & PIPEACONF_ENABLE) == 0) |
@@ -12595,16 +12206,16 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12595 | + /* Flush the plane changes */ | 12206 | + /* Flush the plane changes */ |
12596 | + I915_WRITE(dspbase_reg, I915_READ(dspbase_reg)); | 12207 | + I915_WRITE(dspbase_reg, I915_READ(dspbase_reg)); |
12597 | + } | 12208 | + } |
12598 | + | 12209 | + |
12599 | + intel_crtc_load_lut(crtc); | 12210 | + intel_crtc_load_lut(crtc); |
12600 | + | 12211 | + |
12601 | + /* Give the overlay scaler a chance to enable if it's on this pipe */ | 12212 | + /* Give the overlay scaler a chance to enable if it's on this pipe */ |
12602 | + //intel_crtc_dpms_video(crtc, TRUE); TODO | 12213 | + //intel_crtc_dpms_video(crtc, TRUE); TODO |
12603 | + break; | 12214 | + break; |
12604 | + case DPMSModeOff: | 12215 | + case DPMSModeOff: |
12605 | + /* Give the overlay scaler a chance to disable if it's on this pipe */ | 12216 | + /* Give the overlay scaler a chance to disable if it's on this pipe */ |
12606 | + //intel_crtc_dpms_video(crtc, FALSE); TODO | 12217 | + //intel_crtc_dpms_video(crtc, FALSE); TODO |
12607 | + | 12218 | + |
12608 | + /* Disable display plane */ | 12219 | + /* Disable display plane */ |
12609 | + temp = I915_READ(dspcntr_reg); | 12220 | + temp = I915_READ(dspcntr_reg); |
12610 | + if ((temp & DISPLAY_PLANE_ENABLE) != 0) { | 12221 | + if ((temp & DISPLAY_PLANE_ENABLE) != 0) { |
@@ -12613,39 +12224,39 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12613 | + I915_WRITE(dspbase_reg, I915_READ(dspbase_reg)); | 12224 | + I915_WRITE(dspbase_reg, I915_READ(dspbase_reg)); |
12614 | + I915_READ(dspbase_reg); | 12225 | + I915_READ(dspbase_reg); |
12615 | + } | 12226 | + } |
12616 | + | 12227 | + |
12617 | + if (!IS_I9XX(dev)) { | 12228 | + if (!IS_I9XX(dev)) { |
12618 | + /* Wait for vblank for the disable to take effect */ | 12229 | + /* Wait for vblank for the disable to take effect */ |
12619 | + intel_wait_for_vblank(dev); | 12230 | + intel_wait_for_vblank(dev); |
12620 | + } | 12231 | + } |
12621 | + | 12232 | + |
12622 | + /* Next, disable display pipes */ | 12233 | + /* Next, disable display pipes */ |
12623 | + temp = I915_READ(pipeconf_reg); | 12234 | + temp = I915_READ(pipeconf_reg); |
12624 | + if ((temp & PIPEACONF_ENABLE) != 0) { | 12235 | + if ((temp & PIPEACONF_ENABLE) != 0) { |
12625 | + I915_WRITE(pipeconf_reg, temp & ~PIPEACONF_ENABLE); | 12236 | + I915_WRITE(pipeconf_reg, temp & ~PIPEACONF_ENABLE); |
12626 | + I915_READ(pipeconf_reg); | 12237 | + I915_READ(pipeconf_reg); |
12627 | + } | 12238 | + } |
12628 | + | 12239 | + |
12629 | + /* Wait for vblank for the disable to take effect. */ | 12240 | + /* Wait for vblank for the disable to take effect. */ |
12630 | + intel_wait_for_vblank(dev); | 12241 | + intel_wait_for_vblank(dev); |
12631 | + | 12242 | + |
12632 | + temp = I915_READ(dpll_reg); | 12243 | + temp = I915_READ(dpll_reg); |
12633 | + if ((temp & DPLL_VCO_ENABLE) != 0) { | 12244 | + if ((temp & DPLL_VCO_ENABLE) != 0) { |
12634 | + I915_WRITE(dpll_reg, temp & ~DPLL_VCO_ENABLE); | 12245 | + I915_WRITE(dpll_reg, temp & ~DPLL_VCO_ENABLE); |
12635 | + I915_READ(dpll_reg); | 12246 | + I915_READ(dpll_reg); |
12636 | + } | 12247 | + } |
12637 | + | 12248 | + |
12638 | + /* Wait for the clocks to turn off. */ | 12249 | + /* Wait for the clocks to turn off. */ |
12639 | + udelay(150); | 12250 | + udelay(150); |
12640 | + break; | 12251 | + break; |
12641 | + } | 12252 | + } |
12642 | + | 12253 | + |
12643 | + | 12254 | + |
12644 | + if (!dev_priv->sarea_priv) | 12255 | + if (!dev_priv->sarea_priv) |
12645 | + return; | 12256 | + return; |
12646 | + | 12257 | + |
12647 | + enabled = crtc->enabled && mode != DPMSModeOff; | 12258 | + enabled = crtc->enabled && mode != DPMSModeOff; |
12648 | + | 12259 | + |
12649 | + switch (pipe) { | 12260 | + switch (pipe) { |
12650 | + case 0: | 12261 | + case 0: |
12651 | + dev_priv->sarea_priv->planeA_w = enabled ? crtc->mode.hdisplay : 0; | 12262 | + dev_priv->sarea_priv->planeA_w = enabled ? crtc->mode.hdisplay : 0; |
@@ -12727,7 +12338,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12727 | + u16 gcfgc = 0; | 12338 | + u16 gcfgc = 0; |
12728 | + | 12339 | + |
12729 | + pci_read_config_word(dev->pdev, I915_GCFGC, &gcfgc); | 12340 | + pci_read_config_word(dev->pdev, I915_GCFGC, &gcfgc); |
12730 | + | 12341 | + |
12731 | + if (gcfgc & I915_LOW_FREQUENCY_ENABLE) | 12342 | + if (gcfgc & I915_LOW_FREQUENCY_ENABLE) |
12732 | + return 133000; | 12343 | + return 133000; |
12733 | + else { | 12344 | + else { |
@@ -12745,7 +12356,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12745 | +#if 0 | 12356 | +#if 0 |
12746 | + PCITAG bridge = pciTag(0, 0, 0); /* This is always the host bridge */ | 12357 | + PCITAG bridge = pciTag(0, 0, 0); /* This is always the host bridge */ |
12747 | + u16 hpllcc = pciReadWord(bridge, I855_HPLLCC); | 12358 | + u16 hpllcc = pciReadWord(bridge, I855_HPLLCC); |
12748 | + | 12359 | + |
12749 | +#endif | 12360 | +#endif |
12750 | + u16 hpllcc = 0; | 12361 | + u16 hpllcc = 0; |
12751 | + /* Assume that the hardware is in the high speed state. This | 12362 | + /* Assume that the hardware is in the high speed state. This |
@@ -12762,7 +12373,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12762 | + } | 12373 | + } |
12763 | + } else /* 852, 830 */ | 12374 | + } else /* 852, 830 */ |
12764 | + return 133000; | 12375 | + return 133000; |
12765 | + | 12376 | + |
12766 | + return 0; /* Silence gcc warning */ | 12377 | + return 0; /* Silence gcc warning */ |
12767 | +} | 12378 | +} |
12768 | + | 12379 | + |
@@ -12775,21 +12386,21 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12775 | +{ | 12386 | +{ |
12776 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; | 12387 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; |
12777 | + u32 pfit_control; | 12388 | + u32 pfit_control; |
12778 | + | 12389 | + |
12779 | + /* i830 doesn't have a panel fitter */ | 12390 | + /* i830 doesn't have a panel fitter */ |
12780 | + if (IS_I830(dev)) | 12391 | + if (IS_I830(dev)) |
12781 | + return -1; | 12392 | + return -1; |
12782 | + | 12393 | + |
12783 | + pfit_control = I915_READ(PFIT_CONTROL); | 12394 | + pfit_control = I915_READ(PFIT_CONTROL); |
12784 | + | 12395 | + |
12785 | + /* See if the panel fitter is in use */ | 12396 | + /* See if the panel fitter is in use */ |
12786 | + if ((pfit_control & PFIT_ENABLE) == 0) | 12397 | + if ((pfit_control & PFIT_ENABLE) == 0) |
12787 | + return -1; | 12398 | + return -1; |
12788 | + | 12399 | + |
12789 | + /* 965 can place panel fitter on either pipe */ | 12400 | + /* 965 can place panel fitter on either pipe */ |
12790 | + if (IS_I965G(dev)) | 12401 | + if (IS_I965G(dev)) |
12791 | + return (pfit_control >> 29) & 0x3; | 12402 | + return (pfit_control >> 29) & 0x3; |
12792 | + | 12403 | + |
12793 | + /* older chips can only use pipe 1 */ | 12404 | + /* older chips can only use pipe 1 */ |
12794 | + return 1; | 12405 | + return 1; |
12795 | +} | 12406 | +} |
@@ -12926,7 +12537,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12926 | + I915_WRITE(VGACNTRL, vgacntrl_reg_value[pipe]); | 12537 | + I915_WRITE(VGACNTRL, vgacntrl_reg_value[pipe]); |
12927 | + intel_wait_for_vblank(dev); | 12538 | + intel_wait_for_vblank(dev); |
12928 | + I915_WRITE(PFIT_CONTROL, pfit_control_reg_value[pipe]); | 12539 | + I915_WRITE(PFIT_CONTROL, pfit_control_reg_value[pipe]); |
12929 | + | 12540 | + |
12930 | + intel_crtc_commit(crtc); | 12541 | + intel_crtc_commit(crtc); |
12931 | + list_for_each_entry(output, &mode_config->output_list, head) { | 12542 | + list_for_each_entry(output, &mode_config->output_list, head) { |
12932 | + if (output->crtc != crtc) | 12543 | + if (output->crtc != crtc) |
@@ -12990,7 +12601,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
12990 | + break; | 12601 | + break; |
12991 | + } | 12602 | + } |
12992 | + } | 12603 | + } |
12993 | + | 12604 | + |
12994 | + fp_reg_value[pipe] = I915_READ(fp_reg); | 12605 | + fp_reg_value[pipe] = I915_READ(fp_reg); |
12995 | + dpll_reg_value[pipe] = I915_READ(dpll_reg); | 12606 | + dpll_reg_value[pipe] = I915_READ(dpll_reg); |
12996 | + dpll_md_reg_value[pipe] = I915_READ(dpll_md_reg); | 12607 | + dpll_md_reg_value[pipe] = I915_READ(dpll_md_reg); |
@@ -13075,7 +12686,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13075 | + break; | 12686 | + break; |
13076 | + } | 12687 | + } |
13077 | + } | 12688 | + } |
13078 | + | 12689 | + |
13079 | + if (IS_I9XX(dev)) { | 12690 | + if (IS_I9XX(dev)) { |
13080 | + refclk = 96000; | 12691 | + refclk = 96000; |
13081 | + } else { | 12692 | + } else { |
@@ -13089,7 +12700,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13089 | + } | 12700 | + } |
13090 | + | 12701 | + |
13091 | + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; | 12702 | + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; |
13092 | + | 12703 | + |
13093 | + dpll = DPLL_VGA_MODE_DIS; | 12704 | + dpll = DPLL_VGA_MODE_DIS; |
13094 | + if (IS_I9XX(dev)) { | 12705 | + if (IS_I9XX(dev)) { |
13095 | + if (is_lvds) { | 12706 | + if (is_lvds) { |
@@ -13105,7 +12716,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13105 | + dpll |= (sdvo_pixel_multiply - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; | 12716 | + dpll |= (sdvo_pixel_multiply - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; |
13106 | + } | 12717 | + } |
13107 | + } | 12718 | + } |
13108 | + | 12719 | + |
13109 | + /* compute bitmask from p1 value */ | 12720 | + /* compute bitmask from p1 value */ |
13110 | + dpll |= (1 << (clock.p1 - 1)) << 16; | 12721 | + dpll |= (1 << (clock.p1 - 1)) << 16; |
13111 | + switch (clock.p2) { | 12722 | + switch (clock.p2) { |
@@ -13136,7 +12747,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13136 | + dpll |= PLL_P2_DIVIDE_BY_4; | 12747 | + dpll |= PLL_P2_DIVIDE_BY_4; |
13137 | + } | 12748 | + } |
13138 | + } | 12749 | + } |
13139 | + | 12750 | + |
13140 | + if (is_tv) { | 12751 | + if (is_tv) { |
13141 | + /* XXX: just matching BIOS for now */ | 12752 | + /* XXX: just matching BIOS for now */ |
13142 | +/* dpll |= PLL_REF_INPUT_TVCLKINBC; */ | 12753 | +/* dpll |= PLL_REF_INPUT_TVCLKINBC; */ |
@@ -13148,7 +12759,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13148 | +#endif | 12759 | +#endif |
13149 | + else | 12760 | + else |
13150 | + dpll |= PLL_REF_INPUT_DREFCLK; | 12761 | + dpll |= PLL_REF_INPUT_DREFCLK; |
13151 | + | 12762 | + |
13152 | + /* setup pipeconf */ | 12763 | + /* setup pipeconf */ |
13153 | + pipeconf = I915_READ(pipeconf_reg); | 12764 | + pipeconf = I915_READ(pipeconf_reg); |
13154 | + | 12765 | + |
@@ -13172,13 +12783,13 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13172 | + DRM_ERROR("Unknown color depth\n"); | 12783 | + DRM_ERROR("Unknown color depth\n"); |
13173 | + return; | 12784 | + return; |
13174 | + } | 12785 | + } |
13175 | + | 12786 | + |
13176 | + | 12787 | + |
13177 | + if (pipe == 0) | 12788 | + if (pipe == 0) |
13178 | + dspcntr |= DISPPLANE_SEL_PIPE_A; | 12789 | + dspcntr |= DISPPLANE_SEL_PIPE_A; |
13179 | + else | 12790 | + else |
13180 | + dspcntr |= DISPPLANE_SEL_PIPE_B; | 12791 | + dspcntr |= DISPPLANE_SEL_PIPE_B; |
13181 | + | 12792 | + |
13182 | + if (pipe == 0 && !IS_I965G(dev)) { | 12793 | + if (pipe == 0 && !IS_I965G(dev)) { |
13183 | + /* Enable pixel doubling when the dot clock is > 90% of the (display) | 12794 | + /* Enable pixel doubling when the dot clock is > 90% of the (display) |
13184 | + * core speed. | 12795 | + * core speed. |
@@ -13196,7 +12807,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13196 | + pipeconf |= PIPEACONF_ENABLE; | 12807 | + pipeconf |= PIPEACONF_ENABLE; |
13197 | + dpll |= DPLL_VCO_ENABLE; | 12808 | + dpll |= DPLL_VCO_ENABLE; |
13198 | + | 12809 | + |
13199 | + | 12810 | + |
13200 | + /* Disable the panel fitter if it was on our pipe */ | 12811 | + /* Disable the panel fitter if it was on our pipe */ |
13201 | + if (intel_panel_fitter_pipe(dev) == pipe) | 12812 | + if (intel_panel_fitter_pipe(dev) == pipe) |
13202 | + I915_WRITE(PFIT_CONTROL, 0); | 12813 | + I915_WRITE(PFIT_CONTROL, 0); |
@@ -13206,7 +12817,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13206 | + | 12817 | + |
13207 | + /*psbPrintPll("chosen", &clock);*/ | 12818 | + /*psbPrintPll("chosen", &clock);*/ |
13208 | + DRM_DEBUG("clock regs: 0x%08x, 0x%08x,dspntr is 0x%8x, pipeconf is 0x%8x\n", (int)dpll, | 12819 | + DRM_DEBUG("clock regs: 0x%08x, 0x%08x,dspntr is 0x%8x, pipeconf is 0x%8x\n", (int)dpll, |
13209 | + (int)fp,(int)dspcntr,(int)pipeconf); | 12820 | + (int)fp,(int)dspcntr,(int)pipeconf); |
13210 | +#if 0 | 12821 | +#if 0 |
13211 | + if (!xf86ModesEqual(mode, adjusted_mode)) { | 12822 | + if (!xf86ModesEqual(mode, adjusted_mode)) { |
13212 | + xf86DrvMsg(pScrn->scrnIndex, X_INFO, | 12823 | + xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
@@ -13222,14 +12833,14 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13222 | + I915_READ(dpll_reg); | 12833 | + I915_READ(dpll_reg); |
13223 | + udelay(150); | 12834 | + udelay(150); |
13224 | + } | 12835 | + } |
13225 | + | 12836 | + |
13226 | + /* The LVDS pin pair needs to be on before the DPLLs are enabled. | 12837 | + /* The LVDS pin pair needs to be on before the DPLLs are enabled. |
13227 | + * This is an exception to the general rule that mode_set doesn't turn | 12838 | + * This is an exception to the general rule that mode_set doesn't turn |
13228 | + * things on. | 12839 | + * things on. |
13229 | + */ | 12840 | + */ |
13230 | + if (is_lvds) { | 12841 | + if (is_lvds) { |
13231 | + u32 lvds = I915_READ(LVDS); | 12842 | + u32 lvds = I915_READ(LVDS); |
13232 | + | 12843 | + |
13233 | + lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP | LVDS_PIPEB_SELECT; | 12844 | + lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP | LVDS_PIPEB_SELECT; |
13234 | + /* Set the B0-B3 data pairs corresponding to whether we're going to | 12845 | + /* Set the B0-B3 data pairs corresponding to whether we're going to |
13235 | + * set the DPLLs for dual-channel mode or not. | 12846 | + * set the DPLLs for dual-channel mode or not. |
@@ -13238,22 +12849,22 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13238 | + lvds |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; | 12849 | + lvds |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; |
13239 | + else | 12850 | + else |
13240 | + lvds &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); | 12851 | + lvds &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); |
13241 | + | 12852 | + |
13242 | + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) | 12853 | + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) |
13243 | + * appropriately here, but we need to look more thoroughly into how | 12854 | + * appropriately here, but we need to look more thoroughly into how |
13244 | + * panels behave in the two modes. | 12855 | + * panels behave in the two modes. |
13245 | + */ | 12856 | + */ |
13246 | + | 12857 | + |
13247 | + I915_WRITE(LVDS, lvds); | 12858 | + I915_WRITE(LVDS, lvds); |
13248 | + I915_READ(LVDS); | 12859 | + I915_READ(LVDS); |
13249 | + } | 12860 | + } |
13250 | + | 12861 | + |
13251 | + I915_WRITE(fp_reg, fp); | 12862 | + I915_WRITE(fp_reg, fp); |
13252 | + I915_WRITE(dpll_reg, dpll); | 12863 | + I915_WRITE(dpll_reg, dpll); |
13253 | + I915_READ(dpll_reg); | 12864 | + I915_READ(dpll_reg); |
13254 | + /* Wait for the clocks to stabilize. */ | 12865 | + /* Wait for the clocks to stabilize. */ |
13255 | + udelay(150); | 12866 | + udelay(150); |
13256 | + | 12867 | + |
13257 | + if (IS_I965G(dev)) { | 12868 | + if (IS_I965G(dev)) { |
13258 | + int sdvo_pixel_multiply = adjusted_mode->clock / mode->clock; | 12869 | + int sdvo_pixel_multiply = adjusted_mode->clock / mode->clock; |
13259 | + I915_WRITE(dpll_md_reg, (0 << DPLL_MD_UDI_DIVIDER_SHIFT) | | 12870 | + I915_WRITE(dpll_md_reg, (0 << DPLL_MD_UDI_DIVIDER_SHIFT) | |
@@ -13265,7 +12876,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13265 | + I915_READ(dpll_reg); | 12876 | + I915_READ(dpll_reg); |
13266 | + /* Wait for the clocks to stabilize. */ | 12877 | + /* Wait for the clocks to stabilize. */ |
13267 | + udelay(150); | 12878 | + udelay(150); |
13268 | + | 12879 | + |
13269 | + I915_WRITE(htot_reg, (adjusted_mode->crtc_hdisplay - 1) | | 12880 | + I915_WRITE(htot_reg, (adjusted_mode->crtc_hdisplay - 1) | |
13270 | + ((adjusted_mode->crtc_htotal - 1) << 16)); | 12881 | + ((adjusted_mode->crtc_htotal - 1) << 16)); |
13271 | + I915_WRITE(hblank_reg, (adjusted_mode->crtc_hblank_start - 1) | | 12882 | + I915_WRITE(hblank_reg, (adjusted_mode->crtc_hblank_start - 1) | |
@@ -13287,14 +12898,14 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13287 | + I915_WRITE(pipesrc_reg, ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1)); | 12898 | + I915_WRITE(pipesrc_reg, ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1)); |
13288 | + I915_WRITE(pipeconf_reg, pipeconf); | 12899 | + I915_WRITE(pipeconf_reg, pipeconf); |
13289 | + I915_READ(pipeconf_reg); | 12900 | + I915_READ(pipeconf_reg); |
13290 | + | 12901 | + |
13291 | + intel_wait_for_vblank(dev); | 12902 | + intel_wait_for_vblank(dev); |
13292 | + | 12903 | + |
13293 | + I915_WRITE(dspcntr_reg, dspcntr); | 12904 | + I915_WRITE(dspcntr_reg, dspcntr); |
13294 | + | 12905 | + |
13295 | + /* Flush the plane changes */ | 12906 | + /* Flush the plane changes */ |
13296 | + intel_pipe_set_base(crtc, x, y); | 12907 | + intel_pipe_set_base(crtc, x, y); |
13297 | + | 12908 | + |
13298 | +#if 0 | 12909 | +#if 0 |
13299 | + intel_set_vblank(dev); | 12910 | + intel_set_vblank(dev); |
13300 | +#endif | 12911 | +#endif |
@@ -13302,7 +12913,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13302 | + /* Disable the VGA plane that we never use */ | 12913 | + /* Disable the VGA plane that we never use */ |
13303 | + I915_WRITE(VGACNTRL, VGA_DISP_DISABLE); | 12914 | + I915_WRITE(VGACNTRL, VGA_DISP_DISABLE); |
13304 | + | 12915 | + |
13305 | + intel_wait_for_vblank(dev); | 12916 | + intel_wait_for_vblank(dev); |
13306 | +} | 12917 | +} |
13307 | + | 12918 | + |
13308 | +/** Loads the palette/gamma unit for the CRTC with the prepared values */ | 12919 | +/** Loads the palette/gamma unit for the CRTC with the prepared values */ |
@@ -13331,7 +12942,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13331 | + u16 blue, int regno) | 12942 | + u16 blue, int regno) |
13332 | +{ | 12943 | +{ |
13333 | + struct intel_crtc *intel_crtc = crtc->driver_private; | 12944 | + struct intel_crtc *intel_crtc = crtc->driver_private; |
13334 | + | 12945 | + |
13335 | + intel_crtc->lut_r[regno] = red >> 8; | 12946 | + intel_crtc->lut_r[regno] = red >> 8; |
13336 | + intel_crtc->lut_g[regno] = green >> 8; | 12947 | + intel_crtc->lut_g[regno] = green >> 8; |
13337 | + intel_crtc->lut_b[regno] = blue >> 8; | 12948 | + intel_crtc->lut_b[regno] = blue >> 8; |
@@ -13389,7 +13000,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13389 | + /* XXX: might not be 66MHz */ | 13000 | + /* XXX: might not be 66MHz */ |
13390 | + i8xx_clock(66000, &clock); | 13001 | + i8xx_clock(66000, &clock); |
13391 | + } else | 13002 | + } else |
13392 | + i8xx_clock(48000, &clock); | 13003 | + i8xx_clock(48000, &clock); |
13393 | + } else { | 13004 | + } else { |
13394 | + if (dpll & PLL_P1_DIVIDE_BY_TWO) | 13005 | + if (dpll & PLL_P1_DIVIDE_BY_TWO) |
13395 | + clock.p1 = 2; | 13006 | + clock.p1 = 2; |
@@ -13532,7 +13143,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13532 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { | 13143 | + list_for_each_entry(output, &dev->mode_config.output_list, head) { |
13533 | + struct intel_output *intel_output = output->driver_private; | 13144 | + struct intel_output *intel_output = output->driver_private; |
13534 | + int crtc_mask = 0, clone_mask = 0; | 13145 | + int crtc_mask = 0, clone_mask = 0; |
13535 | + | 13146 | + |
13536 | + /* valid crtcs */ | 13147 | + /* valid crtcs */ |
13537 | + switch(intel_output->type) { | 13148 | + switch(intel_output->type) { |
13538 | + case INTEL_OUTPUT_DVO: | 13149 | + case INTEL_OUTPUT_DVO: |
@@ -13607,7 +13218,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_display.c | |||
13607 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h | 13218 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h |
13608 | =================================================================== | 13219 | =================================================================== |
13609 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 13220 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
13610 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h 2009-01-14 11:58:01.000000000 +0000 | 13221 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h 2009-02-05 13:29:33.000000000 +0000 |
13611 | @@ -0,0 +1,91 @@ | 13222 | @@ -0,0 +1,91 @@ |
13612 | +/* | 13223 | +/* |
13613 | + * Copyright (c) 2006 Dave Airlie <airlied@linux.ie> | 13224 | + * Copyright (c) 2006 Dave Airlie <airlied@linux.ie> |
@@ -13634,7 +13245,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h | |||
13634 | +#define INTEL_I2C_BUS_DVO 1 | 13245 | +#define INTEL_I2C_BUS_DVO 1 |
13635 | +#define INTEL_I2C_BUS_SDVO 2 | 13246 | +#define INTEL_I2C_BUS_SDVO 2 |
13636 | + | 13247 | + |
13637 | +/* these are outputs from the chip - integrated only | 13248 | +/* these are outputs from the chip - integrated only |
13638 | + external chips are via DVO or SDVO output */ | 13249 | + external chips are via DVO or SDVO output */ |
13639 | +#define INTEL_OUTPUT_UNUSED 0 | 13250 | +#define INTEL_OUTPUT_UNUSED 0 |
13640 | +#define INTEL_OUTPUT_ANALOG 1 | 13251 | +#define INTEL_OUTPUT_ANALOG 1 |
@@ -13703,7 +13314,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_drv.h | |||
13703 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | 13314 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c |
13704 | =================================================================== | 13315 | =================================================================== |
13705 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 13316 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
13706 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c 2009-01-14 11:58:01.000000000 +0000 | 13317 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c 2009-02-05 13:29:33.000000000 +0000 |
13707 | @@ -0,0 +1,913 @@ | 13318 | @@ -0,0 +1,913 @@ |
13708 | +/* | 13319 | +/* |
13709 | + * Copyright © 2006-2007 Intel Corporation | 13320 | + * Copyright © 2006-2007 Intel Corporation |
@@ -13754,7 +13365,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
13754 | +uint8_t blc_brightnesscmd; | 13365 | +uint8_t blc_brightnesscmd; |
13755 | +int lvds_backlight; /* restore backlight to this value */ | 13366 | +int lvds_backlight; /* restore backlight to this value */ |
13756 | + | 13367 | + |
13757 | +struct intel_i2c_chan *lvds_i2c_bus; | 13368 | +struct intel_i2c_chan *lvds_i2c_bus; |
13758 | +u32 CoreClock; | 13369 | +u32 CoreClock; |
13759 | +u32 PWMControlRegFreq; | 13370 | +u32 PWMControlRegFreq; |
13760 | + | 13371 | + |
@@ -13773,7 +13384,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
13773 | +{ | 13384 | +{ |
13774 | + u8 out_buf[2]; | 13385 | + u8 out_buf[2]; |
13775 | + struct i2c_msg msgs[] = { | 13386 | + struct i2c_msg msgs[] = { |
13776 | + { | 13387 | + { |
13777 | + .addr = lvds_i2c_bus->slave_addr, | 13388 | + .addr = lvds_i2c_bus->slave_addr, |
13778 | + .flags = 0, | 13389 | + .flags = 0, |
13779 | + .len = 2, | 13390 | + .len = 2, |
@@ -13799,7 +13410,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
13799 | +/** | 13410 | +/** |
13800 | + * Calculate PWM control register value. | 13411 | + * Calculate PWM control register value. |
13801 | + */ | 13412 | + */ |
13802 | +static int | 13413 | +static int |
13803 | +LVDSCalculatePWMCtrlRegFreq(struct drm_device *dev) | 13414 | +LVDSCalculatePWMCtrlRegFreq(struct drm_device *dev) |
13804 | +{ | 13415 | +{ |
13805 | + unsigned long value = 0; | 13416 | + unsigned long value = 0; |
@@ -13857,7 +13468,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
13857 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; | 13468 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; |
13858 | + //u32 blc_pwm_ctl; | 13469 | + //u32 blc_pwm_ctl; |
13859 | + | 13470 | + |
13860 | + /* | 13471 | + /* |
13861 | + blc_pwm_ctl = I915_READ(BLC_PWM_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; | 13472 | + blc_pwm_ctl = I915_READ(BLC_PWM_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; |
13862 | + I915_WRITE(BLC_PWM_CTL, (blc_pwm_ctl | | 13473 | + I915_WRITE(BLC_PWM_CTL, (blc_pwm_ctl | |
13863 | + (level << BACKLIGHT_DUTY_CYCLE_SHIFT))); | 13474 | + (level << BACKLIGHT_DUTY_CYCLE_SHIFT))); |
@@ -13906,7 +13517,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
13906 | + return BRIGHTNESS_MAX_LEVEL; | 13517 | + return BRIGHTNESS_MAX_LEVEL; |
13907 | + /* | 13518 | + /* |
13908 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; | 13519 | + DRM_DRIVER_PRIVATE_T *dev_priv = dev->dev_private; |
13909 | + | 13520 | + |
13910 | + return ((I915_READ(BLC_PWM_CTL) & BACKLIGHT_MODULATION_FREQ_MASK) >> | 13521 | + return ((I915_READ(BLC_PWM_CTL) & BACKLIGHT_MODULATION_FREQ_MASK) >> |
13911 | + BACKLIGHT_MODULATION_FREQ_SHIFT) * 2; | 13522 | + BACKLIGHT_MODULATION_FREQ_SHIFT) * 2; |
13912 | + */ | 13523 | + */ |
@@ -14201,7 +13812,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14201 | +static int update_bl_status(struct backlight_device *bd) | 13812 | +static int update_bl_status(struct backlight_device *bd) |
14202 | +{ | 13813 | +{ |
14203 | + int value = bd->props.brightness; | 13814 | + int value = bd->props.brightness; |
14204 | + | 13815 | + |
14205 | + struct drm_device *dev = bl_get_data(bd); | 13816 | + struct drm_device *dev = bl_get_data(bd); |
14206 | + | 13817 | + |
14207 | + lvds_backlight = value; | 13818 | + lvds_backlight = value; |
@@ -14235,7 +13846,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14235 | + | 13846 | + |
14236 | + if (psbbl_device){ | 13847 | + if (psbbl_device){ |
14237 | + backlight_device_unregister(psbbl_device); | 13848 | + backlight_device_unregister(psbbl_device); |
14238 | + } | 13849 | + } |
14239 | + if(dev_OpRegion != NULL) | 13850 | + if(dev_OpRegion != NULL) |
14240 | + iounmap(dev_OpRegion); | 13851 | + iounmap(dev_OpRegion); |
14241 | + intel_i2c_destroy(intel_output->ddc_bus); | 13852 | + intel_i2c_destroy(intel_output->ddc_bus); |
@@ -14288,7 +13899,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14288 | + (int)obj->integer.value); | 13899 | + (int)obj->integer.value); |
14289 | + | 13900 | + |
14290 | + /* look for an LVDS type */ | 13901 | + /* look for an LVDS type */ |
14291 | + if (obj->integer.value & 0x00000400) | 13902 | + if (obj->integer.value & 0x00000400) |
14292 | + found = 1; | 13903 | + found = 1; |
14293 | + } | 13904 | + } |
14294 | + } | 13905 | + } |
@@ -14344,7 +13955,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14344 | + blc_type = 0; | 13955 | + blc_type = 0; |
14345 | + blc_pol = 0; | 13956 | + blc_pol = 0; |
14346 | + | 13957 | + |
14347 | + if (1) { //get the BLC init data from VBT | 13958 | + if (1) { //get the BLC init data from VBT |
14348 | + u32 OpRegion_Phys; | 13959 | + u32 OpRegion_Phys; |
14349 | + unsigned int OpRegion_Size = 0x100; | 13960 | + unsigned int OpRegion_Size = 0x100; |
14350 | + OpRegionPtr OpRegion; | 13961 | + OpRegionPtr OpRegion; |
@@ -14371,7 +13982,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14371 | + OpRegion_NewSize = OpRegion->size * 1024; | 13982 | + OpRegion_NewSize = OpRegion->size * 1024; |
14372 | + | 13983 | + |
14373 | + dev_OpRegionSize = OpRegion_NewSize; | 13984 | + dev_OpRegionSize = OpRegion_NewSize; |
14374 | + | 13985 | + |
14375 | + iounmap(dev_OpRegion); | 13986 | + iounmap(dev_OpRegion); |
14376 | + dev_OpRegion = ioremap(OpRegion_Phys, OpRegion_NewSize); | 13987 | + dev_OpRegion = ioremap(OpRegion_Phys, OpRegion_NewSize); |
14377 | + } else { | 13988 | + } else { |
@@ -14383,13 +13994,13 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14383 | + DRM_INFO("intel_lvds_init: OpRegion has the VBT address\n"); | 13994 | + DRM_INFO("intel_lvds_init: OpRegion has the VBT address\n"); |
14384 | + vbt_buf = dev_OpRegion + OFFSET_OPREGION_VBT; | 13995 | + vbt_buf = dev_OpRegion + OFFSET_OPREGION_VBT; |
14385 | + vbt = (struct vbt_header *)(dev_OpRegion + OFFSET_OPREGION_VBT); | 13996 | + vbt = (struct vbt_header *)(dev_OpRegion + OFFSET_OPREGION_VBT); |
14386 | + } else { | 13997 | + } else { |
14387 | + DRM_INFO("intel_lvds_init: No OpRegion, use the bios at fixed address 0xc0000\n"); | 13998 | + DRM_INFO("intel_lvds_init: No OpRegion, use the bios at fixed address 0xc0000\n"); |
14388 | + bios = phys_to_virt(0xC0000); | 13999 | + bios = phys_to_virt(0xC0000); |
14389 | + if(*((u16 *)bios) != 0xAA55){ | 14000 | + if(*((u16 *)bios) != 0xAA55){ |
14390 | + bios = NULL; | 14001 | + bios = NULL; |
14391 | + DRM_ERROR("the bios is incorrect\n"); | 14002 | + DRM_ERROR("the bios is incorrect\n"); |
14392 | + goto blc_out; | 14003 | + goto blc_out; |
14393 | + } | 14004 | + } |
14394 | + vbt_off = bios[0x1a] | (bios[0x1a + 1] << 8); | 14005 | + vbt_off = bios[0x1a] | (bios[0x1a + 1] << 8); |
14395 | + DRM_INFO("intel_lvds_init: the vbt off is %x\n", vbt_off); | 14006 | + DRM_INFO("intel_lvds_init: the vbt off is %x\n", vbt_off); |
@@ -14458,7 +14069,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14458 | + | 14069 | + |
14459 | + if(1){ | 14070 | + if(1){ |
14460 | + //get the Core Clock for calculating MAX PWM value | 14071 | + //get the Core Clock for calculating MAX PWM value |
14461 | + //check whether the MaxResEnableInt is | 14072 | + //check whether the MaxResEnableInt is |
14462 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); | 14073 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); |
14463 | + u32 clock; | 14074 | + u32 clock; |
14464 | + u32 sku_value = 0; | 14075 | + u32 sku_value = 0; |
@@ -14478,7 +14089,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14478 | + pci_read_config_dword(pci_root, 0xD4, &clock); | 14089 | + pci_read_config_dword(pci_root, 0xD4, &clock); |
14479 | + CoreClock = CoreClocks[clock & 0x07]; | 14090 | + CoreClock = CoreClocks[clock & 0x07]; |
14480 | + DRM_INFO("intel_lvds_init: the CoreClock is %d\n", CoreClock); | 14091 | + DRM_INFO("intel_lvds_init: the CoreClock is %d\n", CoreClock); |
14481 | + | 14092 | + |
14482 | + pci_write_config_dword(pci_root, 0xD0, PCI_PORT5_REG80_FFUSE); | 14093 | + pci_write_config_dword(pci_root, 0xD0, PCI_PORT5_REG80_FFUSE); |
14483 | + pci_read_config_dword(pci_root, 0xD4, &sku_value); | 14094 | + pci_read_config_dword(pci_root, 0xD4, &sku_value); |
14484 | + sku_bMaxResEnableInt = (sku_value & PCI_PORT5_REG80_MAXRES_INT_EN)? true : false; | 14095 | + sku_bMaxResEnableInt = (sku_value & PCI_PORT5_REG80_MAXRES_INT_EN)? true : false; |
@@ -14487,7 +14098,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14487 | + } | 14098 | + } |
14488 | + } | 14099 | + } |
14489 | + | 14100 | + |
14490 | + if ((blc_type == BLC_I2C_TYPE) || (blc_type == BLC_PWM_TYPE)){ | 14101 | + if ((blc_type == BLC_I2C_TYPE) || (blc_type == BLC_PWM_TYPE)){ |
14491 | + /* add /sys/class/backlight interface as standard */ | 14102 | + /* add /sys/class/backlight interface as standard */ |
14492 | + psbbl_device = backlight_device_register("psblvds", &dev->pdev->dev, dev, &psbbl_ops); | 14103 | + psbbl_device = backlight_device_register("psblvds", &dev->pdev->dev, dev, &psbbl_ops); |
14493 | + if (psbbl_device){ | 14104 | + if (psbbl_device){ |
@@ -14517,7 +14128,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14517 | + | 14128 | + |
14518 | + list_for_each_entry(scan, &output->probed_modes, head) { | 14129 | + list_for_each_entry(scan, &output->probed_modes, head) { |
14519 | + if (scan->type & DRM_MODE_TYPE_PREFERRED) { | 14130 | + if (scan->type & DRM_MODE_TYPE_PREFERRED) { |
14520 | + dev_priv->panel_fixed_mode = | 14131 | + dev_priv->panel_fixed_mode = |
14521 | + drm_mode_duplicate(dev, scan); | 14132 | + drm_mode_duplicate(dev, scan); |
14522 | + goto out; /* FIXME: check for quirks */ | 14133 | + goto out; /* FIXME: check for quirks */ |
14523 | + } | 14134 | + } |
@@ -14531,7 +14142,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14531 | + lvds = I915_READ(LVDS); | 14142 | + lvds = I915_READ(LVDS); |
14532 | + pipe = (lvds & LVDS_PIPEB_SELECT) ? 1 : 0; | 14143 | + pipe = (lvds & LVDS_PIPEB_SELECT) ? 1 : 0; |
14533 | + crtc = intel_get_crtc_from_pipe(dev, pipe); | 14144 | + crtc = intel_get_crtc_from_pipe(dev, pipe); |
14534 | + | 14145 | + |
14535 | + if (crtc && (lvds & LVDS_PORT_EN)) { | 14146 | + if (crtc && (lvds & LVDS_PORT_EN)) { |
14536 | + dev_priv->panel_fixed_mode = intel_crtc_mode_get(dev, crtc); | 14147 | + dev_priv->panel_fixed_mode = intel_crtc_mode_get(dev, crtc); |
14537 | + if (dev_priv->panel_fixed_mode) { | 14148 | + if (dev_priv->panel_fixed_mode) { |
@@ -14621,7 +14232,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.c | |||
14621 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h | 14232 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h |
14622 | =================================================================== | 14233 | =================================================================== |
14623 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 14234 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
14624 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h 2009-01-14 11:58:01.000000000 +0000 | 14235 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h 2009-02-05 13:29:33.000000000 +0000 |
14625 | @@ -0,0 +1,174 @@ | 14236 | @@ -0,0 +1,174 @@ |
14626 | +/* | 14237 | +/* |
14627 | + * Copyright © 2006-2007 Intel Corporation | 14238 | + * Copyright © 2006-2007 Intel Corporation |
@@ -14662,10 +14273,10 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h | |||
14662 | +#define BLC_MAX_PWM_REG_FREQ 0xfffe | 14273 | +#define BLC_MAX_PWM_REG_FREQ 0xfffe |
14663 | +#define BLC_MIN_PWM_REG_FREQ 0x2 | 14274 | +#define BLC_MIN_PWM_REG_FREQ 0x2 |
14664 | +#define BLC_PWM_LEGACY_MODE_ENABLE 0x0001 | 14275 | +#define BLC_PWM_LEGACY_MODE_ENABLE 0x0001 |
14665 | +#define BLC_PWM_PRECISION_FACTOR 10//10000000 | 14276 | +#define BLC_PWM_PRECISION_FACTOR 10//10000000 |
14666 | +#define BLC_PWM_FREQ_CALC_CONSTANT 32 | 14277 | +#define BLC_PWM_FREQ_CALC_CONSTANT 32 |
14667 | +#define MHz 1000000 | 14278 | +#define MHz 1000000 |
14668 | +#define OFFSET_OPREGION_VBT 0x400 | 14279 | +#define OFFSET_OPREGION_VBT 0x400 |
14669 | + | 14280 | + |
14670 | +typedef struct OpRegion_Header | 14281 | +typedef struct OpRegion_Header |
14671 | +{ | 14282 | +{ |
@@ -14700,7 +14311,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h | |||
14700 | + u16 version; /**< decimal */ | 14311 | + u16 version; /**< decimal */ |
14701 | + u16 header_size; /**< in bytes */ | 14312 | + u16 header_size; /**< in bytes */ |
14702 | + u16 bdb_size; /**< in bytes */ | 14313 | + u16 bdb_size; /**< in bytes */ |
14703 | +} __attribute__ ((packed)); | 14314 | +} __attribute__ ((packed)); |
14704 | + | 14315 | + |
14705 | +#define LVDS_CAP_EDID (1 << 6) | 14316 | +#define LVDS_CAP_EDID (1 << 6) |
14706 | +#define LVDS_CAP_DITHER (1 << 5) | 14317 | +#define LVDS_CAP_DITHER (1 << 5) |
@@ -14800,7 +14411,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_lvds.h | |||
14800 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_modes.c | 14411 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_modes.c |
14801 | =================================================================== | 14412 | =================================================================== |
14802 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 14413 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
14803 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_modes.c 2009-01-14 11:58:01.000000000 +0000 | 14414 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_modes.c 2009-02-05 13:29:33.000000000 +0000 |
14804 | @@ -0,0 +1,60 @@ | 14415 | @@ -0,0 +1,60 @@ |
14805 | +/* | 14416 | +/* |
14806 | + * Copyright (c) 2007 Dave Airlie <airlied@linux.ie> | 14417 | + * Copyright (c) 2007 Dave Airlie <airlied@linux.ie> |
@@ -14865,7 +14476,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_modes.c | |||
14865 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | 14476 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c |
14866 | =================================================================== | 14477 | =================================================================== |
14867 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 14478 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
14868 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c 2009-01-14 11:58:01.000000000 +0000 | 14479 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c 2009-02-05 13:29:33.000000000 +0000 |
14869 | @@ -0,0 +1,3973 @@ | 14480 | @@ -0,0 +1,3973 @@ |
14870 | +/* | 14481 | +/* |
14871 | + * Copyright © 2006-2007 Intel Corporation | 14482 | + * Copyright © 2006-2007 Intel Corporation |
@@ -15026,7 +14637,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15026 | + EXTVDATA OverScanY; /* Vertical Overscan : for TV onl */ | 14637 | + EXTVDATA OverScanY; /* Vertical Overscan : for TV onl */ |
15027 | + EXTVDATA OverScanX; /* Horizontal Overscan : for TV onl */ | 14638 | + EXTVDATA OverScanX; /* Horizontal Overscan : for TV onl */ |
15028 | + sdvo_display_params dispParams; | 14639 | + sdvo_display_params dispParams; |
15029 | + SDVO_ANCILLARY_INFO_T AncillaryInfo; | 14640 | + SDVO_ANCILLARY_INFO_T AncillaryInfo; |
15030 | +}; | 14641 | +}; |
15031 | + | 14642 | + |
15032 | +/* Define TV mode type */ | 14643 | +/* Define TV mode type */ |
@@ -15126,7 +14737,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15126 | +#define NUM_TV_MODES sizeof(tv_modes) / sizeof (tv_modes[0]) | 14737 | +#define NUM_TV_MODES sizeof(tv_modes) / sizeof (tv_modes[0]) |
15127 | + | 14738 | + |
15128 | +typedef struct { | 14739 | +typedef struct { |
15129 | + /* given values */ | 14740 | + /* given values */ |
15130 | + int n; | 14741 | + int n; |
15131 | + int m1, m2; | 14742 | + int m1, m2; |
15132 | + int p1, p2; | 14743 | + int p1, p2; |
@@ -15180,12 +14791,12 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15180 | + int ret; | 14791 | + int ret; |
15181 | + | 14792 | + |
15182 | + struct i2c_msg msgs[] = { | 14793 | + struct i2c_msg msgs[] = { |
15183 | + { | 14794 | + { |
15184 | + .addr = sdvo_priv->i2c_bus->slave_addr, | 14795 | + .addr = sdvo_priv->i2c_bus->slave_addr, |
15185 | + .flags = 0, | 14796 | + .flags = 0, |
15186 | + .len = 1, | 14797 | + .len = 1, |
15187 | + .buf = out_buf, | 14798 | + .buf = out_buf, |
15188 | + }, | 14799 | + }, |
15189 | + { | 14800 | + { |
15190 | + .addr = sdvo_priv->i2c_bus->slave_addr, | 14801 | + .addr = sdvo_priv->i2c_bus->slave_addr, |
15191 | + .flags = I2C_M_RD, | 14802 | + .flags = I2C_M_RD, |
@@ -15199,7 +14810,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15199 | + | 14810 | + |
15200 | + if ((ret = i2c_transfer(&sdvo_priv->i2c_bus->adapter, msgs, 2)) == 2) | 14811 | + if ((ret = i2c_transfer(&sdvo_priv->i2c_bus->adapter, msgs, 2)) == 2) |
15201 | + { | 14812 | + { |
15202 | +// DRM_DEBUG("got back from addr %02X = %02x\n", out_buf[0], buf[0]); | 14813 | +// DRM_DEBUG("got back from addr %02X = %02x\n", out_buf[0], buf[0]); |
15203 | + *ch = buf[0]; | 14814 | + *ch = buf[0]; |
15204 | + return true; | 14815 | + return true; |
15205 | + } | 14816 | + } |
@@ -15224,7 +14835,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15224 | + struct intel_output *intel_output = output->driver_private; | 14835 | + struct intel_output *intel_output = output->driver_private; |
15225 | + u8 out_buf[2]; | 14836 | + u8 out_buf[2]; |
15226 | + struct i2c_msg msgs[] = { | 14837 | + struct i2c_msg msgs[] = { |
15227 | + { | 14838 | + { |
15228 | + .addr = intel_output->i2c_bus->slave_addr, | 14839 | + .addr = intel_output->i2c_bus->slave_addr, |
15229 | + .flags = 0, | 14840 | + .flags = 0, |
15230 | + .len = 2, | 14841 | + .len = 2, |
@@ -15313,7 +14924,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15313 | + printk("(%02X)",cmd); | 14924 | + printk("(%02X)",cmd); |
15314 | + printk("\n"); | 14925 | + printk("\n"); |
15315 | + } | 14926 | + } |
15316 | + | 14927 | + |
15317 | + for (i = 0; i < args_len; i++) { | 14928 | + for (i = 0; i < args_len; i++) { |
15318 | + intel_sdvo_write_byte(output, SDVO_I2C_ARG_0 - i, ((u8*)args)[i]); | 14929 | + intel_sdvo_write_byte(output, SDVO_I2C_ARG_0 - i, ((u8*)args)[i]); |
15319 | + } | 14930 | + } |
@@ -15473,7 +15084,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15473 | + state = SDVO_ENCODER_STATE_OFF; | 15084 | + state = SDVO_ENCODER_STATE_OFF; |
15474 | + break; | 15085 | + break; |
15475 | + } | 15086 | + } |
15476 | + | 15087 | + |
15477 | + intel_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODER_POWER_STATE, &state, | 15088 | + intel_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODER_POWER_STATE, &state, |
15478 | + sizeof(state)); | 15089 | + sizeof(state)); |
15479 | + status = intel_sdvo_read_response(output, NULL, 0); | 15090 | + status = intel_sdvo_read_response(output, NULL, 0); |
@@ -15798,7 +15409,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
15798 | + break; | 15409 | + break; |
15799 | + } | 15410 | + } |
15800 | +} | 15411 | +} |
15801 | +#endif | 15412 | +#endif |
15802 | + | 15413 | + |
15803 | +static bool i830_sdvo_set_tvoutputs_formats(struct drm_output * output) | 15414 | +static bool i830_sdvo_set_tvoutputs_formats(struct drm_output * output) |
15804 | +{ | 15415 | +{ |
@@ -16031,7 +15642,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
16031 | + u32 * pHDTVStdMask, u32 *pTVStdFormat) | 15642 | + u32 * pHDTVStdMask, u32 *pTVStdFormat) |
16032 | +{ | 15643 | +{ |
16033 | + struct intel_output *intel_output = output->driver_private; | 15644 | + struct intel_output *intel_output = output->driver_private; |
16034 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 15645 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; |
16035 | + | 15646 | + |
16036 | + u8 byRets[6]; | 15647 | + u8 byRets[6]; |
16037 | + u8 status; | 15648 | + u8 status; |
@@ -16069,7 +15680,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
16069 | + else | 15680 | + else |
16070 | + *pTVStdFormat = (((u32) byRets[2] & 0xF8) | | 15681 | + *pTVStdFormat = (((u32) byRets[2] & 0xF8) | |
16071 | + ((u32) byRets[3] << 8) | | 15682 | + ((u32) byRets[3] << 8) | |
16072 | + ((u32) byRets[4] << 16) | ((u32) byRets[5] << 24)); | 15683 | + ((u32) byRets[4] << 16) | ((u32) byRets[5] << 24)); |
16073 | + DRM_DEBUG("BIOS TV format is %d\n",*pTVStdFormat); | 15684 | + DRM_DEBUG("BIOS TV format is %d\n",*pTVStdFormat); |
16074 | + return TRUE; | 15685 | + return TRUE; |
16075 | + | 15686 | + |
@@ -17681,7 +17292,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17681 | + if (!crtc->fb) { | 17292 | + if (!crtc->fb) { |
17682 | + DRM_ERROR("Can't set mode without attached fb\n"); | 17293 | + DRM_ERROR("Can't set mode without attached fb\n"); |
17683 | + return; | 17294 | + return; |
17684 | + } | 17295 | + } |
17685 | + is_sdvo = TRUE; | 17296 | + is_sdvo = TRUE; |
17686 | + ok = TRUE; | 17297 | + ok = TRUE; |
17687 | + ulDotClock = mode->clock * 1000 / 1000; /*xiaolin, fixme, do i need to by 1k hz */ | 17298 | + ulDotClock = mode->clock * 1000 / 1000; /*xiaolin, fixme, do i need to by 1k hz */ |
@@ -17707,7 +17318,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17707 | + clock.m1 = 0x10; | 17318 | + clock.m1 = 0x10; |
17708 | + clock.m2 = 0x8; | 17319 | + clock.m2 = 0x8; |
17709 | + } else if ((dotclock >= 140500) && (dotclock <= 200000)) { | 17320 | + } else if ((dotclock >= 140500) && (dotclock <= 200000)) { |
17710 | + | 17321 | + |
17711 | + DRM_DEBUG("dotclock is between 140500 and 200000!\n"); | 17322 | + DRM_DEBUG("dotclock is between 140500 and 200000!\n"); |
17712 | + clock.p1 = 0x1; | 17323 | + clock.p1 = 0x1; |
17713 | + /*CG was using 0x10 from spreadsheet it should be 0 */ | 17324 | + /*CG was using 0x10 from spreadsheet it should be 0 */ |
@@ -17775,7 +17386,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17775 | + else | 17386 | + else |
17776 | + { pipeconf &= ~PIPEACONF_DOUBLE_WIDE; DRM_DEBUG("non PIPEACONF_DOUBLE_WIDE\n");} | 17387 | + { pipeconf &= ~PIPEACONF_DOUBLE_WIDE; DRM_DEBUG("non PIPEACONF_DOUBLE_WIDE\n");} |
17777 | + } | 17388 | + } |
17778 | + | 17389 | + |
17779 | + dspcntr |= DISPLAY_PLANE_ENABLE; | 17390 | + dspcntr |= DISPLAY_PLANE_ENABLE; |
17780 | + pipeconf |= PIPEACONF_ENABLE; | 17391 | + pipeconf |= PIPEACONF_ENABLE; |
17781 | + dpll |= DPLL_VCO_ENABLE; | 17392 | + dpll |= DPLL_VCO_ENABLE; |
@@ -17786,12 +17397,12 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17786 | + | 17397 | + |
17787 | + print_Pll("chosen", &clock); | 17398 | + print_Pll("chosen", &clock); |
17788 | + DRM_DEBUG("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B'); | 17399 | + DRM_DEBUG("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B'); |
17789 | + drm_mode_debug_printmodeline(dev, mode); | 17400 | + drm_mode_debug_printmodeline(dev, mode); |
17790 | + DRM_DEBUG("Modeline %d:\"%s\" %d %d %d %d %d %d %d %d\n", | 17401 | + DRM_DEBUG("Modeline %d:\"%s\" %d %d %d %d %d %d %d %d\n", |
17791 | + mode->mode_id, mode->name, mode->crtc_htotal, mode->crtc_hdisplay, | 17402 | + mode->mode_id, mode->name, mode->crtc_htotal, mode->crtc_hdisplay, |
17792 | + mode->crtc_hblank_end, mode->crtc_hblank_start, | 17403 | + mode->crtc_hblank_end, mode->crtc_hblank_start, |
17793 | + mode->crtc_vtotal, mode->crtc_vdisplay, | 17404 | + mode->crtc_vtotal, mode->crtc_vdisplay, |
17794 | + mode->crtc_vblank_end, mode->crtc_vblank_start); | 17405 | + mode->crtc_vblank_end, mode->crtc_vblank_start); |
17795 | + DRM_DEBUG("clock regs: 0x%08x, 0x%08x,dspntr is 0x%8x, pipeconf is 0x%8x\n", (int)dpll, | 17406 | + DRM_DEBUG("clock regs: 0x%08x, 0x%08x,dspntr is 0x%8x, pipeconf is 0x%8x\n", (int)dpll, |
17796 | + (int)fp,(int)dspcntr,(int)pipeconf); | 17407 | + (int)fp,(int)dspcntr,(int)pipeconf); |
17797 | + | 17408 | + |
@@ -17851,14 +17462,14 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17851 | + } | 17462 | + } |
17852 | + I915_WRITE(pipeconf_reg, pipeconf); | 17463 | + I915_WRITE(pipeconf_reg, pipeconf); |
17853 | + I915_READ(pipeconf_reg); | 17464 | + I915_READ(pipeconf_reg); |
17854 | + | 17465 | + |
17855 | + intel_wait_for_vblank(dev); | 17466 | + intel_wait_for_vblank(dev); |
17856 | + | 17467 | + |
17857 | + I915_WRITE(dspcntr_reg, dspcntr); | 17468 | + I915_WRITE(dspcntr_reg, dspcntr); |
17858 | + /* Flush the plane changes */ | 17469 | + /* Flush the plane changes */ |
17859 | + //intel_pipe_set_base(crtc, 0, 0); | 17470 | + //intel_pipe_set_base(crtc, 0, 0); |
17860 | + /* Disable the VGA plane that we never use */ | 17471 | + /* Disable the VGA plane that we never use */ |
17861 | + //I915_WRITE(VGACNTRL, VGA_DISP_DISABLE); | 17472 | + //I915_WRITE(VGACNTRL, VGA_DISP_DISABLE); |
17862 | + //intel_wait_for_vblank(dev); | 17473 | + //intel_wait_for_vblank(dev); |
17863 | + | 17474 | + |
17864 | +} | 17475 | +} |
@@ -17890,7 +17501,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17890 | + mode = &tv_modes[0].mode_entry; | 17501 | + mode = &tv_modes[0].mode_entry; |
17891 | + drm_mode_set_crtcinfo(mode, 0); | 17502 | + drm_mode_set_crtcinfo(mode, 0); |
17892 | + } | 17503 | + } |
17893 | + } | 17504 | + } |
17894 | + save_mode = mode; | 17505 | + save_mode = mode; |
17895 | +#if 0 | 17506 | +#if 0 |
17896 | + width = mode->crtc_hdisplay; | 17507 | + width = mode->crtc_hdisplay; |
@@ -17915,7 +17526,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17915 | + output_dtd.part1.v_blank = v_blank_len & 0xff; | 17526 | + output_dtd.part1.v_blank = v_blank_len & 0xff; |
17916 | + output_dtd.part1.v_high = (((height >> 8) & 0xf) << 4) | | 17527 | + output_dtd.part1.v_high = (((height >> 8) & 0xf) << 4) | |
17917 | + ((v_blank_len >> 8) & 0xf); | 17528 | + ((v_blank_len >> 8) & 0xf); |
17918 | + | 17529 | + |
17919 | + output_dtd.part2.h_sync_off = h_sync_offset; | 17530 | + output_dtd.part2.h_sync_off = h_sync_offset; |
17920 | + output_dtd.part2.h_sync_width = h_sync_len & 0xff; | 17531 | + output_dtd.part2.h_sync_width = h_sync_len & 0xff; |
17921 | + output_dtd.part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 | | 17532 | + output_dtd.part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 | |
@@ -17923,7 +17534,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17923 | + output_dtd.part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) | | 17534 | + output_dtd.part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) | |
17924 | + ((h_sync_len & 0x300) >> 4) | ((v_sync_offset & 0x30) >> 2) | | 17535 | + ((h_sync_len & 0x300) >> 4) | ((v_sync_offset & 0x30) >> 2) | |
17925 | + ((v_sync_len & 0x30) >> 4); | 17536 | + ((v_sync_len & 0x30) >> 4); |
17926 | + | 17537 | + |
17927 | + output_dtd.part2.dtd_flags = 0x18; | 17538 | + output_dtd.part2.dtd_flags = 0x18; |
17928 | + if (mode->flags & V_PHSYNC) | 17539 | + if (mode->flags & V_PHSYNC) |
17929 | + output_dtd.part2.dtd_flags |= 0x2; | 17540 | + output_dtd.part2.dtd_flags |= 0x2; |
@@ -17940,9 +17551,9 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17940 | + //intel_sdvo_set_active_outputs(output, sdvo_priv->active_outputs); | 17551 | + //intel_sdvo_set_active_outputs(output, sdvo_priv->active_outputs); |
17941 | + memset(&output_dtd, 0, sizeof(struct intel_sdvo_dtd)); | 17552 | + memset(&output_dtd, 0, sizeof(struct intel_sdvo_dtd)); |
17942 | + /* check if this mode can be supported or not */ | 17553 | + /* check if this mode can be supported or not */ |
17943 | + | 17554 | + |
17944 | + i830_translate_timing2dtd(mode, &output_dtd); | 17555 | + i830_translate_timing2dtd(mode, &output_dtd); |
17945 | +#endif | 17556 | +#endif |
17946 | + intel_sdvo_set_target_output(output, 0); | 17557 | + intel_sdvo_set_target_output(output, 0); |
17947 | + /* set the target input & output first */ | 17558 | + /* set the target input & output first */ |
17948 | + /* Set the input timing to the screen. Assume always input 0. */ | 17559 | + /* Set the input timing to the screen. Assume always input 0. */ |
@@ -17973,7 +17584,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17973 | + /* Set the overscan values now as input timing is dependent on overscan values */ | 17584 | + /* Set the overscan values now as input timing is dependent on overscan values */ |
17974 | + | 17585 | + |
17975 | + } | 17586 | + } |
17976 | + | 17587 | + |
17977 | + | 17588 | + |
17978 | + /* We would like to use i830_sdvo_create_preferred_input_timing() to | 17589 | + /* We would like to use i830_sdvo_create_preferred_input_timing() to |
17979 | + * provide the device with a timing it can support, if it supports that | 17590 | + * provide the device with a timing it can support, if it supports that |
@@ -17985,16 +17596,16 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
17985 | + width, height); | 17596 | + width, height); |
17986 | + if (success) { | 17597 | + if (success) { |
17987 | + struct intel_sdvo_dtd *input_dtd; | 17598 | + struct intel_sdvo_dtd *input_dtd; |
17988 | + | 17599 | + |
17989 | + intel_sdvo_get_preferred_input_timing(output, &input_dtd); | 17600 | + intel_sdvo_get_preferred_input_timing(output, &input_dtd); |
17990 | + intel_sdvo_set_input_timing(output, &input_dtd); | 17601 | + intel_sdvo_set_input_timing(output, &input_dtd); |
17991 | + } | 17602 | + } |
17992 | +#else | 17603 | +#else |
17993 | + /* Set input timing (in DTD) */ | 17604 | + /* Set input timing (in DTD) */ |
17994 | + intel_sdvo_set_input_timing(output, &output_dtd); | 17605 | + intel_sdvo_set_input_timing(output, &output_dtd); |
17995 | +#endif | 17606 | +#endif |
17996 | + if (sdvo_priv->ActiveDevice == SDVO_DEVICE_TV) { | 17607 | + if (sdvo_priv->ActiveDevice == SDVO_DEVICE_TV) { |
17997 | + | 17608 | + |
17998 | + DRM_DEBUG("xxintel_sdvo_mode_set tv path\n"); | 17609 | + DRM_DEBUG("xxintel_sdvo_mode_set tv path\n"); |
17999 | + i830_tv_program_display_params(output); | 17610 | + i830_tv_program_display_params(output); |
18000 | + /* translate dtd 2 timing */ | 17611 | + /* translate dtd 2 timing */ |
@@ -18030,7 +17641,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18030 | + intel_sdvo_set_clock_rate_mult(output, | 17641 | + intel_sdvo_set_clock_rate_mult(output, |
18031 | + SDVO_CLOCK_RATE_MULT_4X); | 17642 | + SDVO_CLOCK_RATE_MULT_4X); |
18032 | + break; | 17643 | + break; |
18033 | + } | 17644 | + } |
18034 | + } | 17645 | + } |
18035 | + /* Set the SDVO control regs. */ | 17646 | + /* Set the SDVO control regs. */ |
18036 | + if (0/*IS_I965GM(dev)*/) { | 17647 | + if (0/*IS_I965GM(dev)*/) { |
@@ -18052,17 +17663,17 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18052 | + | 17663 | + |
18053 | + sdvo_pixel_multiply = intel_sdvo_get_pixel_multiplier(mode); | 17664 | + sdvo_pixel_multiply = intel_sdvo_get_pixel_multiplier(mode); |
18054 | + if (IS_I965G(dev)) { | 17665 | + if (IS_I965G(dev)) { |
18055 | + /* done in crtc_mode_set as the dpll_md reg must be written | 17666 | + /* done in crtc_mode_set as the dpll_md reg must be written |
18056 | + early */ | 17667 | + early */ |
18057 | + } else if (IS_POULSBO(dev) || IS_I945G(dev) || IS_I945GM(dev)) { | 17668 | + } else if (IS_POULSBO(dev) || IS_I945G(dev) || IS_I945GM(dev)) { |
18058 | + /* done in crtc_mode_set as it lives inside the | 17669 | + /* done in crtc_mode_set as it lives inside the |
18059 | + dpll register */ | 17670 | + dpll register */ |
18060 | + } else { | 17671 | + } else { |
18061 | + sdvox |= (sdvo_pixel_multiply - 1) << SDVO_PORT_MULTIPLY_SHIFT; | 17672 | + sdvox |= (sdvo_pixel_multiply - 1) << SDVO_PORT_MULTIPLY_SHIFT; |
18062 | + } | 17673 | + } |
18063 | + | 17674 | + |
18064 | + intel_sdvo_write_sdvox(output, sdvox); | 17675 | + intel_sdvo_write_sdvox(output, sdvox); |
18065 | + i830_sdvo_set_iomap(output); | 17676 | + i830_sdvo_set_iomap(output); |
18066 | +} | 17677 | +} |
18067 | + | 17678 | + |
18068 | +static void intel_sdvo_dpms(struct drm_output *output, int mode) | 17679 | +static void intel_sdvo_dpms(struct drm_output *output, int mode) |
@@ -18097,18 +17708,18 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18097 | + bool input1, input2; | 17708 | + bool input1, input2; |
18098 | + int i; | 17709 | + int i; |
18099 | + u8 status; | 17710 | + u8 status; |
18100 | + | 17711 | + |
18101 | + temp = I915_READ(sdvo_priv->output_device); | 17712 | + temp = I915_READ(sdvo_priv->output_device); |
18102 | + if ((temp & SDVO_ENABLE) == 0) | 17713 | + if ((temp & SDVO_ENABLE) == 0) |
18103 | + intel_sdvo_write_sdvox(output, temp | SDVO_ENABLE); | 17714 | + intel_sdvo_write_sdvox(output, temp | SDVO_ENABLE); |
18104 | + for (i = 0; i < 2; i++) | 17715 | + for (i = 0; i < 2; i++) |
18105 | + intel_wait_for_vblank(dev); | 17716 | + intel_wait_for_vblank(dev); |
18106 | + | 17717 | + |
18107 | + status = intel_sdvo_get_trained_inputs(output, &input1, | 17718 | + status = intel_sdvo_get_trained_inputs(output, &input1, |
18108 | + &input2); | 17719 | + &input2); |
18109 | + | 17720 | + |
18110 | + | 17721 | + |
18111 | + /* Warn if the device reported failure to sync. | 17722 | + /* Warn if the device reported failure to sync. |
18112 | + * A lot of SDVO devices fail to notify of sync, but it's | 17723 | + * A lot of SDVO devices fail to notify of sync, but it's |
18113 | + * a given it the status is a success, we succeeded. | 17724 | + * a given it the status is a success, we succeeded. |
18114 | + */ | 17725 | + */ |
@@ -18116,13 +17727,13 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18116 | + DRM_DEBUG("First %s output reported failure to sync\n", | 17727 | + DRM_DEBUG("First %s output reported failure to sync\n", |
18117 | + SDVO_NAME(sdvo_priv)); | 17728 | + SDVO_NAME(sdvo_priv)); |
18118 | + } | 17729 | + } |
18119 | + | 17730 | + |
18120 | + if (0) | 17731 | + if (0) |
18121 | + intel_sdvo_set_encoder_power_state(output, mode); | 17732 | + intel_sdvo_set_encoder_power_state(output, mode); |
18122 | + | 17733 | + |
18123 | + DRM_DEBUG("xiaolin active output is %d\n",sdvo_priv->active_outputs); | 17734 | + DRM_DEBUG("xiaolin active output is %d\n",sdvo_priv->active_outputs); |
18124 | + intel_sdvo_set_active_outputs(output, sdvo_priv->active_outputs); | 17735 | + intel_sdvo_set_active_outputs(output, sdvo_priv->active_outputs); |
18125 | + } | 17736 | + } |
18126 | + return; | 17737 | + return; |
18127 | +} | 17738 | +} |
18128 | + | 17739 | + |
@@ -18152,7 +17763,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18152 | + | 17763 | + |
18153 | + intel_sdvo_set_target_output(output, sdvo_priv->active_outputs); | 17764 | + intel_sdvo_set_target_output(output, sdvo_priv->active_outputs); |
18154 | + intel_sdvo_get_output_timing(output, | 17765 | + intel_sdvo_get_output_timing(output, |
18155 | + &sdvo_priv->save_output_dtd[sdvo_priv->active_outputs]); | 17766 | + &sdvo_priv->save_output_dtd[sdvo_priv->active_outputs]); |
18156 | + sdvo_priv->save_SDVOX = I915_READ(sdvo_priv->output_device); | 17767 | + sdvo_priv->save_SDVOX = I915_READ(sdvo_priv->output_device); |
18157 | +} | 17768 | +} |
18158 | + | 17769 | + |
@@ -18181,11 +17792,11 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18181 | + intel_sdvo_set_target_input(output, false, true); | 17792 | + intel_sdvo_set_target_input(output, false, true); |
18182 | + intel_sdvo_set_input_timing(output, &sdvo_priv->save_input_dtd_2); | 17793 | + intel_sdvo_set_input_timing(output, &sdvo_priv->save_input_dtd_2); |
18183 | + } | 17794 | + } |
18184 | + | 17795 | + |
18185 | + intel_sdvo_set_clock_rate_mult(output, sdvo_priv->save_sdvo_mult); | 17796 | + intel_sdvo_set_clock_rate_mult(output, sdvo_priv->save_sdvo_mult); |
18186 | + | 17797 | + |
18187 | + I915_WRITE(sdvo_priv->output_device, sdvo_priv->save_SDVOX); | 17798 | + I915_WRITE(sdvo_priv->output_device, sdvo_priv->save_SDVOX); |
18188 | + | 17799 | + |
18189 | + if (sdvo_priv->save_SDVOX & SDVO_ENABLE) | 17800 | + if (sdvo_priv->save_SDVOX & SDVO_ENABLE) |
18190 | + { | 17801 | + { |
18191 | + for (i = 0; i < 2; i++) | 17802 | + for (i = 0; i < 2; i++) |
@@ -18195,8 +17806,8 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18195 | + DRM_DEBUG("First %s output reported failure to sync\n", | 17806 | + DRM_DEBUG("First %s output reported failure to sync\n", |
18196 | + SDVO_NAME(sdvo_priv)); | 17807 | + SDVO_NAME(sdvo_priv)); |
18197 | + } | 17808 | + } |
18198 | + | 17809 | + |
18199 | + i830_sdvo_set_iomap(output); | 17810 | + i830_sdvo_set_iomap(output); |
18200 | + intel_sdvo_set_active_outputs(output, sdvo_priv->save_active_outputs); | 17811 | + intel_sdvo_set_active_outputs(output, sdvo_priv->save_active_outputs); |
18201 | +} | 17812 | +} |
18202 | + | 17813 | + |
@@ -18207,10 +17818,10 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18207 | + | 17818 | + |
18208 | + bool find = FALSE; | 17819 | + bool find = FALSE; |
18209 | + int i; | 17820 | + int i; |
18210 | + | 17821 | + |
18211 | + DRM_DEBUG("i830_tv_mode_find,0x%x\n", sdvo_priv->TVStandard); | 17822 | + DRM_DEBUG("i830_tv_mode_find,0x%x\n", sdvo_priv->TVStandard); |
18212 | + | 17823 | + |
18213 | + for (i = 0; i < NUM_TV_MODES; i++) | 17824 | + for (i = 0; i < NUM_TV_MODES; i++) |
18214 | + { | 17825 | + { |
18215 | + const tv_mode_t *tv_mode = &tv_modes[i]; | 17826 | + const tv_mode_t *tv_mode = &tv_modes[i]; |
18216 | + if (strcmp (tv_mode->mode_entry.name, pMode->name) == 0 | 17827 | + if (strcmp (tv_mode->mode_entry.name, pMode->name) == 0 |
@@ -18228,7 +17839,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18228 | +{ | 17839 | +{ |
18229 | + struct intel_output *intel_output = output->driver_private; | 17840 | + struct intel_output *intel_output = output->driver_private; |
18230 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 17841 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; |
18231 | + | 17842 | + |
18232 | + bool status = TRUE; | 17843 | + bool status = TRUE; |
18233 | + DRM_DEBUG("xxintel_sdvo_mode_valid\n"); | 17844 | + DRM_DEBUG("xxintel_sdvo_mode_valid\n"); |
18234 | + | 17845 | + |
@@ -18279,7 +17890,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18279 | + u32 dwTVStdBitmask = 0; | 17890 | + u32 dwTVStdBitmask = 0; |
18280 | + | 17891 | + |
18281 | + struct intel_output *intel_output = output->driver_private; | 17892 | + struct intel_output *intel_output = output->driver_private; |
18282 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 17893 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; |
18283 | + | 17894 | + |
18284 | + | 17895 | + |
18285 | + /* Get supported TV Standard */ | 17896 | + /* Get supported TV Standard */ |
@@ -18302,15 +17913,15 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18302 | + char *name_suffix; | 17913 | + char *name_suffix; |
18303 | + char *name_prefix; | 17914 | + char *name_prefix; |
18304 | + unsigned char bytes[2]; | 17915 | + unsigned char bytes[2]; |
18305 | + | 17916 | + |
18306 | + struct drm_device *dev = output->dev; | 17917 | + struct drm_device *dev = output->dev; |
18307 | + | 17918 | + |
18308 | + struct intel_output *intel_output = output->driver_private; | 17919 | + struct intel_output *intel_output = output->driver_private; |
18309 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; | 17920 | + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv; |
18310 | + | 17921 | + |
18311 | + DRM_DEBUG("xxintel_sdvo_detect\n"); | 17922 | + DRM_DEBUG("xxintel_sdvo_detect\n"); |
18312 | + intel_sdvo_dpms(output, DPMSModeOn); | 17923 | + intel_sdvo_dpms(output, DPMSModeOn); |
18313 | + | 17924 | + |
18314 | + if (!intel_sdvo_get_capabilities(output, &sdvo_priv->caps)) { | 17925 | + if (!intel_sdvo_get_capabilities(output, &sdvo_priv->caps)) { |
18315 | + /*No SDVO support, power down the pipe */ | 17926 | + /*No SDVO support, power down the pipe */ |
18316 | + intel_sdvo_dpms(output, DPMSModeOff); | 17927 | + intel_sdvo_dpms(output, DPMSModeOff); |
@@ -18339,10 +17950,10 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18339 | + | 17950 | + |
18340 | + if ((status != SDVO_CMD_STATUS_SUCCESS) || (response[0] == 0 && response[1] == 0)) { | 17951 | + if ((status != SDVO_CMD_STATUS_SUCCESS) || (response[0] == 0 && response[1] == 0)) { |
18341 | + udelay(500); | 17952 | + udelay(500); |
18342 | + continue; | 17953 | + continue; |
18343 | + } else | 17954 | + } else |
18344 | + break; | 17955 | + break; |
18345 | + } | 17956 | + } |
18346 | + if (response[0] != 0 || response[1] != 0) { | 17957 | + if (response[0] != 0 || response[1] != 0) { |
18347 | + /*Check what device types are connected to the hardware CRT/HDTV/S-Video/Composite */ | 17958 | + /*Check what device types are connected to the hardware CRT/HDTV/S-Video/Composite */ |
18348 | + /*in case of CRT and multiple TV's attached give preference in the order mentioned below */ | 17959 | + /*in case of CRT and multiple TV's attached give preference in the order mentioned below */ |
@@ -18420,9 +18031,9 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18420 | + /*sdvo_priv->TVStandard = TVSTANDARD_NTSC_M;*/ | 18031 | + /*sdvo_priv->TVStandard = TVSTANDARD_NTSC_M;*/ |
18421 | + sdvo_priv->TVMode = TVMODE_SDTV; | 18032 | + sdvo_priv->TVMode = TVMODE_SDTV; |
18422 | + } | 18033 | + } |
18423 | + | 18034 | + |
18424 | + /*intel_output->pDevice->TVEnabled = TRUE;*/ | 18035 | + /*intel_output->pDevice->TVEnabled = TRUE;*/ |
18425 | + | 18036 | + |
18426 | + i830_tv_get_default_params(output); | 18037 | + i830_tv_get_default_params(output); |
18427 | + /*Init Display parameter for TV */ | 18038 | + /*Init Display parameter for TV */ |
18428 | + sdvo_priv->OverScanX.Value = 0xffffffff; | 18039 | + sdvo_priv->OverScanX.Value = 0xffffffff; |
@@ -18441,7 +18052,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18441 | + sdvo_priv->dispParams.Saturation.Value = 0x45; | 18052 | + sdvo_priv->dispParams.Saturation.Value = 0x45; |
18442 | + sdvo_priv->dispParams.Hue.Value = 0x40; | 18053 | + sdvo_priv->dispParams.Hue.Value = 0x40; |
18443 | + sdvo_priv->dispParams.Dither.Value = 0; | 18054 | + sdvo_priv->dispParams.Dither.Value = 0; |
18444 | + | 18055 | + |
18445 | + } | 18056 | + } |
18446 | + else { | 18057 | + else { |
18447 | + name_prefix = "RGB0"; | 18058 | + name_prefix = "RGB0"; |
@@ -18474,7 +18085,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18474 | + intel_sdvo_dpms(output, DPMSModeOff); | 18085 | + intel_sdvo_dpms(output, DPMSModeOff); |
18475 | + sdvo_priv->ActiveDevice = SDVO_DEVICE_NONE; | 18086 | + sdvo_priv->ActiveDevice = SDVO_DEVICE_NONE; |
18476 | + return output_status_disconnected; | 18087 | + return output_status_disconnected; |
18477 | + } | 18088 | + } |
18478 | +} | 18089 | +} |
18479 | + | 18090 | + |
18480 | +static int i830_sdvo_get_tvmode_from_table(struct drm_output *output) | 18091 | +static int i830_sdvo_get_tvmode_from_table(struct drm_output *output) |
@@ -18491,13 +18102,13 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18491 | + ((sdvo_priv->TVMode == TVMODE_SDTV) && /*sdtv mode list */ | 18102 | + ((sdvo_priv->TVMode == TVMODE_SDTV) && /*sdtv mode list */ |
18492 | + (tv_modes[i].dwSupportedSDTVvss & TVSTANDARD_SDTV_ALL))) { | 18103 | + (tv_modes[i].dwSupportedSDTVvss & TVSTANDARD_SDTV_ALL))) { |
18493 | + struct drm_display_mode *newmode; | 18104 | + struct drm_display_mode *newmode; |
18494 | + newmode = drm_mode_duplicate(dev, &tv_modes[i].mode_entry); | 18105 | + newmode = drm_mode_duplicate(dev, &tv_modes[i].mode_entry); |
18495 | + drm_mode_set_crtcinfo(newmode,0); | 18106 | + drm_mode_set_crtcinfo(newmode,0); |
18496 | + drm_mode_probed_add(output, newmode); | 18107 | + drm_mode_probed_add(output, newmode); |
18497 | + modes++; | 18108 | + modes++; |
18498 | + } | 18109 | + } |
18499 | + | 18110 | + |
18500 | + return modes; | 18111 | + return modes; |
18501 | + | 18112 | + |
18502 | +} | 18113 | +} |
18503 | + | 18114 | + |
@@ -18527,7 +18138,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18527 | +#if 0 | 18138 | +#if 0 |
18528 | + /* Mac mini hack. On this device, I get DDC through the analog, which | 18139 | + /* Mac mini hack. On this device, I get DDC through the analog, which |
18529 | + * load-detects as disconnected. I fail to DDC through the SDVO DDC, | 18140 | + * load-detects as disconnected. I fail to DDC through the SDVO DDC, |
18530 | + * but it does load-detect as connected. So, just steal the DDC bits | 18141 | + * but it does load-detect as connected. So, just steal the DDC bits |
18531 | + * from analog when we fail at finding it the right way. | 18142 | + * from analog when we fail at finding it the right way. |
18532 | + */ | 18143 | + */ |
18533 | + /* TODO */ | 18144 | + /* TODO */ |
@@ -18579,11 +18190,11 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18579 | + | 18190 | + |
18580 | + int count = 3; | 18191 | + int count = 3; |
18581 | + u8 response[2]; | 18192 | + u8 response[2]; |
18582 | + u8 status; | 18193 | + u8 status; |
18583 | + unsigned char bytes[2]; | 18194 | + unsigned char bytes[2]; |
18584 | + | 18195 | + |
18585 | + DRM_DEBUG("xxintel_sdvo_init\n"); | 18196 | + DRM_DEBUG("xxintel_sdvo_init\n"); |
18586 | + | 18197 | + |
18587 | + if (IS_POULSBO(dev)) { | 18198 | + if (IS_POULSBO(dev)) { |
18588 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); | 18199 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); |
18589 | + u32 sku_value = 0; | 18200 | + u32 sku_value = 0; |
@@ -18788,7 +18399,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18788 | + name_prefix = "RGB0"; | 18399 | + name_prefix = "RGB0"; |
18789 | + DRM_INFO("non TV is attaced\n"); | 18400 | + DRM_INFO("non TV is attaced\n"); |
18790 | + } | 18401 | + } |
18791 | + | 18402 | + |
18792 | + strcpy(name, name_prefix); | 18403 | + strcpy(name, name_prefix); |
18793 | + strcat(name, name_suffix); | 18404 | + strcat(name, name_suffix); |
18794 | + if (!drm_output_rename(output, name)) { | 18405 | + if (!drm_output_rename(output, name)) { |
@@ -18815,7 +18426,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18815 | + | 18426 | + |
18816 | + /* Set the input timing to the screen. Assume always input 0. */ | 18427 | + /* Set the input timing to the screen. Assume always input 0. */ |
18817 | + intel_sdvo_set_target_input(output, true, false); | 18428 | + intel_sdvo_set_target_input(output, true, false); |
18818 | + | 18429 | + |
18819 | + intel_sdvo_get_input_pixel_clock_range(output, | 18430 | + intel_sdvo_get_input_pixel_clock_range(output, |
18820 | + &sdvo_priv->pixel_clock_min, | 18431 | + &sdvo_priv->pixel_clock_min, |
18821 | + &sdvo_priv->pixel_clock_max); | 18432 | + &sdvo_priv->pixel_clock_max); |
@@ -18833,17 +18444,17 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo.c | |||
18833 | + (sdvo_priv->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', | 18444 | + (sdvo_priv->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', |
18834 | + (sdvo_priv->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', | 18445 | + (sdvo_priv->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', |
18835 | + /* check currently supported outputs */ | 18446 | + /* check currently supported outputs */ |
18836 | + sdvo_priv->caps.output_flags & | 18447 | + sdvo_priv->caps.output_flags & |
18837 | + (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_RGB0) ? 'Y' : 'N', | 18448 | + (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_RGB0) ? 'Y' : 'N', |
18838 | + sdvo_priv->caps.output_flags & | 18449 | + sdvo_priv->caps.output_flags & |
18839 | + (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); | 18450 | + (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); |
18840 | + | 18451 | + |
18841 | + intel_output->ddc_bus = i2cbus; | 18452 | + intel_output->ddc_bus = i2cbus; |
18842 | +} | 18453 | +} |
18843 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo_regs.h | 18454 | Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo_regs.h |
18844 | =================================================================== | 18455 | =================================================================== |
18845 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 18456 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
18846 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo_regs.h 2009-01-14 11:58:01.000000000 +0000 | 18457 | +++ linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo_regs.h 2009-02-05 13:29:33.000000000 +0000 |
18847 | @@ -0,0 +1,580 @@ | 18458 | @@ -0,0 +1,580 @@ |
18848 | +/* | 18459 | +/* |
18849 | + * Copyright ?2006-2007 Intel Corporation | 18460 | + * Copyright ?2006-2007 Intel Corporation |
@@ -19428,7 +19039,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/intel_sdvo_regs.h | |||
19428 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_buffer.c | 19039 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_buffer.c |
19429 | =================================================================== | 19040 | =================================================================== |
19430 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 19041 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
19431 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_buffer.c 2009-01-14 11:58:01.000000000 +0000 | 19042 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_buffer.c 2009-02-05 13:29:33.000000000 +0000 |
19432 | @@ -0,0 +1,437 @@ | 19043 | @@ -0,0 +1,437 @@ |
19433 | +/************************************************************************** | 19044 | +/************************************************************************** |
19434 | + * Copyright (c) 2007, Intel Corporation. | 19045 | + * Copyright (c) 2007, Intel Corporation. |
@@ -19870,7 +19481,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_buffer.c | |||
19870 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drm.h | 19481 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drm.h |
19871 | =================================================================== | 19482 | =================================================================== |
19872 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 19483 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
19873 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drm.h 2009-01-14 11:58:01.000000000 +0000 | 19484 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drm.h 2009-02-05 13:29:33.000000000 +0000 |
19874 | @@ -0,0 +1,370 @@ | 19485 | @@ -0,0 +1,370 @@ |
19875 | +/************************************************************************** | 19486 | +/************************************************************************** |
19876 | + * Copyright (c) 2007, Intel Corporation. | 19487 | + * Copyright (c) 2007, Intel Corporation. |
@@ -20245,7 +19856,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drm.h | |||
20245 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | 19856 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c |
20246 | =================================================================== | 19857 | =================================================================== |
20247 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 19858 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
20248 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c 2009-01-14 11:58:01.000000000 +0000 | 19859 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c 2009-02-05 13:29:33.000000000 +0000 |
20249 | @@ -0,0 +1,1006 @@ | 19860 | @@ -0,0 +1,1006 @@ |
20250 | +/************************************************************************** | 19861 | +/************************************************************************** |
20251 | + * Copyright (c) 2007, Intel Corporation. | 19862 | + * Copyright (c) 2007, Intel Corporation. |
@@ -20712,7 +20323,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
20712 | + mutex_lock(&dev->mode_config.mutex); | 20323 | + mutex_lock(&dev->mode_config.mutex); |
20713 | + | 20324 | + |
20714 | + drm_crtc_probe_output_modes(dev, 2048, 2048); | 20325 | + drm_crtc_probe_output_modes(dev, 2048, 2048); |
20715 | + | 20326 | + |
20716 | + /* strncpy(drm_init_mode, psb_init_mode, strlen(psb_init_mode)); */ | 20327 | + /* strncpy(drm_init_mode, psb_init_mode, strlen(psb_init_mode)); */ |
20717 | + drm_init_xres = psb_init_xres; | 20328 | + drm_init_xres = psb_init_xres; |
20718 | + drm_init_yres = psb_init_yres; | 20329 | + drm_init_yres = psb_init_yres; |
@@ -20800,7 +20411,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
20800 | + psb_scheduler_init(dev, &dev_priv->scheduler); | 20411 | + psb_scheduler_init(dev, &dev_priv->scheduler); |
20801 | + | 20412 | + |
20802 | + resource_start = pci_resource_start(dev->pdev, PSB_MMIO_RESOURCE); | 20413 | + resource_start = pci_resource_start(dev->pdev, PSB_MMIO_RESOURCE); |
20803 | + | 20414 | + |
20804 | + dev_priv->msvdx_reg = | 20415 | + dev_priv->msvdx_reg = |
20805 | + ioremap(resource_start + PSB_MSVDX_OFFSET, PSB_MSVDX_SIZE); | 20416 | + ioremap(resource_start + PSB_MSVDX_OFFSET, PSB_MSVDX_SIZE); |
20806 | + if (!dev_priv->msvdx_reg) | 20417 | + if (!dev_priv->msvdx_reg) |
@@ -20955,7 +20566,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
20955 | + } while (ret == -EINTR); | 20566 | + } while (ret == -EINTR); |
20956 | + | 20567 | + |
20957 | + } | 20568 | + } |
20958 | + | 20569 | + |
20959 | + /* Issue software reset */ | 20570 | + /* Issue software reset */ |
20960 | + PSB_WMSVDX32 (msvdx_sw_reset_all, MSVDX_CONTROL); | 20571 | + PSB_WMSVDX32 (msvdx_sw_reset_all, MSVDX_CONTROL); |
20961 | + | 20572 | + |
@@ -21025,7 +20636,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
21025 | +#ifdef USE_PAT_WC | 20636 | +#ifdef USE_PAT_WC |
21026 | +#warning Init pat | 20637 | +#warning Init pat |
21027 | + /* for single CPU's we do it here, then for more than one CPU we | 20638 | + /* for single CPU's we do it here, then for more than one CPU we |
21028 | + * use the CPU notifier to reinit PAT on those CPU's. | 20639 | + * use the CPU notifier to reinit PAT on those CPU's. |
21029 | + */ | 20640 | + */ |
21030 | + drm_init_pat(); | 20641 | + drm_init_pat(); |
21031 | +#endif | 20642 | +#endif |
@@ -21102,7 +20713,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
21102 | + if (drm_psb_no_fb == 0) | 20713 | + if (drm_psb_no_fb == 0) |
21103 | + psbfb_resume(dev); | 20714 | + psbfb_resume(dev); |
21104 | +#ifdef WA_NO_FB_GARBAGE_DISPLAY | 20715 | +#ifdef WA_NO_FB_GARBAGE_DISPLAY |
21105 | + else { | 20716 | + else { |
21106 | + if(num_registered_fb) | 20717 | + if(num_registered_fb) |
21107 | + { | 20718 | + { |
21108 | + struct fb_info *fb_info=registered_fb[0]; | 20719 | + struct fb_info *fb_info=registered_fb[0]; |
@@ -21116,7 +20727,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
21116 | + printk("set the fb_set_suspend resume end\n"); | 20727 | + printk("set the fb_set_suspend resume end\n"); |
21117 | + } | 20728 | + } |
21118 | + } | 20729 | + } |
21119 | + } | 20730 | + } |
21120 | +#endif | 20731 | +#endif |
21121 | + | 20732 | + |
21122 | + return 0; | 20733 | + return 0; |
@@ -21256,7 +20867,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.c | |||
21256 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h | 20867 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h |
21257 | =================================================================== | 20868 | =================================================================== |
21258 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 20869 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
21259 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h 2009-01-14 11:58:01.000000000 +0000 | 20870 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h 2009-02-05 13:29:33.000000000 +0000 |
21260 | @@ -0,0 +1,775 @@ | 20871 | @@ -0,0 +1,775 @@ |
21261 | +/************************************************************************** | 20872 | +/************************************************************************** |
21262 | + * Copyright (c) 2007, Intel Corporation. | 20873 | + * Copyright (c) 2007, Intel Corporation. |
@@ -21709,7 +21320,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h | |||
21709 | + struct mutex msvdx_mutex; | 21320 | + struct mutex msvdx_mutex; |
21710 | + struct list_head msvdx_queue; | 21321 | + struct list_head msvdx_queue; |
21711 | + int msvdx_busy; | 21322 | + int msvdx_busy; |
21712 | + | 21323 | + |
21713 | +}; | 21324 | +}; |
21714 | + | 21325 | + |
21715 | +struct psb_mmu_driver; | 21326 | +struct psb_mmu_driver; |
@@ -22036,7 +21647,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_drv.h | |||
22036 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fb.c | 21647 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fb.c |
22037 | =================================================================== | 21648 | =================================================================== |
22038 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 21649 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
22039 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_fb.c 2009-01-14 12:03:18.000000000 +0000 | 21650 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_fb.c 2009-02-05 13:29:33.000000000 +0000 |
22040 | @@ -0,0 +1,1330 @@ | 21651 | @@ -0,0 +1,1330 @@ |
22041 | +/************************************************************************** | 21652 | +/************************************************************************** |
22042 | + * Copyright (c) 2007, Intel Corporation. | 21653 | + * Copyright (c) 2007, Intel Corporation. |
@@ -23371,7 +22982,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fb.c | |||
23371 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fence.c | 22982 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fence.c |
23372 | =================================================================== | 22983 | =================================================================== |
23373 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 22984 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
23374 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_fence.c 2009-01-14 11:58:01.000000000 +0000 | 22985 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_fence.c 2009-02-05 13:29:33.000000000 +0000 |
23375 | @@ -0,0 +1,285 @@ | 22986 | @@ -0,0 +1,285 @@ |
23376 | +/************************************************************************** | 22987 | +/************************************************************************** |
23377 | + * Copyright (c) 2007, Intel Corporation. | 22988 | + * Copyright (c) 2007, Intel Corporation. |
@@ -23661,7 +23272,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_fence.c | |||
23661 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_gtt.c | 23272 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_gtt.c |
23662 | =================================================================== | 23273 | =================================================================== |
23663 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 23274 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
23664 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_gtt.c 2009-01-14 11:58:01.000000000 +0000 | 23275 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_gtt.c 2009-02-05 13:29:33.000000000 +0000 |
23665 | @@ -0,0 +1,233 @@ | 23276 | @@ -0,0 +1,233 @@ |
23666 | +/************************************************************************** | 23277 | +/************************************************************************** |
23667 | + * Copyright (c) 2007, Intel Corporation. | 23278 | + * Copyright (c) 2007, Intel Corporation. |
@@ -23899,7 +23510,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_gtt.c | |||
23899 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_i2c.c | 23510 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_i2c.c |
23900 | =================================================================== | 23511 | =================================================================== |
23901 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 23512 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
23902 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_i2c.c 2009-01-14 11:58:01.000000000 +0000 | 23513 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_i2c.c 2009-02-05 13:29:33.000000000 +0000 |
23903 | @@ -0,0 +1,179 @@ | 23514 | @@ -0,0 +1,179 @@ |
23904 | +/* | 23515 | +/* |
23905 | + * Copyright © 2006-2007 Intel Corporation | 23516 | + * Copyright © 2006-2007 Intel Corporation |
@@ -24083,7 +23694,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_i2c.c | |||
24083 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_irq.c | 23694 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_irq.c |
24084 | =================================================================== | 23695 | =================================================================== |
24085 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 23696 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
24086 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_irq.c 2009-01-14 11:58:01.000000000 +0000 | 23697 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_irq.c 2009-02-05 13:29:33.000000000 +0000 |
24087 | @@ -0,0 +1,382 @@ | 23698 | @@ -0,0 +1,382 @@ |
24088 | +/************************************************************************** | 23699 | +/************************************************************************** |
24089 | + * Copyright (c) 2007, Intel Corporation. | 23700 | + * Copyright (c) 2007, Intel Corporation. |
@@ -24470,7 +24081,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_irq.c | |||
24470 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_mmu.c | 24081 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_mmu.c |
24471 | =================================================================== | 24082 | =================================================================== |
24472 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 24083 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
24473 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_mmu.c 2009-01-14 11:58:01.000000000 +0000 | 24084 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_mmu.c 2009-02-05 13:29:33.000000000 +0000 |
24474 | @@ -0,0 +1,1037 @@ | 24085 | @@ -0,0 +1,1037 @@ |
24475 | +/************************************************************************** | 24086 | +/************************************************************************** |
24476 | + * Copyright (c) 2007, Intel Corporation. | 24087 | + * Copyright (c) 2007, Intel Corporation. |
@@ -25512,7 +25123,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_mmu.c | |||
25512 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c | 25123 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c |
25513 | =================================================================== | 25124 | =================================================================== |
25514 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 25125 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
25515 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c 2009-01-14 11:58:01.000000000 +0000 | 25126 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c 2009-02-05 13:29:33.000000000 +0000 |
25516 | @@ -0,0 +1,676 @@ | 25127 | @@ -0,0 +1,676 @@ |
25517 | +/** | 25128 | +/** |
25518 | + * file psb_msvdx.c | 25129 | + * file psb_msvdx.c |
@@ -25652,7 +25263,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c | |||
25652 | + { | 25263 | + { |
25653 | + mmu_ptd |= 1; | 25264 | + mmu_ptd |= 1; |
25654 | + PSB_DEBUG_GENERAL ("MSVDX: Setting MMU invalidate flag\n"); | 25265 | + PSB_DEBUG_GENERAL ("MSVDX: Setting MMU invalidate flag\n"); |
25655 | + } | 25266 | + } |
25656 | + /* PTD */ | 25267 | + /* PTD */ |
25657 | + MEMIO_WRITE_FIELD (cmd, FW_VA_RENDER_MMUPTD, mmu_ptd); | 25268 | + MEMIO_WRITE_FIELD (cmd, FW_VA_RENDER_MMUPTD, mmu_ptd); |
25658 | + break; | 25269 | + break; |
@@ -26160,8 +25771,8 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c | |||
26160 | + } | 25771 | + } |
26161 | + if (dev_priv->msvdx_start_idle) | 25772 | + if (dev_priv->msvdx_start_idle) |
26162 | + dev_priv->msvdx_start_idle = 0; | 25773 | + dev_priv->msvdx_start_idle = 0; |
26163 | + } | 25774 | + } |
26164 | + else | 25775 | + else |
26165 | + { | 25776 | + { |
26166 | + if (dev_priv->msvdx_needs_reset == 0) | 25777 | + if (dev_priv->msvdx_needs_reset == 0) |
26167 | + { | 25778 | + { |
@@ -26193,7 +25804,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.c | |||
26193 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.h | 25804 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.h |
26194 | =================================================================== | 25805 | =================================================================== |
26195 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 25806 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
26196 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.h 2009-01-14 11:58:01.000000000 +0000 | 25807 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.h 2009-02-05 13:29:33.000000000 +0000 |
26197 | @@ -0,0 +1,564 @@ | 25808 | @@ -0,0 +1,564 @@ |
26198 | +/************************************************************************** | 25809 | +/************************************************************************** |
26199 | + * | 25810 | + * |
@@ -26762,7 +26373,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdx.h | |||
26762 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c | 26373 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c |
26763 | =================================================================== | 26374 | =================================================================== |
26764 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 26375 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
26765 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c 2009-01-14 11:58:01.000000000 +0000 | 26376 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c 2009-02-05 13:29:33.000000000 +0000 |
26766 | @@ -0,0 +1,625 @@ | 26377 | @@ -0,0 +1,625 @@ |
26767 | +/** | 26378 | +/** |
26768 | + * file psb_msvdxinit.c | 26379 | + * file psb_msvdxinit.c |
@@ -27066,7 +26677,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c | |||
27066 | + PSB_DEBUG_GENERAL("MSVDX: Detected Poulsbo D1 or later revision.\n"); | 26677 | + PSB_DEBUG_GENERAL("MSVDX: Detected Poulsbo D1 or later revision.\n"); |
27067 | + PSB_WMSVDX32 (MSVDX_DEVICE_NODE_FLAGS_DEFAULT_D1, MSVDX_COMMS_OFFSET_FLAGS); | 26678 | + PSB_WMSVDX32 (MSVDX_DEVICE_NODE_FLAGS_DEFAULT_D1, MSVDX_COMMS_OFFSET_FLAGS); |
27068 | + } | 26679 | + } |
27069 | + else | 26680 | + else |
27070 | + { | 26681 | + { |
27071 | + PSB_DEBUG_GENERAL("MSVDX: Detected Poulsbo D0 or earlier revision.\n"); | 26682 | + PSB_DEBUG_GENERAL("MSVDX: Detected Poulsbo D0 or earlier revision.\n"); |
27072 | + PSB_WMSVDX32 (MSVDX_DEVICE_NODE_FLAGS_DEFAULT_D0, MSVDX_COMMS_OFFSET_FLAGS); | 26683 | + PSB_WMSVDX32 (MSVDX_DEVICE_NODE_FLAGS_DEFAULT_D0, MSVDX_COMMS_OFFSET_FLAGS); |
@@ -27212,7 +26823,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c | |||
27212 | + /* Clear any pending interrupt flags */ | 26823 | + /* Clear any pending interrupt flags */ |
27213 | + PSB_WMSVDX32 (0xFFFFFFFF, MSVDX_INTERRUPT_CLEAR); | 26824 | + PSB_WMSVDX32 (0xFFFFFFFF, MSVDX_INTERRUPT_CLEAR); |
27214 | + } | 26825 | + } |
27215 | + | 26826 | + |
27216 | + mutex_destroy (&dev_priv->msvdx_mutex); | 26827 | + mutex_destroy (&dev_priv->msvdx_mutex); |
27217 | + | 26828 | + |
27218 | + return ret; | 26829 | + return ret; |
@@ -27381,7 +26992,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c | |||
27381 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); | 26992 | + struct pci_dev * pci_root = pci_get_bus_and_slot(0, 0); |
27382 | + | 26993 | + |
27383 | + hw_info->rev_id = dev_priv->psb_rev_id; | 26994 | + hw_info->rev_id = dev_priv->psb_rev_id; |
27384 | + | 26995 | + |
27385 | + /*read the fuse info to determine the caps*/ | 26996 | + /*read the fuse info to determine the caps*/ |
27386 | + pci_write_config_dword(pci_root, 0xD0, PCI_PORT5_REG80_FFUSE); | 26997 | + pci_write_config_dword(pci_root, 0xD0, PCI_PORT5_REG80_FFUSE); |
27387 | + pci_read_config_dword(pci_root, 0xD4, &hw_info->caps); | 26998 | + pci_read_config_dword(pci_root, 0xD4, &hw_info->caps); |
@@ -27392,7 +27003,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_msvdxinit.c | |||
27392 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h | 27003 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h |
27393 | =================================================================== | 27004 | =================================================================== |
27394 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 27005 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
27395 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h 2009-01-14 11:58:01.000000000 +0000 | 27006 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h 2009-02-05 13:29:33.000000000 +0000 |
27396 | @@ -0,0 +1,562 @@ | 27007 | @@ -0,0 +1,562 @@ |
27397 | +/************************************************************************** | 27008 | +/************************************************************************** |
27398 | + * | 27009 | + * |
@@ -27410,7 +27021,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h | |||
27410 | + * more details. | 27021 | + * more details. |
27411 | + * | 27022 | + * |
27412 | + * You should have received a copy of the GNU General Public License along with | 27023 | + * You should have received a copy of the GNU General Public License along with |
27413 | + * this program; if not, write to the Free Software Foundation, Inc., | 27024 | + * this program; if not, write to the Free Software Foundation, Inc., |
27414 | + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 27025 | + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
27415 | + * | 27026 | + * |
27416 | + * Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to | 27027 | + * Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to |
@@ -27959,7 +27570,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reg.h | |||
27959 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_regman.c | 27570 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_regman.c |
27960 | =================================================================== | 27571 | =================================================================== |
27961 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 27572 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
27962 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_regman.c 2009-01-14 11:58:01.000000000 +0000 | 27573 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_regman.c 2009-02-05 13:29:33.000000000 +0000 |
27963 | @@ -0,0 +1,175 @@ | 27574 | @@ -0,0 +1,175 @@ |
27964 | +/************************************************************************** | 27575 | +/************************************************************************** |
27965 | + * Copyright (c) 2007, Intel Corporation. | 27576 | + * Copyright (c) 2007, Intel Corporation. |
@@ -28139,7 +27750,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_regman.c | |||
28139 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reset.c | 27750 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reset.c |
28140 | =================================================================== | 27751 | =================================================================== |
28141 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 27752 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
28142 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_reset.c 2009-01-14 11:58:01.000000000 +0000 | 27753 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_reset.c 2009-02-05 13:29:33.000000000 +0000 |
28143 | @@ -0,0 +1,374 @@ | 27754 | @@ -0,0 +1,374 @@ |
28144 | +/************************************************************************** | 27755 | +/************************************************************************** |
28145 | + * Copyright (c) 2007, Intel Corporation. | 27756 | + * Copyright (c) 2007, Intel Corporation. |
@@ -28518,7 +28129,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_reset.c | |||
28518 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.c | 28129 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.c |
28519 | =================================================================== | 28130 | =================================================================== |
28520 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 28131 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
28521 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_scene.c 2009-01-14 11:58:01.000000000 +0000 | 28132 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_scene.c 2009-02-05 13:29:33.000000000 +0000 |
28522 | @@ -0,0 +1,531 @@ | 28133 | @@ -0,0 +1,531 @@ |
28523 | +/************************************************************************** | 28134 | +/************************************************************************** |
28524 | + * Copyright (c) 2007, Intel Corporation. | 28135 | + * Copyright (c) 2007, Intel Corporation. |
@@ -29054,7 +28665,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.c | |||
29054 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.h | 28665 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.h |
29055 | =================================================================== | 28666 | =================================================================== |
29056 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 28667 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
29057 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_scene.h 2009-01-14 11:58:01.000000000 +0000 | 28668 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_scene.h 2009-02-05 13:29:33.000000000 +0000 |
29058 | @@ -0,0 +1,112 @@ | 28669 | @@ -0,0 +1,112 @@ |
29059 | +/************************************************************************** | 28670 | +/************************************************************************** |
29060 | + * Copyright (c) 2007, Intel Corporation. | 28671 | + * Copyright (c) 2007, Intel Corporation. |
@@ -29171,7 +28782,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_scene.h | |||
29171 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.c | 28782 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.c |
29172 | =================================================================== | 28783 | =================================================================== |
29173 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 28784 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
29174 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.c 2009-01-14 11:58:01.000000000 +0000 | 28785 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.c 2009-02-05 13:29:33.000000000 +0000 |
29175 | @@ -0,0 +1,1445 @@ | 28786 | @@ -0,0 +1,1445 @@ |
29176 | +/************************************************************************** | 28787 | +/************************************************************************** |
29177 | + * Copyright (c) 2007, Intel Corporation. | 28788 | + * Copyright (c) 2007, Intel Corporation. |
@@ -30621,7 +30232,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.c | |||
30621 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.h | 30232 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.h |
30622 | =================================================================== | 30233 | =================================================================== |
30623 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 30234 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
30624 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.h 2009-01-14 11:58:01.000000000 +0000 | 30235 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.h 2009-02-05 13:29:33.000000000 +0000 |
30625 | @@ -0,0 +1,170 @@ | 30236 | @@ -0,0 +1,170 @@ |
30626 | +/************************************************************************** | 30237 | +/************************************************************************** |
30627 | + * Copyright (c) 2007, Intel Corporation. | 30238 | + * Copyright (c) 2007, Intel Corporation. |
@@ -30796,7 +30407,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_schedule.h | |||
30796 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_setup.c | 30407 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_setup.c |
30797 | =================================================================== | 30408 | =================================================================== |
30798 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 30409 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
30799 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_setup.c 2009-01-14 11:58:01.000000000 +0000 | 30410 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_setup.c 2009-02-05 13:29:33.000000000 +0000 |
30800 | @@ -0,0 +1,17 @@ | 30411 | @@ -0,0 +1,17 @@ |
30801 | +#include "drmP.h" | 30412 | +#include "drmP.h" |
30802 | +#include "drm.h" | 30413 | +#include "drm.h" |
@@ -30818,7 +30429,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_setup.c | |||
30818 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_sgx.c | 30429 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_sgx.c |
30819 | =================================================================== | 30430 | =================================================================== |
30820 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 30431 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
30821 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_sgx.c 2009-01-14 11:58:01.000000000 +0000 | 30432 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_sgx.c 2009-02-05 13:29:33.000000000 +0000 |
30822 | @@ -0,0 +1,1422 @@ | 30433 | @@ -0,0 +1,1422 @@ |
30823 | +/************************************************************************** | 30434 | +/************************************************************************** |
30824 | + * Copyright (c) 2007, Intel Corporation. | 30435 | + * Copyright (c) 2007, Intel Corporation. |
@@ -32245,7 +31856,7 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_sgx.c | |||
32245 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_xhw.c | 31856 | Index: linux-2.6.27/drivers/gpu/drm/psb/psb_xhw.c |
32246 | =================================================================== | 31857 | =================================================================== |
32247 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 31858 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
32248 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_xhw.c 2009-01-14 11:58:01.000000000 +0000 | 31859 | +++ linux-2.6.27/drivers/gpu/drm/psb/psb_xhw.c 2009-02-05 13:29:33.000000000 +0000 |
32249 | @@ -0,0 +1,614 @@ | 31860 | @@ -0,0 +1,614 @@ |
32250 | +/************************************************************************** | 31861 | +/************************************************************************** |
32251 | + * Copyright (c) 2007, Intel Corporation. | 31862 | + * Copyright (c) 2007, Intel Corporation. |
@@ -32863,8 +32474,8 @@ Index: linux-2.6.27/drivers/gpu/drm/psb/psb_xhw.c | |||
32863 | +} | 32474 | +} |
32864 | Index: linux-2.6.27/drivers/gpu/drm/Kconfig | 32475 | Index: linux-2.6.27/drivers/gpu/drm/Kconfig |
32865 | =================================================================== | 32476 | =================================================================== |
32866 | --- linux-2.6.27.orig/drivers/gpu/drm/Kconfig 2009-01-14 11:54:35.000000000 +0000 | 32477 | --- linux-2.6.27.orig/drivers/gpu/drm/Kconfig 2008-10-09 23:13:53.000000000 +0100 |
32867 | +++ linux-2.6.27/drivers/gpu/drm/Kconfig 2009-01-14 11:58:01.000000000 +0000 | 32478 | +++ linux-2.6.27/drivers/gpu/drm/Kconfig 2009-02-05 13:29:33.000000000 +0000 |
32868 | @@ -105,3 +105,9 @@ | 32479 | @@ -105,3 +105,9 @@ |
32869 | help | 32480 | help |
32870 | Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister | 32481 | Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister |
@@ -32878,7 +32489,7 @@ Index: linux-2.6.27/drivers/gpu/drm/Kconfig | |||
32878 | Index: linux-2.6.27/include/drm/drm_crtc.h | 32489 | Index: linux-2.6.27/include/drm/drm_crtc.h |
32879 | =================================================================== | 32490 | =================================================================== |
32880 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 32491 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
32881 | +++ linux-2.6.27/include/drm/drm_crtc.h 2009-01-14 12:01:13.000000000 +0000 | 32492 | +++ linux-2.6.27/include/drm/drm_crtc.h 2009-02-05 13:29:33.000000000 +0000 |
32882 | @@ -0,0 +1,592 @@ | 32493 | @@ -0,0 +1,592 @@ |
32883 | +/* | 32494 | +/* |
32884 | + * Copyright © 2006 Keith Packard | 32495 | + * Copyright © 2006 Keith Packard |
@@ -33321,7 +32932,7 @@ Index: linux-2.6.27/include/drm/drm_crtc.h | |||
33321 | + | 32932 | + |
33322 | + /* these are modes added by probing with DDC or the BIOS */ | 32933 | + /* these are modes added by probing with DDC or the BIOS */ |
33323 | + struct list_head probed_modes; | 32934 | + struct list_head probed_modes; |
33324 | + | 32935 | + |
33325 | + /* xf86MonPtr MonInfo; */ | 32936 | + /* xf86MonPtr MonInfo; */ |
33326 | + enum subpixel_order subpixel_order; | 32937 | + enum subpixel_order subpixel_order; |
33327 | + int mm_width, mm_height; | 32938 | + int mm_width, mm_height; |
@@ -33440,7 +33051,7 @@ Index: linux-2.6.27/include/drm/drm_crtc.h | |||
33440 | +extern struct drm_property *drm_property_create(struct drm_device *dev, int flags, | 33051 | +extern struct drm_property *drm_property_create(struct drm_device *dev, int flags, |
33441 | + const char *name, int num_values); | 33052 | + const char *name, int num_values); |
33442 | +extern void drm_property_destroy(struct drm_device *dev, struct drm_property *property); | 33053 | +extern void drm_property_destroy(struct drm_device *dev, struct drm_property *property); |
33443 | +extern int drm_property_add_enum(struct drm_property *property, int index, | 33054 | +extern int drm_property_add_enum(struct drm_property *property, int index, |
33444 | + uint32_t value, const char *name); | 33055 | + uint32_t value, const char *name); |
33445 | + | 33056 | + |
33446 | +/* IOCTLs */ | 33057 | +/* IOCTLs */ |
@@ -33475,7 +33086,7 @@ Index: linux-2.6.27/include/drm/drm_crtc.h | |||
33475 | Index: linux-2.6.27/include/drm/drm_edid.h | 33086 | Index: linux-2.6.27/include/drm/drm_edid.h |
33476 | =================================================================== | 33087 | =================================================================== |
33477 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 33088 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
33478 | +++ linux-2.6.27/include/drm/drm_edid.h 2009-01-14 11:58:01.000000000 +0000 | 33089 | +++ linux-2.6.27/include/drm/drm_edid.h 2009-02-05 13:29:33.000000000 +0000 |
33479 | @@ -0,0 +1,179 @@ | 33090 | @@ -0,0 +1,179 @@ |
33480 | +#ifndef __DRM_EDID_H__ | 33091 | +#ifndef __DRM_EDID_H__ |
33481 | +#define __DRM_EDID_H__ | 33092 | +#define __DRM_EDID_H__ |
@@ -33659,7 +33270,7 @@ Index: linux-2.6.27/include/drm/drm_edid.h | |||
33659 | Index: linux-2.6.27/include/drm/drm_objects.h | 33270 | Index: linux-2.6.27/include/drm/drm_objects.h |
33660 | =================================================================== | 33271 | =================================================================== |
33661 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 33272 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
33662 | +++ linux-2.6.27/include/drm/drm_objects.h 2009-01-14 11:58:01.000000000 +0000 | 33273 | +++ linux-2.6.27/include/drm/drm_objects.h 2009-02-05 13:29:33.000000000 +0000 |
33663 | @@ -0,0 +1,717 @@ | 33274 | @@ -0,0 +1,717 @@ |
33664 | +/************************************************************************** | 33275 | +/************************************************************************** |
33665 | + * | 33276 | + * |
@@ -33858,7 +33469,7 @@ Index: linux-2.6.27/include/drm/drm_objects.h | |||
33858 | + * | 33469 | + * |
33859 | + * poll() : Call drm_fence_handler with any new information. | 33470 | + * poll() : Call drm_fence_handler with any new information. |
33860 | + * | 33471 | + * |
33861 | + * needed_flush() : Given the current state of the fence->type flags and previusly | 33472 | + * needed_flush() : Given the current state of the fence->type flags and previusly |
33862 | + * executed or queued flushes, return the type_flags that need flushing. | 33473 | + * executed or queued flushes, return the type_flags that need flushing. |
33863 | + * | 33474 | + * |
33864 | + * wait(): Wait for the "mask" flags to signal on a given fence, performing | 33475 | + * wait(): Wait for the "mask" flags to signal on a given fence, performing |
@@ -34201,7 +33812,7 @@ Index: linux-2.6.27/include/drm/drm_objects.h | |||
34201 | + int (*command_stream_barrier) (struct drm_buffer_object *bo, | 33812 | + int (*command_stream_barrier) (struct drm_buffer_object *bo, |
34202 | + uint32_t new_fence_class, | 33813 | + uint32_t new_fence_class, |
34203 | + uint32_t new_fence_type, | 33814 | + uint32_t new_fence_type, |
34204 | + int no_wait); | 33815 | + int no_wait); |
34205 | +}; | 33816 | +}; |
34206 | + | 33817 | + |
34207 | +/* | 33818 | +/* |
diff --git a/meta-moblin/packages/linux/linux-moblin_2.6.27.bb b/meta-moblin/packages/linux/linux-moblin_2.6.27.bb index 0033f651b3..82f7b435e6 100644 --- a/meta-moblin/packages/linux/linux-moblin_2.6.27.bb +++ b/meta-moblin/packages/linux/linux-moblin_2.6.27.bb | |||
@@ -1,6 +1,6 @@ | |||
1 | require linux-moblin.inc | 1 | require linux-moblin.inc |
2 | 2 | ||
3 | PR = "r7" | 3 | PR = "r8" |
4 | PE = "1" | 4 | PE = "1" |
5 | 5 | ||
6 | DEFAULT_PREFERENCE = "-1" | 6 | DEFAULT_PREFERENCE = "-1" |