diff options
| -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" |
