#include <linux/device.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/tty.h>
#include <linux/serial.h>
#include <linux/tty_flip.h>
#include <linux/slab.h>
#include <linux/io.h>
#include <linux/ipack.h>
#include "ipoctal.h"
#include "scc2698.h"
#define IP_OCTAL_ID_SPACE_VECTOR …
#define IP_OCTAL_NB_BLOCKS …
static const struct tty_operations ipoctal_fops;
struct ipoctal_channel { … };
struct ipoctal { … };
static inline struct ipoctal *chan_to_ipoctal(struct ipoctal_channel *chan,
unsigned int index)
{ … }
static void ipoctal_reset_channel(struct ipoctal_channel *channel)
{ … }
static int ipoctal_port_activate(struct tty_port *port, struct tty_struct *tty)
{ … }
static int ipoctal_install(struct tty_driver *driver, struct tty_struct *tty)
{ … }
static int ipoctal_open(struct tty_struct *tty, struct file *file)
{ … }
static void ipoctal_reset_stats(struct ipoctal_stats *stats)
{ … }
static void ipoctal_free_channel(struct ipoctal_channel *channel)
{ … }
static void ipoctal_close(struct tty_struct *tty, struct file *filp)
{ … }
static int ipoctal_get_icount(struct tty_struct *tty,
struct serial_icounter_struct *icount)
{ … }
static void ipoctal_irq_rx(struct ipoctal_channel *channel, u8 sr)
{ … }
static void ipoctal_irq_tx(struct ipoctal_channel *channel)
{ … }
static void ipoctal_irq_channel(struct ipoctal_channel *channel)
{ … }
static irqreturn_t ipoctal_irq_handler(void *arg)
{ … }
static const struct tty_port_operations ipoctal_tty_port_ops = …;
static int ipoctal_inst_slot(struct ipoctal *ipoctal, unsigned int bus_nr,
unsigned int slot)
{ … }
static inline size_t ipoctal_copy_write_buffer(struct ipoctal_channel *channel,
const u8 *buf, size_t count)
{ … }
static ssize_t ipoctal_write_tty(struct tty_struct *tty, const u8 *buf,
size_t count)
{ … }
static unsigned int ipoctal_write_room(struct tty_struct *tty)
{ … }
static unsigned int ipoctal_chars_in_buffer(struct tty_struct *tty)
{ … }
static void ipoctal_set_termios(struct tty_struct *tty,
const struct ktermios *old_termios)
{ … }
static void ipoctal_hangup(struct tty_struct *tty)
{ … }
static void ipoctal_shutdown(struct tty_struct *tty)
{ … }
static void ipoctal_cleanup(struct tty_struct *tty)
{ … }
static const struct tty_operations ipoctal_fops = …;
static int ipoctal_probe(struct ipack_device *dev)
{ … }
static void __ipoctal_remove(struct ipoctal *ipoctal)
{ … }
static void ipoctal_remove(struct ipack_device *idev)
{ … }
static DEFINE_IPACK_DEVICE_TABLE(ipoctal_ids) = …;
MODULE_DEVICE_TABLE(ipack, ipoctal_ids);
static const struct ipack_driver_ops ipoctal_drv_ops = …;
static struct ipack_driver driver = …;
static int __init ipoctal_init(void)
{ … }
static void __exit ipoctal_exit(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(ipoctal_exit);