linux/drivers/tty/serial/rp2.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Driver for Comtrol RocketPort EXPRESS/INFINITY cards
 *
 * Copyright (C) 2012 Kevin Cernekee <[email protected]>
 *
 * Inspired by, and loosely based on:
 *
 *   ar933x_uart.c
 *     Copyright (C) 2011 Gabor Juhos <[email protected]>
 *
 *   rocketport_infinity_express-linux-1.20.tar.gz
 *     Copyright (C) 2004-2011 Comtrol, Inc.
 */

#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/completion.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/firmware.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/log2.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/serial.h>
#include <linux/serial_core.h>
#include <linux/slab.h>
#include <linux/sysrq.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/types.h>

#define DRV_NAME

#define RP2_FW_NAME
#define RP2_UCODE_BYTES

#define PORTS_PER_ASIC
#define ALL_PORTS_MASK

#define UART_CLOCK
#define DEFAULT_BAUD_DIV
#define FIFO_SIZE

/* BAR0 registers */
#define RP2_FPGA_CTL0
#define RP2_FPGA_CTL1
#define RP2_IRQ_MASK
#define RP2_IRQ_MASK_EN_m
#define RP2_IRQ_STATUS

/* BAR1 registers */
#define RP2_ASIC_SPACING
#define RP2_ASIC_OFFSET(i)

#define RP2_PORT_BASE
#define RP2_PORT_SPACING

#define RP2_UCODE_BASE
#define RP2_UCODE_SPACING

#define RP2_CLK_PRESCALER
#define RP2_CH_IRQ_STAT
#define RP2_CH_IRQ_MASK
#define RP2_ASIC_IRQ
#define RP2_ASIC_IRQ_EN_m
#define RP2_GLOBAL_CMD
#define RP2_ASIC_CFG

/* port registers */
#define RP2_DATA_DWORD

#define RP2_DATA_BYTE
#define RP2_DATA_BYTE_ERR_PARITY_m
#define RP2_DATA_BYTE_ERR_OVERRUN_m
#define RP2_DATA_BYTE_ERR_FRAMING_m
#define RP2_DATA_BYTE_BREAK_m

/* This lets uart_insert_char() drop bytes received on a !CREAD port */
#define RP2_DUMMY_READ

#define RP2_DATA_BYTE_EXCEPTION_MASK

#define RP2_RX_FIFO_COUNT
#define RP2_TX_FIFO_COUNT

#define RP2_CHAN_STAT
#define RP2_CHAN_STAT_RXDATA_m
#define RP2_CHAN_STAT_DCD_m
#define RP2_CHAN_STAT_DSR_m
#define RP2_CHAN_STAT_CTS_m
#define RP2_CHAN_STAT_RI_m
#define RP2_CHAN_STAT_OVERRUN_m
#define RP2_CHAN_STAT_DSR_CHANGED_m
#define RP2_CHAN_STAT_CTS_CHANGED_m
#define RP2_CHAN_STAT_CD_CHANGED_m
#define RP2_CHAN_STAT_RI_CHANGED_m
#define RP2_CHAN_STAT_TXEMPTY_m

#define RP2_CHAN_STAT_MS_CHANGED_MASK

#define RP2_TXRX_CTL
#define RP2_TXRX_CTL_MSRIRQ_m
#define RP2_TXRX_CTL_RXIRQ_m
#define RP2_TXRX_CTL_RX_TRIG_s
#define RP2_TXRX_CTL_RX_TRIG_m
#define RP2_TXRX_CTL_RX_TRIG_1
#define RP2_TXRX_CTL_RX_TRIG_256
#define RP2_TXRX_CTL_RX_TRIG_448
#define RP2_TXRX_CTL_RX_EN_m
#define RP2_TXRX_CTL_RTSFLOW_m
#define RP2_TXRX_CTL_DTRFLOW_m
#define RP2_TXRX_CTL_TX_TRIG_s
#define RP2_TXRX_CTL_TX_TRIG_m
#define RP2_TXRX_CTL_DSRFLOW_m
#define RP2_TXRX_CTL_TXIRQ_m
#define RP2_TXRX_CTL_CTSFLOW_m
#define RP2_TXRX_CTL_TX_EN_m
#define RP2_TXRX_CTL_RTS_m
#define RP2_TXRX_CTL_DTR_m
#define RP2_TXRX_CTL_LOOP_m
#define RP2_TXRX_CTL_BREAK_m
#define RP2_TXRX_CTL_CMSPAR_m
#define RP2_TXRX_CTL_nPARODD_m
#define RP2_TXRX_CTL_PARENB_m

