Rev 3902 | Rev 4016 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3902 | Rev 3929 | ||
---|---|---|---|
Line 103... | Line 103... | ||
103 | * Output byte to port |
103 | * Output byte to port |
104 | * |
104 | * |
105 | * @param port Port to write to |
105 | * @param port Port to write to |
106 | * @param val Value to write |
106 | * @param val Value to write |
107 | */ |
107 | */ |
108 | static inline void pio_write_8(uint16_t port, uint8_t val) |
108 | static inline void pio_write_8(ioport8_t *port, uint8_t val) |
109 | { |
109 | { |
110 | asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port) ); |
110 | asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port)); |
111 | } |
111 | } |
112 | 112 | ||
113 | /** Word to port |
113 | /** Word to port |
114 | * |
114 | * |
115 | * Output word to port |
115 | * Output word to port |
116 | * |
116 | * |
117 | * @param port Port to write to |
117 | * @param port Port to write to |
118 | * @param val Value to write |
118 | * @param val Value to write |
119 | */ |
119 | */ |
120 | static inline void pio_write_16(uint16_t port, uint16_t val) |
120 | static inline void pio_write_16(ioport16_t *port, uint16_t val) |
121 | { |
121 | { |
122 | asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port) ); |
122 | asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port)); |
123 | } |
123 | } |
124 | 124 | ||
125 | /** Double word to port |
125 | /** Double word to port |
126 | * |
126 | * |
127 | * Output double word to port |
127 | * Output double word to port |
128 | * |
128 | * |
129 | * @param port Port to write to |
129 | * @param port Port to write to |
130 | * @param val Value to write |
130 | * @param val Value to write |
131 | */ |
131 | */ |
132 | static inline void pio_write_32(uint16_t port, uint32_t val) |
132 | static inline void pio_write_32(ioport32_t *port, uint32_t val) |
133 | { |
133 | { |
134 | asm volatile ("outl %l0, %w1\n" : : "a" (val), "d" (port) ); |
134 | asm volatile ("outl %l0, %w1\n" : : "a" (val), "d" (port)); |
135 | } |
135 | } |
136 | 136 | ||
137 | /** Byte from port |
137 | /** Byte from port |
138 | * |
138 | * |
139 | * Get byte from port |
139 | * Get byte from port |
140 | * |
140 | * |
141 | * @param port Port to read from |
141 | * @param port Port to read from |
142 | * @return Value read |
142 | * @return Value read |
143 | */ |
143 | */ |
144 | static inline uint8_t pio_read_8(uint16_t port) |
144 | static inline uint8_t pio_read_8(ioport8_t *port) |
145 | { |
145 | { |
146 | uint8_t val; |
146 | uint8_t val; |
147 | 147 | ||
148 | asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port) ); |
148 | asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port)); |
149 | return val; |
149 | return val; |
150 | } |
150 | } |
151 | 151 | ||
152 | /** Word from port |
152 | /** Word from port |
153 | * |
153 | * |
154 | * Get word from port |
154 | * Get word from port |
155 | * |
155 | * |
156 | * @param port Port to read from |
156 | * @param port Port to read from |
157 | * @return Value read |
157 | * @return Value read |
158 | */ |
158 | */ |
159 | static inline uint16_t pio_read_16(uint16_t port) |
159 | static inline uint16_t pio_read_16(ioport16_t *port) |
160 | { |
160 | { |
161 | uint16_t val; |
161 | uint16_t val; |
162 | 162 | ||
163 | asm volatile ("inw %w1, %w0 \n" : "=a" (val) : "d" (port) ); |
163 | asm volatile ("inw %w1, %w0 \n" : "=a" (val) : "d" (port)); |
164 | return val; |
164 | return val; |
165 | } |
165 | } |
166 | 166 | ||
167 | /** Double word from port |
167 | /** Double word from port |
168 | * |
168 | * |
169 | * Get double word from port |
169 | * Get double word from port |
170 | * |
170 | * |
171 | * @param port Port to read from |
171 | * @param port Port to read from |
172 | * @return Value read |
172 | * @return Value read |
173 | */ |
173 | */ |
174 | static inline uint32_t pio_read_32(uint16_t port) |
174 | static inline uint32_t pio_read_32(ioport32_t *port) |
175 | { |
175 | { |
176 | uint32_t val; |
176 | uint32_t val; |
177 | 177 | ||
178 | asm volatile ("inl %w1, %l0 \n" : "=a" (val) : "d" (port) ); |
178 | asm volatile ("inl %w1, %l0 \n" : "=a" (val) : "d" (port)); |
179 | return val; |
179 | return val; |
180 | } |
180 | } |
181 | 181 | ||
182 | /** Enable interrupts. |
182 | /** Enable interrupts. |
183 | * |
183 | * |