diff -Ncr linux-2.4.20-aralion-0.0/drivers/pci/pci.ids linux-2.4.20-aralion-0.1/drivers/pci/pci.ids
*** linux-2.4.20-aralion-0.0/drivers/pci/pci.ids	2003-11-26 16:26:01.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/pci/pci.ids	2003-11-26 16:30:31.000000000 +0900
***************
*** 7,13 ****
  #	so if you have anything to contribute, please visit the home page or
  #	send a diff -u against the most recent pci.ids to pci-ids@ucw.cz.
  #
! #	$Id: pci.ids,v 1.46 2002/08/14 17:38:51 mares Exp $
  #
  
  # Vendors, devices and subsystems. Please keep sorted.
--- 7,14 ----
  #	so if you have anything to contribute, please visit the home page or
  #	send a diff -u against the most recent pci.ids to pci-ids@ucw.cz.
  #
! #	Daily snapshot on Thu 2003-05-29 10:00:04
! #	Modded on Fri 2003-05-30 03:13:05
  #
  
  # Vendors, devices and subsystems. Please keep sorted.
***************
*** 21,26 ****
--- 22,29 ----
  001a  Ascend Communications, Inc.
  0033  Paradyne corp.
  003d  Lockheed Martin-Marietta Corp
+ # Real TJN ID is e159, but they got it wrong several times --mj
+ 0059  Tiger Jet Network Inc. (Wrong ID)
  0070  Hauppauge computer works Inc.
  0100  Ncipher Corp Ltd
  0675  Dynalink
***************
*** 98,104 ****
  	f130  NetFlex-3/P ThunderLAN 1.0
  	f150  NetFlex-3/P ThunderLAN 2.3
  0e55  HaSoTec GmbH
! 1000  LSI Logic / Symbios Logic (formerly NCR)
  	0001  53c810
  		1000 1000  8100S
  	0002  53c820
--- 101,108 ----
  	f130  NetFlex-3/P ThunderLAN 1.0
  	f150  NetFlex-3/P ThunderLAN 2.3
  0e55  HaSoTec GmbH
! # Formerly NCR
! 1000  LSI Logic / Symbios Logic
  	0001  53c810
  		1000 1000  8100S
  	0002  53c820
***************
*** 123,129 ****
  	0020  53c1010 Ultra3 SCSI Adapter
  		1de1 1020  DC-390U3W
  	0021  53c1010 66MHz  Ultra3 SCSI Adapter
! 	0030  53c1030
  		1028 1010  LSI U320 SCSI Controller
  	0040  53c1035
  	008f  53c875J
--- 127,133 ----
  	0020  53c1010 Ultra3 SCSI Adapter
  		1de1 1020  DC-390U3W
  	0021  53c1010 66MHz  Ultra3 SCSI Adapter
! 	0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
  		1028 1010  LSI U320 SCSI Controller
  	0040  53c1035
  	008f  53c875J
***************
*** 158,166 ****
  	0017  PROTO-3 PCI Prototyping board
  	9100  INI-9100/9100W SCSI Host
  1002  ATI Technologies Inc
  	4158  68800AX [Mach32]
! 	4242  Radeon 8500 DV
  		1002 02aa  Radeon 8500 AIW DV Edition
  	4354  215CT [Mach64 CT]
  	4358  210888CX [Mach64 CX]
  	4554  210888ET [Mach64 ET]
--- 162,181 ----
  	0017  PROTO-3 PCI Prototyping board
  	9100  INI-9100/9100W SCSI Host
  1002  ATI Technologies Inc
+ 	4136  Radeon IGP 320 M
+ # New support forthcoming in XFree86 4.3.0
+ 	4144  Radeon R300 AD [Radeon 9500 Pro]
+ # New support forthcoming in XFree86 4.3.0
+ 	4145  Radeon R300 AE [Radeon 9500 Pro]
+ # New support forthcoming in XFree86 4.3.0
+ 	4146  Radeon R300 AF [Radeon 9500 Pro]
+ # Update:  Oops, AF was a typo above for 4147, should be AG
+ 	4147  Radeon R300 AG [FireGL Z1/X1]
  	4158  68800AX [Mach32]
! 	4242  Radeon R200 BB [Radeon All in Wonder 8500DV]
  		1002 02aa  Radeon 8500 AIW DV Edition
+ 	4336  Radeon Mobility U1
+ 	4337  Radeon IGP 340M
  	4354  215CT [Mach64 CT]
  	4358  210888CX [Mach64 CX]
  	4554  210888ET [Mach64 ET]
***************
*** 210,215 ****
--- 225,232 ----
  	4752  Rage XL
  		1002 0008  Rage XL
  		1002 4752  Rage XL
+ 		1002 8008  Rage XL
+ 		1028 00d1  PowerEdge 2550
  	4753  Rage XC
  		1002 4753  Rage XC
  	4754  3D Rage I/II 215GT [Mach64 GT]
***************
*** 227,232 ****
--- 244,263 ----
  	475a  3D Rage IIC AGP
  		1002 0087  Rage 3D IIC
  		1002 475a  Rage IIC AGP
+ 	4964  Radeon R250 Id [Radeon 9000]
+ 	4965  Radeon R250 Ie [Radeon 9000]
+ 	4966  Radeon R250 If [Radeon 9000]
+ 		10f1 0002  R250 If [Tachyon G9000 PRO]
+ 		148c 2039  R250 If [Radeon 9000 Pro "Evil Commando"]
+ 		1509 9a00  R250 If [Radeon 9000 "AT009"]
+ # New subdevice - 3D Prophet 9000 PCI by Hercules.  AGP version probably would have same ID, so not specified.
+ 		1681 0040  R250 If [3D prophet 9000]
+ 		174b 7176  R250 If [Sapphire Radeon 9000 Pro]
+ 		174b 7192  R250 If [Radeon 9000 "Atlantis"]
+ 		17af 2005  R250 If [Excalibur Radeon 9000 Pro]
+ 		17af 2006  R250 If [Excalibur Radeon 9000]
+ 	4967  Radeon R250 Ig [Radeon 9000]
+ 	496e  Radeon R250 [Radeon 9000] (Secondary)
  	4c42  3D Rage LT Pro AGP-133
  		0e11 b0e8  Rage 3D LT Pro
  		0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)
***************
*** 245,251 ****
--- 276,284 ----
  		1002 0044  Rage LT Pro
  		1002 4c49  Rage LT Pro
  	4c4d  Rage Mobility P/M AGP 2x
+ 		0e11 b111  Armada M700
  		1002 0084  Xpert 98 AGP 2X (Mobility)
+ 		1014 0154  ThinkPad A20m
  	4c4e  Rage Mobility L AGP 2x
  	4c50  3D Rage LT Pro
  		1002 4c50  Rage LT Pro
***************
*** 253,268 ****
  	4c52  Rage Mobility P/M
  	4c53  Rage Mobility L
  	4c54  264LT [Mach64 LT]
! 	4c57  Radeon Mobility M7 LW
  		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)
! 	4c58  Radeon Mobility M7 LX [Radeon Mobility FireGL 7800]
  	4c59  Radeon Mobility M6 LY
  		1014 0235  ThinkPad A30p (2653-64G)
  		1014 0239  ThinkPad X22/X23/X24
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	4c5a  Radeon Mobility M6 LZ
  	4d46  Rage Mobility M4 AGP
  	4d4c  Rage Mobility M4 AGP
  	5041  Rage 128 PA/PRO
  	5042  Rage 128 PB/PRO AGP 2x
  	5043  Rage 128 PC/PRO AGP 4x
--- 286,324 ----
  	4c52  Rage Mobility P/M
  	4c53  Rage Mobility L
  	4c54  264LT [Mach64 LT]
! 	4c57  Radeon Mobility M7 LW [Radeon Mobility 7500]
! 		1014 0517  ThinkPad T30
  		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)
! 		144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4
! # Update:  More correct labelling for this FireGL chipset
! 	4c58  Radeon RV200 LX [Mobility FireGL 7800 M7]
  	4c59  Radeon Mobility M6 LY
  		1014 0235  ThinkPad A30p (2653-64G)
  		1014 0239  ThinkPad X22/X23/X24
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	4c5a  Radeon Mobility M6 LZ
+ # Update:  Add M9 to product name
+ 	4c64  Radeon R250 Ld [Radeon Mobility 9000 M9]
+ # Update:  Add M9 to product name
+ 	4c65  Radeon R250 Le [Radeon Mobility 9000 M9]
+ # Update:  Add M9 to product name
+ 	4c66  Radeon R250 Lf [Radeon Mobility 9000 M9]
+ # Update:  Add M9 to product name
+ 	4c67  Radeon R250 Lg [Radeon Mobility 9000 M9]
  	4d46  Rage Mobility M4 AGP
  	4d4c  Rage Mobility M4 AGP
+ 	4e44  Radeon R300 ND [Radeon 9700 Pro]
+ 	4e45  Radeon R300 NE [Radeon 9500 Pro]
+ 		1002 0002  Radeon R300 NE [Radeon 9500 Pro]
+ 	4e46  Radeon R300 NF [Radeon 9700]
+ # Update:  This is FireGL X1, not Radeon 9700
+ 	4e47  Radeon R300 NG [FireGL X1]
+ 	4e48  Radeon R350 [Radeon 9800]
+ 	4e64  Radeon R300 [Radeon 9700 Pro] (Secondary)
+ 	4e65  Radeon R300 [Radeon 9500 Pro] (Secondary)
+ 	4e66  Radeon R300 [Radeon 9700] (Secondary)
+ 	4e67  Radeon R300 [FireGL X1] (Secondary)
+ 	4e68  Radeon R350 [Radeon 9800] (Secondary)
  	5041  Rage 128 PA/PRO
  	5042  Rage 128 PB/PRO AGP 2x
  	5043  Rage 128 PC/PRO AGP 4x
***************
*** 289,295 ****
  	504d  Rage 128 PM/PRO
  	504e  Rage 128 PN/PRO AGP 2x
  	504f  Rage 128 PO/PRO AGP 4x
! 	5050  Rage 128 PP/PRO TMDS
  		1002 0008  Xpert 128
  	5051  Rage 128 PQ/PRO AGP 2x TMDS
  	5052  Rage 128 PR/PRO AGP 4x TMDS
--- 345,351 ----
  	504d  Rage 128 PM/PRO
  	504e  Rage 128 PN/PRO AGP 2x
  	504f  Rage 128 PO/PRO AGP 4x
! 	5050  Rage 128 PP/PRO TMDS [Xpert 128]
  		1002 0008  Xpert 128
  	5051  Rage 128 PQ/PRO AGP 2x TMDS
  	5052  Rage 128 PR/PRO AGP 4x TMDS
***************
*** 299,305 ****
  	5056  Rage 128 PV/PRO TMDS
  	5057  Rage 128 PW/PRO AGP 2x TMDS
  	5058  Rage 128 PX/PRO AGP 4x TMDS
! 	5144  Radeon QD
  		1002 0008  Radeon 7000/Radeon VE
  		1002 0009  Radeon 7000/Radeon
  		1002 000a  Radeon 7000/Radeon
--- 355,362 ----
  	5056  Rage 128 PV/PRO TMDS
  	5057  Rage 128 PW/PRO AGP 2x TMDS
  	5058  Rage 128 PX/PRO AGP 4x TMDS
! # Update: This same chip is used in all 32Mb and 64Mb SDR/DDR orig Radeons, and is now known as 7200
! 	5144  Radeon R100 QD [Radeon 7200]
  		1002 0008  Radeon 7000/Radeon VE
  		1002 0009  Radeon 7000/Radeon
  		1002 000a  Radeon 7000/Radeon
***************
*** 313,346 ****
  		1002 028a  Radeon 7000/Radeon
  		1002 02aa  Radeon AIW
  		1002 053a  Radeon 7000/Radeon
! 	5145  Radeon QE
! 	5146  Radeon QF
! 	5147  Radeon QG
  	5148  Radeon R200 QH [Radeon 8500]
! 		1002 0152  FireGL 8800
! 		1002 0172  FireGL 8700
  	5149  Radeon R200 QI
  	514a  Radeon R200 QJ
  	514b  Radeon R200 QK
  	514c  Radeon R200 QL [Radeon 8500 LE]
  		1002 003a  Radeon R200 QL [Radeon 8500 LE]
  		1002 013a  Radeon 8500
! 	5157  Radeon 7500 QW
  		1002 013a  Radeon 7500
  		174b 7161  Radeon RV200 QW [Radeon 7500 LE]
! 	5158  Radeon 7500 QX
! 	5159  Radeon VE QY
  		1002 000a  Radeon 7000/Radeon VE
  		1002 0038  Radeon 7000/Radeon VE
  		1002 003a  Radeon 7000/Radeon VE
  		1002 00ba  Radeon 7000/Radeon VE
  		1002 013a  Radeon 7000/Radeon VE
! 		174b 7112  Radeon 7000 64M TVO
! 	515a  Radeon VE QZ
  	5168  Radeon R200 Qh
  	5169  Radeon R200 Qi
  	516a  Radeon R200 Qj
  	516b  Radeon R200 Qk
  	5245  Rage 128 RE/SG
  		1002 0008  Xpert 128
  		1002 0028  Rage 128 AIW
--- 370,428 ----
  		1002 028a  Radeon 7000/Radeon
  		1002 02aa  Radeon AIW
  		1002 053a  Radeon 7000/Radeon
! 	5145  Radeon R100 QE
! 	5146  Radeon R100 QF
! 	5147  Radeon R100 QG
  	5148  Radeon R200 QH [Radeon 8500]
! 		1002 010a  FireGL 8800 64Mb
! 		1002 0152  FireGL 8800 128Mb
! 		1002 0162  FireGL 8700 32Mb
! 		1002 0172  FireGL 8700 64Mb
  	5149  Radeon R200 QI
  	514a  Radeon R200 QJ
  	514b  Radeon R200 QK
  	514c  Radeon R200 QL [Radeon 8500 LE]
  		1002 003a  Radeon R200 QL [Radeon 8500 LE]
  		1002 013a  Radeon 8500
! 		148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]
! 		174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]
! # New: Radeon 9100 is basically a Radeon 8500LE branded as 9100 by Sapphire
! 	514d  Radeon R200 QM [Radeon 9100]
! # New: Radeon 8500LE chip
! 	514e  Radeon R200 QN [Radeon 8500LE]
! # New: Radeon 8500LE chip
! 	514f  Radeon R200 QO [Radeon 8500LE]
! 	5157  Radeon RV200 QW [Radeon 7500]
  		1002 013a  Radeon 7500
+ 		1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]
+ 		148c 2024  RV200 QW [Radeon 7500LE Dual Display]
+ 		148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]
+ 		148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]
+ 		174b 7147  RV200 QW [Sapphire Radeon 7500LE]
  		174b 7161  Radeon RV200 QW [Radeon 7500 LE]
! 		17af 0202  RV200 QW [Excalibur Radeon 7500LE]
! 	5158  Radeon RV200 QX [Radeon 7500]
! # Update: More correct name
! 	5159  Radeon RV100 QY [Radeon 7000/VE]
  		1002 000a  Radeon 7000/Radeon VE
+ 		1002 000b  Radeon 7000
  		1002 0038  Radeon 7000/Radeon VE
  		1002 003a  Radeon 7000/Radeon VE
  		1002 00ba  Radeon 7000/Radeon VE
  		1002 013a  Radeon 7000/Radeon VE
! 		1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]
! 		148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]
! 		148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]
! 		174b 7112  RV100 QY [Sapphire Radeon VE 7000]
! 		1787 0202  RV100 QY [Excalibur Radeon 7000]
! # Update: More correct name
! 	515a  Radeon RV100 QZ [Radeon 7000/VE]
  	5168  Radeon R200 Qh
  	5169  Radeon R200 Qi
  	516a  Radeon R200 Qj
  	516b  Radeon R200 Qk
+ # new: This one is not in ATI documentation, but is in XFree86 source code
+ 	516c  Radeon R200 Ql
  	5245  Rage 128 RE/SG
  		1002 0008  Xpert 128
  		1002 0028  Rage 128 AIW
***************
*** 360,365 ****
--- 442,448 ----
  		1002 0088  Xpert 99
  	5345  Rage 128 SE/4x
  	5346  Rage 128 SF/4x AGP 2x
+ 		1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL
  	5347  Rage 128 SG/4x AGP 4x
  	5348  Rage 128 SH
  	534b  Rage 128 SK/4x
***************
*** 390,395 ****
--- 473,481 ----
  		1002 5654  Mach64VT Reference
  	5655  264VT3 [Mach64 VT3]
  	5656  264VT4 [Mach64 VT4]
+ 	700f  PCI Bridge [IGP 320M]
+ 	7010  PCI Bridge [IGP 340M]
+ 	cab2  RS200/RS200M AGP Bridge [IGP 340M]
  1003  ULSI Systems
  	0201  US201
  1004  VLSI Technology Inc
***************
*** 419,425 ****
--- 505,514 ----
  		1004 0306  QSound ThunderBird PCI Audio Support Registers
  		122d 1208  DSP368 Audio Support Registers
  		1483 5022  XWave Thunder 3D Audio Support Registers
+ 	0307  Thunderbird
+ 	0308  Thunderbird
  	0702  VAS96011 [Golden Gate II]
+ 	0703  Tollgate
  1005  Avance Logic Inc. [ALI]
  	2064  ALG2032/2064
  	2128  ALG2364A
***************
*** 492,504 ****
  	0014  DECchip 21041 [Tulip Pass 3]
  		1186 0100  DE-530+
  	0016  DGLPB [OPPO]
  	0019  DECchip 21142/43
  		1011 500a  DE500A Fast Ethernet
  		1011 500b  DE500B Fast Ethernet
  		1014 0001  10/100 EtherJet Cardbus
  		1025 0315  ALN315 Fast Ethernet
! 		1033 800c  PC-9821-CS01
! 		1033 800d  PC-9821NR-B06
  		108d 0016  Rapidfire 2327 10/100 Ethernet
  		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus
  		10b8 2005  SMC8032DT Extreme Ethernet 10/100
--- 581,594 ----
  	0014  DECchip 21041 [Tulip Pass 3]
  		1186 0100  DE-530+
  	0016  DGLPB [OPPO]
+ 	0017  PV-PCI Graphics Controller (ZLXp-L)
  	0019  DECchip 21142/43
  		1011 500a  DE500A Fast Ethernet
  		1011 500b  DE500B Fast Ethernet
  		1014 0001  10/100 EtherJet Cardbus
  		1025 0315  ALN315 Fast Ethernet
! 		1033 800c  PC-9821-CS01 100BASE-TX Interface Card
! 		1033 800d  PC-9821NR-B06 100BASE-TX Interface Card
  		108d 0016  Rapidfire 2327 10/100 Ethernet
  		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus
  		10b8 2005  SMC8032DT Extreme Ethernet 10/100
***************
*** 522,527 ****
--- 612,618 ----
  		1374 0002  Cardbus Ethernet Card 10/100
  		1374 0007  Cardbus Ethernet Card 10/100
  		1374 0008  Cardbus Ethernet Card 10/100
+ 		1385 2100  FA510
  		1395 0001  10/100 Ethernet CardBus PC Card
  		13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)
  		8086 0001  EtherExpress PRO/100 Mobile CardBus 32
***************
*** 581,588 ****
  		1014 1010  CS4610 SoundFusion Audio Accelerator
  	6003  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
  		1013 4280  Crystal SoundFusion PCI Audio Accelerator
! 		1681 0050  Hercules Game Theater XP
! 		1681 a011  Hercules Fortissimo III 7.1
  	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
  	6005  Crystal CS4281 PCI Audio
  		1013 4281  Crystal CS4281 PCI Audio
--- 672,679 ----
  		1014 1010  CS4610 SoundFusion Audio Accelerator
  	6003  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
  		1013 4280  Crystal SoundFusion PCI Audio Accelerator
! 		1681 0050  Game Theater XP
! 		1681 a011  Fortissimo III 7.1
  	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
  	6005  Crystal CS4281 PCI Audio
  		1013 4281  Crystal CS4281 PCI Audio
***************
*** 608,614 ****
  	0020  MCA
  	0022  IBM27-82351
  	002d  Python
! 	002e  ServeRAID-3x
  	0036  Miami
  	003a  CPU to PCI Bridge
  	003e  16/4 Token ring UTP/STP controller
--- 699,707 ----
  	0020  MCA
  	0022  IBM27-82351
  	002d  Python
! 	002e  ServeRAID Controller
! 		1014 002e  ServeRAID-3x
! 		1014 022e  ServeRAID-4H
  	0036  Miami
  	003a  CPU to PCI Bridge
  	003e  16/4 Token ring UTP/STP controller
***************
*** 644,661 ****
  	00b7  256-bit Graphics Rasterizer [Fire GL1]
  		1902 00b8  Fire GL1
  	00be  ATM 622MBPS Controller (1410be00)
  	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)
  	0105  CPC710 Dual Bridge and Memory Controller (PCI-32)
  	0142  Yotta Video Compositor Input
  		1014 0143  Yotta Input Controller (ytin)
  	0144  Yotta Video Compositor Output
  		1014 0145  Yotta Output Controller (ytout)
  	0156  405GP PLB to PCI Bridge
  	01a7  PCI-X to PCI-X Bridge
! 	01bd  Netfinity ServeRAID controller
! 	01be  ServeRAID-4M
! 	01bf  ServeRAID-4L
! 	022e  ServeRAID-4H
  	ffff  MPIC-2 interrupt controller
  1015  LSI Logic Corp of Canada
  1016  ICL Personal Systems
--- 737,761 ----
  	00b7  256-bit Graphics Rasterizer [Fire GL1]
  		1902 00b8  Fire GL1
  	00be  ATM 622MBPS Controller (1410be00)
+ 	00dc  Advanced Systems Management Adapter (ASMA)
  	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)
  	0105  CPC710 Dual Bridge and Memory Controller (PCI-32)
+ 	010f  Remote Supervisor Adapter (RSA)
  	0142  Yotta Video Compositor Input
  		1014 0143  Yotta Input Controller (ytin)
  	0144  Yotta Video Compositor Output
  		1014 0145  Yotta Output Controller (ytout)
  	0156  405GP PLB to PCI Bridge
  	01a7  PCI-X to PCI-X Bridge
! 	01bd  ServeRAID Controller
! 		1014 01be  ServeRAID-4M
! 		1014 01bf  ServeRAID-4L
! 		1014 0208  ServeRAID-4Mx
! 		1014 020e  ServeRAID-4Lx
! 		1014 022e  ServeRAID-4H
! 		1014 0258  ServeRAID-5i
! 		1014 0259  ServeRAID-5i
! 	0302  XA-32 chipset [Summit]
  	ffff  MPIC-2 interrupt controller
  1015  LSI Logic Corp of Canada
  1016  ICL Personal Systems
***************
*** 700,706 ****
  1020  Hitachi Computer Products
  1021  OKI Electric Industry Co. Ltd.
  1022  Advanced Micro Devices [AMD]
! 	2000  79c970 [PCnet LANCE]
  		1014 2000  NetFinity 10/100 Fast Ethernet
  		103c 104c  Ethernet with LAN remote power Adapter
  		103c 1064  Ethernet with LAN remote power Adapter
--- 800,810 ----
  1020  Hitachi Computer Products
  1021  OKI Electric Industry Co. Ltd.
  1022  Advanced Micro Devices [AMD]
! 	1100  K8 NorthBridge
! 	1101  K8 NorthBridge
! 	1102  K8 NorthBridge
! 	1103  K8 NorthBridge
! 	2000  79c970 [PCnet32 LANCE]
  		1014 2000  NetFinity 10/100 Fast Ethernet
  		103c 104c  Ethernet with LAN remote power Adapter
  		103c 1064  Ethernet with LAN remote power Adapter
***************
*** 743,761 ****
  	7443  AMD-768 [Opus] ACPI
  		1043 8044  A7M-D Mainboard
  	7445  AMD-768 [Opus] Audio
  	7448  AMD-768 [Opus] PCI
  	7449  AMD-768 [Opus] USB
  	7454  AMD-8151 System Controller
  	7455  AMD-8151 AGP Bridge
  	7460  AMD-8111 PCI
  	7461  AMD-8111 USB
  	7462  AMD-8111 Ethernet
  	7468  AMD-8111 LPC
  	7469  AMD-8111 IDE
  	746a  AMD-8111 SMBus 2.0
  	746b  AMD-8111 ACPI
  	746d  AMD-8111 AC97 Audio
! 	756b  AMD-8111 ACPI
  1023  Trident Microsystems
  	0194  82C194
  	2000  4DWave DX
--- 847,869 ----
  	7443  AMD-768 [Opus] ACPI
  		1043 8044  A7M-D Mainboard
  	7445  AMD-768 [Opus] Audio
+ 	7446  AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible)
  	7448  AMD-768 [Opus] PCI
  	7449  AMD-768 [Opus] USB
+ 	7450  AMD-8131 PCI-X Bridge
+ 	7451  AMD-8131 PCI-X APIC
  	7454  AMD-8151 System Controller
  	7455  AMD-8151 AGP Bridge
  	7460  AMD-8111 PCI
  	7461  AMD-8111 USB
  	7462  AMD-8111 Ethernet
+ 	7464  AMD-8111 USB
  	7468  AMD-8111 LPC
  	7469  AMD-8111 IDE
  	746a  AMD-8111 SMBus 2.0
  	746b  AMD-8111 ACPI
  	746d  AMD-8111 AC97 Audio
! 	746e  AMD-8111 MC97 Modem
  1023  Trident Microsystems
  	0194  82C194
  	2000  4DWave DX
***************
*** 768,773 ****
--- 876,883 ----
  	8520  CyberBlade i1
  		0e11 b16e  CyberBlade i1 AGP
  		1023 8520  CyberBlade i1 AGP
+ 	8620  CyberBlade/i1
+ 		1014 0502  ThinkPad T30
  	8820  CyberBlade XPAi1
  	9320  TGUI 9320
  	9350  GUI Accelerator
***************
*** 876,888 ****
  		1028 00d0  PowerEdge Expandable RAID Controller 3/Si
  	0005  PowerEdge Expandable RAID Controller 3/Di
  	0006  PowerEdge Expandable RAID Controller 3/Di
! 	0007  Remote Assistant Card 3
! 	0008  PowerEdge Expandable RAID Controller 3/Di
  	000a  PowerEdge Expandable RAID Controller 3
- 		1027 0121  PowerEdge Expandable RAID Controller 3/Di
  		1028 0106  PowerEdge Expandable RAID Controller 3/Di
  		1028 011b  PowerEdge Expandable RAID Controller 3/Di
! 	000c  Embedded Systems Management Device 4
  	000e  PowerEdge Expandable RAID Controller
  	000f  PowerEdge Expandable RAID Controller 4/Di
  1029  Siemens Nixdorf IS
--- 986,1000 ----
  		1028 00d0  PowerEdge Expandable RAID Controller 3/Si
  	0005  PowerEdge Expandable RAID Controller 3/Di
  	0006  PowerEdge Expandable RAID Controller 3/Di
! 	0007  Remote Access Controller:DRAC III
! 	0008  Remote Access Controller
! 	0009  BMC/SMIC device not present
  	000a  PowerEdge Expandable RAID Controller 3
  		1028 0106  PowerEdge Expandable RAID Controller 3/Di
  		1028 011b  PowerEdge Expandable RAID Controller 3/Di
! 		1028 0121  PowerEdge Expandable RAID Controller 3/Di
! 	000c  Remote Access Controller:ERA or ERA/O
! 	000d  BMC/SMIC device
  	000e  PowerEdge Expandable RAID Controller
  	000f  PowerEdge Expandable RAID Controller 4/Di
  1029  Siemens Nixdorf IS
***************
*** 892,900 ****
--- 1004,1014 ----
  102b  Matrox Graphics, Inc.
  # DJ: I've a suspicion that 0010 is a duplicate of 0d10.
  	0010  MGA-I [Impression?]
+ 	0100  MGA 1064SG [Mystique]
  	0518  MGA-II [Athena]
  	0519  MGA 2064W [Millennium]
  	051a  MGA 1064SG [Mystique]
+ 		102b 0100  MGA-1064SG Mystique
  		102b 1100  MGA-1084SG Mystique
  		102b 1200  MGA-1084SG Mystique
  		1100 102b  MGA-1084SG Mystique
***************
*** 989,998 ****
  		102b 5f52  4Sight II
  		102b 9010  Millennium G400 Dual Head
  		1458 0400  GA-G400
! 		1705 0001  Digital First Millennium G450 32MB SGRAM
! 		1705 0002  Digital First Millennium G450 16MB SGRAM
! 		1705 0003  Digital First Millennium G450 32MB
! 		1705 0004  Digital First Millennium G450 16MB
  		b16f 0e11  MGA-G400 AGP
  	0527  MGA Parhelia AGP
  		102b 0840  Parhelia 128Mb
--- 1103,1112 ----
  		102b 5f52  4Sight II
  		102b 9010  Millennium G400 Dual Head
  		1458 0400  GA-G400
! 		1705 0001  Millennium G450 32MB SGRAM
! 		1705 0002  Millennium G450 16MB SGRAM
! 		1705 0003  Millennium G450 32MB
! 		1705 0004  Millennium G450 16MB
  		b16f 0e11  MGA-G400 AGP
  	0527  MGA Parhelia AGP
  		102b 0840  Parhelia 128Mb
***************
*** 1037,1042 ****
--- 1151,1157 ----
  	0009  r4x00
  	0020  ATM Meteor 155
  		102f 00f8  ATM Meteor 155
+ 	0180  TX4927
  1030  TMC Research
  1031  Miro Computer Products AG
  	5601  DC20 ASIC
***************
*** 1050,1066 ****
  	0003  ATM Controller
  	0004  R4000 PCI Bridge
  	0005  PCI to 486-like bus Bridge
! 	0006  GUI Accelerator
  	0007  PCI to UX-Bus Bridge
! 	0008  GUI Accelerator
! 	0009  GUI Accelerator for W98
  	001a  [Nile II]
  	0021  Vrc4373 [Nile I]
  	0029  PowerVR PCX1
  	002a  PowerVR 3D
  	0035  USB
  		1179 0001  USB
  		12ee 7000  Root Hub
  	003e  NAPCCARD Cardbus Controller
  	0046  PowerVR PCX2 [midas]
  	005a  Vrc5074 [Nile 4]
--- 1165,1186 ----
  	0003  ATM Controller
  	0004  R4000 PCI Bridge
  	0005  PCI to 486-like bus Bridge
! 	0006  PC-9800 Graphic Accelerator
  	0007  PCI to UX-Bus Bridge
! 	0008  PC-9800 Graphic Accelerator
! 	0009  PCI to PC9800 Core-Graph Bridge
! 	0016  PCI to VL Bridge
  	001a  [Nile II]
  	0021  Vrc4373 [Nile I]
  	0029  PowerVR PCX1
  	002a  PowerVR 3D
+ 	002c  Star Alpha 2
+ 	002d  PCI to C-bus Bridge
  	0035  USB
  		1179 0001  USB
  		12ee 7000  Root Hub
+ 		1799 0001  Root Hub
+ 	003b  PCI to C-bus Bridge
  	003e  NAPCCARD Cardbus Controller
  	0046  PowerVR PCX2 [midas]
  	005a  Vrc5074 [Nile 4]
***************
*** 1077,1087 ****
--- 1197,1209 ----
  	0074  56k Voice Modem
  		1033 8014  RCV56ACF 56k Voice Modem
  	009b  Vrc5476
+ 	00a5  VRC4173
  	00a6  VRC5477 AC97
  	00cd  IEEE 1394 [OrangeLink] Host Controller
  		12ee 8011  Root hub
  	00e0  USB 2.0
  		12ee 7001  Root hub
+ 		1799 0002  Root Hub
  1034  Framatome Connectors USA Inc.
  1035  Comp. & Comm. Research Lab
  1036  Future Domain Corp.
***************
*** 1089,1095 ****
  1037  Hitachi Micro Systems
  1038  AMP, Inc
  1039  Silicon Integrated Systems [SiS]
! 	0001  5591/5592 AGP
  	0002  SG86C202
  	0006  85C501/2/3
  	0008  85C503/5513
--- 1211,1218 ----
  1037  Hitachi Micro Systems
  1038  AMP, Inc
  1039  Silicon Integrated Systems [SiS]
! # This is what all my tests report. I don't know if this is equivalent to "5591/5592 AGP".
! 	0001  SiS 530 Virtual PCI-to-PCI bridge (AGP)
  	0002  SG86C202
  	0006  85C501/2/3
  	0008  85C503/5513
***************
*** 1099,1106 ****
  		1039 0000  SiS5597 SVGA (Shared RAM)
  	0204  82C204
  	0205  SG86C205
! 	0300  300/200
  		107d 2720  Leadtek WinFast VR300
  	0406  85C501/2
  	0496  85C496
  	0530  530 Host
--- 1222,1233 ----
  		1039 0000  SiS5597 SVGA (Shared RAM)
  	0204  82C204
  	0205  SG86C205
! 	0300  SiS300/305 PCI/AGP VGA Display Adapter
  		107d 2720  Leadtek WinFast VR300
+ 	0310  SiS315H PCI/AGP VGA Display Adapter
+ 	0315  SiS315 PCI/AGP VGA Display Adapter
+ 	0325  SiS315PRO PCI/AGP VGA Display Adapter
+ 	0330  SiS330 [Xabre] PCI/AGP VGA Display Adapter
  	0406  85C501/2
  	0496  85C496
  	0530  530 Host
***************
*** 1111,1134 ****
  	0630  630 Host
  	0633  633 Host
  	0635  635 Host
! 	0645  645 Host
! 	0646  645DX Host
  	0650  650 Host
  	0730  730 Host
  	0733  733 Host
  	0735  735 Host
  	0740  740 Host
  	0745  745 Host
  	0746  746 Host
  	0900  SiS900 10/100 Ethernet
  		1039 0900  SiS900 10/100 Ethernet Adapter
  	0961  SiS961 [MuTIOL Media IO]
  	3602  83C602
  	5107  5107
  	5300  SiS540 PCI Display Adapter
  	5401  486 PCI Chipset
  	5511  5511/5512
  	5513  5513 [IDE]
  		1039 5513  SiS5513 EIDE Controller (A,B step)
  	5517  5517
  	5571  5571
--- 1238,1267 ----
  	0630  630 Host
  	0633  633 Host
  	0635  635 Host
! 	0645  SiS645 Host & Memory & AGP Controller
! 	0646  SiS645DX Host & Memory & AGP Controller
! 	0648  SiS 645xx
  	0650  650 Host
+ 	0651  SiS651 Host
  	0730  730 Host
  	0733  733 Host
  	0735  735 Host
  	0740  740 Host
  	0745  745 Host
  	0746  746 Host
+ 	0755  SiS 755 Host Bridge
  	0900  SiS900 10/100 Ethernet
  		1039 0900  SiS900 10/100 Ethernet Adapter
  	0961  SiS961 [MuTIOL Media IO]
+ 	0962  SiS962 [MuTIOL Media IO]
  	3602  83C602
  	5107  5107
  	5300  SiS540 PCI Display Adapter
+ 	5315  SiS550 AGP/VGA VGA Display Adapter
  	5401  486 PCI Chipset
  	5511  5511/5512
  	5513  5513 [IDE]
+ 		1019 0970  P6STP-FL motherboard
  		1039 5513  SiS5513 EIDE Controller (A,B step)
  	5517  5517
  	5571  5571
***************
*** 1142,1149 ****
  	6205  VGA Controller
  	6236  6236 3D-AGP
  	6300  SiS630 GUI Accelerator+3D
