Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

dz.c File Reference

#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/malloc.h>
#include <linux/mm.h>
#include <linux/major.h>
#include <linux/param.h>
#include <linux/tqueue.h>
#include <linux/interrupt.h>
#include <asm-mips/wbflush.h>
#include <asm/dec/interrupts.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/serial.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/dec/machtype.h>
#include <asm/dec/kn01.h>
#include <asm/dec/kn02.h>
#include <linux/ptrace.h>
#include <linux/console.h>
#include <linux/fs.h>
#include <asm/bootinfo.h>
#include "dz.h"

Include dependency graph for dz.c:

Go to the source code of this file.

Defines

#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#define DEBUG_DZ   1
#define DZ_INTR_DEBUG   1

Functions

 DECLARE_TASK_QUEUE (tq_serial)
static void debug_console (const char *s, int count)
static unsigned short dz_in (struct dz_serial *info, unsigned offset)
static void dz_out (struct dz_serial *info, unsigned offset, unsigned short value)
static void dz_stop (struct tty_struct *tty)
static void dz_start (struct tty_struct *tty)
static void dz_sched_event (struct dz_serial *info, int event)
static void receive_chars (struct dz_serial *info_in)
static void transmit_chars (struct dz_serial *info)
static void check_modem_status (struct dz_serial *info)
static void dz_interrupt (int irq, void *dev, struct pt_regs *regs)
static void do_serial_bh (void)
static void do_softint (void *private_data)
static void do_serial_hangup (void *private_data)
static int startup (struct dz_serial *info)
static void shutdown (struct dz_serial *info)
static void change_speed (struct dz_serial *info)
static void dz_flush_chars (struct tty_struct *tty)
static int dz_write (struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
static int dz_write_room (struct tty_struct *tty)
static int dz_chars_in_buffer (struct tty_struct *tty)
static void dz_flush_buffer (struct tty_struct *tty)
static void dz_throttle (struct tty_struct *tty)
static void dz_unthrottle (struct tty_struct *tty)
static void dz_send_xchar (struct tty_struct *tty, char ch)
static int get_serial_info (struct dz_serial *info, struct serial_struct *retinfo)
static int set_serial_info (struct dz_serial *info, struct serial_struct *new_info)
static int get_lsr_info (struct dz_serial *info, unsigned int *value)
static void send_break (struct dz_serial *info, int duration)
static int dz_ioctl (struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg)
static void dz_set_termios (struct tty_struct *tty, struct termios *old_termios)
static void dz_close (struct tty_struct *tty, struct file *filp)
static void dz_hangup (struct tty_struct *tty)
static int block_til_ready (struct tty_struct *tty, struct file *filp, struct dz_serial *info)
static int dz_open (struct tty_struct *tty, struct file *filp)
static void show_serial_version (void)
 __initfunc (int dz_init(void))

Variables

int(* prom_printf )(char *,...)
wait_queue * keypress_wait
static struct dz_seriallines [4]
static unsigned char tmp_buffer [256]


Define Documentation

#define DEBUG_DZ   1
 

Definition at line 56 of file dz.c.

#define DZ_INTR_DEBUG   1
 

Definition at line 73 of file dz.c.

#define MOD_DEC_USE_COUNT
 

Definition at line 24 of file dz.c.

#define MOD_INC_USE_COUNT
 

Definition at line 23 of file dz.c.


Function Documentation

__initfunc int   dz_init(void)  ) 
 

Definition at line 1285 of file dz.c.

