xref: /minix/minix/lib/libddekit/src/resource.c (revision 433d6423)
1 #include "common.h"
2 #include <ddekit/panic.h>
3 #include <ddekit/resources.h>
4 #include <ddekit/pgtab.h>
5 
6 #include <minix/vm.h>
7 
8 #ifdef DDEBUG_LEVEL_RESOURCE
9 #undef DDEBUG
10 #define DDEBUG DDEBUG_LEVEL_RESOURCE
11 #endif
12 
13 #include "debug.h"
14 #include "util.h"
15 
16 /****************************************************************************/
17 /*      ddekit_release_dma                                                  */
18 /****************************************************************************/
ddekit_request_dma(int nr)19 int ddekit_request_dma(int nr) {
20 	WARN_UNIMPL;
21 	/* do we stil use isa dma ? imho no.*/
22 	return -1;
23 }
24 
25 /****************************************************************************/
26 /*      ddekit_request_dma                                                  */
27 /****************************************************************************/
ddekit_release_dma(int nr)28 int ddekit_release_dma(int nr) {
29 	WARN_UNIMPL;
30 	/* do we stil use isa dma ? imho no.*/
31 	return -1;
32 }
33 
34 /*
35  * In minix we don't need to explicitly request IO-ports, ...
36  */
37 /****************************************************************************/
38 /*      ddekit_release/request_io                                           */
39 /****************************************************************************/
ddekit_request_io(ddekit_addr_t start,ddekit_addr_t count)40 int ddekit_request_io (ddekit_addr_t start, ddekit_addr_t count) {
41 	return 0;
42 }
ddekit_release_io(ddekit_addr_t start,ddekit_addr_t count)43 int ddekit_release_io (ddekit_addr_t start, ddekit_addr_t count) {
44 	return 0;
45 }
46 
47 /****************************************************************************/
48 /*      ddekit_request_mem                                                  */
49 /****************************************************************************/
ddekit_request_mem(ddekit_addr_t start,ddekit_addr_t size,ddekit_addr_t * vaddr)50 int ddekit_request_mem
51 (ddekit_addr_t start, ddekit_addr_t size, ddekit_addr_t *vaddr) {
52 
53 	*vaddr = (ddekit_addr_t) vm_map_phys(SELF, (void *)start, size);
54 
55 	DDEBUG_MSG_VERBOSE("start: %x, size: %d, virt: %x", start, size, *vaddr);
56 
57 	if( *vaddr == (ddekit_addr_t) NULL) {
58 		ddekit_panic("unable to map IO memory from %p of size %d",
59 		    start, size);
60 	}
61 	return (vaddr==NULL);
62 }
63 
64 /****************************************************************************/
65 /*      ddekit_release_mem                                                  */
66 /****************************************************************************/
ddekit_release_mem(ddekit_addr_t start,ddekit_addr_t size)67 int ddekit_release_mem(ddekit_addr_t start, ddekit_addr_t size)
68 {
69 	return	vm_unmap_phys(SELF,(void *) start, size );
70 }
71 
72 /****************************************************************************/
73 /*      ddekit_inb                                                          */
74 /****************************************************************************/
ddekit_inb(ddekit_addr_t port)75 unsigned char ddekit_inb(ddekit_addr_t port) {
76 	u32_t ret;
77 	if (sys_inb(port, &ret)) {
78 		ddekit_panic("sys_inb failed.");
79 	}
80 	DDEBUG_MSG_VERBOSE("read port %x: %x", port, ret);
81 	return (char) ret;
82 }
83 
84 /****************************************************************************/
85 /*      ddekit_inw                                                          */
86 /****************************************************************************/
ddekit_inw(ddekit_addr_t port)87 unsigned short ddekit_inw(ddekit_addr_t port) {
88 	u32_t ret;
89 	if (sys_inw(port, &ret)) {
90 		ddekit_panic("sys_inw failed.");
91 	}
92 	DDEBUG_MSG_VERBOSE("read port %x: %x", port, ret);
93 	return (short) ret;
94 }
95 
96 /****************************************************************************/
97 /*      ddekit_inl                                                          */
98 /****************************************************************************/
ddekit_inl(ddekit_addr_t port)99 unsigned long ddekit_inl(ddekit_addr_t port){
100 	u32_t ret;
101 	if (sys_inl(port, &ret)) {
102 		ddekit_panic("sys_outl failed.");
103 	}
104 	DDEBUG_MSG_VERBOSE("read port %x: %x", port, ret);
105 	return ret;
106 }
107 
108 /****************************************************************************/
109 /*      ddekit_outb                                                         */
110 /****************************************************************************/
ddekit_outb(ddekit_addr_t port,unsigned char val)111 void ddekit_outb(ddekit_addr_t port, unsigned char val) {
112 	if (sys_outb(port,val)) {
113 		ddekit_panic("sys_outb failed.");
114 	}
115 	DDEBUG_MSG_VERBOSE("write port %x: %x", port, val);
116 }
117 
118 /****************************************************************************/
119 /*      ddekit_outw                                                         */
120 /****************************************************************************/
ddekit_outw(ddekit_addr_t port,unsigned short val)121 void ddekit_outw(ddekit_addr_t port, unsigned short val) {
122 	if (sys_outw(port,val)) {
123 		ddekit_panic("sys_outw failed.");
124 	}
125 	DDEBUG_MSG_VERBOSE("write port %x: %x", port, val);
126 }
127 
128 /****************************************************************************/
129 /*      ddekit_outl                                                         */
130 /****************************************************************************/
ddekit_outl(ddekit_addr_t port,unsigned long val)131 void ddekit_outl(ddekit_addr_t port, unsigned long val) {
132 	if (sys_outl(port,val)) {
133 		ddekit_panic("sys_outl failed.");
134 	}
135 	DDEBUG_MSG_VERBOSE("write port %x: %x", port, val);
136 }
137 
138 
139