Commit ee534a13 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

[PATCH] PC9800 uses different IDE i/o bases for legacy mode devices

From Osamu Tomita
parent 08e8b3bb
...@@ -26,6 +26,9 @@ ...@@ -26,6 +26,9 @@
static __inline__ int ide_default_irq(unsigned long base) static __inline__ int ide_default_irq(unsigned long base)
{ {
switch (base) { switch (base) {
#ifdef CONFIG_X86_PC9800
case 0x640: return 9;
#endif
case 0x1f0: return 14; case 0x1f0: return 14;
case 0x170: return 15; case 0x170: return 15;
case 0x1e8: return 11; case 0x1e8: return 11;
...@@ -40,12 +43,17 @@ static __inline__ int ide_default_irq(unsigned long base) ...@@ -40,12 +43,17 @@ static __inline__ int ide_default_irq(unsigned long base)
static __inline__ unsigned long ide_default_io_base(int index) static __inline__ unsigned long ide_default_io_base(int index)
{ {
switch (index) { switch (index) {
#ifdef CONFIG_X86_PC9800
case 0:
case 1: return 0x640;
#else
case 0: return 0x1f0; case 0: return 0x1f0;
case 1: return 0x170; case 1: return 0x170;
case 2: return 0x1e8; case 2: return 0x1e8;
case 3: return 0x168; case 3: return 0x168;
case 4: return 0x1e0; case 4: return 0x1e0;
case 5: return 0x160; case 5: return 0x160;
#endif
default: default:
return 0; return 0;
} }
...@@ -56,13 +64,24 @@ static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_por ...@@ -56,13 +64,24 @@ static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_por
{ {
unsigned long reg = data_port; unsigned long reg = data_port;
int i; int i;
#ifdef CONFIG_X86_PC9800
unsigned long increment = data_port == 0x640 ? 2 : 1;
#endif
for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
hw->io_ports[i] = reg; hw->io_ports[i] = reg;
#ifdef CONFIG_X86_PC9800
reg += increment;
#else
reg += 1; reg += 1;
#endif
} }
if (ctrl_port) { if (ctrl_port) {
hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port; hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
#ifdef CONFIG_X86_PC9800
} else if (data_port == 0x640) {
hw->io_ports[IDE_CONTROL_OFFSET] = 0x74c;
#endif
} else { } else {
hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206; hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment