Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

#ifndef HAYESESP_H
#define HAYESESP_H

struct hayes_esp_config {
        short flow_on;
        short flow_off;
        short rx_trigger;
        short tx_trigger;
        short pio_threshold;
        unsigned char rx_timeout;
        char dma_channel;
};

#ifdef __KERNEL__

#define ESP_DMA_CHANNEL   0
#define ESP_RX_TRIGGER    768
#define ESP_TX_TRIGGER    768
#define ESP_FLOW_OFF      1016
#define ESP_FLOW_ON       944
#define ESP_RX_TMOUT      128
#define ESP_PIO_THRESHOLD 32

#define ESP_IN_MAJOR    57      /* major dev # for dial in */
#define ESP_OUT_MAJOR   58      /* major dev # for dial out */
#define ESPC_SCALE      3
#define UART_ESI_BASE   0x00
#define UART_ESI_SID    0x01
#define UART_ESI_RX     0x02
#define UART_ESI_TX     0x02
#define UART_ESI_CMD1   0x04
#define UART_ESI_CMD2   0x05
#define UART_ESI_STAT1  0x04
#define UART_ESI_STAT2  0x05
#define UART_ESI_RWS    0x07

#define UART_IER_DMA_TMOUT      0x80
#define UART_IER_DMA_TC         0x08

#define ESI_SET_IRQ             0x04
#define ESI_SET_DMA_TMOUT       0x05
#define ESI_SET_SRV_MASK        0x06
#define ESI_SET_ERR_MASK        0x07
#define ESI_SET_FLOW_CNTL       0x08
#define ESI_SET_FLOW_CHARS      0x09
#define ESI_SET_FLOW_LVL        0x0a
#define ESI_SET_TRIGGER         0x0b
#define ESI_SET_RX_TIMEOUT      0x0c
#define ESI_SET_FLOW_TMOUT      0x0d
#define ESI_WRITE_UART          0x0e
#define ESI_READ_UART           0x0f
#define ESI_SET_MODE            0x10
#define ESI_GET_ERR_STAT        0x12
#define ESI_GET_UART_STAT       0x13
#define ESI_GET_RX_AVAIL        0x14
#define ESI_GET_TX_AVAIL        0x15
#define ESI_START_DMA_RX        0x16
#define ESI_START_DMA_TX        0x17
#define ESI_ISSUE_BREAK         0x1a
#define ESI_FLUSH_RX            0x1b
#define ESI_FLUSH_TX            0x1c
#define ESI_SET_BAUD            0x1d
#define ESI_SET_ENH_IRQ         0x1f
#define ESI_SET_REINTR          0x20
#define ESI_SET_PRESCALAR       0x23
#define ESI_NO_COMMAND          0xff

#define ESP_STAT_RX_TIMEOUT     0x01
#define ESP_STAT_DMA_RX         0x02
#define ESP_STAT_DMA_TX         0x04
#define ESP_STAT_NEVER_DMA      0x08
#define ESP_STAT_USE_PIO        0x10

#define ESP_EVENT_WRITE_WAKEUP  0
#define ESP_MAGIC               0x53ee
#define ESP_XMIT_SIZE           4096

struct esp_struct {
        int                     magic;
        int                     port;
        int                     irq;
        int                     flags;          /* defined in tty.h */
        struct tty_struct       *tty;
        int                     read_status_mask;
        int                     ignore_status_mask;
        int                     timeout;
        int                     stat_flags;
        int                     custom_divisor;
        int                     close_delay;
        unsigned short          closing_wait;
        unsigned short          closing_wait2;
        int                     IER;    /* Interrupt Enable Register */
        int                     MCR;    /* Modem control register */
        unsigned long           event;
        unsigned long           last_active;
        int                     line;
        int                     count;      /* # of fd on device */
        int                     blocked_open; /* # of blocked opens */
        unsigned char           *xmit_buf;
        int                     xmit_head;
        int                     xmit_tail;
        int                     xmit_cnt;
        struct work_struct      tqueue;
        struct work_struct      tqueue_hangup;
        wait_queue_head_t       open_wait;
        wait_queue_head_t       close_wait;
        wait_queue_head_t       delta_msr_wait;
        wait_queue_head_t       break_wait;
        struct async_icount     icount; /* kernel counters for the 4 input interrupts */
        struct hayes_esp_config config; /* port configuration */
        struct esp_struct       *next_port; /* For the linked list */
};

struct esp_pio_buffer {
        unsigned char data[1024];
        struct esp_pio_buffer *next;
};

#endif /* __KERNEL__ */


#endif /* ESP_H */