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 unsigned short bar, dde_kit_uint8_t bus,
29 dde_kit_uint8_t dev, dde_kit_uint8_t func);
30
31 /**
32 * Free I/O port range (x86)
33 *
34 * \param start first port of range
35 * \param size size of port range
36 *
37 * \return 0 on success, -1 otherwise
38 */
39 int dde_kit_release_io(dde_kit_addr_t start, dde_kit_size_t size);
40
41 /**
42 * Read I/O port (byte)
43 *
44 * \param port port to read
45 *
46 * \return value read from port
47 */
48 unsigned char dde_kit_inb(dde_kit_addr_t port);
49
50 /**
51 * Read I/O port (2-byte)
52 *
53 * \param port port to read
54 *
55 * \return value read from port
56 */
57 unsigned short dde_kit_inw(dde_kit_addr_t port);
58
59 /**
60 * Read I/O port (4-byte)
61 *
62 * \param port port to read
63 *
64 * \return value read from port
65 */
66 unsigned long dde_kit_inl(dde_kit_addr_t port);
67
68 /**
69 * Write I/O port (byte)
70 *
71 * \param port port to write
72 * \param val value to write
73 */
74 void dde_kit_outb(dde_kit_addr_t port, unsigned char val);
75
76 /**
77 * Write I/O port (2-byte)
78 *
79 * \param port port to write
80 * \param val value to write
81 */
82 void dde_kit_outw(dde_kit_addr_t port, unsigned short val);
83
84 /**
85 * Write I/O port (4-byte)
86 *
87 * \param port port to write
88 * \param val value to write
89 */
90 void dde_kit_outl(dde_kit_addr_t port, unsigned long val);
91
92 /**
93 * Allocate MMIO range
94 *
95 * \param start begin of MMIO range
96 * \param size size of MMIO range
97 * \param wc if !0 request write-combined memory mapping
98 *
99 * \retval vaddr virtual start address mapped range
100 * \return 0 on success, -1 otherwise
101 */
102 int dde_kit_request_mem(dde_kit_addr_t start, dde_kit_size_t size,
103 int wc, dde_kit_addr_t *vaddr);
104
105 /**
106 * Free MMIO range
107 *
108 * \param start begin of MMIO range
109 * \param size size of MMIO range
110 *
111 * \return 0 on success, -1 otherwise
112 */
113 int dde_kit_release_mem(dde_kit_addr_t start, dde_kit_size_t size);
114
115 #endif /* _INCLUDE__DDE_KIT__RESOURCES_H_ */