summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
Diffstat (limited to 'shared')
-rw-r--r--shared/drm_pciids.txt338
-rw-r--r--shared/radeon_cp.c165
-rw-r--r--shared/radeon_drm.h2
-rw-r--r--shared/radeon_drv.h31
-rw-r--r--shared/radeon_state.c3
-rw-r--r--shared/sis_drv.h3
-rw-r--r--shared/via_drv.h4
7 files changed, 318 insertions, 228 deletions
diff --git a/shared/drm_pciids.txt b/shared/drm_pciids.txt
index 6eb05693..0b97b223 100644
--- a/shared/drm_pciids.txt
+++ b/shared/drm_pciids.txt
@@ -1,195 +1,195 @@
[radeon]
-0x1002 0x4136 "ATI Radeon RS100 IGP 320M"
-0x1002 0x4137 "ATI Radeon RS200 IGP"
-0x1002 0x4237 "ATI Radeon RS250 IGP"
-0x1002 0x4242 "ATI Radeon BB R200 AIW 8500DV"
-0x1002 0x4242 "ATI Radeon BC R200"
-0x1002 0x4336 "ATI Radeon RS100 Mobility U1"
-0x1002 0x4337 "ATI Radeon RS200 Mobility IGP 340M"
-0x1002 0x4437 "ATI Radeon RS250 Mobility IGP"
-0x1002 0x4964 "ATI Radeon Id R250 9000"
-0x1002 0x4965 "ATI Radeon Ie R250 9000"
-0x1002 0x4966 "ATI Radeon If R250 9000"
-0x1002 0x4967 "ATI Radeon Ig R250 9000"
-0x1002 0x4C57 "ATI Radeon LW Mobility 7500 M7"
-0x1002 0x4C58 "ATI Radeon LX RV200 Mobility FireGL 7800 M7"
-0x1002 0x4C59 "ATI Radeon LY Mobility M6"
-0x1002 0x4C5A "ATI Radeon LZ Mobility M6"
-0x1002 0x4C64 "ATI Radeon Ld R250 Mobility 9000 M9"
-0x1002 0x4C65 "ATI Radeon Le R250 Mobility 9000 M9"
-0x1002 0x4C66 "ATI Radeon Lf R250 Mobility 9000 M9"
-0x1002 0x4C67 "ATI Radeon Lg R250 Mobility 9000 M9"
-0x1002 0x5144 "ATI Radeon QD R100"
-0x1002 0x5145 "ATI Radeon QE R100"
-0x1002 0x5146 "ATI Radeon QF R100"
-0x1002 0x5147 "ATI Radeon QG R100"
-0x1002 0x5148 "ATI Radeon QH R200 8500"
-0x1002 0x5149 "ATI Radeon QI R200"
-0x1002 0x514A "ATI Radeon QJ R200"
-0x1002 0x514B "ATI Radeon QK R200"
-0x1002 0x514C "ATI Radeon QL R200 8500 LE"
-0x1002 0x514D "ATI Radeon QM R200 9100"
-0x1002 0x514E "ATI Radeon QN R200 8500 LE"
-0x1002 0x514F "ATI Radeon QO R200 8500 LE"
-0x1002 0x5157 "ATI Radeon QW RV200 7500"
-0x1002 0x5158 "ATI Radeon QX RV200 7500"
-0x1002 0x5159 "ATI Radeon QY RV100 7000/VE"
-0x1002 0x515A "ATI Radeon QZ RV100 7000/VE"
-0x1002 0x5168 "ATI Radeon Qh R200"
-0x1002 0x5169 "ATI Radeon Qi R200"
-0x1002 0x516A "ATI Radeon Qj R200"
-0x1002 0x516B "ATI Radeon Qk R200"
-0x1002 0x516C "ATI Radeon Ql R200"
-0x1002 0x5834 "ATI Radeon RS300 IGP"
-0x1002 0x5835 "ATI Radeon RS300 Mobility IGP"
-0x1002 0x5836 "ATI Radeon RS300 IGP"
-0x1002 0x5837 "ATI Radeon RS300 IGP"
-0x1002 0x5960 "ATI Radeon RV280 9200"
-0x1002 0x5961 "ATI Radeon RV280 9200 SE"
-0x1002 0x5962 "ATI Radeon RV280 9200"
-0x1002 0x5963 "ATI Radeon RV280 9200"
-0x1002 0x5964 "ATI Radeon RV280 9200 SE"
-0x1002 0x5968 "ATI Radeon RV280 9200"
-0x1002 0x5969 "ATI Radeon RV280 9200"
-0x1002 0x596A "ATI Radeon RV280 9200"
-0x1002 0x596B "ATI Radeon RV280 9200"
-0x1002 0x5c61 "ATI Radeon RV280 Mobility"
-0x1002 0x5c62 "ATI Radeon RV280"
-0x1002 0x5c63 "ATI Radeon RV280 Mobility"
-0x1002 0x5c64 "ATI Radeon RV280"
+0x1002 0x4136 CHIP_IS_IGP "ATI Radeon RS100 IGP 320M"
+0x1002 0x4137 CHIP_IS_IGP "ATI Radeon RS200 IGP"
+0x1002 0x4237 CHIP_IS_IGP "ATI Radeon RS250 IGP"
+0x1002 0x4242 0 "ATI Radeon BB R200 AIW 8500DV"
+0x1002 0x4242 0 "ATI Radeon BC R200"
+0x1002 0x4336 CHIP_IS_IGP|CHIP_IS_MOBILITY "ATI Radeon RS100 Mobility U1"
+0x1002 0x4337 CHIP_IS_IGP|CHIP_IS_MOBILITY "ATI Radeon RS200 Mobility IGP 340M"
+0x1002 0x4437 CHIP_IS_IGP|CHIP_IS_MOBILITY "ATI Radeon RS250 Mobility IGP"
+0x1002 0x4964 0 "ATI Radeon Id R250 9000"
+0x1002 0x4965 0 "ATI Radeon Ie R250 9000"
+0x1002 0x4966 0 "ATI Radeon If R250 9000"
+0x1002 0x4967 0 "ATI Radeon Ig R250 9000"
+0x1002 0x4C57 CHIP_IS_MOBILITY "ATI Radeon LW Mobility 7500 M7"
+0x1002 0x4C58 CHIP_IS_MOBILITY "ATI Radeon LX RV200 Mobility FireGL 7800 M7"
+0x1002 0x4C59 CHIP_IS_MOBILITY "ATI Radeon LY Mobility M6"
+0x1002 0x4C5A CHIP_IS_MOBILITY "ATI Radeon LZ Mobility M6"
+0x1002 0x4C64 CHIP_IS_MOBILITY "ATI Radeon Ld R250 Mobility 9000 M9"
+0x1002 0x4C65 CHIP_IS_MOBILITY "ATI Radeon Le R250 Mobility 9000 M9"
+0x1002 0x4C66 CHIP_IS_MOBILITY "ATI Radeon Lf R250 Mobility 9000 M9"
+0x1002 0x4C67 CHIP_IS_MOBILITY "ATI Radeon Lg R250 Mobility 9000 M9"
+0x1002 0x5144 CHIP_SINGLE_CRTC "ATI Radeon QD R100"
+0x1002 0x5145 CHIP_SINGLE_CRTC "ATI Radeon QE R100"
+0x1002 0x5146 CHIP_SINGLE_CRTC "ATI Radeon QF R100"
+0x1002 0x5147 CHIP_SINGLE_CRTC "ATI Radeon QG R100"
+0x1002 0x5148 0 "ATI Radeon QH R200 8500"
+0x1002 0x5149 0 "ATI Radeon QI R200"
+0x1002 0x514A 0 "ATI Radeon QJ R200"
+0x1002 0x514B 0 "ATI Radeon QK R200"
+0x1002 0x514C 0 "ATI Radeon QL R200 8500 LE"
+0x1002 0x514D 0 "ATI Radeon QM R200 9100"
+0x1002 0x514E 0 "ATI Radeon QN R200 8500 LE"
+0x1002 0x514F 0 "ATI Radeon QO R200 8500 LE"
+0x1002 0x5157 0 "ATI Radeon QW RV200 7500"
+0x1002 0x5158 0 "ATI Radeon QX RV200 7500"
+0x1002 0x5159 0 "ATI Radeon QY RV100 7000/VE"
+0x1002 0x515A 0 "ATI Radeon QZ RV100 7000/VE"
+0x1002 0x5168 0 "ATI Radeon Qh R200"
+0x1002 0x5169 0 "ATI Radeon Qi R200"
+0x1002 0x516A 0 "ATI Radeon Qj R200"
+0x1002 0x516B 0 "ATI Radeon Qk R200"
+0x1002 0x516C 0 "ATI Radeon Ql R200"
+0x1002 0x5834 CHIP_IS_IGP "ATI Radeon RS300 IGP"
+0x1002 0x5835 CHIP_IS_IGP|CHIP_IS_MOBILITY "ATI Radeon RS300 Mobility IGP"
+0x1002 0x5836 CHIP_IS_IGP "ATI Radeon RS300 IGP"
+0x1002 0x5837 CHIP_IS_IGP "ATI Radeon RS300 IGP"
+0x1002 0x5960 0 "ATI Radeon RV280 9200"
+0x1002 0x5961 0 "ATI Radeon RV280 9200 SE"
+0x1002 0x5962 0 "ATI Radeon RV280 9200"
+0x1002 0x5963 0 "ATI Radeon RV280 9200"
+0x1002 0x5964 0 "ATI Radeon RV280 9200 SE"
+0x1002 0x5968 0 "ATI Radeon RV280 9200"
+0x1002 0x5969 0 "ATI Radeon RV280 9200"
+0x1002 0x596A 0 "ATI Radeon RV280 9200"
+0x1002 0x596B 0 "ATI Radeon RV280 9200"
+0x1002 0x5c61 CHIP_IS_MOBILITY "ATI Radeon RV280 Mobility"
+0x1002 0x5c62 0 "ATI Radeon RV280"
+0x1002 0x5c63 CHIP_IS_MOBILITY "ATI Radeon RV280 Mobility"
+0x1002 0x5c64 0 "ATI Radeon RV280"
[r128]
-0x1002 0x4c45 "ATI Rage 128 Mobility LE (PCI)"
-0x1002 0x4c46 "ATI Rage 128 Mobility LF (AGP)"
-0x1002 0x4d46 "ATI Rage 128 Mobility MF (AGP)"
-0x1002 0x4d4c "ATI Rage 128 Mobility ML (AGP)"
-0x1002 0x5041 "ATI Rage 128 Pro PA (PCI)"
-0x1002 0x5042 "ATI Rage 128 Pro PB (AGP)"
-0x1002 0x5043 "ATI Rage 128 Pro PC (AGP)"
-0x1002 0x5044 "ATI Rage 128 Pro PD (PCI)"
-0x1002 0x5045 "ATI Rage 128 Pro PE (AGP)"
-0x1002 0x5046 "ATI Rage 128 Pro PF (AGP)"
-0x1002 0x5047 "ATI Rage 128 Pro PG (PCI)"
-0x1002 0x5048 "ATI Rage 128 Pro PH (AGP)"
-0x1002 0x5049 "ATI Rage 128 Pro PI (AGP)"
-0x1002 0x504A "ATI Rage 128 Pro PJ (PCI)"
-0x1002 0x504B "ATI Rage 128 Pro PK (AGP)"
-0x1002 0x504C "ATI Rage 128 Pro PL (AGP)"
-0x1002 0x504D "ATI Rage 128 Pro PM (PCI)"
-0x1002 0x504E "ATI Rage 128 Pro PN (AGP)"
-0x1002 0x504F "ATI Rage 128 Pro PO (AGP)"
-0x1002 0x5050 "ATI Rage 128 Pro PP (PCI)"
-0x1002 0x5051 "ATI Rage 128 Pro PQ (AGP)"
-0x1002 0x5052 "ATI Rage 128 Pro PR (PCI)"
-0x1002 0x5053 "ATI Rage 128 Pro PS (PCI)"
-0x1002 0x5054 "ATI Rage 128 Pro PT (AGP)"
-0x1002 0x5055 "ATI Rage 128 Pro PU (AGP)"
-0x1002 0x5056 "ATI Rage 128 Pro PV (PCI)"
-0x1002 0x5057 "ATI Rage 128 Pro PW (AGP)"
-0x1002 0x5058 "ATI Rage 128 Pro PX (AGP)"
-0x1002 0x5245 "ATI Rage 128 RE (PCI)"
-0x1002 0x5246 "ATI Rage 128 RF (AGP)"
-0x1002 0x5247 "ATI Rage 128 RG (AGP)"
-0x1002 0x524b "ATI Rage 128 RK (PCI)"
-0x1002 0x524c "ATI Rage 128 RL (AGP)"
-0x1002 0x534d "ATI Rage 128 SM (AGP)"
-0x1002 0x5446 "ATI Rage 128 Pro Ultra TF (AGP)"
-0x1002 0x544C "ATI Rage 128 Pro Ultra TL (AGP)"
-0x1002 0x5452 "ATI Rage 128 Pro Ultra TR (AGP)"
+0x1002 0x4c45 0 "ATI Rage 128 Mobility LE (PCI)"
+0x1002 0x4c46 0 "ATI Rage 128 Mobility LF (AGP)"
+0x1002 0x4d46 0 "ATI Rage 128 Mobility MF (AGP)"
+0x1002 0x4d4c 0 "ATI Rage 128 Mobility ML (AGP)"
+0x1002 0x5041 0 "ATI Rage 128 Pro PA (PCI)"
+0x1002 0x5042 0 "ATI Rage 128 Pro PB (AGP)"
+0x1002 0x5043 0 "ATI Rage 128 Pro PC (AGP)"
+0x1002 0x5044 0 "ATI Rage 128 Pro PD (PCI)"
+0x1002 0x5045 0 "ATI Rage 128 Pro PE (AGP)"
+0x1002 0x5046 0 "ATI Rage 128 Pro PF (AGP)"
+0x1002 0x5047 0 "ATI Rage 128 Pro PG (PCI)"
+0x1002 0x5048 0 "ATI Rage 128 Pro PH (AGP)"
+0x1002 0x5049 0 "ATI Rage 128 Pro PI (AGP)"
+0x1002 0x504A 0 "ATI Rage 128 Pro PJ (PCI)"
+0x1002 0x504B 0 "ATI Rage 128 Pro PK (AGP)"
+0x1002 0x504C 0 "ATI Rage 128 Pro PL (AGP)"
+0x1002 0x504D 0 "ATI Rage 128 Pro PM (PCI)"
+0x1002 0x504E 0 "ATI Rage 128 Pro PN (AGP)"
+0x1002 0x504F 0 "ATI Rage 128 Pro PO (AGP)"
+0x1002 0x5050 0 "ATI Rage 128 Pro PP (PCI)"
+0x1002 0x5051 0 "ATI Rage 128 Pro PQ (AGP)"
+0x1002 0x5052 0 "ATI Rage 128 Pro PR (PCI)"
+0x1002 0x5053 0 "ATI Rage 128 Pro PS (PCI)"
+0x1002 0x5054 0 "ATI Rage 128 Pro PT (AGP)"
+0x1002 0x5055 0 "ATI Rage 128 Pro PU (AGP)"
+0x1002 0x5056 0 "ATI Rage 128 Pro PV (PCI)"
+0x1002 0x5057 0 "ATI Rage 128 Pro PW (AGP)"
+0x1002 0x5058 0 "ATI Rage 128 Pro PX (AGP)"
+0x1002 0x5245 0 "ATI Rage 128 RE (PCI)"
+0x1002 0x5246 0 "ATI Rage 128 RF (AGP)"
+0x1002 0x5247 0 "ATI Rage 128 RG (AGP)"
+0x1002 0x524b 0 "ATI Rage 128 RK (PCI)"
+0x1002 0x524c 0 "ATI Rage 128 RL (AGP)"
+0x1002 0x534d 0 "ATI Rage 128 SM (AGP)"
+0x1002 0x5446 0 "ATI Rage 128 Pro Ultra TF (AGP)"
+0x1002 0x544C 0 "ATI Rage 128 Pro Ultra TL (AGP)"
+0x1002 0x5452 0 "ATI Rage 128 Pro Ultra TR (AGP)"
[mga]
-0x102b 0x0521 "Matrox G200 (AGP)"
-0x102b 0x0525 "Matrox G400/G450 (AGP)"
-0x102b 0x2527 "Matrox G550 (AGP)"
+0x102b 0x0521 0 "Matrox G200 (AGP)"
+0x102b 0x0525 0 "Matrox G400/G450 (AGP)"
+0x102b 0x2527 0 "Matrox G550 (AGP)"
[mach64]
-0x1002 0x4749 "3D Rage Pro"
-0x1002 0x4750 "3D Rage Pro 215GP"
-0x1002 0x4751 "3D Rage Pro 215GQ"
-0x1002 0x4742 "3D Rage Pro AGP 1X/2X"
-0x1002 0x4744 "3D Rage Pro AGP 1X"
-0x1002 0x4c49 "3D Rage LT Pro"
-0x1002 0x4c50 "3D Rage LT Pro"
-0x1002 0x4c51 "3D Rage LT Pro"
-0x1002 0x4c42 "3D Rage LT Pro AGP-133"
-0x1002 0x4c44 "3D Rage LT Pro AGP-66"
-0x1002 0x474c "Rage XC"
-0x1002 0x474f "Rage XL"
-0x1002 0x4752 "Rage XL"
-0x1002 0x4753 "Rage XC"
-0x1002 0x474d "Rage XL AGP 2X"
-0x1002 0x474e "Rage XC AGP"
-0x1002 0x4c52 "Rage Mobility P/M"
-0x1002 0x4c53 "Rage Mobility L"
-0x1002 0x4c4d "Rage Mobility P/M AGP 2X"
-0x1002 0x4c4e "Rage Mobility L AGP 2X"
+0x1002 0x4749 0 "3D Rage Pro"
+0x1002 0x4750 0 "3D Rage Pro 215GP"
+0x1002 0x4751 0 "3D Rage Pro 215GQ"
+0x1002 0x4742 0 "3D Rage Pro AGP 1X/2X"
+0x1002 0x4744 0 "3D Rage Pro AGP 1X"
+0x1002 0x4c49 0 "3D Rage LT Pro"
+0x1002 0x4c50 0 "3D Rage LT Pro"
+0x1002 0x4c51 0 "3D Rage LT Pro"
+0x1002 0x4c42 0 "3D Rage LT Pro AGP-133"
+0x1002 0x4c44 0 "3D Rage LT Pro AGP-66"
+0x1002 0x474c 0 "Rage XC"
+0x1002 0x474f 0 "Rage XL"
+0x1002 0x4752 0 "Rage XL"
+0x1002 0x4753 0 "Rage XC"
+0x1002 0x474d 0 "Rage XL AGP 2X"
+0x1002 0x474e 0 "Rage XC AGP"
+0x1002 0x4c52 0 "Rage Mobility P/M"
+0x1002 0x4c53 0 "Rage Mobility L"
+0x1002 0x4c4d 0 "Rage Mobility P/M AGP 2X"
+0x1002 0x4c4e 0 "Rage Mobility L AGP 2X"
[sisdrv]
-0x1039 0x0300 "SiS 300/305"
-0x1039 0x5300 "SiS 540"
-0x1039 0x6300 "SiS 630"
-0x1039 0x7300 "SiS 730"
+0x1039 0x0300 0 "SiS 300/305"
+0x1039 0x5300 0 "SiS 540"
+0x1039 0x6300 0 "SiS 630"
+0x1039 0x7300 0 "SiS 730"
[tdfx]
-0x121a 0x0003 "3dfx Voodoo Banshee"
-0x121a 0x0004 "3dfx Voodoo3 2000"
-0x121a 0x0005 "3dfx Voodoo3 3000"
-0x121a 0x0007 "3dfx Voodoo4 4500"
-0x121a 0x0009 "3dfx Voodoo5 5500"
-0x121a 0x000b "3dfx Voodoo4 4200"
+0x121a 0x0003 0 "3dfx Voodoo Banshee"
+0x121a 0x0004 0 "3dfx Voodoo3 2000"
+0x121a 0x0005 0 "3dfx Voodoo3 3000"
+0x121a 0x0007 0 "3dfx Voodoo4 4500"
+0x121a 0x0009 0 "3dfx Voodoo5 5500"
+0x121a 0x000b 0 "3dfx Voodoo4 4200"
[viadrv]
-0x1106 0x3022 "VIA CLE266 3022"
-0x1106 0x3118 "VIA CN400"
-0x1106 0x3122 "VIA CLE266"
-0x1106 0x7205 "VIA KM400"
-0x1106 0x7204 "VIA K8M800"
+0x1106 0x3022 0 "VIA CLE266 3022"
+0x1106 0x3118 0 "VIA CN400"
+0x1106 0x3122 0 "VIA CLE266"
+0x1106 0x7205 0 "VIA KM400"
+0x1106 0x7204 0 "VIA K8M800"
[i810]
-0x8086 0x7121 "Intel i810 GMCH"
-0x8086 0x7123 "Intel i810-DC100 GMCH"
-0x8086 0x7125 "Intel i810E GMCH"
-0x8086 0x1132 "Intel i815 GMCH"
+0x8086 0x7121 0 "Intel i810 GMCH"
+0x8086 0x7123 0 "Intel i810-DC100 GMCH"
+0x8086 0x7125 0 "Intel i810E GMCH"
+0x8086 0x1132 0 "Intel i815 GMCH"
[i830]
-0x8086 0x3577 "Intel i830M GMCH"
-0x8086 0x2562 "Intel i845G GMCH"
-0x8086 0x3582 "Intel i852GM/i855GM GMCH"
-0x8086 0x2572 "Intel i865G GMCH"
+0x8086 0x3577 0 "Intel i830M GMCH"
+0x8086 0x2562 0 "Intel i845G GMCH"
+0x8086 0x3582 0 "Intel i852GM/i855GM GMCH"
+0x8086 0x2572 0 "Intel i865G GMCH"
[gamma]
-0x3d3d 0x0008 "3DLabs GLINT Gamma G1"
+0x3d3d 0x0008 0 "3DLabs GLINT Gamma G1"
[savage]
-0x5333 0x8a22 "Savage4"
-0x5333 0x8a23 "Savage4"
-0x5333 0x8c10 "Savage/MX-MV"
-0x5333 0x8c11 "Savage/MX"
-0x5333 0x8c12 "Savage/IX-MV"
-0x5333 0x8c13 "Savage/IX"
-0x5333 0x8c20 "Savage 3D"
-0x5333 0x8c21 "Savage 3D/MV"
-0x5333 0x8c22 "SuperSavage MX/128"
-0x5333 0x8c24 "SuperSavage MX/64"
-0x5333 0x8c26 "SuperSavage MX/64C"
-0x5333 0x8c2a "SuperSavage IX/128 SDR"
-0x5333 0x8c2b "SuperSavage IX/128 DDR"
-0x5333 0x8c2c "SuperSavage IX/64 SDR"
-0x5333 0x8c2d "SuperSavage IX/64 DDR"
-0x5333 0x8c2e "SuperSavage IX/C SDR"
-0x5333 0x8c2f "SuperSavage IX/C DDR"
-0x5333 0x8a25 "ProSavage PM133"
-0x5333 0x8a26 "ProSavage KM133"
-0x5333 0x8d01 "ProSavage PN133"
-0x5333 0x8d02 "ProSavage KN133"
-0x5333 0x8d04 "ProSavage DDR"
+0x5333 0x8a22 0 "Savage4"
+0x5333 0x8a23 0 "Savage4"
+0x5333 0x8c10 0 "Savage/MX-MV"
+0x5333 0x8c11 0 "Savage/MX"
+0x5333 0x8c12 0 "Savage/IX-MV"
+0x5333 0x8c13 0 "Savage/IX"
+0x5333 0x8c20 0 "Savage 3D"
+0x5333 0x8c21 0 "Savage 3D/MV"
+0x5333 0x8c22 0 "SuperSavage MX/128"
+0x5333 0x8c24 0 "SuperSavage MX/64"
+0x5333 0x8c26 0 "SuperSavage MX/64C"
+0x5333 0x8c2a 0 "SuperSavage IX/128 SDR"
+0x5333 0x8c2b 0 "SuperSavage IX/128 DDR"
+0x5333 0x8c2c 0 "SuperSavage IX/64 SDR"
+0x5333 0x8c2d 0 "SuperSavage IX/64 DDR"
+0x5333 0x8c2e 0 "SuperSavage IX/C SDR"
+0x5333 0x8c2f 0 "SuperSavage IX/C DDR"
+0x5333 0x8a25 0 "ProSavage PM133"
+0x5333 0x8a26 0 "ProSavage KM133"
+0x5333 0x8d01 0 "ProSavage PN133"
+0x5333 0x8d02 0 "ProSavage KN133"
+0x5333 0x8d04 0 "ProSavage DDR"
[ffb]
[i915]
-0x8086 0x3577 "Intel i830M GMCH"
-0x8086 0x2562 "Intel i845G GMCH"
-0x8086 0x3582 "Intel i852GM/i855GM GMCH"
-0x8086 0x2572 "Intel i865G GMCH"
-0x8086 0x2582 "Intel i915G"
+0x8086 0x3577 0 "Intel i830M GMCH"
+0x8086 0x2562 0 "Intel i845G GMCH"
+0x8086 0x3582 0 "Intel i852GM/i855GM GMCH"
+0x8086 0x2572 0 "Intel i865G GMCH"
+0x8086 0x2582 0 "Intel i915G"
diff --git a/shared/radeon_cp.c b/shared/radeon_cp.c
index fc859825..f12e526e 100644
--- a/shared/radeon_cp.c
+++ b/shared/radeon_cp.c
@@ -859,7 +859,7 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
| ( dev_priv->fb_location >> 16 ) );
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
+ if (dev_priv->flags & CHIP_IS_AGP) {
RADEON_WRITE( RADEON_MC_AGP_LOCATION,
(((dev_priv->gart_vm_start - 1 +
dev_priv->gart_size) & 0xffff0000) |
@@ -868,7 +868,7 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
ring_start = (dev_priv->cp_ring->offset
- dev->agp->base
+ dev_priv->gart_vm_start);
- } else
+ } else
#endif
ring_start = (dev_priv->cp_ring->offset
- dev->sg->handle
@@ -886,7 +886,9 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
dev_priv->ring.tail = cur_read_ptr;
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
+ if (dev_priv->flags & CHIP_IS_AGP) {
+ /* set RADEON_AGP_BASE here instead of relying on X from user space */
+ RADEON_WRITE( RADEON_AGP_BASE, (unsigned int)dev->agp->base );
RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR,
dev_priv->ring_rptr->offset
- dev->agp->base
@@ -1003,20 +1005,11 @@ static void radeon_set_pcigart( drm_radeon_private_t *dev_priv, int on )
static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
{
- drm_radeon_private_t *dev_priv;
+ drm_radeon_private_t *dev_priv = dev->dev_private;
DRM_DEBUG( "\n" );
- dev_priv = DRM(alloc)( sizeof(drm_radeon_private_t), DRM_MEM_DRIVER );
- if ( dev_priv == NULL )
- return DRM_ERR(ENOMEM);
-
- memset( dev_priv, 0, sizeof(drm_radeon_private_t) );
-
- dev_priv->is_pci = init->is_pci;
-
- if ( dev_priv->is_pci && !dev->sg ) {
+ if ( (!(dev_priv->flags & CHIP_IS_AGP)) && !dev->sg ) {
DRM_ERROR( "PCI GART memory not allocated!\n" );
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1025,7 +1018,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
if ( dev_priv->usec_timeout < 1 ||
dev_priv->usec_timeout > RADEON_MAX_USEC_TIMEOUT ) {
DRM_DEBUG( "TIMEOUT problem!\n" );
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1041,7 +1033,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
if ( ( init->cp_mode != RADEON_CSQ_PRIBM_INDDIS ) &&
( init->cp_mode != RADEON_CSQ_PRIBM_INDBM ) ) {
DRM_DEBUG( "BAD cp_mode (%x)!\n", init->cp_mode );
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1113,7 +1104,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
if(!dev_priv->sarea) {
DRM_ERROR("could not find sarea!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1121,28 +1111,24 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv->mmio = drm_core_findmap(dev, init->mmio_offset);
if(!dev_priv->mmio) {
DRM_ERROR("could not find mmio region!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
dev_priv->cp_ring = drm_core_findmap(dev, init->ring_offset);
if(!dev_priv->cp_ring) {
DRM_ERROR("could not find cp ring region!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
dev_priv->ring_rptr = drm_core_findmap(dev, init->ring_rptr_offset);
if(!dev_priv->ring_rptr) {
DRM_ERROR("could not find ring read pointer!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
dev->agp_buffer_map = drm_core_findmap(dev, init->buffers_offset);
if(!dev->agp_buffer_map) {
DRM_ERROR("could not find dma buffer region!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1151,7 +1137,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv->gart_textures = drm_core_findmap(dev, init->gart_textures_offset);
if ( !dev_priv->gart_textures ) {
DRM_ERROR("could not find GART texture region!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1162,7 +1147,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
init->sarea_priv_offset);
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
+ if ( dev_priv->flags & CHIP_IS_AGP ) {
drm_core_ioremap( dev_priv->cp_ring, dev );
drm_core_ioremap( dev_priv->ring_rptr, dev );
drm_core_ioremap( dev->agp_buffer_map, dev );
@@ -1170,7 +1155,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
!dev_priv->ring_rptr->handle ||
!dev->agp_buffer_map->handle) {
DRM_ERROR("could not find ioremap agp regions!\n");
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(EINVAL);
}
@@ -1212,7 +1196,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
+ RADEON_READ( RADEON_CONFIG_APER_SIZE );
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci )
+ if (dev_priv->flags & CHIP_IS_AGP)
dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset
- dev->agp->base
+ dev_priv->gart_vm_start);
@@ -1241,7 +1225,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv->ring.high_mark = RADEON_RING_HIGH_MARK;
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
+ if (dev_priv->flags & CHIP_IS_AGP) {
/* Turn off PCI GART */
radeon_set_pcigart( dev_priv, 0 );
} else
@@ -1250,7 +1234,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
if (!DRM(ati_pcigart_init)( dev, &dev_priv->phys_pci_gart,
&dev_priv->bus_pci_gart)) {
DRM_ERROR( "failed to init PCI GART!\n" );
- dev->dev_private = (void *)dev_priv;
radeon_do_cleanup_cp(dev);
return DRM_ERR(ENOMEM);
}
@@ -1264,8 +1247,6 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv->last_buf = 0;
- dev->dev_private = (void *)dev_priv;
-
radeon_do_engine_reset( dev );
return 0;
@@ -1273,6 +1254,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
int radeon_do_cleanup_cp( drm_device_t *dev )
{
+ drm_radeon_private_t *dev_priv = dev->dev_private;
DRM_DEBUG( "\n" );
#if __HAVE_IRQ
@@ -1283,29 +1265,27 @@ int radeon_do_cleanup_cp( drm_device_t *dev )
if ( dev->irq_enabled ) DRM(irq_uninstall)(dev);
#endif
- if ( dev->dev_private ) {
- drm_radeon_private_t *dev_priv = dev->dev_private;
-
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
- if ( dev_priv->cp_ring != NULL )
- drm_core_ioremapfree( dev_priv->cp_ring, dev );
- if ( dev_priv->ring_rptr != NULL )
- drm_core_ioremapfree( dev_priv->ring_rptr, dev );
- if ( dev->agp_buffer_map != NULL )
- drm_core_ioremapfree( dev->agp_buffer_map, dev );
- } else
+ if (dev_priv->flags & CHIP_IS_AGP) {
+ if ( dev_priv->cp_ring != NULL )
+ drm_core_ioremapfree( dev_priv->cp_ring, dev );
+ if ( dev_priv->ring_rptr != NULL )
+ drm_core_ioremapfree( dev_priv->ring_rptr, dev );
+ if ( dev->agp_buffer_map != NULL )
+ drm_core_ioremapfree( dev->agp_buffer_map, dev );
+ } else
#endif
- {
- if (!DRM(ati_pcigart_cleanup)( dev,
- dev_priv->phys_pci_gart,
- dev_priv->bus_pci_gart ))
- DRM_ERROR( "failed to cleanup PCI GART!\n" );
- }
-
- DRM(free)( dev->dev_private, sizeof(drm_radeon_private_t),
- DRM_MEM_DRIVER );
- dev->dev_private = NULL;
+ {
+ if (!DRM(ati_pcigart_cleanup)( dev,
+ dev_priv->phys_pci_gart,
+ dev_priv->bus_pci_gart ))
+ DRM_ERROR( "failed to cleanup PCI GART!\n" );
+ }
+
+ {
+ int flags = dev_priv->flags;
+ memset(dev_priv, 0, sizeof(*dev_priv));
+ dev_priv->flags = flags;
}
return 0;
@@ -1330,7 +1310,7 @@ static int radeon_do_resume_cp( drm_device_t *dev )
DRM_DEBUG("Starting radeon_do_resume_cp()\n");
#if __REALLY_HAVE_AGP
- if ( !dev_priv->is_pci ) {
+ if (dev_priv->flags & CHIP_IS_AGP) {
/* Turn off PCI GART */
radeon_set_pcigart( dev_priv, 0 );
} else
@@ -1444,8 +1424,10 @@ void radeon_do_release( drm_device_t *dev )
{
drm_radeon_private_t *dev_priv = dev->dev_private;
int ret;
+ DRM_DEBUG("dev_priv %ptr\n", dev_priv);
if (dev_priv) {
+
if (dev_priv->cp_running) {
/* Stop the cp */
while ((ret = radeon_do_cp_idle( dev_priv )) != 0) {
@@ -1461,7 +1443,8 @@ void radeon_do_release( drm_device_t *dev )
}
/* Disable *all* interrupts */
- RADEON_WRITE( RADEON_GEN_INT_CNTL, 0 );
+ if (dev_priv->mmio) /* remove this after permanent addmaps */
+ RADEON_WRITE( RADEON_GEN_INT_CNTL, 0 );
/* Free memory heap structures */
radeon_mem_takedown( &(dev_priv->gart_heap) );
@@ -1745,3 +1728,81 @@ int radeon_cp_buffers( DRM_IOCTL_ARGS )
return ret;
}
+
+static int radeon_register_regions(struct pci_dev *pdev) {
+ int retcode = -EINVAL;
+
+ /* request the mem regions */
+ if (!request_mem_region (pci_resource_start( pdev, 2 ),
+ pci_resource_len(pdev, 2), DRIVER_NAME)) {
+ printk(KERN_ERR DRIVER_NAME ": cannot reserve MMIO region\n");
+ return retcode;
+ }
+ if (!request_mem_region (pci_resource_start( pdev, 0 ),
+ pci_resource_len(pdev, 0), DRIVER_NAME)) {
+ printk(KERN_ERR DRIVER_NAME ": cannot reserve FB region\n");
+ return retcode;
+ }
+ return 0;
+}
+
+static void radeon_release_regions(struct pci_dev *pdev) {
+ release_mem_region (pci_resource_start( pdev, 2 ), pci_resource_len(pdev, 2));
+ release_mem_region (pci_resource_start( pdev, 0 ), pci_resource_len(pdev, 0));
+}
+
+/* Always create a map record for MMIO and FB memory, done from DRIVER_POSTINIT */
+int radeon_preinit( struct drm_device *dev, unsigned long flags )
+{
+ int retcode = -EINVAL;
+ u32 save, temp;
+ drm_radeon_private_t *dev_priv;
+
+ dev_priv = DRM(alloc)( sizeof(drm_radeon_private_t), DRM_MEM_DRIVER );
+ if ( dev_priv == NULL )
+ return DRM_ERR(ENOMEM);
+ DRM_DEBUG("dev_priv %ptr\n", dev_priv);
+
+ memset( dev_priv, 0, sizeof(drm_radeon_private_t) );
+ dev->dev_private = (void *)dev_priv;
+ dev_priv->flags = flags;
+
+ /* request the mem regions */
+ if (!DRM(fb_loaded))
+ if ((retcode = radeon_register_regions(dev->pdev)) != 0)
+ return retcode;
+
+ /* There are signatures in BIOS and PCI-SSID for a PCI card, but they are not very reliable.
+ Following detection method works for all cards tested so far.
+ Note, checking AGP_ENABLE bit after drmAgpEnable call can also give the correct result.
+ However, calling drmAgpEnable on a PCI card can cause some strange lockup when the server
+ restarts next time.
+ */
+ pci_read_config_dword(dev->pdev, RADEON_AGP_COMMAND_PCI_CONFIG, &save);
+ pci_write_config_dword(dev->pdev, RADEON_AGP_COMMAND_PCI_CONFIG, save | RADEON_AGP_ENABLE);
+ pci_read_config_dword(dev->pdev, RADEON_AGP_COMMAND_PCI_CONFIG, &temp);
+ if (temp & RADEON_AGP_ENABLE)
+ dev_priv->flags |= CHIP_IS_AGP;
+ DRM_DEBUG("%s card detected\n", ((dev_priv->flags & CHIP_IS_AGP) ? "AGP" : "PCI"));
+ pci_write_config_dword(dev->pdev, RADEON_AGP_COMMAND_PCI_CONFIG, save);
+
+ return 0;
+}
+
+int radeon_postinit( struct drm_device *dev, unsigned long flags )
+{
+ return 0;
+}
+
+int radeon_postcleanup( struct drm_device *dev )
+{
+ drm_radeon_private_t *dev_priv = dev->dev_private;
+
+ DRM(free)( dev_priv, sizeof(*dev_priv), DRM_MEM_DRIVER );
+
+ if (!DRM(fb_loaded))
+ radeon_release_regions(dev->pdev);
+
+ dev->dev_private = NULL;
+ return 0;
+}
diff --git a/shared/radeon_drm.h b/shared/radeon_drm.h
index e447308b..207a0c00 100644
--- a/shared/radeon_drm.h
+++ b/shared/radeon_drm.h
@@ -433,7 +433,7 @@ typedef struct drm_radeon_init {
RADEON_INIT_R200_CP = 0x03
} func;
unsigned long sarea_priv_offset;
- int is_pci;
+ int is_pci; /* not used, driver asks hardware */
int cp_mode;
int gart_size;
int ring_size;
diff --git a/shared/radeon_drv.h b/shared/radeon_drv.h
index f0aa0dc2..4b66e5be 100644
--- a/shared/radeon_drv.h
+++ b/shared/radeon_drv.h
@@ -31,6 +31,18 @@
#ifndef __RADEON_DRV_H__
#define __RADEON_DRV_H__
+/*
+ * Chip flags
+ */
+enum radeon_chip_flags {
+ CHIP_FAMILY_MASK = 0x0000ffffUL,
+ CHIP_FLAGS_MASK = 0xffff0000UL,
+ CHIP_IS_MOBILITY = 0x00010000UL,
+ CHIP_IS_IGP = 0x00020000UL,
+ CHIP_SINGLE_CRTC = 0x00040000UL,
+ CHIP_IS_AGP = 0x00080000UL,
+};
+
#define GET_RING_HEAD(dev_priv) DRM_READ32( (dev_priv)->ring_rptr, 0 )
#define SET_RING_HEAD(dev_priv,val) DRM_WRITE32( (dev_priv)->ring_rptr, 0, (val) )
@@ -70,6 +82,9 @@ struct mem_block {
};
typedef struct drm_radeon_private {
+
+ uint32_t flags; /* see radeon_chip_flags */
+
drm_radeon_ring_buffer_t ring;
drm_radeon_sarea_t *sarea_priv;
@@ -92,7 +107,6 @@ typedef struct drm_radeon_private {
int is_r200;
- int is_pci;
unsigned long phys_pci_gart;
dma_addr_t bus_pci_gart;
@@ -211,13 +225,13 @@ extern void radeon_do_release(drm_device_t *dev);
#define RADEON_BOX_WAIT_IDLE 0x8
#define RADEON_BOX_TEXTURE_LOAD 0x10
-
-
/* Register definitions, register access macros and drmAddMap constants
* for Radeon kernel driver.
*/
-
#define RADEON_AGP_COMMAND 0x0f60
+#define RADEON_AGP_COMMAND_PCI_CONFIG 0x0060 /* offset in PCI config*/
+# define RADEON_AGP_ENABLE (1<<8)
+
#define RADEON_AUX_SCISSOR_CNTL 0x26f0
# define RADEON_EXCLUSIVE_SCISSOR_0 (1 << 24)
# define RADEON_EXCLUSIVE_SCISSOR_1 (1 << 25)
@@ -240,6 +254,11 @@ extern void radeon_do_release(drm_device_t *dev);
#define RADEON_CRTC2_OFFSET 0x0324
#define RADEON_CRTC2_OFFSET_CNTL 0x0328
+#define RADEON_MPP_TB_CONFIG 0x01c0
+#define RADEON_MEM_CNTL 0x0140
+#define RADEON_MEM_SDRAM_MODE_REG 0x0158
+#define RADEON_AGP_BASE 0x0170
+
#define RADEON_RB3D_COLOROFFSET 0x1c40
#define RADEON_RB3D_COLORPITCH 0x1c48
@@ -718,7 +737,9 @@ do { \
} while (0)
extern int RADEON_READ_PLL( drm_device_t *dev, int addr );
-
+extern int radeon_preinit( struct drm_device *dev, unsigned long flags );
+extern int radeon_postinit( struct drm_device *dev, unsigned long flags );
+extern int radeon_postcleanup( struct drm_device *dev );
#define CP_PACKET0( reg, n ) \
(RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))
diff --git a/shared/radeon_state.c b/shared/radeon_state.c
index 57274174..4a7bfd2d 100644
--- a/shared/radeon_state.c
+++ b/shared/radeon_state.c
@@ -2583,6 +2583,9 @@ static void radeon_driver_open_helper(drm_device_t *dev, drm_file_t *filp_priv)
void radeon_driver_register_fns(struct drm_device *dev)
{
dev->dev_priv_size = sizeof(drm_radeon_buf_priv_t);
+ dev->fn_tbl.preinit = radeon_preinit;
+ dev->fn_tbl.postinit = radeon_postinit;
+ dev->fn_tbl.postcleanup = radeon_postcleanup;
dev->fn_tbl.prerelease = radeon_driver_prerelease;
dev->fn_tbl.pretakedown = radeon_driver_pretakedown;
dev->fn_tbl.open_helper = radeon_driver_open_helper;
diff --git a/shared/sis_drv.h b/shared/sis_drv.h
index a8700181..1ca618cf 100644
--- a/shared/sis_drv.h
+++ b/shared/sis_drv.h
@@ -42,4 +42,7 @@ extern int sis_ioctl_agp_alloc( DRM_IOCTL_ARGS );
extern int sis_ioctl_agp_free( DRM_IOCTL_ARGS );
extern int sis_fb_init( DRM_IOCTL_ARGS );
+extern int sis_init_context(drm_device_t *dev, int context);
+extern int sis_final_context(drm_device_t *dev, int context);
+
#endif
diff --git a/shared/via_drv.h b/shared/via_drv.h
index ee3852c3..9677b7f3 100644
--- a/shared/via_drv.h
+++ b/shared/via_drv.h
@@ -45,7 +45,9 @@ typedef struct drm_via_private {
#define VIA_READ8(reg) DRM_READ8(VIA_BASE, reg)
#define VIA_WRITE8(reg,val) DRM_WRITE8(VIA_BASE, reg, val)
-
+extern int via_init_context(drm_device_t *dev, int context);
+extern int via_final_context(drm_device_t *dev, int context);
+
extern int via_do_init_map(drm_device_t *dev, drm_via_init_t *init);
extern int via_do_cleanup_map(drm_device_t *dev);
extern int via_map_init(struct inode *inode, struct file *filp,