diff options
Diffstat (limited to 'drivers/ide/legacy/q40ide.c')
-rw-r--r-- | drivers/ide/legacy/q40ide.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index fcb04b8b0238..2dc306f852a6 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
@@ -96,6 +96,27 @@ static void q40ide_output_data(ide_drive_t *drive, struct request *rq, | |||
96 | outsw_swapw(data_addr, buf, (len + 1) / 2); | 96 | outsw_swapw(data_addr, buf, (len + 1) / 2); |
97 | } | 97 | } |
98 | 98 | ||
99 | /* Q40 has a byte-swapped IDE interface */ | ||
100 | static const struct ide_tp_ops q40ide_tp_ops = { | ||
101 | .exec_command = ide_exec_command, | ||
102 | .read_status = ide_read_status, | ||
103 | .read_altstatus = ide_read_altstatus, | ||
104 | .read_sff_dma_status = ide_read_sff_dma_status, | ||
105 | |||
106 | .set_irq = ide_set_irq, | ||
107 | |||
108 | .tf_load = ide_tf_load, | ||
109 | .tf_read = ide_tf_read, | ||
110 | |||
111 | .input_data = q40ide_input_data, | ||
112 | .output_data = q40ide_output_data, | ||
113 | }; | ||
114 | |||
115 | static const struct ide_port_info q40ide_port_info = { | ||
116 | .tp_ops = &q40ide_tp_ops, | ||
117 | .host_flags = IDE_HFLAG_NO_DMA, | ||
118 | }; | ||
119 | |||
99 | /* | 120 | /* |
100 | * the static array is needed to have the name reported in /proc/ioports, | 121 | * the static array is needed to have the name reported in /proc/ioports, |
101 | * hwif->name unfortunately isn't available yet | 122 | * hwif->name unfortunately isn't available yet |
@@ -141,16 +162,12 @@ static int __init q40ide_init(void) | |||
141 | if (hwif) { | 162 | if (hwif) { |
142 | hwif->chipset = ide_generic; | 163 | hwif->chipset = ide_generic; |
143 | 164 | ||
144 | /* Q40 has a byte-swapped IDE interface */ | ||
145 | hwif->input_data = q40ide_input_data; | ||
146 | hwif->output_data = q40ide_output_data; | ||
147 | |||
148 | hws[i] = &hw[i]; | 165 | hws[i] = &hw[i]; |
149 | idx[i] = hwif->index; | 166 | idx[i] = hwif->index; |
150 | } | 167 | } |
151 | } | 168 | } |
152 | 169 | ||
153 | ide_device_add(idx, NULL, hws); | 170 | ide_device_add(idx, &q40ide_port_info, hws); |
154 | 171 | ||
155 | return 0; | 172 | return 0; |
156 | } | 173 | } |