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