1 /* 2 ** File: devio.c Jun. 11, 2005 3 ** 4 ** Author: Giovanni Falzoni <gfalzoni@inwind.it> 5 ** 6 ** This file contains the routines for reading/writing 7 ** from/to the device registers. 8 */ 9 10 #include <minix/drivers.h> 11 #include <minix/netdriver.h> 12 #include "dp.h" 13 14 #if (USE_IOPL == 0) 15 16 static void warning(const char *type, int err) 17 { 18 19 printf("Warning: eth#0 sys_%s failed (%d)\n", type, err); 20 } 21 22 /* 23 ** Name: inb 24 ** Function: Reads a byte from specified i/o port. 25 */ 26 unsigned int inb(unsigned short port) 27 { 28 u32_t value; 29 int rc; 30 31 if ((rc = sys_inb(port, &value)) != OK) warning("inb", rc); 32 return value; 33 } 34 35 /* 36 ** Name: inw 37 ** Function: Reads a word from specified i/o port. 38 */ 39 unsigned int inw(unsigned short port) 40 { 41 u32_t value; 42 int rc; 43 44 if ((rc = sys_inw(port, &value)) != OK) warning("inw", rc); 45 return value; 46 } 47 48 /* 49 ** Name: insb 50 ** Function: Reads a sequence of bytes from an i/o port. 51 */ 52 void insb(unsigned short int port, void *buffer, int count) 53 { 54 int rc; 55 56 if ((rc = sys_insb(port, SELF, buffer, count)) != OK) 57 warning("insb", rc); 58 } 59 60 /* 61 ** Name: insw 62 ** Function: Reads a sequence of words from an i/o port. 63 */ 64 void insw(unsigned short int port, void *buffer, int count) 65 { 66 int rc; 67 68 if ((rc = sys_insw(port, SELF, buffer, count)) != OK) 69 warning("insw", rc); 70 } 71 72 /* 73 ** Name: outb 74 ** Function: Writes a byte to specified i/o port. 75 */ 76 void outb(unsigned short port, unsigned long value) 77 { 78 int rc; 79 80 if ((rc = sys_outb(port, value)) != OK) warning("outb", rc); 81 } 82 83 /* 84 ** Name: outw 85 ** Function: Writes a word to specified i/o port. 86 */ 87 void outw(unsigned short port, unsigned long value) 88 { 89 int rc; 90 91 if ((rc = sys_outw(port, value)) != OK) warning("outw", rc); 92 } 93 94 /* 95 ** Name: outsb 96 ** Function: Writes a sequence of bytes to an i/o port. 97 */ 98 void outsb(unsigned short port, void *buffer, int count) 99 { 100 int rc; 101 102 if ((rc = sys_outsb(port, SELF, buffer, count)) != OK) 103 warning("outsb", rc); 104 } 105 106 #else 107 #error To be implemented 108 #endif /* USE_IOPL */ 109 /** devio.c **/ 110