11 #include <linux/module.h>
12 #include <linux/types.h>
19 #include <asm/setup.h>
25 #define DRV_NAME "falconide"
31 #define ATA_HD_BASE 0xfff00000
37 #define ATA_HD_CONTROL 0x39
44 static int falconide_intr_lock;
46 static void falconide_release_lock(
void)
48 if (falconide_intr_lock == 0) {
52 falconide_intr_lock = 0;
58 if (falconide_intr_lock == 0) {
60 panic(
"Falcon IDE hasn't ST-DMA lock in interrupt");
62 falconide_intr_lock = 1;
67 void *
buf,
unsigned int len)
76 raw_insw_swapw((
u16 *)data_addr, buf, (len + 1) / 2);
80 void *buf,
unsigned int len)
82 unsigned long data_addr = drive->
hwif->io_ports.data_addr;
89 raw_outsw_swapw((
u16 *)data_addr, buf, (len + 1) / 2);
93 static const struct ide_tp_ops falconide_tp_ops = {
103 .input_data = falconide_input_data,
104 .output_data = falconide_output_data,
108 .get_lock = falconide_get_lock,
109 .release_lock = falconide_release_lock,
110 .tp_ops = &falconide_tp_ops,
121 memset(hw, 0,
sizeof(*hw));
125 for (i = 1; i < 8; i++)
137 static int __init falconide_init(
void)
140 struct ide_hw hw, *hws[] = { &hw };
153 falconide_setup_ports(&hw);
163 falconide_release_lock();