Skip to contentSkip to conversation

make drivers/scsi/seagate.c use ioremap instead of isa_{read,write} (241p11)

PATCH In review Rasmus Andersen 2 participants 2 messages Jan 29, 2001 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 make drivers/scsi/seagate.c use ioremap instead of isa_{read,write} (241p11)

Hi.

(I have not been able to find a probable current maintainer for this code.)

The following patch makes drivers/scsi/seagate.c use ioremap instead of isa_{read, write}.

It applies against ac12 and 241p11.

Please comment, esp. on the size of the remappings.

drivers/scsi/seagate.c +25 -4
@@ -256,10 +256,31 @@
 MODULE_PARM(irq, "i");
 
 #define retcode(result) (((result) << 16) | (message << 8) | status)
-#define STATUS ((u8) isa_readb(st0x_cr_sr))
-#define DATA ((u8) isa_readb(st0x_dr))
-#define WRITE_CONTROL(d) { isa_writeb((d), st0x_cr_sr); }
-#define WRITE_DATA(d) { isa_writeb((d), st0x_dr); }
+#define STATUS ((u8) read_data(st0x_cr_sr))
+#define DATA ((u8) read_data(st0x_dr))
+#define WRITE_CONTROL(d) write_data(d, st0x_cr_sr)
+#define WRITE_DATA(d) write_data(d, st0x_dr)
+
+static inline u8 read_data(unsigned long offset) {
+	void *ptr = ioremap(offset, sizeof(u8));
+	u8 ret;
+	
+	if (!ptr)
+		return 1;
+	ret = readb(ptr);
+	iounmap(ptr);
+	return ret;
+}
+
+static inline int write_data(int data, unsigned long offset) {
+	void *ptr = ioremap(offset, sizeof(u8));
+	
+	if (!ptr)
+		return 1;
+	writeb(data, ptr);
+	iounmap(ptr);
+	return 0;
+}
 
 void st0x_setup (char *str, int *ints)
 {
Signature · 9 lines
Regards,
        Rasmus([email protected])

I've never had major knee surgery on any other part of my body.
-Winston Bennett, University of Kentucky basketball forward
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
#1 lore raw
Quoted 6 lines · Rasmus Andersen

Hi.

(I have not been able to find a probable current maintainer for this code.)

Quoted 6 lines

The following patch makes drivers/scsi/seagate.c use ioremap instead of isa_{read, write}.

It applies against ac12 and 241p11.

Please comment, esp. on the size of the remappings.

This isn't the proper way to use ioremap. You should only ioremap once when the driver is loaded and save the mapped address. Since ioremap special cases ISA addresses, it doesn't add much overhead the way you are doing it, but it is still not consistent with normal non-ISA usage of ioremap.

--

Brian Gerst
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/