#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/serial_core.h>
#include <linux/slab.h>
#include <linux/tty_flip.h>
#include <asm/serial.h>
#define DRIVER_NAME …
#define DEV_NAME …
#define UART_NR …
#define ESP32_UART_TX_FIFO_SIZE …
#define ESP32_UART_RX_FIFO_SIZE …
#define UART_FIFO_REG …
#define UART_INT_RAW_REG …
#define UART_INT_ST_REG …
#define UART_INT_ENA_REG …
#define UART_INT_CLR_REG …
#define UART_RXFIFO_FULL_INT …
#define UART_TXFIFO_EMPTY_INT …
#define UART_BRK_DET_INT …
#define UART_CLKDIV_REG …
#define ESP32_UART_CLKDIV …
#define ESP32S3_UART_CLKDIV …
#define UART_CLKDIV_SHIFT …
#define UART_CLKDIV_FRAG …
#define UART_STATUS_REG …
#define ESP32_UART_RXFIFO_CNT …
#define ESP32S3_UART_RXFIFO_CNT …
#define UART_RXFIFO_CNT_SHIFT …
#define UART_DSRN …
#define UART_CTSN …
#define ESP32_UART_TXFIFO_CNT …
#define ESP32S3_UART_TXFIFO_CNT …
#define UART_TXFIFO_CNT_SHIFT …
#define UART_CONF0_REG …
#define UART_PARITY …
#define UART_PARITY_EN …
#define UART_BIT_NUM …
#define UART_BIT_NUM_5 …
#define UART_BIT_NUM_6 …
#define UART_BIT_NUM_7 …
#define UART_BIT_NUM_8 …
#define UART_STOP_BIT_NUM …
#define UART_STOP_BIT_NUM_1 …
#define UART_STOP_BIT_NUM_2 …
#define UART_SW_RTS …
#define UART_SW_DTR …
#define UART_LOOPBACK …
#define UART_TX_FLOW_EN …
#define UART_RTS_INV …
#define UART_DTR_INV …
#define UART_CONF1_REG …
#define UART_RXFIFO_FULL_THRHD_SHIFT …
#define ESP32_UART_TXFIFO_EMPTY_THRHD_SHIFT …
#define ESP32S3_UART_TXFIFO_EMPTY_THRHD_SHIFT …
#define ESP32_UART_RX_FLOW_EN …
#define ESP32S3_UART_RX_FLOW_EN …
#define ESP32S3_UART_CLK_CONF_REG …
#define ESP32S3_UART_SCLK_DIV_B …
#define ESP32S3_UART_SCLK_DIV_A …
#define ESP32S3_UART_SCLK_DIV_NUM …
#define ESP32S3_UART_SCLK_SEL …
#define APB_CLK …
#define RC_FAST_CLK …
#define XTAL_CLK …
#define ESP32S3_UART_SCLK_EN …
#define ESP32S3_UART_RST_CORE …
#define ESP32S3_UART_TX_SCLK_EN …
#define ESP32S3_UART_RX_SCLK_EN …
#define ESP32S3_UART_TX_RST_CORE …
#define ESP32S3_UART_RX_RST_CORE …
#define ESP32S3_UART_CLK_CONF_DEFAULT …
struct esp32_port { … };
struct esp32_uart_variant { … };
static const struct esp32_uart_variant esp32_variant = …;
static const struct esp32_uart_variant esp32s3_variant = …;
static const struct of_device_id esp32_uart_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, esp32_uart_dt_ids);
static struct esp32_port *esp32_uart_ports[UART_NR];
static const struct esp32_uart_variant *port_variant(struct uart_port *port)
{ … }
static void esp32_uart_write(struct uart_port *port, unsigned long reg, u32 v)
{ … }
static u32 esp32_uart_read(struct uart_port *port, unsigned long reg)
{ … }
static u32 esp32_uart_tx_fifo_cnt(struct uart_port *port)
{ … }
static u32 esp32_uart_rx_fifo_cnt(struct uart_port *port)
{ … }
static unsigned int esp32_uart_tx_empty(struct uart_port *port)
{ … }
static void esp32_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
{ … }
static unsigned int esp32_uart_get_mctrl(struct uart_port *port)
{ … }
static void esp32_uart_stop_tx(struct uart_port *port)
{ … }
static void esp32_uart_rxint(struct uart_port *port)
{ … }
static void esp32_uart_put_char(struct uart_port *port, u8 c)
{ … }
static void esp32_uart_put_char_sync(struct uart_port *port, u8 c)
{ … }
static void esp32_uart_transmit_buffer(struct uart_port *port)
{ … }
static void esp32_uart_txint(struct uart_port *port)
{ … }
static irqreturn_t esp32_uart_int(int irq, void *dev_id)
{ … }
static void esp32_uart_start_tx(struct uart_port *port)
{ … }
static void esp32_uart_stop_rx(struct uart_port *port)
{ … }
static int esp32_uart_startup(struct uart_port *port)
{ … }
static void esp32_uart_shutdown(struct uart_port *port)
{ … }
static bool esp32_uart_set_baud(struct uart_port *port, u32 baud)
{ … }
static void esp32_uart_set_termios(struct uart_port *port,
struct ktermios *termios,
const struct ktermios *old)
{ … }
static const char *esp32_uart_type(struct uart_port *port)
{ … }
static void esp32_uart_config_port(struct uart_port *port, int flags)
{ … }
#ifdef CONFIG_CONSOLE_POLL
static int esp32_uart_poll_init(struct uart_port *port)
{ … }
static void esp32_uart_poll_put_char(struct uart_port *port, unsigned char c)
{ … }
static int esp32_uart_poll_get_char(struct uart_port *port)
{ … }
#endif
static const struct uart_ops esp32_uart_pops = …;
static void esp32_uart_console_putchar(struct uart_port *port, u8 c)
{ … }
static void esp32_uart_string_write(struct uart_port *port, const char *s,
unsigned int count)
{ … }
static void
esp32_uart_console_write(struct console *co, const char *s, unsigned int count)
{ … }
static int __init esp32_uart_console_setup(struct console *co, char *options)
{ … }
static int esp32_uart_console_exit(struct console *co)
{ … }
static struct uart_driver esp32_uart_reg;
static struct console esp32_uart_console = …;
static void esp32_uart_earlycon_putchar(struct uart_port *port, u8 c)
{ … }
static void esp32_uart_earlycon_write(struct console *con, const char *s,
unsigned int n)
{ … }
#ifdef CONFIG_CONSOLE_POLL
static int esp32_uart_earlycon_read(struct console *con, char *s, unsigned int n)
{ … }
#endif
static int __init esp32xx_uart_early_console_setup(struct earlycon_device *device,
const char *options)
{ … }
static int __init esp32_uart_early_console_setup(struct earlycon_device *device,
const char *options)
{ … }
OF_EARLYCON_DECLARE(…);
static int __init esp32s3_uart_early_console_setup(struct earlycon_device *device,
const char *options)
{ … }
OF_EARLYCON_DECLARE(…);
static struct uart_driver esp32_uart_reg = …;
static int esp32_uart_probe(struct platform_device *pdev)
{ … }
static void esp32_uart_remove(struct platform_device *pdev)
{ … }
static struct platform_driver esp32_uart_driver = …;
static int __init esp32_uart_init(void)
{ … }
static void __exit esp32_uart_exit(void)
{ … }
module_init(…) …;
module_exit(esp32_uart_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;