diff -Ncr linux-2.4.22_oldaudio/drivers/sound/i810_audio.c linux-2.4.22/drivers/sound/i810_audio.c *** linux-2.4.22_oldaudio/drivers/sound/i810_audio.c 2003-11-19 18:33:26.000000000 +0900 --- linux-2.4.22/drivers/sound/i810_audio.c 2003-08-25 20:44:42.000000000 +0900 *************** *** 118,123 **** --- 118,126 ---- #ifndef PCI_DEVICE_ID_INTEL_ICH4 #define PCI_DEVICE_ID_INTEL_ICH4 0x24c5 #endif + #ifndef PCI_DEVICE_ID_INTEL_ICH5 + #define PCI_DEVICE_ID_INTEL_ICH5 0x24d5 + #endif #ifndef PCI_DEVICE_ID_INTEL_440MX #define PCI_DEVICE_ID_INTEL_440MX 0x7195 #endif *************** *** 273,278 **** --- 276,282 ---- INTELICH2, INTELICH3, INTELICH4, + INTELICH5, SI7012, NVIDIA_NFORCE, AMD768, *************** *** 286,291 **** --- 290,296 ---- "Intel ICH2", "Intel ICH3", "Intel ICH4", + "Intel ICH5", "SiS 7012", "NVIDIA nForce Audio", "AMD 768", *************** *** 304,310 **** { 1, 0x0000 }, /* INTEL440MX */ { 1, 0x0000 }, /* INTELICH2 */ { 2, 0x0000 }, /* INTELICH3 */ ! { 3, 0x0003 }, /* INTELICH4 */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* SI7012 */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* NVIDIA_NFORCE */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* AMD768 */ --- 309,316 ---- { 1, 0x0000 }, /* INTEL440MX */ { 1, 0x0000 }, /* INTELICH2 */ { 2, 0x0000 }, /* INTELICH3 */ ! { 3, 0x0003 }, /* INTELICH4 */ ! { 3, 0x0003 }, /* INTELICH5 */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* SI7012 */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* NVIDIA_NFORCE */ /*@FIXME to be verified*/ { 2, 0x0000 }, /* AMD768 */ *************** *** 324,329 **** --- 330,337 ---- PCI_ANY_ID, PCI_ANY_ID, 0, 0, INTELICH3}, {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, INTELICH4}, + {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH5, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, INTELICH5}, {PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_7012, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SI7012}, {PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO, *************** *** 2802,2808 **** */ /* see i810_ac97_init for the next 7 lines (jsaw) */ inw(card->ac97base); ! if ((card->pci_id == PCI_DEVICE_ID_INTEL_ICH4) && (card->use_mmio)) { primary_codec_id = (int) readl(card->iobase_mmio + SDM) & 0x3; printk(KERN_INFO "i810_audio: Primary codec has ID %d\n", --- 2784,2790 ---- */ /* see i810_ac97_init for the next 7 lines (jsaw) */ inw(card->ac97base); ! if ((card->pci_id == PCI_DEVICE_ID_INTEL_ICH4 || card->pci_id == PCI_DEVICE_ID_INTEL_ICH5) && (card->use_mmio)) { primary_codec_id = (int) readl(card->iobase_mmio + SDM) & 0x3; printk(KERN_INFO "i810_audio: Primary codec has ID %d\n", *************** *** 2872,2878 **** possible IO channels. Bit 0:1 of SDM then holds the last codec ID spoken to. */ ! if ((card->pci_id == PCI_DEVICE_ID_INTEL_ICH4) && (card->use_mmio)) { ac97_id = (int) readl(card->iobase_mmio + SDM) & 0x3; printk(KERN_INFO "i810_audio: Connection %d with codec id %d\n", --- 2854,2860 ---- possible IO channels. Bit 0:1 of SDM then holds the last codec ID spoken to. */ ! if ((card->pci_id == PCI_DEVICE_ID_INTEL_ICH4 || card->pci_id == PCI_DEVICE_ID_INTEL_ICH5) && (card->use_mmio)) { ac97_id = (int) readl(card->iobase_mmio + SDM) & 0x3; printk(KERN_INFO "i810_audio: Connection %d with codec id %d\n", *************** *** 3110,3119 **** return -EIO; if (pci_set_dma_mask(pci_dev, I810_DMA_MASK)) { ! printk(KERN_ERR "intel810: architecture does not support" " 32bit PCI busmaster DMA\n"); return -ENODEV; } if ((card = kmalloc(sizeof(struct i810_card), GFP_KERNEL)) == NULL) { printk(KERN_ERR "i810_audio: out of memory\n"); --- 3091,3107 ---- return -EIO; if (pci_set_dma_mask(pci_dev, I810_DMA_MASK)) { ! printk(KERN_ERR "i810_audio: architecture does not support" " 32bit PCI busmaster DMA\n"); return -ENODEV; } + + if( pci_resource_start(pci_dev, 1) == 0) + { + /* MMIO only ICH5 .. here be dragons .. */ + printk(KERN_ERR "i810_audio: Pure MMIO interfaces not yet supported.\n"); + return -ENODEV; + } if ((card = kmalloc(sizeof(struct i810_card), GFP_KERNEL)) == NULL) { printk(KERN_ERR "i810_audio: out of memory\n");