#define RP2_UART_CTL
#define RP2_UART_CTL_MODE_s
#define RP2_UART_CTL_MODE_m
#define RP2_UART_CTL_MODE_rs232
#define RP2_UART_CTL_FLUSH_RX_m
#define RP2_UART_CTL_FLUSH_TX_m
#define RP2_UART_CTL_RESET_CH_m
#define RP2_UART_CTL_XMIT_EN_m
#define RP2_UART_CTL_DATABITS_s
#define RP2_UART_CTL_DATABITS_m
#define RP2_UART_CTL_DATABITS_8
#define RP2_UART_CTL_DATABITS_7
#define RP2_UART_CTL_DATABITS_6
#define RP2_UART_CTL_DATABITS_5
#define RP2_UART_CTL_STOPBITS_m

#define RP2_BAUD

/* ucode registers */
#define RP2_TX_SWFLOW
#define RP2_TX_SWFLOW_ena
#define RP2_TX_SWFLOW_dis

#define RP2_RX_SWFLOW
#define RP2_RX_SWFLOW_ena
#define RP2_RX_SWFLOW_dis

#define RP2_RX_FIFO
#define RP2_RX_FIFO_ena
#define RP2_RX_FIFO_dis

static struct uart_driver rp2_uart_driver =;

struct rp2_card;

struct rp2_uart_port {};

struct rp2_card {};

#define RP_ID(prod)
#define RP_CAP(ports, smpte)

static inline void rp2_decode_cap(const struct pci_device_id *id,
				  int *ports, int *smpte)
{}

static DEFINE_SPINLOCK(rp2_minor_lock);
static int rp2_minor_next;

static int rp2_alloc_ports(int n_ports)
{}

static inline struct rp2_uart_port *port_to_up(struct uart_port *port)
{}

static void rp2_rmw(struct rp2_uart_port *up, int reg,
		    u32 clr_bits, u32 set_bits)
{}

static void rp2_rmw_clr(struct rp2_uart_port *up, int reg, u32 val)
{}

static void rp2_rmw_set(struct rp2_uart_port *up, int reg, u32 val)
{}

static void rp2_mask_ch_irq(struct rp2_uart_port *up, int ch_num,
			    int is_enabled)
{}

static unsigned int rp2_uart_tx_empty(struct uart_port *port)
{}

static unsigned int rp2_uart_get_mctrl(struct uart_port *port)
{}

static void rp2_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
{}

static void rp2_uart_start_tx(struct uart_port *port)
{}

static void rp2_uart_stop_tx(struct uart_port *port)
{}

static void rp2_uart_stop_rx(struct uart_port *port)
{}

static void rp2_uart_break_ctl(struct uart_port *port, int break_state)
{}

static void rp2_uart_enable_ms(struct uart_port *port)
{}

static void __rp2_uart_set_termios(struct rp2_uart_port *up,
				   unsigned long cfl,
				   unsigned long ifl,
				   unsigned int baud_div)
{}

static void rp2_uart_set_termios(struct uart_port *port, struct ktermios *new,
				 const struct ktermios *old)
{}

static void rp2_rx_chars(struct rp2_uart_port *up)
{}

static void rp2_tx_chars(struct rp2_uart_port *up)
{}

static void rp2_ch_interrupt(struct rp2_uart_port *up)
{}

static int rp2_asic_interrupt(struct rp2_card *card, unsigned int asic_id)
{}

static irqreturn_t rp2_uart_interrupt(int irq, void *dev_id)
{}

static inline void rp2_flush_fifos(struct rp2_uart_port *up)
{}

static int rp2_uart_startup(struct uart_port *port)
{}

static void rp2_uart_shutdown(struct uart_port *port)
{}

static const char *rp2_uart_type(struct uart_port *port)
{}

static void rp2_uart_release_port(struct uart_port *port)
{}

static int rp2_uart_request_port(struct uart_port *port)
{}

static void rp2_uart_config_port(struct uart_port *port, int flags)
{}

static int rp2_uart_verify_port(struct uart_port *port,
				   struct serial_struct *ser)
{}

static const struct uart_ops rp2_uart_ops =;

static void rp2_reset_asic(struct rp2_card *card, unsigned int asic_id)
{}

static void rp2_init_card(struct rp2_card *card)
{}

static void rp2_init_port(struct rp2_uart_port *up, const struct firmware *fw)
{}

static void rp2_remove_ports(struct rp2_card *card)
{}

static int rp2_load_firmware(struct rp2_card *card, const struct firmware *fw)
{}

static int rp2_probe(struct pci_dev *pdev,
				   const struct pci_device_id *id)
{}

static void rp2_remove(struct pci_dev *pdev)
{}

static const struct pci_device_id rp2_pci_tbl[] =;
MODULE_DEVICE_TABLE(pci, rp2_pci_tbl);

static struct pci_driver rp2_pci_driver =;

static int __init rp2_uart_init(void)
{}

static void __exit rp2_uart_exit(void)
{}

module_init();
module_exit(rp2_uart_exit);

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();
MODULE_FIRMWARE();