📄 hal_intf.h
字号:
#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 + -