References B9600, dz_serial::blocked_open, termios::c_cflag, callout_driver, dz_serial::callout_termios, cli, CLOCAL, dz_serial::close_delay, dz_serial::close_wait, dz_serial::closing_wait, dz_serial::count, CREAD, CS8, tq_struct::data, do_serial_bh(), do_serial_hangup(), do_softint(), dz_chars_in_buffer(), dz_close(), DZ_CLR, DZ_CSR, dz_flush_buffer(), dz_flush_chars(), dz_hangup(), dz_in(), dz_interrupt(), dz_ioctl(), DZ_MSE, DZ_NB_PORT, dz_open(), dz_out(), dz_send_xchar(), dz_set_termios(), dz_start(), dz_stop(), dz_throttle(), dz_unthrottle(), dz_write(), dz_write_room(), dz_serial::event, HUPCL, i, init_bh(), KN01_DZ11_BASE, KN02_DZ11_BASE, dz_serial::line, long, MACH_DS23100, MACH_DS5100, dz_serial::magic, tty_driver::major, memset, mips_machtype, multi, tty_driver::name, dz_serial::normal_termios, dz_serial::open_wait, panic(), dz_serial::port, printk, request_irq(), restore_flags, tq_struct::routine, SA_INTERRUPT, save_flags, SERIAL, SERIAL_BH, SERIAL_MAGIC, serial_refcount, serial_table, serial_termios, serial_termios_locked, SERIAL_TYPE_CALLOUT, SERIAL_TYPE_NORMAL, show_serial_version(), tty_driver::subtype, tmp, dz_serial::tqueue, dz_serial::tqueue_hangup, dz_serial::tty, TTY_DRIVER_MAGIC, TTY_DRIVER_REAL_RAW, TTY_DRIVER_TYPE_SERIAL, TTY_MAJOR, tty_register_driver(), tty_std_termios, TTYAUX_MAJOR, and dz_serial::x_char.

Here is the call graph for this function:

static int block_til_ready struct tty_struct *  tty,
struct file filp,
struct dz_serial info
[static]
 

Definition at line 1129 of file dz.c.

References dz_serial::blocked_open, termios::c_cflag, CLOCAL, dz_serial::close_wait, dz_serial::count, current, DZ_CALLOUT_ACTIVE, DZ_CLOSING, DZ_NORMAL_ACTIVE, DZ_PGRP_LOCKOUT, DZ_SESSION_LOCKOUT, EAGAIN, EBUSY, ERESTARTSYS, dz_serial::flags, interruptible_sleep_on(), dz_serial::is_initialized, dz_serial::normal_termios, NULL, O_NONBLOCK, dz_serial::open_wait, dz_serial::pgrp, schedule(), SERIAL_TYPE_CALLOUT, dz_serial::session, signal_pending, TASK_INTERRUPTIBLE, TASK_RUNNING, and tty_hung_up_p().

Here is the call graph for this function:

static void change_speed struct dz_serial info  )  [static]
 

Definition at line 546 of file dz.c.

References baud, dz_serial::cflags, cli, CS5, CS6, CS7, CS8, CSIZE, CSTOPB, DZ_B110, DZ_B1200, DZ_B134, DZ_B150, DZ_B1800, DZ_B2000, DZ_B2400, DZ_B300, DZ_B3600, DZ_B4800, DZ_B50, DZ_B600, DZ_B7200, DZ_B75, DZ_B9600, DZ_CS5, DZ_CS6, DZ_CS7, DZ_CS8, DZ_CSTOPB, DZ_FERR, DZ_LPR, DZ_OERR, dz_out(), DZ_PARENB, DZ_PARODD, DZ_PERR, DZ_RXENAB, dz_serial::line, PARENB, PARODD, restore_flags, save_flags, dz_serial::tty, and tty_get_baud_rate().

Here is the call graph for this function:

static void check_modem_status struct dz_serial info  )  [inline, static]
 

Definition at line 342 of file dz.c.

References dz_in(), DZ_MODEM, DZ_MSR, dz_serial::line, and status.

Here is the call graph for this function:

static void debug_console const char *  s,
int  count
[static]
 

Definition at line 87 of file dz.c.

References i, and prom_printf.

Referenced by receive_chars().

DECLARE_TASK_QUEUE tq_serial   ) 
 

static void do_serial_bh void   )  [static]
 