! 	6306  6306 3D-AGP
  		1039 6306  SiS530,620 GUI Accelerator+3D
  	6326  86C326 5598/6326
  		1039 6326  SiS6326 GUI Accelerator
  		1092 0a50  SpeedStar A50
--- 1275,1284 ----
  	6205  VGA Controller
  	6236  6236 3D-AGP
  	6300  SiS630 GUI Accelerator+3D
! 		1019 0970  P6STP-FL motherboard
! 	6306  SiS530 3D PCI/AGP
  		1039 6306  SiS530,620 GUI Accelerator+3D
+ 	6325  SiS65x/M650/740 PCI/AGP VGA Display Adapter
  	6326  86C326 5598/6326
  		1039 6326  SiS6326 GUI Accelerator
  		1092 0a50  SpeedStar A50
***************
*** 1151,1161 ****
  		1092 4910  SpeedStar A70
  		1092 4920  SpeedStar A70
  		1569 6326  SiS6326 GUI Accelerator
! 	7001  7001
  	7007  FireWire Controller
! 	7012  SiS7012 PCI Audio Accelerator
! 	7013  56k Winmodem (Smart Link HAMR5600 compatible)
! 	7016  SiS7016 10/100 Ethernet Adapter
  		1039 7016  SiS7016 10/100 Ethernet Adapter
  	7018  SiS PCI Audio Accelerator
  		1014 01b6  SiS PCI Audio Accelerator
--- 1286,1299 ----
  		1092 4910  SpeedStar A70
  		1092 4920  SpeedStar A70
  		1569 6326  SiS6326 GUI Accelerator
! 	7001  USB 1.0 Controller
! 		1039 7000  Onboard USB Controller
! 	7002  USB 2.0 Controller
! 		1509 7002  Onboard USB Controller
  	7007  FireWire Controller
! 	7012  Sound Controller
! 	7013  Intel 537 [56k Winmodem]
! 	7016  10/100 Ethernet Adapter
  		1039 7016  SiS7016 10/100 Ethernet Adapter
  	7018  SiS PCI Audio Accelerator
  		1014 01b6  SiS PCI Audio Accelerator
***************
*** 1212,1217 ****
--- 1350,1356 ----
  		103c 1226  Keystone SP2
  		103c 1227  Powerbar SP2
  		103c 1282  Everest SP2
+ 	1054  PCI Local Bus Adapter
  	1064  79C970 PCnet Ethernet Controller
  	108b  Visualize FXe
  	10c1  NetServer Smart IRQ Router
***************
*** 1223,1229 ****
  	121c  NetServer PCI COM Port Decoder
  	1229  zx1 System Bus Adapter
  	122a  zx1 I/O Controller
! 	122e  zx1 Local Bus Adapter
  	1290  Auxiliary Diva Serial Port
  	2910  E2910A PCIBus Exerciser
  	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
--- 1362,1369 ----
  	121c  NetServer PCI COM Port Decoder
  	1229  zx1 System Bus Adapter
  	122a  zx1 I/O Controller
! 	122e  PCI-X/AGP Local Bus Adapter
! 	127c  sx1000 I/O Controller
  	1290  Auxiliary Diva Serial Port
  	2910  E2910A PCIBus Exerciser
  	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
***************
*** 1232,1244 ****
  1040  Accelgraphics Inc.
  1041  Computrend
  1042  Micron
! 	1000  FDC 37C665
! 	1001  37C922
  	3000  Samurai_0
  	3010  Samurai_1
  	3020  Samurai_IDE
  1043  Asustek Computer, Inc.
  	0675  ISDNLink P-IN100-ST-D
  	4057  V8200 GeForce 3
  1044  Distributed Processing Technology
  	1012  Domino RAID Engine
--- 1372,1385 ----
  1040  Accelgraphics Inc.
  1041  Computrend
  1042  Micron
! 	1000  PC Tech RZ1000
! 	1001  PC Tech RZ1001
  	3000  Samurai_0
  	3010  Samurai_1
  	3020  Samurai_IDE
  1043  Asustek Computer, Inc.
  	0675  ISDNLink P-IN100-ST-D
+ 	4021  v7100 Combo Deluxe [GeForce2 MX + TV tuner]
  	4057  V8200 GeForce 3
  1044  Distributed Processing Technology
  	1012  Domino RAID Engine
***************
*** 1314,1319 ****
--- 1455,1463 ----
  104a  SGS Thomson Microelectronics
  	0008  STG 2000X
  	0009  STG 1764X
+ 	0010  STG4000 [3D Prophet Kyro Series]
+ # From <http://gatekeeper.dec.com/pub/BSD/FreeBSD/FreeBSD-stable/src/share/misc/pci_vendors>
+ 	0210  STPC Atlas ISA Bridge
  	0981  DEC-Tulip compatible 10/100 Ethernet
  	1746  STG 1764X
  	2774  DEC-Tulip compatible 10/100 Ethernet
***************
*** 1326,1331 ****
--- 1470,1476 ----
  	0500  100 MBit LAN Controller
  	0508  TMS380C2X Compressor Interface
  	1000  Eagle i/f AS
+ 	104c  PCI1510 PC card Cardbus Controller
  	3d04  TVP4010 [Permedia]
  	3d07  TVP4020 [Permedia 2]
  		1011 4d10  Comet
***************
*** 1369,1377 ****
--- 1514,1525 ----
  	8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
  	8027  PCI4451 IEEE-1394 Controller
  		1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)
+ 	8029  PCI4510 IEEE-1394 Controller
+ 	8400  ACX 100 22Mbps Wireless Interface
  	a001  TDC1570
  	a100  TDC1561
  	a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f
+ 	a106  TMS320C6205
  	ac10  PCI1050
  	ac11  PCI1053
  	ac12  PCI1130
***************
*** 1383,1388 ****
--- 1531,1537 ----
  	ac19  PCI1221
  	ac1a  PCI1210
  	ac1b  PCI1450
+ 		0e11 b113  Armada M700
  	ac1c  PCI1225
  	ac1d  PCI1251A
  	ac1e  PCI1211
***************
*** 1397,1402 ****
--- 1546,1552 ----
  	ac41  PCI4410 PC card Cardbus Controller
  	ac42  PCI4451 PC card Cardbus Controller
  		1028 00e6  PCI4451 PC card CardBus Controller (Dell Inspiron 8100)
+ 	ac44  PCI4510 PC card Cardbus Controller
  	ac50  PCI1410 PC card Cardbus Controller
  	ac51  PCI1420
  		1014 023b  ThinkPad T23 (2647-4MG)
***************
*** 1405,1410 ****
--- 1555,1562 ----
  	ac52  PCI1451 PC card Cardbus Controller
  	ac53  PCI1421 PC card Cardbus Controller
  	ac55  PCI1250 PC card Cardbus Controller
+ 		1014 0512  ThinkPad T30
+ 	ac56  PCI1510 PC card Cardbus Controller
  	ac60  PCI2040 PCI to DSP Bridge Controller
  	fe00  FireWire Host Controller
  	fe03  12C01A FireWire Host Controller
***************
*** 1430,1435 ****
--- 1582,1588 ----
  		1050 0840  W89C840 Ethernet Adapter
  	0940  W89C940
  	5a5a  W89C940F
+ 	6692  W6692
  	9970  W9970CF
  1051  Anigma, Inc.
  1052  ?Young Micro Systems
***************
*** 1446,1451 ****
--- 1599,1606 ----
  	0001  MPC105 [Eagle]
  	0002  MPC106 [Grackle]
  	0003  MPC8240 [Kahlua]
+ 	0004  MPC107
+ 	0006  MPC8245 [Unity]
  	0100  MC145575 [HFC-PCI]
  	0431  KTI829c 100VG
  	1801  Audio I/O Controller (MIDI)
***************
*** 1483,1488 ****
--- 1638,1645 ----
  	0d38  20263
  		105a 4d39  Fasttrak66
  	1275  20275
+ 	3376  PDC20376
+ 		1043 809e  A7V8X motherboard
  	4d30  20267
  		105a 4d33  Ultra100
  		105a 4d39  Fasttrak100
***************
*** 1495,1506 ****
  	4d68  20268
  		105a 4d68  Ultra100TX2
  	4d69  20269
  	5275  PDC20276 IDE
  		105a 0275  SuperTrak SX6000 IDE
  	5300  DC5300
  	6268  20268R
  	6269  PDC20271
! 		105a 6269  Fasttrack tx2
  	7275  PDC20277
  105b  Foxconn International, Inc.
  105c  Wipro Infotech Limited
--- 1652,1665 ----
  	4d68  20268
  		105a 4d68  Ultra100TX2
  	4d69  20269
+ 		105a 4d68  Ultra133TX2
  	5275  PDC20276 IDE
  		105a 0275  SuperTrak SX6000 IDE
  	5300  DC5300
  	6268  20268R
  	6269  PDC20271
! 		105a 6269  FastTrak TX2/TX2000
! 	6621  PDC20621 [SX4000] 4 Channel IDE RAID Controller
  	7275  PDC20277
  105b  Foxconn International, Inc.
  105c  Wipro Infotech Limited
***************
*** 1538,1543 ****
--- 1697,1703 ----
  		13cc 0009  Barco Metheus 5 Megapixel, Dual Head
  		13cc 000a  Barco Metheus 5 Megapixel, Dual Head
  	5348  Revolution 4
+ 		105d 0037  Revolution IV-FP AGP (For SGI 1600SW)
  105e  Vtech Computers Ltd
  105f  Infotronic America Inc
  1060  United Microelectronics [UMC]
***************
*** 1615,1620 ****
--- 1775,1785 ----
  	002e  UniNorth 1.5 PCI
  	002f  UniNorth 1.5 Internal PCI
  	0030  UniNorth/Pangea FireWire
+ 	0031  UniNorth 2 FireWire
+ 	0032  UniNorth 2 GMAC (Sun GEM)
+ 	0033  UniNorth 2 ATA/100
+ 	0034  UniNorth 2 AGP
+ 	1645  Tigon3 Gigabit Ethernet NIC (BCM5701)
  106c  Hyundai Electronics America
  	8801  Dual Pentium ISA/PCI Motherboard
  	8802  PowerPC ISA/PCI Motherboard
***************
*** 1671,1676 ****
--- 1836,1842 ----
  	2100  QLA2100 64-bit Fibre Channel Adapter
  		1077 0001  QLA2100 64-bit Fibre Channel Adapter
  	2200  QLA2200
+ 		1077 0002  QLA2200
  	2300  QLA2300 64-bit FC-AL Adapter
  	2312  QLA2312 Fibre Channel Adapter
  1078  Cyrix Corporation
***************
*** 1726,1732 ****
  1087  Cache Computer
  1088  Microcomputer Systems (M) Son
  1089  Data General Corporation
! 108a  SBS Technologies (formerly Bit3 Computer Corp.)
  	0001  VME Bridge Model 617
  	0010  VME Bridge Model 618
  	0040  dataBLIZZARD
--- 1892,1899 ----
  1087  Cache Computer
  1088  Microcomputer Systems (M) Son
  1089  Data General Corporation
! # Formerly Bit3 Computer Corp.
! 108a  SBS Technologies
  	0001  VME Bridge Model 617
  	0010  VME Bridge Model 618
  	0040  dataBLIZZARD
***************
*** 1818,1825 ****
--- 1985,1994 ----
  	b081  IMAQ-PXI-1422
  	b091  IMAQ-PXI-1411
  	c801  PCI-GPIB
+ 	c831  PCI-GPIB bridge
  1094  First International Computers [FIC]
  1095  CMD Technology Inc
+ 	0240  Adaptec AAR-1210SA SATA HostRAID Controller
  	0640  PCI0640
  	0643  PCI0643
  	0646  PCI0646
***************
*** 1834,1839 ****
--- 2003,2009 ----
  		1095 0670  USB0670
  	0673  USB0673
  	0680  PCI0680
+ 	3112  Silicon Image SiI 3112 SATARaid Controller
  1096  Alacron
  1097  Appian Technology
  1098  Quantum Designs (H.K.) Ltd
***************
*** 1853,1860 ****
  	036c  Bt879(??) Video Capture
  		13e9 0070  Win/TV (Video Section)
  	036e  Bt878 Video Capture
! 		0070 13eb  WinTV/GO
  		0070 ff01  Viewcast Osprey 200
  		11bd 001c  PCTV Sat (DBC receiver)
  		127a 0001  Bt878 Mediastream Controller NTSC
  		127a 0002  Bt878 Mediastream Controller PAL BG
--- 2023,2032 ----
  	036c  Bt879(??) Video Capture
  		13e9 0070  Win/TV (Video Section)
  	036e  Bt878 Video Capture
! 		0070 13eb  WinTV Series
  		0070 ff01  Viewcast Osprey 200
+ 		107d 6606  WinFast TV 2000
+ 		11bd 0012  PCTV pro (TV + FM stereo receiver)
  		11bd 001c  PCTV Sat (DBC receiver)
  		127a 0001  Bt878 Mediastream Controller NTSC
  		127a 0002  Bt878 Mediastream Controller PAL BG
***************
*** 1869,1874 ****
--- 2041,2047 ----
  		1851 1850  FlyVideo'98 - Video
  		1851 1851  FlyVideo II
  		1852 1852  FlyVideo'98 - Video (with FM Tuner)
+ 		bd11 1200  PCTV pro (TV + FM stereo receiver)
  	036f  Bt879 Video Capture
  		127a 0044  Bt879 Video Capture NTSC
  		127a 0122  Bt879 Video Capture PAL I
***************
*** 1904,1913 ****
  		1851 1851  FlyVideo'98 EZ - video
  		1852 1852  FlyVideo'98 (with FM Tuner)
  	0878  Bt878 Audio Capture
! 		0070 13eb  WinTV/GO
  		0070 ff01  Viewcast Osprey 200
  		1002 0001  TV-Wonder
  		1002 0003  TV-Wonder/VE
  		11bd 001c  PCTV Sat (DBC receiver)
  		127a 0001  Bt878 Video Capture (Audio Section)
  		127a 0002  Bt878 Video Capture (Audio Section)
--- 2077,2087 ----
  		1851 1851  FlyVideo'98 EZ - video
  		1852 1852  FlyVideo'98 (with FM Tuner)
  	0878  Bt878 Audio Capture
! 		0070 13eb  WinTV Series
  		0070 ff01  Viewcast Osprey 200
  		1002 0001  TV-Wonder
  		1002 0003  TV-Wonder/VE
+ 		11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)
  		11bd 001c  PCTV Sat (DBC receiver)
  		127a 0001  Bt878 Video Capture (Audio Section)
  		127a 0002  Bt878 Video Capture (Audio Section)
***************
*** 1920,1925 ****
--- 2094,2100 ----
  		14f1 0002  Bt878 Video Capture (Audio Section)
  		14f1 0003  Bt878 Video Capture (Audio Section)
  		14f1 0048  Bt878 Video Capture (Audio Section)
+ 		bd11 1200  PCTV pro (TV + FM stereo receiver, audio section)
  	0879  Bt879 Audio Capture
  		127a 0044  Bt879 Video Capture (Audio Section)
  		127a 0122  Bt879 Video Capture (Audio Section)
***************
*** 1961,1967 ****
  10a2  Quantum Corporation
  10a3  Everex Systems Inc
  10a4  Globe Manufacturing Sales
! 10a5  Racal Interlan
  10a6  Informtech Industrial Ltd.
  10a7  Benchmarq Microelectronics
  10a8  Sierra Semiconductor
--- 2136,2144 ----
  10a2  Quantum Corporation
  10a3  Everex Systems Inc
  10a4  Globe Manufacturing Sales
! 10a5  Smart Link Ltd.
! 	3052  SmartPCI562 56K Modem
! 	5449  SmartPCI561 modem
  10a6  Informtech Industrial Ltd.
  10a7  Benchmarq Microelectronics
  10a8  Sierra Semiconductor
***************
*** 1976,1981 ****
--- 2153,2159 ----
  	0007  RPCEX
  	0008  DiVO VIP
  	0009  Alteon Gigabit Ethernet
+ 		10a9 8002  Acenic Gigabit Ethernet
  	0010  AMP Video I/O
  	0011  GRIP
  	0012  SGH PSHAC GSN
***************
*** 1987,1992 ****
--- 2165,2171 ----
  	1006  Dual JPEG 4
  	1007  Dual JPEG 5
  	1008  Cesium
+ 	100a  IOC4 I/O controller
  	2001  Fibre Channel
  	2002  ASDE
  	8001  O2 1394
***************
*** 2027,2033 ****
--- 2206,2214 ----
  		15ed 1003  MCCS 16-port Serial Hot Swap
  	9036  9036
  	9050  PCI <-> IOBus Bridge
+ 		10b5 2036  SatPak GPS
  		10b5 2273  SH-ARC SoHard ARCnet card
+ 		10b5 9050  MP9050
  		1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem
  		1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem
  		1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem
***************
*** 2038,2043 ****
--- 2219,2225 ----
  		15ed 1001  Macrolink MCCS 16-port Serial
  		15ed 1002  Macrolink MCCS 8-port Serial Hot Swap
  		15ed 1003  Macrolink MCCS 16-port Serial Hot Swap
+ 		5654 5634  OpenLine4 Telephony Card
  		d531 c002  PCIntelliCAN 2xSJA1000 CAN bus
  		d84d 4006  EX-4006 1P
  		d84d 4008  EX-4008 1P EPP/ECP
***************
*** 2058,2063 ****
--- 2240,2246 ----
  		d84d 4078  EX-4078 2S(16C552) RS-232+1P
  	9054  PCI <-> IOBus Bridge
  		10b5 2455  Wessex Techology PHIL-PCI
+ 		12d9 0002  PCI Prosody Card rev 1.5
  	9060  9060
  	906d  9060SD
  		125c 0640  Aries 16000P
***************
*** 2065,2072 ****
  	9080  9080
  		10b5 9080  9080 [real subsystem ID not set]
  		129d 0002  Aculab PCI Prosidy card
! 	a001  GTEK Jetport II 2 port serial adaptor
! 	c001  GTEK Cyclone 16/32 port serial adaptor
  10b6  Madge Networks
  	0001  Smart 16/4 PCI Ringnode
  	0002  Smart 16/4 PCI Ringnode Mk2
--- 2248,2254 ----
  	9080  9080
  		10b5 9080  9080 [real subsystem ID not set]
  		129d 0002  Aculab PCI Prosidy card
! 		12d9 0002  PCI Prosody Card
  10b6  Madge Networks
  	0001  Smart 16/4 PCI Ringnode
  	0002  Smart 16/4 PCI Ringnode Mk2
***************
*** 2094,2099 ****
--- 2276,2282 ----
  	1001  Collage 155 ATM Server Adapter
  10b7  3Com Corporation
  	0001  3c985 1000BaseSX (SX/TX)
+ 	0910  3C910-A01
  	1006  MINI PCI type 3B Data Fax Modem
  	1007  Mini PCI 56k Winmodem
  		10b7 615c  Mini PCI 56K Modem
***************
*** 2172,2190 ****
  		1028 0095  Integrated 3C905C-TX Fast Etherlink for PC Management NIC
  		10b7 1000  3C905C-TX Fast Etherlink for PC Management NIC
  		10b7 7000  10/100 Mini PCI Ethernet Adapter
  	9800  3c980-TX [Fast Etherlink XL Server Adapter]
  		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter
  	9805  3c980-TX 10/100baseTX NIC [Python-T]
  		10b7 1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]
  		10b7 1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]
  		10b7 9805  3c980 10/100baseTX NIC [Python-T]
! 	9900  3C990-TX Typhoon
! 	9902  3CR990-TX-95 56-bit Typhoon Client
! 	9903  3CR990-TX-97 168-bit Typhoon Client
  	9904  3C990B-TX-M/3C990BSVR [Typhoon2]
  	9905  3CR990-FX-95/97/95 [Typhon Fiber]
! 	9908  3CR990SVR95 56-bit Typhoon Server
! 	9909  3CR990SVR97 Typhoon Server
  	990b  3C990SVR [Typhoon Server]
  10b8  Standard Microsystems Corp [SMC]
  	0005  83C170QF
--- 2355,2382 ----
  		1028 0095  Integrated 3C905C-TX Fast Etherlink for PC Management NIC
  		10b7 1000  3C905C-TX Fast Etherlink for PC Management NIC
  		10b7 7000  10/100 Mini PCI Ethernet Adapter
+ 	9201  3C920B-EMB Integrated Fast Ethernet Controller
+ 	9300  3CSOHO100B-TX  [910-A01]
  	9800  3c980-TX [Fast Etherlink XL Server Adapter]
  		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter
  	9805  3c980-TX 10/100baseTX NIC [Python-T]
  		10b7 1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]
  		10b7 1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]
  		10b7 9805  3c980 10/100baseTX NIC [Python-T]
! 		10f1 2462  Thunder K7 S2462
! 	9900  3C990-TX [Typhoon]
! 	9902  3CR990-TX-95 [Typhoon 56-bit]
! 	9903  3CR990-TX-97 [Typhoon 168-bit]
  	9904  3C990B-TX-M/3C990BSVR [Typhoon2]
+ 		10b7 1000  3CR990B-TX-M [Typhoon2]
+ 		10b7 2000  3CR990BSVR [Typhoon2 Server]
  	9905  3CR990-FX-95/97/95 [Typhon Fiber]
! 		10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]
! 		10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]
! 		10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]
! 		10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]
! 	9908  3CR990SVR95 [Typhoon Server 56-bit]
! 	9909  3CR990SVR97 [Typhoon Server 168-bit]
  	990b  3C990SVR [Typhoon Server]
  10b8  Standard Microsystems Corp [SMC]
  	0005  83C170QF
***************
*** 2207,2213 ****
  	1001  FDC 37C922
  	a011  83C170QF
  	b106  SMC34C90
! 10b9  ALi Corporation. [ALi]
  	0111  C-Media CMI8738/C3DX Audio Device (OEM)
  		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)
  	1435  M1435
--- 2399,2405 ----
  	1001  FDC 37C922
  	a011  83C170QF
  	b106  SMC34C90
! 10b9  ALi Corporation
  	0111  C-Media CMI8738/C3DX Audio Device (OEM)
  		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)
  	1435  M1435
***************
*** 2229,2235 ****
  	1541  M1541
  		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller
  	1543  M1543
! 	1563  M1563 South Bridge supporting HT Technology
  	1621  M1621
  	1631  ALI M1631 PCI North Bridge Aladdin Pro III
  	1632  M1632M Northbridge+Trident
--- 2421,2427 ----
  	1541  M1541
  		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller
  	1543  M1543
! 	1563  M1563 HyperTransport South Bridge
  	1621  M1621
  	1631  ALI M1631 PCI North Bridge Aladdin Pro III
  	1632  M1632M Northbridge+Trident
***************
*** 2238,2246 ****
  	1646  M1646 Northbridge+Trident
  	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]
  	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]
! 	1671  M1671 Super P4 Northbridge [AGP4X,PCI, and SDR/DDR]
! 	1681  M1681 P4 Northbridge [AGP8X,HT, and SDR/DDR]
! 	1687  M1687 K8 Northbridge [AGP8X and HT]
  	3141  M3141
  	3143  M3143
  	3145  M3145
--- 2430,2438 ----
  	1646  M1646 Northbridge+Trident
  	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]
  	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]
! 	1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]
! 	1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]
! 	1687  M1687 K8 Northbridge [AGP8X and HyperTransport]
  	3141  M3141
  	3143  M3143
  	3145  M3145
***************
*** 2261,2274 ****
  	5239  USB 2.0 Controller
  	5243  M1541 PCI to AGP Controller
  	5247  PCI to AGP Controller
! 	5249  HTT to PCI Bridge
  	5251  M5251 P1394 OHCI 1.0 Controller
  	5253  M5253 P1394 OHCI 1.1 Controller
  	5261  M5261 Ethernet Controller
  	5451  M5451 PCI AC-Link Controller Audio Device
  	5453  M5453 PCI AC-Link Controller Modem Device
  	5455  M5455 PCI AC-Link Controller Audio Device
! 	5457  M5457 AC-Link Modem Interface Controller
  	5471  M5471 Memory Stick Controller
  	5473  M5473 SD-MMC Controller
  	7101  M7101 PMU
--- 2453,2472 ----
  	5239  USB 2.0 Controller
  	5243  M1541 PCI to AGP Controller
  	5247  PCI to AGP Controller
! 	5249  M5249 HTT to PCI Bridge
  	5251  M5251 P1394 OHCI 1.0 Controller
  	5253  M5253 P1394 OHCI 1.1 Controller
  	5261  M5261 Ethernet Controller
+ 	5450  Lucent Technologies Soft Modem AMR
  	5451  M5451 PCI AC-Link Controller Audio Device
+ 		1014 0506  ThinkPad R30
  	5453  M5453 PCI AC-Link Controller Modem Device
  	5455  M5455 PCI AC-Link Controller Audio Device
! 	5457  Intel 537 [M5457 AC-Link Modem]
! # Same but more usefull for driver's lookup
! 	5459  SmartLink SmartPCI561 56K Modem
! # SmartLink PCI SoftModem
! 	545a  SmartLink SmartPCI563 56K Modem
  	5471  M5471 Memory Stick Controller
  	5473  M5473 SD-MMC Controller
  	7101  M7101 PMU
***************
*** 2291,2297 ****
  10c6  Rambus Inc.
  10c7  Media Vision
  10c8  Neomagic Corporation
! 	0001  NM2070 [MagicGraph NM2070]
  	0002  NM2090 [MagicGraph 128V]
  	0003  NM2093 [MagicGraph 128ZV]
  	0004  NM2160 [MagicGraph 128XD]
--- 2489,2495 ----
  10c6  Rambus Inc.
  10c7  Media Vision
  10c8  Neomagic Corporation
! 	0001  NM2070 [MagicGraph 128]
  	0002  NM2090 [MagicGraph 128V]
  	0003  NM2093 [MagicGraph 128ZV]
  	0004  NM2160 [MagicGraph 128XD]
***************
*** 2313,2325 ****
  		10f7 830b  MagicGraph 128XD
  		10f7 830d  MagicGraph 128XD
  		10f7 8312  MagicGraph 128XD
! 	0005  [MagicMedia 256AV]
  	0006  NM2360 [MagicMedia 256ZX]
  	0016  NM2380 [MagicMedia 256XL+]
  		10c8 0016  MagicMedia 256XL+
! 	0025  [MagicMedia 256AV+]
! 	0083  [MagicGraph 128ZV Plus]
! 	8005  [MagicMedia 256AV Audio]
  		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery
  		0e11 b126  MagicMedia 256AV Audio Device on Durango
  		1014 00dd  MagicMedia 256AV Audio Device on BlackTip Thinkpad
--- 2511,2524 ----
  		10f7 830b  MagicGraph 128XD
  		10f7 830d  MagicGraph 128XD
  		10f7 8312  MagicGraph 128XD
! 	0005  NM2200 [MagicGraph 256AV]
! 		1014 00dd  ThinkPad 570
  	0006  NM2360 [MagicMedia 256ZX]
  	0016  NM2380 [MagicMedia 256XL+]
  		10c8 0016  MagicMedia 256XL+
! 	0025  NM2230 [MagicGraph 256AV+]
! 	0083  NM2093 [MagicGraph 128ZV+]
! 	8005  NM2200 [MagicMedia 256AV Audio]
  		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery
  		0e11 b126  MagicMedia 256AV Audio Device on Durango
  		1014 00dd  MagicMedia 256AV Audio Device on BlackTip Thinkpad
***************
*** 2332,2338 ****
  		110a 8005  MagicMedia 256AV Audio Device
  		14c0 0004  MagicMedia 256AV Audio Device
  	8006  NM2360 [MagicMedia 256ZX Audio]
! 	8016  NM2360 [MagicMedia 256ZX Audio]
  10c9  Dataexpert Corporation
  10ca  Fujitsu Microelectr., Inc.
  10cb  Omron Corporation
--- 2531,2537 ----
  		110a 8005  MagicMedia 256AV Audio Device
  		14c0 0004  MagicMedia 256AV Audio Device
  	8006  NM2360 [MagicMedia 256ZX Audio]
! 	8016  NM2380 [MagicMedia 256XL+ Audio]
  10c9  Dataexpert Corporation
  10ca  Fujitsu Microelectr., Inc.
  10cb  Omron Corporation
***************
*** 2377,2383 ****
  	0008  NV1 [EDGE 3D]
  	0009  NV1 [EDGE 3D]
  	0010  NV2 [Mutara V08]
! 	0020  NV4 [Riva TnT]
  		1043 0200  V3400 TNT
  		1048 0c18  Erazor II SGRAM
  		1048 0c1b  Erazor II
--- 2576,2582 ----
  	0008  NV1 [EDGE 3D]
  	0009  NV1 [EDGE 3D]
  	0010  NV2 [Mutara V08]
! 	0020  NV4 [RIVA TNT]
  		1043 0200  V3400 TNT
  		1048 0c18  Erazor II SGRAM
  		1048 0c1b  Erazor II
***************
*** 2394,2408 ****
  		1092 4914  Viper V550
  		1092 8225  Viper V550
  		10b4 273d  Velocity 4400
  		10b4 2740  Velocity 4400
  		10de 0020  Riva TNT
  		1102 1015  Graphics Blaster CT6710
  		1102 1016  Graphics Blaster RIVA TNT
! 	0028  NV5 [Riva TnT2]
  		1043 0200  AGP-V3800 SGRAM
  		1043 0201  AGP-V3800 SDRAM
  		1043 0205  PCI-V3800
  		1043 4000  AGP-V3800PRO
  		1092 4804  Viper V770
  		1092 4a00  Viper V770
  		1092 4a02  Viper V770 Ultra
--- 2593,2609 ----
  		1092 4914  Viper V550
  		1092 8225  Viper V550
  		10b4 273d  Velocity 4400
+ 		10b4 273e  Velocity 4400
  		10b4 2740  Velocity 4400
  		10de 0020  Riva TNT
  		1102 1015  Graphics Blaster CT6710
  		1102 1016  Graphics Blaster RIVA TNT
! 	0028  NV5 [RIVA TNT2/TNT2 Pro]
  		1043 0200  AGP-V3800 SGRAM
  		1043 0201  AGP-V3800 SDRAM
  		1043 0205  PCI-V3800
  		1043 4000  AGP-V3800PRO
+ 		1048 0c21  Synergy II
  		1092 4804  Viper V770
  		1092 4a00  Viper V770
  		1092 4a02  Viper V770 Ultra
***************
*** 2414,2420 ****
  		1102 1020  3D Blaster RIVA TNT2
  		1102 1026  3D Blaster RIVA TNT2 Digital
  		14af 5810  Maxi Gamer Xentor
! 	0029  NV5 [Riva TnT2 Ultra]
  		1043 0200  AGP-V3800 Deluxe
  		1043 0201  AGP-V3800 Ultra SDRAM
  		1043 0205  PCI-V3800 Ultra
--- 2615,2621 ----
  		1102 1020  3D Blaster RIVA TNT2
  		1102 1026  3D Blaster RIVA TNT2 Digital
  		14af 5810  Maxi Gamer Xentor
! 	0029  NV5 [RIVA TNT2 Ultra]
  		1043 0200  AGP-V3800 Deluxe
  		1043 0201  AGP-V3800 Ultra SDRAM
  		1043 0205  PCI-V3800 Ultra
***************
*** 2424,2439 ****
  		14af 5820  Maxi Gamer Xentor 32
  	002a  NV5 [Riva TnT2]
  	002b  NV5 [Riva TnT2]
! 	002c  NV6 [Vanta]
  		1043 0200  AGP-V3800 Combat SDRAM
  		1043 0201  AGP-V3800 Combat
  		1092 6820  Viper V730
  		1102 1031  CT6938 VANTA 8MB
  		1102 1034  CT6894 VANTA 16MB
  		14af 5008  Maxi Gamer Phoenix 2
! 	002d  RIVA TNT2 Model 64
  		1043 0200  AGP-V3800M
  		1043 0201  AGP-V3800M
  		1102 1023  CT6892 RIVA TNT2 Value
  		1102 1024  CT6932 RIVA TNT2 Value 32Mb
  		1102 102c  CT6931 RIVA TNT2 Value [Jumper]
--- 2625,2642 ----
  		14af 5820  Maxi Gamer Xentor 32
  	002a  NV5 [Riva TnT2]
  	002b  NV5 [Riva TnT2]
! 	002c  NV6 [Vanta/Vanta LT]
  		1043 0200  AGP-V3800 Combat SDRAM
  		1043 0201  AGP-V3800 Combat
  		1092 6820  Viper V730
  		1102 1031  CT6938 VANTA 8MB
  		1102 1034  CT6894 VANTA 16MB
  		14af 5008  Maxi Gamer Phoenix 2
! 	002d  NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]
  		1043 0200  AGP-V3800M
  		1043 0201  AGP-V3800M
+ 		1048 0c3a  Erazor III LT
+ 		10de 001e  M64 AGP4x
  		1102 1023  CT6892 RIVA TNT2 Value
  		1102 1024  CT6932 RIVA TNT2 Value 32Mb
  		1102 102c  CT6931 RIVA TNT2 Value [Jumper]
***************
*** 2441,2447 ****
  		1554 1041  PixelView RIVA TNT2 M64 32MB
  	002e  NV6 [Vanta]
  	002f  NV6 [Vanta]
! 	00a0  NV5 [Riva TNT2]
  		14af 5810  Maxi Gamer Xentor
  	0100  NV10 [GeForce 256 SDR]
  		1043 0200  AGP-V6600 SGRAM
--- 2644,2662 ----
  		1554 1041  PixelView RIVA TNT2 M64 32MB
  	002e  NV6 [Vanta]
  	002f  NV6 [Vanta]
! 	0060  nForce2 ISA Bridge
! 		1043 80ad  A7N8X Mainboard
! 	0064  nForce2 SMBus (MCP)
! 	0065  nForce2 IDE
! 	0066  nForce2 Ethernet Controller
! 	0067  nForce2 USB Controller
! 		1043 0c11  A7N8X Mainboard
! 	0068  nForce2 USB Controller
! 		1043 0c11  A7N8X Mainboard
! 	006a  nForce2 AC97 Audio Controler (MCP)
! 	006b  nForce MultiMedia audio [Via VT82C686B]
! 	006e  nForce2 FireWire (IEEE 1394) Controller
! 	00a0  NV5 [Aladdin TNT2]
  		14af 5810  Maxi Gamer Xentor
  	0100  NV10 [GeForce 256 SDR]
  		1043 0200  AGP-V6600 SGRAM
***************
*** 2450,2489 ****
  		1043 4009  AGP-V6600 SDRAM
  		1102 102d  CT6941 GeForce 256
  		14af 5022  3D Prophet SE
! 	0101  NV10 [GeForce 256 DDR]
  		1043 0202  AGP-V6800 DDR
  		1043 400a  AGP-V6800 DDR SGRAM
  		1043 400b  AGP-V6800 DDR SDRAM
  		1102 102e  CT6971 GeForce 256 DDR
  		14af 5021  3D Prophet DDR-DVI
! 	0103  NV10 [Quadro]
! 	0110  NV11 [GeForce2 MX]
  		1043 4015  AGP-V7100 Pro
  		1043 4031  V7100 Pro with TV output
  		14af 7103  3D Prophet II MX Dual-Display
! 	0111  NV11 [GeForce2 MX DDR]
  	0112  NV11 [GeForce2 Go]
! 	0113  NV11 [GeForce2 MXR]
! 	0150  NV15 [GeForce2 GTS]
  		1043 4016  V7700 AGP Video Card
  		107d 2840  WinFast GeForce2 GTS with TV output
  		1462 8831  Creative GeForce2 Pro
