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