From 4e6502e7006b2461f8523deb5f0213873f8cb5e8 Mon Sep 17 00:00:00 2001 From: James Stembridge Date: Sun, 16 Nov 2003 17:18:09 +0000 Subject: sync with vidix cvs CVS patchset: 5755 CVS date: 2003/11/16 17:18:09 --- CREDITS | 2 +- src/video_out/libdha/kernelhelper/dhahelper.c | 176 +++++- src/video_out/libdha/kernelhelper/dhahelper.h | 28 +- src/video_out/libdha/libdha.h | 34 +- src/video_out/libdha/mmi.c | 10 +- src/video_out/libdha/mtrr.c | 71 +-- src/video_out/libdha/oth/pci.db | 704 ++++++++++-------------- src/video_out/libdha/pci.c | 78 ++- src/video_out/libdha/sysdep/AsmMacros_powerpc.h | 6 +- src/video_out/libdha/sysdep/pci_linux.c | 4 + src/video_out/libdha/sysdep/pci_powerpc.c | 18 +- src/video_out/libdha/test.c | 5 + src/video_out/vidix/drivers/mach64_vid.c | 13 +- src/video_out/vidix/drivers/mga_vid.c | 2 +- src/video_out/vidix/drivers/pm3_vid.c | 147 +++-- src/video_out/vidix/drivers/radeon_vid.c | 362 ++++++------ src/video_out/vidix/fourcc.h | 3 + src/video_out/vidix/vidix.h | 9 +- src/video_out/vidix/vidixlib.c | 92 ++++ src/video_out/vidix/vidixlib.h | 27 + 20 files changed, 1060 insertions(+), 731 deletions(-) diff --git a/CREDITS b/CREDITS index 440f6b585..44c7682e6 100644 --- a/CREDITS +++ b/CREDITS @@ -26,7 +26,7 @@ libvcd 0.7.19-cdio nosefart 1.92 Mike Melanson tvtime 0.9.8.4 Miguel Freitas wine -vidix MPlayerXP 0.1.10cvs James Stembridge +vidix cvs (16/Nov/03) James Stembridge ----------------------------------------------------------------------- diff --git a/src/video_out/libdha/kernelhelper/dhahelper.c b/src/video_out/libdha/kernelhelper/dhahelper.c index b438364d0..4f41dd9dd 100644 --- a/src/video_out/libdha/kernelhelper/dhahelper.c +++ b/src/video_out/libdha/kernelhelper/dhahelper.c @@ -2,7 +2,7 @@ Direct Hardware Access kernel helper (C) 2002 Alex Beregszaszi - (C) 2002 Nick Kurshev + (C) 2002-2003 Nick Kurshev Accessing hardware from userspace as USER (no root needed!) @@ -90,13 +90,25 @@ #include #include +#ifdef CONFIG_MTRR +#include +#endif #ifdef CONFIG_DEVFS_FS #include #endif #include "dhahelper.h" -MODULE_AUTHOR("Alex Beregszaszi and Nick Kurshev "); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) +#define DEV_MINOR(d) minor(d) +#define pte_offset(p,a) pte_offset_kernel(p,a) +#define LockPage(p) SetPageLocked(p) +#define UnlockPage(p) ClearPageLocked(p) +#else +#define DEV_MINOR(d) MINOR(d) +#endif + +MODULE_AUTHOR("Alex Beregszaszi , Nick Kurshev , Måns Rullgård "); MODULE_DESCRIPTION("Provides userspace access to hardware"); #ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); @@ -118,10 +130,12 @@ static int dhahelper_open(struct inode *inode, struct file *file) if (dhahelper_verbosity > 1) printk(KERN_DEBUG "dhahelper: device opened\n"); - if (MINOR(inode->i_rdev) != 0) + if (DEV_MINOR(inode->i_rdev) != 0) return -ENXIO; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) MOD_INC_USE_COUNT; +#endif return 0; } @@ -131,10 +145,12 @@ static int dhahelper_release(struct inode *inode, struct file *file) if (dhahelper_verbosity > 1) printk(KERN_DEBUG "dhahelper: device released\n"); - if (MINOR(inode->i_rdev) != 0) + if (DEV_MINOR(inode->i_rdev) != 0) return -ENXIO; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) MOD_DEC_USE_COUNT; +#endif return 0; } @@ -735,6 +751,140 @@ static int dhahelper_cpu_flush(dhahelper_cpu_flush_t *arg) return 0; } +static struct pci_dev *pdev = NULL; +static int dhahelper_pci_find(dhahelper_pci_device_t *arg) +{ + dhahelper_pci_device_t this_dev; + pdev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, pdev); + if(pdev) + { + this_dev.bus = pdev->bus->number; + this_dev.card = PCI_SLOT(pdev->devfn); + this_dev.func = PCI_FUNC(pdev->devfn); + this_dev.vendor = pdev->vendor; + this_dev.device = pdev->device; + this_dev.base0 = pci_resource_start (pdev, 0); + this_dev.base1 = pci_resource_start (pdev, 1); + this_dev.base2 = pci_resource_start (pdev, 2); + pci_read_config_dword(pdev, pdev->rom_base_reg, (u32*)&this_dev.baserom); + this_dev.base3 = pci_resource_start (pdev, 3); + this_dev.base4 = pci_resource_start (pdev, 4); + this_dev.base5 = pci_resource_start (pdev, 5); + pci_read_config_byte(pdev, PCI_INTERRUPT_LINE, &this_dev.irq); + pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &this_dev.ipin); + pci_read_config_byte(pdev, PCI_MIN_GNT, &this_dev.gnt); + pci_read_config_byte(pdev, PCI_MAX_LAT, &this_dev.lat); + } + else memset(&this_dev,0,sizeof(dhahelper_pci_device_t)); + if (copy_to_user(arg, &this_dev, sizeof(dhahelper_pci_device_t))) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: failed copy to userspace\n"); + return -EFAULT; + } + return pdev?0:-ENODATA; +} + +static int dhahelper_pci_config(dhahelper_pci_config_t *arg) +{ + dhahelper_pci_config_t op; + struct pci_dev *pdev; + if (copy_from_user(&op, arg, sizeof(dhahelper_pci_config_t))) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: failed copy from userspace\n"); + return -EFAULT; + } + pdev = pci_find_slot(op.bus,PCI_DEVFN(op.dev,op.func)); + if(!pdev) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: can't identify device\n"); + return -EFAULT; + } + switch(op.operation) + { + case PCI_OP_READ: + switch(op.size) + { + case 1: + pci_read_config_byte(pdev,op.cmd,(u8*)&op.ret); + break; + case 2: + pci_read_config_word(pdev,op.cmd,(u16*)&op.ret); + break; + case 4: + pci_read_config_dword(pdev,op.cmd,(u32*)&op.ret); + break; + default: + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: wrong size of pci operation: %u \n",op.size); + return -EFAULT; + } + case PCI_OP_WRITE: + switch(op.size) + { + case 1: + pci_write_config_byte(pdev,op.cmd,op.ret); + break; + case 2: + pci_write_config_word(pdev,op.cmd,op.ret); + break; + case 4: + pci_write_config_dword(pdev,op.cmd,op.ret); + break; + default: + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: wrong size of pci operation: %u \n",op.size); + return -EFAULT; + } + default: + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: unknown pci operation %i\n",op.operation); + return -EFAULT; + } + if (copy_to_user(arg, &op, sizeof(dhahelper_pci_device_t))) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: failed copy to userspace\n"); + return -EFAULT; + } + return 0; +} + +static int dhahelper_mtrr(dhahelper_mtrr_t *arg) +{ +#ifdef CONFIG_MTRR + dhahelper_mtrr_t op; + if (copy_from_user(&op, arg, sizeof(dhahelper_pci_config_t))) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: failed copy from userspace\n"); + return -EFAULT; + } + switch(op.operation) + { + case MTRR_OP_ADD: + op.privat = mtrr_add (op.start,op.size,op.type,1); + break; + case MTRR_OP_DEL: + mtrr_del(op.privat, op.start, op.size); + break; + default: + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: unknown mtrr operation %i\n",op.operation); + return -EFAULT; + } + if (copy_to_user(arg, &op, sizeof(dhahelper_mtrr_t))) + { + if (dhahelper_verbosity > 0) + printk(KERN_ERR "dhahelper: failed copy to userspace\n"); + return -EFAULT; + } +#endif + return 0; +} + static int dhahelper_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { @@ -742,13 +892,15 @@ static int dhahelper_ioctl(struct inode *inode, struct file *file, printk(KERN_DEBUG "dhahelper: ioctl(cmd=%x, arg=%lx)\n", cmd, arg); - if (MINOR(inode->i_rdev) != 0) + if (DEV_MINOR(inode->i_rdev) != 0) return -ENXIO; switch(cmd) { case DHAHELPER_GET_VERSION: return dhahelper_get_version((int *)arg); case DHAHELPER_PORT: return dhahelper_port((dhahelper_port_t *)arg); + case DHAHELPER_MTRR: return dhahelper_mtrr((dhahelper_mtrr_t *)arg); + case DHAHELPER_PCI_CONFIG: return dhahelper_pci_config((dhahelper_pci_config_t *)arg); case DHAHELPER_VIRT_TO_PHYS:return dhahelper_virt_to_phys((dhahelper_vmi_t *)arg); case DHAHELPER_VIRT_TO_BUS: return dhahelper_virt_to_bus((dhahelper_vmi_t *)arg); case DHAHELPER_ALLOC_PA:return dhahelper_alloc_pa((dhahelper_mem_t *)arg); @@ -759,6 +911,7 @@ static int dhahelper_ioctl(struct inode *inode, struct file *file, case DHAHELPER_ACK_IRQ: return dhahelper_ack_irq((dhahelper_irq_t *)arg); case DHAHELPER_FREE_IRQ: return dhahelper_free_irq((dhahelper_irq_t *)arg); case DHAHELPER_CPU_FLUSH: return dhahelper_cpu_flush((dhahelper_cpu_flush_t *)arg); + case DHAHELPER_PCI_FIND: return dhahelper_pci_find((dhahelper_pci_device_t *)arg); default: if (dhahelper_verbosity > 0) printk(KERN_ERR "dhahelper: invalid ioctl (%x)\n", cmd); @@ -927,6 +1080,7 @@ static inline int noncached_address(unsigned long addr) static int dhahelper_mmap(struct file * file, struct vm_area_struct * vma) { unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; + int err; /* * Accessing memory above the top the kernel knows about or @@ -945,8 +1099,14 @@ static int dhahelper_mmap(struct file * file, struct vm_area_struct * vma) if (offset >= __pa(high_memory) || (file->f_flags & O_SYNC)) vma->vm_flags |= VM_IO; - if (remap_page_range(vma->vm_start, offset, vma->vm_end-vma->vm_start, - vma->vm_page_prot)) +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) + err = remap_page_range(vma, vma->vm_start, offset, + vma->vm_end-vma->vm_start, vma->vm_page_prot); +#else + err = remap_page_range(vma->vm_start, offset, + vma->vm_end-vma->vm_start, vma->vm_page_prot); +#endif + if(err) return -EAGAIN; return 0; } @@ -1035,7 +1195,9 @@ static void __exit exit_dhahelper(void) #endif } +#ifdef EXPORT_NO_SYMBOLS EXPORT_NO_SYMBOLS; +#endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) module_init(init_dhahelper); diff --git a/src/video_out/libdha/kernelhelper/dhahelper.h b/src/video_out/libdha/kernelhelper/dhahelper.h index 4c12840f4..7db56abb5 100644 --- a/src/video_out/libdha/kernelhelper/dhahelper.h +++ b/src/video_out/libdha/kernelhelper/dhahelper.h @@ -2,6 +2,7 @@ Direct Hardware Access kernel helper (C) 2002 Alex Beregszaszi + (C) 2002-2003 Nick Kurshev */ #ifndef DHAHELPER_H @@ -12,7 +13,7 @@ /* feel free to change */ #define DEFAULT_MAJOR 252 /* 240-254 LOCAL/EXPERIMENTAL USE */ -#define API_VERSION 0x21 /* 2.1*/ +#define API_VERSION 0x30 /* 3.0*/ typedef struct dhahelper_port_s { @@ -29,14 +30,15 @@ typedef struct dhahelper_mtrr_s #define MTRR_OP_ADD 1 #define MTRR_OP_DEL 2 int operation; - int start; - int size; + long start; + long size; int type; + int privat; } dhahelper_mtrr_t; -typedef struct dhahelper_pci_s +typedef struct dhahelper_pci_config_s { -#define PCI_OP_READ 1 +#define PCI_OP_READ 0 #define PCI_OP_WRITE 1 int operation; int bus; @@ -44,8 +46,8 @@ typedef struct dhahelper_pci_s int func; int cmd; int size; - int ret; -} dhahelper_pci_t; + long ret; +} dhahelper_pci_config_t; typedef struct dhahelper_vmi_s { @@ -75,10 +77,19 @@ typedef struct dhahelper_cpu_flush_s unsigned long length; }dhahelper_cpu_flush_t; +typedef struct dhahelper_pci_device_s +{ + int bus,card,func; /* PCI/AGP bus:card:func */ + unsigned short vendor,device; /* Card vendor+device ID */ + unsigned long base0,base1,base2,baserom; /* Memory and I/O base addresses */ + unsigned long base3,base4,base5; /* Memory and I/O base addresses */ + unsigned char irq,ipin,gnt,lat; /* assigned IRQ parameters for this card */ +}dhahelper_pci_device_t; + #define DHAHELPER_GET_VERSION _IOW('D', 0, int) #define DHAHELPER_PORT _IOWR('D', 1, dhahelper_port_t) #define DHAHELPER_MTRR _IOWR('D', 2, dhahelper_mtrr_t) -#define DHAHELPER_PCI _IOWR('D', 3, dhahelper_pci_t) +#define DHAHELPER_PCI_CONFIG _IOWR('D', 3, dhahelper_pci_config_t) #define DHAHELPER_VIRT_TO_PHYS _IOWR('D', 4, dhahelper_vmi_t) #define DHAHELPER_VIRT_TO_BUS _IOWR('D', 5, dhahelper_vmi_t) #define DHAHELPER_ALLOC_PA _IOWR('D', 6, dhahelper_mem_t) @@ -89,5 +100,6 @@ typedef struct dhahelper_cpu_flush_s #define DHAHELPER_ACK_IRQ _IOWR('D', 11, dhahelper_irq_t) #define DHAHELPER_FREE_IRQ _IOWR('D', 12, dhahelper_irq_t) #define DHAHELPER_CPU_FLUSH _IOWR('D', 13, dhahelper_cpu_flush_t) +#define DHAHELPER_PCI_FIND _IOWR('D', 14, dhahelper_pci_device_t) #endif /* DHAHELPER_H */ diff --git a/src/video_out/libdha/libdha.h b/src/video_out/libdha/libdha.h index 9984574ca..e37cae515 100644 --- a/src/video_out/libdha/libdha.h +++ b/src/video_out/libdha/libdha.h @@ -35,8 +35,8 @@ typedef struct pciinfo_s { int bus,card,func; /* PCI/AGP bus:card:func */ unsigned short vendor,device; /* Card vendor+device ID */ - unsigned base0,base1,base2,baserom; /* Memory and I/O base addresses */ - unsigned base3,base4,base5; /* Memory and I/O base addresses */ + unsigned long base0,base1,base2,baserom; /* Memory and I/O base addresses */ + unsigned long base3,base4,base5; /* Memory and I/O base addresses */ unsigned char irq,ipin,gnt,lat; /* assigned IRQ parameters for this card */ // unsigned base0_limit, base1_limit, base2_limit, baserom_limit; }pciinfo_t; @@ -93,12 +93,36 @@ extern void bm_close( void ); extern int bm_virt_to_phys( void * virt_addr, unsigned long length, unsigned long * parray ); /* Converts virtual memory addresses into bus address - Works in the same way as bm_virt_to_phys. */ + Works in the same way as bm_virt_to_phys. + WARNING: This function will be die after implementing + bm_alloc_pci_shmem() because we really can't pass + any memory address to card. Example: 64-bit linear address + can't be passed into 32-bit card. Even more - some old + cards can access 24-bit address space only */ extern int bm_virt_to_bus( void * virt_addr, unsigned long length, unsigned long * barray ); -extern void * bm_alloc_pa( unsigned long length ); -extern void bm_free_pa( void * virt_addr, unsigned long length ); + /* NOTE: bm_alloc_pci_shmem() and bm_free_pci_shmem() + are still not implemented! + arguments: + pciinfo_t - specifies pci card for which memory should be shared + bitness - can be 16,24,32,64 specifies addressing possibilities + of the card + length - specifies size of memory which should allocated + op - specifies direction as combination flags TO_CARD,FROM_CARD + Return value - should be tuned + we need to have something like this: + struct pci_shmem + { + void * handler; + void * virt_addr + void * array_of_bus_addr[]; + unsigned long length; + } + NOTE2: After finalizing of these functions bm_virt_to_bus() will be die */ +extern void * bm_alloc_pci_shmem(pciinfo_t *, unsigned mem_bitness, unsigned long length,int op ); +extern void bm_free_pci_shmem(void * pci_shmem); + extern int bm_lock_mem( const void * addr, unsigned long length ); extern int bm_unlock_mem( const void * addr, unsigned long length ); diff --git a/src/video_out/libdha/mmi.c b/src/video_out/libdha/mmi.c index ffdf8df15..d1cd3c8d1 100644 --- a/src/video_out/libdha/mmi.c +++ b/src/video_out/libdha/mmi.c @@ -58,8 +58,10 @@ int bm_virt_to_bus( void * virt_addr, unsigned long length, unsigned long * barr return ENXIO; } -void * bm_alloc_pa( unsigned long length ) +void * bm_alloc_pci_shmem(pciinfo_t *pi, unsigned mem_bitness, unsigned long length,int op ) { + printf("libdha: Pure virtual function call - bm_alloc_pci_shmem()\n"); +#if 0 dhahelper_mem_t vmi; vmi.length = length; if(libdha_fd > 0) @@ -68,10 +70,13 @@ void * bm_alloc_pa( unsigned long length ) return vmi.addr; } return 0; +#endif } -void bm_free_pa( void * virt_addr, unsigned long length ) +void bm_free_pci_shmem(void * pci_shmem) { + printf("libdha: Pure virtual function call - bm_free_pci_shmem()\n"); +#if 0 dhahelper_mem_t vmi; vmi.addr = virt_addr; vmi.length = length; @@ -79,6 +84,7 @@ void bm_free_pa( void * virt_addr, unsigned long length ) { ioctl(libdha_fd,DHAHELPER_FREE_PA,&vmi); } +#endif } int bm_lock_mem( const void *addr, unsigned long length ) diff --git a/src/video_out/libdha/mtrr.c b/src/video_out/libdha/mtrr.c index 765562dd6..4878c2284 100644 --- a/src/video_out/libdha/mtrr.c +++ b/src/video_out/libdha/mtrr.c @@ -10,6 +10,10 @@ #include #include #include +#include +#include +#include +#include "kernelhelper/dhahelper.h" #include "libdha.h" #if defined (__i386__) && defined (__NetBSD__) @@ -22,10 +26,43 @@ #endif #endif -#if defined( __i386__ ) int mtrr_set_type(unsigned base,unsigned size,int type) { -#ifdef linux + int dhahelper_fd; + dhahelper_fd = open("/dev/dhahelper",O_RDWR); + if(dhahelper_fd > 0) + { + int retval; + dhahelper_mtrr_t mtrrs; + mtrrs.operation = MTRR_OP_ADD; + mtrrs.start = base; + mtrrs.size = size; + mtrrs.type = type; + retval = ioctl(dhahelper_fd, DHAHELPER_ACK_IRQ, &mtrrs); + close(dhahelper_fd); + return retval; + } +#if defined (__NetBSD__) && (__NetBSD_Version__) > 105240000 + { + struct mtrr *mtrrp; + int n; + + mtrrp = malloc(sizeof (struct mtrr)); + mtrrp->base = base; + mtrrp->len = size; + mtrrp->type = type; + mtrrp->flags = MTRR_VALID | MTRR_PRIVATE; + n = 1; + + if (i386_set_mtrr(mtrrp, &n) < 0) { + free(mtrrp); + return errno; + } + free(mtrrp); + return 0; + } +#else + { FILE * mtrr_fd; char * stype; switch(type) @@ -48,37 +85,7 @@ int mtrr_set_type(unsigned base,unsigned size,int type) fclose(mtrr_fd); return wr_len == strlen(sout) ? 0 : EPERM; } - return ENOSYS; -#elif defined (__NetBSD__) -#if __NetBSD_Version__ > 105240000 - struct mtrr *mtrrp; - int n; - - mtrrp = malloc(sizeof (struct mtrr)); - mtrrp->base = base; - mtrrp->len = size; - mtrrp->type = type; - mtrrp->flags = MTRR_VALID | MTRR_PRIVATE; - n = 1; - - if (i386_set_mtrr(mtrrp, &n) < 0) { - free(mtrrp); - return errno; } - free(mtrrp); - return 0; -#else - /* NetBSD prior to 1.5Y doesn't have MTRR support */ - return ENOSYS; -#endif -#else -#warning Please port MTRR stuff!!! - return ENOSYS; #endif -} -#else -int mtrr_set_type(unsigned base,unsigned size,int type) -{ return ENOSYS; } -#endif diff --git a/src/video_out/libdha/oth/pci.db b/src/video_out/libdha/oth/pci.db index 7bdac80c5..73ba5c7c2 100644 --- a/src/video_out/libdha/oth/pci.db +++ b/src/video_out/libdha/oth/pci.db @@ -2,7 +2,6 @@ v 0000 Gammagraphx, Inc. 0 v 001a Ascend Communications, Inc. 0 v 0033 Paradyne corp. 0 v 003d Lockheed Martin-Marietta Corp 0 -v 0059 Tiger Jet Network Inc. (Wrong ID) 0 Real TJN ID is e159, but they got it wrong several times --mj v 0070 Hauppauge computer works Inc. 0 v 0100 Ncipher Corp Ltd 0 v 0675 Dynalink 0 @@ -139,14 +138,27 @@ d 10010016 PCI-MFB Analogue I/O board 0 d 10010017 PROTO-3 PCI Prototyping board 0 d 10019100 INI-9100/9100W SCSI Host 0 v 1002 ATI Technologies Inc 0 +d 10024136 Radeon RS100 [IGP320] 0 +d 10024137 Radeon RS200 [IGP330/340/350] 0 +d 10024144 Radeon RV300 [9500 AD] 0 +d 10024145 Radeon RV300 [9500 AE] 0 +d 10024146 Radeon RV300 [9500 AF] 0 +d 10024147 Radeon R300 [FireGL Z1/X1] 0 +d 10024148 Radeon R350 [No name AH] 0 +d 10024149 Radeon R350 [No name AI] 0 +d 1002414A Radeon R350 [No name AJ] 0 +d 1002414B Radeon R350 [FireGL AK] 0 +d 10024150 Radeon RV350 [9600 AP] 0 +d 10024152 Radeon RV350 [9600Pro AR] 0 d 10024158 68800AX [Mach32] 0 +d 10024237 Radeon RS250 [7000 IGP (A4+)] 0 d 10024242 Radeon R200 BB [Radeon All in Wonder 8500DV] 0 s 10024242100202aa Radeon 8500 AIW DV Edition 0 -d 10024336 Radeon Mobility U1 0 -d 10024337 Radeon IGP 340M 1 Compaq Evo N1020v -d 10024337 Radeon IGP 340 1 Compaq Evo N1020v +d 10024336 Radeon RS100 Mobility [IGP320M (U1)] 0 +d 10024337 Radeon RS200 Mobility [IGP330M/340M/350M (U2)] 0 d 10024354 215CT [Mach64 CT] 0 d 10024358 210888CX [Mach64 CX] 0 +d 10024437 Radeon RS250 Mobility [7000 IGP] 0 d 10024554 210888ET [Mach64 ET] 0 d 10024654 Mach64 VT 0 d 10024742 3D Rage Pro AGP 1X/2X 0 @@ -194,8 +206,7 @@ d 10024751 3D Rage Pro 215GQ 0 d 10024752 Rage XL 0 s 1002475210020008 Rage XL 0 s 1002475210024752 Rage XL 0 -s 1002475210028008 Rage XL 1 -s 10024752102800d1 PowerEdge 2550 0 +s 10024752102800d1 PowerEdge 2550 1 d 10024753 Rage XC 0 s 1002475310024753 Rage XC 0 d 10024754 3D Rage I/II 215GT [Mach64 GT] 0 @@ -213,18 +224,20 @@ d 10024759 3D Rage IIC 0 d 1002475a 3D Rage IIC AGP 0 s 1002475a10020087 Rage 3D IIC 0 s 1002475a1002475a Rage IIC AGP 0 -d 10024964 Radeon R250 Id [Radeon 9000] 0 -d 10024965 Radeon R250 Ie [Radeon 9000] 0 -d 10024966 Radeon R250 If [Radeon 9000] 0 -s 1002496610f10002 R250 If [Tachyon G9000 PRO] 0 -s 10024966148c2039 R250 If [Radeon 9000 Pro "Evil Commando"] 0 -s 1002496615099a00 R250 If [Radeon 9000 "AT009"] 0 -s 10024966174b7176 R250 If [Sapphire Radeon 9000 Pro] 0 -s 10024966174b7192 R250 If [Radeon 9000 "Atlantis"] 0 -s 1002496617af2005 R250 If [Excalibur Radeon 9000 Pro] 0 -s 1002496617af2006 R250 If [Excalibur Radeon 9000] 0 +d 10024964 Radeon RV250 Id [Radeon 9000] 0 +d 10024965 Radeon RV250 Ie [Radeon 9000] 0 +d 10024966 Radeon RV250 If [Radeon 9000] 0 +d 10024967 Radeon RV250 Ig [Radeon 9000] 0 +s 1002496610f10002 R250 If [Tachyon G9000 PRO] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10024966148c2039 R250 If [Radeon 9000 Pro "Evil Commando"] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 1002496615099a00 R250 If [Radeon 9000 "AT009"] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10024966174b7176 R250 If [Sapphire Radeon 9000 Pro] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10024966174b7192 Radeon R250 If [Radeon 9000 "Atlantis"] 1 New "Powered by ATI" card - Manufactured by: Sapphire (www.sapphiretech.com) +s 10024966174b7192 R250 If [Radeon 9000 "Atlantis"] 1 Update - tidied up entry above submitted by someone else +s 1002496617af2005 R250 If [Excalibur Radeon 9000 Pro] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 1002496617af2006 R250 If [Excalibur Radeon 9000] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html d 10024967 Radeon R250 Ig [Radeon 9000] 0 -d 1002496e Radeon R250 [Radeon 9000] (Secondary) 0 +d 1002496e Radeon R250 [Radeon 9000] (Secondary) 1 d 10024c42 3D Rage LT Pro AGP-133 0 s 10024c420e11b0e8 Rage 3D LT Pro 0 s 10024c420e11b10e 3D Rage LT Pro (Compaq Armada 1750) 0 @@ -243,9 +256,8 @@ s 10024c4910020040 Rage LT Pro 0 s 10024c4910020044 Rage LT Pro 0 s 10024c4910024c49 Rage LT Pro 0 d 10024c4d Rage Mobility P/M AGP 2x 0 -s 10024c4d0e11b111 Armada M700 1 s 10024c4d10020084 Xpert 98 AGP 2X (Mobility) 0 -s 10024c4d10140154 ThinkPad A20m 0 +s 10024c4d10140154 ThinkPad A20m 1 d 10024c4e Rage Mobility L AGP 2x 0 d 10024c50 3D Rage LT Pro 0 s 10024c5010024c50 Rage LT Pro 0 @@ -254,26 +266,30 @@ d 10024c52 Rage Mobility P/M 0 d 10024c53 Rage Mobility L 0 d 10024c54 264LT [Mach64 LT] 0 d 10024c57 Radeon Mobility M7 LW [Radeon Mobility 7500] 0 -s 10024c5710140517 ThinkPad T30 0 +s 10024c5710140517 ThinkPad T30 1 s 10024c57102800e6 Radeon Mobility M7 LW (Dell Inspiron 8100) 0 -s 10024c57144dc006 Radeon Mobility M7 LW in vpr Matrix 170B4 0 d 10024c58 Radeon Mobility M7 LX [Radeon Mobility FireGL 7800] 0 d 10024c59 Radeon Mobility M6 LY 0 s 10024c5910140235 ThinkPad A30p (2653-64G) 0 s 10024c5910140239 ThinkPad X22/X23/X24 0 s 10024c59104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 d 10024c5a Radeon Mobility M6 LZ 0 -d 10024c64 Radeon R250 Ld [Radeon Mobility 9000] 0 -d 10024c65 Radeon R250 Le [Radeon Mobility 9000] 0 -d 10024c66 Radeon R250 Lf [Radeon Mobility 9000] 0 -d 10024c67 Radeon R250 Lg [Radeon Mobility 9000] 0 +d 10024c64 Radeon RV250 Ld [Radeon Mobility 9000] 0 +d 10024c65 Radeon RV250 Le [Radeon Mobility 9000] 0 +d 10024c66 Radeon RV250 Lf [Radeon Mobility 9000] 0 +d 10024c67 Radeon RV250 Lg [Radeon Mobility 9000] 0 d 10024d46 Rage Mobility M4 AGP 0 d 10024d4c Rage Mobility M4 AGP 0 -d 10024e44 Radeon R300 ND [Radeon 9700] 0 +d 10024e44 Radeon R300 ND [Radeon 9700Pro] 0 d 10024e45 Radeon R300 NE [Radeon 9700] 0 d 10024e46 Radeon R300 NF [Radeon 9700] 0 -d 10024e47 Radeon R300 NG [Radeon 9700] 0 -d 10024e64 Radeon R300 [Radeon 9700] (Secondary) 0 +d 10024e47 Radeon R300 NG [FireGL X1] 0 +d 10024e48 Radeon R350 NH [Radeon 9800] 0 +d 10024e49 Radeon R350 NI [Radeon 9800] 0 +d 10024e4A Radeon R350 NJ [Radeon 9800] 0 +d 10024e4B Radeon R350 NK [Radeon 9800] 0 +d 10024e50 Radeon RV350 NP [Mobility M10] 0 +d 10024e64 Radeon R300 [Radeon 9700] (Secondary) 1 d 10025041 Rage 128 PA/PRO 0 d 10025042 Rage 128 PB/PRO AGP 2x 0 d 10025043 Rage 128 PC/PRO AGP 4x 0 @@ -328,27 +344,29 @@ d 10025145 Radeon R100 QE 0 d 10025146 Radeon R100 QF 0 d 10025147 Radeon R100 QG 0 d 10025148 Radeon R200 QH [Radeon 8500] 0 -s 100251481002010a FireGL 8800 64Mb 0 -s 1002514810020152 FireGL 8800 128Mb 0 -s 1002514810020162 FireGL 8700 32Mb 0 -s 1002514810020172 FireGL 8700 64Mb 0 +s 1002514810020152 FireGL 8800 0 +s 1002514810020172 FireGL 8700 0 d 10025149 Radeon R200 QI 0 d 1002514a Radeon R200 QJ 0 d 1002514b Radeon R200 QK 0 d 1002514c Radeon R200 QL [Radeon 8500 LE] 0 +d 1002514d Radeon R200 QM 0 +d 1002514e Radeon R200 QN 0 +d 1002514f Radeon R200 QO 0 s 1002514c1002003a Radeon R200 QL [Radeon 8500 LE] 0 s 1002514c1002013a Radeon 8500 0 -s 1002514c148c2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] 0 +s 1002514c148c2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] 1 +s 1002514c148c2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] 1 Oops, missed comment above http://mirror.ati.com/support/identify/graphicschart.html s 1002514c174b7149 Radeon R200 QL [Sapphire Radeon 8500 LE] 0 d 10025157 Radeon RV200 QW [Radeon 7500] 0 s 100251571002013a Radeon 7500 0 -s 1002515714584000 RV200 QW [RADEON 7500 PRO MAYA AR] 0 -s 10025157148c2024 RV200 QW [Radeon 7500LE Dual Display] 0 -s 10025157148c2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] 0 -s 10025157148c2036 RV200 QW [Radeon 7500 PCI Dual Display] 0 -s 10025157174b7147 RV200 QW [Sapphire Radeon 7500LE] 0 +s 1002515714584000 RV200 QW [RADEON 7500 PRO MAYA AR] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10025157148c2024 RV200 QW [Radeon 7500LE Dual Display] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10025157148c2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10025157148c2036 RV200 QW [Radeon 7500 PCI Dual Display] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html +s 10025157174b7147 RV200 QW [Sapphire Radeon 7500LE] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html s 10025157174b7161 Radeon RV200 QW [Radeon 7500 LE] 0 -s 1002515717af0202 RV200 QW [Excalibur Radeon 7500LE] 0 +s 1002515717af0202 RV200 QW [Excalibur Radeon 7500LE] 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html d 10025158 Radeon RV200 QX [Radeon 7500] 0 d 10025159 Radeon VE QY 0 s 100251591002000a Radeon 7000/Radeon VE 0 @@ -357,16 +375,18 @@ s 1002515910020038 Radeon 7000/Radeon VE 0 s 100251591002003a Radeon 7000/Radeon VE 0 s 10025159100200ba Radeon 7000/Radeon VE 0 s 100251591002013a Radeon 7000/Radeon VE 0 -s 1002515914584002 RV100 QY [RADEON 7000 PRO MAYA AV Series] 0 -s 10025159148c2003 RV100 QY [Radeon 7000 Multi-Display Edition] 0 -s 10025159148c2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] 0 -s 10025159174b7112 RV100 QY [Sapphire Radeon VE 7000] 0 -s 1002515917870202 RV100 QY [Excalibur Radeon 7000] 0 +s 1002515914584002 RV100 QY [RADEON 7000 PRO MAYA AV Series] 1 ATI clone board - http://mirror.ati.com/support/identify/graphicschart.html +s 10025159148c2003 RV100 QY [Radeon 7000 Multi-Display Edition] 1 ATI clone board - http://mirror.ati.com/support/identify/graphicschart.html +s 10025159148c2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] 1 ATI clone board - http://mirror.ati.com/support/identify/graphicschart.html +s 10025159174b7112 Radeon 7000 64M TVO 0 +s 10025159174b7112 RV100 QY [Sapphire Radeon VE 7000] 1 ATI clone board - http://mirror.ati.com/support/identify/graphicschart.html +s 1002515917870202 RV100 QY [Excalibur Radeon 7000] 1 ATI clone board - http://mirror.ati.com/support/identify/graphicschart.html d 1002515a Radeon VE QZ 0 d 10025168 Radeon R200 Qh 0 d 10025169 Radeon R200 Qi 0 d 1002516a Radeon R200 Qj 0 d 1002516b Radeon R200 Qk 0 +d 1002516c Radeon R200 Ql 0 d 10025245 Rage 128 RE/SG 0 s 1002524510020008 Xpert 128 0 s 1002524510020028 Rage 128 AIW 0 @@ -416,6 +436,18 @@ d 10025654 264VT [Mach64 VT] 0 s 1002565410025654 Mach64VT Reference 0 d 10025655 264VT3 [Mach64 VT3] 0 d 10025656 264VT4 [Mach64 VT4] 0 +d 10025834 Radeon RS300 [9000 IGP A5] 0 +d 10025835 Radeon RS300 [Mobility 9000 IGP U3] 0 +d 10025836 Radeon RS300 5836 [9000] 0 +d 10025837 Radeon RS300 5837 [9000] 0 +d 10025960 Radeon RV280 [9200 5960] 0 +d 10025961 Radeon RV280 [9200 5961] 0 +d 10025962 Radeon RV280 [9200 5962] 0 +d 10025963 Radeon RV280 [9200 5963] 0 +d 10025968 Radeon RV280 [M9+ 5968] 0 +d 10025969 Radeon RV280 [M9+ 5969] 0 +d 1002596A Radeon RV280 [M9+ 596A] 0 +d 1002596B Radeon RV280 [M9+ 596B] 0 d 1002700f U1/A3 AGP Bridge [IGP 320M] 0 v 1003 ULSI Systems 0 d 10030201 US201 0 @@ -446,10 +478,10 @@ d 10040306 QSound ThunderBird PCI Audio Support Registers 0 s 1004030610040306 QSound ThunderBird PCI Audio Support Registers 0 s 10040306122d1208 DSP368 Audio Support Registers 0 s 1004030614835022 XWave Thunder 3D Audio Support Registers 0 -d 10040307 Thunderbird 0 -d 10040308 Thunderbird 0 +d 10040307 Thunderbird 1 http://pcsound.philips.com/_acoustic706.html +d 10040308 Thunderbird 1 http://pcsound.philips.com/_acoustic706.html d 10040702 VAS96011 [Golden Gate II] 0 -d 10040703 Tollgate 0 +d 10040703 Tollgate 1 PCI/ISA bridge v 1005 Avance Logic Inc. [ALI] 0 d 10052064 ALG2032/2064 0 d 10052128 ALG2364A 0 @@ -527,8 +559,8 @@ s 101100191011500a DE500A Fast Ethernet 0 s 101100191011500b DE500B Fast Ethernet 0 s 1011001910140001 10/100 EtherJet Cardbus 0 s 1011001910250315 ALN315 Fast Ethernet 0 -s 101100191033800c PC-9821-CS01 100BASE-TX Interface Card 0 -s 101100191033800d PC-9821NR-B06 100BASE-TX Interface Card 0 +s 101100191033800c PC-9821-CS01 0 +s 101100191033800d PC-9821NR-B06 0 s 10110019108d0016 Rapidfire 2327 10/100 Ethernet 0 s 10110019108d0017 GoCard 2250 Ethernet 10/100 Cardbus 0 s 1011001910b82005 SMC8032DT Extreme Ethernet 10/100 0 @@ -552,7 +584,6 @@ s 1011001913740001 Cardbus Ethernet Card 10/100 0 s 1011001913740002 Cardbus Ethernet Card 10/100 0 s 1011001913740007 Cardbus Ethernet Card 10/100 0 s 1011001913740008 Cardbus Ethernet Card 10/100 0 -s 1011001913852100 Digital DS21143 Tulip [NETGEAR FA510] 1 Info based on 'tulip-diag -eee -m -a' by Donald Becker (scyld.com) s 1011001913950001 10/100 Ethernet CardBus PC Card 0 s 1011001913d1ab01 EtherFast 10/100 Cardbus (PCMPC200) 0 s 1011001980860001 EtherExpress PRO/100 Mobile CardBus 32 0 @@ -612,8 +643,7 @@ d 10136001 CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] 0 s 1013600110141010 CS4610 SoundFusion Audio Accelerator 0 d 10136003 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] 0 s 1013600310134280 Crystal SoundFusion PCI Audio Accelerator 0 -s 1013600316810050 Game Theater XP 0 -s 101360031681a011 Fortissimo III 7.1 0 +s 1013600316810050 Hercules Game Theater XP 0 d 10136004 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] 0 d 10136005 Crystal CS4281 PCI Audio 0 s 1013600510134281 Crystal CS4281 PCI Audio 0 @@ -675,11 +705,13 @@ s 1014009610140099 iSeries 2748 DASD IOA 0 d 101400a5 ATM Controller (1410a500) 0 d 101400a6 ATM 155MBPS MM Controller (1410a600) 0 d 101400b7 256-bit Graphics Rasterizer [Fire GL1] 0 +s 101400b7190200b8 Fire GL1 0 d 101400be ATM 622MBPS Controller (1410be00) 0 -d 101400dc Advanced Systems Management Adapter (ASMA) 0 +d 101400dc Remote Supervisor Adapter (RSA) 1 IBM's remote management adapter +d 101400dc Advanced Systems Management Adapter (ASMA) 1 sorry, the previous entry I posted was a mistake, this ID is the ASMA not the RSA. d 101400fc CPC710 Dual Bridge and Memory Controller (PCI-64) 0 d 10140105 CPC710 Dual Bridge and Memory Controller (PCI-32) 0 -d 1014010f Remote Supervisor Adapter (RSA) 0 +d 1014010f Remote Supervisor Adapter (RSA) 1 this is actually the RSA d 10140142 Yotta Video Compositor Input 0 s 1014014210140143 Yotta Input Controller (ytin) 0 d 10140144 Yotta Video Compositor Output 0 @@ -694,7 +726,7 @@ s 101401bd1014020e ServeRAID-4Lx 0 s 101401bd1014022e ServeRAID-4H 0 s 101401bd10140258 ServeRAID-5i 0 s 101401bd10140259 ServeRAID-5i 0 -d 10140302 XA-32 chipset [Summit] 0 +d 10140302 XA-32 chipset [Summit] 1 the IBM Summit X-Architecuture chipset d 1014ffff MPIC-2 interrupt controller 0 v 1015 LSI Logic Corp of Canada 0 v 1016 ICL Personal Systems 0 @@ -815,8 +847,8 @@ d 10238500 CyberBlade/i1 0 d 10238520 CyberBlade i1 0 s 102385200e11b16e CyberBlade i1 AGP 0 s 1023852010238520 CyberBlade i1 AGP 0 -d 10238620 CyberBlade/i1 0 -s 1023862010140502 ThinkPad T30 0 +d 10238620 CyberBlade/i1 1 +s 1023862010140502 ThinkPad T30 1 d 10238820 CyberBlade XPAi1 0 d 10239320 TGUI 9320 0 d 10239350 GUI Accelerator 0 @@ -928,9 +960,9 @@ d 10280006 PowerEdge Expandable RAID Controller 3/Di 0 d 10280007 Remote Assistant Card 3 0 d 10280008 PowerEdge Expandable RAID Controller 3/Di 0 d 1028000a PowerEdge Expandable RAID Controller 3 0 +s 1028000a10270121 PowerEdge Expandable RAID Controller 3/Di 0 s 1028000a10280106 PowerEdge Expandable RAID Controller 3/Di 0 s 1028000a1028011b PowerEdge Expandable RAID Controller 3/Di 0 -s 1028000a10280121 PowerEdge Expandable RAID Controller 3/Di 0 d 1028000c Embedded Systems Management Device 4 0 d 1028000e PowerEdge Expandable RAID Controller 0 d 1028000f PowerEdge Expandable RAID Controller 4/Di 0 @@ -943,7 +975,6 @@ d 102b0010 MGA-I [Impression?] 0 DJ: I've a suspicion that 0010 is a duplicate o d 102b0518 MGA-II [Athena] 0 d 102b0519 MGA 2064W [Millennium] 0 d 102b051a MGA 1064SG [Mystique] 0 -s 102b051a102b0100 Mystique 1 s 102b051a102b1100 MGA-1084SG Mystique 0 s 102b051a102b1200 MGA-1084SG Mystique 0 s 102b051a1100102b MGA-1084SG Mystique 0 @@ -1038,10 +1069,11 @@ s 102b0525102b5f51 4Sight II 0 s 102b0525102b5f52 4Sight II 0 s 102b0525102b9010 Millennium G400 Dual Head 0 s 102b052514580400 GA-G400 0 -s 102b052517050001 Millennium G450 32MB SGRAM 0 -s 102b052517050002 Millennium G450 16MB SGRAM 0 -s 102b052517050003 Millennium G450 32MB 0 -s 102b052517050004 Millennium G450 16MB 0 +s 102b052517050001 Digital First Millennium G450 32MB SGRAM 0 +s 102b052517050002 Digital First Millennium G450 16MB SGRAM 0 +s 102b052517050003 Digital First Millennium G450 32MB 0 +s 102b052517050004 Digital First Millennium G450 16MB 0 +s 102b0525b16f0e11 MGA-G400 AGP 0 d 102b0527 MGA Parhelia AGP 0 s 102b0527102b0840 Parhelia 128Mb 0 d 102b0d10 MGA Ultima/Impression 0 @@ -1098,22 +1130,18 @@ d 10330002 PCI to VL98 Bridge 0 d 10330003 ATM Controller 0 d 10330004 R4000 PCI Bridge 0 d 10330005 PCI to 486-like bus Bridge 0 -d 10330006 PC-9800 Graphic Accelerator 0 +d 10330006 GUI Accelerator 0 d 10330007 PCI to UX-Bus Bridge 0 -d 10330008 PC-9800 Graphic Accelerator 0 -d 10330009 PCI to PC9800 Core-Graph Bridge 0 -d 10330016 PCI to VL Bridge 0 +d 10330008 GUI Accelerator 0 +d 10330009 GUI Accelerator for W98 0 d 1033001a [Nile II] 0 d 10330021 Vrc4373 [Nile I] 0 d 10330029 PowerVR PCX1 0 d 1033002a PowerVR 3D 0 -d 1033002c Star Alpha 2 0 -d 1033002d PCI to C-bus Bridge 0 d 10330035 USB 0 s 1033003511790001 USB 0 s 1033003512ee7000 Root Hub 0 s 1033003517990001 Root Hub 0 -d 1033003b PCI to C-bus Bridge 0 d 1033003e NAPCCARD Cardbus Controller 0 d 10330046 PowerVR PCX2 [midas] 0 d 1033005a Vrc5074 [Nile 4] 0 @@ -1184,7 +1212,6 @@ d 10395300 SiS540 PCI Display Adapter 0 d 10395401 486 PCI Chipset 0 d 10395511 5511/5512 0 d 10395513 5513 [IDE] 0 -s 1039551310190970 P6STP-FL motherboard 0 s 1039551310395513 SiS5513 EIDE Controller (A,B step) 0 d 10395517 5517 0 d 10395571 5571 0 @@ -1198,10 +1225,8 @@ d 10396204 Video decoder & MPEG interface 0 d 10396205 VGA Controller 0 d 10396236 6236 3D-AGP 0 d 10396300 SiS630 GUI Accelerator+3D 0 -s 1039630010190970 P6STP-FL motherboard 0 d 10396306 SiS530 3D PCI/AGP 0 s 1039630610396306 SiS530,620 GUI Accelerator+3D 0 -d 10396325 SiS740 IGUI Accelerator 1 d 10396326 86C326 5598/6326 0 s 1039632610396326 SiS6326 GUI Accelerator 0 s 1039632610920a50 SpeedStar A50 0 @@ -1211,11 +1236,9 @@ s 1039632610924920 SpeedStar A70 0 s 1039632615696326 SiS6326 GUI Accelerator 0 d 10397001 7001 0 s 1039700110397000 Onboard USB Controller 0 -d 10397002 SiS7002 USB 2.0 0 -s 1039700215097002 Onboard USB Controller 0 d 10397007 FireWire Controller 0 d 10397012 SiS7012 PCI Audio Accelerator 0 -d 10397013 Intel 537 [56k Winmodem] 0 +d 10397013 56k Winmodem (Smart Link HAMR5600 compatible) 0 d 10397016 SiS7016 10/100 Ethernet Adapter 0 s 1039701610397016 SiS7016 10/100 Ethernet Adapter 0 d 10397018 SiS PCI Audio Accelerator 0 @@ -1300,7 +1323,6 @@ d 10423010 Samurai_1 0 d 10423020 Samurai_IDE 0 v 1043 Asustek Computer, Inc. 0 d 10430675 ISDNLink P-IN100-ST-D 0 -d 10434021 Asus v7100 Combo Deluxe 1 NVidia GeForce2 MX + TV tuner v 1044 Distributed Processing Technology 0 d 10441012 Domino RAID Engine 0 d 1044a400 SmartCache/Raid I-IV Controller 0 @@ -1375,7 +1397,7 @@ v 1049 Fountain Technologies, Inc. 0 v 104a SGS Thomson Microelectronics 0 d 104a0008 STG 2000X 0 d 104a0009 STG 1764X 0 -d 104a0010 STG4000 [3D Prophet Kyro Series] 0 +d 104a0010 STG4000 [3D Prophet Kyro Series] 1 d 104a0981 DEC-Tulip compatible 10/100 Ethernet 0 d 104a1746 STG 1764X 0 d 104a2774 DEC-Tulip compatible 10/100 Ethernet 0 @@ -1447,7 +1469,6 @@ d 104cac18 PCI1260 0 d 104cac19 PCI1221 0 d 104cac1a PCI1210 0 d 104cac1b PCI1450 0 -s 104cac1b0e11b113 Armada M700 1 d 104cac1c PCI1225 0 d 104cac1d PCI1251A 0 d 104cac1e PCI1211 0 @@ -1470,7 +1491,8 @@ s 104cac51e4bf1000 CP2-2-HIPHOP 0 d 104cac52 PCI1451 PC card Cardbus Controller 0 d 104cac53 PCI1421 PC card Cardbus Controller 0 d 104cac55 PCI1250 PC card Cardbus Controller 0 -s 104cac5510140512 ThinkPad T30 0 +s 104cac5510140512 ThinkPad T30 1 +s 104cac55104cac55 PCI-1520 CardBus Controller 1 Windoze XP on my ThinkPad T30 claims that it is 1520, not 1250. d 104cac60 PCI2040 PCI to DSP Bridge Controller 0 d 104cfe00 FireWire Host Controller 0 d 104cfe03 12C01A FireWire Host Controller 0 @@ -1496,7 +1518,7 @@ s 1050084010500001 W89C840 Ethernet Adapter 0 s 1050084010500840 W89C840 Ethernet Adapter 0 d 10500940 W89C940 0 d 10505a5a W89C940F 0 -d 10506692 W6692 0 +d 10506692 W6692 1 ISDN Card d 10509970 W9970CF 0 v 1051 Anigma, Inc. 0 v 1052 ?Young Micro Systems 0 @@ -1551,7 +1573,6 @@ s 105a0d30105a4d33 Ultra100 0 d 105a0d38 20263 0 s 105a0d38105a4d39 Fasttrak66 0 d 105a1275 20275 0 -d 105a3376 PDC20376 0 d 105a4d30 20267 0 s 105a4d30105a4d33 Ultra100 0 s 105a4d30105a4d39 Fasttrak100 0 @@ -1565,12 +1586,13 @@ d 105a4d68 20268 0 s 105a4d68105a4d68 Ultra100TX2 0 d 105a4d69 20269 0 d 105a5275 PDC20276 IDE 0 +d 105a5275 PDC20276 (MBFastTrack 133) 1 I can't obtain the sub device ID's. The correction is for the "secondary" name (the one between parentheses). Have great day ! s 105a5275105a0275 SuperTrak SX6000 IDE 0 d 105a5300 DC5300 0 d 105a6268 20268R 0 d 105a6269 PDC20271 0 -s 105a6269105a6269 FastTrak TX2/TX2000 0 -d 105a6621 PDC20621 [SX4000] 4 Channel IDE RAID Controller 0 +s 105a6269105a6269 Fasttrack tx2 0 +s 105a6269105a6269 FastTrak TX2/TX2000 1 Old entry has spelling mistake; besides, another product (TX2000) uses same chips, hence the same ID d 105a7275 PDC20277 0 v 105b Foxconn International, Inc. 0 v 105c Wipro Infotech Limited 0 @@ -1910,7 +1932,6 @@ d 10950670 USB0670 0 s 1095067010950670 USB0670 0 d 10950673 USB0673 0 d 10950680 PCI0680 0 -d 10953112 Silicon Image SiI 3112 SATARaid Controller 1 v 1096 Alacron 0 v 1097 Appian Technology 0 v 1098 Quantum Designs (H.K.) Ltd 0 @@ -1931,7 +1952,6 @@ d 109e036c Bt879(??) Video Capture 0 s 109e036c13e90070 Win/TV (Video Section) 0 d 109e036e Bt878 Video Capture 0 s 109e036e007013eb WinTV/GO 0 -s 109e036e007013eb WinTV Series 1 s 109e036e0070ff01 Viewcast Osprey 200 0 s 109e036e11bd001c PCTV Sat (DBC receiver) 0 s 109e036e127a0001 Bt878 Mediastream Controller NTSC 0 @@ -1947,7 +1967,7 @@ s 109e036e14f10048 Bt878/832 Mediastream Controller 0 s 109e036e18511850 FlyVideo'98 - Video 0 s 109e036e18511851 FlyVideo II 0 s 109e036e18521852 FlyVideo'98 - Video (with FM Tuner) 0 -s 109e036ebd111200 PCTV pro (TV + FM stereo receiver) 0 +s 109e036ebd111200 PCTV pro (TV + FM stereo receiver) 1 d 109e036f Bt879 Video Capture 0 s 109e036f127a0044 Bt879 Video Capture NTSC 0 s 109e036f127a0122 Bt879 Video Capture PAL I 0 @@ -1984,7 +2004,6 @@ s 109e037018511851 FlyVideo'98 EZ - video 0 s 109e037018521852 FlyVideo'98 (with FM Tuner) 0 d 109e0878 Bt878 Audio Capture 0 s 109e0878007013eb WinTV/GO 0 -s 109e0878007013eb WinTV Series 1 s 109e08780070ff01 Viewcast Osprey 200 0 s 109e087810020001 TV-Wonder 0 s 109e087810020003 TV-Wonder/VE 0 @@ -2000,7 +2019,8 @@ s 109e087814f10001 Bt878 Video Capture (Audio Section) 0 s 109e087814f10002 Bt878 Video Capture (Audio Section) 0 s 109e087814f10003 Bt878 Video Capture (Audio Section) 0 s 109e087814f10048 Bt878 Video Capture (Audio Section) 0 -s 109e0878bd111200 PCTV pro (TV + FM stereo receiver, audio section) 0 +s 109e0878bd111200 PCTV pro (TV + FM stereo receiver) 1 +s 109e0878bd111200 PCTV pro (TV + FM stereo receiver, audio section) 1 d 109e0879 Bt879 Audio Capture 0 s 109e0879127a0044 Bt879 Video Capture (Audio Section) 0 s 109e0879127a0122 Bt879 Video Capture (Audio Section) 0 @@ -2042,8 +2062,7 @@ v 10a1 Juko Electronics Ind. Co. Ltd 0 v 10a2 Quantum Corporation 0 v 10a3 Everex Systems Inc 0 v 10a4 Globe Manufacturing Sales 0 -v 10a5 Smart Link Ltd. 0 -d 10a55449 SmartPCI561 modem 0 +v 10a5 Racal Interlan 0 v 10a6 Informtech Industrial Ltd. 0 v 10a7 Benchmarq Microelectronics 0 v 10a8 Sierra Semiconductor 0 @@ -2104,14 +2123,13 @@ d 10b51103 VScom 200 2 port serial adaptor 0 d 10b51146 VScom 010 1 port parallel adaptor 0 d 10b51147 VScom 020 2 port parallel adaptor 0 d 10b52724 Thales PCSM Security Card 0 +d 10b58845 RCIM Realtime Clock and Interrupts Module 1 d 10b59030 PCI <-> IOBus Bridge Hot Swap 0 s 10b5903015ed1002 MCCS 8-port Serial Hot Swap 0 s 10b5903015ed1003 MCCS 16-port Serial Hot Swap 0 d 10b59036 9036 0 d 10b59050 PCI <-> IOBus Bridge 0 -s 10b5905010b52036 SatPak GPS 0 s 10b5905010b52273 SH-ARC SoHard ARCnet card 0 -s 10b5905010b59050 MP9050 0 s 10b5905015220001 RockForce 4 Port V.90 Data/Fax/Voice Modem 0 s 10b5905015220002 RockForce 2 Port V.90 Data/Fax/Voice Modem 0 s 10b5905015220003 RockForce 6 Port V.90 Data/Fax/Voice Modem 0 @@ -2254,15 +2272,13 @@ d 10b79200 3c905C-TX/TX-M [Tornado] 0 s 10b7920010280095 Integrated 3C905C-TX Fast Etherlink for PC Management NIC 0 s 10b7920010b71000 3C905C-TX Fast Etherlink for PC Management NIC 0 s 10b7920010b77000 10/100 Mini PCI Ethernet Adapter 0 -d 10b79201 3C920B-EMB Integrated Fast Ethernet Controller 1 -d 10b79300 3CSOHO100B-TX [910-A01] 0 +d 10b79300 3CSOHO100B-TX [910-A01] 1 Designed for Windows-based networks. Is there driver for linux? d 10b79800 3c980-TX [Fast Etherlink XL Server Adapter] 0 s 10b7980010b79800 3c980-TX Fast Etherlink XL Server Adapter 0 d 10b79805 3c980-TX 10/100baseTX NIC [Python-T] 0 s 10b7980510b71201 3c982-TXM 10/100baseTX Dual Port A [Hydra] 0 s 10b7980510b71202 3c982-TXM 10/100baseTX Dual Port B [Hydra] 0 s 10b7980510b79805 3c980 10/100baseTX NIC [Python-T] 0 -s 10b7980510f12462 Thunder K7 S2462 1 d 10b79900 3C990-TX [Typhoon] 0 d 10b79902 3CR990-TX-95 [Typhoon 56-bit] 0 d 10b79903 3CR990-TX-97 [Typhoon 168-bit] 0 @@ -2298,7 +2314,8 @@ d 10b81000 FDC 37c665 0 d 10b81001 FDC 37C922 0 d 10b8a011 83C170QF 0 d 10b8b106 SMC34C90 0 -v 10b9 ALi Corporation 0 +v 10b9 Acer Laboratories Inc. [ALi] 0 +v 10b9 ALi Corporation. [ALi] 1 d 10b90111 C-Media CMI8738/C3DX Audio Device (OEM) 0 s 10b9011110b90111 C-Media CMI8738/C3DX Audio Device (OEM) 0 d 10b91435 M1435 0 @@ -2320,7 +2337,7 @@ s 10b9153310b91533 ALI M1533 Aladdin IV ISA Bridge 0 d 10b91541 M1541 0 s 10b9154110b91541 ALI M1541 Aladdin V/V+ AGP System Controller 0 d 10b91543 M1543 0 -d 10b91563 M1563 HyperTransport South Bridge 0 +d 10b91563 M1563 South Bridge supporting HyperTransport(TM) Technology 1 d 10b91621 M1621 0 d 10b91631 ALI M1631 PCI North Bridge Aladdin Pro III 0 d 10b91632 M1632M Northbridge+Trident 0 @@ -2329,9 +2346,10 @@ d 10b91644 M1644/M1644T Northbridge+Trident 0 d 10b91646 M1646 Northbridge+Trident 0 d 10b91647 M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] 0 d 10b91651 M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] 0 -d 10b91671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] 0 -d 10b91681 M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] 0 -d 10b91687 M1687 K8 Northbridge [AGP8X and HyperTransport] 0 +d 10b91671 M1671 Northbridge [Aladdin-P4] 0 +d 10b91671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] 1 +d 10b91681 M1681 P4 Northbridge [AGP8X,HyperTransport(TM) and SDR/DDR] 1 +d 10b91687 M1687 K8 Northbridge [AGP8X and HyperTransport(TM)] 1 d 10b93141 M3141 0 d 10b93143 M3143 0 d 10b93145 M3145 0 @@ -2352,15 +2370,15 @@ d 10b95237 USB 1.1 Controller 0 d 10b95239 USB 2.0 Controller 0 d 10b95243 M1541 PCI to AGP Controller 0 d 10b95247 PCI to AGP Controller 0 -d 10b95249 M5249 HTT to PCI Bridge 0 +d 10b95249 HTT to PCI Bridge 1 d 10b95251 M5251 P1394 OHCI 1.0 Controller 0 d 10b95253 M5253 P1394 OHCI 1.1 Controller 0 d 10b95261 M5261 Ethernet Controller 0 d 10b95451 M5451 PCI AC-Link Controller Audio Device 0 -s 10b9545110140506 ThinkPad R30 0 +s 10b9545110140506 ThinkPad R30 1 d 10b95453 M5453 PCI AC-Link Controller Modem Device 0 d 10b95455 M5455 PCI AC-Link Controller Audio Device 0 -d 10b95457 Intel 537 [M5457 AC-Link Modem] 0 +d 10b95457 M5457 AC-Link Modem Interface Controller 0 d 10b95459 SmartPCI561 56K Modem 0 d 10b95471 M5471 Memory Stick Controller 0 d 10b95473 M5473 SD-MMC Controller 0 @@ -2384,7 +2402,8 @@ v 10c5 Xerox Corporation 0 v 10c6 Rambus Inc. 0 v 10c7 Media Vision 0 v 10c8 Neomagic Corporation 0 -d 10c80001 NM2070 [MagicGraph 128] 0 +d 10c80001 NM2070 [MagicGraph NM2070] 0 +d 10c80001 NM2070 [MagicGraph 128] 1 Update - cleaning up the neomagic entries using XFree86 sources d 10c80002 NM2090 [MagicGraph 128V] 0 d 10c80003 NM2093 [MagicGraph 128ZV] 0 d 10c80004 NM2160 [MagicGraph 128XD] 0 @@ -2406,14 +2425,18 @@ s 10c8000410f78309 MagicGraph 128XD 0 s 10c8000410f7830b MagicGraph 128XD 0 s 10c8000410f7830d MagicGraph 128XD 0 s 10c8000410f78312 MagicGraph 128XD 0 -d 10c80005 NM2200 [MagicGraph 256AV] 0 -s 10c80005101400dd ThinkPad 570 0 +d 10c80005 [MagicMedia 256AV] 0 +d 10c80005 NM2200 [MagicGraph 256AV] 1 Update - cleaning up the neomagic entries using XFree86 sources +s 10c80005101400dd ThinkPad 570 1 d 10c80006 NM2360 [MagicMedia 256ZX] 0 d 10c80016 NM2380 [MagicMedia 256XL+] 0 s 10c8001610c80016 MagicMedia 256XL+ 0 -d 10c80025 NM2230 [MagicGraph 256AV+] 0 -d 10c80083 NM2093 [MagicGraph 128ZV+] 0 -d 10c88005 NM2200 [MagicMedia 256AV Audio] 0 +d 10c80025 [MagicMedia 256AV+] 0 +d 10c80025 NM2230 [MagicGraph 256AV+] 1 Update - cleaning up the neomagic entries using XFree86 sources +d 10c80083 [MagicGraph 128ZV Plus] 0 +d 10c80083 NM2093 [MagicGraph 128ZV+] 1 Update - cleaning up the neomagic entries using XFree86 sources +d 10c88005 [MagicMedia 256AV Audio] 0 +d 10c88005 NM2200 [MagicMedia 256AV Audio] 1 Update - cleaning up the neomagic entries using XFree86 sources s 10c880050e11b0d1 MagicMedia 256AV Audio Device on Discovery 0 s 10c880050e11b126 MagicMedia 256AV Audio Device on Durango 0 s 10c88005101400dd MagicMedia 256AV Audio Device on BlackTip Thinkpad 0 @@ -2426,7 +2449,8 @@ s 10c8800510c88005 MagicMedia 256AV Audio Device on FireAnt 0 s 10c88005110a8005 MagicMedia 256AV Audio Device 0 s 10c8800514c00004 MagicMedia 256AV Audio Device 0 d 10c88006 NM2360 [MagicMedia 256ZX Audio] 0 -d 10c88016 NM2380 [MagicMedia 256XL+ Audio] 0 +d 10c88016 NM2360 [MagicMedia 256ZX Audio] 0 +d 10c88016 NM2380 [MagicMedia 256XL+ Audio] 1 Update - cleaning up the neomagic entries extrapolating from XFree86 sources v 10c9 Dataexpert Corporation 0 v 10ca Fujitsu Microelectr., Inc. 0 v 10cb Omron Corporation 0 @@ -2529,8 +2553,6 @@ s 10de002c14af5008 Maxi Gamer Phoenix 2 0 d 10de002d RIVA TNT2 Model 64 0 s 10de002d10430200 AGP-V3800M 0 s 10de002d10430201 AGP-V3800M 0 -s 10de002d10480c3a Erazor III LT 0 -s 10de002d10de001e M64 AGP4x 1 s 10de002d11021023 CT6892 RIVA TNT2 Value 0 s 10de002d11021024 CT6932 RIVA TNT2 Value 32Mb 0 s 10de002d1102102c CT6931 RIVA TNT2 Value [Jumper] 0 @@ -2538,16 +2560,6 @@ s 10de002d14628808 MSI-8808 0 s 10de002d15541041 PixelView RIVA TNT2 M64 32MB 0 d 10de002e NV6 [Vanta] 0 d 10de002f NV6 [Vanta] 0 -d 10de0060 nForce2 ISA Bridge 1 -d 10de0065 nForce2 IDE 1 -d 10de0066 nForce2 Ethernet Controller 1 -d 10de0067 nForce2 USB Controller [OHCI] 1 -d 10de0067 nForce2 USB Controller 1 -d 10de0068 nForce2 USB Controller 1 -d 10de0068 nForce2 USB Controller [ECHI] 1 -d 10de006a nForce MultiMedia audio [Via VT82C686B] 0 -d 10de006b nForce MultiMedia audio [Via VT82C686B] 0 -d 10de006e nForce2 FireWire (IEEE 1394) Controller [OHCI] 1 d 10de00a0 NV5 [Riva TNT2] 0 s 10de00a014af5810 Maxi Gamer Xentor 0 d 10de0100 NV10 [GeForce 256 SDR] 0 @@ -2567,7 +2579,6 @@ d 10de0103 NV10 [Quadro] 0 d 10de0110 NV11 [GeForce2 MX] 0 s 10de011010434015 AGP-V7100 Pro 0 s 10de011010434031 V7100 Pro with TV output 0 -s 10de011014628817 MSI GeForce2 MX400 Pro32S [MS-8817] 1 http://www.msi.com.tw/program/products/vga/vga/pro_vga_detail.php?UID=173&MODEL=MS-8817 s 10de011014af7102 3D Prophet II MX 0 s 10de011014af7103 3D Prophet II MX Dual-Display 0 d 10de0111 NV11 [GeForce2 MX DDR] 0 @@ -2585,7 +2596,6 @@ d 10de0153 NV15 [Quadro2 Pro] 0 d 10de0170 NV17 [GeForce4 MX460] 0 d 10de0171 NV17 [GeForce4 MX440] 0 s 10de017114628661 G4MX440-VTP 0 -s 10de017114628730 MX440SES-T (MS-8873) 1 d 10de0172 NV17 [GeForce4 MX420] 0 d 10de0173 NV1x 0 d 10de0174 NV17 [GeForce4 440 Go] 0 @@ -2596,7 +2606,7 @@ d 10de0179 NV17 [GeForce4 440 Go 64M] 0 d 10de017a Quadro4 200/400NVS 0 d 10de017b Quadro4 550XGL 0 d 10de017c Quadro4 550 GoGL 0 -d 10de0181 NV18 [GeForce4 MX440 AGP 8x] 0 +d 10de0181 NV18 [GeForce4 MX440 AGP 8x] 1 d 10de01a0 NV15 [GeForce2 - nForce GPU] 0 d 10de01a4 nForce CPU bridge 0 d 10de01ab nForce 420 Memory Controller (DDR) 0 @@ -2608,10 +2618,7 @@ d 10de01b4 nForce PCI System Management 0 d 10de01b7 nForce AGP to PCI Bridge 0 d 10de01b8 nForce PCI-to-PCI bridge 0 d 10de01bc nForce IDE 0 -d 10de01c1 Intel 537 [nForce MC97 Modem] 0 -d 10de01c2 nForce USB Controller 0 -d 10de01c3 nForce Ethernet Controller 0 -d 10de01e8 nForce2 AGP AGP Host to PCI Bridge 1 +d 10de01c1 nForce MC97 Modem (Smart Link HAMR5600 compatible) 0 d 10de0200 NV20 [GeForce3] 0 s 10de02001043402f AGP-V8200 DDR 0 d 10de0201 NV20 [GeForce3 Ti200] 0 @@ -2622,8 +2629,8 @@ d 10de0203 NV20 [Quadro DCC] 0 d 10de0250 NV25 [GeForce4 Ti4600] 0 d 10de0251 NV25 [GeForce4 Ti4400] 0 d 10de0253 NV25 [GeForce4 Ti4200] 0 -s 10de0253107d2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) 0 -s 10de0253147b8f09 Siluro (Dual VGA/TV-out/DVI) 0 +s 10de0253107d2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) 1 +s 10de0253147b8f09 Abit Siluro (Dual VGA/TV-out/DVI) 1 d 10de0258 Quadro4 900XGL 0 d 10de0259 Quadro4 750XGL 0 d 10de025b Quadro4 700XGL 0 @@ -2652,7 +2659,6 @@ v 10e2 Aptix Corporation 0 v 10e3 Tundra Semiconductor Corp. 0 d 10e30000 CA91C042 [Universe] 0 d 10e30860 CA91C860 [QSpan] 0 -d 10e30862 CA91C862A [QSpan-II] 1 updated PCI 2.2 version of the QSpan v 10e4 Tandem Computers 0 v 10e5 Micro Industries Corporation 0 v 10e6 Gainbery Computer Products Inc. 0 @@ -2704,7 +2710,6 @@ s 10ec813910ec8139 RT8139 0 s 10ec813911861300 DFE-538TX 0 s 10ec813911861320 SN5200 0 s 10ec813911868139 DRN-32TX 0 -s 10ec813911f68139 FN22-3(A) LinxPRO Ethernet Adapter 0 s 10ec813912592500 AT-2500TX 0 s 10ec813912592503 AT-2500TX/ACPI 0 s 10ec81391429d010 ND010 0 @@ -2723,7 +2728,10 @@ d 10ec8169 RTL-8169 0 d 10ec8197 SmartLAN56 56K Modem 0 v 10ed Ascii Corporation 0 d 10ed7310 V7310 0 -v 10ee Xilinx Corporation 0 +v 10ee Xilinx, Inc. 0 +v 10ee Xilinx Corporation 1 This Vendor-Id and several it's Device-Ids appear in a larger database at http://www.yourvote.com/pci/ which you may want to ref +v 10ee Xilinx Corporation 1 This Vendor-Id and several it's Device-Ids appear in a larger database at http://www.yourvote.com/pci/ which you may want to ref +v 10ee Xilinx Corporation 1 This Vendor-Id and several it's Device-Ids appear in a larger database at http://www.yourvote.com/pci/ which you may want to ref d 10ee3fc0 RME Digi96 0 d 10ee3fc1 RME Digi96/8 0 d 10ee3fc2 RME Digi96/8 Pro 0 @@ -2746,10 +2754,8 @@ v 10f9 PC Direct 0 v 10fa Truevision 0 d 10fa000c TARGA 1000 0 v 10fb Thesys Gesellschaft für Mikroelektronik mbH 0 -d 10fb186f TH 6255 0 v 10fc I-O Data Device, Inc. 0 d 10fc0003 Cardbus IDE Controller 0 What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives -d 10fc0005 Cardbus SCSI CBSC II 0 v 10fd Soyo Computer, Inc 0 v 10fe Fast Multimedia AG 0 v 10ff NCube 0 @@ -2779,16 +2785,17 @@ s 1102000211028051 CT4850 SBLive! Value 0 s 1102000211028061 SBLive! Player 5.1 0 d 11020004 SB Audigy 0 s 1102000411020051 SB0090 Audigy Player 0 -s 1102000411020053 SB0090 Audigy Player/OEM 0 -d 11020006 [SB Live! Value] EMU10k1X 0 +s 1102000411020053 SB0090 Audigy Player/OEM 1 +d 11020006 [SB Live! Value] EMU10K1X audio controller 1 OEM card in new Dell system d 11024001 SB Audigy FireWire Port 0 -s 1102400111020010 SB Audigy FireWire Port 0 +s 1102400111020010 SB Audigy FireWire Port 1 d 11027002 SB Live! MIDI/Game Port 0 s 1102700211020020 Gameport Joystick 0 d 11027003 SB Audigy MIDI/Game port 0 -s 1102700311020040 SB Audigy MIDI/Game Port 0 -d 11027004 [SB Live! Value] Input device controller 0 -d 11028064 SB0100 SBLive! 5.1 OEM 1 none +d 11027003 SB Audigy MIDI/Game Port 1 +s 1102700311020040 SB Audigy MIDI/Gameport 0 +s 1102700311020040 SB Audigy MIDI/Game Port 1 +d 11027004 [SB Live! Value] Input device controller 1 OEM card in new Dell system d 11028938 ES1371 0 v 1103 Triones Technologies, Inc. 0 d 11030003 HPT343 0 @@ -2815,10 +2822,10 @@ d 11060391 VT8371 [KX133] 0 d 11060501 VT8501 [Apollo MVP4] 0 d 11060505 VT82C505 0 d 11060561 VT82C561 0 -d 11060571 VT82C586/B/686A/B PIPC Bus Master IDE 0 -s 1106057110438052 VT8233A Bus Master ATA100/66/33 IDE 0 +d 11060571 VT82C586B PIPC Bus Master IDE 0 +d 11060571 VT82C586/B/686A/B PIPC Bus Master IDE 1 +s 1106057110438052 VT8233A Bus Master ATA100/66/33 IDE 1 s 1106057111060571 VT8235 Bus Master ATA133/100/66/33 IDE 0 -s 1106057114585002 GA-7VAX Mainboard 0 d 11060576 VT82C576 3V [Apollo Master] 0 d 11060585 VT82C585VP [Apollo VP1/VPX] 0 d 11060586 VT82C586/A/B PCI-to-ISA [Apollo VP] 0 @@ -2849,6 +2856,7 @@ d 11061571 VT82C416MV 0 d 11061595 VT82C595/97 [Apollo VP2/97] 0 d 11063038 USB 0 s 1106303809251234 USB Controller 0 +s 1106303812340925 MVP3 USB Controller 0 d 11063040 VT82C586B ACPI 0 d 11063043 VT86C100A [Rhine] 0 s 1106304310bd0000 VT86C100A Fast Ethernet Adapter 0 @@ -2868,24 +2876,25 @@ s 1106305814587600 Onboard Audio 0 s 1106305814623091 MS-6309 Onboard Audio 0 s 1106305815dd7609 Onboard Audio 0 d 11063059 VT8233 AC97 Audio Controller 0 -s 110630591458a002 GA-7VAX Onboard Audio (Realtek ALC650) 0 d 11063065 VT6102 [Rhine-II] 0 s 1106306511060102 VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 0 +s 1106306511063065 Embedded ethernet on VIA Eden 0 s 1106306511861400 DFE-530TX rev A 0 s 1106306511861401 DFE-530TX rev B 0 -d 11063068 Intel 537 [AC97 Modem] 0 +d 11063068 AC97 Modem Controller 0 d 11063074 VT8233 PCI to ISA Bridge 0 -s 1106307410438052 VT8233A 0 +s 1106307410438052 VT8233A 1 d 11063091 VT8633 [Apollo Pro266] 0 -d 11063099 VT8366/A/7 [Apollo KT266/A/333] 0 -s 1106309910438064 A7V266-E Mainboard 0 -s 110630991043807f A7V333 Mainboard 0 +d 11063099 VT8367 [KT266] 0 +d 11063099 VT8366/A/7 [Apollo KT266/A/333] 1 +s 1106309910438064 A7V266-E 0 +s 1106309910438064 A7V266-E Mainboard 1 +s 110630991043807f A7V333 0 +s 110630991043807f A7V333 Mainboard 1 d 11063101 VT8653 Host Bridge 0 d 11063102 VT8662 Host Bridge 0 d 11063103 VT8615 Host Bridge 0 d 11063104 USB 2.0 0 -s 1106310414585004 GA-7VAX Mainboard 0 -d 11063106 VT6105 [Rhine-III] 0 d 11063109 VT8233C PCI to ISA Bridge 0 d 11063112 VT8361 [KLE133] Host Bridge 0 d 11063116 VT8375 [KM266] Host Bridge 0 @@ -2894,11 +2903,10 @@ d 11063133 VT3133 Host Bridge 0 d 11063147 VT8233A ISA Bridge 0 d 11063148 P4M266 Host Bridge 0 d 11063156 P/KN266 Host Bridge 0 -d 11063168 VT8374 P4X400 Host Controller/AGP Bridge 0 -d 11063177 VT8235 ISA Bridge 0 -s 1106317714585001 GA-7VAX Mainboard 0 -d 11063189 VT8377 [KT400 AGP] Host Bridge 0 -s 1106318914585000 GA-7VAX Mainboard 0 +d 11063168 VT8374 P4X400 Host Controller/AGP Bridge 1 PCI devices found: \n Bus 0, device 0, function 0: \n Host bridge: PCI device 1106:3168 (VIA Technologies, Inc.) (rev 3). +d 11063177 VT8233A ISA Bridge 0 +d 11063177 VT8235 ISA Bridge 1 The kernel patch available in http://www.uwsg.iu.edu/hypermail/linux/kernel/0208.2/0581.html declares this ID to be VT8235 and n +d 11063189 VT8377 [KT400] Host Bridge 0 d 11065030 VT82C596 ACPI [Apollo PRO] 0 d 11066100 VT85C100A [Rhine II] 0 d 11068231 VT8231 [PCI-to-ISA Bridge] 0 @@ -2914,12 +2922,13 @@ d 11068605 VT8605 [PM133 AGP] 0 d 11068691 VT82C691 [Apollo Pro] 0 d 11068693 VT82C693 [Apollo Pro Plus] PCI Bridge 0 d 1106b091 VT8633 [Apollo Pro266 AGP] 0 -d 1106b099 VT8366/A/7 [Apollo KT266/A/333 AGP] 0 +d 1106b099 VT8367 [KT333 AGP] 0 +d 1106b099 VT8366/A/7 [Apollo KT266/A/333 AGP] 1 d 1106b101 VT8653 AGP Bridge 0 d 1106b102 VT8362 AGP Bridge 0 d 1106b103 VT8615 AGP Bridge 0 d 1106b112 VT8361 [KLE133] AGP Bridge 0 -d 1106b168 VT8235 PCI Bridge 0 +d 1106b168 VT8235 0 v 1107 Stratus Computers 0 d 11070576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) 0 v 1108 Proteon, Inc. 0 @@ -2950,7 +2959,8 @@ v 1110 Powerhouse Systems 0 d 11106037 Firepower Powerized SMP I/O ASIC 0 d 11106073 Firepower Powerized SMP I/O ASIC 0 v 1111 Santa Cruz Operation 0 -v 1112 Osicom Technologies Inc 0 Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom +v 1112 Osicom Technologies Inc 1 see http://www.pcisig.com/membership/vid_search/by_vendor_id/?vendor_id=1112&type=h for proof +v 1112 RNS - Div. of Meret Communications Inc 0 DJ: Some people say that 0x1112 is Rockwell International d 11122200 FDDI Adapter 0 d 11122300 Fast Ethernet Adapter 0 d 11122340 4 Port Fast Ethernet Adapter 0 @@ -2960,7 +2970,6 @@ d 11131211 SMC2-1211TX 0 s 11131211103c1207 EN-1207D Fast Ethernet Adapter 0 s 1113121111131211 EN-1207D Fast Ethernet Adapter 0 d 11131216 EN-1216 Ethernet Adapter 0 -s 11131216111a1020 SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] 0 d 11131217 EN-1217 Ethernet Adapter 0 d 11135105 10Mbps Network card 0 d 11139211 EN-1207D Fast Ethernet Adapter 0 @@ -3103,9 +3112,7 @@ v 1130 Computervision 0 v 1131 Philips Semiconductors 0 d 11313400 SmartPCI56(UCB1500) 56K Modem 0 d 11317130 SAA7130 Video Broadcast Decoder 0 -d 11317133 SAA7133 1 PCI audio and video broadcast decoder d 11317134 SAA7134 0 PCI audio and video broadcast decoder (http://www.semiconductors.philips.com/pip/saa7134hl) -d 11317135 SAA7135 1 PCI audio and video broadcast decoder d 11317145 SAA7145 0 d 11317146 SAA7146 0 s 11317146114b2003 DVRaptor Video Edit/Capture Card 0 @@ -3134,7 +3141,7 @@ d 1133e004 DIVA 20_U 0 s 1133e0041133e004 DIVA 2.0 U 0 d 1133e005 DIVA LOW 0 s 1133e0051133e005 DIVA 2.01 S/T 0 -d 1133e00b DIVA 2.02 0 +d 1133e00b Eicon Diva 2.02 1 New version of Eicon Diva card class 280 d 1133e010 DIVA Server BRI-2M 0 s 1133e0101133e010 DIVA Server BRI-2M 0 d 1133e012 DIVA Server BRI-8M 0 @@ -3183,12 +3190,6 @@ v 1143 NetPower, Inc 0 v 1144 Cincinnati Milacron 0 d 11440001 Noservo controller 0 v 1145 Workbit Corporation 0 -d 11458007 NinjaSCSI-32 Workbit 0 -d 1145f007 NinjaSCSI-32 KME 0 -d 1145f010 NinjaSCSI-32 Workbit 0 -d 1145f012 NinjaSCSI-32 Logitec 0 -d 1145f013 NinjaSCSI-32 Logitec 0 -d 1145f015 NinjaSCSI-32 Melco 0 v 1146 Force Computers 0 v 1147 Interface Corp 0 v 1148 Syskonnect (Schneider & Koch) 0 @@ -3218,14 +3219,6 @@ s 1148430011489843 SK-9843 (1000Base-SX single link) 0 s 1148430011489844 SK-9844 (1000Base-SX dual link) 0 s 1148430011489861 SK-9861 (1000Base-SX VF45 single link) 0 s 1148430011489862 SK-9862 (1000Base-SX VF45 dual link) 0 -d 11484320 SK-98xx Gigabit Ethernet Server Adapter 1 SK-98xx V2 Gigabit Ethernet Server Adapter -s 1148432011485021 SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter 1 SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter -s 1148432011485041 SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter 1 -s 1148432011485043 SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1 -s 1148432011485051 SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1 -s 1148432011485061 SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1 -s 1148432011485071 SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter 1 -s 1148432011489521 SK-9521 10/100/1000Base-T Adapter 1 SK-9521 10/100/1000Base-T Adapter d 11484400 Gigabit Ethernet 0 v 1149 Win System Corporation 0 v 114a VMIC 0 @@ -3352,17 +3345,12 @@ d 11660013 CNB20-HE Host Bridge 0 d 11660014 CNB20-HE Host Bridge 0 d 11660015 CMIC-GC Host Bridge 0 d 11660016 CMIC-GC Host Bridge 0 -d 11660017 GCNB-LE Host Bridge 0 +d 11660017 CMIC-SL 0 d 11660200 OSB4 South Bridge 0 d 11660201 CSB5 South Bridge 0 -d 11660203 CSB6 South Bridge 0 d 11660211 OSB4 IDE Controller 0 d 11660212 CSB5 IDE Controller 0 -d 11660213 CSB6 RAID/IDE Controller 0 -d 11660220 OSB4/CSB5 OHCI USB Controller 0 -d 11660221 CSB6 OHCI USB Controller 0 -d 11660225 GCLE Host Bridge 0 -d 11660227 GCLE-2 Host Bridge 0 +d 11660220 OSB4/CSB5 USB Controller 0 v 1167 Mutoh Industries Inc 0 v 1168 Thine Electronics Inc 0 v 1169 Centre for Development of Advanced Computing 0 @@ -3412,9 +3400,7 @@ v 1180 Ricoh Co Ltd 0 d 11800465 RL5c465 0 d 11800466 RL5c466 0 d 11800475 RL5c475 0 -s 11800475144dc006 vpr Matrix 170B4 CardBus bridge 0 d 11800476 RL5c476 II 0 -s 1180047610140185 ThinkPad A/T/X Series 0 s 11800476104d80df Vaio PCG-FX403 0 s 11800476104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 d 11800477 RL5c477 0 @@ -3423,9 +3409,7 @@ s 1180047810140184 ThinkPad A30p (2653-64G) 0 d 11800522 R5C522 IEEE 1394 Controller 0 s 11800522101401cf ThinkPad A30p (2653-64G) 0 d 11800551 R5C551 IEEE 1394 Controller 0 -s 11800551144dc006 vpr Matrix 170B4 0 d 11800552 R5C552 IEEE 1394 Controller 0 -s 1180055210140511 ThinkPad A/T/X Series 0 v 1181 Telmatics International 0 v 1183 Fujikura Ltd 0 v 1184 Forks Inc 0 @@ -3560,6 +3544,7 @@ v 11bf Astrodesign, Inc. 0 v 11c0 Hewlett Packard 0 v 11c1 Lucent Microelectronics 0 d 11c10440 56k WinModem 0 +s 11c1044000010440 LT WinModem 56k Data+Fax+Voice+Dsvd 0 s 11c1044010338015 LT WinModem 56k Data+Fax+Voice+Dsvd 0 s 11c1044010338047 LT WinModem 56k Data+Fax+Voice+Dsvd 0 s 11c104401033804f LT WinModem 56k Data+Fax+Voice+Dsvd 0 @@ -3601,6 +3586,7 @@ s 11c10441144f110d Lucent Win Modem 0 s 11c1044114680441 Presario 56k V.90 DF Modem 0 s 11c1044116680440 Lucent Win Modem 0 d 11c10442 56k WinModem 0 +s 11c1044200010440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0 s 11c1044211c10440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0 s 11c1044211c10442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0 s 11c1044213e00412 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0 @@ -3613,7 +3599,6 @@ s 11c1044216680440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0 d 11c10443 LT WinModem 0 d 11c10444 LT WinModem 0 d 11c10445 LT WinModem 0 -s 11c1044580862203 Intel PRO/100+ MiniPCI (Ambit U98.003.C.00 combo ?) 1 d 11c10446 LT WinModem 0 d 11c10447 LT WinModem 0 d 11c10448 WinModem 56k 0 @@ -3642,7 +3627,7 @@ d 11c1044d LT WinModem 0 d 11c1044e LT WinModem 0 d 11c1044f V90 WildWire Modem 0 d 11c10450 LT WinModem 0 -s 11c10450144f4005 Magnia SG20 0 +s 11c10450144f4005 Toshiba Magnia SG20 1 d 11c10451 LT WinModem 0 d 11c10452 LT WinModem 0 d 11c10453 LT WinModem 0 @@ -3653,7 +3638,7 @@ d 11c10457 LT WinModem 0 d 11c10458 LT WinModem 0 d 11c10459 LT WinModem 0 d 11c1045a LT WinModem 0 -d 11c1045c LT WinModem 0 +d 11c1045c LT WinModem 1 d 11c10461 V90 WildWire Modem 0 d 11c10462 V90 WildWire Modem 0 d 11c10480 Venus Modem (V90, 56KFlex) 0 @@ -3662,7 +3647,7 @@ d 11c15802 USS-312 USB Controller 0 d 11c15811 FW323 0 s 11c15811dead0800 FireWire Host Bus Adapter 0 v 11c2 Sand Microelectronics 0 -v 11c3 NEC Corporation 0 +v 11c3 NEC Corp 0 v 11c4 Document Technologies, Inc 0 v 11c5 Shiva Corporation 0 v 11c6 Dainippon Screen Mfg. Co. Ltd 0 @@ -3824,6 +3809,7 @@ d 12176925 OZ6922 Cardbus Controller 0 d 12176933 OZ6933 Cardbus Controller 0 s 1217693310251016 Travelmate 612 TX 0 d 12176972 OZ6912 Cardbus Controller 0 +s 1217697234127856 Toshiba Magnia SG20 1 v 1218 Hybricon Corp. 0 v 1219 First Virtual Corporation 0 v 121a 3Dfx Interactive, Inc. 0 @@ -3845,6 +3831,7 @@ s 121a0003121a0004 Voodoo Banshee 0 s 121a0003139c0016 Raven 0 s 121a0003139c0017 Raven 0 s 121a000314af0002 Maxi Gamer Phoenix 0 +s 121a000330303030 Skywell Magic TwinPower 0 d 121a0004 Voodoo Banshee [Velocity 100] 0 d 121a0005 Voodoo 3 0 s 121a0005121a0004 Voodoo3 AGP 0 @@ -3936,10 +3923,9 @@ s 123f888813280001 Cinemaster C 3.0 DVD Decoder 0 v 1240 Marathon Technologies Corp. 0 v 1241 DSC Communications 0 v 1242 JNI Corporation 0 Formerly Jaycor Networks, Inc. -d 12421560 JNIC-1560 PCI-X Fibre Channel Controller 0 -s 1242156012426562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter 0 -s 124215601242656a FCX-6562 PCI-X Fibre Channel Adapter 0 d 12424643 FCI-1063 Fibre Channel Adapter 0 +d 12426562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter 0 +d 1242656a FCX-6562 PCI-X Fibre Channel Adapter 0 v 1243 Delphax 0 v 1244 AVM Audiovisuelles MKTG & Computer System GmbH 0 d 12440700 B1 ISDN 0 @@ -3956,7 +3942,7 @@ v 1248 Central Data Corporation 0 v 1249 Samsung Electronics Co., Ltd. 0 v 124a AEG Electrocom GmbH 0 v 124b SBS/Greenspring Modular I/O 0 -d 124b0040 PCI-40A or cPCI-200 Quad IndustryPack carrier 0 +d 124b0040 PCI-40A Quad IndustryPack Carrier or cPCI-200 Four Slot IndustryPack carrier 0 s 124b0040124b9080 PCI9080 Bridge 0 v 124c Solitron Technologies, Inc. 0 v 124d Stallion Technologies, Inc. 0 @@ -3999,8 +3985,8 @@ s 125d196810338051 ES1968 Maestro-2 Audiodrive 0 d 125d1969 ES1969 Solo-1 Audiodrive 0 s 125d196910140166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard 0 s 125d1969125d8888 Solo-1 Audio Adapter 0 +s 125d1969525fc888 ES1969 SOLO-1 AudioDrive (+ES1938) 0 d 125d1978 ES1978 Maestro 2E 0 -s 125d19780e11b112 Armada M700 1 s 125d19781033803c ES1978 Maestro-2E Audiodrive 0 s 125d197810338058 ES1978 Maestro-2E Audiodrive 0 s 125d197810924000 Monster Sound MX400 0 @@ -4032,9 +4018,8 @@ v 125f Concurrent Technologies, Inc. 0 v 1260 Harris Semiconductor 0 d 12603873 Prism 2.5 Wavelan chipset 0 s 1260387311863501 DWL-520 Wireless PCI Adapter 0 -s 1260387316680414 HWP01170-01 802.11b PCI Wireless Adapter 0 -s 1260387317373874 WMP11 Wireless 802.11b PCI Adapter 0 -s 1260387380862513 Wireless 802.11b MiniPCI Adapter 0 +s 1260387317373874 WMP11 Wireless 802.11b PCI Adaptor 0 +s 1260387380862513 Wireless 802.11b MiniPCI Adapter 1 d 12608130 HMP8130 NTSC/PAL Video Decoder 0 d 12608131 HMP8131 NTSC/PAL Video Decoder 0 v 1261 Matsushita-Kotobuki Electronics Industries, Ltd. 0 @@ -4125,6 +4110,7 @@ s 1274137180865352 ES1371, ES1373 AudioPCI On Motherboard SunRiver 0 s 1274137180865643 ES1371, ES1373 AudioPCI On Motherboard Vancouver 0 s 1274137180865753 ES1371, ES1373 AudioPCI On Motherboard WS440BX 0 d 12745000 ES1370 [AudioPCI] 0 +s 1274500049424c4c Creative Sound Blaster AudioPCI128 0 d 12745880 5880 AudioPCI 0 s 1274588012742000 Creative Sound Blaster AudioPCI128 0 s 1274588012742003 Creative SoundBlaster AudioPCI 128 0 @@ -4569,8 +4555,6 @@ v 1317 Linksys 0 d 13170981 Fast Ethernet 10/100 0 d 13170985 Network Everywhere Fast Ethernet 10/100 model NC100 0 d 13171985 Fast Ethernet 10/100 0 -s 1317198510390300 1 -s 131719851385511a ADMtek AL985 Centaur-C [NETGEAR FA511] 1 Info based on 'tulip-dag -eee' by D. Becker (scyld.com) v 1318 Packet Engines Inc. 0 d 13180911 PCI Ethernet Adapter 0 v 1319 Fortemedia, Inc 0 @@ -4688,19 +4672,19 @@ v 1359 Prisa Networks 0 v 135a Brain Boxes 0 v 135b Giganet Inc 0 v 135c Quatech Inc 0 -d 135c0010 QSC-100 0 -d 135c0020 DSC-100 0 -d 135c0030 DSC-200/300 0 -d 135c0040 QSC-200/300 0 -d 135c0050 ESC-100D 0 -d 135c0060 ESC-100M 0 +d 135c0010 QSC-100 1 +d 135c0020 DSC-100 1 +d 135c0030 DSC-200/300 1 +d 135c0040 QSC-200/300 1 +d 135c0050 ESC-100D 1 +d 135c0060 ESC-100M 1 d 135c00f0 MPAC-100 Syncronous Serial Card (Zilog 85230) 0 -d 135c0170 QSCLP-100 0 -d 135c0180 DSCLP-100 0 -d 135c0190 SSCLP-100 0 -d 135c01a0 QSCLP-200/300 0 -d 135c01b0 DSCLP-200/300 0 -d 135c01c0 SSCLP-200/300 0 +d 135c0170 QSCLP-100 1 +d 135c0180 DSCLP-100 1 +d 135c0190 SSCLP-100 1 +d 135c01a0 QSCLP-200/300 1 +d 135c01b0 DSCLP-200/300 1 +d 135c01c0 SSCLP-200/300 1 v 135d ABB Network Partner AB 0 v 135e Sealevel Systems Inc 0 d 135e7101 Single Port RS-232/422/485/530 0 @@ -4800,10 +4784,6 @@ d 13a30005 7751 Security Processor 0 d 13a30006 6500 Public Key Processor 0 d 13a30007 7811 Security Processor 0 d 13a30012 7951 Security Processor 0 -d 13a30014 78XX Security Processor 0 -d 13a30016 8065 Security Processor 0 -d 13a30017 8165 Security Processor 0 -d 13a30018 8154 Security Processor 0 v 13a4 Rascom Inc 0 v 13a5 Audio Digital Imaging Inc 0 v 13a6 Videonics Inc 0 @@ -4855,7 +4835,7 @@ v 13ce Cocom A/S 0 v 13cf Studio Audio & Video Ltd 0 v 13d0 Techsan Electronics Co Ltd 0 v 13d1 Abocom Systems Inc 0 -d 13d1ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter 0 +d 13d1ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter 1 d 13d1ab06 RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter 0 v 13d2 Shark Multimedia Inc 0 v 13d3 IMC Networks 0 @@ -4903,7 +4883,6 @@ s 13f6010013f6ffff CMI8338/C3DX PCI Audio Device 0 d 13f60101 CM8338B 0 s 13f6010113f60101 CMI8338-031 PCI Audio Device 0 d 13f60111 CM8738 0 -s 13f6011110190970 P6STP-FL motherboard 0 s 13f6011110438077 CMI8738 6-channel audio controller 0 s 13f60111104380e2 CMI8738 6ch-MX 0 s 13f6011113f60111 CMI8738/C3DX PCI Audio Device 0 @@ -4953,7 +4932,6 @@ v 1410 Midas lab Inc 0 v 1411 Ikos Systems Inc 0 v 1412 IC Ensemble Inc 0 d 14121712 ICE1712 [Envy24] 0 -d 14121724 ICE1724 [Envy24HT] 0 v 1413 Addonics 0 v 1414 Microsoft Corporation 0 v 1415 Oxford Semiconductor Ltd 0 @@ -5052,7 +5030,6 @@ d 145f0001 NextMove PCI 0 v 1460 DYNARC INC 0 v 1461 Avermedia Technologies Inc 0 v 1462 Micro-star International Co Ltd 0 -v 1462 Micro-Star International Co., Ltd. 1 v 1463 Fast Corporation 0 v 1464 Interactive Circuits & Systems Ltd 0 v 1465 GN NETTEST Telecom DIV. 0 @@ -5149,7 +5126,7 @@ d 14b90340 PC4800 0 d 14b90350 PC4800 0 d 14b94500 PC4500 0 d 14b94800 PC4800 0 -d 14b9a504 Cisco Aironet Wireless 802.11b 0 +d 14b9a504 Cisco Aironet Wireless 802.11b 1 This is the name used by IBM in their Thinkpad T30 doc. It is a wireless ethernet card. v 14ba INTERNIX Inc. 0 v 14bb SEMTECH Corporation 0 v 14bc Globespan Semiconductor Inc. 0 @@ -5222,41 +5199,40 @@ v 14e2 INFOLIBRIA 0 v 14e3 AMTELCO 0 v 14e4 Broadcom Corporation 0 d 14e41644 NetXtreme BCM5700 Gigabit Ethernet 0 -s 14e4164410140277 Broadcom Vigil B5700 1000Base-T 0 +s 14e4164410140277 Broadcom Vigil B5700 1000BaseTX 0 s 14e41644102800d1 Broadcom BCM5700 0 s 14e4164410280106 Broadcom BCM5700 0 -s 14e4164410280109 Broadcom BCM5700 1000Base-T 0 +s 14e4164410280109 Broadcom BCM5700 1000BaseTX 0 s 14e416441028010a Broadcom BCM5700 1000BaseTX 0 -s 14e4164410b71000 3C996-T 1000Base-T 0 -s 14e4164410b71001 3C996B-T 1000Base-T 0 -s 14e4164410b71002 3C996C-T 1000Base-T 0 -s 14e4164410b71003 3C997-T 1000Base-T Dual Port 0 -s 14e4164410b71004 3C996-SX 1000Base-SX 0 -s 14e4164410b71005 3C997-SX 1000Base-SX Dual Port 0 +s 14e4164410b71000 3C996-T 1000BaseTX 0 +s 14e4164410b71001 3C996B-T 1000BaseTX 0 +s 14e4164410b71002 3C996C-T 1000BaseTX 0 +s 14e4164410b71003 3C997-T 1000BaseTX Dual Port 0 +s 14e4164410b71004 3C996-SX 1000BaseSX 0 +s 14e4164410b71005 3C997-SX 1000BaseSX Dual Port 0 s 14e4164410b71008 3C942 Gigabit LOM (31X31) 0 -s 14e4164414e40002 NetXtreme 1000Base-SX 0 -s 14e4164414e40003 NetXtreme 1000Base-SX 0 -s 14e4164414e40004 NetXtreme 1000Base-T 0 +s 14e4164414e40002 NetXtreme 1000BaseSX 0 +s 14e4164414e40003 NetXtreme 1000BaseSX 0 +s 14e4164414e40004 NetXtreme 1000BaseTX 0 s 14e4164414e41028 NetXtreme 1000BaseTX 0 -s 14e4164414e41644 BCM5700 1000Base-T 0 +s 14e4164414e41644 BCM5700 1000BaseTX 0 d 14e41645 NetXtreme BCM5701 Gigabit Ethernet 0 s 14e416450e11007c NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0 s 14e416450e11007d NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) 0 s 14e416450e110085 NC7780 Gigabit Server Adapter (embedded, WOL) 0 s 14e416450e110099 NC7780 Gigabit Server Adapter (embedded, WOL) 0 s 14e416450e11009a NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0 -s 14e416450e1100c1 NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) 0 -s 14e4164510280121 Broadcom BCM5701 1000Base-T 0 -s 14e4164510b71004 3C996-SX 1000Base-SX 0 -s 14e4164510b71006 3C996B-T 1000Base-T 0 -s 14e4164510b71007 3C1000-T 1000Base-T 0 -s 14e4164510b71008 3C940-BR01 1000Base-T 0 -s 14e4164514e40001 BCM5701 1000Base-T 0 -s 14e4164514e40005 BCM5701 1000Base-T 0 -s 14e4164514e40006 BCM5701 1000Base-T 0 -s 14e4164514e40007 BCM5701 1000Base-SX 0 -s 14e4164514e40008 BCM5701 1000Base-T 0 -s 14e4164514e48008 BCM5701 1000Base-T 0 +s 14e4164510280121 Broadcom BCM5701 1000BaseTX 0 +s 14e4164510b71004 3C996-SX 1000BaseSX 0 +s 14e4164510b71006 3C996B-T 1000BaseTX 0 +s 14e4164510b71007 3C1000-T 1000BaseTX 0 +s 14e4164510b71008 3C940-BR01 1000BaseTX 0 +s 14e4164514e40001 BCM5701 1000BaseTX 0 +s 14e4164514e40005 BCM5701 1000BaseTX 0 +s 14e4164514e40006 BCM5701 1000BaseTX 0 +s 14e4164514e40007 BCM5701 1000BaseSX 0 +s 14e4164514e40008 BCM5701 1000BaseTX 0 +s 14e4164514e48008 BCM5701 1000BaseTX 0 d 14e41646 NetXtreme BCM5702 Gigabit Ethernet 0 s 14e416460e1100bb NC7760 1000BaseTX 0 s 14e4164610280126 Broadcom BCM5702 1000BaseTX 0 @@ -5269,48 +5245,19 @@ s 14e4164714e4000a BCM5703 1000BaseSX 0 s 14e4164714e4000b BCM5703 1000BaseTX 0 s 14e4164714e48009 BCM5703 1000BaseTX 0 s 14e4164714e4800a BCM5703 1000BaseTX 0 -d 14e41648 NetXtreme BCM5704 Gigabit Ethernet 0 -s 14e416480e1100cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0 -s 14e416480e1100d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0 -s 14e416480e1100d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0 -s 14e4164810b72000 3C998-T Dual Port 10/100/1000 PCI-X 0 -s 14e4164810b73000 3C999-T Quad Port 10/100/1000 PCI-X 0 -s 14e4164811661648 NetXtreme CIOB-E 1000Base-T 0 +d 14e41648 "Broadcom Corporation|BCM5704 1000BaseTX" 1 d 14e4164d NetXtreme BCM5702FE Gigabit Ethernet 0 -d 14e41653 NetXtreme BCM5705 Gigabit Ethernet 0 -d 14e4165d NetXtreme BCM5705M Gigabit Ethernet 0 -d 14e41696 NetXtreme BCM5782 Gigabit Ethernet 0 -s 14e4169614e4000d NetXtreme BCM5782 1000Base-T 0 -d 14e416a6 NetXtreme BCM5702 Gigabit Ethernet 0 -s 14e416a60e1100bb NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0 -s 14e416a610280126 BCM5702 1000Base-T 0 -s 14e416a614e4000c BCM5702 1000Base-T 0 -s 14e416a614e48009 BCM5702 1000Base-T 0 -d 14e416a7 NetXtreme BCM5703 Gigabit Ethernet 0 -s 14e416a70e1100ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0 -s 14e416a70e1100cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0 -s 14e416a714e40009 NetXtreme BCM5703 1000Base-T 0 -s 14e416a714e4000a NetXtreme BCM5703 1000Base-SX 0 -s 14e416a714e4000b NetXtreme BCM5703 1000Base-T 0 -s 14e416a714e4800a NetXtreme BCM5703 1000Base-T 0 -d 14e416a8 NetXtreme BCM5704S Gigabit Ethernet 0 -s 14e416a810b72001 3C998-SX Dual Port 1000-SX PCI-X 0 -d 14e416c6 NetXtreme BCM5702 Gigabit Ethernet 0 -s 14e416c610b71100 3C1000B-T 10/100/1000 PCI 0 -s 14e416c614e4000c BCM5702 1000Base-T 0 -s 14e416c614e48009 BCM5702 1000Base-T 0 -d 14e416c7 NetXtreme BCM5703 Gigabit Ethernet 0 -s 14e416c714e40009 NetXtreme BCM5703 1000Base-T 0 -s 14e416c714e4000a NetXtreme BCM5703 1000Base-SX 0 -d 14e44210 BCM4210 iLine10 HomePNA 2.0 0 -d 14e44211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem 0 -d 14e44212 BCM4212 v.90 56k modem 0 -d 14e44301 BCM4301 802.11b 0 -d 14e44401 BCM4401 100Base-T 0 -d 14e44402 BCM4402 Integrated 10/100BaseT 0 -d 14e44410 BCM4413 iLine32 HomePNA 2.0 0 -d 14e44411 BCM4413 V.90 56k modem 0 -d 14e44412 BCM4413 10/100BaseT 0 +d 14e416a6 NetXtreme BCM5702X Gigabit Ethernet 0 +d 14e416a7 NetXtreme BCM5703X Gigabit Ethernet 0 +d 14e416a8 Broadcom Corporation|BCM5704 1000BaseSX 1 +d 14e44210 BCM4210 iLine10 HomePNA 2.0 1 +d 14e44211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem 1 +d 14e44212 BCM v.90 56k modem 0 +d 14e44212 BCM4212 v.90 56k modem 1 +d 14e44402 BCM4402 Integrated 10/100BaseT 1 +d 14e44410 BCM4413 iLine32 HomePNA 2.0 1 +d 14e44411 BCM4413 V.90 56k modem 1 +d 14e44412 BCM4413 10/100BaseT 1 d 14e45820 BCM5820 Crypto Accelerator 0 d 14e45821 BCM5821 Crypto Accelerator 0 v 14e5 Pixelfusion Ltd 0 @@ -5531,10 +5478,6 @@ s 1522010015220500 RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem 0 s 1522010015220600 RockForce+ 2 Port V.90 Data/Fax/Voice Modem 0 v 1523 MUSIC Semiconductors 0 v 1524 ENE Technology Inc 0 -d 15241211 CB1211 Cardbus Controller 0 -d 15241225 CB1225 Cardbus Controller 0 -d 15241410 CB1410 Cardbus Controller 0 -d 15241420 CB1420 Cardbus Controller 0 v 1525 IMPACT Technologies 0 v 1526 ISS, Inc 0 v 1527 SOLECTRON 0 @@ -5565,8 +5508,7 @@ v 1540 PROVIDEO MULTIMEDIA Co Ltd 0 v 1541 MACHONE Communications 0 v 1542 VIVID Technology Inc 0 v 1543 SILICON Laboratories 0 -d 15433052 Intel 537 [Winmodem] 0 -d 15434c22 Si3036 MC'97 DAA 0 +d 15434c22 Si3036 1 MC'97 DAA v 1544 DCM DATA Systems 0 v 1545 VISIONTEK 0 v 1546 IOI Technology Corp 0 @@ -5700,7 +5642,9 @@ v 15aa Moreton Bay 0 v 15ab Bluesteel Networks Inc 0 v 15ac North Atlantic Instruments 0 v 15ad VMWare Inc 0 +d 15ad0405 Unknown? 1 d 15ad0710 Virtual SVGA 0 +d 15ad0720 Virtual SVGA? 1 v 15ae Amersham Pharmacia Biotech 0 v 15b0 Zoltrix International Ltd 0 v 15b1 Source Technology Inc 0 @@ -5730,6 +5674,7 @@ v 15c6 Technical University of Budapest 0 v 15c7 Tateyama System Laboratory Co Ltd 0 d 15c70349 Tateyama C-PCI PLC/NC card Rev.01A 0 v 15c8 Penta Media Co Ltd 0 +d 15c89050 PentaNet 1 Satellite DVB Card v 15c9 Serome Technology Inc 0 v 15ca Bitboys OY 0 v 15cb AG Electronics Ltd 0 @@ -5805,27 +5750,22 @@ d 16291003 Format synchronizer v3.0 0 d 16292002 Fast Universal Data Output 0 v 1638 Standard Microsystems Corp [SMC] 0 d 16381100 SMC2602W EZConnect / Addtron AWA-100 0 -v 163c Smart Link Ltd. 0 -d 163c5449 SmartPCI561 Modem 0 v 1657 Brocade Communications Systems, Inc. 0 -v 165a Epix Inc 0 -d 165ac100 PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] 0 -d 165ad200 PIXCI(R) D2X Digital Video Capture Board [custom QL5232] 0 -d 165ad300 PIXCI(R) D3X Digital Video Capture Board [custom QL5232] 0 +v 165a Epix Inc. 1 +d 165ac100 PIXCI(R) CL1 PCI Camera Link Video Capture Board 1 Custom chip made for this board, based on QuickLogic QL5232 +d 165ad200 PIXCI(R) D2X PCI Digital Video Capture Board 1 Custom chip made for this board, based on QuickLogic QL5232 +d 165ad300 PIXCI(R) D3X PCI Digital Video Capture Board 1 Custom chip made for this board, based on QuickLogic QL5232 v 165d Hsing Tech. Enterprise Co., Ltd. 0 v 1661 Worldspace Corp. 0 -v 1668 Actiontec Electronics Inc 0 -v 1681 Hercules 0 +v 1668 Action Tec Electronics Inc 0 +v 168c Action Tec Electronics Inc 1 subtype: '0007 802.11a WLAN Controller (AR5k chipset)' v 16ab Global Sun Technology Inc 0 -d 16ab1102 PCMCIA-to-PCI Wireless Network Bridge 0 -v 16be Creatix Polymedia GmbH 0 +d 16ab1102 PCMCIA-to-PCI Wireless Network Bridge 1 PLX chipset v 16ec U.S. Robotics 0 d 16ec3685 Wireless Access PCI Adapter Model 022415 0 v 16f6 VideoTele.com, Inc. 0 -v 1705 Digital First, Inc. 0 v 170b NetOctave Inc 0 v 170c YottaYotta Inc. 0 -v 172a Accelerated Encryption 0 v 1737 Linksys 0 v 173b Altima (nee Broadcom) 0 d 173b03e8 AC1000 Gigabit Ethernet 0 @@ -5834,7 +5774,8 @@ v 1743 Peppercon AG 0 d 17438139 ROL/F-100 Fast Ethernet Adapter with ROL 0 v 174b PC Partner Limited 0 v 175e Sanera Systems, Inc. 0 -v 1787 Hightech Information System Ltd. 0 +v 1787 Sapphire Technology Ltd. 1 http://mirror.ati.com/support/identify/graphicschart.html +v 1787 Hightech Information System Ltd. 1 Oops, I goofed on the Sapphire entry above.. this one is correct v 1796 Research Centre Juelich 0 also used by Struck Innovative Systeme for joint developments d 17960001 SIS1100 [Gigabit link] 0 d 17960002 HOTlink 0 @@ -5842,15 +5783,10 @@ d 17960003 Counter Timer 0 d 17960004 CAMAC Controller 0 d 17960005 PROFIBUS 0 d 17960006 AMCC HOTlink 0 -v 1799 Belkin 0 -v 17af Hightech Information System Ltd. 0 +v 1799 Belkin 1 +v 17af Hightech Information System Ltd. 1 ATI supplied info - http://mirror.ati.com/support/identify/graphicschart.html v 1813 Ambient Technologies Inc 0 -d 18134000 HaM controllerless modem 0 -s 1813400016be0001 V9x HAM Data Fax Modem 0 -d 18134100 HaM plus Data Fax Modem 0 -s 1813410016be0002 V9x HAM 1394 0 -v 1851 Microtune, Inc. 0 -v 1852 Anritsu Corp. 0 +d 18134000 HaM controllerless modem 1 v 1a08 Sierra semiconductor 0 d 1a080000 SC15064 0 v 1b13 Jaton Corp 0 @@ -5863,10 +5799,7 @@ d 1de10391 TRM-S1040 0 d 1de12020 DC-390 0 d 1de1690c 690c 0 d 1de1dc29 DC290 0 -v 2000 Smart Link Ltd. 0 v 2001 Temporal Research Ltd 0 -v 2003 Smart Link Ltd. 0 -v 2004 Smart Link Ltd. 0 v 21c3 21st Century Computer Corp. 0 v 2348 Racore 0 d 23482010 8142 100VG/AnyLAN 0 @@ -5886,6 +5819,7 @@ s 3388801233888012 VXPro II Chipset PCI to ISA Bridge 0 d 33888013 VXPro II IDE 0 s 3388801333888013 VXPro II Chipset EIDE Controller 0 v 3411 Quantum Designs (H.K.) Inc 0 +v 3412 Unknown 1 Toshiba Magnia SG20 has a 3412:7856 as a subsystem of 1217:6972 v 3513 ARCOM Control Systems Ltd 0 v 38ef 4Links 0 v 3d3d 3DLabs 0 @@ -5910,7 +5844,6 @@ s 3d3d00093d3d0127 Permedia3 Create! 0 d 3d3d000a GLINT R3 0 s 3d3d000a3d3d0121 Oxygen VX1 0 d 3d3d000c GLINT R3 [Oxygen VX1] 0 -s 3d3d000c3d3d0144 Oxygen VX1-4X AGP [Permedia 4] 0 d 3d3d0100 Permedia II 2D+3D 0 d 3d3d1004 Permedia 0 d 3d3d3d04 Permedia 0 @@ -5983,7 +5916,6 @@ v 5136 S S Technologies 0 v 5143 Qualcomm Inc 0 v 5145 Ensoniq (Old) 0 d 51453031 Concert AudioPCI 0 -v 5168 Animation Technologies Inc. 1 http://www.lifeview.com.tw/ v 5301 Alliance Semiconductor Corp. 0 d 53010001 ProMotion aT3D 0 v 5333 S3 Inc. 0 @@ -6092,7 +6024,7 @@ d 53338c03 ViRGE/MX+MV 0 d 53338c10 86C270-294 Savage/MX-MV 0 d 53338c11 82C270-294 Savage/MX 0 d 53338c12 86C270-294 Savage/IX-MV 0 -s 53338c121014017f ThinkPad T20 0 +s 53338c121014017f ThinkPad T20 1 d 53338c13 86C270-294 Savage/IX 0 d 53338c22 SuperSavage MX/128 0 d 53338c24 SuperSavage MX/64 0 @@ -6105,13 +6037,8 @@ d 53338c2e SuperSavage IX/C SDR 0 s 53338c2e101401fc ThinkPad T23 (2647-4MG) 0 d 53338c2f SuperSavage IX/C DDR 0 d 53338d01 VT8603 [ProSavage PN133] AGP4X VGA Controller (Twister) 0 Integrated in VIA ProSavage PN133 North Bridge -d 53338d01 86C380 [ProSavageDDR K4M266] 1 Update: Ignore previous submission, hit the jackpot on S3's site. The VTxxx numbers are all wrong. -d 53338d01 VT8603 [ProSavage PN133 (Twister)] 1 Update: remove overly extraneous and redundant info d 53338d02 VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) 0 -d 53338d02 VT8636A [ProSavage KN133 (Twister)] 1 Update: remove overly extraneous and redundant info -d 53338d03 VT8751 [ProSavageDDR P4M266] 1 Update: 0x8d04 is actually 0x8d03 from XFree86 savage driver source d 53338d04 VT8751 [ProSavageDDR P4M266] VGA Controller 0 -d 53338d04 [ProSavageDDR K4M266] 1 Update: 0x8d04 is the AMD "K" variant of 8d03, don't have complete info yet, will update in future d 53339102 86C410 Savage 2000 0 s 5333910210925932 Viper II Z200 0 s 5333910210925934 Viper II Z200 0 @@ -6205,14 +6132,14 @@ d 80861015 82540EM Gigabit Ethernet Controller (LOM) 0 d 80861029 82559 Ethernet Controller 0 d 80861030 82559 InBusiness 10/100 0 d 80861031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller 0 -s 8086103110140209 ThinkPad A/T/X Series 0 +s 8086103110140209 ThinkPad A30p (2653-64G) 0 +s 8086103110140209 ThinkPad A30p/T30 1 s 80861031104d80e7 Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 s 80861031107b5350 EtherExpress PRO/100 VE 0 s 8086103111790001 EtherExpress PRO/100 VE 0 s 80861031144dc000 EtherExpress PRO/100 VE 0 s 80861031144dc001 EtherExpress PRO/100 VE 0 s 80861031144dc003 EtherExpress PRO/100 VE 0 -s 80861031144dc006 vpr Matrix 170B4 0 d 80861032 82801CAM (ICH3) PRO/100 VE Ethernet Controller 0 d 80861033 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller 0 d 80861034 82801CAM (ICH3) PRO/100 VM Ethernet Controller 0 @@ -6222,16 +6149,12 @@ d 80861037 82801CAM (ICH3) Chipset Ethernet Controller 0 d 80861038 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller 0 d 80861039 82801BD PRO/100 VE (LOM) Ethernet Controller 0 d 8086103a 82801BD PRO/100 VE (CNR) Ethernet Controller 0 -s 8086103a80861039 PRO/100 VE Network Connection 1 d 8086103b 82801BD PRO/100 VM (LOM) Ethernet Controller 0 d 8086103c 82801BD PRO/100 VM (CNR) Ethernet Controller 0 d 8086103d 82801BD PRO/100 VE (MOB) Ethernet Controller 0 d 8086103e 82801BD PRO/100 VM (MOB) Ethernet Controller 0 -d 80861040 536EP Data Fax Modem 0 -s 8086104016be1040 V.9X DSP Data Fax Modem 0 d 80861059 82551QM Ethernet Controller 0 d 80861130 82815 815 Chipset Host Bridge and Memory Controller Hub 0 -s 8086113010251016 Travelmate 612 TX 0 s 8086113010438027 TUSL2-C Mainboard 0 s 80861130104d80df Vaio PCG-FX403 0 d 80861131 82815 815 Chipset AGP Bridge 0 @@ -6281,16 +6204,16 @@ s 80861229101401f1 10/100 Ethernet Server Adapter 0 s 80861229101401f2 10/100 Ethernet Server Adapter 0 s 8086122910140207 Ethernet Pro/100 S 0 s 8086122910140232 10/100 Dual Port Server Adapter 0 -s 808612291014023a ThinkPad R30 0 +s 808612291014023a ThinkPad R30 1 s 808612291014105c Netfinity 10/100 0 -s 8086122910142205 ThinkPad A22p 0 +s 8086122910142205 ThinkPad A22p 1 s 808612291014305c 10/100 EtherJet Management Adapter 0 s 808612291014405c 10/100 EtherJet Adapter with Alert on LAN 0 s 808612291014505c 10/100 EtherJet Secure Management Adapter 0 s 808612291014605c 10/100 EtherJet Secure Management Adapter 0 s 808612291014705c 10/100 Netfinity 10/100 Ethernet Security Adapter 0 s 808612291014805c 10/100 Netfinity 10/100 Ethernet Security Adapter 0 -s 808612291028009b PowerEdge 2550 0 +s 808612291028009b PowerEdge 2550 1 s 8086122910338000 PC-9821X-B06 0 s 8086122910338016 PK-UG-X006 0 s 808612291033801f PK-UG-X006 0 @@ -6421,7 +6344,6 @@ s 8086136180861361 82806AA PCI64 Hub Controller (HRes) 0 s 8086136180868000 82806AA PCI64 Hub Controller (HRes) 0 d 80861460 82870P2 P64H2 Hub PCI Bridge 0 d 80861461 82870P2 P64H2 I/OxAPIC 0 -s 8086146115d93480 P4DP6 1 d 80861462 82870P2 P64H2 Hot Plug Controller 0 d 80861960 80960RP [i960RP Microprocessor] 0 s 80861960101e0431 MegaRAID 431 RAID Controller 0 @@ -6473,27 +6395,21 @@ d 80862426 82801AB AC'97 Modem 0 d 80862428 82801AB PCI Bridge 0 d 80862440 82801BA ISA Bridge (LPC) 0 d 80862442 82801BA/BAM USB (Hub #1) 0 -s 80862442101401c6 Netvista A40/A40p 1 s 80862442104d80df Vaio PCG-FX403 0 s 80862442147b0507 TH7II-RAID 0 d 80862443 82801BA/BAM SMBus 0 -s 80862443101401c6 Netvista A40/A40p 1 -s 8086244310251016 Travelmate 612 TX 0 +d 80862443 1 s 8086244310438027 TUSL2-C Mainboard 0 s 80862443104d80df Vaio PCG-FX403 0 s 80862443147b0507 TH7II-RAID 0 d 80862444 82801BA/BAM USB (Hub #2) 0 -s 8086244410251016 Travelmate 612 TX 0 s 80862444104d80df Vaio PCG-FX403 0 s 80862444147b0507 TH7II-RAID 0 d 80862445 82801BA/BAM AC'97 Audio 0 -s 80862445101401c6 Netvista A40/A40p 1 -s 8086244510251016 Travelmate 612 TX 0 s 80862445104d80df Vaio PCG-FX403 0 s 8086244514623370 STAC9721 AC 0 s 80862445147b0507 TH7II-RAID 0 -d 80862446 Intel 537 [82801BA/BAM AC'97 Modem] 0 -s 8086244610251016 Travelmate 612 TX 0 +d 80862446 82801BA/BAM AC'97 Modem 0 s 80862446104d80df Vaio PCG-FX403 0 d 80862448 82801BAM/CAM PCI Bridge 0 d 80862449 82801BA/BAM/CA/CAM Ethernet Controller 0 @@ -6527,7 +6443,6 @@ d 8086244a 82801BAM IDE U100 0 s 8086244a10251016 Travelmate 612TX 0 s 8086244a104d80df Vaio PCG-FX403 0 d 8086244b 82801BA IDE U100 0 -s 8086244b101401c6 Netvista A40/A40p 1 s 8086244b10438027 TUSL2-C Mainboard 0 s 8086244b147b0507 TH7II-RAID 0 d 8086244c 82801BAM ISA Bridge (LPC) 0 @@ -6541,63 +6456,47 @@ d 8086245d 82801E Ethernet Controller 1 0 d 8086245e 82801E PCI Bridge 0 d 80862480 82801CA ISA Bridge (LPC) 0 d 80862482 82801CA/CAM USB (Hub #1) 0 -s 8086248210140220 ThinkPad A/T/X Series 0 +s 8086248210140220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 +s 8086248210140220 ThinkPad T23/A30p/T30 1 s 80862482104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 8086248215d93480 P4DP6 1 -s 8086248280861958 vpr Matrix 170B4 0 d 80862483 82801CA/CAM SMBus 0 -s 8086248310140220 ThinkPad A/T/X Series 0 +s 8086248310140220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 +s 8086248310140220 ThinkPad T23/A30p/T30 1 s 80862483104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 8086248315d93480 P4DP6 1 -s 8086248380861958 vpr Matrix 170B4 0 d 80862484 82801CA/CAM USB (Hub #2) 0 -s 8086248410140220 ThinkPad A/T/X Series 0 +s 8086248410140220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 +s 8086248410140220 ThinkPad T23/A30p/T30 1 s 80862484104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 8086248415d93480 P4DP6 1 -s 8086248480861958 vpr Matrix 170B4 0 d 80862485 82801CA/CAM AC'97 Audio 0 s 8086248510140222 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 -s 8086248510140508 ThinkPad T30 0 -s 808624851014051c ThinkPad A/T/X Series 0 +s 8086248510140508 ThinkPad T30 1 s 80862485104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 80862485144dc006 vpr Matrix 170B4 0 d 80862486 82801CA/CAM AC'97 Modem 0 -s 8086248610140223 ThinkPad A/T/X Series 0 +s 8086248610140223 ThinkPad A30p (2653-64G) 0 s 8086248610140503 ThinkPad R31 2656BBG 0 -s 808624861014051a ThinkPad A/T/X Series 0 +s 808624861014051a ThinkPad T30 1 s 80862486104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 s 80862486134d4c21 Dell Inspiron 2100 internal modem 0 -s 80862486144d2115 vpr Matrix 170B4 internal modem 0 -s 8086248614f15421 MD56ORD V.92 MDC Modem 0 +s 8086248614f15421 Actiontec MD56ORD V.92 MDC Modem 1 Dell Inspiron 4100 internal modem d 80862487 82801CA/CAM USB (Hub #3) 0 -s 8086248710140220 ThinkPad A/T/X Series 0 +s 8086248710140220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 +s 8086248710140220 ThinkPad T23/A30p/T30 1 s 80862487104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 8086248715d93480 P4DP6 1 -s 8086248780861958 vpr Matrix 170B4 0 d 8086248a 82801CAM IDE U100 0 -s 8086248a10140220 ThinkPad A/T/X Series 0 +s 8086248a10140220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 +s 8086248a10140220 ThinkPad T23/A30p/T30 1 s 8086248a104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 -s 8086248a80861958 vpr Matrix 170B4 0 d 8086248b 82801CA IDE U100 0 -s 8086248b15d93480 P4DP6 1 d 8086248c 82801CAM ISA Bridge (LPC) 0 d 808624c0 82801DB ISA Bridge (LPC) 0 -s 808624c014625800 845PE Max (MS-6580) 1 d 808624c2 82801DB USB (Hub #1) 0 -s 808624c214625800 845PE Max (MS-6580) 1 d 808624c3 82801DB SMBus 0 -s 808624c314625800 845PE Max (MS-6580) 1 d 808624c4 82801DB USB (Hub #2) 0 -s 808624c414625800 845PE Max (MS-6580) 1 d 808624c5 82801DB AC'97 Audio 0 -s 808624c514625800 845PE Max (MS-6580) 1 d 808624c6 82801DB AC'97 Modem 0 d 808624c7 82801DB USB (Hub #3) 0 -s 808624c714625800 845PE Max (MS-6580) 1 d 808624cb 82801DB ICH4 IDE 0 -s 808624cb14625800 845PE Max (MS-6580) 1 d 808624cd 82801DB USB EHCI Controller 0 -s 808624cd14623981 845PE Max (MS-6580) Onboard USB EHCI Controller 1 d 80862500 82820 820 (Camino) Chipset Host Bridge (MCH) 0 s 8086250010280095 Precision Workstation 220 Chipset 0 s 808625001043801c P3C-2000 system chipset 0 @@ -6614,9 +6513,7 @@ d 80862532 82850 850 (Tehama) Chipset AGP Bridge 0 d 80862533 82860 860 (Wombat) Chipset AGP Bridge 0 d 80862534 82860 860 (Wombat) Chipset PCI Bridge 0 d 80862540 e7500 [Plumas] DRAM Controller 0 -s 8086254015d93480 P4DP6 1 d 80862541 e7500 [Plumas] DRAM Controller Error Reporting 0 -s 8086254115d93480 P4DP6 1 d 80862543 e7500 [Plumas] HI_B Virtual PCI Bridge (F0) 0 d 80862544 e7500 [Plumas] HI_B Virtual PCI Bridge (F1) 0 d 80862545 e7500 [Plumas] HI_C Virtual PCI Bridge (F0) 0 @@ -6624,16 +6521,14 @@ d 80862546 e7500 [Plumas] HI_C Virtual PCI Bridge (F1) 0 d 80862547 e7500 [Plumas] HI_D Virtual PCI Bridge (F0) 0 d 80862548 e7500 [Plumas] HI_D Virtual PCI Bridge (F1) 0 d 80862560 82845G/GL [Brookdale-G] Chipset Host Bridge 0 -s 8086256014625800 845PE Max (MS-6580) 1 d 80862561 82845G/GL [Brookdale-G] Chipset AGP Bridge 0 d 80862562 82845G/GL [Brookdale-G] Chipset Integrated Graphics Device 0 d 80863092 Integrated RAID 0 d 80863575 82830 830 Chipset Host Bridge 0 -s 808635751014021d ThinkPad A/T/X Series 0 +s 808635751014021d ThinkPad T23 (2647-4MG) or A30p (2653-64G) 0 s 80863575104d80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 0 d 80863576 82830 830 Chipset AGP Bridge 0 d 80863577 82830 CGC [Chipset Graphics Controller] 0 -s 8086357710140513 ThinkPad A/T/X Series 0 d 80863578 82830 830 Chipset Host Bridge 0 d 80865200 EtherExpress PRO/100 Intelligent Server 0 d 80865201 EtherExpress PRO/100 Intelligent Server 0 @@ -6661,7 +6556,6 @@ d 80867180 440LX/EX - 82443LX/EX Host bridge 0 d 80867181 440LX/EX - 82443LX/EX AGP bridge 0 d 80867190 440BX/ZX/DX - 82443BX/ZX/DX Host bridge 0 s 808671900e110500 Armada 1750 Laptop System Chipset 0 -s 808671900e11b110 Armada M700 1 s 8086719011790001 Toshiba Tecra 8100 Laptop System Chipset 0 d 80867191 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge 0 d 80867192 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) 0 @@ -6857,18 +6751,15 @@ d 90050081 AIC-7892B U160/m 0 s 90050081900562a1 19160 Ultra160 SCSI Controller 0 d 90050083 AIC-7892D U160/m 0 d 9005008f AIC-7892P U160/m 0 -s 9005008f15d99005 Onboard SCSI Host Adapter 1 d 900500c0 AHA-3960D / AIC-7899A U160/m 0 s 900500c00e11f620 Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter 0 s 900500c09005f620 AHA-3960D U160/m 0 d 900500c1 AIC-7899B U160/m 0 d 900500c3 AIC-7899D U160/m 0 d 900500c5 RAID subsystem HBA 0 -s 900500c5102800c5 PowerEdge 2550 0 +s 900500c5102800c5 PowerEdge 2550 1 d 900500cf AIC-7899P U160/m 0 -s 900500cf102800d1 PowerEdge 2550 0 -s 900500cf10f12462 Thunder K7 S2462 1 -s 900500cf15d99005 Onboard SCSI Host Adapter 1 +s 900500cf102800d1 PowerEdge 2550 1 d 90050250 ServeRAID Controller 0 s 9005025010140279 ServeRAID-xx 0 s 900502501014028c ServeRAID-xx 0 @@ -6912,7 +6803,7 @@ v a727 3Com Corporation 0 v aa42 Scitex Digital Video 0 v ac1e Digital Receiver Technology Inc 0 v b1b3 Shiva Europe Limited 0 -v bd11 Pinnacle Systems, Inc. (Wrong ID) 0 Pinnacle should be 11bd, but they got it wrong several times --mj +v bd11 Pinnacle Systems 1 11bd is probably wrong v c001 TSI Telsys 0 v c0a9 Micron/Crucial Technology 0 v c0de Motorola 0 @@ -6922,7 +6813,7 @@ v cafe Chrysalis-ITS 0 v cccc Catapult Communications 0 v cddd Tyzx, Inc. 0 d cddd0101 DeepSea 1 High Speed Stereo Vision Frame Grabber 0 -d cddd0200 DeepSea 2 High Speed Stereo Vision Frame Grabber 0 +d cddd0200 DeepSea 2 High Speed Stereo Vision Frame Grabber 1 v d4d4 Dy4 Systems Inc 0 d d4d40601 PCI Mezzanine Card 0 v d531 I+ME ACTIA GmbH 0 @@ -6931,16 +6822,19 @@ v dead Indigita Corporation 0 v e000 Winbond 0 d e000e000 W89C940 0 v e159 Tiger Jet Network Inc. 0 -d e1590001 Intel 537 0 +d e1590001 Model 300 128k 0 s e159000100590001 128k ISDN-S/T Adapter 0 s e159000100590003 128k ISDN-U Adapter 0 d e1590002 Tiger100APC ISDN chipset 0 v e4bf EKF Elektronik GmbH 0 v ea01 Eagle Technology 0 -v ea60 RME 0 The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. -d ea609896 Digi32 0 -d ea609897 Digi32 Pro 0 -d ea609898 Digi32/8 0 +v ea60 RME 1 The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. +d ea609896 Digi32 1 +d ea609896 RME Digi32 1 +d ea609897 RME Digi32 Pro 1 +d ea609897 Digi32 Pro 1 +d ea609898 Digi32/8 1 +d ea609898 RME Digi32/8 1 v eabb Aashima Technology B.V. 0 v eace Endace Measurement Systems, Ltd 0 d eace3100 DAG 3.10 OC-3/OC-12 0 @@ -6956,28 +6850,22 @@ d eace4220 DAG 4.2 OC-48 0 d eace422e DAG 4.2E Dual Gigabit Ethernet 0 v ec80 Belkin Corporation 0 d ec80ec00 F5D6000 0 -v ecc0 Echo Digital Audio Corporation 0 -d ecc00050 Gina24_301 0 -d ecc00051 Gina24_361 0 -d ecc00060 Layla24 0 -d ecc00070 Mona_301_80 0 -d ecc00071 Mona_301_66 0 -d ecc00072 Mona_361 0 -d ecc00080 Mia 0 +v ecc0 Echo Corporation 0 v edd8 ARK Logic Inc 0 d edd8a091 1000PV [Stingray] 0 d edd8a099 2000PV [Stingray] 0 d edd8a0a1 2000MT 0 d edd8a0a9 2000MI 0 v f1d0 AJA Video 0 -d f1d0cafe KONA SD SMPTE 259M I/O 0 All boards I have seen have this ID not efac, though all docs say efac... +d f1d0cafe KONA SD SMPTE 259M I/O 1 All boards I have seen have this ID not efac, though all docs say efac... d f1d0efac KONA SD SMPTE 259M I/O 0 d f1d0facd KONA HD SMPTE 292M I/O 0 v fa57 Fast Search & Transfer ASA 0 v febd Ultraview Corp. 0 -v feda Broadcom Inc (nee Epigram) 0 -d fedaa0fa BCM4210 iLine10 HomePNA 2.0 0 -d fedaa10e BCM4230 iLine10 HomePNA 2.0 0 +v feda Epigram Inc 0 +v feda Epigram Inc (Broadcom Inc) 1 +d fedaa0fa BCM4210 iLine10 HomePNA 2.0 1 +d fedaa10e BCM4230 iLine10 HomePNA 2.0 1 v fffe VMWare Inc 0 d fffe0710 Virtual SVGA 0 v ffff Illegal Vendor ID 0 diff --git a/src/video_out/libdha/pci.c b/src/video_out/libdha/pci.c index b6281283a..1cc70b7aa 100644 --- a/src/video_out/libdha/pci.c +++ b/src/video_out/libdha/pci.c @@ -55,6 +55,11 @@ #include #include #include +#include +#include +#include +#include "kernelhelper/dhahelper.h" + #ifdef __unix__ #include #endif @@ -507,7 +512,7 @@ static void identify_card(struct pci_config_reg *pcr) } /*main(int argc, char *argv[])*/ -int pci_scan(pciinfo_t *pci_list,unsigned *num_pci) +static int __pci_scan(pciinfo_t *pci_list,unsigned *num_pci) { unsigned int idx; struct pci_config_reg pcr; @@ -704,11 +709,64 @@ int pci_scan(pciinfo_t *pci_list,unsigned *num_pci) #endif #endif +int pci_scan(pciinfo_t *pci_list,unsigned *num_pci) +{ + int libdha_fd; + if ( (libdha_fd = open("/dev/dhahelper",O_RDWR)) < 0) + { + return __pci_scan(pci_list,num_pci); + } + else + { + dhahelper_pci_device_t pci_dev; + unsigned idx; + idx = 0; + while(ioctl(libdha_fd, DHAHELPER_PCI_FIND, &pci_dev)==0) + { + pci_list[idx].bus = pci_dev.bus; + pci_list[idx].card = pci_dev.card; + pci_list[idx].func = pci_dev.func; + pci_list[idx].vendor = pci_dev.vendor; + pci_list[idx].device = pci_dev.device; + pci_list[idx].base0 = pci_dev.base0?pci_dev.base0:0xFFFFFFFF; + pci_list[idx].base1 = pci_dev.base1?pci_dev.base1:0xFFFFFFFF; + pci_list[idx].base2 = pci_dev.base2?pci_dev.base2:0xFFFFFFFF; + pci_list[idx].baserom = pci_dev.baserom?pci_dev.baserom:0x000C0000; + pci_list[idx].base3 = pci_dev.base3?pci_dev.base3:0xFFFFFFFF; + pci_list[idx].base4 = pci_dev.base4?pci_dev.base4:0xFFFFFFFF; + pci_list[idx].base5 = pci_dev.base5?pci_dev.base5:0xFFFFFFFF; + pci_list[idx].irq = pci_dev.irq; + pci_list[idx].ipin = pci_dev.ipin; + pci_list[idx].gnt = pci_dev.gnt; + pci_list[idx].lat = pci_dev.lat; + idx++; + } + *num_pci=idx; + close(libdha_fd); + } + return 0; +} + int pci_config_read(unsigned char bus, unsigned char dev, unsigned char func, unsigned char cmd, int len, unsigned long *val) { int ret; - + int dhahelper_fd; + if ( (dhahelper_fd = open("/dev/dhahelper",O_RDWR)) > 0) + { + int retval; + dhahelper_pci_config_t pcic; + pcic.operation = PCI_OP_READ; + pcic.bus = bus; + pcic.dev = dev; + pcic.func = func; + pcic.cmd = cmd; + pcic.size = len; + retval = ioctl(dhahelper_fd, DHAHELPER_PCI_CONFIG, &pcic); + close(dhahelper_fd); + *val = pcic.ret; + return retval; + } ret = enable_app_io(); if (ret != 0) return(ret); @@ -737,6 +795,22 @@ int pci_config_write(unsigned char bus, unsigned char dev, unsigned char func, { int ret; + int dhahelper_fd; + if ( (dhahelper_fd = open("/dev/dhahelper",O_RDWR)) > 0) + { + int retval; + dhahelper_pci_config_t pcic; + pcic.operation = PCI_OP_WRITE; + pcic.bus = bus; + pcic.dev = dev; + pcic.func = func; + pcic.cmd = cmd; + pcic.size = len; + pcic.ret = val; + retval = ioctl(dhahelper_fd, DHAHELPER_PCI_CONFIG, &pcic); + close(dhahelper_fd); + return retval; + } ret = enable_app_io(); if (ret != 0) return ret; diff --git a/src/video_out/libdha/sysdep/AsmMacros_powerpc.h b/src/video_out/libdha/sysdep/AsmMacros_powerpc.h index cf678c9b8..2169c96b4 100644 --- a/src/video_out/libdha/sysdep/AsmMacros_powerpc.h +++ b/src/video_out/libdha/sysdep/AsmMacros_powerpc.h @@ -56,7 +56,11 @@ static __inline__ unsigned long inl(short port) #define intr_enable() #else -#include "sysdep/AsmMacros_generic.h" + #ifdef linux + /*nothing*/ + #else + #include "sysdep/AsmMacros_generic.h" + #endif #endif #endif diff --git a/src/video_out/libdha/sysdep/pci_linux.c b/src/video_out/libdha/sysdep/pci_linux.c index 6c0d6b42a..1d2116da6 100644 --- a/src/video_out/libdha/sysdep/pci_linux.c +++ b/src/video_out/libdha/sysdep/pci_linux.c @@ -20,6 +20,10 @@ int dhahelper_initialized = 0; int dhahelper_fd = 0; #endif +#if defined(__sparc__) || defined(__powerpc__) +#define iopl(x) (0) +#endif + static __inline__ int enable_os_io(void) { #ifdef CONFIG_DHAHELPER diff --git a/src/video_out/libdha/sysdep/pci_powerpc.c b/src/video_out/libdha/sysdep/pci_powerpc.c index b2914d551..667b4db37 100644 --- a/src/video_out/libdha/sysdep/pci_powerpc.c +++ b/src/video_out/libdha/sysdep/pci_powerpc.c @@ -5,7 +5,6 @@ */ static int pci_config_type( void ) { return 1; } - #ifdef linux #include #include @@ -139,11 +138,8 @@ static void pci_config_write_long( val = bswap_32(val); sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev); fd = open(path,O_RDONLY|O_SYNC); - if (fd == -1) { - retval=0; - } - else pwrite(fd, &val, 4, cmd); if (fd > 0) { + pwrite(fd, &val, 4, cmd); close(fd); } } @@ -160,14 +156,10 @@ static void pci_config_write_word( val = bswap_16(val); sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev); fd = open(path,O_RDONLY|O_SYNC); - if (fd == -1) { - retval=0; - } - else pwrite(fd, &val, 2, cmd); if (fd > 0) { + pwrite(fd, &val, 2, cmd); close(fd); } - return retval; } static void pci_config_write_byte( @@ -181,14 +173,10 @@ static void pci_config_write_byte( int fd; sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev); fd = open(path,O_RDONLY|O_SYNC); - if (fd == -1) { - retval=0; - } - else pwrite(fd, &retval, 1, cmd); if (fd > 0) { + pwrite(fd, &val, 1, cmd); close(fd); } - return retval; } #else static long pci_config_read_long( diff --git a/src/video_out/libdha/test.c b/src/video_out/libdha/test.c index 6026927ba..857e739c6 100644 --- a/src/video_out/libdha/test.c +++ b/src/video_out/libdha/test.c @@ -3,6 +3,7 @@ #include #include #include +#include /* for __WORDSIZE */ int main( void ) { @@ -19,7 +20,11 @@ int main( void ) { printf(" Bus:card:func vend:dev base0 :base1 :base2 :baserom :irq:pin:gnt:lat\n"); for(i=0;i 32 + printf("%04X:%04X:%04X %04X:%04X %16X:%16X:%16X:%16X:%02X :%02X :%02X :%02X\n" +#else printf("%04X:%04X:%04X %04X:%04X %08X:%08X:%08X:%08X:%02X :%02X :%02X :%02X\n" +#endif ,lst[i].bus,lst[i].card,lst[i].func ,lst[i].vendor,lst[i].device ,lst[i].base0,lst[i].base1,lst[i].base2,lst[i].baserom diff --git a/src/video_out/vidix/drivers/mach64_vid.c b/src/video_out/vidix/drivers/mach64_vid.c index 746af5865..0f965234f 100644 --- a/src/video_out/vidix/drivers/mach64_vid.c +++ b/src/video_out/vidix/drivers/mach64_vid.c @@ -523,6 +523,7 @@ typedef struct saved_regs_s uint32_t overlay_graphics_key_clr; uint32_t overlay_graphics_key_msk; uint32_t overlay_key_cntl; + uint32_t bus_cntl; }saved_regs_t; static saved_regs_t savreg; @@ -534,6 +535,7 @@ static void save_regs( void ) savreg.overlay_graphics_key_clr = INREG(OVERLAY_GRAPHICS_KEY_CLR); savreg.overlay_graphics_key_msk = INREG(OVERLAY_GRAPHICS_KEY_MSK); savreg.overlay_key_cntl = INREG(OVERLAY_KEY_CNTL); + savreg.bus_cntl = INREG(BUS_CNTL); } static void restore_regs( void ) @@ -544,15 +546,16 @@ static void restore_regs( void ) OUTREG(OVERLAY_GRAPHICS_KEY_CLR,savreg.overlay_graphics_key_clr); OUTREG(OVERLAY_GRAPHICS_KEY_MSK,savreg.overlay_graphics_key_msk); OUTREG(OVERLAY_KEY_CNTL,savreg.overlay_key_cntl); + OUTREG(BUS_CNTL,savreg.bus_cntl|BUS_MASTER_DIS); } -static int forced_irq=UINT_MAX; +static int forced_irq=INT_MAX; static int can_use_irq=0; static int irq_installed=0; static void init_irq(void) { irq_installed=1; - if(forced_irq != UINT_MAX) pci_info.irq=forced_irq; + if(forced_irq != INT_MAX) pci_info.irq=forced_irq; if(hwirq_install(pci_info.bus,pci_info.card,pci_info.func, 2,CRTC_INT_CNTL,CRTC_BUSMASTER_EOL_INT) == 0) { @@ -976,6 +979,8 @@ for(i=0; i<32; i++){ tmp = config->offset.u; config->offset.u = config->offset.v; config->offset.v = tmp; + src_offset_u=config->offset.u; + src_offset_v=config->offset.v; } } else if(besr.fourcc == IMGFMT_YVU9) @@ -1326,7 +1331,7 @@ static int mach64_transfer_frame( unsigned long ba_dma_desc,int sync_mode ) { uint32_t crtc_int; mach64_wait_for_idle(); - mach64_fifo_wait(10); + mach64_fifo_wait(4); OUTREG(BUS_CNTL,(INREG(BUS_CNTL)|BUS_EXT_REG_EN)&(~BUS_MASTER_DIS)); crtc_int = INREG(CRTC_INT_CNTL); if(sync_mode && can_use_irq) OUTREG(CRTC_INT_CNTL,crtc_int|CRTC_BUSMASTER_EOL_INT|CRTC_BUSMASTER_EOL_INT_EN); @@ -1351,6 +1356,8 @@ int VIDIX_NAME(vixQueryDMAStatus)( void ) { int bm_off; unsigned crtc_int_cntl; + mach64_wait_for_idle(); + mach64_fifo_wait(2); crtc_int_cntl = INREG(CRTC_INT_CNTL); bm_off = crtc_int_cntl & CRTC_BUSMASTER_EOL_INT; // if(bm_off) OUTREG(CRTC_INT_CNTL,crtc_int_cntl | CRTC_BUSMASTER_EOL_INT); diff --git a/src/video_out/vidix/drivers/mga_vid.c b/src/video_out/vidix/drivers/mga_vid.c index 43eab455a..6e28ae4ce 100644 --- a/src/video_out/vidix/drivers/mga_vid.c +++ b/src/video_out/vidix/drivers/mga_vid.c @@ -1361,7 +1361,7 @@ int VIDIX_NAME(vixInit)(const char *args) } } - if (mga_verbose > 1) printf(MGA_MSG" hardware addresses: mmio: 0x%x, framebuffer: 0x%x\n", + if (mga_verbose > 1) printf(MGA_MSG" hardware addresses: mmio: 0x%lx, framebuffer: 0x%lx\n", pci_info.base1, pci_info.base0); mga_mmio_base = map_phys_mem(pci_info.base1,0x4000); diff --git a/src/video_out/vidix/drivers/pm3_vid.c b/src/video_out/vidix/drivers/pm3_vid.c index 20b35a14a..375e28b9c 100644 --- a/src/video_out/vidix/drivers/pm3_vid.c +++ b/src/video_out/vidix/drivers/pm3_vid.c @@ -1,7 +1,7 @@ /** Driver for 3DLabs GLINT R3 and Permedia3 chips. - Copyright (C) 2002 Måns Rullgård + Copyright (C) 2002, 2003 Måns Rullgård This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,6 +58,8 @@ static int pm3_vidmem = PM3_VIDMEM; static int pm3_blank = 0; static int pm3_dma = 0; +static int pm3_ckey_red, pm3_ckey_green, pm3_ckey_blue; + static u_int page_size; static vidix_capability_t pm3_cap = @@ -145,43 +147,57 @@ int VIDIX_NAME(vixProbe)(int verbose, int force) int VIDIX_NAME(vixInit)(const char *args) { - char *ac = strdup(args), *s, *opt; + if(args != NULL){ + char *ac = strdup(args), *s, *opt; - opt = strtok_r(ac, ",", &s); - while(opt){ - char *a = strchr(opt, '='); + opt = strtok_r(ac, ",", &s); + while(opt){ + char *a = strchr(opt, '='); - if(a) - *a++ = 0; - if(!strcmp(opt, "mem")){ if(a) - pm3_vidmem = strtol(a, NULL, 0); - } else if(!strcmp(opt, "blank")){ - pm3_blank = a? strtol(a, NULL, 0): 1; + *a++ = 0; + if(!strcmp(opt, "mem")){ + if(a) + pm3_vidmem = strtol(a, NULL, 0); + } else if(!strcmp(opt, "blank")){ + pm3_blank = a? strtol(a, NULL, 0): 1; + } + + opt = strtok_r(NULL, ",", &s); } - opt = strtok_r(NULL, ",", &s); + free(ac); } - free(ac); - pm3_reg_base = map_phys_mem(pci_info.base0, 0x20000); pm3_mem = map_phys_mem(pci_info.base1, 0x2000000); if(bm_open() == 0){ - printf(PM3_MSG" Using DMA.\n"); - pm3_cap.flags |= FLAG_DMA; + fprintf(stderr, PM3_MSG" DMA available.\n"); + pm3_cap.flags |= FLAG_DMA | FLAG_SYNC_DMA; page_size = sysconf(_SC_PAGESIZE); hwirq_install(pci_info.bus, pci_info.card, pci_info.func, 0, PM3IntFlags, -1); + WRITE_REG(PM3IntEnable, (1 << 7)); pm3_dma = 1; } + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyR, pm3_ckey_red); + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyG, pm3_ckey_green); + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyB, pm3_ckey_blue); + return 0; } void VIDIX_NAME(vixDestroy)(void) { + if(pm3_dma) + WRITE_REG(PM3IntEnable, 0); + + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyR, pm3_ckey_red); + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyG, pm3_ckey_green); + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyB, pm3_ckey_blue); + unmap_phys_mem(pm3_reg_base, 0x20000); unmap_phys_mem(pm3_mem, 0x2000000); hwirq_uninstall(pci_info.bus, pci_info.card, pci_info.func); @@ -222,7 +238,8 @@ int VIDIX_NAME(vixQueryFourcc)(vidix_fourcc_t *to) } static int frames[VID_PLAY_MAXFRAMES], vid_base; -static long overlay_mode, overlay_control, video_control, int_enable; +static int overlay_mode, overlay_control, video_control, int_enable; +static int rdoverlay_mode; static int src_w, drw_w; static int src_h, drw_h; static int drw_x, drw_y; @@ -289,6 +306,7 @@ pm3_setup_overlay(vidix_playback_t *info) compute_scale_factor(&sw, &drw_w, &shrink, &zoom); + WAIT_FIFO(9); WRITE_REG(PM3VideoOverlayBase0, vid_base >> 1); WRITE_REG(PM3VideoOverlayStride, PM3VideoOverlayStride_STRIDE(src_w)); WRITE_REG(PM3VideoOverlayWidth, PM3VideoOverlayWidth_WIDTH(sw)); @@ -326,10 +344,6 @@ pm3_setup_overlay(vidix_playback_t *info) RAMDAC_SET_REG(PM3RD_VideoOverlayYEndHigh, ((drw_y+drw_h) & 0xf00)>>8); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyR, 0xff); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyG, 0x00); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyB, 0xff); - overlay_mode = 1 << 5 | format | @@ -339,11 +353,37 @@ pm3_setup_overlay(vidix_playback_t *info) overlay_control = PM3RD_VideoOverlayControl_KEY_COLOR | - PM3RD_VideoOverlayControl_MODE_ALWAYS | PM3RD_VideoOverlayControl_DIRECTCOLOR_ENABLED; } -int VIDIX_NAME(vixConfigPlayback)(vidix_playback_t *info) +extern int +VIDIX_NAME(vixSetGrKeys)(const vidix_grkey_t *key) +{ + if(key->ckey.op == CKEY_TRUE){ + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyR, key->ckey.red); + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyG, key->ckey.green); + RAMDAC_SET_REG(PM3RD_VideoOverlayKeyB, key->ckey.blue); + rdoverlay_mode = PM3RD_VideoOverlayControl_MODE_MAINKEY; + } else { + rdoverlay_mode = PM3RD_VideoOverlayControl_MODE_ALWAYS; + } + RAMDAC_SET_REG(PM3RD_VideoOverlayControl, + overlay_control | rdoverlay_mode); + + return 0; +} + +extern int +VIDIX_NAME(vixGetGrKeys)(vidix_grkey_t *key) +{ + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyR, key->ckey.red); + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyG, key->ckey.green); + RAMDAC_GET_REG(PM3RD_VideoOverlayKeyB, key->ckey.blue); + return 0; +} + +extern int +VIDIX_NAME(vixConfigPlayback)(vidix_playback_t *info) { unsigned int i; u_int frame_size; @@ -403,10 +443,10 @@ int VIDIX_NAME(vixPlaybackOn)(void) WRITE_REG(PM3VideoOverlayMode, overlay_mode | PM3VideoOverlayMode_ENABLE); + overlay_control |= PM3RD_VideoOverlayControl_ENABLE; RAMDAC_SET_REG(PM3RD_VideoOverlayControl, - overlay_control | PM3RD_VideoOverlayControl_ENABLE); - WRITE_REG(PM3VideoOverlayUpdate, - PM3VideoOverlayUpdate_ENABLE); + overlay_control | rdoverlay_mode); + WRITE_REG(PM3VideoOverlayUpdate, PM3VideoOverlayUpdate_ENABLE); if(pm3_blank) WRITE_REG(PM3VideoControl, @@ -418,20 +458,15 @@ int VIDIX_NAME(vixPlaybackOn)(void) int VIDIX_NAME(vixPlaybackOff)(void) { + overlay_control &= ~PM3RD_VideoOverlayControl_ENABLE; RAMDAC_SET_REG(PM3RD_VideoOverlayControl, PM3RD_VideoOverlayControl_DISABLE); WRITE_REG(PM3VideoOverlayMode, PM3VideoOverlayMode_DISABLE); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyR, 0x01); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyG, 0x01); - RAMDAC_SET_REG(PM3RD_VideoOverlayKeyB, 0xfe); - if(video_control) - WRITE_REG(PM3VideoControl, video_control); - - if(pm3_dma) - WRITE_REG(PM3IntEnable, 0); + WRITE_REG(PM3VideoControl, + video_control & ~PM3VideoControl_DISPLAY_ENABLE); return 0; } @@ -457,11 +492,10 @@ struct pm3_bydma_frame { }; static struct pm3_bydma_frame * -pm3_setup_bydma(vidix_dma_t *dma) +pm3_setup_bydma(vidix_dma_t *dma, struct pm3_bydma_frame *bdf) { u_int size = dma->size; u_int pages = (size + page_size-1) / page_size; - struct pm3_bydma_frame *bdf; long baddr[pages]; u_int i; uint32_t dest; @@ -469,8 +503,13 @@ pm3_setup_bydma(vidix_dma_t *dma) if(bm_virt_to_bus(dma->src, dma->size, baddr)) return NULL; - bdf = malloc(sizeof(*bdf)); - bdf->cmds = valloc(pages * sizeof(struct pm3_bydma_cmd)); + if(!bdf){ + bdf = malloc(sizeof(*bdf)); + bdf->cmds = valloc(pages * sizeof(struct pm3_bydma_cmd)); + if(dma->flags & BM_DMA_FIXED_BUFFS){ + mlock(bdf->cmds, page_size); + } + } dest = vid_base + dma->dest_offset; for(i = 0; i < pages; i++, dest += page_size, size -= page_size){ @@ -496,27 +535,19 @@ VIDIX_NAME(vixPlaybackCopyFrame)(vidix_dma_t *dma) { u_int frame = dma->idx; struct pm3_bydma_frame *bdf; + static int s = 0; - if(dma->internal[frame]){ - bdf = dma->internal[frame]; - } else { - if(!(bdf = pm3_setup_bydma(dma))){ - return -1; - } else if(dma->flags & BM_DMA_FIXED_BUFFS){ - if(mlock(bdf->cmds, page_size) == 0){ - dma->internal[frame] = bdf; - } else { - printf(PM3_MSG" Can't lock page @ %p\n", bdf->cmds); - } - } - } + bdf = dma->internal[frame]; + if(!bdf || !(dma->flags & BM_DMA_FIXED_BUFFS)) + bdf = pm3_setup_bydma(dma, bdf); + if(!bdf) + return -1; + + if(!dma->internal[frame]) + dma->internal[frame] = bdf; if(dma->flags & BM_DMA_SYNC){ - WRITE_REG(PM3IntEnable, (1 << 7)); - while(READ_REG(PM3ByDMAReadMode) & PM3ByDMAReadMode_Active){ - hwirq_wait(pci_info.irq); - } - WRITE_REG(PM3IntEnable, 0); + hwirq_wait(pci_info.irq); } WAIT_FIFO(3); @@ -530,6 +561,10 @@ VIDIX_NAME(vixPlaybackCopyFrame)(vidix_dma_t *dma) PM3ByDMAReadMode_Burst(7) | PM3ByDMAReadMode_Align); + if(dma->flags & BM_DMA_BLOCK){ + hwirq_wait(pci_info.irq); + } + return 0; } diff --git a/src/video_out/vidix/drivers/radeon_vid.c b/src/video_out/vidix/drivers/radeon_vid.c index 528f513e2..d53e1acf7 100644 --- a/src/video_out/vidix/drivers/radeon_vid.c +++ b/src/video_out/vidix/drivers/radeon_vid.c @@ -26,7 +26,7 @@ #define X_ADJUST 0 #else #define RADEON_MSG "radeon_vid:" -#define X_ADJUST (is_shift_required ? 8 : 0) +#define X_ADJUST (((besr.chip_flags&R_OVL_SHIFT)==R_OVL_SHIFT)?8:0) #ifndef RADEON #define RADEON #endif @@ -60,9 +60,6 @@ typedef struct #define VERBOSE_LEVEL 0 static int __verbose = 0; -#ifndef RAGE128 -static int is_shift_required=0; -#endif typedef struct bes_registers_s { /* base address of yuv framebuffer */ @@ -117,7 +114,7 @@ typedef struct bes_registers_s int deinterlace_on; uint32_t deinterlace_pattern; - + unsigned chip_flags; } bes_registers_t; typedef struct video_registers_s @@ -128,9 +125,6 @@ typedef struct video_registers_s }video_registers_t; static bes_registers_t besr; -#ifndef RAGE128 -static int RadeonFamily=100; -#endif #define DECLARE_VREG(name) { #name, name, 0 } static video_registers_t vregs[] = { @@ -263,6 +257,163 @@ static video_registers_t vregs[] = #endif }; +#define R_FAMILY 0x000000FF +#define R_100 0x00000001 +#define R_120 0x00000002 +#define R_150 0x00000003 +#define R_200 0x00000004 +#define R_250 0x00000005 +#define R_280 0x00000006 +#define R_300 0x00000007 +#define R_350 0x00000008 +#define R_OVL_SHIFT 0x00000100 +#define R_INTEGRATED 0x00000200 + +typedef struct ati_card_ids_s +{ + unsigned short id; + unsigned flags; +}ati_card_ids_t; + +static const ati_card_ids_t ati_card_ids[] = +{ +#ifdef RAGE128 + /* + This driver should be compatible with Rage128 (pro) chips. + (include adaptive deinterlacing!!!). + Moreover: the same logic can be used with Mach64 chips. + (I mean: mach64xx, 3d rage, 3d rage IIc, 3D rage pro, 3d rage mobility). + but they are incompatible by i/o ports. So if enthusiasts will want + then they can redefine OUTREG and INREG macros and redefine OV0_* + constants. Also it seems that mach64 chips supports only: YUY2, YV12, UYVY + fourccs (422 and 420 formats only). + */ +/* Rage128 Pro GL */ + { DEVICE_ATI_RAGE_128_PA_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PB_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PC_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PD_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PE_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PF_PRO, 0 }, +/* Rage128 Pro VR */ + { DEVICE_ATI_RAGE_128_PG_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PH_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PI_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PJ_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PK_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PL_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PM_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PN_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PO_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PP_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PQ_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PR_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PS_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PT_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PU_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PV_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PW_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PX_PRO, 0 }, +/* Rage128 GL */ + { DEVICE_ATI_RAGE_128_RE_SG, 0 }, + { DEVICE_ATI_RAGE_128_RF_SG, 0 }, + { DEVICE_ATI_RAGE_128_RG, 0 }, + { DEVICE_ATI_RAGE_128_RK_VR, 0 }, + { DEVICE_ATI_RAGE_128_RL_VR, 0 }, + { DEVICE_ATI_RAGE_128_SE_4X, 0 }, + { DEVICE_ATI_RAGE_128_SF_4X, 0 }, + { DEVICE_ATI_RAGE_128_SG_4X, 0 }, + { DEVICE_ATI_RAGE_128_SH, 0 }, + { DEVICE_ATI_RAGE_128_SK_4X, 0 }, + { DEVICE_ATI_RAGE_128_SL_4X, 0 }, + { DEVICE_ATI_RAGE_128_SM_4X, 0 }, + { DEVICE_ATI_RAGE_128_4X, 0 }, + { DEVICE_ATI_RAGE_128_PRO, 0 }, + { DEVICE_ATI_RAGE_128_PRO2, 0 }, + { DEVICE_ATI_RAGE_128_PRO3, 0 }, +/* these seem to be based on rage 128 instead of mach64 */ + { DEVICE_ATI_RAGE_MOBILITY_M3, 0 }, + { DEVICE_ATI_RAGE_MOBILITY_M32, 0 }, +#else +/* Radeon1 (indeed: Rage 256 Pro ;) */ + { DEVICE_ATI_RADEON_R100_QD, R_100|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_R100_QE, R_100|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_R100_QF, R_100|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_R100_QG, R_100|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RS100_IGP320, R_150|R_OVL_SHIFT|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS100_MOBILITY, R_150|R_OVL_SHIFT|R_INTEGRATED }, + { DEVICE_ATI_RADEON_VE_QY, R_120|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_VE_QZ, R_120|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_MOBILITY_M7, R_150|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_MOBILITY_M72, R_150|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_MOBILITY_M6, R_120|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_MOBILITY_M62, R_120|R_OVL_SHIFT }, +/* Radeon2 (indeed: Rage 512 Pro ;) */ + { DEVICE_ATI_RADEON_R200_BB, R_200 }, + { DEVICE_ATI_RADEON_R200_QH, R_200 }, + { DEVICE_ATI_RADEON_R200_QI, R_200 }, + { DEVICE_ATI_RADEON_R200_QJ, R_200 }, + { DEVICE_ATI_RADEON_R200_QK, R_200 }, + { DEVICE_ATI_RADEON_R200_QL, R_200 }, + { DEVICE_ATI_RADEON_R200_QM, R_200 }, + { DEVICE_ATI_RADEON_R200_QN, R_200 }, + { DEVICE_ATI_RADEON_R200_QO, R_200 }, + { DEVICE_ATI_RADEON_R200_QH2, R_200 }, + { DEVICE_ATI_RADEON_R200_QI2, R_200 }, + { DEVICE_ATI_RADEON_R200_QJ2, R_200 }, + { DEVICE_ATI_RADEON_R200_QK2, R_200 }, + { DEVICE_ATI_RADEON_R200_QL2, R_200 }, + { DEVICE_ATI_RADEON_RV200_QW, R_150|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV200_QX, R_150|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RS200_IGP330_340_350,R_200|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS200_MOBILITY, R_200|R_INTEGRATED }, + { DEVICE_ATI_RADEON_R250_IG, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RS250_7000, R_250|R_OVL_SHIFT|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS250_MOBILITY, R_250|R_OVL_SHIFT|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RV250_ID, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_IE, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_IF, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_IG, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_LD, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_LE, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_LF, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV250_LG, R_250|R_OVL_SHIFT }, + { DEVICE_ATI_RADEON_RV280_9200, R_280 }, + { DEVICE_ATI_RADEON_RV280_92002, R_280 }, + { DEVICE_ATI_RADEON_RV280_92003, R_280 }, + { DEVICE_ATI_RADEON_RV280_92004, R_280 }, + { DEVICE_ATI_RADEON_RV280_M9, R_280 }, + { DEVICE_ATI_RADEON_RV280_M92, R_280 }, + { DEVICE_ATI_RADEON_RV280_M93, R_280 }, + { DEVICE_ATI_RADEON_RV280_M94, R_280 }, +/* Radeon3 (indeed: Rage 1024 Pro ;) */ + { DEVICE_ATI_RADEON_R300, R_300 }, + { DEVICE_ATI_RADEON_R300_ND, R_300 }, + { DEVICE_ATI_RADEON_R300_NE, R_300 }, + { DEVICE_ATI_RADEON_R300_NF, R_300 }, + { DEVICE_ATI_RADEON_R300_NG, R_300 }, + { DEVICE_ATI_RADEON_RV300_9500, R_300 }, + { DEVICE_ATI_RADEON_RV300_95002, R_300 }, + { DEVICE_ATI_RADEON_RV300_95003, R_300 }, + { DEVICE_ATI_RADEON_RS300_9000, R_300|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS300_MOBILITY, R_300|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS300_5836, R_300|R_INTEGRATED }, + { DEVICE_ATI_RADEON_RS300_5837, R_300|R_INTEGRATED }, + { DEVICE_ATI_RADEON_R350, R_350 }, + { DEVICE_ATI_RADEON_R3502, R_350 }, + { DEVICE_ATI_RADEON_R3503, R_350 }, + { DEVICE_ATI_RADEON_R3504, R_350 }, + { DEVICE_ATI_RADEON_R350_NH, R_350 }, + { DEVICE_ATI_RADEON_R350_NI, R_350 }, + { DEVICE_ATI_RADEON_R350_NJ, R_350 }, + { DEVICE_ATI_RADEON_R350_NK, R_350 }, + { DEVICE_ATI_RADEON_RV350_9600, R_350 }, + { DEVICE_ATI_RADEON_RV350_9600PRO, R_350 }, + { DEVICE_ATI_RADEON_RV350_NP, R_350 } +#endif +}; + + static void * radeon_mmio_base = 0; static void * radeon_mem_base = 0; static int32_t radeon_overlay_off = 0; @@ -765,7 +916,9 @@ GAMMA_SETTINGS r100_def_gamma[6] = static void make_default_gamma_correction( void ) { size_t i; - if(RadeonFamily == 100){ + if((besr.chip_flags & R_100)==R_100|| + (besr.chip_flags & R_120)==R_120|| + (besr.chip_flags & R_150)==R_150){ OUTREG(OV0_LIN_TRANS_A, 0x12A00000); OUTREG(OV0_LIN_TRANS_B, 0x199018FE); OUTREG(OV0_LIN_TRANS_C, 0x12A0F9B0); @@ -818,110 +971,13 @@ static void radeon_vid_make_default(void) unsigned VIDIX_NAME(vixGetVersion)( void ) { return VIDIX_VERSION; } -static unsigned short ati_card_ids[] = -{ -#ifdef RAGE128 - /* - This driver should be compatible with Rage128 (pro) chips. - (include adaptive deinterlacing!!!). - Moreover: the same logic can be used with Mach64 chips. - (I mean: mach64xx, 3d rage, 3d rage IIc, 3D rage pro, 3d rage mobility). - but they are incompatible by i/o ports. So if enthusiasts will want - then they can redefine OUTREG and INREG macros and redefine OV0_* - constants. Also it seems that mach64 chips supports only: YUY2, YV12, UYVY - fourccs (422 and 420 formats only). - */ -/* Rage128 Pro GL */ - DEVICE_ATI_RAGE_128_PA_PRO, - DEVICE_ATI_RAGE_128_PB_PRO, - DEVICE_ATI_RAGE_128_PC_PRO, - DEVICE_ATI_RAGE_128_PD_PRO, - DEVICE_ATI_RAGE_128_PE_PRO, - DEVICE_ATI_RAGE_128_PF_PRO, -/* Rage128 Pro VR */ - DEVICE_ATI_RAGE_128_PG_PRO, - DEVICE_ATI_RAGE_128_PH_PRO, - DEVICE_ATI_RAGE_128_PI_PRO, - DEVICE_ATI_RAGE_128_PJ_PRO, - DEVICE_ATI_RAGE_128_PK_PRO, - DEVICE_ATI_RAGE_128_PL_PRO, - DEVICE_ATI_RAGE_128_PM_PRO, - DEVICE_ATI_RAGE_128_PN_PRO, - DEVICE_ATI_RAGE_128_PO_PRO, - DEVICE_ATI_RAGE_128_PP_PRO, - DEVICE_ATI_RAGE_128_PQ_PRO, - DEVICE_ATI_RAGE_128_PR_PRO, - DEVICE_ATI_RAGE_128_PS_PRO, - DEVICE_ATI_RAGE_128_PT_PRO, - DEVICE_ATI_RAGE_128_PU_PRO, - DEVICE_ATI_RAGE_128_PV_PRO, - DEVICE_ATI_RAGE_128_PW_PRO, - DEVICE_ATI_RAGE_128_PX_PRO, -/* Rage128 GL */ - DEVICE_ATI_RAGE_128_RE_SG, - DEVICE_ATI_RAGE_128_RF_SG, - DEVICE_ATI_RAGE_128_RG, - DEVICE_ATI_RAGE_128_RK_VR, - DEVICE_ATI_RAGE_128_RL_VR, - DEVICE_ATI_RAGE_128_SE_4X, - DEVICE_ATI_RAGE_128_SF_4X, - DEVICE_ATI_RAGE_128_SG_4X, - DEVICE_ATI_RAGE_128_SH, - DEVICE_ATI_RAGE_128_SK_4X, - DEVICE_ATI_RAGE_128_SL_4X, - DEVICE_ATI_RAGE_128_SM_4X, - DEVICE_ATI_RAGE_128_4X, - DEVICE_ATI_RAGE_128_PRO, - DEVICE_ATI_RAGE_128_PRO2, - DEVICE_ATI_RAGE_128_PRO3, -/* these seem to be based on rage 128 instead of mach64 */ - DEVICE_ATI_RAGE_MOBILITY_M3, - DEVICE_ATI_RAGE_MOBILITY_M32 -#else -/* Radeons (indeed: Rage 256 Pro ;) */ - DEVICE_ATI_RADEON_R100_QD, - DEVICE_ATI_RADEON_R100_QE, - DEVICE_ATI_RADEON_R100_QF, - DEVICE_ATI_RADEON_R100_QG, - DEVICE_ATI_RADEON_VE_QY, - DEVICE_ATI_RADEON_VE_QZ, - DEVICE_ATI_RADEON_MOBILITY_M7, - DEVICE_ATI_RADEON_MOBILITY_M72, - DEVICE_ATI_RADEON_MOBILITY_M6, - DEVICE_ATI_RADEON_MOBILITY_M62, - DEVICE_ATI_RADEON_R200_BB, - DEVICE_ATI_RADEON_R200_QH, - DEVICE_ATI_RADEON_R200_QI, - DEVICE_ATI_RADEON_R200_QJ, - DEVICE_ATI_RADEON_R200_QK, - DEVICE_ATI_RADEON_R200_QL, - DEVICE_ATI_RADEON_R200_QH2, - DEVICE_ATI_RADEON_R200_QI2, - DEVICE_ATI_RADEON_R200_QJ2, - DEVICE_ATI_RADEON_R200_QK2, - DEVICE_ATI_RADEON_RV200_QW, - DEVICE_ATI_RADEON_RV200_QX, - DEVICE_ATI_RADEON_R250_ID, - DEVICE_ATI_RADEON_R250_IE, - DEVICE_ATI_RADEON_R250_IF, - DEVICE_ATI_RADEON_R250_IG, - DEVICE_ATI_RADEON_R250_LD, - DEVICE_ATI_RADEON_R250_LE, - DEVICE_ATI_RADEON_R250_LF, - DEVICE_ATI_RADEON_R250_LG, - DEVICE_ATI_RADEON_R300_ND, - DEVICE_ATI_RADEON_R300_NE, - DEVICE_ATI_RADEON_R300_NF, - DEVICE_ATI_RADEON_R300_NG -#endif -}; static int find_chip(unsigned chip_id) { unsigned i; for(i = 0;i < sizeof(ati_card_ids)/sizeof(unsigned short);i++) { - if(chip_id == ati_card_ids[i]) return i; + if(chip_id == ati_card_ids[i].id) return i; } return -1; } @@ -977,72 +1033,7 @@ int VIDIX_NAME(vixProbe)( int verbose,int force ) dname = pci_device_name(VENDOR_ATI,lst[i].device); dname = dname ? dname : "Unknown chip"; printf(RADEON_MSG" Found chip: %s\n",dname); -#ifndef RAGE128 - if(idx != -1) - { - switch(ati_card_ids[idx]) { - /* Original radeon */ - case DEVICE_ATI_RADEON_R100_QD: - case DEVICE_ATI_RADEON_R100_QE: - case DEVICE_ATI_RADEON_R100_QF: - case DEVICE_ATI_RADEON_R100_QG: - RadeonFamily = 100; - break; - - /* Radeon VE / Radeon Mobility */ - case DEVICE_ATI_RADEON_VE_QY: - case DEVICE_ATI_RADEON_VE_QZ: - case DEVICE_ATI_RADEON_MOBILITY_M6: - case DEVICE_ATI_RADEON_MOBILITY_M62: - RadeonFamily = 120; - break; - - /* Radeon 7500 / Radeon Mobility 7500 */ - case DEVICE_ATI_RADEON_RV200_QW: - case DEVICE_ATI_RADEON_RV200_QX: - case DEVICE_ATI_RADEON_MOBILITY_M7: - case DEVICE_ATI_RADEON_MOBILITY_M72: - RadeonFamily = 150; - break; - - /* Radeon 8500 */ - case DEVICE_ATI_RADEON_R200_BB: - case DEVICE_ATI_RADEON_R200_QH: - case DEVICE_ATI_RADEON_R200_QI: - case DEVICE_ATI_RADEON_R200_QJ: - case DEVICE_ATI_RADEON_R200_QK: - case DEVICE_ATI_RADEON_R200_QL: - case DEVICE_ATI_RADEON_R200_QH2: - case DEVICE_ATI_RADEON_R200_QI2: - case DEVICE_ATI_RADEON_R200_QJ2: - case DEVICE_ATI_RADEON_R200_QK2: - RadeonFamily = 200; - break; - - /* Radeon 9000 */ - case DEVICE_ATI_RADEON_R250_ID: - case DEVICE_ATI_RADEON_R250_IE: - case DEVICE_ATI_RADEON_R250_IF: - case DEVICE_ATI_RADEON_R250_IG: - case DEVICE_ATI_RADEON_R250_LD: - case DEVICE_ATI_RADEON_R250_LE: - case DEVICE_ATI_RADEON_R250_LF: - case DEVICE_ATI_RADEON_R250_LG: - RadeonFamily = 250; - break; - - /* Radeon 9700 */ - case DEVICE_ATI_RADEON_R300_ND: - case DEVICE_ATI_RADEON_R300_NE: - case DEVICE_ATI_RADEON_R300_NF: - case DEVICE_ATI_RADEON_R300_NG: - RadeonFamily = 300; - break; - default: - break; - } - } -#endif + memset(&besr,0,sizeof(bes_registers_t)); if(force > PROBE_NORMAL) { printf(RADEON_MSG" Driver was forced. Was found %sknown chip\n",idx == -1 ? "un" : ""); @@ -1052,7 +1043,9 @@ int VIDIX_NAME(vixProbe)( int verbose,int force ) #else printf(RADEON_MSG" Assuming it as Radeon1\n"); #endif + besr.chip_flags=R_100|R_OVL_SHIFT; } + if(idx != -1) besr.chip_flags=ati_card_ids[idx].flags; def_cap.device_id = lst[i].device; err = 0; memcpy(&pci_info,&lst[i],sizeof(pciinfo_t)); @@ -1206,7 +1199,6 @@ int VIDIX_NAME(vixInit)( const char *args ) } #endif if((radeon_mem_base = map_phys_mem(pci_info.base0,radeon_ram_size))==(void *)-1) return ENOMEM; - memset(&besr,0,sizeof(bes_registers_t)); radeon_vid_make_default(); printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB); @@ -1214,19 +1206,8 @@ int VIDIX_NAME(vixInit)( const char *args ) #ifndef RAGE128 { memset(&rinfo,0,sizeof(rinfo_t)); - if(RadeonFamily > 100) rinfo.hasCRTC2 = 1; + if((besr.chip_flags&R_100) != R_100) rinfo.hasCRTC2 = 1; - switch(RadeonFamily) - { - case 100: - case 120: - case 150: - case 250: - is_shift_required=1; - break; - default: - break; - } radeon_get_moninfo(&rinfo); if(rinfo.hasCRTC2) { printf(RADEON_MSG" DVI port has %s monitor connected\n",GET_MON_NAME(rinfo.dviDispType)); @@ -2713,6 +2694,11 @@ static int radeon_vid_init_video( vidix_playback_t *config ) if(radeon_is_interlace()) interlace_factor = 2; else interlace_factor = 1; /* TODO: must be checked in doublescan mode!!! */ + if((besr.chip_flags&R_INTEGRATED)==R_INTEGRATED) + { + /* Force the overlay clock on for integrated chips */ + OUTPLL(VCLK_ECP_CNTL, (INPLL(VCLK_ECP_CNTL) | (1<<18))); + } horz_repl_factor = 1 << (uint32_t)((INPLL(VCLK_ECP_CNTL) & 0x300) >> 8); H_scale_ratio = (double)ceil(((double)dest_w+1)/horz_repl_factor)/src_w; V_scale_ratio = (double)(dest_h+1)/src_h; @@ -3244,8 +3230,8 @@ static void set_gr_key( void ) besr.graphics_key_msk=(1< driver. Destinition offset within of video memory */ unsigned size; /* app -> driver. Size of transaction */ #define BM_DMA_ASYNC 0 -#define BM_DMA_SYNC 1 /* means: wait dma transfer completion */ +#define BM_DMA_SYNC 1 /* await previous dma transfer completion */ #define BM_DMA_FIXED_BUFFS 2 /* app -> driver: app uses buffers which are fixed in memory */ +#define BM_DMA_BLOCK 4 /* block until the transfer is complete */ unsigned flags; /* app -> driver */ unsigned idx; /* app -> driver: idx of src buffer */ void * internal[VID_PLAY_MAXFRAMES]; /* for internal use by driver */ diff --git a/src/video_out/vidix/vidixlib.c b/src/video_out/vidix/vidixlib.c index e43a68088..a513c9811 100644 --- a/src/video_out/vidix/vidixlib.c +++ b/src/video_out/vidix/vidixlib.c @@ -386,3 +386,95 @@ int vdlSetOemEffect(VDL_HANDLE handle, const vidix_oem_fx_t * f) { return t_vdl(handle)->set_fx ? t_vdl(handle)->set_fx(f) : ENOSYS; } + +/* ABI related extensions */ +vidix_capability_t * vdlAllocCapabilityS( void ) +{ + vidix_capability_t *retval; + retval=malloc(sizeof(vidix_capability_t)); + if(retval) memset(retval,0,sizeof(vidix_capability_t)); + return retval; +} + +vidix_fourcc_t * vdlAllocFourccS( void ) +{ + vidix_fourcc_t *retval; + retval=malloc(sizeof(vidix_fourcc_t)); + if(retval) memset(retval,0,sizeof(vidix_fourcc_t)); + return retval; +} + +vidix_yuv_t * vdlAllocYUVS( void ) +{ + vidix_yuv_t *retval; + retval=malloc(sizeof(vidix_yuv_t)); + if(retval) memset(retval,0,sizeof(vidix_yuv_t)); + return retval; +} + +vidix_rect_t * vdlAllocRectS( void ) +{ + vidix_rect_t *retval; + retval=malloc(sizeof(vidix_rect_t)); + if(retval) memset(retval,0,sizeof(vidix_rect_t)); + return retval; +} + +vidix_playback_t * vdlAllocPlaybackS( void ) +{ + vidix_playback_t *retval; + retval=malloc(sizeof(vidix_playback_t)); + if(retval) memset(retval,0,sizeof(vidix_playback_t)); + return retval; +} + +vidix_grkey_t * vdlAllocGrKeyS( void ) +{ + vidix_grkey_t *retval; + retval=malloc(sizeof(vidix_grkey_t)); + if(retval) memset(retval,0,sizeof(vidix_grkey_t)); + return retval; +} + +vidix_video_eq_t * vdlAllocVideoEqS( void ) +{ + vidix_video_eq_t *retval; + retval=malloc(sizeof(vidix_video_eq_t)); + if(retval) memset(retval,0,sizeof(vidix_video_eq_t)); + return retval; +} + +vidix_deinterlace_t * vdlAllocDeinterlaceS( void ) +{ + vidix_deinterlace_t *retval; + retval=malloc(sizeof(vidix_deinterlace_t)); + if(retval) memset(retval,0,sizeof(vidix_deinterlace_t)); + return retval; +} + +vidix_dma_t * vdlAllocDmaS( void ) +{ + vidix_dma_t *retval; + retval=malloc(sizeof(vidix_dma_t)); + if(retval) memset(retval,0,sizeof(vidix_dma_t)); + return retval; +} + +vidix_oem_fx_t * vdlAllocOemFxS( void ) +{ + vidix_oem_fx_t *retval; + retval=malloc(sizeof(vidix_oem_fx_t)); + if(retval) memset(retval,0,sizeof(vidix_oem_fx_t)); + return retval; +} + +void vdlFreeCapabilityS(vidix_capability_t * _this) { free(_this); } +void vdlFreeFourccS( vidix_fourcc_t * _this ) { free(_this); } +void vdlFreePlaybackS( vidix_playback_t * _this ) { free(_this); } +void vdlFreeYUVS( vidix_yuv_t * _this) { free(_this); } +void vdlFreeRectS( vidix_rect_t * _this) { free(_this); } +void vdlFreeGrKeyS( vidix_grkey_t * _this) { free(_this); } +void vdlFreeVideoEqS( vidix_video_eq_t * _this) { free(_this); } +void vdlFreeDeinterlaceS( vidix_deinterlace_t * _this) { free(_this); } +void vdlFreeDmaS( vidix_dma_t * _this) { free(_this); } +void vdlFreeOemFxS( vidix_oem_fx_t * _this) { free(_this); } diff --git a/src/video_out/vidix/vidixlib.h b/src/video_out/vidix/vidixlib.h index 9c4325e9b..ebc3dd309 100644 --- a/src/video_out/vidix/vidixlib.h +++ b/src/video_out/vidix/vidixlib.h @@ -94,6 +94,33 @@ extern int vdlPlaybackCopyFrame(VDL_HANDLE, vidix_dma_t * ); /* Returns 0 if DMA is available else errno (EBUSY) */ extern int vdlQueryDMAStatus( VDL_HANDLE ); +/* + ABI related extensions. + Note: you should use this functions if you are using shared version + of vidix. +*/ +extern vidix_capability_t * vdlAllocCapabilityS( void ); +extern vidix_fourcc_t * vdlAllocFourccS( void ); +extern vidix_playback_t * vdlAllocPlaybackS( void ); +extern vidix_yuv_t * vdlAllocYUVS( void ); +extern vidix_rect_t * vdlAllocRectS( void ); +extern vidix_grkey_t * vdlAllocGrKeyS( void ); +extern vidix_video_eq_t * vdlAllocVideoEqS( void ); +extern vidix_deinterlace_t * vdlAllocDeinterlaceS( void ); +extern vidix_dma_t * vdlAllocDmaS( void ); +extern vidix_oem_fx_t * vdlAllocOemFxS( void ); + +extern void vdlFreeCapabilityS(vidix_capability_t * ); +extern void vdlFreeFourccS( vidix_fourcc_t * ); +extern void vdlFreePlaybackS( vidix_playback_t * ); +extern void vdlFreeYUVS( vidix_yuv_t * ); +extern void vdlFreeRectS( vidix_rect_t * ); +extern void vdlFreeGrKeyS( vidix_grkey_t * ); +extern void vdlFreeVideoEqS( vidix_video_eq_t * ); +extern void vdlFreeDeinterlaceS( vidix_deinterlace_t * ); +extern void vdlFreeDmaS( vidix_dma_t * ); +extern void vdlFreeOemFxS( vidix_oem_fx_t * ); + #ifdef __cplusplus } #endif -- cgit v1.2.3