1 #ifndef _PORT_H
2 #define _PORT_H
3 
4 #include <stdint.h>
5 #include <list.h>
6 #include <resource.h>
7 
8 #define PORT_SIZE(area) \
9 	(area->data.port.end - area->data.port.start + 1)
10 
11 typedef uint8_t port_t;
12 
13 typedef void port_data_t;
14 typedef uint8_t (*read_t)(port_data_t *data, port_t port);
15 typedef void (*write_t)(port_data_t *data, uint8_t b, port_t port);
16 
17 struct pops {
18 	read_t read;
19 	write_t write;
20 };
21 
22 struct port_region {
23 	struct resource *area;
24 	struct pops *pops;
25 	port_data_t *data;
26 };
27 
28 bool port_region_add(struct port_region *region);
29 void port_region_remove(struct port_region *region);
30 void port_region_remove_all();
31 uint8_t port_read(port_t port);
32 void port_write(uint8_t b, port_t port);
33 
34 #endif
35 
36