UARTP8250(9) UARTP8250(9)
NAME
uartp8250 - portable 8250-style uarts
SYNOPSIS
#include "../port/uartp8250.h"
typedef struct Ctlr Ctlr;
struct Ctlr {
void *reg;
uint (*get)(void*, int);
void (*set)(void*, int, uint);
int (*itr)(Uart*, int);
int irq;
int tbdf;
int iena;
uchar sticky[8];
Lock;
int hasfifo;
int checkfifo;
int fena;
};
PhysUart p8250physuart;
void i8250interrupt(Ureg*, void*);
DESCRIPTION
P8250 provides a portable interface for 8250-style uarts.
All necessary functions are provided except for get, set,
and itr. These functions get or set an 8250 register or
enable or disable the interrupt, respectively. Since the
PhysUart structure is required for device discovery, a dummy
version needs to be provided
PhysUart myphysuart = {
.name= "myuart",
.pnp= mypnp,
};
On entry of the pnp function, the PhysUart can be filled
out:
memmove(&myphysuart, &p8250physuart, sizeof(PhysUart));
myphysuart.name = "myuart";
myphysuart.pnp = mypnp;
as can the Ctlr structure, which is assigned to uart->regs.
Page 1 Plan 9 (printed 11/7/25)
UARTP8250(9) UARTP8250(9)
SOURCE
/sys/src/9/port/uartp8250.h
/sys/src/9/port/uartp8250.c
SEE ALSO
uart(3).
BUGS
The PhysUart is uncomfortable to use for device discovery.
Page 2 Plan 9 (printed 11/7/25)