⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ep93xx_irda.h

📁 一个2.4.21版本的嵌入式linux内核
💻 H
字号:
 /********************************************************************* *                 * Filename:      ep93xx_irda.h * Version:       0.2 * Description:   Header for the EP93xx SOC IrDA driver. * Status:        Experimental. * * Copyright 2003 Cirrus Logic, Inc. * * Based on the ali-ircc.c implementation: *      Author:        Benjamin Kong <benjamin_kong@ali.com.tw> *      Created at:    2000/10/16 03:46PM *      Modified at:   2001/1/3 02:55PM *      Modified by:   Benjamin Kong <benjamin_kong@ali.com.tw> *  *      Copyright (c) 2000 Benjamin Kong <benjamin_kong@ali.com.tw> *      All Rights Reserved *       *      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. *   * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to: *      Free Software Foundation, Inc. *      59 Temple Place, Suite 330  *      Boston, MA  02111-1307  USA ********************************************************************/#ifndef EP93XX_IRDA_H#define EP93XX_IRDA_H#include <linux/time.h>#include <linux/spinlock.h>#include <linux/pm.h>#include <asm/io.h>//#include <regmap.h>//#include <regs_syscon.h>/* * Number of DMA channels used */#define DMA_COUNT 3/* * TX/RX window queues */#define MAX_TX_WINDOW 7#define MAX_RX_WINDOW 7struct ep93xx_chip {    char *name;    int iSIR_IRQ, iMFIR_IRQ;    ep93xx_dma_dev_t eSIR_DMATx;    ep93xx_dma_dev_t eMFIR_DMATx;    ep93xx_dma_dev_t eMFIR_DMARx;	int (*init)(struct ep93xx_chip *chip); };typedef struct ep93xx_chip ep93xx_chip_t;/* For storing entries in the status FIFO */struct st_fifo_entry {	int status;	int len;};struct st_fifo {	struct st_fifo_entry entries[MAX_RX_WINDOW];	int pending_bytes;	int head;	int tail;	int len;};struct frame_cb {	void *start; /* Start of frame in DMA mem */	int len;     /* Lenght of frame in DMA mem */};struct tx_fifo {	struct frame_cb queue[MAX_TX_WINDOW]; /* Info about frames in queue */	int             ptr;                  /* Currently being sent */	int             len;                  /* Length of queue */	int             free;                 /* Next free slot */	void           *tail;                 /* Next free start in DMA mem */};/* Private data for each instance */struct ep93xx_irda_cb {	struct st_fifo st_fifo;         /* Info about received frames */	struct tx_fifo tx_fifo;         /* Info about frames to be transmitted */	struct net_device *netdev;      /* Net device pointer */	struct net_device_stats stats;  /* Net device stats */		struct irlap_cb *irlap;         /* The link layer we are binded with */	struct qos_info qos;            /* QoS capabilities for this device */    int iSIR_irq, iMFIR_irq;        /* Interrupts used */    ep93xx_dma_dev_t ePorts[DMA_COUNT];     /* DMA port ids */    int iDMAh[DMA_COUNT];          /* handles for DMA channels */    dma_addr_t rx_dmaphysh, tx_dmaphysh;    int fifo_size;                  /* FIFO size */    iobuff_t tx_buff;               /* Transmit buffer */    iobuff_t rx_buff;               /* Receive buffer */    char *conv_buf;                 /* Buffer used for SIR conversion */    struct timeval stamp;           /* ? */	struct timeval now;             /* ? */	spinlock_t lock;                /* Used for serializing operations */		__u32 flags;                    /* Interface flags */    __u8 direction;                 /* TX/RX flag */    __u32 speed;                    /* Currently used speed */    __u32 new_speed;                /* New target tx/rx speed */	int index;                      /* Instance index */	  	int suspended;                  /* APM suspend flag */    struct pm_dev *dev;             /* Power Management device */};/* * DMA array handle index meanings */#define DMA_SIR_TX                          0#define DMA_MFIR_TX                         1#define DMA_MFIR_RX                         2/* * Directional defines */#define DIR_TX                              0x01#define DIR_RX                              0x02#define DIR_BOTH                            0x03/* * Modes support flag defines. */#define CLK_SIR				    0x01#define CLK_MIR				    0x02#define CLK_FIR				    0x04/* Name friendly bit defines for register accesses *//* UART2/SIR */#define U2RSR_OvnErr                        0x08#define U2RSR_BrkErr                        0x04#define U2RSR_PtyErr                        0x02#define U2RSR_FrmErr                        0x01#define U2CRH_WLen                          0x60#define U2CRH_FEn                           0x10#define U2CRH_Stp2                          0x08#define U2CRH_EPS                           0x04#define U2CRH_PEn                           0x02#define U2CRH_Brk                           0x01#define U2CR_LoopBk                         0x80#define U2CR_RxTO                           0x40#define U2CR_TxIrq                          0x20#define U2CR_RxIrq                          0x10#define U2CR_MdmStsIrq                      0x08#define U2CR_SIRLowPwr                      0x04#define U2CR_SIR                            0x02#define U2CR_UART                           0x01#define U2FR_TXFE                           0x80#define U2FR_RXFF                           0x40#define U2FR_TXFF                           0x20#define U2FR_RXFE                           0x10#define U2FR_BUSY                           0x08#define U2FR_DCD                            0x04#define U2FR_DSR                            0x02#define U2FR_CTS                            0x01#define U2IICR_RXTOIRQ                      0x08#define U2IICR_TXIRQ                        0x04#define U2IICR_RXIRQ                        0x02#define U2IICR_MDMIRQ                       0x01#define U2DMACR_DMAErr                      0x04#define U2DMACR_TXDMA                       0x02#define U2DMACR_RXDMA                       0x01#define IrENABLE_SIR                        0x01/* IrDA block - MIR/FIR */#define IrENABLE_FIR                        0x03#define IrENABLE_MIR                        0x02#define IrCONTROL_RXRP                      0x40#define IrCONTROL_TXRP                      0x20#define IrCONTROL_RXON                      0x10#define IrCONTROL_TXON                      0x08#define IrCONTROL_TXUNDER                   0x04#define IrCONTROL_MIRBR                     0x02#define IrFLAG_TXBUSY                       0x200#define IrFLAG_RXINFRM                      0x100#define IrFLAG_RXSYNC                       0x80#define IrFLAG_EOF                          0x40#define IrFLAG_WIDTHST                      0x30#define IrFLAG_FIRFE                        0x08#define IrFLAG_RXOR                         0x04#define IrFLAG_CRCERR                       0x02#define IrFLAG_RXABORT                      0x01#define IrRIB_ByteCt                        0x7FF0#define IrRIB_BUFFE                         0x08#define IrRIB_BUFOR                         0x04#define IrRIB_BUFCRCERR                     0x02#define IrRIB_BUFRXABORT                    0x01#define IrDMACR_DMAERR                      0x04#define IrDMACR_DMATXE                      0x02#define IrDMACR_DMARXE                      0x01#define MFISR_RXFL                          0x40#define MFISR_RXIL                          0x20#define MFISR_RXFC                          0x10#define MFISR_RXFS                          0x08#define MFISR_TXFABORT                      0x04#define MFISR_TXFC                          0x02#define MFISR_TXSR                          0x01#define MFIMR_RXFL                          0x40#define MFIMR_RXIL                          0x20#define MFIMR_RXFC                          0x10#define MFIMR_RXFS                          0x08#define MFIMR_TXABORT                       0x04#define MFIMR_TXFC                          0x02#define MFIMR_TXFS                          0x01#define MFIIR_RXFL                          0x40#define MFIIR_RXIL                          0x20#define MFIIR_RXFC                          0x10#define MFIIR_RXFS                          0x08#define MFIIR_TXABORT                       0x04#define MFIIR_TXFC                          0x02#define MFIIR_TXFS                          0x01#endif /* EP93XX_IRDA_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -