1 /*
2 * \brief Hardware-resource access
3 * \author Christian Helmuth
4 * \date 2008-10-21
5 */
6
7 /*
8 * Copyright (C) 2008-2013 Genode Labs GmbH
9 *
10 * This file is part of the Genode OS framework, which is distributed
11 * under the terms of the GNU General Public License version 2.
12 */
13
14 #ifndef _INCLUDE__DDE_KIT__RESOURCES_H_
15 #define _INCLUDE__DDE_KIT__RESOURCES_H_
16
17 #include <dde_kit/types.h>
18
19 /**
20 * Allocate I/O port range (x86)
21 *
22 * \param start first port of range
23 * \param size size of port range
24 *
25 * \return 0 on success, -1 otherwise
26 */
27 int dde_kit_request_io(dde_kit_addr_t start, dde_kit_size_t size);
28
29 /**
30 * Free I/O port range (x86)
31 *
32 * \param start first port of range
33 * \param size size of port range
34 *
35 * \return 0 on success, -1 otherwise
36 */
37 int dde_kit_release_io(dde_kit_addr_t start, dde_kit_size_t size);
38
39 /**
40 * Read I/O port (byte)
41 *
42 * \param port port to read
43 *
44 * \return value read from port
45 */
46 unsigned char dde_kit_inb(dde_kit_addr_t port);
47
48 /**
49 * Read I/O port (2-byte)
50 *
51 * \param port port to read
52 *
53 * \return value read from port
54 */
55 unsigned short dde_kit_inw(dde_kit_addr_t port);
56
57 /**
58 * Read I/O port (4-byte)
59 *
60 * \param port port to read
61 *
62 * \return value read from port
63 */
64 unsigned long dde_kit_inl(dde_kit_addr_t port);
65
66 /**
67 * Write I/O port (byte)
68 *
69 * \param port port to write
70 * \param val value to write
71 */
72 void dde_kit_outb(dde_kit_addr_t port, unsigned char val);
73
74 /**
75 * Write I/O port (2-byte)
76 *
77 * \param port port to write
78 * \param val value to write
79 */
80 void dde_kit_outw(dde_kit_addr_t port, unsigned short val);
81
82 /**
83 * Write I/O port (4-byte)
84 *
85 * \param port port to write
86 * \param val value to write
87 */
88 void dde_kit_outl(dde_kit_addr_t port, unsigned long val);
89
90 /**
91 * Allocate MMIO range
92 *
93 * \param start begin of MMIO range
94 * \param size size of MMIO range
95 * \param wc if !0 request write-combined memory mapping
96 *
97 * \retval vaddr virtual start address mapped range
98 * \return 0 on success, -1 otherwise
99 */
100 int dde_kit_request_mem(dde_kit_addr_t start, dde_kit_size_t size,
101 int wc, dde_kit_addr_t *vaddr);
102
103 /**
104 * Free MMIO range
105 *
106 * \param start begin of MMIO range
107 * \param size size of MMIO range
108 *
109 * \return 0 on success, -1 otherwise
110 */
111 int dde_kit_release_mem(dde_kit_addr_t start, dde_kit_size_t size);
112
113 #endif /* _INCLUDE__DDE_KIT__RESOURCES_H_ */