Definition at line 393 of file dz.c.

References run_task_queue().

Here is the call graph for this function:

static void do_serial_hangup void *  private_data  )  [static]
 

Definition at line 423 of file dz.c.

References dz_serial::tty, tty, and tty_hangup().

Here is the call graph for this function:

static void do_softint void *  private_data  )  [static]
 

Definition at line 398 of file dz.c.

References DZ_EVENT_WRITE_WAKEUP, dz_serial::event, test_and_clear_bit, dz_serial::tty, and tty.

static int dz_chars_in_buffer struct tty_struct *  tty  )  [static]
 

Definition at line 743 of file dz.c.

References dz_serial::xmit_cnt.

Referenced by __initfunc().

static void dz_close struct tty_struct *  tty,
struct file filp
[static]
 

Definition at line 1015 of file dz.c.

References dz_serial::blocked_open, dz_serial::callout_termios, cli, dz_serial::close_delay, dz_serial::close_wait, dz_serial::closing_wait, dz_serial::count, current, DZ_CALLOUT_ACTIVE, DZ_CLOSING, DZ_CLOSING_WAIT_NONE, DZ_NORMAL_ACTIVE, dz_serial::event, dz_serial::flags, ldiscs, dz_serial::line, N_TTY, dz_serial::normal_termios, dz_serial::open_wait, printk, restore_flags, save_flags, schedule_timeout, shutdown(), TASK_INTERRUPTIBLE, dz_serial::tty, tty_hung_up_p(), and tty_wait_until_sent().

Referenced by __initfunc().

Here is the call graph for this function:

static void dz_flush_buffer struct tty_struct *  tty  )  [static]
 

Definition at line 757 of file dz.c.

References cli, sti, dz_serial::xmit_cnt, dz_serial::xmit_head, and dz_serial::xmit_tail.

Referenced by __initfunc(), and dz_hangup().

static void dz_flush_chars struct tty_struct *  tty  )  [static]
 

Definition at line 616 of file dz.c.

References cli, dz_start(), restore_flags, save_flags, dz_serial::tty, dz_serial::xmit_buf, and dz_serial::xmit_cnt.

Referenced by __initfunc().

Here is the call graph for this function:

static void dz_hangup struct tty_struct *  tty  )  [static]
 

Definition at line 1111 of file dz.c.

References dz_serial::count, DZ_CALLOUT_ACTIVE, dz_flush_buffer(), DZ_NORMAL_ACTIVE, dz_serial::event, dz_serial::flags, dz_serial::open_wait, shutdown(), and dz_serial::tty.

Referenced by __initfunc().

Here is the call graph for this function:

static unsigned short dz_in struct dz_serial info,
unsigned  offset
[inline, static]
 

Definition at line 108 of file dz.c.

References addr, and dz_serial::port.

Referenced by __initfunc(), check_modem_status(), dz_interrupt(), dz_start(), dz_stop(), get_lsr_info(), receive_chars(), send_break(), shutdown(), and startup().

static void dz_interrupt int  irq,
void *  dev,
struct pt_regs regs
[static]
 

Definition at line 363 of file dz.c.

References DZ_CSR, dz_in(), DZ_RDONE, DZ_TRDY, LINE, receive_chars(), status, and transmit_chars().

Referenced by __initfunc().

Here is the call graph for this function:

static int dz_ioctl struct tty_struct *  tty,
struct file file,
unsigned int  cmd,
unsigned long  arg
[static]
 

Definition at line 914 of file dz.c.

References CLOCAL, copy_to_user, EIO, ENOIOCTLCMD, error, get_lsr_info(), get_serial_info(), get_user, HZ, put_user, send_break(), set_serial_info(), TCSBRK, TCSBRKP, TIOCGSERIAL, TIOCGSOFTCAR, TIOCSERCONFIG, TIOCSERGETLSR, TIOCSERGSTRUCT, TIOCSERGWILD, TIOCSERSWILD, TIOCSSERIAL, TIOCSSOFTCAR, tty_check_change(), tty_wait_until_sent(), verify_area(), and VERIFY_WRITE.