! 	0151  NV15 [GeForce2 Ti]
! 	0152  NV15 [GeForce2 Ultra, Bladerunner]
  		1048 0c56  GLADIAC Ultra
! 	0153  NV15 [Quadro2 Pro]
! 	0170  NV17 [GeForce4 MX460]
! 	0171  NV17 [GeForce4 MX440]
! 	0172  NV17 [GeForce4 MX420]
! 	0173  NV1x
  	0174  NV17 [GeForce4 440 Go]
  	0175  NV17 [GeForce4 420 Go]
  	0176  NV17 [GeForce4 420 Go 32M]
! 	0178  Quadro4 500XGL
  	0179  NV17 [GeForce4 440 Go 64M]
! 	017a  Quadro4 200/400NVS
! 	017b  Quadro4 550XGL
! 	017c  Quadro4 550 GoGL
  	01a0  NV15 [GeForce2 - nForce GPU]
  	01a4  nForce CPU bridge
  	01ab  nForce 420 Memory Controller (DDR)
--- 2665,2717 ----
  		1043 4009  AGP-V6600 SDRAM
  		1102 102d  CT6941 GeForce 256
  		14af 5022  3D Prophet SE
! 	0101  NV10DDR [GeForce 256 DDR]
  		1043 0202  AGP-V6800 DDR
  		1043 400a  AGP-V6800 DDR SGRAM
  		1043 400b  AGP-V6800 DDR SDRAM
  		1102 102e  CT6971 GeForce 256 DDR
  		14af 5021  3D Prophet DDR-DVI
! 	0103  NV10GL [Quadro]
! 	0110  NV11 [GeForce2 MX/MX 400]
  		1043 4015  AGP-V7100 Pro
  		1043 4031  V7100 Pro with TV output
+ 		1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]
+ 		14af 7102  3D Prophet II MX
  		14af 7103  3D Prophet II MX Dual-Display
! 	0111  NV11DDR [GeForce2 MX 100 DDR/200 DDR]
  	0112  NV11 [GeForce2 Go]
! 	0113  NV11GL [Quadro2 MXR/EX]
! 	0150  NV15 [GeForce2 GTS/Pro]
  		1043 4016  V7700 AGP Video Card
  		107d 2840  WinFast GeForce2 GTS with TV output
  		1462 8831  Creative GeForce2 Pro
! 	0151  NV15DDR [GeForce2 Ti]
! 		1043 405f  V7700Ti
! 	0152  NV15BR [GeForce2 Ultra, Bladerunner]
  		1048 0c56  GLADIAC Ultra
! 	0153  NV15GL [Quadro2 Pro]
! 	0170  NV17 [GeForce4 MX 460]
! 	0171  NV17 [GeForce4 MX 440]
! 		10b0 0002  Gainward Pro/600 TV
! 		1462 8661  G4MX440-VTP
! 		1462 8730  MX440SES-T (MS-8873)
! 		147b 8f00  Abit Siluro GeForce4MX440
! 	0172  NV17 [GeForce4 MX 420]
! 	0173  NV17 [GeForce4 MX 440-SE]
  	0174  NV17 [GeForce4 440 Go]
  	0175  NV17 [GeForce4 420 Go]
  	0176  NV17 [GeForce4 420 Go 32M]
! 	0178  NV17GL [Quadro4 550 XGL]
  	0179  NV17 [GeForce4 440 Go 64M]
! 	017a  NV17GL [Quadro4 200/400 NVS]
! 	017b  NV17GL [Quadro4 550 XGL]
! 	017c  NV17GL [Quadro4 550 GoGL]
! 	0181  NV18 [GeForce4 MX 440 AGP 8x]
! 	0182  NV18 [GeForce4 MX 440SE AGP 8x]
! 	0183  NV18 [GeForce4 MX 420 AGP 8x]
! 	0188  NV18GL [Quadro4 580 XGL]
! 	018a  NV18GL [Quadro4 NVS]
! 	018b  NV18GL [Quadro4 380 XGL]
  	01a0  NV15 [GeForce2 - nForce GPU]
  	01a4  nForce CPU bridge
  	01ab  nForce 420 Memory Controller (DDR)
***************
*** 2495,2525 ****
  	01b7  nForce AGP to PCI Bridge
  	01b8  nForce PCI-to-PCI bridge
  	01bc  nForce IDE
  	0200  NV20 [GeForce3]
  		1043 402f  AGP-V8200 DDR
! 	0201  NV20 [GeForce3 Ti200]
! 	0202  NV20 [GeForce3 Ti500]
  		1043 405b  V8200 T5
! 	0203  NV20 [Quadro DCC]
! 	0250  NV25 [GeForce4 Ti4600]
! 	0251  NV25 [GeForce4 Ti4400]
! 	0253  NV25 [GeForce4 Ti4200]
! 	0258  Quadro4 900XGL
! 	0259  Quadro4 750XGL
! 	025b  Quadro4 700XGL
  10df  Emulex Corporation
- 	10df  Light Pulse Fibre Channel Adapter
  	1ae5  LP6000 Fibre Channel Host Adapter
  	f700  LP7000 Fibre Channel Host Adapter
  	f800  LP8000 Fibre Channel Host Adapter
  	f900  LP9000 Fibre Channel Host Adapter
  10e0  Integrated Micro Solutions Inc.
  	5026  IMS5026/27/28
  	5027  IMS5027
  	5028  IMS5028
  	8849  IMS8849
  	8853  IMS8853
! 	9128  IMS9129 [Twin turbo 128]
  10e1  Tekram Technology Co.,Ltd.
  	0391  TRM-S1040
  		10e1 0391  DC-315U SCSI-3 Host Adapter
--- 2723,2776 ----
  	01b7  nForce AGP to PCI Bridge
  	01b8  nForce PCI-to-PCI bridge
  	01bc  nForce IDE
+ 	01c1  Intel 537 [nForce MC97 Modem]
+ 	01c2  nForce USB Controller
+ 	01c3  nForce Ethernet Controller
+ 	01e8  nForce2 AGP
+ 	01f0  NV18 [GeForce4 MX - nForce GPU]
  	0200  NV20 [GeForce3]
  		1043 402f  AGP-V8200 DDR
! 	0201  NV20 [GeForce3 Ti 200]
! 	0202  NV20 [GeForce3 Ti 500]
  		1043 405b  V8200 T5
! 		1545 002f  Xtasy 6964
! 	0203  NV20DCC [Quadro DCC]
! 	0250  NV25 [GeForce4 Ti 4600]
! 	0251  NV25 [GeForce4 Ti 4400]
! 	0252  NV25 [GeForce4 Ti]
! 	0253  NV25 [GeForce4 Ti 4200]
! 		107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)
! 		147b 8f09  Siluro (Dual VGA/TV-out/DVI)
! 	0258  NV25GL [Quadro4 900 XGL]
! 	0259  NV25GL [Quadro4 750 XGL]
! 	025b  NV25GL [Quadro4 700 XGL]
! 	0280  NV28 [GeForce4 Ti 4800]
! 	0281  NV28 [GeForce4 Ti 4200 AGP 8x]
! 	0282  NV28 [GeForce4 Ti 4800 SE]
! 	0286  NV28 [GeForce4 Ti 4200 Go AGP 8x]
! 	0288  NV28GL [Quadro4 980 XGL]
! 	0289  NV28GL [Quadro4 780 XGL]
! 	0300  NV30 [GeForce FX]
! 	0301  NV30 [GeForce FX 5800 Ultra]
! 	0302  NV30 [GeForce FX 5800]
! 	0308  NV30GL [Quadro FX 2000]
! 	0309  NV30GL [Quadro FX 1000]
  10df  Emulex Corporation
  	1ae5  LP6000 Fibre Channel Host Adapter
+ 	f085  LP850 Fibre Channel Adapter
+ 	f095  LP952 Fibre Channel Adapter
+ 	f098  LP982 Fibre Channel Adapter
  	f700  LP7000 Fibre Channel Host Adapter
  	f800  LP8000 Fibre Channel Host Adapter
  	f900  LP9000 Fibre Channel Host Adapter
+ 	f980  LP9802 Fibre Channel Adapter
  10e0  Integrated Micro Solutions Inc.
  	5026  IMS5026/27/28
  	5027  IMS5027
  	5028  IMS5028
  	8849  IMS8849
  	8853  IMS8853
! 	9128  IMS9128 [Twin turbo 128]
  10e1  Tekram Technology Co.,Ltd.
  	0391  TRM-S1040
  		10e1 0391  DC-315U SCSI-3 Host Adapter
***************
*** 2529,2534 ****
--- 2780,2786 ----
  10e3  Tundra Semiconductor Corp.
  	0000  CA91C042 [Universe]
  	0860  CA91C860 [QSpan]
+ 	0862  CA91C862A [QSpan-II]
  10e4  Tandem Computers
  10e5  Micro Industries Corporation
  10e6  Gainbery Computer Products Inc.
***************
*** 2558,2563 ****
--- 2810,2816 ----
  	2010  CyberPro 2000A
  	5000  CyberPro 5000
  	5050  CyberPro 5050
+ 	5202  CyberPro 5202
  10eb  Artists Graphics
  	0101  3GA
  	8111  Twist3 Frame Grabber
***************
*** 2580,2585 ****
--- 2833,2839 ----
  		1186 1300  DFE-538TX
  		1186 1320  SN5200
  		1186 8139  DRN-32TX
+ 		11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter
  		1259 2500  AT-2500TX
  		1259 2503  AT-2500TX/ACPI
  		1429 d010  ND010
***************
*** 2595,2603 ****
  		8e2e 7100  KF-230TX/2
  		a0a0 0007  ALN-325C
  	8169  RTL-8169
  10ed  Ascii Corporation
  	7310  V7310
! 10ee  Xilinx, Inc.
  	3fc0  RME Digi96
  	3fc1  RME Digi96/8
  	3fc2  RME Digi96/8 Pro
--- 2849,2859 ----
  		8e2e 7100  KF-230TX/2
  		a0a0 0007  ALN-325C
  	8169  RTL-8169
+ 		1371 434e  ProG-2000L
+ 	8197  SmartLAN56 56K Modem
  10ed  Ascii Corporation
  	7310  V7310
! 10ee  Xilinx Corporation
  	3fc0  RME Digi96
  	3fc1  RME Digi96/8
  	3fc2  RME Digi96/8 Pro
***************
*** 2620,2625 ****
--- 2876,2882 ----
  10fa  Truevision
  	000c  TARGA 1000
  10fb  Thesys Gesellschaft f�r Mikroelektronik mbH
+ 	186f  TH 6255
  10fc  I-O Data Device, Inc.
  # What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives
  	0003  Cardbus IDE Controller
***************
*** 2651,2664 ****
  		1102 8040  CT4760 SBLive!
  		1102 8051  CT4850 SBLive! Value
  		1102 8061  SBLive! Player 5.1
  	0004  SB Audigy
  		1102 0051  SB0090 Audigy Player
  	4001  SB Audigy FireWire Port
  	7002  SB Live! MIDI/Game Port
  		1102 0020  Gameport Joystick
  	7003  SB Audigy MIDI/Game port
! 		1102 0040  SB Audigy MIDI/Gameport
! 	8938  ES1371
  1103  Triones Technologies, Inc.
  	0003  HPT343
  # Revisions: 01=HPT366, 03=HPT370, 04=HPT370A, 05=HPT372
--- 2908,2928 ----
  		1102 8040  CT4760 SBLive!
  		1102 8051  CT4850 SBLive! Value
  		1102 8061  SBLive! Player 5.1
+ 		1102 8064  SB Live! 5.1 Model SB0100
+ 		1102 8065  SBLive! 5.1 Digital Model SB0220
  	0004  SB Audigy
  		1102 0051  SB0090 Audigy Player
+ 		1102 0053  SB0090 Audigy Player/OEM
+ 	0006  [SB Live! Value] EMU10k1X
  	4001  SB Audigy FireWire Port
+ 		1102 0010  SB Audigy FireWire Port
  	7002  SB Live! MIDI/Game Port
  		1102 0020  Gameport Joystick
  	7003  SB Audigy MIDI/Game port
! 		1102 0040  SB Audigy MIDI/Game Port
! 	7004  [SB Live! Value] Input device controller
! 	8064  SB0100 [SBLive! 5.1 OEM]
! 	8938  Ectiva EV1938
  1103  Triones Technologies, Inc.
  	0003  HPT343
  # Revisions: 01=HPT366, 03=HPT370, 04=HPT370A, 05=HPT372
***************
*** 2669,2691 ****
  	0006  HPT302
  	0007  HPT371
  	0008  HPT374
  1104  RasterOps Corp.
  1105  Sigma Designs, Inc.
  	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
  	8300  REALmagic Hollywood Plus DVD Decoder
  	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder
  1106  VIA Technologies, Inc.
  	0130  VT6305 1394.A Controller
  	0305  VT8363/8365 [KT133/KM133]
  		1043 8033  A7V Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
  		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard
  	0391  VT8371 [KX133]
  	0501  VT8501 [Apollo MVP4]
  	0505  VT82C505
! 	0561  VT82C561
! 	0571  VT82C586B PIPC Bus Master IDE
! 		1458 5002 GA-7VAX Mainboard
  	0576  VT82C576 3V [Apollo Master]
  	0585  VT82C585VP [Apollo VP1/VPX]
  	0586  VT82C586/A/B PCI-to-ISA [Apollo VP]
--- 2933,2964 ----
  	0006  HPT302
  	0007  HPT371
  	0008  HPT374
+ 	0009  HPT372N
  1104  RasterOps Corp.
  1105  Sigma Designs, Inc.
  	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
  	8300  REALmagic Hollywood Plus DVD Decoder
  	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder
  1106  VIA Technologies, Inc.
+ 	0102  Embedded VIA Ethernet Controller
  	0130  VT6305 1394.A Controller
  	0305  VT8363/8365 [KT133/KM133]
  		1043 8033  A7V Mainboard
+ 		1043 803e  A7V-E Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
  		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard
  	0391  VT8371 [KX133]
  	0501  VT8501 [Apollo MVP4]
  	0505  VT82C505
! # Shares chip with :0576. The VT82C576M has :1571 instead of :0561.
! 	0561  VT82C576MV
! 	0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
! 		1019 0985  P6VXA Motherboard
! 		1043 8052  VT8233A Bus Master ATA100/66/33 IDE
! 		1043 808c  A7V8X motherboard
! 		1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
! 		1179 0001  Magnia Z310
! 		1458 5002  GA-7VAX Mainboard
  	0576  VT82C576 3V [Apollo Master]
  	0585  VT82C585VP [Apollo VP1/VPX]
  	0586  VT82C586/A/B PCI-to-ISA [Apollo VP]
***************
*** 2698,2721 ****
  	0598  VT82C598 [Apollo MVP3]
  	0601  VT8601 [Apollo ProMedia]
  	0605  VT8605 [ProSavage PM133]
  	0680  VT82C680 [Apollo P6]
  	0686  VT82C686 [Apollo Super South]
  		1043 8033  A7V Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
  		1106 0000  VT82C686/A PCI to ISA Bridge
  		1106 0686  VT82C686/A PCI to ISA Bridge
  	0691  VT82C693A/694x [Apollo PRO133x]
  		1458 0691  VT82C691 Apollo Pro System Controller
  	0693  VT82C693 [Apollo Pro Plus]
  	0698  VT82C693A [Apollo Pro133 AGP]
  	0926  VT82C926 [Amazon]
  	1000  VT82C570MV
  	1106  VT82C570MV
! 	1571  VT82C416MV
  	1595  VT82C595/97 [Apollo VP2/97]
  	3038  USB
  		0925 1234  USB Controller
! 		1234 0925  MVP3 USB Controller
  	3040  VT82C586B ACPI
  	3043  VT86C100A [Rhine]
  		10bd 0000  VT86C100A Fast Ethernet Adapter
--- 2971,3005 ----
  	0598  VT82C598 [Apollo MVP3]
  	0601  VT8601 [Apollo ProMedia]
  	0605  VT8605 [ProSavage PM133]
+ 		1043 802c  CUV4X mainboard
  	0680  VT82C680 [Apollo P6]
  	0686  VT82C686 [Apollo Super South]
+ 		1019 0985  P6VXA Motherboard
+ 		1043 802c  CUV4X mainboard
  		1043 8033  A7V Mainboard
+ 		1043 803e  A7V-E Mainboard
+ 		1043 8040  A7M266 Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
  		1106 0000  VT82C686/A PCI to ISA Bridge
  		1106 0686  VT82C686/A PCI to ISA Bridge
+ 		1179 0001  Magnia Z310
+ 		147b a702  KG7-Lite Mainboard
  	0691  VT82C693A/694x [Apollo PRO133x]
+ 		1019 0985  P6VXA Motherboard
+ 		1179 0001  Magnia Z310
  		1458 0691  VT82C691 Apollo Pro System Controller
  	0693  VT82C693 [Apollo Pro Plus]
  	0698  VT82C693A [Apollo Pro133 AGP]
  	0926  VT82C926 [Amazon]
  	1000  VT82C570MV
  	1106  VT82C570MV
! 	1571  VT82C576M/VT82C586
  	1595  VT82C595/97 [Apollo VP2/97]
  	3038  USB
  		0925 1234  USB Controller
! 		1019 0985  P6VXA Motherboard
! 		1043 808c  A7V8X motherboard
! 		1179 0001  Magnia Z310
  	3040  VT82C586B ACPI
  	3043  VT86C100A [Rhine]
  		10bd 0000  VT86C100A Fast Ethernet Adapter
***************
*** 2725,2765 ****
  	3050  VT82C596 Power Management
  	3051  VT82C596 Power Management
  	3057  VT82C686 [Apollo Super ACPI]
  		1043 8033  A7V Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
  	3058  VT82C686 AC97 Audio Controller
  		0e11 b194  Soundmax integrated digital audio
  		1106 4511  Onboard Audio on EP7KXA
  		1458 7600  Onboard Audio
  		1462 3091  MS-6309 Onboard Audio
  		15dd 7609  Onboard Audio
! 	3059  VT8233 AC97 Audio Controller
! 		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650) 
  	3065  VT6102 [Rhine-II]
  		1186 1400  DFE-530TX rev A
  		1186 1401  DFE-530TX rev B
! 	3068  AC97 Modem Controller
  	3074  VT8233 PCI to ISA Bridge
  	3091  VT8633 [Apollo Pro266]
! 	3099  VT8367 [KT266]
! 		1043 8064  A7V266-E
! 		1043 807f  A7V333
  	3101  VT8653 Host Bridge
  	3102  VT8662 Host Bridge
  	3103  VT8615 Host Bridge
  	3104  USB 2.0
  		1458 5004  GA-7VAX Mainboard
  	3109  VT8233C PCI to ISA Bridge
  	3112  VT8361 [KLE133] Host Bridge
  	3128  VT8753 [P4X266 AGP]
  	3133  VT3133 Host Bridge
  	3147  VT8233A ISA Bridge
  	3148  P4M266 Host Bridge
  	3156  P/KN266 Host Bridge
! 	3177  VT8233A ISA Bridge
! 		1458 5001 GA-7VAX Mainboard
  	3189  VT8377 [KT400 AGP] Host Bridge
! 		1458 5000 GA-7VAX Mainboard
  	5030  VT82C596 ACPI [Apollo PRO]
  	6100  VT85C100A [Rhine II]
  	8231  VT8231 [PCI-to-ISA Bridge]
--- 3009,3068 ----
  	3050  VT82C596 Power Management
  	3051  VT82C596 Power Management
  	3057  VT82C686 [Apollo Super ACPI]
+ 		1019 0985  P6VXA Motherboard
  		1043 8033  A7V Mainboard
+ 		1043 803e  A7V-E Mainboard
+ 		1043 8040  A7M266 Mainboard
  		1043 8042  A7V133/A7V133-C Mainboard
+ 		1179 0001  Magnia Z310
  	3058  VT82C686 AC97 Audio Controller
  		0e11 b194  Soundmax integrated digital audio
+ 		1019 0985  P6VXA Motherboard
  		1106 4511  Onboard Audio on EP7KXA
  		1458 7600  Onboard Audio
  		1462 3091  MS-6309 Onboard Audio
  		15dd 7609  Onboard Audio
! 	3059  VT8233/A/8235 AC97 Audio Controller
! 		1043 8095  A7V8X Motherboard (Realtek ALC650 codec)
! 		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)
  	3065  VT6102 [Rhine-II]
+ 		1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235
  		1186 1400  DFE-530TX rev A
  		1186 1401  DFE-530TX rev B
! 		13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)
! 	3068  Intel 537 [AC97 Modem]
  	3074  VT8233 PCI to ISA Bridge
+ 		1043 8052  VT8233A
  	3091  VT8633 [Apollo Pro266]
! 	3099  VT8366/A/7 [Apollo KT266/A/333]
! 		1043 8064  A7V266-E Mainboard
! 		1043 807f  A7V333 Mainboard
  	3101  VT8653 Host Bridge
  	3102  VT8662 Host Bridge
  	3103  VT8615 Host Bridge
  	3104  USB 2.0
+ 		1043 808c  A7V8X motherboard
  		1458 5004  GA-7VAX Mainboard
+ 	3106  VT6105 [Rhine-III]
  	3109  VT8233C PCI to ISA Bridge
  	3112  VT8361 [KLE133] Host Bridge
+ 	3116  VT8375 [KM266/KL266] Host Bridge
+ # found on EPIA M6000/9000 mainboard
+ 	3122  VT8623 [Apollo CLE266] integrated CastleRock graphics
+ # found on EPIA M6000/9000 mainboard
+ 	3123  VT8623 [Apollo CLE266]
  	3128  VT8753 [P4X266 AGP]
  	3133  VT3133 Host Bridge
  	3147  VT8233A ISA Bridge
  	3148  P4M266 Host Bridge
  	3156  P/KN266 Host Bridge
! 	3168  VT8374 P4X400 Host Controller/AGP Bridge
! 	3177  VT8235 ISA Bridge
! 		1043 808c  A7V8X motherboard
! 		1458 5001  GA-7VAX Mainboard
  	3189  VT8377 [KT400 AGP] Host Bridge
! 		1043 807f  A7V8X motherboard
! 		1458 5000  GA-7VAX Mainboard
  	5030  VT82C596 ACPI [Apollo PRO]
  	6100  VT85C100A [Rhine II]
  	8231  VT8231 [PCI-to-ISA Bridge]
***************
*** 2770,2781 ****
  	8596  VT82C596 [Apollo PRO AGP]
  	8597  VT82C597 [Apollo VP3 AGP]
  	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]
  	8601  VT8601 [Apollo ProMedia AGP]
  	8605  VT8605 [PM133 AGP]
  	8691  VT82C691 [Apollo Pro]
  	8693  VT82C693 [Apollo Pro Plus] PCI Bridge
  	b091  VT8633 [Apollo Pro266 AGP]
! 	b099  VT8367 [KT333 AGP]
  	b101  VT8653 AGP Bridge
  	b102  VT8362 AGP Bridge
  	b103  VT8615 AGP Bridge
--- 3073,3085 ----
  	8596  VT82C596 [Apollo PRO AGP]
  	8597  VT82C597 [Apollo VP3 AGP]
  	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]
+ 		1019 0985  P6VXA Motherboard
  	8601  VT8601 [Apollo ProMedia AGP]
  	8605  VT8605 [PM133 AGP]
  	8691  VT82C691 [Apollo Pro]
  	8693  VT82C693 [Apollo Pro Plus] PCI Bridge
  	b091  VT8633 [Apollo Pro266 AGP]
! 	b099  VT8366/A/7 [Apollo KT266/A/333 AGP]
  	b101  VT8653 AGP Bridge
  	b102  VT8362 AGP Bridge
  	b103  VT8615 AGP Bridge
***************
*** 2797,2802 ****
--- 3101,3112 ----
  110a  Siemens Nixdorf AG
  	0002  Pirahna 2-port
  	0005  Tulip controller, power management, switch extender
+ 	0006  FSC PINC (I/O-APIC)
+ 	0015  FSC Multiprocessor Interrupt Controller
+ 	001d  FSC Copernicus Management Controller
+ 	007b  FSC Remote Service Controller, mailbox device
+ 	007c  FSC Remote Service Controller, shared memory device
+ 	007d  FSC Remote Service Controller, SMIC device
  	2102  DSCC4 WAN adapter
  	4942  FPGA I-Bus Tracer for MBD
  	6120  SZB6120
***************
*** 2811,2818 ****
  	6037  Firepower Powerized SMP I/O ASIC
  	6073  Firepower Powerized SMP I/O ASIC
  1111  Santa Cruz Operation
! # DJ: Some people say that 0x1112 is Rockwell International
! 1112  RNS - Div. of Meret Communications Inc
  	2200  FDDI Adapter
  	2300  Fast Ethernet Adapter
  	2340  4 Port Fast Ethernet Adapter
--- 3121,3128 ----
  	6037  Firepower Powerized SMP I/O ASIC
  	6073  Firepower Powerized SMP I/O ASIC
  1111  Santa Cruz Operation
! # Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom
! 1112  Osicom Technologies Inc
  	2200  FDDI Adapter
  	2300  Fast Ethernet Adapter
  	2340  4 Port Fast Ethernet Adapter
***************
*** 2822,2827 ****
--- 3132,3138 ----
  		103c 1207  EN-1207D Fast Ethernet Adapter
  		1113 1211  EN-1207D Fast Ethernet Adapter
  	1216  EN-1216 Ethernet Adapter
+ 		111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?]
  	1217  EN-1217 Ethernet Adapter
  	5105  10Mbps Network card
  	9211  EN-1207D Fast Ethernet Adapter
***************
*** 2962,2970 ****
--- 3273,3286 ----
  	0001  MVC IM-PCI Video frame grabber/processor
  1130  Computervision
  1131  Philips Semiconductors
+ 	1561  USB 1.1 Host Controller
+ 	1562  USB 2.0 Host Controller
+ 	3400  SmartPCI56(UCB1500) 56K Modem
  	7130  SAA7130 Video Broadcast Decoder
+ 	7133  SAA7133 Audio+video broadcast decoder
  # PCI audio and video broadcast decoder (http://www.semiconductors.philips.com/pip/saa7134hl)
  	7134  SAA7134
+ 	7135  SAA7135 Audio+video broadcast decoder
  	7145  SAA7145
  	7146  SAA7146
  		114b 2003  DVRaptor Video Edit/Capture Card
***************
*** 2993,2998 ****
--- 3309,3315 ----
  		1133 e004  DIVA 2.0 U
  	e005  DIVA LOW
  		1133 e005  DIVA 2.01 S/T
+ 	e00b  DIVA 2.02
  	e010  DIVA Server BRI-2M
  		1133 e010  DIVA Server BRI-2M
  	e012  DIVA Server BRI-8M
***************
*** 3041,3055 ****
  1144  Cincinnati Milacron
  	0001  Noservo controller
  1145  Workbit Corporation
- 	f007  NinjaSCSI-32 KME
  	8007  NinjaSCSI-32 Workbit
  	f010  NinjaSCSI-32 Workbit
  	f012  NinjaSCSI-32 Logitec
  	f013  NinjaSCSI-32 Logitec
  	f015  NinjaSCSI-32 Melco
  1146  Force Computers
  1147  Interface Corp
! 1148  SysKonnect
  	4000  FDDI Adapter
  		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC
  		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC
--- 3358,3372 ----
  1144  Cincinnati Milacron
  	0001  Noservo controller
  1145  Workbit Corporation
  	8007  NinjaSCSI-32 Workbit
+ 	f007  NinjaSCSI-32 KME
  	f010  NinjaSCSI-32 Workbit
  	f012  NinjaSCSI-32 Logitec
  	f013  NinjaSCSI-32 Logitec
  	f015  NinjaSCSI-32 Melco
  1146  Force Computers
  1147  Interface Corp
! 1148  Syskonnect (Schneider & Koch)
  	4000  FDDI Adapter
  		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC
  		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC
***************
*** 3067,3095 ****
  		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)
  		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)
  	4200  Token Ring adapter
! 	4300  SK-98xx Gigabit Ethernet Server Adapter
! 		1148 9821  SK-9821 Gigabit Ethernet 1000Base-T Server Adapter
! 		1148 9822  SK-9822 Gigabit Ethernet 1000Base-T Dual Port Server Adapter
! 		1148 9841  SK-9841 Gigabit Ethernet 1000Base-LX Server Adapter
! 		1148 9842  SK-9842 Gigabit Ethernet 1000Base-LX Dual Port Server Adapter
! 		1148 9843  SK-9843 Gigabit Ethernet 1000Base-SX Server Adapter
! 		1148 9844  SK-9844 Gigabit Ethernet 1000Base-SX Dual Port Server Adapter
! 		1148 9861  SK-9861 Gigabit Ethernet 1000Base-SX Server Adapter
! 		1148 9862  SK-9862 Gigabit Ethernet 1000Base-SX Dual Port Server Adapter
! 		1148 9871  SK-9871 Gigabit Ethernet 1000Base-ZX Server Adapter
! 		1148 9872  SK-9872 Gigabit Ethernet 1000Base-ZX Dual Port Server Adapter
  	4320  SK-98xx Gigabit Ethernet Server Adapter
- 		1148 9521  SK-9521 10/100/1000Base-T Adapter
  		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
  		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
  		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
  	4400  Gigabit Ethernet
  1149  Win System Corporation
  114a  VMIC
  	5579  VMIPCI-5579 (Reflective Memory Card)
  	7587  VMIVME-7587
  114b  Canopus Co., Ltd
  114c  Annabooks
--- 3384,3420 ----
  		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)
  		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)
  	4200  Token Ring adapter
! 	4300  Gigabit Ethernet
! 		1148 9821  SK-9821 (1000Base-T single link)
! 		1148 9822  SK-9822 (1000Base-T dual link)
! 		1148 9841  SK-9841 (1000Base-LX single link)
! 		1148 9842  SK-9842 (1000Base-LX dual link)
! 		1148 9843  SK-9843 (1000Base-SX single link)
! 		1148 9844  SK-9844 (1000Base-SX dual link)
! 		1148 9861  SK-9861 (1000Base-SX VF45 single link)
! 		1148 9862  SK-9862 (1000Base-SX VF45 dual link)
! # Information got from SysKonnekt
! 		1148 9871  SK-9871 (1000Base-ZX single link)
! # Information got from SysKonnekt
! 		1148 9872  SK-9872 (1000Base-ZX dual link)
! 		1259 2970  AT-2970SX [Allied Telesyn]
! 		1259 2972  AT-2970T [Allied Telesyn]
! 		1259 2975  AT-2970SX [Allied Telesyn]
! 		1259 2977  AT-2970T [Allied Telesyn]
  	4320  SK-98xx Gigabit Ethernet Server Adapter
  		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
  		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
  		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
  		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
+ 		1148 9521  SK-9521 10/100/1000Base-T Adapter
  	4400  Gigabit Ethernet
  1149  Win System Corporation
  114a  VMIC
  	5579  VMIPCI-5579 (Reflective Memory Card)
+ 	5587  VMIPCI-5587 (Reflective Memory Card)
+ 	6504  VMIC PCI 7755 FPGA
  	7587  VMIVME-7587
  114b  Canopus Co., Ltd
  114c  Annabooks
***************
*** 3200,3210 ****
--- 3525,3537 ----
  	0001  Motion TPEG Recorder/Player with audio
  1166  ServerWorks
  	0005  CNB20-LE Host Bridge
+ 	0006  CNB20HE Host Bridge
  	0007  CNB20-LE Host Bridge
  	0008  CNB20HE Host Bridge
  	0009  CNB20LE Host Bridge
  	0010  CIOB30
  	0011  CMIC-HE
+ 	0012  CMIC-LE
  	0013  CNB20-HE Host Bridge
  	0014  CNB20-HE Host Bridge
  	0015  CMIC-GC Host Bridge
***************
*** 3270,3276 ****
--- 3597,3605 ----
  	0465  RL5c465
  	0466  RL5c466
  	0475  RL5c475
+ 		144d c006  vpr Matrix 170B4 CardBus bridge
  	0476  RL5c476 II
+ 		1014 0185  ThinkPad A/T/X Series
  		104d 80df  Vaio PCG-FX403
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	0477  RL5c477
***************
*** 3279,3285 ****
--- 3608,3616 ----
  	0522  R5C522 IEEE 1394 Controller
  		1014 01cf  ThinkPad A30p (2653-64G)
  	0551  R5C551 IEEE 1394 Controller
+ 		144d c006  vpr Matrix 170B4
  	0552  R5C552 IEEE 1394 Controller
+ 		1014 0511  ThinkPad A/T/X Series
  1181  Telmatics International
  1183  Fujikura Ltd
  1184  Forks Inc
***************
*** 3371,3377 ****
  	4240  AMCC S933Q Intelligent Serial Card
  11aa  Actel
  11ab  Galileo Technology Ltd.
! 	0146  GT-64010
  	4801  GT-48001
  	f003  GT-64010 Primary Image Piranha Image Generator
  11ac  Canon Information Systems Research Aust.
--- 3702,3710 ----
  	4240  AMCC S933Q Intelligent Serial Card
  11aa  Actel
  11ab  Galileo Technology Ltd.
! 	0146  GT-64010/64010A System Controller
! 	4611  GT-64115 System Controller
! 	4620  GT-64120/64120A/64121A System Controller
  	4801  GT-48001
  	f003  GT-64010 Primary Image Piranha Image Generator
  11ac  Canon Information Systems Research Aust.
***************
*** 3467,3472 ****
--- 3800,3806 ----
  	0443  LT WinModem
  	0444  LT WinModem
  	0445  LT WinModem
+ 		8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)
  	0446  LT WinModem
  	0447  LT WinModem
  	0448  WinModem 56k
***************
*** 3496,3501 ****
--- 3830,3836 ----
  	044e  LT WinModem
  	044f  V90 WildWire Modem
  	0450  LT WinModem
+ 		144f 4005  Magnia SG20
  	0451  LT WinModem
  	0452  LT WinModem
  	0453  LT WinModem
***************
*** 3506,3520 ****
  	0458  LT WinModem
  	0459  LT WinModem
  	045a  LT WinModem
  	0461  V90 WildWire Modem
  	0462  V90 WildWire Modem
  	0480  Venus Modem (V90, 56KFlex)
  	5801  USB
  	5802  USS-312 USB Controller
  	5811  FW323
  		dead 0800  FireWire Host Bus Adapter
  11c2  Sand Microelectronics
! 11c3  NEC Corp
  11c4  Document Technologies, Inc
  11c5  Shiva Corporation
  11c6  Dainippon Screen Mfg. Co. Ltd
--- 3841,3858 ----
  	0458  LT WinModem
  	0459  LT WinModem
  	045a  LT WinModem
+ 	045c  LT WinModem
  	0461  V90 WildWire Modem
  	0462  V90 WildWire Modem
  	0480  Venus Modem (V90, 56KFlex)
  	5801  USB
  	5802  USS-312 USB Controller
+ # 4 port PCI USB Controller made by Agere (formely Lucent)
+ 	5803  USS-344S USB Controller
  	5811  FW323
  		dead 0800  FireWire Host Bus Adapter
  11c2  Sand Microelectronics
! 11c3  NEC Corporation
  11c4  Document Technologies, Inc
  11c5  Shiva Corporation
  11c6  Dainippon Screen Mfg. Co. Ltd
***************
*** 3568,3573 ****
--- 3906,3912 ----
  11e1  GEC Plessey Semi Inc.
  11e2  Samsung Information Systems America
  11e3  Quicklogic Corporation
