[OpenBIOS] r409 - openbios-devel/drivers
svn at openbios.org
svn at openbios.org
Thu Jan 15 03:17:00 CET 2009
Author: laurent
Date: 2009-01-15 03:17:00 +0100 (Thu, 15 Jan 2009)
New Revision: 409
Modified:
openbios-devel/drivers/ide.c
openbios-devel/drivers/ide.h
Log:
ide: improve support of MMIO ide controller
Modified: openbios-devel/drivers/ide.c
===================================================================
--- openbios-devel/drivers/ide.c 2009-01-14 23:30:09 UTC (rev 408)
+++ openbios-devel/drivers/ide.c 2009-01-15 02:17:00 UTC (rev 409)
@@ -89,27 +89,29 @@
* old style io port operations
*/
static unsigned char
-ob_ide_inb(unsigned long port)
+ob_ide_inb(struct ide_channel *chan, unsigned int port)
{
- return inb(port);
+ return inb(chan->io_regs[port]);
}
static void
-ob_ide_outb(unsigned char data, unsigned long port)
+ob_ide_outb(struct ide_channel *chan, unsigned char data, unsigned int port)
{
- outb(data, port);
+ outb(data, chan->io_regs[port]);
}
static void
-ob_ide_insw(unsigned long port, unsigned char *addr, unsigned int count)
+ob_ide_insw(struct ide_channel *chan,
+ unsigned int port, unsigned char *addr, unsigned int count)
{
- insw(port, addr, count);
+ insw(chan->io_regs[port], addr, count);
}
static void
-ob_ide_outsw(unsigned long port, unsigned char *addr, unsigned int count)
+ob_ide_outsw(struct ide_channel *chan,
+ unsigned int port, unsigned char *addr, unsigned int count)
{
- outsw(port, addr, count);
+ outsw(chan->io_regs[port], addr, count);
}
static inline unsigned char
@@ -117,7 +119,7 @@
{
struct ide_channel *chan = drive->channel;
- return chan->obide_inb(chan->io_regs[offset]);
+ return chan->obide_inb(chan, offset);
}
static inline void
@@ -126,7 +128,7 @@
{
struct ide_channel *chan = drive->channel;
- chan->obide_outb(data, chan->io_regs[offset]);
+ chan->obide_outb(chan, data, offset);
}
static inline void
@@ -140,7 +142,7 @@
return;
}
- chan->obide_insw(chan->io_regs[offset], addr, len / 2);
+ chan->obide_insw(chan, offset, addr, len / 2);
}
static inline void
@@ -154,7 +156,7 @@
return;
}
- chan->obide_outsw(chan->io_regs[offset], addr, len / 2);
+ chan->obide_outsw(chan, offset, addr, len / 2);
}
static void
Modified: openbios-devel/drivers/ide.h
===================================================================
--- openbios-devel/drivers/ide.h 2009-01-14 23:30:09 UTC (rev 408)
+++ openbios-devel/drivers/ide.h 2009-01-15 02:17:00 UTC (rev 409)
@@ -169,16 +169,22 @@
/*
* either mmio or io_regs is set to indicate mmio or not
*/
- int mmio;
+ unsigned long mmio;
int io_regs[10];
/*
* can be set to a mmio hook, default it legacy outb/inb
*/
- void (*obide_outb)(unsigned char addr, unsigned long port);
- unsigned char (*obide_inb)(unsigned long port);
- void (*obide_insw)(unsigned long port, unsigned char *addr, unsigned int count);
- void (*obide_outsw)(unsigned long port, unsigned char *addr, unsigned int count);
+ void (*obide_outb)(struct ide_channel *chan,
+ unsigned char addr, unsigned int port);
+ unsigned char (*obide_inb)(struct ide_channel *chan,
+ unsigned int port);
+ void (*obide_insw)(struct ide_channel *chan,
+ unsigned int port, unsigned char *addr,
+ unsigned int count);
+ void (*obide_outsw)(struct ide_channel *chan,
+ unsigned int port, unsigned char *addr,
+ unsigned int count);
struct ide_drive drives[2];
char selected;
More information about the OpenBIOS
mailing list