mirror of
https://github.com/ipxe/ipxe
synced 2025-12-26 09:32:33 +03:00
[serial] Add general abstraction of a 16550-compatible UART
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
41
src/arch/x86/include/bits/uart.h
Normal file
41
src/arch/x86/include/bits/uart.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#ifndef _BITS_UART_H
|
||||
#define _BITS_UART_H
|
||||
|
||||
/** @file
|
||||
*
|
||||
* 16550-compatible UART
|
||||
*
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
|
||||
#include <stdint.h>
|
||||
#include <ipxe/io.h>
|
||||
|
||||
/**
|
||||
* Write to UART register
|
||||
*
|
||||
* @v uart UART
|
||||
* @v addr Register address
|
||||
* @v data Data
|
||||
*/
|
||||
static inline __attribute__ (( always_inline )) void
|
||||
uart_write ( struct uart *uart, unsigned int addr, uint8_t data ) {
|
||||
outb ( data, ( uart->base + addr ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Read from UART register
|
||||
*
|
||||
* @v uart UART
|
||||
* @v addr Register address
|
||||
* @ret data Data
|
||||
*/
|
||||
static inline __attribute__ (( always_inline )) uint8_t
|
||||
uart_read ( struct uart *uart, unsigned int addr ) {
|
||||
return inb ( uart->base + addr );
|
||||
}
|
||||
|
||||
extern int uart_select ( struct uart *uart, unsigned int port );
|
||||
|
||||
#endif /* _BITS_UART_H */
|
||||
Reference in New Issue
Block a user