Added a test for MUIA_Listview_SelectChange.
[AROS.git] / arch / m68k-amiga / hidd / gayle_ata / interface_pio.c
blob44f151a0eb76e03c3a2fb9634745fbf891ef28f3
1 /*
2 Copyright © 2013, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: A600/A1200/A4000 ATA HIDD PIO interface functions
6 Lang: English
7 */
8 #include <aros/debug.h>
10 #define DIO(x)
11 #define DDATA(x)
13 #include "interface_pio.h"
15 static void ata_out(struct pio_data *data, UBYTE val, UWORD offset)
17 volatile UBYTE *addr;
18 addr = data->port;
19 addr[offset * 4] = val;
20 DIO(bug("%p REG %d <- %02X\n", addr, offset, val));
22 static UBYTE ata_in(struct pio_data *data, UWORD offset)
24 volatile UBYTE *addr;
25 UBYTE v;
27 addr = data->port;
28 v = addr[offset * 4];
29 DIO(bug("%p REG %d -> %02X\n", addr, offset, v));
30 return v;
33 static void ata_outsw(struct pio_data *data, APTR address, ULONG count)
35 volatile UWORD *addr = (UWORD*)data->dataport;
36 UWORD *dst = address;
38 DDATA(bug("WOUT %p %p %d\n", addr, address, count));
39 count /= 2;
40 while (count-- != 0)
41 *addr = *dst++;
43 static void ata_outsl(struct pio_data *data, APTR address, ULONG count)
45 volatile ULONG *addr = (ULONG*)data->dataport;
46 ULONG *dst = address;
48 DDATA(bug("LOUT %p %p %d\n", addr, address, count));
49 count /= 4;
50 while (count-- != 0)
51 *addr = *dst++;
54 static void ata_insw(struct pio_data *data, APTR address, ULONG count)
56 volatile UWORD *addr = (UWORD*)data->dataport;
57 UWORD *dst = address;
59 DDATA(bug("WIN %p %p %d\n", addr, address, count));
60 count /= 2;
61 while (count-- != 0)
62 *dst++ = *addr;
64 static void ata_insl(struct pio_data *data, APTR address, ULONG count)
66 volatile ULONG *addr = (ULONG*)data->dataport;
67 ULONG *dst = address;
69 DDATA(bug("LIN %p %p %d\n", addr, address, count));
70 count /= 4;
71 while (count-- != 0)
72 *dst++ = *addr;
75 const APTR bus_FuncTable[] =
77 ata_out,
78 ata_in,
79 (APTR *)-1
82 const APTR pio_FuncTable[] =
84 ata_outsw,
85 ata_insw,
86 ata_outsl,
87 ata_insl,
88 (APTR *)-1