Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
drm/radeon/kms: fix gart setup on fusion parts (v2)
drm: Send pending vblank events before disabling vblank.
drm/radeon: fix regression on atom cards with hardcoded EDID record.
drm/radeon/kms: add some new pci ids

+49 -10
+23
drivers/gpu/drm/drm_irq.c
··· 932 932 933 933 void drm_vblank_off(struct drm_device *dev, int crtc) 934 934 { 935 + struct drm_pending_vblank_event *e, *t; 936 + struct timeval now; 935 937 unsigned long irqflags; 938 + unsigned int seq; 936 939 937 940 spin_lock_irqsave(&dev->vbl_lock, irqflags); 938 941 vblank_disable_and_save(dev, crtc); 939 942 DRM_WAKEUP(&dev->vbl_queue[crtc]); 943 + 944 + /* Send any queued vblank events, lest the natives grow disquiet */ 945 + seq = drm_vblank_count_and_time(dev, crtc, &now); 946 + list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) { 947 + if (e->pipe != crtc) 948 + continue; 949 + DRM_DEBUG("Sending premature vblank event on disable: \ 950 + wanted %d, current %d\n", 951 + e->event.sequence, seq); 952 + 953 + e->event.sequence = seq; 954 + e->event.tv_sec = now.tv_sec; 955 + e->event.tv_usec = now.tv_usec; 956 + drm_vblank_put(dev, e->pipe); 957 + list_move_tail(&e->base.link, &e->base.file_priv->event_list); 958 + wake_up_interruptible(&e->base.file_priv->event_wait); 959 + trace_drm_vblank_event_delivered(e->base.pid, e->pipe, 960 + e->event.sequence); 961 + } 962 + 940 963 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); 941 964 } 942 965 EXPORT_SYMBOL(drm_vblank_off);
+9 -8
drivers/gpu/drm/radeon/evergreen.c
··· 862 862 SYSTEM_ACCESS_MODE_NOT_IN_SYS | 863 863 SYSTEM_APERTURE_UNMAPPED_ACCESS_PASS_THRU | 864 864 EFFECTIVE_L1_TLB_SIZE(5) | EFFECTIVE_L1_QUEUE_SIZE(5); 865 - WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp); 866 - WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); 867 - WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); 865 + if (rdev->flags & RADEON_IS_IGP) { 866 + WREG32(FUS_MC_VM_MD_L1_TLB0_CNTL, tmp); 867 + WREG32(FUS_MC_VM_MD_L1_TLB1_CNTL, tmp); 868 + WREG32(FUS_MC_VM_MD_L1_TLB2_CNTL, tmp); 869 + } else { 870 + WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp); 871 + WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); 872 + WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); 873 + } 868 874 WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp); 869 875 WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp); 870 876 WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp); ··· 2928 2922 evergreen_blit_fini(rdev); 2929 2923 rdev->asic->copy = NULL; 2930 2924 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); 2931 - } 2932 - /* XXX: ontario has problems blitting to gart at the moment */ 2933 - if (rdev->family == CHIP_PALM) { 2934 - rdev->asic->copy = NULL; 2935 - radeon_ttm_set_active_vram_size(rdev, rdev->mc.visible_vram_size); 2936 2925 } 2937 2926 2938 2927 /* allocate wb buffer */
+5
drivers/gpu/drm/radeon/evergreend.h
··· 221 221 #define MC_VM_MD_L1_TLB0_CNTL 0x2654 222 222 #define MC_VM_MD_L1_TLB1_CNTL 0x2658 223 223 #define MC_VM_MD_L1_TLB2_CNTL 0x265C 224 + 225 + #define FUS_MC_VM_MD_L1_TLB0_CNTL 0x265C 226 + #define FUS_MC_VM_MD_L1_TLB1_CNTL 0x2660 227 + #define FUS_MC_VM_MD_L1_TLB2_CNTL 0x2664 228 + 224 229 #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C 225 230 #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2038 226 231 #define MC_VM_SYSTEM_APERTURE_LOW_ADDR 0x2034
+3 -2
drivers/gpu/drm/radeon/radeon_atombios.c
··· 1599 1599 memcpy((u8 *)edid, (u8 *)&fake_edid_record->ucFakeEDIDString[0], 1600 1600 fake_edid_record->ucFakeEDIDLength); 1601 1601 1602 - if (drm_edid_is_valid(edid)) 1602 + if (drm_edid_is_valid(edid)) { 1603 1603 rdev->mode_info.bios_hardcoded_edid = edid; 1604 - else 1604 + rdev->mode_info.bios_hardcoded_edid_size = edid_size; 1605 + } else 1605 1606 kfree(edid); 1606 1607 } 1607 1608 }
+3
drivers/gpu/drm/radeon/radeon_kms.c
··· 234 234 return -EINVAL; 235 235 } 236 236 break; 237 + case RADEON_INFO_FUSION_GART_WORKING: 238 + value = 1; 239 + break; 237 240 default: 238 241 DRM_DEBUG_KMS("Invalid request %d\n", info->request); 239 242 return -EINVAL;
+5
include/drm/drm_pciids.h
··· 155 155 {0x1002, 0x6719, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \ 156 156 {0x1002, 0x671c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \ 157 157 {0x1002, 0x671d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \ 158 + {0x1002, 0x671f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \ 158 159 {0x1002, 0x6720, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 159 160 {0x1002, 0x6721, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 160 161 {0x1002, 0x6722, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ ··· 168 167 {0x1002, 0x6729, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ 169 168 {0x1002, 0x6738, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ 170 169 {0x1002, 0x6739, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ 170 + {0x1002, 0x673e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ 171 171 {0x1002, 0x6740, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 172 172 {0x1002, 0x6741, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 173 173 {0x1002, 0x6742, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ ··· 201 199 {0x1002, 0x688D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ 202 200 {0x1002, 0x6898, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ 203 201 {0x1002, 0x6899, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ 202 + {0x1002, 0x689b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ 204 203 {0x1002, 0x689c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HEMLOCK|RADEON_NEW_MEMMAP}, \ 205 204 {0x1002, 0x689d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HEMLOCK|RADEON_NEW_MEMMAP}, \ 206 205 {0x1002, 0x689e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ ··· 212 209 {0x1002, 0x68b0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 213 210 {0x1002, 0x68b8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ 214 211 {0x1002, 0x68b9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ 212 + {0x1002, 0x68ba, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ 215 213 {0x1002, 0x68be, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ 214 + {0x1002, 0x68bf, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ 216 215 {0x1002, 0x68c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 217 216 {0x1002, 0x68c1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 218 217 {0x1002, 0x68c7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
+1
include/drm/radeon_drm.h
··· 910 910 #define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09 /* clock crystal frequency */ 911 911 #define RADEON_INFO_NUM_BACKENDS 0x0a /* DB/backends for r600+ - need for OQ */ 912 912 #define RADEON_INFO_NUM_TILE_PIPES 0x0b /* tile pipes for r600+ */ 913 + #define RADEON_INFO_FUSION_GART_WORKING 0x0c /* fusion writes to GTT were broken before this */ 913 914 914 915 struct drm_radeon_info { 915 916 uint32_t request;