?? mmc.h
字號:
/************************************************************************//* hardware access functions or macros *//************************************************************************//* Index memory adress * Two meory adresses are defined * first the first address hast to be written with the adress of * the CAN register to be addressed * second on the second adress read or write the value */#ifdef CAN_INDEXED_MEM_IOstatic inline unsigned Indexed_Inb(void __iomem *base, u32 adr) {unsigned val; writeb(adr, (void __iomem *)base); val = readb(base + 1);#ifdef IODEBUG printk("CANin: base: %x adr: %x, got: %x\n", (u32)base, (u8)adr, (u8)val);#endif return val;}#ifdef IODEBUG#define CANout(bd,adr,v) do {\ printk("CANout bd:%x base:%p reg:%x val:%x\n", \ bd, (void __iomem *)can_base[bd], \ (u32) ®base->adr, v); \ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(v, (void __iomem *)can_base[bd] + 1); \ } while(0)#define CANin(bd,adr) \ Indexed_Inb((void __iomem *)can_base[bd], (u32)®base->adr)#define CANset(bd,adr,m) {\ unsigned val; \ val = Indexed_Inb((void __iomem *)can_base[bd], (u32) ®base->adr);\ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(val | m, (void __iomem *)can_base[bd] + 1); \ }#define CANreset(bd,adr,m) {\ unsigned val; \ val = Indexed_Inb((void __iomem *)can_base[bd], (u32) ®base->adr);\ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(val & ~m, (void __iomem *)can_base[bd] + 1); \}/* not used, not filled, causes error at compile time */#define CANtest(bd,adr,m) (x)#else /* IODEBUG */#define CANout(bd,adr,v) do {\ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(v, (void __iomem *)can_base[bd] + 1); \ } while(0)#define CANin(bd,adr) \ Indexed_Inb((void __iomem *)can_base[bd], (u32)®base->adr)#define CANset(bd,adr,m) {\ unsigned val; \ val = Indexed_Inb((void __iomem *)can_base[bd], (u32) ®base->adr);\ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(val | m, (void __iomem *)can_base[bd] + 1); \ }#define CANreset(bd,adr,m) {\ unsigned val; \ val = Indexed_Inb((void __iomem *)can_base[bd], (u32) ®base->adr);\ writeb((u32) ®base->adr, (void __iomem *)can_base[bd]); \ writeb(val & ~m, (void __iomem *)can_base[bd] + 1); \}/* not used, not filled, causes error at compile time */#define CANtest(bd,adr,m) (x)#endif#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -