Logo Search packages:      
Sourcecode: linux version File versions  Download package

omap-serial.h

/*
 * Driver for OMAP-UART controller.
 * Based on drivers/serial/8250.c
 *
 * Copyright (C) 2010 Texas Instruments.
 *
 * Authors:
 *    Govindraj R <govindraj.raja@ti.com>
 *    Thara Gopinath    <thara@ti.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#ifndef __OMAP_SERIAL_H__
#define __OMAP_SERIAL_H__

#include <linux/serial_core.h>
#include <linux/platform_device.h>

#include <plat/mux.h>

#define DRIVER_NAME     "omap_uart"

/*
 * Use tty device name as ttyO, [O -> OMAP]
 * in bootargs we specify as console=ttyO0 if uart1
 * is used as console uart.
 */
#define OMAP_SERIAL_NAME      "ttyO"

#define OMAP_MODE13X_SPEED    230400

/* WER = 0x7F
 * Enable module level wakeup in WER reg
 */
#define OMAP_UART_WER_MOD_WKUP      0X7F

/* Enable XON/XOFF flow control on output */
#define OMAP_UART_SW_TX       0x04

/* Enable XON/XOFF flow control on input */
#define OMAP_UART_SW_RX       0x04

#define OMAP_UART_SYSC_RESET  0X07
#define OMAP_UART_TCR_TRIG    0X0F
#define OMAP_UART_SW_CLR      0XF0
#define OMAP_UART_FIFO_CLR    0X06

#define OMAP_UART_DMA_CH_FREE -1

#define RX_TIMEOUT            (3 * HZ)
#define OMAP_MAX_HSUART_PORTS 4

#define MSR_SAVE_FLAGS        UART_MSR_ANY_DELTA

00059 struct omap_uart_port_info {
      bool              dma_enabled;      /* To specify DMA Mode */
      unsigned int            uartclk;    /* UART clock rate */
      void __iomem            *membase;   /* ioremap cookie or NULL */
      resource_size_t         mapbase;    /* resource base */
      unsigned long           irqflags;   /* request_irq flags */
      upf_t             flags;            /* UPF_* flags */
};

00068 struct uart_omap_dma {
      u8                uart_dma_tx;
      u8                uart_dma_rx;
      int               rx_dma_channel;
      int               tx_dma_channel;
      dma_addr_t        rx_buf_dma_phys;
      dma_addr_t        tx_buf_dma_phys;
      unsigned int            uart_base;
      /*
       * Buffer for rx dma.It is not required for tx because the buffer
       * comes from port structure.
       */
      unsigned char           *rx_buf;
      unsigned int            prev_rx_dma_pos;
      int               tx_buf_size;
      int               tx_dma_used;
      int               rx_dma_used;
      spinlock_t        tx_lock;
      spinlock_t        rx_lock;
      /* timer to poll activity on rx dma */
      struct timer_list rx_timer;
      int               rx_buf_size;
      int               rx_timeout;
};

00093 struct uart_omap_port {
      struct uart_port  port;
      struct uart_omap_dma    uart_dma;
      struct platform_device  *pdev;

      unsigned char           ier;
      unsigned char           lcr;
      unsigned char           mcr;
      unsigned char           fcr;
      unsigned char           efr;

      int               use_dma;
      /*
       * Some bits in registers are cleared on a read, so they must
       * be saved whenever the register is read but the bits will not
       * be immediately processed.
       */
      unsigned int            lsr_break_flag;
      unsigned char           msr_saved_flags;
      char              name[20];
      unsigned long           port_activity;
};

#endif /* __OMAP_SERIAL_H__ */

Generated by  Doxygen 1.6.0   Back to index