From: Jeff Garzik <jgarzik@pobox.com>

From: John Linville <linville@redhat.com>

Attached is a second patch to account for (most of) Herbert Xu's comments.

I have left-out the part about changing state->card to a local variable
where it is used a lot.  Unfortunately, that usage is somewhat pervasive
and I would prefer to make those changes in a separate patch -- after I
have had a chance to do some testing.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/sound/oss/i810_audio.c |   34 ++++++++++++++++++++++------------
 1 files changed, 22 insertions(+), 12 deletions(-)

diff -puN sound/oss/i810_audio.c~i810_audio-mmio-support-2 sound/oss/i810_audio.c
--- 25/sound/oss/i810_audio.c~i810_audio-mmio-support-2	2004-07-05 21:18:55.657958264 -0700
+++ 25-akpm/sound/oss/i810_audio.c	2004-07-05 21:18:55.663957352 -0700
@@ -453,8 +453,10 @@ struct i810_card {
 #define I810_IOREAD(size, type, card, off)				\
 ({									\
 	type val;							\
-	if (card->use_mmio) val=read##size(card->iobase_mmio+off);	\
-	else val=in##size(card->iobase+off);				\
+	if (card->use_mmio)						\
+		val=read##size(card->iobase_mmio+off);			\
+	else								\
+		val=in##size(card->iobase+off);				\
 	val;								\
 })
 
@@ -464,8 +466,10 @@ struct i810_card {
 
 #define I810_IOWRITE(size, val, card, off)				\
 ({									\
-	if (card->use_mmio) write##size(val, card->iobase_mmio+off);	\
-	else out##size(val, card->iobase+off);				\
+	if (card->use_mmio)						\
+		write##size(val, card->iobase_mmio+off);		\
+	else								\
+		out##size(val, card->iobase+off);			\
 })
 
 #define I810_IOWRITEL(val, card, off)	I810_IOWRITE(l, val, card, off)
@@ -2816,9 +2820,11 @@ static int i810_ac97_power_up_bus(struct
 	 *	See if the primary codec comes ready. This must happen
 	 *	before we start doing DMA stuff
 	 */	
-	/* see i810_ac97_init for the next 7 lines (jsaw) */
-	if (card->use_mmio) readw(card->ac97base_mmio);
-	else inw(card->ac97base);
+	/* see i810_ac97_init for the next 10 lines (jsaw) */
+	if (card->use_mmio)
+		readw(card->ac97base_mmio);
+	else
+		inw(card->ac97base);
 	if (ich_use_mmio(card)) {
 		primary_codec_id = (int) readl(card->iobase_mmio + SDM) & 0x3;
 		printk(KERN_INFO "i810_audio: Primary codec has ID %d\n",
@@ -2836,8 +2842,10 @@ static int i810_ac97_power_up_bus(struct
 		else 
 			printk("no response.\n");
 	}
-	if (card->use_mmio) readw(card->ac97base_mmio);
-	else inw(card->ac97base);
+	if (card->use_mmio)
+		readw(card->ac97base_mmio);
+	else
+		inw(card->ac97base);
 	return 1;
 }
 
@@ -2881,8 +2889,10 @@ static int __devinit i810_ac97_init(stru
 	for (num_ac97 = 0; num_ac97 < nr_ac97_max; num_ac97++) {
 		/* codec reset */
 		printk(KERN_INFO "i810_audio: Resetting connection %d\n", num_ac97);
-		if (card->use_mmio) readw(card->ac97base_mmio + 0x80*num_ac97);
-		else inw(card->ac97base + 0x80*num_ac97);
+		if (card->use_mmio)
+			readw(card->ac97base_mmio + 0x80*num_ac97);
+		else
+			inw(card->ac97base + 0x80*num_ac97);
 
 		/* If we have the SDATA_IN Map Register, as on ICH4, we
 		   do not loop thru all possible codec IDs but thru all 
@@ -3160,7 +3170,7 @@ static int __devinit i810_probe(struct p
 		}
 	}
 
-	if (!(card->use_mmio) && !(card->iobase)) {
+	if (!(card->use_mmio) && (!(card->iobase) || !(card->ac97base))) {
 		printk(KERN_ERR "i810_audio: No I/O resources available.\n");
 		goto out_mem;
 	}
_