+ 	5030  PC Watchdog
  11e4  Second Wave Inc
  11e5  IIX Consulting
  11e6  Mitsui-Zosen System Research
***************
*** 3629,3634 ****
--- 3968,3978 ----
  1200  CSS Corporation
  1201  Vista Controls Corp
  1202  Network General Corp.
+ 	4300  Gigabit Ethernet Adapter
+ 		1202 9841  SK-9841 LX
+ 		1202 9842  SK-9841 LX dual link
+ 		1202 9843  SK-9843 SX
+ 		1202 9844  SK-9843 SX dual link
  1203  Bayer Corporation, Agfa Division
  1204  Lattice Semiconductor Corporation
  1205  Array Corporation
***************
*** 3675,3680 ****
--- 4019,4025 ----
  	6933  OZ6933 Cardbus Controller
  		1025 1016  Travelmate 612 TX
  	6972  OZ6912 Cardbus Controller
+ 		1179 0001  Magnia Z310
  1218  Hybricon Corp.
  1219  First Virtual Corporation
  121a  3Dfx Interactive, Inc.
***************
*** 3696,3702 ****
  		139c 0016  Raven
  		139c 0017  Raven
  		14af 0002  Maxi Gamer Phoenix
- 		3030 3030  Skywell Magic TwinPower
  	0004  Voodoo Banshee [Velocity 100]
  	0005  Voodoo 3
  		121a 0004  Voodoo3 AGP
--- 4041,4046 ----
***************
*** 3808,3814 ****
  1249  Samsung Electronics Co., Ltd.
  124a  AEG Electrocom GmbH
  124b  SBS/Greenspring Modular I/O
! 	0040  cPCI-200 Four Slot IndustryPack carrier
  		124b 9080  PCI9080 Bridge
  124c  Solitron Technologies, Inc.
  124d  Stallion Technologies, Inc.
--- 4152,4158 ----
  1249  Samsung Electronics Co., Ltd.
  124a  AEG Electrocom GmbH
  124b  SBS/Greenspring Modular I/O
! 	0040  PCI-40A or cPCI-200 Quad IndustryPack carrier
  		124b 9080  PCI9080 Bridge
  124c  Solitron Technologies, Inc.
  124d  Stallion Technologies, Inc.
***************
*** 3853,3858 ****
--- 4197,4203 ----
  		125d 8888  Solo-1 Audio Adapter
  		525f c888  ES1969 SOLO-1 AudioDrive (+ES1938)
  	1978  ES1978 Maestro 2E
+ 		0e11 b112  Armada M700
  		1033 803c  ES1978 Maestro-2E Audiodrive
  		1033 8058  ES1978 Maestro-2E Audiodrive
  		1092 4000  Monster Sound MX400
***************
*** 3884,3889 ****
--- 4229,4238 ----
  1260  Harris Semiconductor
  	3873  Prism 2.5 Wavelan chipset
  		1186 3501  DWL-520 Wireless PCI Adapter
+ 		1668 0414  HWP01170-01 802.11b PCI Wireless Adapter
+ 		1737 3874  WMP11 Wireless 802.11b PCI Adapter
+ 		8086 2513  Wireless 802.11b MiniPCI Adapter
+ 	3890  D-Links DWL-g650 A1
  	8130  HMP8130 NTSC/PAL Video Decoder
  	8131  HMP8131 NTSC/PAL Video Decoder
  1261  Matsushita-Kotobuki Electronics Industries, Ltd.
***************
*** 3919,3924 ****
--- 4268,4274 ----
  1273  Hughes Network Systems
  	0002  DirecPC
  1274  Ensoniq
+ 	1171  ES1373 [AudioPCI] (also Creative Labs CT5803)
  	1371  ES1371 [AudioPCI-97]
  		0e11 0024  AudioPCI on Motherboard Compaq Deskpro
  		0e11 b1a7  ES1371, ES1373 AudioPCI
***************
*** 3989,3994 ****
--- 4339,4345 ----
  1277  Comstream
  1278  Transtech Parallel Systems Ltd.
  	0701  TPE3/TM3 PowerPC Node
+ 	0710  TPE5 PowerPC PCI board
  1279  Transmeta Corporation
  	0295  Northbridge
  	0395  LongRun Northbridge
***************
*** 4184,4189 ****
--- 4535,4541 ----
  		12ae 0001  Gigabit Ethernet-SX (Universal)
  		1410 0104  Gigabit Ethernet-SX PCI Adapter
  	0002  AceNIC Gigabit Ethernet (Copper)
+ 		10a9 8002  Acenic Gigabit Ethernet
  		12ae 0002  Gigabit Ethernet-T (3C986-T)
  12af  TDK USA Corp
  12b0  Jorge Scientific Corp
***************
*** 4214,4220 ****
  		12b9 00ab  USR 56k Internal Voice Modem (Model 5609)
  		12b9 00ac  USR 56k Internal Voice Modem (Model 3298)
  		12b9 00ad  USR 56k Internal FAX Modem (Model 5610)
! 12ba  PMC Sierra
  12bb  Nippon Unisoft Corporation
  12bc  Array Microsystems
  12bd  Computerm Corp.
--- 4566,4572 ----
  		12b9 00ab  USR 56k Internal Voice Modem (Model 5609)
  		12b9 00ac  USR 56k Internal Voice Modem (Model 3298)
  		12b9 00ad  USR 56k Internal FAX Modem (Model 5610)
! 12ba  BittWare, Inc.
  12bb  Nippon Unisoft Corporation
  12bc  Array Microsystems
  12bd  Computerm Corp.
***************
*** 4278,4288 ****
--- 4630,4643 ----
  	00a0  ITNT2
  12d3  Vingmed Sound A/S
  12d4  Ulticom (Formerly DGM&S)
+ 	0200  T1 Card
  12d5  Equator Technologies
  12d6  Analogic Corp
  12d7  Biotronic SRL
  12d8  Pericom Semiconductor
  12d9  Aculab PLC
+ 	0002  PCI Prosody
+ 	0004  cPCI Prosody
  12da  True Time Inc.
  12db  Annapolis Micro Systems, Inc
  12dc  Symicron Computer Communication Ltd.
***************
*** 4400,4405 ****
--- 4755,4761 ----
  	0036  PCI-DAS64/M2/16
  	0037  PCI-DAS64/M3/16
  	004c  PCI-DAS1000
+ 	004d  PCI-QUAD04
  1308  Jato Technologies Inc.
  	0001  NetCelerator Adapter
  		1308 0001  NetCelerator Adapter
***************
*** 4486,4491 ****
--- 4842,4849 ----
  1330  MMC Networks
  1331  Radisys Corp.
  1332  Micro Memory
+ 	5415  MM-5415CN PCI Memory Module with Battery Backup
+ 	5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup
  1334  Redcreek Communications, Inc
  1335  Videomail, Inc
  1337  Third Planet Publishing
***************
*** 4523,4529 ****
  134f  Algo System Co Ltd
  1350  Systec Co. Ltd
  1351  Sonix Inc
! 1353  Dassault A.T.
  1354  Dwave System Inc
  1355  Kratos Analytical Ltd
  1356  The Logical Co
--- 4881,4891 ----
  134f  Algo System Co Ltd
  1350  Systec Co. Ltd
  1351  Sonix Inc
! 1353  Thales Idatys
! 	0002  Proserver
! 	0003  PCI-FUT
! 	0004  PCI-S0
! 	0005  PCI-FUT-S0
  1354  Dwave System Inc
  1355  Kratos Analytical Ltd
  1356  The Logical Co
***************
*** 4531,4537 ****
--- 4893,4911 ----
  135a  Brain Boxes
  135b  Giganet Inc
  135c  Quatech Inc
+ 	0010  QSC-100
+ 	0020  DSC-100
+ 	0030  DSC-200/300
+ 	0040  QSC-200/300
+ 	0050  ESC-100D
+ 	0060  ESC-100M
  	00f0  MPAC-100 Syncronous Serial Card (Zilog 85230)
+ 	0170  QSCLP-100
+ 	0180  DSCLP-100
+ 	0190  SSCLP-100
+ 	01a0  QSCLP-200/300
+ 	01b0  DSCLP-200/300
+ 	01c0  SSCLP-200/300
  135d  ABB Network Partner AB
  135e  Sealevel Systems Inc
  	7101  Single Port RS-232/422/485/530
***************
*** 4579,4584 ****
--- 4953,4959 ----
  1384  Reality Simulation Systems Inc
  1385  Netgear
  	4100  802.11b Wireless Adapter (MA301)
+ 	4105  MA311 802.11b wireless adapter
  	620a  GA620
  	622a  GA622
  	630a  GA630
***************
*** 4631,4636 ****
--- 5006,5015 ----
  	0006  6500 Public Key Processor
  	0007  7811 Security Processor
  	0012  7951 Security Processor
+ 	0014  78XX Security Processor
+ 	0016  8065 Security Processor
+ 	0017  8165 Security Processor
+ 	0018  8154 Security Processor
  13a4  Rascom Inc
  13a5  Audio Digital Imaging Inc
  13a6  Videonics Inc
***************
*** 4681,4687 ****
--- 5060,5069 ----
  13ce  Cocom A/S
  13cf  Studio Audio & Video Ltd
  13d0  Techsan Electronics Co Ltd
+ # http://www.b2c2inc.com/products/pc-specs.html
+ 	2103  B2C2 Sky2PC PCI [SkyStar2]
  13d1  Abocom Systems Inc
+ 	ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter
  	ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter
  13d2  Shark Multimedia Inc
  13d3  IMC Networks
***************
*** 4708,4714 ****
  13e6  Argosy research Inc
  13e7  NAC Incorporated
  13e8  Chip Express Corporation
! 13e9  Chip Express Corporation
  13ea  Dallas Semiconductor
  13eb  Hauppauge Computer Works Inc
  13ec  Zydacron Inc
--- 5090,5096 ----
  13e6  Argosy research Inc
  13e7  NAC Incorporated
  13e8  Chip Express Corporation
! 13e9  Intraserver Technology Inc
  13ea  Dallas Semiconductor
  13eb  Hauppauge Computer Works Inc
  13ec  Zydacron Inc
***************
*** 4729,4737 ****
--- 5111,5121 ----
  	0101  CM8338B
  		13f6 0101  CMI8338-031 PCI Audio Device
  	0111  CM8738
+ 		1019 0970  P6STP-FL motherboard
  		1043 8077  CMI8738 6-channel audio controller
  		1043 80e2  CMI8738 6ch-MX
  		13f6 0111  CMI8738/C3DX PCI Audio Device
+ 		1681 a000  Gamesurround MUSE XL
  	0211  CM8738
  13f7  Wildfire Communications
  13f8  Ad Lib Multimedia Inc
***************
*** 4778,4783 ****
--- 5162,5168 ----
  1411  Ikos Systems Inc
  1412  IC Ensemble Inc
  	1712  ICE1712 [Envy24]
+ 	1724  ICE1724 [Envy24HT]
  1413  Addonics
  1414  Microsoft Corporation
  1415  Oxford Semiconductor Ltd
***************
*** 4875,4881 ****
  	0001  NextMove PCI
  1460  DYNARC INC
  1461  Avermedia Technologies Inc
! 1462  Micro-star International Co Ltd
  1463  Fast Corporation
  1464  Interactive Circuits & Systems Ltd
  1465  GN NETTEST Telecom DIV.
--- 5260,5266 ----
  	0001  NextMove PCI
  1460  DYNARC INC
  1461  Avermedia Technologies Inc
! 1462  Micro-Star International Co., Ltd.
  1463  Fast Corporation
  1464  Interactive Circuits & Systems Ltd
  1465  GN NETTEST Telecom DIV.
***************
*** 4886,4891 ****
--- 5271,5277 ----
  146a  IFR
  146b  Parascan Technologies Ltd
  146c  Ruby Tech Corp.
+ 	1430  FE-1430TX Fast Ethernet PCI Adapter
  146d  Tachyon, INC.
  146e  Williams Electronics Games, Inc.
  146f  Multi Dimensional Consulting Inc
***************
*** 4936,4941 ****
--- 5322,5328 ----
  149b  SEIKO Instruments Inc
  149c  OVISLINK Corp.
  149d  NEWTEK Inc
+ 	0001  Video Toaster for PC
  149e  Mapletree Networks Inc.
  149f  LECTRON Co Ltd
  14a0  SOFTING GmBH
***************
*** 4954,4959 ****
--- 5341,5347 ----
  14ad  Time Space Radio AB
  14ae  CTI, Inc
  14af  Guillemot Corporation
+ 	7102  3D Prophet II MX
  14b0  BST Communication Technology Ltd
  14b1  Nextcom K.K.
  14b2  ENNOVATE Networks Inc
***************
*** 4961,4966 ****
--- 5349,5362 ----
  	0000  DSL NIC
  14b4  PHILIPS Business Electronics B.V.
  14b5  Creamware GmBH
+ 	0200  Scope
+ 	0300  Pulsar
+ 	0400  Pulsar2
+ 	0600  Pulsar2
+ 	0800  DSP-Board
+ 	0900  DSP-Board
+ 	0a00  DSP-Board
+ 	0b00  DSP-Board
  14b6  Quantum Data Corp.
  14b7  PROXIM Inc
  	0001  Symphony 4110
***************
*** 4971,4976 ****
--- 5367,5373 ----
  	0350  PC4800
  	4500  PC4500
  	4800  PC4800
+ 	a504  Cisco Aironet Wireless 802.11b
  14ba  INTERNIX Inc.
  14bb  SEMTECH Corporation
  14bc  Globespan Semiconductor Inc.
***************
*** 5043,5082 ****
  14e3  AMTELCO
  14e4  Broadcom Corporation
  	1644  NetXtreme BCM5700 Gigabit Ethernet
! 		1014 0277  Broadcom Vigil B5700 1000BaseTX
  		1028 00d1  Broadcom BCM5700
  		1028 0106  Broadcom BCM5700
! 		1028 0109  Broadcom BCM5700 1000BaseTX
  		1028 010a  Broadcom BCM5700 1000BaseTX
! 		10b7 1000  3C996-T 1000BaseTX
! 		10b7 1001  3C996B-T 1000BaseTX
! 		10b7 1002  3C996C-T 1000BaseTX
! 		10b7 1003  3C997-T 1000BaseTX Dual Port
! 		10b7 1004  3C996-SX 1000BaseSX
! 		10b7 1005  3C997-SX 1000BaseSX Dual Port
  		10b7 1008  3C942 Gigabit LOM (31X31)
! 		14e4 0002  NetXtreme 1000BaseSX
! 		14e4 0003  NetXtreme 1000BaseSX
! 		14e4 0004  NetXtreme 1000BaseTX
  		14e4 1028  NetXtreme 1000BaseTX
! 		14e4 1644  BCM5700 1000BaseTX
  	1645  NetXtreme BCM5701 Gigabit Ethernet
  		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
  		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
  		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)
  		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)
  		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
! 		1028 0121  Broadcom BCM5701 1000BaseTX
! 		10b7 1004  3C996-SX 1000BaseSX
! 		10b7 1006  3C996B-T 1000BaseTX
! 		10b7 1007  3C1000-T 1000BaseTX
! 		10b7 1008  3C940-BR01 1000BaseTX
! 		14e4 0001  BCM5701 1000BaseTX
! 		14e4 0005  BCM5701 1000BaseTX
! 		14e4 0006  BCM5701 1000BaseTX
! 		14e4 0007  BCM5701 1000BaseSX
! 		14e4 0008  BCM5701 1000BaseTX
! 		14e4 8008  BCM5701 1000BaseTX
  	1646  NetXtreme BCM5702 Gigabit Ethernet
  		0e11 00bb  NC7760 1000BaseTX
  		1028 0126  Broadcom BCM5702 1000BaseTX
--- 5440,5483 ----
  14e3  AMTELCO
  14e4  Broadcom Corporation
  	1644  NetXtreme BCM5700 Gigabit Ethernet
! 		1014 0277  Broadcom Vigil B5700 1000Base-T
  		1028 00d1  Broadcom BCM5700
  		1028 0106  Broadcom BCM5700
! 		1028 0109  Broadcom BCM5700 1000Base-T
  		1028 010a  Broadcom BCM5700 1000BaseTX
! 		10b7 1000  3C996-T 1000Base-T
! 		10b7 1001  3C996B-T 1000Base-T
! 		10b7 1002  3C996C-T 1000Base-T
! 		10b7 1003  3C997-T 1000Base-T Dual Port
! 		10b7 1004  3C996-SX 1000Base-SX
! 		10b7 1005  3C997-SX 1000Base-SX Dual Port
  		10b7 1008  3C942 Gigabit LOM (31X31)
! 		14e4 0002  NetXtreme 1000Base-SX
! 		14e4 0003  NetXtreme 1000Base-SX
! 		14e4 0004  NetXtreme 1000Base-T
  		14e4 1028  NetXtreme 1000BaseTX
! 		14e4 1644  BCM5700 1000Base-T
  	1645  NetXtreme BCM5701 Gigabit Ethernet
  		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
  		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
  		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)
  		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)
  		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
! 		0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
! 		1028 0121  Broadcom BCM5701 1000Base-T
! 		10a9 8010  SGI IO9 Gigabit Ethernet (Copper)
! 		10a9 8011  SGI Gigabit Ethernet (Copper)
! 		10a9 8012  SGI Gigabit Ethernet (Fiber)
! 		10b7 1004  3C996-SX 1000Base-SX
! 		10b7 1006  3C996B-T 1000Base-T
! 		10b7 1007  3C1000-T 1000Base-T
! 		10b7 1008  3C940-BR01 1000Base-T
! 		14e4 0001  BCM5701 1000Base-T
! 		14e4 0005  BCM5701 1000Base-T
! 		14e4 0006  BCM5701 1000Base-T
! 		14e4 0007  BCM5701 1000Base-SX
! 		14e4 0008  BCM5701 1000Base-T
! 		14e4 8008  BCM5701 1000Base-T
  	1646  NetXtreme BCM5702 Gigabit Ethernet
  		0e11 00bb  NC7760 1000BaseTX
  		1028 0126  Broadcom BCM5702 1000BaseTX
***************
*** 5084,5102 ****
  	1647  NetXtreme BCM5703 Gigabit Ethernet
  		0e11 0099  NC7780 1000BaseTX
  		0e11 009a  NC7770 1000BaseTX
  		14e4 0009  BCM5703 1000BaseTX
  		14e4 000a  BCM5703 1000BaseSX
  		14e4 000b  BCM5703 1000BaseTX
  		14e4 8009  BCM5703 1000BaseTX
  		14e4 800a  BCM5703 1000BaseTX
  	1648  NetXtreme BCM5704 Gigabit Ethernet
  	164d  NetXtreme BCM5702FE Gigabit Ethernet
! 	16a6  NetXtreme BCM5702X Gigabit Ethernet
! 	16a7  NetXtreme BCM5703X Gigabit Ethernet
  	16a8  NetXtreme BCM5704S Gigabit Ethernet
! 	16c6  NetXtreme BCM5702A3 Gigabit Ethernet
! 	16c7  NetXtreme BCM5703A3 Gigabit Ethernet
! 	4212  BCM v.90 56k modem
  	5820  BCM5820 Crypto Accelerator
  	5821  BCM5821 Crypto Accelerator
  14e5  Pixelfusion Ltd
--- 5485,5541 ----
  	1647  NetXtreme BCM5703 Gigabit Ethernet
  		0e11 0099  NC7780 1000BaseTX
  		0e11 009a  NC7770 1000BaseTX
+ 		10a9 8010  SGI IO9 Gigabit Ethernet (Copper)
  		14e4 0009  BCM5703 1000BaseTX
  		14e4 000a  BCM5703 1000BaseSX
  		14e4 000b  BCM5703 1000BaseTX
  		14e4 8009  BCM5703 1000BaseTX
  		14e4 800a  BCM5703 1000BaseTX
  	1648  NetXtreme BCM5704 Gigabit Ethernet
+ 		0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+ 		0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+ 		0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+ 		10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X
+ 		10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X
+ 		1166 1648  NetXtreme CIOB-E 1000Base-T
  	164d  NetXtreme BCM5702FE Gigabit Ethernet
! 	1653  NetXtreme BCM5705 Gigabit Ethernet
! 	165d  NetXtreme BCM5705M Gigabit Ethernet
! 	1696  NetXtreme BCM5782 Gigabit Ethernet
! 		14e4 000d  NetXtreme BCM5782 1000Base-T
! 	169c  NetXtreme BCM5788 Gigabit Ethernet
! 	16a6  NetXtreme BCM5702 Gigabit Ethernet
! 		0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
! 		1028 0126  BCM5702 1000Base-T
! 		14e4 000c  BCM5702 1000Base-T
! 		14e4 8009  BCM5702 1000Base-T
! 	16a7  NetXtreme BCM5703 Gigabit Ethernet
! 		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
! 		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
! 		14e4 0009  NetXtreme BCM5703 1000Base-T
! 		14e4 000a  NetXtreme BCM5703 1000Base-SX
! 		14e4 000b  NetXtreme BCM5703 1000Base-T
! 		14e4 800a  NetXtreme BCM5703 1000Base-T
  	16a8  NetXtreme BCM5704S Gigabit Ethernet
! 		10b7 2001  3C998-SX Dual Port 1000-SX PCI-X
! 	16c6  NetXtreme BCM5702 Gigabit Ethernet
! 		10b7 1100  3C1000B-T 10/100/1000 PCI
! 		14e4 000c  BCM5702 1000Base-T
! 		14e4 8009  BCM5702 1000Base-T
! 	16c7  NetXtreme BCM5703 Gigabit Ethernet
! 		14e4 0009  NetXtreme BCM5703 1000Base-T
! 		14e4 000a  NetXtreme BCM5703 1000Base-SX
! 	4210  BCM4210 iLine10 HomePNA 2.0
! 	4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem
! 	4212  BCM4212 v.90 56k modem
! 	4301  BCM4301 802.11b
! 	4320  BCM94306 802.11g
! 	4401  BCM4401 100Base-T
! 		1043 80a8  A7V8X motherboard
! 	4402  BCM4402 Integrated 10/100BaseT
! 	4410  BCM4413 iLine32 HomePNA 2.0
! 	4411  BCM4413 V.90 56k modem
! 	4412  BCM4413 10/100BaseT
  	5820  BCM5820 Crypto Accelerator
  	5821  BCM5821 Crypto Accelerator
  14e5  Pixelfusion Ltd
***************
*** 5181,5186 ****
--- 5620,5628 ----
  		122d 4302  Dell MP3930V-W(C) MiniPCI
  	1610  ADSL AccessRunner PCI Arbitration Device
  	1611  AccessRunner PCI ADSL Interface Device
+ 	1620  ADSL AccessRunner V2 PCI Arbitration Device
+ 	1621  AccessRunner V2 PCI ADSL Interface Device
+ 	1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter
  	1803  HCF 56k Modem
  		0e11 0023  623-LAN Grizzly
  		0e11 0043  623-LAN Yogi
***************
*** 5255,5261 ****
  14f9  AG COMMUNICATIONS
  14fa  WANDEL & GOCHERMANN
  14fb  TRANSAS MARINE (UK) Ltd
! 14fc  QUADRICS Supercomputers World
  14fd  JAPAN Computer Industry Inc
  14fe  ARCHTEK TELECOM Corp
  14ff  TWINHEAD INTERNATIONAL Corp
--- 5697,5705 ----
  14f9  AG COMMUNICATIONS
  14fa  WANDEL & GOCHERMANN
  14fb  TRANSAS MARINE (UK) Ltd
! 14fc  Quadrics Ltd
! 	0000  QsNet Cluster Interconnect
! 	0001  QsNetII Cluster Interconnect
  14fd  JAPAN Computer Industry Inc
  14fe  ARCHTEK TELECOM Corp
  14ff  TWINHEAD INTERNATIONAL Corp
***************
*** 5316,5323 ****
--- 5760,5773 ----
  		1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem
  		1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem
  		1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem
+ 		1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem
+ 		1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem
  1523  MUSIC Semiconductors
  1524  ENE Technology Inc
+ 	1211  CB1211 Cardbus Controller
+ 	1225  CB1225 Cardbus Controller
+ 	1410  CB1410 Cardbus Controller
+ 	1420  CB1420 Cardbus Controller
  1525  IMPACT Technologies
  1526  ISS, Inc
  1527  SOLECTRON
***************
*** 5337,5342 ****
--- 5787,5793 ----
  1535  EVERGREEN Technologies Inc
  1537  DATALEX COMMUNCATIONS
  1538  ARALION Inc
+ 	0303  ARS106S Ultra ATA 133/100/66 Host Controller
  1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.
  153a  ONO SOKKI
  153b  TERRATEC Electronic GmbH
***************
*** 5348,5353 ****
--- 5799,5806 ----
  1541  MACHONE Communications
  1542  VIVID Technology Inc
  1543  SILICON Laboratories
+ 	3052  Intel 537 [Winmodem]
+ 	4c22  Si3036 MC'97 DAA
  1544  DCM DATA Systems
  1545  VISIONTEK
  1546  IOI Technology Corp
***************
*** 5578,5583 ****
--- 6031,6037 ----
  1607  Lava Semiconductor Manufacturing Inc
  1608  Automated Wagering International
  1609  Scimetric Instruments Inc
+ 1612  Telesynergy Research Inc.
  1619  FarSite Communications Ltd
  	0400  FarSync T2P (2 port X.21/V.35/V.24)
  	0440  FarSync T4P (4 port X.21/V.35/V.24)
***************
*** 5586,5607 ****
  	2002  Fast Universal Data Output
  1638  Standard Microsystems Corp [SMC]
  	1100  SMC2602W EZConnect / Addtron AWA-100
  1657  Brocade Communications Systems, Inc.
  165d  Hsing Tech. Enterprise Co., Ltd.
  1661  Worldspace Corp.
! 1668  Action Tec Electronics Inc
  16ec  U.S. Robotics
  	3685  Wireless Access PCI Adapter Model 022415
  16f6  VideoTele.com, Inc.
  170b  NetOctave Inc
  170c  YottaYotta Inc.
  173b  Altima (nee Broadcom)
  	03e8  AC1000 Gigabit Ethernet
  	03ea  AC9100 Gigabit Ethernet
  1743  Peppercon AG
  	8139  ROL/F-100 Fast Ethernet Adapter with ROL
  174b  PC Partner Limited
  175e  Sanera Systems, Inc.
  # also used by Struck Innovative Systeme for joint developments
  1796  Research Centre Juelich
  	0001  SIS1100 [Gigabit link]
--- 6040,6079 ----
  	2002  Fast Universal Data Output
  1638  Standard Microsystems Corp [SMC]
  	1100  SMC2602W EZConnect / Addtron AWA-100
+ 163c  Smart Link Ltd.
+ 	3052  SmartLink SmartPCI562 56K Modem
+ 	5449  SmartPCI561 Modem
  1657  Brocade Communications Systems, Inc.
+ 165a  Epix Inc
+ 	c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]
+ 	d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]
+ 	d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]
  165d  Hsing Tech. Enterprise Co., Ltd.
  1661  Worldspace Corp.
! 1668  Actiontec Electronics Inc
! 1681  Hercules
! 16ab  Global Sun Technology Inc
! 	1102  PCMCIA-to-PCI Wireless Network Bridge
! 16be  Creatix Polymedia GmbH
! 16ca  CENATEK Inc
! 	0001  Rocket Drive DL
  16ec  U.S. Robotics
  	3685  Wireless Access PCI Adapter Model 022415
  16f6  VideoTele.com, Inc.
+ 1705  Digital First, Inc.
  170b  NetOctave Inc
  170c  YottaYotta Inc.
+ 172a  Accelerated Encryption
+ 1737  Linksys
  173b  Altima (nee Broadcom)
  	03e8  AC1000 Gigabit Ethernet
  	03ea  AC9100 Gigabit Ethernet
+ 		173b 0001  AC1002
  1743  Peppercon AG
  	8139  ROL/F-100 Fast Ethernet Adapter with ROL
  174b  PC Partner Limited
  175e  Sanera Systems, Inc.
+ 1787  Hightech Information System Ltd.
  # also used by Struck Innovative Systeme for joint developments
  1796  Research Centre Juelich
  	0001  SIS1100 [Gigabit link]
***************
*** 5610,5616 ****
--- 6082,6103 ----
  	0004  CAMAC Controller
  	0005  PROFIBUS
  	0006  AMCC HOTlink
+ 1799  Belkin
+ 17af  Hightech Information System Ltd.
+ 17cc  NetChip Technology, Inc
+ 	2280  USB 2.0
  1813  Ambient Technologies Inc
+ 	4000  HaM controllerless modem
+ 		16be 0001  V9x HAM Data Fax Modem
+ 	4100  HaM plus Data Fax Modem
+ 		16be 0002  V9x HAM 1394
+ 1851  Microtune, Inc.
+ 1852  Anritsu Corp.
+ 1888  Varisys Ltd
+ 	0301  VMFX1 FPGA PMC module
+ 	0601  VSM2 dual PMC carrier
+ 	0710  VS14x series PowerPC PCI board
+ 	0720  VS24x series PowerPC PCI board
  1a08  Sierra semiconductor
  	0000  SC15064
  1b13  Jaton Corp
***************
*** 5623,5629 ****
--- 6110,6121 ----
  	2020  DC-390
  	690c  690c
  	dc29  DC290
+ 1fc0  Tumsan Oy
+ 	0300  E2200 Dual E1/Rawpipe Card
+ 2000  Smart Link Ltd.
  2001  Temporal Research Ltd
+ 2003  Smart Link Ltd.
+ 2004  Smart Link Ltd.
  21c3  21st Century Computer Corp.
  2348  Racore
  	2010  8142 100VG/AnyLAN
***************
*** 5635,5641 ****
--- 6127,6137 ----
  3000  Hansol Electronics Inc.
  3142  Post Impression Systems.
  3388  Hint Corp
+ 	0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller
+ 	0014  HiNT HC4 PCI to ISDN bridge, Network controller
  	0021  HB1-SE33 PCI-PCI Bridge
+ 	101a  E.Band [AudioTrak Inca88]
+ 	101b  E.Band [AudioTrak Inca88]
  	8011  VXPro II Chipset
  		3388 8011  VXPro II Chipset CPU to PCI Bridge
  	8012  VXPro II Chipset
***************
*** 5666,5671 ****
--- 6162,6169 ----
  		3d3d 0127  Permedia3 Create!
  	000a  GLINT R3
  		3d3d 0121  Oxygen VX1
+ 	000c  GLINT R3 [Oxygen VX1]
+ 		3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]
  	0100  Permedia II 2D+3D
  	1004  Permedia
  	3d04  Permedia
***************
*** 5693,5698 ****
--- 6191,6197 ----
  	0100  AladdinCARD
  	0200  CPC
  4444  Internext Compression Inc
+ 	0803  iTVC15 MPEG-2 Encoder
  4468  Bridgeport machines
  4594  Cogetec Informatique Inc
  45fb  Baldor Electric Company
***************
*** 5738,5743 ****
--- 6237,6243 ----
  5143  Qualcomm Inc
  5145  Ensoniq (Old)
  	3031  Concert AudioPCI
+ 5168  Animation Technologies Inc.
  5301  Alliance Semiconductor Corp.
  	0001  ProMotion aT3D
  5333  S3 Inc.
***************
*** 5846,5852 ****
--- 6346,6354 ----
  	8c10  86C270-294 Savage/MX-MV
  	8c11  82C270-294 Savage/MX
  	8c12  86C270-294 Savage/IX-MV
+ 		1014 017f  ThinkPad T20
  	8c13  86C270-294 Savage/IX
+ 		1179 0001  Magnia Z310
  	8c22  SuperSavage MX/128
  	8c24  SuperSavage MX/64
  	8c26  SuperSavage MX/64C
***************
*** 5857,5866 ****
  	8c2e  SuperSavage IX/C SDR
  		1014 01fc  ThinkPad T23 (2647-4MG)
  	8c2f  SuperSavage IX/C DDR
! # Integrated in VIA ProSavage PN133 North Bridge
! 	8d01  VT8603 [ProSavage PN133] AGP4X VGA Controller (Twister)
  	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)
! 	8d04  VT8751 [ProSavageDDR P4M266] VGA Controller
  	9102  86C410 Savage 2000
  		1092 5932  Viper II Z200
  		1092 5934  Viper II Z200
--- 6359,6368 ----
  	8c2e  SuperSavage IX/C SDR
  		1014 01fc  ThinkPad T23 (2647-4MG)
  	8c2f  SuperSavage IX/C DDR
! 	8d01  86C380 [ProSavageDDR K4M266]
  	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)
! 	8d03  VT8751 [ProSavageDDR P4M266]
! 	8d04  VT8375 [ProSavage8 KM266/KL266]
  	9102  86C410 Savage 2000
  		1092 5932  Viper II Z200
  		1092 5934  Viper II Z200
***************
*** 5872,5877 ****
--- 6374,6380 ----
  		1092 5a57  Viper II Z200
  	ca00  SonicVibes
  544c  Teralogic Inc
+ 	0350  TL880-based HDTV/ATSC tuner
  5455  Technische University Berlin
  	4458  S5933
  5519  Cnet Technologies, Inc.
***************
*** 5879,5884 ****
--- 6382,6388 ----
  	0001  I-30xx Scanner Interface
  5555  Genroco, Inc
  	0003  TURBOstor HFP-832 [HiPPI NIC]
+ 5654  VoiceTronix Pty Ltd
  5700  Netpower
  6356  UltraStor
  6374  c't Magazin f�r Computertechnik
***************
*** 5914,5920 ****
  		0e11 b123  NC1634 Gigabit Ethernet Adapter (1000-SX)
  		1014 0119  Netfinity Gigabit Ethernet SX Adapter
  		8086 1000  PRO/1000 Gigabit Server Adapter
! 	1001  82543GC Gigabit Ethernet Controller
  		0e11 004a  NC6136 Gigabit Server Adapter
  		1014 01ea  Netfinity Gigabit Ethernet SX Adapter
  		8086 1003  PRO/1000 F Server Adapter
--- 6418,6424 ----
  		0e11 b123  NC1634 Gigabit Ethernet Adapter (1000-SX)
  		1014 0119  Netfinity Gigabit Ethernet SX Adapter
  		8086 1000  PRO/1000 Gigabit Server Adapter
! 	1001  82543GC Gigabit Ethernet Controller (Fiber)
  		0e11 004a  NC6136 Gigabit Server Adapter
  		1014 01ea  Netfinity Gigabit Ethernet SX Adapter
  		8086 1003  PRO/1000 F Server Adapter
***************
*** 5922,5965 ****
  		8086 200e  Pro 100 LAN+Modem 56 Cardbus II
  		8086 2013  Pro 100 SR Mobile Combo Adapter
  		8086 2017  Pro 100 S Combo Mobile Adapter
! 	1004  82543GC Gigabit Ethernet Controller
  		0e11 0049  NC7132 Gigabit Upgrade Module
  		0e11 b1a4  NC7131 Gigabit Server Adapter
  		1014 10f2  Gigabit Ethernet Server Adapter
  		8086 1004  PRO/1000 T Server Adapter
  		8086 2004  PRO/1000 T Server Adapter
! 	1008  82544EI Gigabit Ethernet Controller
  		8086 1107  PRO/1000 XT Server Adapter
  		8086 2107  PRO/1000 XT Server Adapter
  		8086 2110  PRO/1000 XT Server Adapter
! 	1009  82544EI Gigabit Ethernet Controller
  		8086 1109  PRO/1000 XF Server Adapter
  		8086 2109  PRO/1000 XF Server Adapter
