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

📄 gspi_io.h

📁 marvell wifi driver GSPI-8385-LINUX-OMAP1510-5.0.10.p0-144-src.rar
💻 H
字号:
#ifndef     __GSPI_IO_H
#define     __GSPI_IO_H

#include <linux/config.h>
#include <linux/delay.h>
#include <linux/ioctl.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/errno.h>
#include <linux/sched.h>
                                                                                                                             
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#include <asm/irq.h>
#include <asm/dma.h>
#include <asm/arch/mcbsp.h>

#ifndef	FALSE
#define	FALSE		0
#endif

#ifndef	TRUE
#define	TRUE		1
#endif

#ifndef	NO
#define	NO		0
#endif

#ifndef	YES
#define	YES		1
#endif

typedef unsigned char		BOOL;

#define TIMEOUT 		(HZ * 2)
#define GSPI_WRITE		0x8000

#ifdef EXTERN
#undef EXTERN
#endif

#ifndef __GSPI_IO_CORE__
#define EXTERN  extern
#else
#define EXTERN
#endif

typedef enum _gspic_reg_type {
        GSPI_REG_TYPE_CARD = 0,
        GSPI_REG_TYPE_USER,
} gspic_reg_type_t;

typedef struct gspihost_info		gspihost_info_t;
typedef gspihost_info_t			*gspihost_info_p;
typedef struct gspi_card_rec		*gspi_card_rec_p;
typedef struct gspi_card_rec            io_card_rec_t;
typedef io_card_rec_t                   *io_card_rec_p;
typedef struct gspi_notifier_rec 	gspi_notifier_rec_t;
typedef gspi_notifier_rec_t	 	*gspi_notifier_rec_p;
typedef int (*gspi_notifier_fn_p) 	(gspi_card_rec_p );
typedef gspic_reg_type_t 		ioc_reg_type_t;

struct gspihost_info {
	struct completion complete;
	struct completion dmacomplete;
	struct timer_list timer;
	struct timer_list dmatimer;
	spinlock_t lock;
	int irq;
	struct {
		dma_regs_t *dma_regs_tx;
		dma_regs_t *dma_regs_rx;
		dma_addr_t dmaphys_tx;
		dma_addr_t dmaphys_tx_rx;
		dma_addr_t dmaphys_rx;
		char *dmabuf_tx;
		char *dmabuf_rx;
		char *dmabuf_tx_rx;
		wait_queue_head_t queue_tx;
		wait_queue_head_t queue_rx;
		int dma_txack;
		int dma_rxack;
		int error;
	} d;
	struct semaphore host_sem;
	gspi_card_rec_p card;
} __attribute__((packed));

struct gspi_card_rec
{
        u8                      magic[4];
        gspihost_info_p         ctrlr;          // Back Reference to Host Controller
        int                     (*add)(gspi_card_rec_p card);
        int                     (*remove)(gspi_card_rec_p card);
        void                    (*user_isr)(int, void*, struct pt_regs*);
        void                    *user_arg;
	u16			chiprev;
} __attribute__((packed));

struct gspi_notifier_rec
{
	int 	(*add)(gspi_card_rec_p card);
	int 	(*remove)(gspi_card_rec_p card);
	void 	(*user_isr)(int, void*, struct pt_regs*);
};

#define BUFSIZE 8 * 1024
#define PCKCNT 8
#define MCBSP2_DEVID_TX 16
#define MCBSP2_DEVID_RX 17
#define GSPI_OK 0

/********** DMA bit specifications ***********/

#define CSDP_DST_TIPB (3 << 9)
#define CSDP_SRC_TIPB (3 << 2)
#define CSDP_DATA_TYPE_16 (0x01)
#define CCR_DST_POST_INCREMENTAL_ADDR (0x01 << 14)
#define CCR_SRC_POST_INCREMENTAL_ADDR (0x01 << 12)
#define CCR_AUTO_INIT (0x01 << 8)
#define CICR_BLOCK_IE (0x01 << 5)
#define CICR_DROP_IE (0x01 << 1)
#define CICR_TOUT_IE (0x01)

/********* GPIO bit definitions *************/

#define GPIO(n) (1 << n)

EXTERN int gspi_read_reg(gspi_card_rec_p cardp, u16 reg, u16 *data);
EXTERN int gspi_write_reg(gspi_card_rec_p cardp, u16 reg, u16 data);
EXTERN int gspi_read_data(gspi_card_rec_p cardp,
				u16 *data, u16 size);
EXTERN int gspi_write_data(gspi_card_rec_p cardp,
				u16 *data, u16 size);
EXTERN int gspi_read_data_direct(gspi_card_rec_p cardp,
				u8 *data, u16 reg, u16 size);
EXTERN int gspi_write_data_direct(gspi_card_rec_p cardp,
				u8 *data, u16 reg, u16 size);
EXTERN int gspi_register_irq(gspihost_info_p);
EXTERN void gspi_unregister_irq(gspihost_info_p);
EXTERN int reinitialize_hw(gspihost_info_p gspiinfo);
EXTERN void gspi_reset(void);
EXTERN gspi_notifier_rec_p register_user(gspi_notifier_rec_p notifierp);
EXTERN void unregister_user(gspi_notifier_rec_p notifierp);

#endif /* __GSPI_IO_H */

⌨️ 快捷键说明

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