1*8acfcfc3SJia-Ju Bai #ifndef _IO_H
2*8acfcfc3SJia-Ju Bai #define _IO_H
3*8acfcfc3SJia-Ju Bai
4*8acfcfc3SJia-Ju Bai #include <sys/types.h>
5*8acfcfc3SJia-Ju Bai #include <minix/syslib.h>
6*8acfcfc3SJia-Ju Bai #include "cs4281.h"
7*8acfcfc3SJia-Ju Bai
8*8acfcfc3SJia-Ju Bai /* I/O function */
my_inb(u32_t port)9*8acfcfc3SJia-Ju Bai static u8_t my_inb(u32_t port) {
10*8acfcfc3SJia-Ju Bai u32_t value;
11*8acfcfc3SJia-Ju Bai int r;
12*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
13*8acfcfc3SJia-Ju Bai value = *(volatile u8_t *)(port);
14*8acfcfc3SJia-Ju Bai #else
15*8acfcfc3SJia-Ju Bai if ((r = sys_inb(port, &value)) != OK)
16*8acfcfc3SJia-Ju Bai printf("SDR: sys_inb failed: %d\n", r);
17*8acfcfc3SJia-Ju Bai #endif
18*8acfcfc3SJia-Ju Bai return (u8_t)value;
19*8acfcfc3SJia-Ju Bai }
20*8acfcfc3SJia-Ju Bai #define sdr_in8(port, offset) (my_inb((port) + (offset)))
21*8acfcfc3SJia-Ju Bai
my_inw(u32_t port)22*8acfcfc3SJia-Ju Bai static u16_t my_inw(u32_t port) {
23*8acfcfc3SJia-Ju Bai u32_t value;
24*8acfcfc3SJia-Ju Bai int r;
25*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
26*8acfcfc3SJia-Ju Bai value = *(volatile u16_t *)(port);
27*8acfcfc3SJia-Ju Bai #else
28*8acfcfc3SJia-Ju Bai if ((r = sys_inw(port, &value)) != OK)
29*8acfcfc3SJia-Ju Bai printf("SDR: sys_inw failed: %d\n", r);
30*8acfcfc3SJia-Ju Bai #endif
31*8acfcfc3SJia-Ju Bai return (u16_t)value;
32*8acfcfc3SJia-Ju Bai }
33*8acfcfc3SJia-Ju Bai #define sdr_in16(port, offset) (my_inw((port) + (offset)))
34*8acfcfc3SJia-Ju Bai
my_inl(u32_t port)35*8acfcfc3SJia-Ju Bai static u32_t my_inl(u32_t port) {
36*8acfcfc3SJia-Ju Bai u32_t value;
37*8acfcfc3SJia-Ju Bai int r;
38*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
39*8acfcfc3SJia-Ju Bai value = *(volatile u32_t *)(port);
40*8acfcfc3SJia-Ju Bai #else
41*8acfcfc3SJia-Ju Bai if ((r = sys_inl(port, &value)) != OK)
42*8acfcfc3SJia-Ju Bai printf("SDR: sys_inl failed: %d\n", r);
43*8acfcfc3SJia-Ju Bai #endif
44*8acfcfc3SJia-Ju Bai return value;
45*8acfcfc3SJia-Ju Bai }
46*8acfcfc3SJia-Ju Bai #define sdr_in32(port, offset) (my_inl((port) + (offset)))
47*8acfcfc3SJia-Ju Bai
my_outb(u32_t port,u32_t value)48*8acfcfc3SJia-Ju Bai static void my_outb(u32_t port, u32_t value) {
49*8acfcfc3SJia-Ju Bai int r;
50*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
51*8acfcfc3SJia-Ju Bai *(volatile u8_t *)(port) = value;
52*8acfcfc3SJia-Ju Bai #else
53*8acfcfc3SJia-Ju Bai if ((r = sys_outb(port, (u8_t)value)) != OK)
54*8acfcfc3SJia-Ju Bai printf("SDR: sys_outb failed: %d\n", r);
55*8acfcfc3SJia-Ju Bai #endif
56*8acfcfc3SJia-Ju Bai }
57*8acfcfc3SJia-Ju Bai #define sdr_out8(port, offset, value) \
58*8acfcfc3SJia-Ju Bai (my_outb(((port) + (offset)), (value)))
59*8acfcfc3SJia-Ju Bai
my_outw(u32_t port,u32_t value)60*8acfcfc3SJia-Ju Bai static void my_outw(u32_t port, u32_t value) {
61*8acfcfc3SJia-Ju Bai int r;
62*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
63*8acfcfc3SJia-Ju Bai *(volatile u16_t *)(port) = value;
64*8acfcfc3SJia-Ju Bai #else
65*8acfcfc3SJia-Ju Bai if ((r = sys_outw(port, (u16_t)value)) != OK)
66*8acfcfc3SJia-Ju Bai printf("SDR: sys_outw failed: %d\n", r);
67*8acfcfc3SJia-Ju Bai #endif
68*8acfcfc3SJia-Ju Bai }
69*8acfcfc3SJia-Ju Bai #define sdr_out16(port, offset, value) \
70*8acfcfc3SJia-Ju Bai (my_outw(((port) + (offset)), (value)))
71*8acfcfc3SJia-Ju Bai
my_outl(u32_t port,u32_t value)72*8acfcfc3SJia-Ju Bai static void my_outl(u32_t port, u32_t value) {
73*8acfcfc3SJia-Ju Bai int r;
74*8acfcfc3SJia-Ju Bai #ifdef DMA_BASE_IOMAP
75*8acfcfc3SJia-Ju Bai *(volatile u32_t *)(port) = value;
76*8acfcfc3SJia-Ju Bai #else
77*8acfcfc3SJia-Ju Bai if ((r = sys_outl(port, value)) != OK)
78*8acfcfc3SJia-Ju Bai printf("SDR: sys_outl failed: %d\n", r);
79*8acfcfc3SJia-Ju Bai #endif
80*8acfcfc3SJia-Ju Bai }
81*8acfcfc3SJia-Ju Bai #define sdr_out32(port, offset, value) \
82*8acfcfc3SJia-Ju Bai (my_outl(((port) + (offset)), (value)))
83*8acfcfc3SJia-Ju Bai
84*8acfcfc3SJia-Ju Bai #endif
85