! 	100c  82544GC Gigabit Ethernet Controller
  		8086 1112  PRO/1000 T Desktop Adapter
  		8086 2112  PRO/1000 T Desktop Adapter
! 	100d  82544GC Gigabit Ethernet Controller
  	100e  82540EM Gigabit Ethernet Controller
  		8086 001e  PRO/1000 MT Desktop Adapter
  		8086 002e  PRO/1000 MT Desktop Adapter
! 	100f  82545EM Gigabit Ethernet Controller
  		8086 1001  PRO/1000 MT Server Adapter
! 	1010  82546EB Gigabit Ethernet Controller
  		8086 1011  PRO/1000 MT Dual Port Server Adapter
! 	1011  82545EM Gigabit Ethernet Controller
  		8086 1002  PRO/1000 MF Server Adapter
! 	1012  82546EB Gigabit Ethernet Controller
  		8086 1012  PRO/1000 MF Dual Port Server Adapter
  	1029  82559 Ethernet Controller
  	1030  82559 InBusiness 10/100
  	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
! 		1014 0209  ThinkPad A30p (2653-64G)
  		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  		107b 5350  EtherExpress PRO/100 VE
  		1179 0001  EtherExpress PRO/100 VE
  		144d c000  EtherExpress PRO/100 VE
  		144d c001  EtherExpress PRO/100 VE
  		144d c003  EtherExpress PRO/100 VE
  	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller
  	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller
  	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller
--- 6426,6472 ----
  		8086 200e  Pro 100 LAN+Modem 56 Cardbus II
  		8086 2013  Pro 100 SR Mobile Combo Adapter
  		8086 2017  Pro 100 S Combo Mobile Adapter
! 	1004  82543GC Gigabit Ethernet Controller (Copper)
  		0e11 0049  NC7132 Gigabit Upgrade Module
  		0e11 b1a4  NC7131 Gigabit Server Adapter
  		1014 10f2  Gigabit Ethernet Server Adapter
  		8086 1004  PRO/1000 T Server Adapter
  		8086 2004  PRO/1000 T Server Adapter
! 	1008  82544EI Gigabit Ethernet Controller (Copper)
  		8086 1107  PRO/1000 XT Server Adapter
  		8086 2107  PRO/1000 XT Server Adapter
  		8086 2110  PRO/1000 XT Server Adapter
! 	1009  82544EI Gigabit Ethernet Controller (Fiber)
  		8086 1109  PRO/1000 XF Server Adapter
  		8086 2109  PRO/1000 XF Server Adapter
! 	100c  82544GC Gigabit Ethernet Controller (Copper)
  		8086 1112  PRO/1000 T Desktop Adapter
  		8086 2112  PRO/1000 T Desktop Adapter
! 	100d  82544GC Gigabit Ethernet Controller (LOM)
  	100e  82540EM Gigabit Ethernet Controller
  		8086 001e  PRO/1000 MT Desktop Adapter
  		8086 002e  PRO/1000 MT Desktop Adapter
! 	100f  82545EM Gigabit Ethernet Controller (Copper)
  		8086 1001  PRO/1000 MT Server Adapter
! 	1010  82546EB Gigabit Ethernet Controller (Copper)
  		8086 1011  PRO/1000 MT Dual Port Server Adapter
! 	1011  82545EM Gigabit Ethernet Controller (Fiber)
  		8086 1002  PRO/1000 MF Server Adapter
! 	1012  82546EB Gigabit Ethernet Controller (Fiber)
  		8086 1012  PRO/1000 MF Dual Port Server Adapter
+ 	1015  82540EM Gigabit Ethernet Controller (LOM)
+ 	1019  82547EI Gigabit Ethernet Controller
  	1029  82559 Ethernet Controller
  	1030  82559 InBusiness 10/100
  	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
! 		1014 0209  ThinkPad A/T/X Series
  		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  		107b 5350  EtherExpress PRO/100 VE
  		1179 0001  EtherExpress PRO/100 VE
  		144d c000  EtherExpress PRO/100 VE
  		144d c001  EtherExpress PRO/100 VE
  		144d c003  EtherExpress PRO/100 VE
+ 		144d c006  vpr Matrix 170B4
  	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller
  	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller
  	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller
***************
*** 5973,5988 ****
--- 6480,6504 ----
  	103c  82801BD PRO/100 VM (CNR) Ethernet Controller
  	103d  82801BD PRO/100 VE (MOB) Ethernet Controller
  	103e  82801BD PRO/100 VM (MOB) Ethernet Controller
+ 	1040  536EP Data Fax Modem
+ 		16be 1040  V.9X DSP Data Fax Modem
+ 	1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter
  	1059  82551QM Ethernet Controller
  	1130  82815 815 Chipset Host Bridge and Memory Controller Hub
+ 		1025 1016  Travelmate 612 TX
  		1043 8027  TUSL2-C Mainboard
  		104d 80df  Vaio PCG-FX403
+ 		8086 4532  D815EEA2 mainboard
+ 		8086 4557  D815EGEW Mainboard
  	1131  82815 815 Chipset AGP Bridge
  	1132  82815 CGC [Chipset Graphics Controller]
  		1025 1016  Travelmate 612 TX
  		104d 80df  Vaio PCG-FX403
+ 		8086 4532  D815EEA2 Mainboard
+ 		8086 4557  D815EGEW Mainboard
  	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller
  		8086 1161  82806AA PCI64 Hub APIC
+ 	1162  Xscale 80200 Big Endian Companion Chip
  	1200  Intel IXP1200 Network Processor
  		172a 0000  AEP SSL Accelerator
  	1209  82559ER
***************
*** 6024,6036 ****
--- 6540,6555 ----
  		1014 01f2  10/100 Ethernet Server Adapter
  		1014 0207  Ethernet Pro/100 S
  		1014 0232  10/100 Dual Port Server Adapter
+ 		1014 023a  ThinkPad R30
  		1014 105c  Netfinity 10/100
+ 		1014 2205  ThinkPad A22p
  		1014 305c  10/100 EtherJet Management Adapter
  		1014 405c  10/100 EtherJet Adapter with Alert on LAN
  		1014 505c  10/100 EtherJet Secure Management Adapter
  		1014 605c  10/100 EtherJet Secure Management Adapter
  		1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter
  		1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter
+ 		1028 009b  PowerEdge 2550
  		1033 8000  PC-9821X-B06
  		1033 8016  PK-UG-X006
  		1033 801f  PK-UG-X006
***************
*** 6161,6166 ****
--- 6680,6686 ----
  		8086 8000  82806AA PCI64 Hub Controller (HRes)
  	1460  82870P2 P64H2 Hub PCI Bridge
  	1461  82870P2 P64H2 I/OxAPIC
+ 		15d9 3480  P4DP6
  	1462  82870P2 P64H2 Hot Plug Controller
  	1960  80960RP [i960RP Microprocessor]
  		101e 0431  MegaRAID 431 RAID Controller
