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