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