***************
*** 6212,6231 ****
  	2428  82801AB PCI Bridge
  	2440  82801BA ISA Bridge (LPC)
  	2442  82801BA/BAM USB (Hub #1)
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
  	2443  82801BA/BAM SMBus
  		1043 8027  TUSL2-C Mainboard
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
  	2444  82801BA/BAM USB (Hub #2)
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
  	2445  82801BA/BAM AC'97 Audio
  		104d 80df  Vaio PCG-FX403
  		1462 3370  STAC9721 AC
  		147b 0507  TH7II-RAID
! 	2446  82801BA/BAM AC'97 Modem
  		104d 80df  Vaio PCG-FX403
  	2448  82801BAM/CAM PCI Bridge
  	2449  82801BA/BAM/CA/CAM Ethernet Controller
--- 6732,6765 ----
  	2428  82801AB PCI Bridge
  	2440  82801BA ISA Bridge (LPC)
  	2442  82801BA/BAM USB (Hub #1)
+ 		1014 01c6  Netvista A40/A40p
+ 		1025 1016  Travelmate 612 TX
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
+ 		8086 4532  D815EEA2 mainboard
+ 		8086 4557  D815EGEW Mainboard
  	2443  82801BA/BAM SMBus
+ 		1014 01c6  Netvista A40/A40p
+ 		1025 1016  Travelmate 612 TX
  		1043 8027  TUSL2-C Mainboard
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
+ 		8086 4532  D815EEA2 mainboard
+ 		8086 4557  D815EGEW Mainboard
  	2444  82801BA/BAM USB (Hub #2)
+ 		1025 1016  Travelmate 612 TX
  		104d 80df  Vaio PCG-FX403
  		147b 0507  TH7II-RAID
+ 		8086 4532  D815EEA2 mainboard
  	2445  82801BA/BAM AC'97 Audio
+ 		1014 01c6  Netvista A40/A40p
+ 		1025 1016  Travelmate 612 TX
  		104d 80df  Vaio PCG-FX403
  		1462 3370  STAC9721 AC
  		147b 0507  TH7II-RAID
! 		8086 4557  D815EGEW Mainboard
! 	2446  Intel 537 [82801BA/BAM AC'97 Modem]
! 		1025 1016  Travelmate 612 TX
  		104d 80df  Vaio PCG-FX403
  	2448  82801BAM/CAM PCI Bridge
  	2449  82801BA/BAM/CA/CAM Ethernet Controller
***************
*** 6242,6249 ****
--- 6776,6787 ----
  		1014 023d  EtherExpress PRO/100 VE
  		1014 0244  EtherExpress PRO/100 VE
  		1014 0245  EtherExpress PRO/100 VE
+ 		1014 0265  PRO/100 VE Desktop Connection
+ 		1014 0267  PRO/100 VE Desktop Connection
+ 		1014 026a  PRO/100 VE Desktop Connection
  		109f 315d  EtherExpress PRO/100 VE
  		109f 3181  EtherExpress PRO/100 VE
+ 		1179 ff01  PRO/100 VE Network Connection
  		1186 7801  EtherExpress PRO/100 VE
  		144d 2602  HomePNA 1M CNR
  		8086 3010  EtherExpress PRO/100 VE
***************
*** 6259,6268 ****
  		1025 1016  Travelmate 612TX
  		104d 80df  Vaio PCG-FX403
  	244b  82801BA IDE U100
  		1043 8027  TUSL2-C Mainboard
  		147b 0507  TH7II-RAID
  	244c  82801BAM ISA Bridge (LPC)
! 	244e  82801BA/CA/DB PCI Bridge
  	2450  82801E ISA Bridge (LPC)
  	2452  82801E USB
  	2453  82801E SMBus
--- 6797,6809 ----
  		1025 1016  Travelmate 612TX
  		104d 80df  Vaio PCG-FX403
  	244b  82801BA IDE U100
+ 		1014 01c6  Netvista A40/A40p
  		1043 8027  TUSL2-C Mainboard
  		147b 0507  TH7II-RAID
+ 		8086 4532  D815EEA2 mainboard
+ 		8086 4557  D815EGEW Mainboard
  	244c  82801BAM ISA Bridge (LPC)
! 	244e  82801BA/CA/DB/EB PCI Bridge
  	2450  82801E ISA Bridge (LPC)
  	2452  82801E USB
  	2453  82801E SMBus
***************
*** 6270,6310 ****
  	245b  82801E IDE U100
  	245d  82801E Ethernet Controller 1
  	245e  82801E PCI Bridge
! 	2480  82801CA ISA Bridge (LPC)
  	2482  82801CA/CAM USB (Hub #1)
! 		1014 0220  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 	2483  82801CA/CAM SMBus
! 		1014 0220  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	2484  82801CA/CAM USB (Hub #2)
! 		1014 0220  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 	2485  82801CA/CAM AC'97 Audio
! 		1014 0222  ThinkPad T23 (2647-4MG)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 	2486  82801CA/CAM AC'97 Modem
! 		1014 0223  ThinkPad A30p (2653-64G)
  		1014 0503  ThinkPad R31 2656BBG
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  		134d 4c21  Dell Inspiron 2100 internal modem
  	2487  82801CA/CAM USB (Hub #3)
! 		1014 0220  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	248a  82801CAM IDE U100
! 		1014 0220  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 	248b  82801CA IDE U100
  	248c  82801CAM ISA Bridge (LPC)
! 	24c0  82801DB ISA Bridge (LPC)
  	24c2  82801DB USB (Hub #1)
! 	24c3  82801DB SMBus
  	24c4  82801DB USB (Hub #2)
! 	24c5  82801DB AC'97 Audio
! 	24c6  82801DB AC'97 Modem
  	24c7  82801DB USB (Hub #3)
! 	24cb  82801DB ICH4 IDE
! 	24cd  82801DB USB EHCI Controller
  	2500  82820 820 (Camino) Chipset Host Bridge (MCH)
  		1028 0095  Precision Workstation 220 Chipset
  		1043 801c  P3C-2000 system chipset
--- 6811,6890 ----
  	245b  82801E IDE U100
  	245d  82801E Ethernet Controller 1
  	245e  82801E PCI Bridge
! 	2480  82801CA LPC Interface Controller
  	2482  82801CA/CAM USB (Hub #1)
! 		1014 0220  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 		15d9 3480  P4DP6
! 		8086 1958  vpr Matrix 170B4
! 	2483  82801CA/CAM SMBus Controller
! 		1014 0220  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+ 		15d9 3480  P4DP6
+ 		8086 1958  vpr Matrix 170B4
  	2484  82801CA/CAM USB (Hub #2)
! 		1014 0220  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 		15d9 3480  P4DP6
! 		8086 1958  vpr Matrix 170B4
! 	2485  82801CA/CAM AC'97 Audio Controller
! 		1014 0222  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
! 		1014 0508  ThinkPad T30
! 		1014 051c  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 		144d c006  vpr Matrix 170B4
! 	2486  82801CA/CAM AC'97 Modem Controller
! 		1014 0223  ThinkPad A/T/X Series
  		1014 0503  ThinkPad R31 2656BBG
+ 		1014 051a  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+ 		1179 0001  Toshiba Satellite 1110 Z15 internal Modem
  		134d 4c21  Dell Inspiron 2100 internal modem
+ 		144d 2115  vpr Matrix 170B4 internal modem
+ 		14f1 5421  MD56ORD V.92 MDC Modem
  	2487  82801CA/CAM USB (Hub #3)
! 		1014 0220  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+ 		15d9 3480  P4DP6
+ 		8086 1958  vpr Matrix 170B4
  	248a  82801CAM IDE U100
! 		1014 0220  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
! 		8086 1958  vpr Matrix 170B4
! 	248b  82801CA Ultra ATA Storage Controller
! 		15d9 3480  P4DP6
  	248c  82801CAM ISA Bridge (LPC)
! 	24c0  82801DB LPC Interface Controller
! 		1462 5800  845PE Max (MS-6580)
  	24c2  82801DB USB (Hub #1)
! 		1462 5800  845PE Max (MS-6580)
! 	24c3  82801DB/DBM SMBus Controller
! 		1462 5800  845PE Max (MS-6580)
  	24c4  82801DB USB (Hub #2)
! 		1462 5800  845PE Max (MS-6580)
! 	24c5  82801DB AC'97 Audio Controller
! 		1462 5800  845PE Max (MS-6580)
! 	24c6  82801DB AC'97 Modem Controller
  	24c7  82801DB USB (Hub #3)
! 		1462 5800  845PE Max (MS-6580)
! 	24ca  82801DBM Ultra ATA Storage Controller
! 	24cb  82801DB Ultra ATA Storage Controller
! 		1462 5800  845PE Max (MS-6580)
! 	24cc  82801DBM LPC Interface Controller
! 	24cd  82801DB USB2
! 		1462 3981  845PE Max (MS-6580) Onboard USB EHCI Controller
! 	24d0  82801EB LPC Interface Controller
! 	24d1  82801EB Ultra ATA Storage Controller
! 	24d2  82801EB USB
! 	24d3  82801EB SMBus Controller
! 	24d4  82801EB USB
! 	24d5  82801EB AC'97 Audio Controller
! 	24d6  82801EB AC'97 Modem Controller
! 	24d7  82801EB USB
! 	24db  82801EB Ultra ATA Storage Controller
! 	24dc  82801EB LPC Interface Controller
! 	24dd  82801EB USB2
! 	24de  82801EB USB
  	2500  82820 820 (Camino) Chipset Host Bridge (MCH)
  		1028 0095  Precision Workstation 220 Chipset
  		1043 801c  P3C-2000 system chipset
***************
*** 6320,6343 ****
  	2532  82850 850 (Tehama) Chipset AGP Bridge
  	2533  82860 860 (Wombat) Chipset AGP Bridge
  	2534  82860 860 (Wombat) Chipset PCI Bridge
! 	2540  e7500 [Plumas] DRAM Controller
! 	2541  e7500 [Plumas] DRAM Controller Error Reporting
! 	2543  e7500 [Plumas] HI_B Virtual PCI Bridge (F0)
! 	2544  e7500 [Plumas] HI_B Virtual PCI Bridge (F1)
! 	2545  e7500 [Plumas] HI_C Virtual PCI Bridge (F0)
! 	2546  e7500 [Plumas] HI_C Virtual PCI Bridge (F1)
! 	2547  e7500 [Plumas] HI_D Virtual PCI Bridge (F0)
! 	2548  e7500 [Plumas] HI_D Virtual PCI Bridge (F1)
  	2560  82845G/GL [Brookdale-G] Chipset Host Bridge
  	2561  82845G/GL [Brookdale-G] Chipset AGP Bridge
  	2562  82845G/GL [Brookdale-G] Chipset Integrated Graphics Device
  	3092  Integrated RAID
  	3575  82830 830 Chipset Host Bridge
! 		1014 021d  ThinkPad T23 (2647-4MG) or A30p (2653-64G)
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	3576  82830 830 Chipset AGP Bridge
  	3577  82830 CGC [Chipset Graphics Controller]
  	3578  82830 830 Chipset Host Bridge
  	5200  EtherExpress PRO/100 Intelligent Server
  	5201  EtherExpress PRO/100 Intelligent Server
  		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
--- 6900,6947 ----
  	2532  82850 850 (Tehama) Chipset AGP Bridge
  	2533  82860 860 (Wombat) Chipset AGP Bridge
  	2534  82860 860 (Wombat) Chipset PCI Bridge
! 	2540  E7500 Memory Controller Hub
! 		15d9 3480  P4DP6
! 	2541  E7000 Series Host RASUM Controller
! 		15d9 3480  P4DP6
! 	2543  E7000 Series Hub Interface B PCI-to-PCI Bridge
! 	2544  E7000 Series Hub Interface B RASUM Controller
! 	2545  E7000 Series Hub Interface C PCI-to-PCI Bridge
! 	2546  E7000 Series Hub Interface C RASUM Controller
! 	2547  E7000 Series Hub Interface D PCI-to-PCI Bridge
! 	2548  E7000 Series Hub Interface D RASUM Controller
! 	254c  E7501 Memory Controller Hub
! 	2550  E7505 Memory Controller Hub
! 	2551  E7000 Series RAS Controller
! 	2552  E7000 Series Processor to AGP Controller
! 	2553  E7000 Series Hub Interface B PCI-to-PCI Bridge
! 	2554  E7000 Series Hub Interface B PCI-to-PCI Bridge RAS Controller
! 	255d  E7205 Memory Controller Hub
  	2560  82845G/GL [Brookdale-G] Chipset Host Bridge
+ 		1462 5800  845PE Max (MS-6580)
  	2561  82845G/GL [Brookdale-G] Chipset AGP Bridge
  	2562  82845G/GL [Brookdale-G] Chipset Integrated Graphics Device
+ 	2570  82865G/PE/P Processor to I/O Controller
+ 	2571  82865G/PE/P Processor to AGP Controller
+ 	2572  82865G Integrated Graphics Device
+ 	2573  82865G/PE/P Processor to PCI to CSA Bridge
+ 	2576  82864G/PE/P Processor to I/O Memory Interface
+ 	2578  82875P Memory Controller Hub
+ 	2579  82875P Processor to AGP Controller
+ 	257b  82875P Processor to PCI to CSA Bridge
+ 	257e  82875P Processor to I/O Memory Interface
  	3092  Integrated RAID
+ 	3340  82855PM Processor to I/O Controller
+ 	3341  82855PM Processor to AGP Controller
  	3575  82830 830 Chipset Host Bridge
! 		1014 021d  ThinkPad A/T/X Series
  		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
  	3576  82830 830 Chipset AGP Bridge
  	3577  82830 CGC [Chipset Graphics Controller]
+ 		1014 0513  ThinkPad A/T/X Series
  	3578  82830 830 Chipset Host Bridge
+ 	3580  82852/855GM Host Bridge
+ 	3582  82852/855GM Integrated Graphics Device
  	5200  EtherExpress PRO/100 Intelligent Server
  	5201  EtherExpress PRO/100 Intelligent Server
  		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
***************
*** 6353,6358 ****
--- 6957,6963 ----
  	7113  82371AB/EB/MB PIIX4 ACPI
  	7120  82810 GMCH [Graphics Memory Controller Hub]
  	7121  82810 CGC [Chipset Graphics Controller]
+ 		8086 4341  Cayman (CA810) Mainboard
  	7122  82810 DC-100 GMCH [Graphics Memory Controller Hub]
  	7123  82810 DC-100 CGC [Chipset Graphics Controller]
  	7124  82810E DC-133 GMCH [Graphics Memory Controller Hub]
***************
*** 6364,6369 ****
--- 6969,6975 ----
  	7181  440LX/EX - 82443LX/EX AGP bridge
  	7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge
  		0e11 0500  Armada 1750 Laptop System Chipset
+ 		0e11 b110  Armada M700
  		1179 0001  Toshiba Tecra 8100 Laptop System Chipset
  	7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge
  	7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)
***************
*** 6482,6487 ****
--- 7088,7095 ----
  	7478  AHA-2944/2944W / AIC-7874
  	7578  AHA-3944/3944W / AIC-7875
  	7678  AHA-4944W/UW / AIC-7876
+ 	7710  ANA-7711F Network Accelerator Card (NAC) - Optical
+ 	7711  ANA-7711C Network Accelerator Card (NAC) - Copper
  	7778  AIC-787x
  	7810  AIC-7810
  	7815  AIC-7815 RAID+Memory Controller IC
***************
*** 6558,6572 ****
--- 7166,7214 ----
  		9005 62a1  19160 Ultra160 SCSI Controller
  	0083  AIC-7892D U160/m
  	008f  AIC-7892P U160/m
+ 		1179 0001  Magnia Z310
+ 		15d9 9005  Onboard SCSI Host Adapter
  	00c0  AHA-3960D / AIC-7899A U160/m
  		0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter
  		9005 f620  AHA-3960D U160/m
  	00c1  AIC-7899B U160/m
  	00c3  AIC-7899D U160/m
  	00c5  RAID subsystem HBA
+ 		1028 00c5  PowerEdge 2550
  	00cf  AIC-7899P U160/m
+ 		1028 00d1  PowerEdge 2550
+ 		10f1 2462  Thunder K7 S2462
+ 		15d9 9005  Onboard SCSI Host Adapter
+ 	0250  ServeRAID Controller
+ 		1014 0279  ServeRAID-xx
+ 		1014 028c  ServeRAID-xx
  	0285  AAC-RAID
  		1028 0287  PowerEdge Expandable RAID Controller 320/DC
+ 	8000  ASC-29320A U320
+ 	800f  AIC-7901 U320
+ 	8010  ASC-39320 U320
+ 	8011  ASC-32320D U320
+ 		0e11 00ac  U320
+ 		9005 0041  ASC-39320D U320
+ 	8012  ASC-29320 U320
+ 	8013  ASC-29320B U320
+ 	8014  ASC-29320LP U320
+ 	801e  AIC-7901A U320
+ 	801f  AIC-7902 U320
+ 	8080  ASC-29320A U320 w/HostRAID
+ 	808f  AIC-7901 U320 w/HostRAID
+ 	8090  ASC-39320 U320 w/HostRAID
+ 	8091  ASC-39320D U320 w/HostRAID
+ 	8092  ASC-29320 U320 w/HostRAID
+ 	8093  ASC-29320B U320 w/HostRAID
+ 	8094  ASC-29320LP U320 w/HostRAID
+ 	8095  ASC-39320(B) U320 w/HostRAID
+ 	8096  ASC-39320A U320 w/HostRAID
+ 	8097  ASC-29320ALP U320 w/HostRAID
+ 	809c  ASC-39320D(B) U320 w/HostRAID
+ 	809d  AIC-7902(B) U320 w/HostRAID
+ 	809e  AIC-7901A U320 w/HostRAID
+ 	809f  AIC-7902 U320 w/HostRAID
  907f  Atronics
  	2015  IDE-2015PL
  919a  Gigapixel Corp
***************
*** 6587,6592 ****
--- 7229,7236 ----
  aa42  Scitex Digital Video
  ac1e  Digital Receiver Technology Inc
  b1b3  Shiva Europe Limited
+ # Pinnacle should be 11bd, but they got it wrong several times --mj
+ bd11  Pinnacle Systems, Inc. (Wrong ID)
  c001  TSI Telsys
  c0a9  Micron/Crucial Technology
  c0de  Motorola
***************
*** 6594,6599 ****
--- 7238,7246 ----
  ca50  Varian Australia Pty Ltd
  cafe  Chrysalis-ITS
  cccc  Catapult Communications
+ cddd  Tyzx, Inc.
+ 	0101  DeepSea 1 High Speed Stereo Vision Frame Grabber
+ 	0200  DeepSea 2 High Speed Stereo Vision Frame Grabber
  d4d4  Dy4 Systems Inc
  	0601  PCI Mezzanine Card
  d531  I+ME ACTIA GmbH
***************
*** 6602,6613 ****
  e000  Winbond
  	e000  W89C940
  e159  Tiger Jet Network Inc.
! 	0001  Model 300 128k
  		0059 0001  128k ISDN-S/T Adapter
  		0059 0003  128k ISDN-U Adapter
  	0002  Tiger100APC ISDN chipset
  e4bf  EKF Elektronik GmbH
  ea01  Eagle Technology
  eabb  Aashima Technology B.V.
  eace  Endace Measurement Systems, Ltd
  	3100  DAG 3.10 OC-3/OC-12
--- 7249,7265 ----
  e000  Winbond
  	e000  W89C940
  e159  Tiger Jet Network Inc.
! 	0001  Intel 537
  		0059 0001  128k ISDN-S/T Adapter
  		0059 0003  128k ISDN-U Adapter
  	0002  Tiger100APC ISDN chipset
  e4bf  EKF Elektronik GmbH
  ea01  Eagle Technology
+ # The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.
+ ea60  RME
+ 	9896  Digi32
+ 	9897  Digi32 Pro
+ 	9898  Digi32/8
  eabb  Aashima Technology B.V.
  eace  Endace Measurement Systems, Ltd
  	3100  DAG 3.10 OC-3/OC-12
***************
*** 6623,6637 ****
  	422e  DAG 4.2E Dual Gigabit Ethernet
  ec80  Belkin Corporation
  	ec00  F5D6000
! ecc0  Echo Corporation
  edd8  ARK Logic Inc
  	a091  1000PV [Stingray]
  	a099  2000PV [Stingray]
  	a0a1  2000MT
  	a0a9  2000MI
  fa57  Fast Search & Transfer ASA
  febd  Ultraview Corp.
! feda  Epigram Inc
  fffe  VMWare Inc
  	0710  Virtual SVGA
  ffff  Illegal Vendor ID
--- 7275,7303 ----
  	422e  DAG 4.2E Dual Gigabit Ethernet
  ec80  Belkin Corporation
  	ec00  F5D6000
! ecc0  Echo Digital Audio Corporation
! 	0050  Gina24_301
! 	0051  Gina24_361
! 	0060  Layla24
! 	0070  Mona_301_80
! 	0071  Mona_301_66
! 	0072  Mona_361
! 	0080  Mia
  edd8  ARK Logic Inc
  	a091  1000PV [Stingray]
  	a099  2000PV [Stingray]
  	a0a1  2000MT
  	a0a9  2000MI
+ f1d0  AJA Video
+ # All boards I have seen have this ID not efac, though all docs say efac...
+ 	cafe  KONA SD SMPTE 259M I/O
+ 	efac  KONA SD SMPTE 259M I/O
+ 	facd  KONA HD SMPTE 292M I/O
  fa57  Fast Search & Transfer ASA
  febd  Ultraview Corp.
! feda  Broadcom Inc (nee Epigram)
! 	a0fa  BCM4210 iLine10 HomePNA 2.0
! 	a10e  BCM4230 iLine10 HomePNA 2.0
  fffe  VMWare Inc
  	0710  Virtual SVGA
  ffff  Illegal Vendor ID
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/Config.in linux-2.4.20-aralion-0.1/drivers/scsi/Config.in
*** linux-2.4.20-aralion-0.0/drivers/scsi/Config.in	2003-11-26 16:26:07.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/Config.in	2003-11-26 16:30:31.000000000 +0900
***************
*** 205,210 ****
--- 205,215 ----
  if [ "$CONFIG_X86" = "y" ]; then
     dep_tristate 'UltraStor SCSI support' CONFIG_SCSI_ULTRASTOR $CONFIG_SCSI
  fi
+ if [ "$CONFIG_X86" = "y" ]; then
+    if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+       dep_tristate 'Ultima RAID 133 support (EXPERIMENTAL)' CONFIG_SCSI_ULTIMARAID133 $CONFIG_SCSI
+    fi
+ fi
  dep_tristate 'Workbit NinjaSCSI-32Bi/UDE support' CONFIG_SCSI_NSP32 $CONFIG_SCSI
  #
  # Note - this is a very special 'host' adapter that simulates the presence of some disks.
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/Makefile linux-2.4.20-aralion-0.1/drivers/scsi/Makefile
*** linux-2.4.20-aralion-0.0/drivers/scsi/Makefile	2003-11-26 16:26:14.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/Makefile	2003-11-26 16:30:32.000000000 +0900
***************
*** 30,35 ****
--- 30,36 ----
  subdir-m			+= aic7xxx
  subdir-$(CONFIG_SCSI_NEWISP)	+= isp
  subdir-$(CONFIG_PCMCIA)		+= pcmcia
+ subdir-$(CONFIG_SCSI_ULTIMARAID133)	+= ultimaraid133
  
  
  obj-$(CONFIG_SCSI)		+= scsi_mod.o
***************
*** 76,81 ****
--- 77,85 ----
  ifeq ($(CONFIG_SCSI_AIC79XX),y)
    obj-$(CONFIG_SCSI_AIC79XX)	+= aic7xxx/aic79xx.o
  endif
+ ifeq ($(CONFIG_SCSI_ULTIMARAID133),y)
+   obj-$(CONFIG_SCSI_ULTIMARAID133)	+= ultimaraid133/ultimaraid133.o
+ endif
  obj-$(CONFIG_SCSI_AIC7XXX_OLD)	+= aic7xxx_old.o
  obj-$(CONFIG_SCSI_IPS)		+= ips.o
  ifeq ($(CONFIG_SCSI_NEWISP),y)
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/Makefile linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/Makefile
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/Makefile	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/Makefile	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,16 ----
+ # File: drivers/ultimaraid133/Makefile
+ # Makefile for the Ultima RAID 133 PCI controllers driver.
+ 
+ list-multi := ultimaraid133.o
+ ultima133-objs := ultima.o
+ obj-$(CONFIG_SCSI_ULTIMARAID133) := ultimaraid133.o
+ 
+ EXTRA_CFLAGS += -I.
+ 
+ ultimaraid133.o: $(ultima133-objs)
+ 	$(LD) -r -o $@ $(ultima133-objs)
+ 
+ include $(TOPDIR)/Rules.make
+ 
+ clean:
+ 	rm -f *.o
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/README linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/README
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/README	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/README	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,22 ----
+ Ultima RAID 133 Driver for Linux
+ 
+ Introduction
+ -------------------------
+ Original Driver was supported by Aralion(http://www.aralion.co.kr)
+ 
+ Supported Cards/Chipsets
+ -------------------------
+ 	Ultima RAID 133
+ 
+ People
+ -------------------------
+ Aralion Linux Dev. <www.aralion.co.kr>	(Original ATA ONLY Driver source)
+ Ashuaria Lee <ashuaria@intizen.com>	(Patch for Linux Kernel Tree)
+ 
+ Original Driver
+ -------------------------
+ Aralion Linux Development
+ 
+ Mailing List
+ -------------------------
+ None yet!
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/TODO linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/TODO
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/TODO	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/TODO	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,3 ----
+ o	Testing
+ o	More testing
+ o	Many more
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/atapi.h linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/atapi.h
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/atapi.h	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/atapi.h	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,300 ----
+ #ifndef _ATAPI_H
+ #define _ATAPI_H
+ 
+ #ifndef UCHAR 
+ #define UCHAR 	unsigned char
+ #define USHORT	unsigned short
+ #define	ULONG	unsigned long
+ #endif 
+ 
+ #define IDE_STATUS_ERROR             0x01 
+ #define IDE_STATUS_INDEX             0x02
+ #define IDE_STATUS_CORRECTED_ERROR   0x04
+ #define IDE_STATUS_DRQ               0x08 
+ #define IDE_STATUS_DSC               0x10
+ #define IDE_STATUS_DRDY              0x40
+ #define IDE_STATUS_IDLE              0x50
+ #define IDE_STATUS_BUSY              0x80  
+ 
+ 
+ #define IDE_ERROR_BAD_BLOCK          0x80  // ICRC  :Crc error
+ #define IDE_ERROR_DATA_ERROR         0x40  // UNC   :data error
+ #define IDE_ERROR_MEDIA_CHANGE       0x20   
+ #define IDE_ERROR_ID_NOT_FOUND       0x10  // IDNF  :sector's ID field error
+ #define IDE_ERROR_MEDIA_CHANGE_REQ   0x08   
+ #define IDE_ERROR_COMMAND_ABORTED    0x04  // ABRT  :command error 
+ #define IDE_ERROR_END_OF_MEDIA       0x02  
+ #define IDE_ERROR_ILLEGAL_LENGTH     0x01
+ //
+ // IDE command definitions
+ //
+ #define IDE_COMMAND_ATAPI_RESET           0x08  // Don't use!
+ #define IDE_COMMAND_RECALIBRATE           0x10
+ #define IDE_COMMAND_READ                  0x20  // <---
+ #define IDE_COMMAND_WRITE                 0x30  // <---
+ #define IDE_COMMAND_VERIFY                0x40  // <---
+ #define IDE_COMMAND_SEEK                  0x70
+ #define IDE_COMMAND_SET_DRIVE_PARAMETERS  0x91
+ #define IDE_COMMAND_ATAPI_PACKET          0xA0  // Don't use!
+ #define IDE_COMMAND_ATAPI_IDENTIFY        0xA1  // Don't use!
+ #define IDE_COMMAND_READ_MULTIPLE         0xC4  // <---
+ #define IDE_COMMAND_WRITE_MULTIPLE        0xC5  // <--- 
+ #define IDE_COMMAND_SET_MULTIPLE          0xC6
+ #define IDE_COMMAND_READ_DMA              0xC8  // <---
+ #define IDE_COMMAND_WRITE_DMA             0xCA  // <---
+ #define IDE_COMMAND_GET_MEDIA_STATUS      0xDA
+ #define IDE_COMMAND_ENABLE_MEDIA_STATUS   0xEF  // Feature Set 
+ #define IDE_COMMAND_IDENTIFY              0xEC  // <---
+ #define IDE_COMMAND_MEDIA_EJECT           0xED
+ 
+ 
+ //////////////////////////////////KHG133s_Big//////////////////////////////////////
+ #define IDE_COMMAND_READ_DMA_EXT	  0x25
+ #define IDE_COMMAND_WRITE_DMA_EXT	  0x35
+ #define IDE_COMMAND_READ_SECTORS	  0x20
+ #define IDE_COMMAND_WRITE_SECTORS	  0x30
+ #define IDE_COMMAND_READ_SECTORS_EXT	  0x24
+ #define IDE_COMMAND_WRITE_SECTORS_EXT	  0x34
+ ///////////////////////////////////////////////////////////////////////////////////
+ //
+ //DmaCommand bits definition
+ //
+ #define DMA_READ     0x07
+ #define DMA_WRITE    0x06
+ 
+ //
+ // Mode Register bit definotion
+ //
+ #define MODE_PIO        0x00
+ #define MODE_DMA        0x01
+ #define MODE_UDMA       0x03
+ 
+ //
+ // HDD DMA Mode Support
+ //
+ #define DMA_0           0x01
+ #define DMA_1           0x03
+ #define DMA_2           0x07
+ #define UDMA_0          0x08
+ #define UDMA_1          0x18
+ #define UDMA_2          0x38
+ 
+ //
+ // Multiple sector setting is valid by HBA.
+ //
+ #define MULTIPLE_SET    0x0100
+ 
+ //
+ // Device Extension Device Flags
+ //
+ #define DFLAGS_DEVICE_PRESENT        0x0001    // Indicates that some device is present.
+ #define DFLAGS_DMA_DEVICE            0x0002    // Device is a DMA or UDMA device.
+ #define DFLAGS_PIO_DEVICE            0x0004    // Device is a PIO device.
+ 
+ //
+ // Used to disable 'advanced' features.
+ //
+ #define MAX_ERRORS                     4       // FOR IDE ERROR in MapError()
+ 
+ #ifdef XXX
+ typedef struct _IDENTIFY_DATA {
+ 	USHORT GeneralConfiguration;            // 00 00
+ 	USHORT NumberOfCylinders;               // 02  1
+ 	USHORT Reserved1;                       // 04  2
+ 	USHORT NumberOfHeads;                   // 06  3
+ 	USHORT UnformattedBytesPerTrack;        // 08  4
+ 	USHORT UnformattedBytesPerSector;       // 0A  5
+ 	USHORT SectorsPerTrack;                 // 0C  6
+ 	USHORT VendorUnique1[3];                // 0E  7-9
+ 	USHORT SerialNumber[10];                // 14  10-19
+ 	USHORT BufferType;                      // 28  20
+ 	USHORT BufferSectorSize;                // 2A  21
+ 	USHORT NumberOfEccBytes;                // 2C  22
+ 	USHORT FirmwareRevision[4];             // 2E  23-26
+ 	USHORT ModelNumber[20];                 // 36  27-46
+ 	UCHAR  MaximumBlockTransfer;            // 5E  47
+ 	UCHAR  VendorUnique2;                   // 5F
+ 	USHORT DoubleWordIo;                    // 60  48
+ 	USHORT Capabilities;                    // 62  49
+ 	USHORT Reserved2;                       // 64  50
+ 	UCHAR  VendorUnique3;                   // 66  51
+ 	UCHAR  PioCycleTimingMode;              // 67
+ 	UCHAR  VendorUnique4;                   // 68  52
+ 	UCHAR  DmaCycleTimingMode;              // 69
+ 	USHORT TranslationFieldsValid:1;        // 6A  53
+ 	USHORT Reserved3:15;
+ 	USHORT NumberOfCurrentCylinders;        // 6C  54
+ 	USHORT NumberOfCurrentHeads;            // 6E  55
+ 	USHORT CurrentSectorsPerTrack;          // 70  56
+ 	ULONG  CurrentSectorCapacity;           // 72  57-58
+ 	USHORT CurrentMultiSectorSetting;       //     59
+ 	ULONG  UserAddressableSectors;          //     60-61
+ 	USHORT SingleWordDMASupport : 8;        //     62
+ 	USHORT SingleWordDMAActive : 8;
+ 	USHORT MultiWordDMASupport : 8;         //     63
+ 	USHORT MultiWordDMAActive : 8;
+ 	USHORT AdvancedPIOModes : 8;            //     64
+ 	USHORT Reserved4 : 8;
+ 	USHORT MinimumMWXferCycleTime;          //     65
+ 	USHORT RecommendedMWXferCycleTime;      //     66
+ 	USHORT MinimumPIOCycleTime;             //     67
+ 	USHORT MinimumPIOCycleTimeIORDY;        //     68
+ 	USHORT Reserved5[2];                    //     69-70
+ 	USHORT ReleaseTimeOverlapped;           //     71
+ 	USHORT ReleaseTimeServiceCommand;       //     72
+ 	USHORT MajorRevision;                   //     73
+ 	USHORT MinorRevision;                   //     74
+ 	USHORT Reserved6[11];                   //     75-126
+ 	USHORT DmaMode[6];
+ 	USHORT Reserved7[33];                   //     75-126
+ 	USHORT SpecialFunctionsEnabled;         //     127
+ 	USHORT Reserved8[128];                  //     128-255
+ } IDENTIFY_DATA, *PIDENTIFY_DATA;
+ #endif
+ 
+ //
+ // IDENTIFY data
+ //
+ typedef struct _IDENTIFY_DATA {
+     USHORT GeneralConfiguration;            // 00 00
+     USHORT NumberOfCylinders;               // 02  1
+     USHORT Reserved1;                       // 04  2
+     USHORT NumberOfHeads;                   // 06  3
+     USHORT UnformattedBytesPerTrack;        // 08  4
+     USHORT UnformattedBytesPerSector;       // 0A  5
+     USHORT SectorsPerTrack;                 // 0C  6
+     USHORT VendorUnique1[3];                // 0E  7-9
+     USHORT SerialNumber[10];                // 14  10-19
+     USHORT BufferType;                      // 28  20
+     USHORT BufferSectorSize;                // 2A  21
+     USHORT NumberOfEccBytes;                // 2C  22
+     USHORT FirmwareRevision[4];             // 2E  23-26
+     USHORT ModelNumber[20];                 // 36  27-46
+     UCHAR  MaximumBlockTransfer;            // 5E  47
+     UCHAR  VendorUnique2;                   // 5F
+     USHORT DoubleWordIo;                    // 60  48
+     USHORT Capabilities;                    // 62  49
+     USHORT Reserved2;                       // 64  50
+     UCHAR  VendorUnique3;                   // 66  51
+     UCHAR  PioCycleTimingMode;              // 67
+     UCHAR  VendorUnique4;                   // 68  52
+     UCHAR  DmaCycleTimingMode;              // 69
+     
+ 	UCHAR  TranslationFieldsValid;          // 6A  53
+     UCHAR  Reserved3;
+ 	/*
+ 	USHORT TranslationFieldsValid:3;        // 6A  53
+     USHORT Reserved3:13;
+     */
+ 
+     USHORT NumberOfCurrentCylinders;        // 6C  54
+     USHORT NumberOfCurrentHeads;            // 6E  55
+     USHORT CurrentSectorsPerTrack;          // 70  56
+     USHORT CurrentSectorCapacity[2];        // 72  57-58
+ 
+ 	/////// Out of spec! //////////// 
+     USHORT CurrentMultiSectorSetting;       //     59
+     USHORT UserAddressableSectors[2];          //     60-61
+ 
+     UCHAR  SingleWordDMASupport;            //     62  Low
+     UCHAR  SingleWordDMAActive;             //         High
+ 	/*
+     USHORT SingleWordDMASupport:8;          //     62  Low
+     USHORT SingleWordDMAActive:8;           //         High
+     */
+ 
+ 	UCHAR  MultiWordDMASupport;             //     63  Low
+     UCHAR  MultiWordDMAActive;              //         High
+ 	/*
+ 	USHORT MultiWordDMASupport:3;           //     63  Low
+     USHORT MultiWordDMAActive:13;           //         High
+     */
+ 
+ 	UCHAR  AdvancedPIOModes;                //     64
+     UCHAR  Reserved4;
+     /*
+ 	USHORT AdvancedPIOModes:8;              //     64
+     USHORT Reserved4:8;
+     */
+ 
+     USHORT MinimumMWXferCycleTime;          //     65
+     USHORT RecommendedMWXferCycleTime;      //     66
+     USHORT MinimumPIOCycleTime;             //     67
+     USHORT MinimumPIOCycleTimeIORDY;        //     68
+     USHORT Reserved5[2];                    //     69-70
+     USHORT ReleaseTimeOverlapped;           //     71
+     USHORT ReleaseTimeServiceCommand;       //     72
+     USHORT MajorRevision;                   //     73
+     USHORT MinorRevision;                   //     74
+ 
+ //////////////////////////////////KHG-133s_Big////////////////////////////////	
+ 	USHORT Reserved6[8];                   //     75-82
+ 	USHORT BIT48;                  		 //     83
+ 	USHORT Reserved6_1[4];                   //     84-87
+ ////////////////////////////////////////////////////////////////////////////// 
+ 	
+ 	UCHAR  UDMASupport;                     //     88
+ 	UCHAR  UDMASelected;                    //
+ 	/*
+ 	USHORT UDMASupport:3;                   //     88
+ 	USHORT UDMASelected:13;                 //
+     */
+ 
+ 	USHORT Reserved7[38];                   //     89-126
+     USHORT SpecialFunctionsEnabled;         //     127
+     USHORT Reserved8[128];                  //     128-255
+ } IDENTIFY_DATA, *PIDENTIFY_DATA;
+ typedef struct _INQUIRYDATA {
+ 	UCHAR DeviceType : 5;
+ 	UCHAR DeviceTypeQualifier : 3;
+ 	UCHAR DeviceTypeModifier : 7;
+ 	UCHAR RemovableMedia : 1;
+ 	UCHAR Versions;
+ 	UCHAR ResponseDataFormat;
+ 	UCHAR AdditionalLength;
+ 	UCHAR Reserved[2];
+ 	UCHAR SoftReset : 1;
+ 	UCHAR CommandQueue : 1;
+ 	UCHAR Reserved2 : 1;
+ 	UCHAR LinkedCommands : 1;
+ 	UCHAR Synchronous : 1;
+ 	UCHAR Wide16Bit : 1;
+ 	UCHAR Wide32Bit : 1;
+ 	UCHAR RelativeAddressing : 1;
+ 	UCHAR VendorId[8];
+ 	UCHAR ProductId[16];
+ 	UCHAR ProductRevisionLevel[4];
+ 	UCHAR VendorSpecific[20];
+ 	UCHAR Reserved3[40];
+ } INQUIRYDATA, *PINQUIRYDATA;
+ 
+ #define DIRECT_ACCESS_DEVICE            0x00    // disks
+ #define SEQUENTIAL_ACCESS_DEVICE        0x01    // tapes
+ #define PRINTER_DEVICE                  0x02    // printers
+ #define PROCESSOR_DEVICE                0x03    // scanners, printers, etc
+ #define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04    // worms
+ #define READ_ONLY_DIRECT_ACCESS_DEVICE  0x05    // cdroms
+ #define SCANNER_DEVICE                  0x06    // scanners
+ #define OPTICAL_DEVICE                  0x07    // optical disks
+ #define MEDIUM_CHANGER                  0x08    // jukebox
+ #define COMMUNICATION_DEVICE            0x09    // network
+ #define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F
+ #define DEVICE_QUALIFIER_NOT_SUPPORTED  0x03
+ 
+ #define PDTLAR						0X00
+ #define PDTHAR						0x02
+ #define CMDR						0x04
+ #define DMAMODE						0x06
+ #define PIO_TIM						0x08
+ #define MDM_TIM						0x0a
+ #define UDM_TIM						0x0c
+ #define CONSR						0x0e
+ 
+ #define INTSRC						0x00
+ #define CBL_ID						0x02
+ #define INTENA						0x04
+ #define RAIDSTAT					0x06
+ 
+ #endif
+ 
+ 
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/flash.h linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/flash.h
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/flash.h	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/flash.h	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,64 ----
+ #ifndef __FLASH_H__
+ #define __FLASH_H__
+ 
+ #define   VID	     0x1538
+ #define 	DID133	0x0303
+ #define 	DID100    0x0301
+ 
+ #define    F_DATA	   F_BASE + 0
+ #define    F_ADDR	   F_BASE + 2
+ #define    F_CMDR	   F_BASE + 4
+ #define    F_STAT	   F_BASE + 6
+ 
+ #define    FCMD_RD	   0x86
+ #define    FCMD_WR	   0x87
+ 
+ #define    FST_SIG	   0xAA
+ #define    SND_SIG	   0x55
+ #define    TRD_SIG	   0xA0
+ #define    FTH_SIG	   0xf0
+ 
+ #define    FST_ADR	   0x0555    /*0x5555 */
+ #define    SND_ADR	   0x0AAA    /*0x2aaa */
+ #define    TRD_ADR	   0x0555
+ 
+ #define    SECTORCNT	   512
+ #define    BUFFERCNT	   128
+ 
+ #define    MXMANUFAC	   0xC2
+ #define    MXDEVIC	        0x19      /* 29F001B */
+ #define    MXDEVIC1	        0x18      /* 29F001T */
+ 
+ #define    SMMANUFAC	   0x40
+ #define    SMDEVIC	        0x01      /* F295001T */
+ #define    SMDEVIC1	        0xA1      /* F295001B */  /* must be lock or unlock */
+ 
+ #define    AMICMANUFAC      0x37
+ #define    AMICDEVICE       0xa1
+ //#define    AMICDEVICE      0xa1
+ 
+ #define    MPFMANUFAC       0xbf
+ #define    MPFDEVICE1       0xb6       /*SST39SF020A*/
+ #define    MPFDEVICE        0xb5       /*SST39SF010*/
+ 
+ #define    AMDMANUFAC       0x01
+ #define    AMDDEVICE	   0x20      /* AM29F010B  */
+ 
+ 
+ #define    ATMANUFAC	   0x1F
+ #define    ATDEVIC	        0x5D      /* AT29C512  */
+ #define    ATDEVIC1	   	   0x3D      /* AT29LV512 */
+ #define    ATDEVIC2	 	   0xD5      /* AT29C001  */
+ #define    ATDEVIC3	        0x35      /* AT29LV001 */
+ #define    ATDEVIC4	        0xDC      /* AT29C256  */
+ 
+ #define    WIMANUFAC        0xDA
+ #define    WIDEVIC	        0xc8      /* W29C512   */
+ #define    WIDEVIC1	        0xC1      /* W29C010   */
+ #define    WIDEVIC2	        0x45      /* W29C020   */
+ 
+ #define RAIDTYPE  0x06
+ #define CARDCOUNT 0X08
+ 
+ #endif
+ 
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/iocontrol.h linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/iocontrol.h
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/iocontrol.h	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/iocontrol.h	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,146 ----
+ ///////////////////////// Ioctl start
+ /*	IoControl.h	*/
+ /* 
+ 	This header is defined for RAID monitor Util and 
+ 	should be shared with the App's header. 
+ */
+ 
+ // REQUESTs to ULTIMA from GUI.
+ #define IOCTL_ULTIMA_PRESENT	0x80018001 // ~ ~ ~ ~ 1000 0000 0000 0001
+ #define IOCTL_GET_ULTIMA_STATUS	0x80018002 // ~ ~ ~ ~ 1000 0000 0000 0010
+ #define IOCTL_EXECUTIVE_COMMAND	0x80018004 // ~ ~ ~ ~ 1000 0000 0000 0100
+ #define IOCTL_GET_HDD_FLAGS		0x80018008 // ~ ~ ~ ~ 1000 0000 0000 1000
+ #define IOCTL_ULTIMA_RESET		0x80018010 // ~ ~ ~ ~ 1000 0000 0001 0000
+ #define IOCTL_GET_ERROR_STATUS	0x80018020 // ~ ~ ~ ~ 1000 0000 0010 0000
+ #define IOCTL_UPDATE_IDENTIFY	0x80018040 // ~ ~ ~ ~ 1000 0000 0010 0000 ~~ 2000/06/20
+ #define IOCTL_ULTIMA_REBUILD_COMPLETE	0x80018080 // ~~2000/08/02
+ #define	IOCTL_ULTIMA_REBUILD_CANCEL     0x80018100 // ~~2000/08/11
+ #define	IOCTL_ULTIMA_MOVE_DATA     0x80018101 // ~~2000/08/11
+ #define	IOCTL_FLASH_READ		0x80018200 // ~~2000/08/11
+ #define	IOCTL_FLASH_WRITE		0x80018400 // ~~2000/08/11
+ #define IOCTL_TEST_EVENT        0x80018800
+ 
+ 
+ typedef struct _SRB_IO_CONTROL {
+         ULONG HeaderLength; 
+         UCHAR Signature[8];
+         ULONG Timeout;
+         ULONG ControlCode;
+         ULONG ReturnCode;
+         ULONG Length;
+ } SRB_IO_CONTROL, *PSRB_IO_CONTROL;
+ 
+ typedef struct _SRB_BUFFER {
+     SRB_IO_CONTROL sic;
+     UCHAR          ucDataBuffer[512]; // Extended DATA BUFFER
+ } SRB_BUFFER, *PSRB_BUFFER;
+ 
+ typedef struct _REBUILDSIZE {
+ 	DWORD	DiskID;
+ 	DWORD	Size;	
+ } REBUILDSIZE;
+ 
+ typedef struct _HDD_STATUS {
+ 	
+ 	USHORT NumberOfCylinders;
+ 	USHORT NumberOfHeads;    
+ 	USHORT SectorsPerTrack;  
+ 	USHORT VendorUnique1[3]; 
+ 	USHORT SerialNumber[10]; 
+ 	USHORT FirmwareRevision[4];
+ 	USHORT ModelNumber[20];    
+ //	USHORT UserAddressableSectors[2];
+ 	DWORD  BlockSize; 
+ 	UCHAR  UDMASupport;              
+ 	UCHAR  UDMAPresentMode;
+ 	
+ } HDD_STATUS, *PHDD_STATUS;
+ 
+ typedef struct 	_GUI_INTERFACE_B
+ {
+ 	V6INTERFACEB Interface;
+ 	HDD_STATUS	HddStatus[4][4];
+ 	UCHAR BiosDeviceNum;
+ 	UCHAR BiosManufacNum;
+ } GuiInterface, *PGuiInterface;
+ 
+ 
+ typedef struct 	_GUI_INTERFACE_B2
+ {
+ 	SRB_IO_CONTROL sic;
+ 	V6INTERFACEB Interface;
+ 	HDD_STATUS	HddStatus[4][4];
+ 	UCHAR BiosDeviceNum;
+ 	UCHAR BiosManufacNum;
+ 
+ } GuiInterface2, *PGuiInterface2;
+ 
+ typedef struct _GUI_FLAG
+ {
+ 	UCHAR IsActingHdd[4][2][2];
+ 	UCHAR IsHereHdd[4][2][2];
+ 	UCHAR RemovedHdd[4][2][2];
+ 	UCHAR RebuildHdd[4][2][2];
+ 	UCHAR SourceHdd[4][2][2];
+ 	ULONG DiskID[4][2][2];
+ 	ULONG Order[4][2][2];
+ 	ULONG RunRebuildTime[16];
+ 	ULONG Reserved;
+ } GUI_FLAG,*PGUI_FLAG;
+ 
+ /*
+ UI Interface�� �� ����ü�� �����մϴ�.(1�ʸ��� ����)
+ 
+  UCHAR IsActingHdd[CardNumber][TargerId] : Hdd Read/Write Working status
+  UCHAR IsHereHdd[CardNumber][TargerId] : Hdd ���� ���� �÷���.
+  UCHAR RebuildHdd[CardNumber][TargerId] : Rebuild���ϴ� Hdd
+  UCHAR SourceHdd[CardNumber][TargerId] : Source Hdd
+  ULONG RunRebuildTime; : Rebuild�ؾ��� ������ TRUE����.
+ */
+ 
+ 
+ typedef struct _GUI_FLAG2
+ {
+ 	SRB_IO_CONTROL sic;
+ 	UCHAR IsActingHdd[4][4];
+ 	UCHAR IsHereHdd[4][4];
+ 	UCHAR RebuildHdd[4][4];
+ 	UCHAR SourceHdd[4][4];
+ 	ULONG RunRebuildTime;
+ 	ULONG Reserved;
+ } GUI_FLAG2,*PGUI_FLAG2;
+ 
+ typedef struct _MOVEDATA_
+ {
+ 	DWORD DiskID;
+ 	UCHAR SourceCard;
+ 	UCHAR SourceTargetId;
+ 	UCHAR TargetCard;
+ 	UCHAR TargetTargetId;
+ 	ULONG LbaAddress;
+ 	ULONG Size;
+ }MOVEDATA,*PMOVEDATA;
+ 
+ 
+ //
+ // Define SCSI maximum configuration parameters.
+ //
+ 
+ #define SCSI_MAXIMUM_LOGICAL_UNITS 8
+ #define SCSI_MAXIMUM_TARGETS_PER_BUS 32
+ #define SCSI_MAXIMUM_BUSES 8
+ #define SCSI_MINIMUM_PHYSICAL_BREAKS  16
+ #define SCSI_MAXIMUM_PHYSICAL_BREAKS 255
+ 
+ //
+ // This constant is for backward compatibility.
+ // This use to be the maximum number of targets supported.
+ //
+ 
+ #define SCSI_MAXIMUM_TARGETS 8
+ 
+ // begin_ntminitape
+ 
+ #define MAXIMUM_CDB_SIZE 12
+ 
+ // end_ntminitape
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/ultima.c linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/ultima.c
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/ultima.c	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/ultima.c	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,1931 ----
+ /*******************************************************************
+ 
+   Aralion Ultima ATA133 IDE Raid Controller
+   Linux Device Driver source, programmed by soonsoo@hitel.net
+ 
+  *******************************************************************/
+ //#define  __BOOT_KERNEL_BOOT	1
+ 
+ //#define	DEBUG1	1
+ //#define	DEBUG2	1
+ //#define	DEBUG3	1
+ //#define	DEBUG4	1
+ 
+ #include <linux/version.h>
+ #include <linux/module.h>
+ #include <linux/stddef.h>
+ #include <linux/string.h>
+ #include <linux/sched.h>
+ #include <linux/kernel.h>
+ #include <linux/ioport.h>
+ #include <linux/delay.h>
+ #include <linux/proc_fs.h>
+ #include <linux/spinlock.h>
+ #include <asm/io.h>
+ #include <asm/bitops.h>
+ #include <asm/system.h>
+ #include <asm/dma.h>
+ #include <linux/blk.h>
+ #include "../scsi.h"
+ #include "../hosts.h"
+ #include "../sd.h"
+ #include "ultima.h"
+ #include "atapi.h"
+ #include <linux/errno.h>
+ #include <linux/pci.h>
+ #include <linux/stat.h>
+ #include <linux/config.h>	/* for CONFIG_PCI */
+ #include <linux/fs.h>
+ #include <asm/segment.h> /* for put_user_byte */
+ #include <asm/uaccess.h>
+ #include <asm/atomic.h>
+ #include "iocontrol.h"
+ #include "flash.h"
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+ #define KERNEL240
+ #else
+ #define KERNEL220
+ #endif
+ 
+ #define S_BOARD(x,y) (DiskID[x].DiskStatus.BoardID)
+ #define S_CHAN(x,y) (DiskID[x].DiskStatus.Channel)
+ #define S_DRV(x,y) (DiskID[x].DiskStatus.Drive)
+ #define RAID(x) (DiskID[x].RaidStatus)
+ #define DEG	printk("<1> "__FUNCTION__": %d\n",__LINE__)
+ ////////////////////////////////////////////////////////////////////////////////
+ 
+ static void     print_banner(struct Scsi_Host *shpnt);
+ char * 		GetCmdName(char code);
+ static void    print_banner(struct Scsi_Host *shpnt);
+ static void    do_pause(ULONG amount);
+ static int     aralion_pci_bios_detect(int *irq);
+ ULONG			GetBlockCount(int BoardID,int channel,int drive);
+ int			RequestAllIrq(void);
+ void 			PutLBAvalue(ULONG IOPort1,
+ 		ULONG lba,
+ 		ULONG numsectors,
+ 		ULONG DriveSelect);
+ void			DisableInterrupt(int BoardID);
+ void			EnableInterrupt(int BoardID);
+ ULONG			SetBoardInterruptFlag(int BoardID,int Channel,DWORD Status);
+ ULONG 			SetScatterList(Scsi_Cmnd *SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors,
+ 		ULONG ReadWrite);
+ void 			SetIOPort(DISKLIST *pList,USHORT DmaRW,DWORD OrderFlag);
+ void 			SetIOInformation(int tid,USHORT DmaRW,DWORD OrderFlag);
+ ULONG 			PutOneScatterList(ULONG	CurrentID,
+ 		DWORD PrimaryDiskArrayCount,
+ 		DISKLIST *PrimaryDiskArray,
+ 		ULONG lba,
+ 		ULONG buffer,
+ 		USHORT length);
+ void			SetIDECommand(DWORD Command, DWORD order);
+ DWORD			BigDiskCommand (DWORD cmnd);
+ void			SetDMACommand(USHORT DmaRW,DWORD OrderFlag);
+ static int		ReadDMA(Scsi_Cmnd * SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors);
+ static int		WriteDMA(Scsi_Cmnd * SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors);
+ void		GetUDMAMode(USHORT *mode,
+ 		USHORT *Timing,
+ 		IDENTIFY_DATA * IdentifyData);
+ void		SetUDMAMode(int BoardID, int Channel, int Drive);
+ static int	IdentifyDisk(int BoardID,
+ 		int Channel, 
+ 		int DriveSelect, 
+ 		IDENTIFY_DATA * IdentifyData);
+ static void		my_done(int error);
+ int				CheckScsiError(ULONG Channel,ULONG IOPort1,UCHAR statusByte);
+ void			CheckJobFinished(ULONG BoardID,ULONG Channel);
+ int 			IsSplitter(char c);
+ int            	ultima_1cardreset(int BoardID);
+ int            	ultima_cardreset(void);
+ void 			do_ultima_intr(int irq, void *dev_id, struct pt_regs *regs);
+ void			internal_done(Scsi_Cmnd * SCpnt);
+ void          	print_info(Scsi_Cmnd * SCpnt);
+ 
+ ////////////////////////////////////////////////////////////////////////////////
+ 
+ struct proc_dir_entry proc_scsi_aralion = {
+ 	0x10, 7, "aralion",
+ 	S_IFDIR | S_IRUGO | S_IXUGO, 2
+ };
+ 
+ Scsi_Host_Template driver_template = ULTIMA_DMA133;
+ 
+ #define VERSION          "$Revision: LH 1.11BCS $"
+ 
+ enum {
+ 	in_arbitration = 0x02,
+ 	in_selection = 0x04,
+ 	in_other = 0x08,
+ 	disconnect = 0x10,
+ 	aborted = 0x20,
+ 	sent_ident = 0x40,
+ };
+ 
+ typedef struct {
+ 	char name[23];
+ 	char code;
+ } CMDNAME;
+ 
+ CMDNAME CmdName[] =
+ {
+ 	{"TEST_UNIT_READY",0x00},
+ 	{"REZERO_UNIT",0x01},
+ 	{"REQUEST_SENSE",0x03},
+ 	{"FORMAT_UNIT",0x04},
+ 	{"READ_BLOCK_LIMITS",0x05},
+ 	{"REASSIGN_BLOCKS",0x07},
+ 	{"READ_6",0x08},
+ 	{"WRITE_6",0x0a},
+ 	{"SEEK_6",0x0b},
+ 	{"READ_REVERSE",0x0f},
+ 	{"WRITE_FILEMARKS",0x10},
+ 	{"SPACE",0x11},
+ 	{"INQUIRY",0x12},
+ 	{"RECOVER_BUFFERED_DATA",0x14},
+ 	{"MODE_SELECT",0x15},
+ 	{"RESERVE",0x16},
+ 	{"RELEASE",0x17},
+ 	{"COPY",0x18},
+ 	{"ERASE",0x19},
+ 	{"MODE_SENSE",0x1a},
+ 	{"START_STOP",0x1b},
+ 	{"RECEIVE_DIAGNOSTIC",0x1c},
+ 	{"SEND_DIAGNOSTIC",0x1d},
+ 	{"ALLOW_MEDIUM_REMOVAL",0x1e},
+ 	{"SET_WINDOW",0x24},
+ 	{"READ_CAPACITY",0x25},
+ 	{"READ_10",0x28},
+ 	{"WRITE_10",0x2a},
+ 	{"SEEK_10",0x2b},
+ 	{"WRITE_VERIFY",0x2e},
+ 	{"VERIFY",0x2f},
+ 	{"SEARCH_HIGH",0x30},
+ 	{"SEARCH_EQUAL",0x31},
+ 	{"SEARCH_LOW",0x32},
+ 	{"SET_LIMITS",0x33},
+ 	{"PRE_FETCH",0x34},
+ 	{"READ_POSITION",0x34},
+ 	{"SYNCHRONIZE_CACHE",0x35},
+ 	{"LOCK_UNLOCK_CACHE",0x36},
+ 	{"READ_DEFECT_DATA",0x37},
+ 	{"MEDIUM_SCAN",0x38},
+ 	{"COMPARE",0x39},
+ 	{"COPY_VERIFY",0x3a},
+ 	{"WRITE_BUFFER",0x3b},
+ 	{"READ_BUFFER",0x3c},
+ 	{"UPDATE_BLOCK",0x3d},
+ 	{"READ_LONG",0x3e},
+ 	{"WRITE_LONG",0x3f},
+ 	{"CHANGE_DEFINITION",0x40},
+ 	{"WRITE_SAME",0x41},
+ 	{"READ_TOC",0x43},
+ 	{"LOG_SELECT",0x4c},
+ 	{"LOG_SENSE",0x4d},
+ 	{"MODE_SELECT_10",0x55},
+ 	{"RESERVE_10",0x56},
+ 	{"RELEASE_10",0x57},
+ 	{"MODE_SENSE_10",0x5a},
+ 	{"PERSISTENT_RESERVE_IN",0x5e},
+ 	{"PERSISTENT_RESERVE_OUT",0x5f},
+ 	{"MOVE_MEDIUM",0xa5},
+ 	{"READ_12",0xa8},
+ 	{"WRITE_12",0xaa},
+ 	{"WRITE_VERIFY_12",0xae},
+ 	{"SEARCH_HIGH_12",0xb0},
+ 	{"SEARCH_EQUAL_12",0xb1},
+ 	{"SEARCH_LOW_12",0xb2},
+ 	{"READ_ELEMENT_STATUS",0xb8},
+ 	{"SEND_VOLUME_TAG",0xb6},
+ 	{"WRITE_LONG_2",0xea}
+ };
+ 
+ ////////////////////////////////////////////////////////////////////////////////
+ static volatile int 		internal_done_flag = 0;
+ static volatile int 		internal_done_errcode = 0;
+ static Scsi_Cmnd 			*current_SC = NULL;
+ static int      			this_id = 31;
+ V6INTERFACEB 				V6;
+ static _DiskIDTable			DiskID[16];
+ static DISKRWINFO			DiskRWInfo[MAXBOARD][2][2];
+ static IDENTIFY_DATA 		DiskIdentifyData[MAXBOARD][2][2];
+ static int					gBoardCount = 0;
+ IrqID						ultimaID[MAXBOARD];
+ BOARDTABLE					BoardInfo[MAXBOARD];
+ static int					IrqFlag[32] = {0,};
+ static int					DiskCount = 0;
+ ULONG						LastErrorBlock,LastErrorCode;
+ static ULONG				RWStatus;
+ static ULONG				OrderStatus;
+ static ULONG				CurrentDisk;
+ static int      			interrupt_level = 0;
+ static int					HddConnected[MAXBOARD][2][2];
+ static int					HddSupportMode[MAXBOARD][2][2];
+ 
+ /////////////////////////////////////////////////
+ #define IOCTL_LOCK	1
+ static int 					in_ioctl = 0;
+ static int 					in_command = 0;
+ unsigned long 				LockValue = 0;
+ static DECLARE_WAIT_QUEUE_HEAD (WaitingQ);
+ 
+ /////////////////////////////////////////////////
+ UCHAR 						BiosManufacture = 0;
+ UCHAR						cDeviceCode = 0;
+ UCHAR   					cFlashFlag = 0;
+ UCHAR						*Buffer;
+ char *GetCmdName(char code)
+ {
+ 	int i;
+ 	int count;
+ 	char *s = "unknown function";
+ 
+ 	count = sizeof(CmdName) / sizeof(CMDNAME);
+ 
+ 	for(i=0;i<count;i++) {
+ 		if (CmdName[i].code == code)
+ 			return CmdName[i].name;
+ 	}
+ 	return s;
+ }
+ 
+ static void		print_banner(struct Scsi_Host *shpnt)
+ {
+ 	if (!shpnt)
+ 		return;			/* This won't ever happen */
+ 
+ 	printk("using scsi id %d\n", shpnt->this_id);
+ 
+ 	if (interrupt_level)
+ 		printk(" int %d", interrupt_level);
+ 	else
+ 		printk("<none>");
+ 
+ 	printk("\n");
+ }
+ 
+ static void		aralion_setup(char *str, int *ints)
+ {
+ 	this_id = 31;
+ }
+ 
+ 
+ /* Pause for amount*10 milliseconds */
+ static void		do_pause(ULONG amount)
+ {
+ 	do
+ 	{
+ 		udelay(10 * 1000);
+ 	}
+ 	while (--amount);
+ }
+ 
+ inline static void aralion_make_bus_idle(void)
+ {
+ }
+ 
+ static int      aralion_is_valid_port(int port)
+ {
+ 	return 0;
+ }
+ 
+ static int      aralion_test_loopback(void)
+ {
+ 	return 0;
+ }
+ 
+ static int      aralion_pci_bios_detect(int *irq)
+ {
+ 	struct pci_dev *pdev = NULL;
+ 
+ 	if (!pci_present())
+ 		return 0;
+ 
+ 	memset(BoardInfo,0,sizeof(BoardInfo));
+ 
+ 	do {
+ 		if ((pdev = pci_find_device(ARALION_VENDOR, ULTIMA_DEVICE, pdev)) != NULL) {
+ 			//			printk("Find %d device\n",gBoardCount);
+ 			//			BoardInfo[gBoardCount].BoardExist = 1;
+ 
+ #ifdef KERNEL240
+ 			BoardInfo[gBoardCount].PrimaryIO 
+ 				= (ULONG) pci_resource_start(pdev,0);
+ 			BoardInfo[gBoardCount].SecondaryIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x10; 
+ 			BoardInfo[gBoardCount].PrimaryDmaIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x20; 
+ 			BoardInfo[gBoardCount].SecondaryDmaIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x30; 
+ 			BoardInfo[gBoardCount].ControlRegister 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x40; 
+ 			BoardInfo[gBoardCount].FlashMemory
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x50; 
+ #else
+ 			BoardInfo[gBoardCount].PrimaryIO 
+ 				= (ULONG) pdev->base_address[0] & PCI_BASE_SDDRESS_IO_MASK;
+ 			BoardInfo[gBoardCount].SecondaryIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x10; 
+ 			BoardInfo[gBoardCount].PrimaryDmaIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x20; 
+ 			BoardInfo[gBoardCount].SecondaryDmaIO 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x30; 
+ 			BoardInfo[gBoardCount].ControlRegister 
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x40; 
+ 			BoardInfo[gBoardCount].FlashMemory
+ 				= (ULONG) (BoardInfo[gBoardCount].PrimaryIO)+0x50; 
+ #endif
+ 
+ 			BoardInfo[gBoardCount].interrupt_level = pdev->irq;
+ 
+ 			request_region(BoardInfo[gBoardCount].PrimaryIO, 0x10, "aralion");
+ 			request_region(BoardInfo[gBoardCount].SecondaryIO, 0x10, "aralion");
+ 			request_region(BoardInfo[gBoardCount].PrimaryDmaIO, 0x10, "aralion");
+ 			request_region(BoardInfo[gBoardCount].SecondaryDmaIO, 0x10, "aralion");
+ 			request_region(BoardInfo[gBoardCount].ControlRegister, 0x10, "aralion");
+ 			request_region(BoardInfo[gBoardCount].FlashMemory,0x8, "aralion");
+ 
+ 			if (!gBoardCount)
+ 				*irq = pdev->irq;
+ 
+ 			gBoardCount++;
+ 		}
+ 	} while(pdev != NULL);
+ 
+ 
+ 	if (!gBoardCount) {
+ 		printk("Ultima Board not found\n");
+ 		return 0;
+ 	}
+ 
+ 	interrupt_level = BoardInfo[0].interrupt_level;
+ 	return 1;
+ }
+ 
+ ULONG	GetBlockCount(int BoardID,int channel,int drive)
+ {
+ 	int i;
+ 	ULONG nCount;
+ 	UCHAR *p;
+ 	p = (char *) &(DiskIdentifyData[BoardID][channel][drive]);
+ 	if(DiskIdentifyData[BoardID][channel][drive].BIT48 & 0x0400)
+ 		nCount = *((ULONG *) (p + 200));
+ 	else
+ 		nCount = *((ULONG *) (p + 120));
+ 	return nCount;
+ }
+ 
+ int	RequestAllIrq(void) 
+ {
+ 	int			i;
+ 	int			irq;
+ 	int			retcode;
+ 
+ 	for(i=0;i<gBoardCount;i++) {
+ 		irq = BoardInfo[i].interrupt_level;
+ 
+ 		if (!IrqFlag[irq]) {
+ 			IrqFlag[irq] = 1;
+ 			memset(ultimaID[i].signature,0,8);
+ 			memcpy(ultimaID[i].signature,"Ultima",6);
+ 			ultimaID[i].IOPort1 = BoardInfo[i].PrimaryDmaIO;
+ 			ultimaID[i].irq = irq;
+ 
+ 			retcode = request_irq(irq,
+ 					do_ultima_intr, 
+ 					SA_INTERRUPT | SA_SHIRQ, 
+ 					"aralion", 
+ 					&ultimaID[i]);
+ 			if (retcode < 0)
+ 			{
+ 				printk("%d's Board IRQ Failure\n",i);
+ 
+ 				if (retcode == -EINVAL)	{
+ 					printk("scsi: <aralion> IRQ %d is bad!\n", irq);
+ 					printk("                This shouldn't happen!\n");
+ 					printk("                Send mail to faith@acm.org\n");
+ 				}
+ 				else if (retcode == -EBUSY) {
+ 					printk("scsi: <aralion> IRQ %d is already in use!\n",irq);
+ 					printk("                Please use another IRQ!\n");
+ 				}
+ 				else {
+ 					printk("scsi: <aralion> Error getting IRQ %d\n",irq);
+ 					printk("                This shouldn't happen!\n");
+ 					printk("                Send mail to faith@acm.org\n");
+ 				}
+ 				printk("scsi: <aralion> Detected, but driver not loaded (IRQ)\n");
+ 
+ 				return retcode;
+ 			}
+ 		}
+ 	}
+ 	return 0;
+ }
+ 
+ int             ultima_detect(Scsi_Host_Template * tpnt)
+ {
+ 	int             retcode;
+ 	struct Scsi_Host *shpnt;
+ 	int             i, j, statusByte;
+ 	int             flag = 0;
+ 	ULONG			IOPort;
+ 
+ 	tpnt->proc_dir = &proc_scsi_aralion;
+ 	flag = aralion_pci_bios_detect(&interrupt_level);
+ 
+ 	if (!flag) {
+ 		printk("scsi: Ultima not found\n");
+ 		return 0;
+ 	}
+ 
+ 	memset(&DiskID,0,sizeof(DiskID));
+ 	memset(&DiskRWInfo,0,sizeof(DiskRWInfo));
+ 	memset(&DiskIdentifyData,0,sizeof(DiskIdentifyData));
+ 	DiskCount = 0;
+ 
+ 	for(i=0;i<gBoardCount;i++)
+ 	{
+ 		DisableInterrupt(i);
+ 		ultima_1cardreset(i);
+ 		EnableInterrupt(i);
+ 	}
+ 
+ 	for(i=0;i<gBoardCount;i++)
+ 	{
+ 		IOPort = BoardInfo[i].PrimaryIO;
+ 		
+ 		SelectFirstChannel(i);
+ 		outb(0xA0 ,IOPort + DriveSelectPort);
+ 		GetBaseStatus(IOPort, statusByte);
+ 		if(statusByte == 0x50)
+ 			HddConnected[i][0][0] = 1;
+ 		else
+ 			HddConnected[i][0][0] = 0;
+ 			
+ 		outb(0xB0 ,IOPort + DriveSelectPort);
+ 		GetBaseStatus(IOPort, statusByte);
+ 		if(statusByte == 0x50)
+ 			HddConnected[i][0][1] = 1;
+ 		else
+ 			HddConnected[i][0][1] = 0;
+ 		
+ 		SelectSecondChannel(i);
+ 		outb(0xA0 ,IOPort + DriveSelectPort);
+ 		GetBaseStatus(IOPort, statusByte);
+ 		if(statusByte == 0x50)
+ 			HddConnected[i][1][0] = 1;
+ 		else
+ 			HddConnected[i][1][0] = 0;
+ 		outb(0xB0 ,IOPort + DriveSelectPort);
+ 		GetBaseStatus(IOPort, statusByte);
+ 		if(statusByte == 0x50)
+ 			HddConnected[i][1][1] = 1;
+ 		else
+ 			HddConnected[i][1][1] = 0;
+ 	}
+ /*	
+ 	for(j=0;j<4;j++)
+ 		printk("HDD:[%d]=%d\n",j,HddConnected[0][j/2][j%2]);
+ */
+ 	for(i=0;i<gBoardCount;i++)
+ 	{
+ 		DisableInterrupt(i);
+ 		for(j=0;j<4;j++)
+ 		{
+ 			if(HddConnected[i][j/2][j%2])
+ 			{	
+ 				IdentifyDisk(i,j/2,j%2,&DiskIdentifyData[i][j/2][j%2]);
+ 				SetUDMAMode(i,j/2,j%2);
+ 				DiskID[DiskCount].DiskStatus.BoardID = i;
+ 				DiskID[DiskCount].DiskStatus.Channel = j/2;
+ 				DiskID[DiskCount].DiskStatus.Drive = j%2;
+ 				DiskID[DiskCount].RaidStatus = NORMALIDE;
+ 				DiskID[DiskCount].DiskStatus.Size = GetBlockCount(i,j/2,j%2);
+ 				DiskCount++;
+ 			}
+ 		}
+ 		EnableInterrupt(i);
+ 	}
+ 
+ 
+ 	tpnt->this_id = (this_id & 0x1f);
+ 
+ 	/* Print out a banner here in case we can't
+ 	   get resources.  */
+ 	shpnt = scsi_register(tpnt, 0);
+ 	shpnt->irq = interrupt_level;
+ 	shpnt->io_port = BoardInfo[0].ControlRegister;
+ 	shpnt->n_io_port = 0x10;
+ 	//    print_banner(shpnt);
+ 
+ 	if (!interrupt_level)
+ 	{
+ 		printk("scsi: <aralion>"
+ 				" Card Detected, but driver not loaded (no IRQ)\n");
+ 		return 0;
+ 	}
+ 	else
+ 	{
+ 		/* Register the IRQ with the kernel */
+ 		if (RequestAllIrq())
+ 			return 0;
+ 	}
+ 
+ 	for(i=0;i<gBoardCount;i++) {
+ 		BoardInfo[i].PriScatterList = kmalloc(SCATTERLISTSIZE,GFP_ATOMIC);
+ 		BoardInfo[i].SecScatterList = kmalloc(SCATTERLISTSIZE,GFP_ATOMIC);
+ 	}			
+ 	return 1;
+ }
+ 
+ 
+ int             ultima_release(struct Scsi_Host * tpnt)
+ {
+ 	int		i;
+ 	int		irq;
+ 
+ 	for(i=0;i<gBoardCount;i++) {
+ 		irq = BoardInfo[i].interrupt_level;
+ 		if (IrqFlag[irq]) {
+ 			free_irq(irq,&ultimaID[i]);
+ 			IrqFlag[irq] = 0;
+ 		}
+ 		release_region(BoardInfo[i].PrimaryIO,0x10);
+ 		release_region(BoardInfo[i].SecondaryIO,0x10);
+ 		release_region(BoardInfo[i].PrimaryDmaIO,0x10);
+ 		release_region(BoardInfo[i].SecondaryDmaIO,0x10);
+ 		release_region(BoardInfo[i].ControlRegister,0x10);
+ 		release_region(BoardInfo[i].FlashMemory,0x8);
+ 
+ 		kfree(BoardInfo[i].PriScatterList);
+ 		kfree(BoardInfo[i].SecScatterList);
+ 	}
+ 	scsi_unregister(tpnt);
+ 
+ 	return 0;
+ }
+ 
+ #ifdef DEBUG
+ void printDMARegister(int BoardID)
+ {
+ 	int i;
+ 	USHORT d1;
+ 
+ 	for(i=0;i<0x10;i++) {
+ 		d1 = inw(BoardInfo[BoardID].ControlRegister + i*2);
+ 		printk("<%02x:%04x> ",i,d1);
+ 	}
+ 	printk("\n");
+ }
+ #endif
+ 
+ inline DISKRWINFO *GetRWInfoPointer(DISKLIST *pDiskList)
+ {
+ 	return (DISKRWINFO *) &DiskRWInfo[pDiskList->BoardID][pDiskList->Channel][pDiskList->Drive];
+ }
+ 
+ void PutLBAvalue(ULONG IOPort1,ULONG lba,ULONG numsectors,
+ 		ULONG DriveSelect)
+ {
+ 	UCHAR	Data[4];
+ 	/////////////////////////////KHG-133s_Big////////////////////////////////	
+ 	if(lba >= 0x10000000){
+ 		Data[0] = (lba & 0xff000000 ) >> 24;
+ 		Data[1] = 0;
+ 		Data[2] = 0;
+ 		outb(0,IOPort1 + BlockCountPort);
+ 		outb(Data[0],IOPort1 + BlockNumberPort);
+ 		outb(Data[1],IOPort1 + CylinderLowPort);
+ 		outb(Data[2],IOPort1 + CylinderHighPort);
+ 		Data[0] = (lba & 0x000000ff);
+ 		Data[1] = (lba & 0x0000ff00) >> 8;
+ 		Data[2] = (lba & 0x00ff0000) >> 16;
+ 		Data[3] = (DriveSelect << 4) | 0xe0;
+ 		outb(numsectors,IOPort1 + BlockCountPort);
+ 		outb(Data[0],IOPort1 + BlockNumberPort);
+ 		outb(Data[1],IOPort1 + CylinderLowPort);
+ 		outb(Data[2],IOPort1 + CylinderHighPort);
+ 		outb(Data[3],IOPort1 + DriveSelectPort);
+ 	}
+ 	else{
+ 		Data[0] = (lba & 0x000000ff);
+ 		Data[1] = (lba & 0x0000ff00) >> 8;
+ 		Data[2] = (lba & 0x00ff0000) >> 16;
+ 		Data[3] = (lba & 0x0f000000) >> 24;
+ 		Data[3] = Data[3] | 0x40 | (DriveSelect << 4) | 0xa0;
+ 
+ 		outb(numsectors,IOPort1 + BlockCountPort);
+ 		outb(Data[0],IOPort1 + BlockNumberPort);
+ 		outb(Data[1],IOPort1 + CylinderLowPort);
+ 		outb(Data[2],IOPort1 + CylinderHighPort);
+ 		outb(Data[3],IOPort1 + DriveSelectPort);
+ 	}
+ 	/////////////////////////////////////////////////////////////////////////
+ }
+ 
+ void DisableInterrupt(int BoardID)
+ {
+ 	USHORT		Intena;
+ 
+ 	//	Intena = inw(BoardInfo[BoardID].ControlRegister + INTENA);
+ 	//	Intena = Intena & 0xfe;
+ 	Intena = 0;
+ 	outw(Intena,BoardInfo[BoardID].ControlRegister + INTENA);
+ }
+ 
+ void EnableInterrupt(int BoardID)
+ {
+ 	USHORT		Intena;
+ 
+ 	//	Intena = inw(BoardInfo[BoardID].ControlRegister + INTENA);
+ 	//	Intena = Intena | 0x01;
+ 	Intena = 0x03;		//KHG
+ 
+ 	//	printk("EI : %d\n",BoardID);
+ 	outw(Intena,BoardInfo[BoardID].ControlRegister + INTENA);
+ 	//	printk("EI2 : %d\n",BoardID);
+ }
+ 
+ // int SetBoardInterruptFlag(int BoardID,int Channel,DWORD Status)
+ ULONG SetBoardInterruptFlag(int BoardID,int Channel,DWORD Status)
+ {
+ 	////////////////////////////////////KHG-133s////////////////////////////////////
+ 	ULONG	TempStatus;
+ 	Channel = 0;
+ 
+ 	if (BoardInfo[BoardID].InterruptFlag[Channel] & Status) {
+ 		TempStatus = BoardInfo[BoardID].InterruptFlag[Channel] & 0x00001111;
+ 		if(TempStatus & 0x00001100){
+ 			BoardInfo[BoardID].InterruptFlag[Channel] |= 0x00001000;
+ 			return 0x00001000;
+ 		}
+ 		else if(TempStatus & 0x00000010){
+ 			BoardInfo[BoardID].InterruptFlag[Channel] |= 0x00000100;
+ 			return 0x00000100;
+ 		}
+ 		else {
+ 			BoardInfo[BoardID].InterruptFlag[Channel] |= 0x00000010;
+ 			return 0x000000010;
+ 		}
+ 	}
+ 	else {
+ 		BoardInfo[BoardID].InterruptFlag[Channel] = (Status | ORDER_ONE);
+ 		return 0;
+ 	}
+ }
+ 
+ ULONG SetScatterList(	Scsi_Cmnd * SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors,
+ 		ULONG	ReadWrite)
+ {
+ 	struct scatterlist 	*slp;
+ 	int					i,j;
+ 	PPDT_TABLE 			pPDTTable;
+ 	DISKRWINFO			*pRWInfo,*pRWInfo2;
+ 	int					tid = SCpnt->target;
+ 	DWORD				RaidStatus;
+ 	ULONG	TempFlag;
+ 
+ 	RaidStatus = RAID(tid);
+ 
+ 	pRWInfo = (DISKRWINFO *) &DiskRWInfo[S_BOARD(tid,0)][S_CHAN(tid,0)][S_DRV(tid,0)];
+ 
+ 	pRWInfo->StartLba = lba;
+ 	pRWInfo->ListCount = 0;
+ 	pRWInfo->NumSectors = 0;
+ 	pPDTTable = pRWInfo->ScatterList;
+ 	if (SCpnt->use_sg) {
+ 		slp = (struct scatterlist *) SCpnt->request_buffer;
+ 		for(i=0;i<SCpnt->use_sg;i++,slp++) {
+ 			pPDTTable[i].address = virt_to_bus(slp->address);
+ 			pPDTTable[i].length = slp->length;
+ 			pPDTTable[i].EndOfChain = 0;
+ 			pRWInfo->NumSectors += slp->length;
+ 		}
+ 		pPDTTable[i - 1].EndOfChain = 0x80;
+ 		pRWInfo->ListCount = SCpnt->use_sg;
+ 	}
+ 	else {
+ 		pPDTTable[0].address = virt_to_bus(SCpnt->request_buffer);
+ 		pPDTTable[0].length = SCpnt->request_bufflen;
+ 		pPDTTable[0].EndOfChain = 0x80;
+ 		pRWInfo->NumSectors = SCpnt->request_bufflen;
+ 		pRWInfo->ListCount = 1;
+ 	}
+ 
+ 	pRWInfo->NumSectors /= 512;
+ 
+ 	pRWInfo->InterruptFlag = ReadWrite | ORDER_ONE;
+ 	SetBoardInterruptFlag(S_BOARD(tid,0),S_CHAN(tid,0),ReadWrite);
+ }
+ 
+ void PrintPDT(PPDT_TABLE  pPDTTable,int count)
+ {
+ 	int i;
+ 
+ 	for(i=0;i<count;i++) {
+ 		printk("%04d : [%08x,%04x,%02x]\n",i,
+ 				pPDTTable[i].address,
+ 				pPDTTable[i].length,
+ 				pPDTTable[i].EndOfChain);
+ 	}	
+ }
+ 
+ void SetIOPort(DISKLIST *pList,USHORT DmaRW,DWORD OrderFlag)
+ {
+ 	USHORT		AddressLow,AddressHi;
+ 	PPDT_TABLE  pPDTTable;
+ 	long		i;
+ 	DISKRWINFO	*pRWInfo;
+ 	ULONG		BoardID,Channel,Drive;
+ 	ULONG		IOPort1,DmaIO;
+ 
+ 	BoardID = pList->BoardID;
+ 	Channel = pList->Channel;
+ 	Drive = pList->Drive;
+ 
+ 	pRWInfo = (DISKRWINFO *) &DiskRWInfo[pList->BoardID][pList->Channel][pList->Drive];
+ 	if (!(OrderFlag & pRWInfo->InterruptFlag)) {
+ 		return ;
+ 	}
+ 
+ 	if(Channel == 0)
+ 	{
+ 		SelectFirstChannel(BoardID);
+ 	}
+ 	else
+ 	{
+ 		SelectSecondChannel(BoardID);
+ 	}
+ 	pPDTTable = BoardInfo[BoardID].PriScatterList;
+ 	IOPort1 = BoardInfo[BoardID].PrimaryIO;
+ 	DmaIO = BoardInfo[BoardID].PrimaryDmaIO;
+ 	memcpy(pPDTTable,pRWInfo->ScatterList,pRWInfo->ListCount * sizeof(PDT_TABLE));
+ 	BoardInfo[BoardID].ListCount 		= pRWInfo->ListCount;
+ 	BoardInfo[BoardID].NumSectors       = pRWInfo->NumSectors;
+ 	BoardInfo[BoardID].StartLba         = pRWInfo->StartLba;
+ 
+ 	AddressLow = virt_to_bus(pPDTTable) & 0x0000ffff;
+ 	AddressHi = (virt_to_bus(pPDTTable) & 0xffff0000) >> 16;
+ 
+ 	outw(AddressLow,DmaIO + PDTLAR);
+ 	outw(AddressHi,DmaIO + PDTHAR);
+ 
+ 	PutLBAvalue(
+ 			IOPort1,
+ 			BoardInfo[BoardID].StartLba,
+ 			BoardInfo[BoardID].NumSectors,
+ 			Drive);
+ }
+ 
+ void SetIOInformation(int tid,USHORT DmaRW,DWORD OrderFlag)
+ {
+ 	DISKRWINFO 	*pRWInfo = GetRWInfoPointer(&DiskID[tid].DiskStatus);
+ 	if (pRWInfo->ListCount) {
+ 		SetIOPort(&DiskID[tid].DiskStatus,DmaRW,OrderFlag);
+ 	}
+ }
+ 
+ 
+ void SetIDECommand(DWORD Command, DWORD OrderFlag)
+ {
+ 	int i,j;
+ 
+ 	for(i=0;i<MAXBOARD;i++) {
+ 		if (BoardInfo[i].InterruptFlag[0] & OrderFlag) {
+ 			if(BoardInfo[i].StartLba >= 0x10000000)
+ 				Command=BigDiskCommand(Command);
+ 			outb(Command,BoardInfo[i].PrimaryIO + CommandPort);
+ 		}
+ 		/*		
+ 				if (BoardInfo[i].InterruptFlag[1] & OrderFlag) {
+ 				if(BoardInfo[i].StartLba >= 0x10000000)
+ 				Command=BigDiskCommand(Command);
+ 				outb(Command,BoardInfo[i].SecondaryIO + CommandPort);
+ 				}
+ 		 */
+ 	}
+ }
+ 
+ DWORD	BigDiskCommand (DWORD cmnd)
+ {
+ 	switch(cmnd){
+ 		case	IDE_COMMAND_READ_DMA:
+ 			return IDE_COMMAND_READ_DMA_EXT;
+ 		case	IDE_COMMAND_WRITE_DMA:
+ 			return IDE_COMMAND_WRITE_DMA_EXT;
+ 	}
+ // Added 2003/11/09 by Ashuaria Lee
+ #warning I dont know what to do...
+ 	return cmnd;
+ }
+ 
+ void SetDMACommand(USHORT DmaRW,DWORD OrderFlag)
+ {
+ 	ULONG		DmaIO;
+ 	int         i,j,k;
+ 
+ 	for(i=0;i<gBoardCount;i++)
+ 	{
+ 		for(j=0;j<2;j++)
+ 		{
+ 			for(k=0;k<2;k++)
+ 			{
+ 				if ((OrderFlag & DiskRWInfo[i][j][k].InterruptFlag))
+ 				{
+ 					DmaIO = BoardInfo[i].PrimaryDmaIO;
+ 					outw((0xff00 | HddSupportMode[i][j][k]), DmaIO + UDM_TIM);
+ 					outw(1, DmaIO + DMAMODE);		
+ 					outw(DmaRW,DmaIO + CMDR);
+ 				}
+ 			}
+ 		}
+ 	}
+ }
+ 
+ 
+ static int			ReadDMA(
+ 		Scsi_Cmnd * SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors)
+ {
+ 	int 			i;
+ 	unsigned long	flags;
+ 
+ 	if (numsectors == 0) {
+ 		my_done(DID_ABORT << 16);
+ 		return ERROR_INVALID_SECTORCOUNT;
+ 	}
+ 	SetScatterList(SCpnt,lba,numsectors,READ_STATUS);
+ 	SetIOInformation(SCpnt->target,DMA_READ,ORDER_ONE);
+ 	RWStatus = READ_STATUS;
+ 	OrderStatus = ORDER_ONE;
+ 	SetIDECommand(IDE_COMMAND_READ_DMA,ORDER_ONE);
+ 	SetDMACommand(DMA_READ,ORDER_ONE);
+ 	return 0;	
+ }
+ 
+ static int			WriteDMA(
+ 		Scsi_Cmnd * SCpnt,
+ 		ULONG lba,
+ 		ULONG numsectors)
+ {
+ 	int 		i;
+ 	unsigned long	flags;
+ 
+ 	if (numsectors == 0) {
+ 		my_done(DID_ABORT << 16);
+ 		return ERROR_INVALID_SECTORCOUNT;
+ 	}
+ 	SetScatterList(SCpnt,lba,numsectors,WRITE_STATUS);
+ 	SetIOInformation(SCpnt->target,DMA_WRITE,ORDER_ONE);
+ 	RWStatus = WRITE_STATUS;
+ 	OrderStatus = ORDER_ONE;
+ 
+ 	SetIDECommand(IDE_COMMAND_WRITE_DMA,ORDER_ONE);
+ 	SetDMACommand(DMA_WRITE,ORDER_ONE);
+ 
+ 	return 0;	
+ }
+ 
+ void GetUDMAMode(USHORT *mode,USHORT *Timing,
+ 		IDENTIFY_DATA * IdentifyData)
+ {
+ 
+ 	if(IdentifyData->UDMASupport & 0x40){ 
+ 		*mode = 0x46; // mode 6
+ 		*Timing = 0xff22; // mode 6
+ 	}
+ 	else if(IdentifyData->UDMASupport & 0x20){ 
+ 		*mode = 0x45; // mode 5
+ 		*Timing = 0xff33; // mode 5
+ 	}
+ 	else if(IdentifyData->UDMASupport & 0x10){ 
+ 		*mode = 0x44; // mode 4
+ 		*Timing = 0xff44; // mode 4
+ 	} 
+ 	else if(IdentifyData->UDMASupport & 0x08){ 
+ 		*mode = 0x43; // mode 3
+ 		*Timing = 0xff55; // mode 3
+ 	} 
+ 	else if(IdentifyData->UDMASupport & 0x04){ 
+ 		*mode = 0x42; // mode 2
+ 		*Timing = 0xff66; // mode 2
+ 	} 
+ 	else if(IdentifyData->UDMASupport & 0x02){ 
+ 		*mode = 0x41; // mode 1
+ 		*Timing = 0xff77; // mode 1
+ 	} 
+ 	else if(IdentifyData->UDMASupport & 0x01){ 
+ 		*mode = 0x40; // mode 0
+ 		*Timing = 0xff88; // mode 0
+ 	} 
+ #ifdef _7878_
+ 	*mode = 0x44; // mode 4
+ 	*Timing = 0x7878; // safe mode
+ #endif
+ }
+ 
+ void SetUDMAMode(int BoardID, int Channel, int Drive)
+ {
+ 	USHORT 		mode[3],Timing[3];
+ 	ULONG    	IOPort1;
+ 	ULONG		DmaIO;
+ 	char		statusByte=0;
+ 	int i;	
+ 
+ 	if(Channel == 0)
+ 	{
+ 		SelectFirstChannel(BoardID);
+ 	}
+ 	else
+ 	{
+ 		SelectSecondChannel(BoardID);
+ 	}
+ 	IOPort1 = BoardInfo[BoardID].PrimaryIO;
+ 	DmaIO = BoardInfo[BoardID].PrimaryDmaIO;
+ 	
+ 	
+ 	if(HddConnected[BoardID][Channel][Drive]>0)
+ 	{
+ 		mode[0] = 0xffff;
+ 		Timing[0] = 0xffff;
+ 		GetUDMAMode(&mode[0],&Timing[0],&DiskIdentifyData[BoardID][Channel][Drive]);
+ //		printk("udma mode value = %x\n",mode[0]);
+ 		if(mode[0] == 0xffff)
+ 			return;
+ 		outb(0xA0 + (Drive << 4),IOPort1 + DriveSelectPort);
+ 		for(i=0;i<10000;i++)
+ 		{		
+ 			GetBaseStatus(IOPort1, statusByte);
+ 			udelay(100);	
+ 			if(statusByte & IDE_STATUS_BUSY)
+ 				continue;
+ 			else
+ 				break;	
+ 		}
+ 		outb(0xA0 + (Drive << 4),IOPort1 + DriveSelectPort);
+ 		outb(mode[0],IOPort1 + BlockCountPort);
+ 		outb(0x03,IOPort1 + ErrorPort);
+ 		outb(IDE_COMMAND_ENABLE_MEDIA_STATUS,IOPort1 + CommandPort);
+ 		for(i=0;i<10000;i++)
+ 		{		
+ 			GetBaseStatus(IOPort1, statusByte);
+ 			udelay(100);	
+ 			if(statusByte & IDE_STATUS_BUSY)
+ 				continue;
+ 			else
+ 				break;	
+ 		}
+ 		if(statusByte == 0x50 || statusByte == 0x40)		
+ 		{
+ 			HddSupportMode[BoardID][Channel][Drive] = (((mode[0] << 8) | 0xff) & Timing[0]);
+ //			printk("SetUDMA: SupportMode = %0.4x\n", HddSupportMode[BoardID][Channel][Drive]);
+ 		}
+ 	}
+ 	mdelay(5);
+ 	for(i=0;i<10;i++)
+ 	{
+ 		GetBaseStatus(IOPort1, statusByte);
+ 		if(statusByte & IDE_STATUS_IDLE)
+ 			break;
+ 		else
+ 			mdelay(2);
+ 	}
+ }
+ 
+ static int	IdentifyDisk( 
+ 		int BoardID,
+ 		int Channel, 
+ 		int DriveSelect, 
+ 		IDENTIFY_DATA * IdentifyData)
+ {
+ 	ULONG    	IOPort1,DmaIO,ControlRegister;
+ 	UCHAR   	statusByte;
+ 	USHORT 		*pIdentifyData;
+ 	int             i, j;
+ 	int			flag = 0;
+ 
+ 	if(Channel == 0)
+ 	{
+ 		SelectFirstChannel(BoardID);
+ 	}
+ 	else
+ 	{
+ 		SelectSecondChannel(BoardID);
+ 	}
+ 	IOPort1 = BoardInfo[BoardID].PrimaryIO;
+ 	DmaIO = BoardInfo[BoardID].PrimaryDmaIO;
+ 	ControlRegister = BoardInfo[BoardID].ControlRegister;
+ 	outb(((DriveSelect << 4) | 0xA0), IOPort1 + DriveSelectPort);
+ 
+ 	for (i=0;i<1000;i++)
+ 	{
+ 		udelay(10);
+ 		GetBaseStatus(IOPort1, statusByte);
+ 		if (!(statusByte & 0x80))
+ 			break;
+ 	}
+ 	outb(((DriveSelect << 4) | 0xA0), IOPort1 + DriveSelectPort);
+ 	mdelay(50);
+ 	GetBaseStatus(IOPort1, statusByte);
+ 	outb(((DriveSelect << 4) | 0xA0), IOPort1 + DriveSelectPort);
+ 	mdelay(50);
+ 	GetBaseStatus(IOPort1, statusByte);
+ 	if(statusByte != 0x50)
+ 	{
+ 		outb(0x08, IOPort1 + CommandPort); //Device reset
+ 		for(i=0; i<3; i++)	//	KHG_20020731
+ 		{
+ 			mdelay(100);
+ 			outb(((DriveSelect << 4) | 0xA0), IOPort1 + DriveSelectPort); 
+ 			GetBaseStatus(IOPort1, statusByte);
+ 			if(statusByte != 0x50)
+ 			{
+ 				outb(0x04, IOPort1 + 0x0e);
+ 				mdelay(100);
+ 				outb(0x00, IOPort1 + 0x0e);
+ 			}
+ 			else
+ 			{
+ 				break;
+ 			}
+ 		}
+ 	}
+ 	mdelay(50);
+ 	statusByte = statusByte & 0xc9;
+ 	if (statusByte != IDE_STATUS_DRDY)
+ 	{
+ 		return 0;
+ 	}
+ 
+ 
+ label1:
+ 	for (j = 0; j < 2; j++)
+ 	{
+ 		WaitOnBusy(IOPort1, statusByte);
+ 		outb(IDE_COMMAND_IDENTIFY, IOPort1 + CommandPort);
+ 
+ 		for (i = 0; i < 4; i++)
+ 		{
+ 			WaitForDrq(IOPort1, statusByte);
+ 			if (statusByte & IDE_STATUS_DRQ)
+ 			{
+ 				GetBaseStatus(IOPort1, statusByte);
+ 				break;
+ 			}
+ 			WaitOnBusy(IOPort1, statusByte);
+ 		}
+ 		if (i == 4 && j == 0)
+ 		{
+ 			return 0;
+ 		}
+ 		else
+ 		{
+ 			break;
+ 		}
+ 	}			// end of for (j = 0; j < 2; j++)
+ 
+ 
+ 	if (statusByte & IDE_STATUS_ERROR)
+ 	{
+ 		return 0;
+ 	}
+ 
+ 	WaitOnBusy(IOPort1, statusByte);
+ 
+ 
+ 	if (!(statusByte & IDE_STATUS_DRQ))
+ 	{
+ 		return 0;
+ 	}
+ 
+ 	pIdentifyData = (USHORT *) IdentifyData;
+ 
+ 	outb(((DriveSelect << 4) | 0xA0), IOPort1 + DriveSelectPort);
+ 	mdelay(50);
+ 	GetBaseStatus(IOPort1, statusByte);
+ 	for (i = 0; i < 256; i++)
+ 	{
+ 		pIdentifyData[i] = inw(IOPort1 + DataPort);
+ 	}
+ 	{
+ 		char           *p,c;
+ 		p = (char *) &(IdentifyData->VendorUnique1);
+ 
+ 		for (i = 0; i < 26; i+=2)
+ 		{
+ 			c = p[i];
+ 			p[i] = p[i+1];
+ 			p[i+1] = c;
+ 		}
+ 		p = (char *) &(IdentifyData->ModelNumber);
+ 
+ 		for (i = 0; i < 40; i+=2)
+ 		{
+ 			c = p[i];
+ 			p[i] = p[i+1];
+ 			p[i+1] = c;
+ 		}
+ 	}
+ 
+ 	{
+ 		int mm = 0;
+ 
+ 		for (i = 0; i < 0x1000; i++)
+ 		{
+ 
+ 			GetStatus(IOPort1, statusByte);
+ 
+ 			if ((statusByte & IDE_STATUS_DRQ)
+ 					|| (statusByte & IDE_STATUS_BUSY)
+ 					|| (statusByte & 1) )
+ 			{
+ 				inw(IOPort1 + DataPort);
+ 			}
+ 			else
+ 			{
+ 				break;
+ 			}
+ 		}			// end of for
+ 	}
+ 	return 1;
+ }
+ 
+ char     *ultima_info(struct Scsi_Host *ignore)
+ {
+ 	static char     buffer[128];
+ 	char           *pt;
+ 
+ 	strcpy(buffer, "Aralion Ultima ATA133 IDE RAID MultiCard Driver Version");
+ 	if (strchr(VERSION, ':'))
+ 	{			/* Assume VERSION is an RCS Revision string */
+ 		strcat(buffer, strchr(VERSION, ':') + 1);
+ 		pt = strrchr(buffer, '$') - 1;
+ 		if (!pt)		/* Stripped RCS Revision string? */
+ 			pt = buffer + strlen(buffer) - 1;
+ 		if (*pt != ' ')
+ 			++pt;
+ 		*pt = '\0';
+ 	}
+ 	else
+ 	{			/* Assume VERSION is a number */
+ 		strcat(buffer, " " VERSION);
+ 	}
+ 
+ 	return buffer;
+ }
+ 
+ 
+ int init_module(void) {
+ 	driver_template.module = &__this_module;
+ 	scsi_register_module(MODULE_SCSI_HA, &driver_template);
+ 	if (driver_template.present) {
+ 		return 0;
+ 	}
+ 
+ 	scsi_unregister_module(MODULE_SCSI_HA, &driver_template);
+ 	return -1;
+ }
+ 
+ void cleanup_module( void) {
+ 	scsi_unregister_module(MODULE_SCSI_HA, &driver_template);
+ }
+ 
+ int             ultima_proc_info(char *buffer, char **start, off_t offset,
+ 		int length, int hostno, int inout)
+ {
+ 	const char     *info = ultima_info(NULL);
+ 	int             len;
+ 	int             pos;
+ 	int             begin;
+ 
+ 	if (inout)
+ 		return (-ENOSYS);
+ 
+ 	begin = 0;
+ 	strcpy(buffer, info);
+ 	strcat(buffer, "\n");
+ 
+ 	pos = len = strlen(buffer);
+ 
+ 	if (pos < offset)
+ 	{
+ 		len = 0;
+ 		begin = pos;
+ 	}
+ 
+ 	*start = buffer + (offset - begin);	/* Start of wanted data */
+ 	len -= (offset - begin);
+ 	if (len > length)
+ 		len = length;
+ 
+ 	return (len);
+ }
+ 
+ static int      aralion_arbitrate(void)
+ {
+ 	int             status = 0;
+ 	ULONG   timeout;
+ 
+ 	printk("[ aralion_arbitrate ]\n");
+ 
+ 	return 0;
+ }
+ 
+ static int      aralion_select(int target)
+ {
+ 	int             status;
+ 	ULONG   timeout;
+ 	static int      flag = 0;
+ 
+ 
+ 	printk("[ aralion_select - %d ]\n",target);
+ 	return 0;
+ }
+ 
+ static void            my_done(int error)
+ {
+ 	if (in_command)
+ 	{
+ 		in_command = 0;
+ 		//		printk("my_done\n");
+ 		if (test_and_clear_bit(IOCTL_LOCK,&LockValue) == 0)
+ 			printk("misc clear...\n");
+ 		current_SC->result = error;
+ 		if (current_SC->scsi_done) {
+ 			current_SC->scsi_done(current_SC);
+ 		}
+ 		else
+ 			panic("scsi: <aralion> current_SC->scsi_done() == NULL");
+ 	}
+ 	else
+ 	{
+ 		panic("scsi: <aralion> my_done() called outside of command\n");
+ 	}
+ }
+ 
+ int	CheckScsiError(ULONG Channel,ULONG IOPort1,UCHAR statusByte)
+ {
+ 	ULONG 	lba;
+ 	UCHAR 	Data[4];
+ 	UCHAR	errorByte;
+ 	ULONG 	scsiStatus = 0;
+ 
+ 	if (statusByte & 0x1) {
+ 
+ 		errorByte = inb(IOPort1 + ErrorPort);
+ 		printk("error byte = %x",ErrorPort);
+ 		if (errorByte & IDE_ERROR_BAD_BLOCK)
+ 			scsiStatus = DID_PARITY;
+ 		else if (errorByte & IDE_ERROR_DATA_ERROR)
+ 			scsiStatus = DID_ERROR;
+ 		else if (errorByte & IDE_ERROR_ID_NOT_FOUND)
+ 			scsiStatus = DID_NO_CONNECT;
+ 		else if (errorByte & IDE_ERROR_COMMAND_ABORTED)
+ 			scsiStatus = DID_ABORT;
+ 		else if (errorByte & IDE_ERROR_ILLEGAL_LENGTH )
+ 			scsiStatus = DID_ERROR;
+ 
+ 		Data[3] = inb(IOPort1 + BlockNumberPort);
+ 		Data[2] = inb(IOPort1 + CylinderLowPort);
+ 		Data[1] = inb(IOPort1 + CylinderHighPort);
+ 		Data[0] = inb(IOPort1 + DriveSelectPort) & 0x0f;
+ 
+ 		lba = (Data[0] << 24) + (Data[1] << 16)
+ 			+ (Data[2] << 8) + Data[0];
+ 
+ 		LastErrorBlock = lba;
+ 		LastErrorCode = errorByte & 0x000f;
+ 
+ 		printk("Error! Ch:%d, %02x , %0d\n",Channel,
+ 				(UCHAR) errorByte,lba);
+ 		return scsiStatus;
+ 	}
+ 	else
+ 		return 0;
+ }
+ 
+ void CheckJobFinished(ULONG BoardID,ULONG Channel)
+ {
+ 	ULONG DmaIO;
+ 	USHORT Stat;
+ 	DWORD	i = 0;
+ 
+ 	if (Channel == 1) {
+ 		DmaIO = BoardInfo[BoardID].PrimaryDmaIO;
+ 	}
+ 	else
+ 	{	
+ 		DmaIO = BoardInfo[BoardID].SecondaryDmaIO;
+ 	}
+ 	do {
+ 		Stat = inw(DmaIO + CONSR);
+ 		i++;
+ 	} while ((Stat & 0x01) && (i < 1000));
+ 	if(i>100)
+ 	{
+ 	    printk("CheckJobFinished Error\n");
+ 	}
+ }
+ 
+ void ClearAllIrq(void)
+ {
+ 	ULONG	Channel;
+ 	UCHAR   statusByte = 0;
+ 	UCHAR   statusByte2 = 0;
+ 	ULONG   IOPort1,IOPort2;
+ 	ULONG 	scsiStatus = 0;
+ 	int		i;
+ 
+ 	for(i=0;i<gBoardCount;i++) {
+ 		Channel = inw(BoardInfo[i].ControlRegister + INTSRC) & 0x03;
+ 
+ 		if (Channel == 0) 
+ 			continue;
+ 
+ 		statusByte = statusByte2 = 0;
+ 
+ 		if (Channel != 3 && 
+ 				( (BoardInfo[i].InterruptFlag[0] & OrderStatus) &
+ 				  (BoardInfo[i].InterruptFlag[1] & OrderStatus)
+ 				)
+ 		   )	
+ 			continue;
+ 		if (Channel & 1) {
+ 			IOPort1 = BoardInfo[i].PrimaryIO;
+ 			CheckJobFinished(i,1);
+ 			GetBaseStatus(IOPort1, statusByte);
+ 			BoardInfo[i].InterruptFlag[0] &= (~OrderStatus);
+ 		}
+ 	}
+ }
+ 
+ void            do_ultima_intr(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ 	ULONG	Channel;
+ 	UCHAR   statusByte = 0;
+ 	UCHAR   statusByte2 = 0;
+ 	ULONG   IOPort1,IOPort2;
+ 	ULONG 	scsiStatus = 0;
+ 	IrqID	*pIntID;
+ 	int		i,j,flag;
+ 	int     ClearFlag = 0;
+ 	int		InterruptCount;
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&io_request_lock, flags);
+ 	pIntID = (IrqID *) dev_id;
+ 
+ 	//	printk("< intr >\n");	
+ 
+ 	if (!pIntID) {
+ 		spin_unlock_irqrestore(&io_request_lock, flags);
+ 		return ;
+ 	}
+ 	/*
+ 	   if (gResetFlag) {
+ 	   for (i=0;i<gBoardCount;i++) {
+ 	   USHORT		Intena;
+ 
+ 	   Channel = inw(BoardInfo[i].ControlRegister + INTSRC);
+ 	   Intena = inw(BoardInfo[i].ControlRegister + INTENA);
+ 	   IOPort1 = BoardInfo[i].PrimaryIO;
+ 	   IOPort2 = BoardInfo[i].SecondaryIO;
+ 	   if (Channel & 1) {
+ 	   CheckJobFinished(i,1);
+ 	   GetBaseStatus(IOPort1, statusByte);
+ 	   }
+ 	   if (Channel & 2) {
+ 	   CheckJobFinished(i,2);
+ 	   GetBaseStatus(IOPort2, statusByte2);
+ 	   }
+ 	   if (statusByte & 0x1) 
+ 	   scsiStatus = CheckScsiError(Channel,IOPort1,statusByte);
+ 
+ 	   if (statusByte2 & 0x1)
+ 	   scsiStatus = CheckScsiError(Channel,IOPort2,statusByte);
+ 	   }
+ 	   spin_unlock_irqrestore(&io_request_lock, flags);
+ 	   return ;
+ 
+ 	   }
+ 	 */
+ 	if (!in_command) {
+ 		ClearAllIrq();
+ 		spin_unlock_irqrestore(&io_request_lock, flags);
+ 		return ;
+ 	}
+ 
+ 	for(i=0;i<gBoardCount;i++) {
+ 		Channel = inw(BoardInfo[i].ControlRegister + INTSRC) & 0x03;
+ 
+ 		if (Channel == 0) 
+ 			continue;
+ 
+ 		flag = 0;
+ 		statusByte = statusByte2 = 0;
+ 
+ 		if (Channel != 3 && 
+ 				( (BoardInfo[i].InterruptFlag[0] & OrderStatus) &
+ 				  (BoardInfo[i].InterruptFlag[1] & OrderStatus)
+ 				)
+ 		   )	
+ 			continue;
+ 		if (Channel & 1) {
+ 			IOPort1 = BoardInfo[i].PrimaryIO;
+ 			CheckJobFinished(i,1);
+ 			GetBaseStatus(IOPort1, statusByte);
+ 			BoardInfo[i].InterruptFlag[0] &= (~OrderStatus);
+ 		}
+ 		if (Channel & 2) {
+ 			IOPort2 = BoardInfo[i].SecondaryIO;
+ 			CheckJobFinished(i,2);
+ 			GetBaseStatus(IOPort2, statusByte2);
+ 			BoardInfo[i].InterruptFlag[1] &= (~OrderStatus);
+ 		}
+ 		if (statusByte & 0x1) 
+ 			scsiStatus = CheckScsiError(Channel,IOPort1,statusByte);
+ 
+ 		if (statusByte2 & 0x1) 
+ 			scsiStatus = CheckScsiError(Channel,IOPort2,statusByte2);
+ 	}
+ 	if (OrderStatus != ORDER_FOUR) {
+ 		for(i=0;i<gBoardCount;i++) {
+ 			if (BoardInfo[i].InterruptFlag[0] & OrderStatus || BoardInfo[i].InterruptFlag[1] & OrderStatus) {
+ 				spin_unlock_irqrestore(&io_request_lock, flags);
+ 				return ;
+ 			}
+ 		}	
+ 		flag = 0;
+ 
+ 		for(i=0;i<gBoardCount;i++) {
+ 			if ((BoardInfo[i].InterruptFlag[0] & ORDER_TWO || BoardInfo[i].InterruptFlag[1] & ORDER_TWO) && (OrderStatus == ORDER_ONE)) {
+ 				flag = 1;
+ 			}
+ 			if ((BoardInfo[i].InterruptFlag[0] & ORDER_THREE || BoardInfo[i].InterruptFlag[1] & ORDER_THREE) && (OrderStatus == ORDER_TWO)) {
+ 				flag = 1;
+ 			}
+ 			if ((BoardInfo[i].InterruptFlag[0] & ORDER_FOUR || BoardInfo[i].InterruptFlag[1] & ORDER_FOUR) && (OrderStatus == ORDER_THREE)) {
+ 				flag = 1;
+ 			}
+ 		}	
+ 
+ 		if (flag) {
+ 			OrderStatus <<= 4;
+ 
+ 			if (RWStatus == READ_STATUS) {
+ 				SetIOInformation(CurrentDisk,DMA_READ,OrderStatus);
+ 				SetIDECommand(IDE_COMMAND_READ_DMA,OrderStatus);
+ 				SetDMACommand(DMA_READ,OrderStatus);
+ 			}
+ 			else {
+ 				SetIOInformation(CurrentDisk,DMA_WRITE,OrderStatus);
+ 				SetIDECommand(IDE_COMMAND_WRITE_DMA,OrderStatus);
+ 				SetDMACommand(DMA_WRITE,OrderStatus);
+ 			}
+ 			spin_unlock_irqrestore(&io_request_lock, flags);
+ 			return ;
+ 		}
+ 		else {
+ 
+ 			my_done(scsiStatus << 16);
+ 			spin_unlock_irqrestore(&io_request_lock, flags);
+ 			return ;
+ 		}
+ 	}
+ 	else {
+ 		for(i=0;i<gBoardCount;i++) {
+ 			if (BoardInfo[i].InterruptFlag[0] & ORDER_FOUR || BoardInfo[i].InterruptFlag[1] & ORDER_FOUR) {
+ 				spin_unlock_irqrestore(&io_request_lock, flags);
+ 				return ;
+ 			}
+ 		}	
+ 	}
+ 	my_done(scsiStatus << 16);
+ 	spin_unlock_irqrestore(&io_request_lock, flags);
+ 
+ 	return;
+ }
+ 
+ void     internal_done(Scsi_Cmnd * SCpnt)
+ {
+ 	internal_done_errcode = SCpnt->result;
+ 	++internal_done_flag;
+ }
+ 
+ int IsSplitter(char c)
+ {
+ 	if (c == ' ' || c == '-' || c == '_')
+ 		return 1;
+ 	else if (c >= '0' && c <= '9')
+ 		return 1;
+ 
+ 	return 0;
+ }
+ 
+ int             ultima_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
+ {
+ 	char 			*buf;
+ 	int	 			board,channel,drive;
+ 	ULONG			result;
+ 	/*
+ 	   printk("[c=%x : %s,I=%x]\n",
+ 	   (UCHAR) SCpnt->cmnd[0],
+ 	   GetCmdName((UCHAR) SCpnt->cmnd[0]),
+ 	   SCpnt->target);
+ 	 */
+ 	if (in_command) {
+ 		printk("[ ultima_queue c=%x : %s,I=%x]\n",
+ 				(UCHAR) SCpnt->cmnd[0],
+ 				GetCmdName((UCHAR) SCpnt->cmnd[0]),
+ 				SCpnt->target);
+ 		panic("Error! in_command == 1\n");
+ // Added 2003/11/09 by Ashuaria Lee
+ #warning I dont know what to do...
+ 		return -1;
+ 	}
+ 	while(test_and_set_bit(IOCTL_LOCK,&LockValue) != 0) {
+ 		//		printk("QW ");
+ 		schedule();
+ 		udelay(1);
+ 	}
+ 	while(in_ioctl) {
+ 		printk("in_ioctl = 1\n");
+ 		udelay(1);
+ 	}
+ 	in_command = 1;
+ 	current_SC = SCpnt;
+ 	current_SC->scsi_done = done;
+ 
+ 	current_SC->SCp.Status              = 0;
+ 	current_SC->SCp.Message             = 0;
+ 	current_SC->SCp.have_data_in        = 0;
+ 	current_SC->SCp.sent_command        = 0;
+ 	current_SC->SCp.phase               = in_arbitration;
+ 
+ 	if (SCpnt->target >= DiskCount || SCpnt->lun > 0) {
+ 		my_done(DID_ABORT << 16);
+ 		return 0;
+ 	}
+ 
+ 	if (SCpnt->target >= DiskCount) {
+ 		my_done(DID_ABORT << 16);
+ 		return 0;
+ 	}
+ 
+ 	board = DiskID[current_SC->target].DiskStatus.BoardID;
+ 	channel = DiskID[current_SC->target].DiskStatus.Channel;
+ 	drive = DiskID[current_SC->target].DiskStatus.Drive;
+ 	switch(current_SC->cmnd[0]) {
+ 		case TEST_UNIT_READY:
+ 		case REQUEST_SENSE :
+ 			my_done(0);
+ 			return 0;
+ 
+ 		case MODE_SENSE :
+ 			buf = (char *) current_SC->buffer;
+ 			buf[2] = 0x0;
+ 			my_done(0);
+ 			break;
+ 
+ 		case INQUIRY :
+ 			buf = (char *) current_SC->buffer;
+ 			{
+ 				PINQUIRYDATA    inquiryData
+ 					= (PINQUIRYDATA) current_SC->buffer;
+ 				PIDENTIFY_DATA identifyData =
+ 					&DiskIdentifyData[board][channel][drive];
+ 				int i;
+ 
+ 				memset(buf,0,current_SC->bufflen);
+ 
+ 				buf[4] = sizeof(INQUIRYDATA);
+ 
+ 				//
+ 				// Standard IDE interface only supports disks.
+ 				inquiryData->DeviceType = DIRECT_ACCESS_DEVICE;
+ 
+ 				//
+ 				// Fill in vendor identification fields.
+ 				{
+ 					unsigned char *p;
+ 					int	i,j;
+ 
+ 					for (i = 0; i < 24; i ++) {  
+ 						inquiryData->VendorId[i] = 0;
+ 					}
+ 					p = (UCHAR *) identifyData->ModelNumber;
+ 					i = 0;
+ 
+ 					while(!IsSplitter(p[i])) {
+ 						inquiryData->VendorId[i] = p[i++];
+ 					}
+ 					inquiryData->VendorId[i] = 0;
+ 
+ 					i++;
+ 					j = 0;
+ 					while (p[i] != ' ' && i < 24) 
+ 						inquiryData->ProductId[j++] = p[i++];
+ 					inquiryData->ProductId[j] = 0;
+ 
+ 				}
+ 				//
+ 				// Initialize unused portion of product id.
+ 				for (i = 0; i < 4; i++) {
+ 					inquiryData->ProductId[12+i] = ' ';
+ 				}
+ 
+ 				//
+ 				// Move firmware revision from IDENTIFY data to
+ 				// product revision in INQUIRY data.
+ 				for (i = 0; i < 4; i += 2) {
+ 					inquiryData->ProductRevisionLevel[i] =
+ 						((UCHAR *)identifyData->FirmwareRevision)[i+1];
+ 					inquiryData->ProductRevisionLevel[i+1] =
+ 						((UCHAR *)identifyData->FirmwareRevision)[i];
+ 				}
+ 			}
+ 			//					printk("Inquiry Success!");
+ 			my_done(0);
+ 			break;
+ 		case READ_6 : 
+ 		case READ_10 :
+ 		case WRITE_6 : 	
+ 		case WRITE_10 :
+ 			{
+ 				ULONG numsectors,lba,i ;
+ 
+ 				if (*current_SC->cmnd == READ_6 || *current_SC->cmnd == WRITE_6) {
+ 					numsectors = (u_long) current_SC->cmnd[4];
+ 					lba = ((u_long) current_SC->cmnd[1] << 16) |
+ 						((u_long) current_SC->cmnd[2] << 8) |
+ 						(u_long) current_SC->cmnd[3];
+ 					lba &= 0x1FFFFF;
+ 				}
+ 				if (*current_SC->cmnd == READ_10 || *current_SC->cmnd == WRITE_10) {
+ 					numsectors = (u_long) current_SC->cmnd[8] |
+ 						((u_long) current_SC->cmnd[7] << 8);
+ 					lba = ((u_long) current_SC->cmnd[2] << 24) |
+ 						((u_long) current_SC->cmnd[3] << 16) |
+ 						((u_long) current_SC->cmnd[4] << 8) |
+ 						(u_long) current_SC->cmnd[5];
+ 				}
+ 
+ 				memset(DiskRWInfo,0,sizeof(DiskRWInfo));
+ 				for(i=0;i<gBoardCount;i++) {
+ 					BoardInfo[i].InterruptFlag[0] = 0;
+ 					BoardInfo[i].InterruptFlag[1] = 0;
+ 				}
+ 				CurrentDisk = current_SC->target;
+ 
+ 				if (*current_SC->cmnd == READ_6 || *current_SC->cmnd == READ_10) {
+ 
+ //					printk("R:[%03d,%08x]\n", numsectors,lba);
+ 					ReadDMA(current_SC,lba,numsectors);
+ 				}
+ 				else {
+ //					printk("W:[%03d,%08x]\n", numsectors,lba);
+ 					WriteDMA(current_SC,lba,numsectors);
+ 				}
+ 			}	
+ 			break;
+ 
+ 		case READ_CAPACITY :
+ 			{
+ 				ULONG block,size;
+ 				IDENTIFY_DATA * IdentifyData;
+ 
+ 				block = DiskID[current_SC->target].DiskStatus.Size;
+ 				buf = (char *) current_SC->buffer;
+ 				size = 512; 
+ 
+ 				*((ULONG *) buf)  = htonl(block - 1);
+ 				*((ULONG *) (buf + 4))  = htonl(size);
+ 			}
+ 
+ 			my_done(0);
+ 			break;
+ 		default:
+ 			my_done(0);
+ 			break;
+ 
+ 	}
+ 	return 0;
+ }
+ 
+ int             ultima_command(Scsi_Cmnd * SCpnt)
+ {
+ 	ultima_queue(SCpnt, internal_done);
+ 	while (!internal_done_flag)
+ 		;
+ 	internal_done_flag = 0;
+ 	return internal_done_errcode;
+ }
+ 
+ 
+ void            print_info(Scsi_Cmnd * SCpnt)
+ {
+ 	ULONG    imr;
+ 	ULONG    irr;
+ 	ULONG    isr;
+ 
+ 
+ 	if (!SCpnt || !SCpnt->host)
+ 	{
+ 		printk("scsi: <aralion> Cannot provide detailed information\n");
+ 		return;
+ 	}
+ 
+ 	printk("%s\n", ultima_info(SCpnt->host));
+ 	return ;
+ 	print_banner(SCpnt->host);
+ 
+ 	printk("(%d), target = %d cmnd = 0x%02x pieces = %d size = %u\n",
+ 			SCpnt->SCp.phase,
+ 			SCpnt->target,
+ 			*(UCHAR *) SCpnt->cmnd,
+ 			SCpnt->use_sg, SCpnt->request_bufflen);
+ 	printk("sent_command = %d, have_data_in = %d, timeout = %d\n",
+ 			SCpnt->SCp.sent_command,
+ 			SCpnt->SCp.have_data_in, SCpnt->timeout);
+ }
+ 
+ int             ultima_handle(Scsi_Cmnd * SCpnt)
+ {
+ // Added 2003/11/09 by Ashuaria Lee
+ #warning I dont know what to do...
+     return 0;
+ }
+ 
+ int             ultima_abort(Scsi_Cmnd * SCpnt)
+ {
+ 	ULONG   flags;
+ 
+ 	if (!in_command)
+ 	{
+ 		return SCSI_ABORT_NOT_RUNNING;
+ 	}
+ 	ultima_cardreset();
+ 	print_info(SCpnt);
+ 	current_SC->SCp.phase |= aborted;
+ 	current_SC->result = DID_ABORT << 16;
+ 
+ 	/* Aborts are not done well. . . */
+ 	if (in_command)
+ 		my_done(DID_ABORT << 16);
+ 
+ 	return SCSI_ABORT_SUCCESS;
+ }
+ 
+ int             ultima_reset(Scsi_Cmnd * SCpnt, unsigned int ignored)
+ {
+ 	ultima_cardreset();
+ 	return SCSI_RESET_WAKEUP;
+ }
+ 
+ int             ultima_1cardreset(int BoardID)
+ {
+ 	int		i,k;
+ 	UCHAR	statusByte,statusByte2;
+ 
+ 
+ 	SelectFirstChannel(BoardID);	
+ 	mdelay(20);
+ 	outw(0x8000,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 	outw(0x4000,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 	outw(0x0,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 
+ 	SelectSecondChannel(BoardID);
+ 	outw(0x8000,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 	outw(0x4000,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 	outw(0x0,BoardInfo[BoardID].PrimaryDmaIO + 0x0e);
+ 	mdelay(20);
+ 	/*
+ 	   for (i=0;i<200;i++) 
+ 	   {
+ 	   SelectFirstChannel(BoardID);	
+ 	   mdelay(1);
+ 	   outb(0xA0, BoardInfo[BoardID].PrimaryIO + DriveSelectPort);
+ 	   mdelay(5);
+ 	   GetBaseStatus(BoardInfo[BoardID].PrimaryIO, statusByte);
+ 	   mdelay(5);
+ 
+ 	   SelectSecondChannel(BoardID);
+ 	   mdelay(1);
+ 	   outb(0xA0, BoardInfo[BoardID].PrimaryIO + DriveSelectPort);
+ 	   mdelay(5);
+ 	   GetBaseStatus(BoardInfo[BoardID].PrimaryIO, statusByte2);
+ 	   mdelay(5);
+ 
+ 	   if (!(statusByte & 0x80) && !(statusByte2 & 0x80))
+ 	   break;
+ 	   }
+ 
+ 	   for (i=0;i<500;i++) {
+ 	   mdelay(1);
+ 	   }
+ 	 */
+ 	for (i=0;i<200;i++) {
+ 		mdelay(20);
+ 	}
+ /*
+ 	if (HddConnected[BoardID][0][0]) 
+ 	{
+ 		IdentifyDisk(BoardID,
+ 				0,
+ 				0,
+ 				&DiskIdentifyData[BoardID][0][0]);
+ 	}
+ 	if (HddConnected[BoardID][0][1]) 
+ 	{
+ 		IdentifyDisk(BoardID,
+ 				0,
+ 				1,
+ 				&DiskIdentifyData[BoardID][0][1]);
+ 	}
+ 	if (HddConnected[BoardID][1][0]) 
+ 	{
+ 		IdentifyDisk(BoardID,
+ 				1,
+ 				0,
+ 				&DiskIdentifyData[BoardID][1][0]);
+ 	}
+ 	if (HddConnected[BoardID][1][1]) 
+ 	{
+ 		IdentifyDisk(BoardID,
+ 				1,
+ 				1,
+ 				&DiskIdentifyData[BoardID][1][1]);
+ 	}
+ */
+ // Added 2003/11/09 by Ashuaria Lee
+ #warning I dont know what to do...
+     return 0;
+ }
+ 
+ 
+ int             ultima_cardreset(void)
+ {
+ 	int		i,j;
+ 
+ 	RWStatus = RESET_STATUS;
+ 
+ 	for(i=0;i<gBoardCount;i++)
+ 	{
+ 		DisableInterrupt(i);
+ 		ultima_1cardreset(i);
+ 		for(j=0;j<4;j++)
+ 		{
+ 			if(HddConnected[i][j/2][j%2]) 
+ 			{
+ 				IdentifyDisk(i,j/2,j%2,&DiskIdentifyData[i][j/2][j%2]);
+ 				SetUDMAMode(i,j/2,j%2);
+ 			}
+ 		}
+ 		EnableInterrupt(i);
+ 	}
+ 	return SCSI_RESET_WAKEUP;
+ }
+ 
+ 
+ int             ultima_biosparam(Scsi_Disk * disk, kdev_t dev,
+ 		int *info_array)
+ {
+ 	int				size;
+ 	int				target;
+ 
+ 	if (MAJOR(dev) != SCSI_DISK0_MAJOR)
+ 	{
+ 		printk("scsi: aralion ultima_biosparam: too many disks");
+ 		return 0;
+ 	}
+ 
+ 	target = MINOR(dev) >> 4;
+ 
+ 	info_array[0] = 16;
+ 	info_array[1] = 63;
+ 
+ 	size = DiskID[target].DiskStatus.Size;
+ 	info_array[2] = size / (info_array[0] * info_array[1]);
+ 
+ 	if (info_array[2] > 1024) { 
+ 		info_array[0] = 0xff;
+ 		info_array[2] =
+ 			(ULONG) size / (info_array[0] * info_array[1]);
+ 	}
+ 	return 0;
+ }
diff -Ncr linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/ultima.h linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/ultima.h
*** linux-2.4.20-aralion-0.0/drivers/scsi/ultimaraid133/ultima.h	1970-01-01 09:00:00.000000000 +0900
--- linux-2.4.20-aralion-0.1/drivers/scsi/ultimaraid133/ultima.h	2003-11-26 16:30:31.000000000 +0900
***************
*** 0 ****
--- 1,239 ----
+ #ifndef _ULTIMA_H
+ #define _ULTIMA_H
+ #include <linux/kdev_t.h>
+ 
+ #ifndef UCHAR 
+ #define UCHAR 	unsigned char
+ #define USHORT	unsigned short
+ #define	ULONG	unsigned long
+ #define DWORD	unsigned long
+ #define BYTE	unsigned char
+ #define	WORD	unsigned short
+ #endif 
+ 
+ #define		ARALION_VENDOR		0x1538
+ #define		ULTIMA_DEVICE		0x0303
+ 
+ #define		READ_STATUS			0x10000000
+ #define		WRITE_STATUS		0x20000000
+ #define		RESET_STATUS		0x40000000
+ #define 	REBUILD_STATUS		0x80000000
+ #define		MIRRORWRITE_STATUS	0x01000000
+ /*
+ #define 	ORDER_FIRST			0x00000001
+ #define 	ORDER_LAST			0x00000010
+ */
+ 
+ #define 	ORDER_ONE			0x00000001
+ #define 	ORDER_TWO			0x00000010
+ #define 	ORDER_THREE			0x00000100
+ #define 	ORDER_FOUR			0x00001000
+ 
+ 
+ #define DataPort          		0x00
+ #define ErrorPort         		0x01
+ #define BlockCountPort    		0x02
+ #define BlockNumberPort   		0x03
+ #define CylinderLowPort   		0x04
+ #define CylinderHighPort  		0x05
+ #define DriveSelectPort   		0x06 
+ #define CommandPort       		0x07   
+ #define AlternateStatusPort 	0x0E
+ 
+ #define FLASH_ADDRESS			0x02
+ #define FLASH_COMMAND			0x04
+ #define FLASH_STATUS			0x06
+ 
+ #define	SCATTERLISTSIZE			4096
+ 
+ #define	NODISK						0x00000000
+ #define NORMALIDE					0x00000001
+ #define STRIPING_2S					0x00000002
+ #define STRIPING_4S					0x00000003
+ #define MIRRORING					0x00000004
+ #define STRIPMIRRORING_2S			0x00000005
+ #define STRIPMIRRORING_4S			0x00000006
+ #define JBOD						0x00000007
+ //#define STRIPMIRRORING2				
+ 
+ #define NOTAVAILABLE				0x0000ffff
+ #define	ERROR_INVALID_SECTORCOUNT 	0x00000001
+ #define	ERROR_DISK_NOTAVAILABLE		0x00000002
+ #define	ERROR_INVALID_CHANNEL		0x00000003
+ 
+ #define		MAXBOARD				4
+ 
+ #define	NORMALSTATUS				0x00000000
+ #define DISKSWAPPED					0x00000001
+ #define MIRRORDISABLED				0x00000002
+ #define REBUILDING					0x00000010
+ #define	REBUILDED					0x00000020
+ #define	DISKNOTAVAILABLE			0x80000000
+ 
+ extern int        	ultima_detect( Scsi_Host_Template * );
+ extern int        	ultima_release( struct Scsi_Host * tpnt);
+ extern int        	ultima_command( Scsi_Cmnd * );
+ extern int        	ultima_queue( Scsi_Cmnd *, void (*done)(Scsi_Cmnd *) );
+ extern int        	ultima_abort( Scsi_Cmnd * );
+ extern int        	ultima_reset( Scsi_Cmnd *, unsigned int ); 
+ extern int        	ultima_biosparam( Disk *, kdev_t, int * );
+ extern int        	ultima_handle( Scsi_Cmnd * );
+ extern char * 		ultima_info( struct Scsi_Host * );
+ extern int		ultima_cardreset( void );
+ extern int        	ultima_proc_info( char *buffer, char **start, off_t offset,
+ 				   					int length, int hostno, int inout );
+ 
+ extern struct proc_dir_entry proc_scsi_aralion;
+ 
+ #define ULTIMA_REVID "Aralion ATA133 IDE Raid Controller driver; Revision: LH1.00BCS"
+ 
+ #define ULTIMA_DMA133 { 										\
+ 			next:		NULL,						\
+ 			module:		NULL,						\
+ 			proc_dir: 	NULL,						\
+ 			proc_name:	"Aralion", \
+ 			proc_info:     		ultima_proc_info,           \
+ 			name: "Ultima RAID 133",						\
+ 			detect:    			ultima_detect,              \
+ 			release: 			ultima_release,				\
+ 			info	:			NULL,	\
+ 			ioctl:				NULL,				\
+ 		    command:        	NULL,             \
+ 		    queuecommand:   	ultima_queue,               \
+ 		    abort:          	ultima_abort,               \
+ 			reset:				ultima_reset,				\
+ 			slave_attach:		NULL, \
+ 		    bios_param:     	ultima_biosparam,           \
+ 		    can_queue:      	1, 			 				\
+ 		    this_id:        	15, 			 			\
+ 			present:	0, \
+ 		    sg_tablesize:   	16, 			 			\
+ 			cmd_per_lun: 		0,		/* cmds per lun		      */\
+ 		    use_clustering: 	DISABLE_CLUSTERING, 			\
+     		use_new_eh_code: 	0};						
+ 
+ typedef struct 
+ {
+  char *buffer;
+  unsigned long bufferlen;
+ } IoctlParam;
+ 
+ typedef struct
+ {
+ 	char signature[8];
+ 	unsigned long IOPort1;
+ 	unsigned long irq;
+ } IrqID;
+ 
+ typedef struct {
+ 	DWORD	BoardID;
+ 	DWORD	Channel;
+ 	DWORD	Drive;	
+ 	DWORD	Size;
+ } DISKLIST;
+ 
+ typedef struct {
+ 	DWORD		RaidStatus;
+ 	DISKLIST	DiskStatus;
+ } _DiskIDTable;
+ 
+ typedef struct _PDT_TABLE {
+ 	ULONG  address;   
+ 	USHORT length;   
+ 	UCHAR  Reserved;
+ 	UCHAR  EndOfChain;
+ } PDT_TABLE, *PPDT_TABLE;
+ 
+ typedef struct
+ {
+ 	PDT_TABLE	ScatterList[128];
+ 	ULONG		ListCount;
+ 	ULONG		NumSectors;
+ 	ULONG		StartLba;
+ 	ULONG		InterruptFlag;
+ } DISKRWINFO;
+ 
+ typedef struct _BOARDTABLE {
+     ULONG 		PrimaryIO;
+     ULONG 		SecondaryIO;
+ 	ULONG 		PrimaryDmaIO;
+ 	ULONG 		SecondaryDmaIO;
+ 	ULONG 		ControlRegister;
+ 	ULONG		FlashMemory;
+ 	ULONG 		interrupt_level;
+ 	
+ 	PPDT_TABLE	PriScatterList;
+ 	PPDT_TABLE	SecScatterList;
+ 
+ 	ULONG		ListCount;
+ 	ULONG		NumSectors;
+ 	ULONG		StartLba;
+ 	ULONG		InterruptFlag[2];
+ } BOARDTABLE,*PBOARDsTABLE;
+ 
+ typedef struct _V6BDISKINFO
+ {
+ 	UCHAR Mode;
+ 	UCHAR PhysicalDrive;
+ 	UCHAR Order;
+ }V6BDISKINFO,*PV6BDISK;
+ 
+ typedef struct _V6InterfaceB
+ {
+ 	ULONG TagField;
+ 	USHORT Version;
+ 	UCHAR Reserved;
+ 	UCHAR StructSize;
+ 	USHORT RebuildBit;
+ 	UCHAR Mode;
+ 	UCHAR IsSafeMode;
+ 	ULONG Reserved1;
+ 	ULONG BaseHddSize[8];
+ 	V6BDISKINFO DiskInfo[4][4];
+ 	UCHAR Reserved2[5];
+ 	UCHAR ProcInfo[4];
+ 	UCHAR Reserved3[151];
+ }V6INTERFACEB,*PV6INTERFACEB;
+ 
+ #define GetStatus(BaseIoAddress, Status) Status = inb((BaseIoAddress) + AlternateStatusPort);
+ 
+ #define GetBaseStatus(BaseIoAddress, Status) \
+ 	    Status = inb(BaseIoAddress + CommandPort);
+ 
+ #define Delayed_Time(delay) { \
+ 	ULONG j = jiffies + delay * HZ; \
+ 	struct wait_queue *wait = NULL; \
+ 	current->timeout = j; \
+ 	interruptible_sleep_on(&wait); }
+ 
+ #define WaitOnBusy(BaseIoAddress, Status) {ULONG i; \
+ 	for (i=0; i<5; i++) { \
+ 		GetStatus((BaseIoAddress), Status); \
+ 			if (Status & IDE_STATUS_BUSY) { \
+ 				udelay(1); \
+ 				continue; \
+ 			} else { \
+ 				break; \
+ 			} \
+ 	} \
+ }
+ 
+ #define WaitForDrq(BaseIoAddress, Status) \
+ { \
+ 	ULONG i; \
+ 	for (i=0; i<1000; i++) { \
+ 		GetStatus(BaseIoAddress, Status); \
+ 			if (Status & IDE_STATUS_BUSY) { \
+ 				udelay(150); \
+ 			} else if (Status & IDE_STATUS_DRQ) { \
+ 				break; \
+ 			} else { \
+ 				udelay(200); \
+ 			} \
+ 	} \
+ }
+ 
+ #endif
+ #define SelectFirstChannel(BoardID) outb(0xA0,BoardInfo[BoardID].SecondaryIO+DriveSelectPort);
+ #define SelectSecondChannel(BoardID) outb(0xB0,BoardInfo[BoardID].SecondaryIO+DriveSelectPort);
+ 	