Referenced by __initfunc().

Here is the call graph for this function:

static int dz_open struct tty_struct *  tty,
struct file filp
[static]
 

Definition at line 1230 of file dz.c.

References block_til_ready(), change_speed(), dz_serial::count, current, DZ_KEYBOARD, DZ_MOUSE, DZ_NB_PORT, DZ_SPLIT_TERMIOS, ENODEV, line, MINOR, SERIAL_TYPE_NORMAL, startup(), and dz_serial::tty.

Referenced by __initfunc().

Here is the call graph for this function:

static void dz_out struct dz_serial info,
unsigned  offset,
unsigned short  value
[inline, static]
 

Definition at line 114 of file dz.c.

References addr, and dz_serial::port.

Referenced by __initfunc(), change_speed(), dz_start(), dz_stop(), send_break(), shutdown(), startup(), and transmit_chars().

static void dz_sched_event struct dz_serial info,
int  event
[inline, static]
 

Definition at line 186 of file dz.c.

References dz_serial::event, mark_bh, queue_task, SERIAL_BH, and dz_serial::tqueue.

Referenced by transmit_chars().

static void dz_send_xchar struct tty_struct *  tty,
char  ch
[static]
 

Definition at line 800 of file dz.c.

References dz_start(), dz_serial::tty, and dz_serial::x_char.

Referenced by __initfunc().

Here is the call graph for this function:

static void dz_set_termios struct tty_struct *  tty,
struct termios old_termios
[static]
 

Definition at line 989 of file dz.c.

References termios::c_cflag, change_speed(), CRTSCTS, and dz_start().

Referenced by __initfunc().

Here is the call graph for this function:

static void dz_start struct tty_struct *  tty  )  [static]
 

Definition at line 145 of file dz.c.

References dz_in(), dz_out(), DZ_TCR, dz_serial::line, mask, and tmp.

Referenced by __initfunc(), dz_flush_chars(), dz_send_xchar(), dz_set_termios(), and dz_write().

Here is the call graph for this function:

static void dz_stop struct tty_struct *  tty  )  [static]
 

Definition at line 132 of file dz.c.

References dz_in(), dz_out(), DZ_TCR, dz_serial::line, mask, and tmp.

Referenced by __initfunc(), shutdown(), and transmit_chars().

Here is the call graph for this function:

static void dz_throttle struct tty_struct *  tty  )  [static]
 

Definition at line 780 of file dz.c.

References dz_serial::x_char.

Referenced by __initfunc().

static void dz_unthrottle struct tty_struct *  tty  )  [static]
 

Definition at line 788 of file dz.c.

References dz_serial::x_char.

Referenced by __initfunc().

static int dz_write struct tty_struct *  tty,
int  from_user,
const unsigned char *  buf,
int  count
[static]
 

Definition at line 640 of file dz.c.

References c, cli, copy_from_user, down(), dz_start(), DZ_XMIT_SIZE, EFAULT, memcpy, MIN, restore_flags, ret, save_flags, tmp_buf, tmp_buf_sem, tmp_buffer, dz_serial::tty, up, dz_serial::xmit_buf, dz_serial::xmit_cnt, and dz_serial::xmit_head.

Referenced by __initfunc().

Here is the call graph for this function:

static int dz_write_room struct tty_struct *  tty  )  [static]
 

Definition at line 726 of file dz.c.

References DZ_XMIT_SIZE, ret, and dz_serial::xmit_cnt.

Referenced by __initfunc().

static int get_lsr_info struct dz_serial info,
unsigned int *  value
[static]
 

Definition at line 877 of file dz.c.

References dz_in(), DZ_LPR, put_user, and status.

Here is the call graph for this function:

static int get_serial_info struct dz_serial info,
struct serial_struct retinfo
[static]
 

