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

📄 hal_intf.h

📁 linux下的usb开发
💻 H
📖 第 1 页 / 共 2 页
字号:
#define		DC_RWKUPCS				0x0008  /* bit 3:Remote wake up on !CS */#define		DC_DACK_POLARITY		0x0020	/* bit 5:!DACK polarity High */#define		DC_DREQ_POLARITY		0x0040	/* bit 6:!DREQ polarity High */#define		DC_DACK_ONLY			0x0080	/* bit 7: DACK only DMA mode */#define		DC_CLK_DIV				0x0F00	/* bit 8-11: Clock Division */#define		DC_CLK_RUN				0x1000	/* bit 12: always run the clock */#define		DC_NOLAZY_CLK			0x2000	/* bit 13:	No lazy clock */#define		DC_EXT_PLUP				0x4000	/* bit 14: ext pullup res on D+ *//* DC_INT_REG &DC_INT_EN_REG */#define 	DC_RESET_INT			0x00000001	/* bit0: reset interrupt */#define 	DC_RESUME_INT      		0x00000002	/* bit1: resume interrupt */#define 	DC_SUSPEND_INT			0x00000004	/* bit2: suspend interrupt */#define 	DC_EOT_INT 				0x00000008	/* bit3: end of transfer int */#define 	DC_SOF_INT 				0x00000010  /* bit4: start of frame int */#define 	DC_PSOF_INT				0x00000020	/* bit5: pseudo sof int */#define 	DC_SP_EOT_INT			0x00000040	/* bit6: short packet int */#define		DC_BUS_STS_INT			0x00000080	/* bit7: bus status */#define 	DC_EPOUT_INT			0x00000100	/* bit8: endpoint 0 out int */#define 	DC_EPIN_INT				0x00000200  /* bit9: endpoint 0 in int */#define 	DC_EP1_INT				0x00000400	/* bit10: endpoint 1 int */#define 	DC_EP2_INT				0x00000800	/* bit11: endpoint 2 int */#define 	DC_EP3_INT				0x00001000	/* bit12: endpoint 3 int */#define 	DC_EP4_INT				0x00002000	/* bit13: endpoint 4 int */#define 	DC_EP5_INT				0x00004000	/* bit14: endpoint 5 int */#define 	DC_EP6_INT				0x00008000	/* bit15: endpoint 6 int */#define 	DC_EP7_INT				0x00010000	/* bit16: endpoint 7 int */#define 	DC_EP8_INT				0x00020000	/* bit17: endpoint 8 int */#define 	DC_EP9_INT				0x00040000	/* bit18: endpoint 9 int */#define 	DC_EP10_INT				0x00080000	/* bit19: endpoint 10 int */#define 	DC_EP11_INT				0x00100000	/* bit20: endpoint 11 int */#define 	DC_EP12_INT				0x00200000	/* bit21: endpoint 12 int */#define 	DC_EP13_INT				0x00400000	/* bit22: endpoint 13 int */#define 	DC_EP14_INT				0x00800000	/* bit23: endpoint 14 int *//* * DC endpoint interrupt for endpoint (x: 1<=x<=14) */#define		DC_EP_INT(x)			((0x00000200) << x)/***** OTG Registers ****/#define		OTG_CTRL_REG			0x62	/* OTG Control Register */#define		OTG_STATUS_REG			0x67	/* OTG Status Register (read only) */#define		OTG_INT_REG				0x68	/* OTG Interrupt Register */#define		OTG_INT_EN_REG			0x69	/* OTG interrupt Enable register */#define		OTG_TIMER_REG			0x6A	/* OTG timer register */#define		OTG_ALT_TIMER_REG		0x6C	/* OTG alternate timer register											   used for caliberation *//* OTG_INT_REG */#define 		OTG_ID_INT			0x0001#define 		OTG_A_VBUS_VLD_INT	0x0002#define 		OTG_B_SESS_END_INT	0x0004#define			OTG_A_SESS_VLD_INT	0x0008#define			OTG_B_SESS_VLD_INT	0x0010#define 		OTG_RMT_CONN_INT	0x0020#define 		OTG_SUSPEND_INT		0x0040#define 		OTG_RESUME_INT		0x0080#define 		OTG_SRP_DET_INT		0x0100#define 		OTG_SE0_SRP_INT		0x0200#define 		OTG_TMR_INT			0x0400#define			OTG_INT_MASK		(OTG_ID_INT | OTG_A_VBUS_VLD_INT | OTG_B_SESS_END_INT | OTG_A_SESS_VLD_INT | OTG_B_SESS_VLD_INT | OTG_RMT_CONN_INT | OTG_SUSPEND_INT | OTG_RESUME_INT | OTG_SRP_DET_INT | OTG_SE0_SRP_INT | OTG_TMR_INT )#include <linux/list.h>struct isp1362_dev {	struct	isp1362_driver *driver;			/* which driver has allocated this 											device */	void			*driver_data;	/* data private to the driver */	unsigned char	index;		/* local controller (HC/DC/OTG) */	unsigned int	irq;	/* Interrupt Channel allocated for this device */    void (*handler)(struct isp1362_dev *dev, 					void *isr_data);	/* Interrupt Serrvice Routine */	void			*isr_data;			/* isr data of the driver */	unsigned long	int_reg;			/* Interrupt register */	unsigned long	alt_int_reg;			/* Interrupt register 2*/	struct resource	*io_res;	unsigned long	io_base;			/* Start Io address space for this device */	unsigned long	io_len;				/* IO address space length for this device */	unsigned long	io_data;			/* IO Port for Data access */	unsigned long	io_cmd;				/* IO Port for Command access */	unsigned short	chip_id;			/* Chip Id */	char			name[80];			/* device name */	int				active;				/* device status */	/* DMA resources should come TODO */	unsigned long	dma;}isp1362_dev_t ;struct isp1362_driver {	struct list_head node;	char 			*name;	unsigned long	index;						/* HC or DC or OTG */	int (*probe)(struct isp1362_dev *dev);		/* New device inserted */	void (*remove)(struct isp1362_dev *dev);	/* Device removed (NULL if not a hot-plug capable driver) */#ifdef CONFIG_PM	void (*suspend)(struct isp1362_dev *dev);	/* Device suspended */	void (*resume)(struct isp1362_dev *dev);	/* Device woken up */#endif /* CONFIG_PM */} isp_1362_driver_t;extern	int		isp1362_register_driver(struct isp1362_driver *drv);extern	void	isp1362_unregister_driver(struct isp1362_driver *drv);/* these external functions for porting  */extern	int	isp1362_check_io_region(struct isp1362_dev *dev);extern	struct resource*	isp1362_request_io_region(struct isp1362_dev	*dev);extern	void isp1362_release_io_region(struct isp1362_dev *dev);extern int isp1362_request_irq(void (*handler)(struct isp1362_dev *dev, void *isr_data),                       struct isp1362_dev *dev, void *isr_data);extern void isp1362_free_irq(struct isp1362_dev *dev, void *isr_data);extern __u16	isp1362_reg_read16(struct isp1362_dev *dev, __u16 reg);extern void	isp1362_reg_write16(struct isp1362_dev *dev, __u16 reg, __u16 data);extern __u32	isp1362_reg_read32(struct isp1362_dev *dev, __u16 reg);extern void	isp1362_reg_write32(struct isp1362_dev *dev, __u16 reg, __u32 data);/* DMA relared functions */extern	void*	isp1362_alloc_dma_buff(void);extern	void	isp1362_free_dma_buff(void* dma_buff);extern 	void	isp1362_set_dma_config(unsigned long	controller);extern	int 	isp1362_request_dma(unsigned int dmanr, const char * device_id);extern 	void 	isp1362_free_dma(unsigned int dmanr);extern 	void 	isp1362_enable_dma_tx(unsigned long dmanr, char mode, void *dma_buff);extern 	void 	isp1362_disable_dma_tx(unsigned long dmanr, char mode, void *dma_buff);extern 	void 	isp1362_set_hw_config(struct isp1362_dev *dev);/* The bus interface header file should provide the following macrosisp1362_command(reg,dev)isp1362_read8(dev)isp1362_read16(dev)isp1362_write8(data,dev)isp1362_write16(data,dev)isp1362_printk()isp1362_vendor_idisp1362_product_id*/#ifdef CONFIG_1362_PCI#include "x86pci/hal_pci.h"#endif#ifdef CONFIG_1362_PXA250#include "pxa250/hal_pxa250.h"#endif/* IO Access Functions */#define	 isp1362_reg_read16(dev,reg,data)	\			isp1362_command(reg,dev);\			data = isp1362_read16(dev)#define	 isp1362_reg_write16(dev,reg,data)	\			isp1362_command(reg,dev);\			isp1362_write16(data,dev)#define	 isp1362_reg_read32(dev,reg,data)	\			isp1362_command(reg,dev);\			data = isp1362_read16(dev);\			data |= (isp1362_read16(dev) <<16)#define	 isp1362_reg_write32(dev,reg,data)	\			isp1362_command(reg,dev);\			isp1362_write16((data&0x0000FFFF),dev);\			isp1362_write16(((data&0xFFFF0000)>>16),dev)#if defined(CONFIG_FUNC_DEBUG) ||  defined(CONFIG_DETAIL_DEBUG)#define	func_debug(args)	isp1362_printk args;#else#define	func_debug(args)#endif /* CONFIG_FUNC_DEBUG || CONFIG_DETAIL_DEBUG */#ifdef CONFIG_DETAIL_DEBUG#define	detail_debug(args)	isp1362_printk args;#else#define	detail_debug(args)#endif /*CONFIG_DETAIL_DEBUG */#endif /* __HAL_INTF_H__ */

⌨️ 快捷键说明

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