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");
