/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright (c) 2016, Linaro Limited */ #ifndef __DRIVERS_SERIAL_H #define __DRIVERS_SERIAL_H #include #include #include #include #include struct serial_chip { const struct serial_ops *ops; }; struct serial_ops { void (*putc)(struct serial_chip *chip, int ch); void (*flush)(struct serial_chip *chip); bool (*have_rx_data)(struct serial_chip *chip); int (*getchar)(struct serial_chip *chip); }; struct serial_driver { /* Allocate device data and return the inner serial_chip */ struct serial_chip *(*dev_alloc)(void); /* * Initialize device from FDT node. @parms is device-specific, * its meaning is as defined by the DT bindings for the characters * following the ":" in /chosen/stdout-path. Typically for UART * devices this is {{{}}} where: * baud - baud rate in decimal * parity - 'n' (none), 'o', (odd) or 'e' (even) * bits - number of data bits * flow - 'r' (rts) * For example: 115200n8r */ int (*dev_init)(struct serial_chip *dev, const void *fdt, int offset, const char *parms); void (*dev_free)(struct serial_chip *dev); }; #endif /*__DRIVERS_SERIASERIAL_H*/