xref: /minix3/minix/drivers/net/ip1000/io.h (revision 3afdc1200b0091fc1e6a49ed676d48b62607f33e)
18d98f2e5SJia-Ju Bai #ifndef _IO_H
28d98f2e5SJia-Ju Bai #define _IO_H
38d98f2e5SJia-Ju Bai 
48d98f2e5SJia-Ju Bai #include <sys/types.h>
58d98f2e5SJia-Ju Bai #include <minix/syslib.h>
68d98f2e5SJia-Ju Bai #include "ip1000.h"
78d98f2e5SJia-Ju Bai 
88d98f2e5SJia-Ju Bai /* I/O function */
my_inb(u32_t port)98d98f2e5SJia-Ju Bai static u8_t my_inb(u32_t port) {
108d98f2e5SJia-Ju Bai 	u32_t value;
118d98f2e5SJia-Ju Bai 	int r;
12*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
13*3afdc120SJia-Ju Bai 	value = *(volatile u8_t *)(port);
148d98f2e5SJia-Ju Bai #else
158d98f2e5SJia-Ju Bai 	if ((r = sys_inb(port, &value)) != OK)
16*3afdc120SJia-Ju Bai 		printf("NDR: sys_inb failed: %d\n", r);
178d98f2e5SJia-Ju Bai #endif
188d98f2e5SJia-Ju Bai 	return (u8_t)value;
198d98f2e5SJia-Ju Bai }
20*3afdc120SJia-Ju Bai #define ndr_in8(port, offset) (my_inb((port) + (offset)))
218d98f2e5SJia-Ju Bai 
my_inw(u32_t port)228d98f2e5SJia-Ju Bai static u16_t my_inw(u32_t port) {
238d98f2e5SJia-Ju Bai 	u32_t value;
248d98f2e5SJia-Ju Bai 	int r;
25*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
26*3afdc120SJia-Ju Bai 	value = *(volatile u16_t *)(port);
278d98f2e5SJia-Ju Bai #else
288d98f2e5SJia-Ju Bai 	if ((r = sys_inw(port, &value)) != OK)
29*3afdc120SJia-Ju Bai 		printf("NDR: sys_inw failed: %d\n", r);
308d98f2e5SJia-Ju Bai #endif
318d98f2e5SJia-Ju Bai 	return (u16_t)value;
328d98f2e5SJia-Ju Bai }
33*3afdc120SJia-Ju Bai #define ndr_in16(port, offset) (my_inw((port) + (offset)))
348d98f2e5SJia-Ju Bai 
my_inl(u32_t port)358d98f2e5SJia-Ju Bai static u32_t my_inl(u32_t port) {
368d98f2e5SJia-Ju Bai 	u32_t value;
378d98f2e5SJia-Ju Bai 	int r;
38*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
39*3afdc120SJia-Ju Bai 	value = *(volatile u32_t *)(port);
408d98f2e5SJia-Ju Bai #else
418d98f2e5SJia-Ju Bai 	if ((r = sys_inl(port, &value)) != OK)
42*3afdc120SJia-Ju Bai 		printf("NDR: sys_inl failed: %d\n", r);
438d98f2e5SJia-Ju Bai #endif
448d98f2e5SJia-Ju Bai 	return value;
458d98f2e5SJia-Ju Bai }
46*3afdc120SJia-Ju Bai #define ndr_in32(port, offset) (my_inl((port) + (offset)))
478d98f2e5SJia-Ju Bai 
my_outb(u32_t port,u32_t value)48*3afdc120SJia-Ju Bai static void my_outb(u32_t port, u32_t value) {
498d98f2e5SJia-Ju Bai 	int r;
50*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
51*3afdc120SJia-Ju Bai 	*(volatile u8_t *)(port) = value;
528d98f2e5SJia-Ju Bai #else
53*3afdc120SJia-Ju Bai 	if ((r = sys_outb(port, (u8_t)value)) != OK)
54*3afdc120SJia-Ju Bai 		printf("NDR: sys_outb failed: %d\n", r);
558d98f2e5SJia-Ju Bai #endif
568d98f2e5SJia-Ju Bai }
57*3afdc120SJia-Ju Bai #define ndr_out8(port, offset, value) \
588d98f2e5SJia-Ju Bai 				(my_outb(((port) + (offset)), (value)))
598d98f2e5SJia-Ju Bai 
my_outw(u32_t port,u32_t value)60*3afdc120SJia-Ju Bai static void my_outw(u32_t port, u32_t value) {
618d98f2e5SJia-Ju Bai 	int r;
62*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
63*3afdc120SJia-Ju Bai 	*(volatile u16_t *)(port) = value;
648d98f2e5SJia-Ju Bai #else
65*3afdc120SJia-Ju Bai 	if ((r = sys_outw(port, (u16_t)value)) != OK)
66*3afdc120SJia-Ju Bai 		printf("NDR: sys_outw failed: %d\n", r);
678d98f2e5SJia-Ju Bai #endif
688d98f2e5SJia-Ju Bai }
69*3afdc120SJia-Ju Bai #define ndr_out16(port, offset, value) \
708d98f2e5SJia-Ju Bai 				(my_outw(((port) + (offset)), (value)))
718d98f2e5SJia-Ju Bai 
my_outl(u32_t port,u32_t value)72*3afdc120SJia-Ju Bai static void my_outl(u32_t port, u32_t value) {
738d98f2e5SJia-Ju Bai 	int r;
74*3afdc120SJia-Ju Bai #ifdef DMA_BASE_IOMAP
75*3afdc120SJia-Ju Bai 	*(volatile u32_t *)(port) = value;
768d98f2e5SJia-Ju Bai #else
778d98f2e5SJia-Ju Bai 	if ((r = sys_outl(port, value)) != OK)
78*3afdc120SJia-Ju Bai 		printf("NDR: sys_outl failed: %d\n", r);
798d98f2e5SJia-Ju Bai #endif
808d98f2e5SJia-Ju Bai }
81*3afdc120SJia-Ju Bai #define ndr_out32(port, offset, value) \
828d98f2e5SJia-Ju Bai 				(my_outl(((port) + (offset)), (value)))
838d98f2e5SJia-Ju Bai 
848d98f2e5SJia-Ju Bai #endif
85