Definition at line 814 of file dz.c.

References dz_serial::baud_base, dz_serial::close_delay, dz_serial::closing_wait, copy_to_user, EFAULT, dz_serial::flags, dz_serial::line, memset, dz_serial::port, SERIAL, and dz_serial::type.

static void receive_chars struct dz_serial info_in  )  [inline, static]
 

Definition at line 200 of file dz.c.

References debug_console(), DZ_DVAL, DZ_FERR, dz_in(), DZ_OERR, DZ_PERR, DZ_RBUF, async_icount::frame, dz_serial::icount, ignore, dz_serial::ignore_status_mask, dz_serial::is_console, keypress_wait, LINE, async_icount::overrun, async_icount::parity, dz_serial::read_status_mask, async_icount::rx, status, tmp, dz_serial::tty, tty, tty_flip_buffer_push, and UCHAR.

Here is the call graph for this function:

static void send_break struct dz_serial info,
int  duration
[static]
 

Definition at line 887 of file dz.c.

References cli, current, dz_in(), dz_out(), DZ_TCR, dz_serial::line, mask, dz_serial::port, restore_flags, save_flags, schedule_timeout, TASK_INTERRUPTIBLE, and tmp.

Here is the call graph for this function:

static int set_serial_info struct dz_serial info,
struct serial_struct new_info
[static]
 

Definition at line 835 of file dz.c.

References dz_serial::baud_base, dz_serial::close_delay, dz_serial::closing_wait, copy_from_user, dz_serial::count, EBUSY, EFAULT, EPERM, startup(), and dz_serial::type.

Here is the call graph for this function:

static void show_serial_version void   )  [static]
 

Definition at line 1279 of file dz.c.

References dz_name, dz_version, and printk.

static void shutdown struct dz_serial info  )  [static]
 

Definition at line 503 of file dz.c.

References dz_serial::cflags, cli, DZ_CREAD, dz_in(), DZ_LPR, DZ_MODEM_DTR, dz_out(), dz_stop(), DZ_TCR, free_page, HUPCL, dz_serial::is_initialized, restore_flags, save_flags, set_bit, tmp, dz_serial::tty, and dz_serial::xmit_buf.

Here is the call graph for this function:

static int startup struct dz_serial info  )  [static]
 

Definition at line 440 of file dz.c.

References change_speed(), clear_bit, cli, DZ_CSR, dz_in(), DZ_MSE, dz_out(), DZ_RIE, DZ_TIE, ENODEV, ENOMEM, dz_serial::is_initialized, page, dz_serial::port, restore_flags, save_flags, set_bit, tmp, dz_serial::tty, dz_serial::xmit_buf, dz_serial::xmit_cnt, dz_serial::xmit_head, and dz_serial::xmit_tail.

Here is the call graph for this function:

static void transmit_chars struct dz_serial info  )  [inline, static]
 

Definition at line 302 of file dz.c.

References DZ_EVENT_WRITE_WAKEUP, dz_out(), dz_sched_event(), dz_stop(), DZ_TDR, DZ_XMIT_SIZE, dz_serial::icount, tmp, dz_serial::tty, async_icount::tx, WAKEUP_CHARS, dz_serial::x_char, dz_serial::xmit_buf, dz_serial::xmit_cnt, and dz_serial::xmit_tail.

Here is the call graph for this function:


Variable Documentation

struct wait_queue* keypress_wait
 

Definition at line 70 of file keyboard.c.

Referenced by keyboard_wait_for_keypress(), mac_put_queue(), put_queue(), puts_queue(), receive_chars(), and zs_console_wait_key().

struct dz_serial* lines[4] [static]
 

Definition at line 78 of file dz.c.

int(* prom_printf)(char *,...)
 

Definition at line 29 of file arch/mips/dec/prom/init.c.

unsigned char tmp_buffer[256] [static]
 

Definition at line 79 of file dz.c.

Referenced by dz_write().