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

📄 ems_pci.h

📁 can4linux-3.5.3.gz can4 linux
💻 H
字号:
/************************************************************************//* hardware access functions or macros *//************************************************************************//* using memory acces with readb(), writeb() *//* #error  memory I/O access *//* #define can_base Base */#ifdef IODEBUG#  define CANout(bd,adr,v)	\	(printk("Cout: (%x)=%x\n", (u32)&((canregs_t *)can_base[bd])->adr, v), \		writeb(v, (u32) &((canregs_t *)can_base[bd])->adr ))#define CANset(bd,adr,m)     do	{\	unsigned char v;	\        v = (readb((void __iomem *) &((canregs_t *)can_base[bd])->adr)); \	printk("CANset %x |= %x\n", (v), (m)); \	writeb( v | (m) , (u32) &((canregs_t *)can_base[bd])->adr ); \	} while (0)#define CANreset(bd,adr,m)	do {\	unsigned char v; \        v = (readb((u32) &((canregs_t *)can_base[bd])->adr)); \	printk("CANreset %x &= ~%x\n", (v), (m)); \	writeb( v & ~(m) , (u32) &((canregs_t *)can_base[bd])->adr ); \	} while (0)#define CANoutl(bd,adr,v)	\	(printk("Cout: (%x)=%lx\n", (u32)&((canregs_t *)can_base[bd])->adr, v),\		(writel(v, (u32) &((canregs_t *)can_base[bd])->adr )))#else   /* Memory Byte access */#define CANout(bd,adr,v)	\		(writeb(v, (void __iomem *) &((canregs_t *)can_base[bd])->adr ))#define CANset(bd,adr,m)	\	writeb((readb((void __iomem *) &((canregs_t *)can_base[bd])->adr)) \		| (m) , (void __iomem *) &((canregs_t *)can_base[bd])->adr )#define CANreset(bd,adr,m)	\	writeb((readb((void __iomem *) &((canregs_t *)can_base[bd])->adr)) \		& ~(m), (void __iomem *) &((canregs_t *)can_base[bd])->adr )#endif  /* IODEBUG */#define CANin(bd,adr)		\		(readb ((void __iomem *) &((canregs_t *)can_base[bd])->adr  ))#define CANtest(bd,adr,m)	\	(readb((void __iomem *) &((canregs_t *)can_base[bd])->adr  ) & (m) )   /* Memory word access */#define CANoutw(bd,adr,v)	\		(writew((v), (u32) &((canregs_t *)can_base[bd])->adr ))#define CANoutwd(bd,adr,v)	\	(printk("Cout: (%x)=%x\n", (u32)&((canregs_t *)can_base[bd])->adr, v), \		writew((v), (u32) &((canregs_t *)can_base[bd])->adr ))#define CANsetw(bd,adr,m)	\	writew((readw((u32) &((canregs_t *)can_base[bd])->adr)) \		| (m) , (u32) &((canregs_t *)can_base[bd])->adr )#define CANresetw(bd,adr,m)	\	writew((readw((u32) &((canregs_t *)can_base[bd])->adr)) \		& ~(m), (u32) &((canregs_t *)can_base[bd])->adr )#define CANinw(bd,adr)		\		(readw ((u32) &((canregs_t *)can_base[bd])->adr  ))#define CANinwd(bd,adr)		\	(printk("Cin: (%x)\n", (u32)&((canregs_t *)can_base[bd])->adr), \		readw ((u32) &((canregs_t *)can_base[bd])->adr  ))#define CANtestw(bd,adr,m)	\	(readw((u32) &((canregs_t *)can_base[bd])->adr  ) & (m) )   /* Memory long word access */#define CANoutl(bd,adr,v)	\		(writel(v, (u32) &((canregs_t *)can_base[bd])->adr ))#define CANsetl(bd,adr,m)	\	writel((readl((u32) &((canregs_t *)can_base[bd])->adr)) \		| (m) , (u32) &((canregs_t *)can_base[bd])->adr )#define CANresetl(bd,adr,m)	\	writel((readl((u32) &((canregs_t *)can_base[bd])->adr)) \		& ~(m), (u32) &((canregs_t *)can_base[bd])->adr )#define CANinl(bd,adr)		\		(readl ((u32) &((canregs_t *)can_base[bd])->adr  ))#define CANtestl(bd,adr,m)	\	(readl((u32) &((canregs_t *)can_base[bd])->adr  ) & (m) )

⌨️ 快捷键说明

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