Removed so that we can do the vendor copy again.
[AROS.git] / rom / hidds / ata_pci / interface_pio.c
blob8d5eb59c6347c5e90c363f11d5d5ff75b08f3f3c
1 /*
2 Copyright © 2004-2013, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: PCI IDE PIO interface functions
6 Lang: English
7 */
9 #include "interface_pio.h"
11 void ata_out(struct pio_data *data, UBYTE val, UWORD offset)
13 outb(val, offset + data->ioBase);
16 UBYTE ata_in(struct pio_data *data, UWORD offset)
18 return inb(offset + data->ioBase);
21 void ata_out_alt(struct pio_data *data, UBYTE val, UWORD offset)
23 outb(val, offset + data->ioAlt);
26 UBYTE ata_in_alt(struct pio_data *data, UWORD offset)
28 return inb(offset + data->ioAlt);
31 #if defined(__i386__) || defined(__x86_64__)
33 void ata_outsw(struct pio_data *data, APTR address, ULONG count)
35 outsw(data->ioBase, address, count >> 1);
38 void ata_insw(struct pio_data *data, APTR address, ULONG count)
40 insw(data->ioBase, address, count >> 1);
43 void ata_outsl(struct pio_data *data, APTR address, ULONG count)
45 if (count & 2)
46 outsw(data->ioBase, address, count >> 1);
47 else
48 outsl(data->ioBase, address, count >> 2);
51 void ata_insl(struct pio_data *data, APTR address, ULONG count)
53 if (count & 2)
54 insw(data->ioBase, address, count >> 1);
55 else
56 insl(data->ioBase, address, count >> 2);
59 #else
61 void ata_outsw(struct pio_data *data, APTR address, ULONG count)
63 UWORD *addr = address;
65 while(count)
67 outw(*addr++, data->ioBase);
68 count -= 2;
72 void ata_insw(struct pio_data *data, APTR address, ULONG count)
74 UWORD *addr = address;
76 while(count)
78 *addr++ = inw(data->ioBase);
79 count -= 2;
83 void ata_outsl(struct pio_data *data, APTR address, ULONG count)
85 if (count & 2)
87 ata_outsw(data, address, count);
89 else
91 ULONG *addr = address;
93 while(count)
95 outl(*addr++, data->ioBase);
96 count -= 4;
101 void ata_insl(struct pio_data *data, APTR address, ULONG count)
103 if (count & 2)
105 ata_insw(data, address, count);
107 else
109 ULONG *addr = address;
111 while(count)
113 *addr++ = inl(data->ioBase);
114 count -= 4;
119 #endif
121 const APTR bus_FuncTable[] =
123 ata_out,
124 ata_in,
125 ata_out_alt,
126 ata_in_alt,
127 (APTR *)-1
130 const APTR pio_FuncTable[] =
132 ata_outsw,
133 ata_insw,
134 ata_outsl,
135 ata_insl,
136 (APTR *)-1