Path: blob/master/arch/mn10300/kernel/mn10300-serial.h
10817 views
/* MN10300 On-chip serial port driver definitions1*2* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.3* Written by David Howells ([email protected])4*5* This program is free software; you can redistribute it and/or6* modify it under the terms of the GNU General Public Licence7* as published by the Free Software Foundation; either version8* 2 of the Licence, or (at your option) any later version.9*/10#ifndef _MN10300_SERIAL_H11#define _MN10300_SERIAL_H1213#ifndef __ASSEMBLY__14#include <linux/serial_core.h>15#include <linux/termios.h>16#endif1718#include <asm/page.h>19#include <asm/serial-regs.h>2021#define NR_PORTS 3 /* should be set 3 or 9 or 16 */2223#define MNSC_BUFFER_SIZE +(PAGE_SIZE / 2)2425/* intr_flags bits */26#define MNSCx_RX_AVAIL 0x0127#define MNSCx_RX_OVERF 0x0228#define MNSCx_TX_SPACE 0x0429#define MNSCx_TX_EMPTY 0x083031#ifndef __ASSEMBLY__3233struct mn10300_serial_port {34char *rx_buffer; /* reception buffer base */35unsigned rx_inp; /* pointer to rx input offset */36unsigned rx_outp; /* pointer to rx output offset */37u8 tx_xchar; /* high-priority XON/XOFF buffer */38u8 tx_break; /* transmit break request */39u8 intr_flags; /* interrupt flags */40volatile u16 *rx_icr; /* Rx interrupt control register */41volatile u16 *tx_icr; /* Tx interrupt control register */42int rx_irq; /* reception IRQ */43int tx_irq; /* transmission IRQ */44int tm_irq; /* timer IRQ */4546const char *name; /* name of serial port */47const char *rx_name; /* Rx interrupt handler name of serial port */48const char *tx_name; /* Tx interrupt handler name of serial port */49const char *tm_name; /* Timer interrupt handler name */50unsigned short type; /* type of serial port */51unsigned char isconsole; /* T if it's a console */52volatile void *_iobase; /* pointer to base of I/O control regs */53volatile u16 *_control; /* control register pointer */54volatile u8 *_status; /* status register pointer */55volatile u8 *_intr; /* interrupt register pointer */56volatile void *_rxb; /* receive buffer register pointer */57volatile void *_txb; /* transmit buffer register pointer */58volatile u16 *_tmicr; /* timer interrupt control register */59volatile u8 *_tmxmd; /* baud rate timer mode register */60volatile u16 *_tmxbr; /* baud rate timer base register */6162/* this must come down here so that assembly can use BSET to access the63* above fields */64struct uart_port uart;6566unsigned short rx_brk; /* current break reception status */67u16 tx_cts; /* current CTS status */68int gdbstub; /* preemptively stolen by GDB stub */6970u8 clock_src; /* clock source */71#define MNSCx_CLOCK_SRC_IOCLK 072#define MNSCx_CLOCK_SRC_IOBCLK 17374u8 div_timer; /* timer used as divisor */75#define MNSCx_DIV_TIMER_16BIT 076#define MNSCx_DIV_TIMER_8BIT 17778u16 options; /* options */79#define MNSCx_OPT_CTS 0x00018081unsigned long ioclk; /* base clock rate */82};8384#ifdef CONFIG_MN10300_TTYSM085extern struct mn10300_serial_port mn10300_serial_port_sif0;86#endif8788#ifdef CONFIG_MN10300_TTYSM189extern struct mn10300_serial_port mn10300_serial_port_sif1;90#endif9192#ifdef CONFIG_MN10300_TTYSM293extern struct mn10300_serial_port mn10300_serial_port_sif2;94#endif9596extern struct mn10300_serial_port *mn10300_serial_ports[];9798struct mn10300_serial_int {99struct mn10300_serial_port *port;100asmlinkage void (*vdma)(void);101};102103extern struct mn10300_serial_int mn10300_serial_int_tbl[];104105extern asmlinkage void mn10300_serial_vdma_interrupt(void);106extern asmlinkage void mn10300_serial_vdma_rx_handler(void);107extern asmlinkage void mn10300_serial_vdma_tx_handler(void);108109#endif /* __ASSEMBLY__ */110111#if defined(CONFIG_GDBSTUB_ON_TTYSM0)112#define SCgSTR SC0STR113#define SCgRXB SC0RXB114#define SCgRXIRQ SC0RXIRQ115#elif defined(CONFIG_GDBSTUB_ON_TTYSM1)116#define SCgSTR SC1STR117#define SCgRXB SC1RXB118#define SCgRXIRQ SC1RXIRQ119#elif defined(CONFIG_GDBSTUB_ON_TTYSM2)120#define SCgSTR SC2STR121#define SCgRXB SC2RXB122#define SCgRXIRQ SC2RXIRQ123#endif124125#endif /* _MN10300_SERIAL_H */126127128