📄 i2c-keypad.h
字号:
#ifndef I2C_KEYPAD_H#define I2C_KEYPAD_H#include <linux/tqueue.h>#include "i2c-aa.h"#define MOD_NAME "i2c-keypad"//#define KEYPAD_NAME "keypad"/* KEYPAD register *//*unsigned long READREG(unsigned long r){ volatile unsigned long * addr; addr = (unsigned long *)r; return *(volatile unsigned long *)addr;}void WRITEREG(unsigned long r, unsigned long val){ volatile unsigned long * addr; addr = (unsigned long *)r; *(volatile unsigned long *)addr = val;}*///read-only#define KEYPAD_SSR_B 0xf021C124#define KEYPAD_ISR_B 0xf021C134//write-able---for the GPIO utilization, it is meaningless.#define KEYPAD_GPR_B 0xf021C138//write-able#define KEYPAD_DDIR_B 0xf021C100#define KEYPAD_ICONFA1_B 0xf021C10C#define KEYPAD_ICONFB1_B 0xf021C114#define KEYPAD_GIUS_B 0xf021C120#define KEYPAD_ICR1_B 0xf021C128#define KEYPAD_IMR_B 0xf021C130#define KEYPAD_PUEN_B 0xf021C140//MACROS#define KEYPAD_GPIO_INT_B 12//#define KEYPAD_NAME "keypad"#define I2C_ADDR_KEYPAD 0x48//for I2C read#define PRESS_NO 0#define PRESS_DOWN 1#define PRESS_UP 2#define MAX_ID 0x14struct keypad_struct{// wait_queue_head_t gkeypadWait; int gKeypadFlag; int gDataFlag; /* flag if the driver buf is full */};#ifdef TEST#define PTD_BASE_ADDR 0x0021C300 #define PTD_DDIR PTD_BASE_ADDR #define PTD_OCR1 (PTD_BASE_ADDR+0x04) #define PTD_OCR2 (PTD_BASE_ADDR+0x08) #define PTD_ICONFA1 (PTD_BASE_ADDR+0x0C) #define PTD_ICONFA2 (PTD_BASE_ADDR+0x10) #define PTD_ICONFB1 (PTD_BASE_ADDR+0x14) #define PTD_ICONFB2 (PTD_BASE_ADDR+0x18) #define PTD_DR (PTD_BASE_ADDR+0x1C) #define PTD_GIUS (PTD_BASE_ADDR+0x20) #define PTD_SSR (PTD_BASE_ADDR+0x24) #define PTD_ICR1 (PTD_BASE_ADDR+0x28) #define PTD_ICR2 (PTD_BASE_ADDR+0x2C) #define PTD_IMR (PTD_BASE_ADDR+0x30) #define PTD_ISR (PTD_BASE_ADDR+0x34) #define PTD_GPR (PTD_BASE_ADDR+0x38) #define PTD_SWR (PTD_BASE_ADDR+0x3C) #define PTD_PUEN (PTD_BASE_ADDR+0x40) #define MX1_REG_PTD_DDIR (*((volatile unsigned long *)(IO_ADDRESS(PTD_DDIR))))#define MX1_REG_PTD_OCR1 (*((volatile unsigned long *)(IO_ADDRESS(PTD_OCR1))))#define MX1_REG_PTD_OCR2 (*((volatile unsigned long *)(IO_ADDRESS(PTD_OCR2))))#define MX1_REG_PTD_ICONFA1 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICONFA1))))#define MX1_REG_PTD_ICONFA2 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICONFA2))))#define MX1_REG_PTD_ICONFB1 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICONFB1))))#define MX1_REG_PTD_ICONFB2 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICONFB2))))#define MX1_REG_PTD_DR (*((volatile unsigned long *)(IO_ADDRESS(PTD_DR))))#define MX1_REG_PTD_GIUS (*((volatile unsigned long *)(IO_ADDRESS(PTD_GIUS))))#define MX1_REG_PTD_SSR (*((volatile unsigned long *)(IO_ADDRESS(PTD_SSR))))#define MX1_REG_PTD_ICR1 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICR1))))#define MX1_REG_PTD_ICR2 (*((volatile unsigned long *)(IO_ADDRESS(PTD_ICR2))))#define MX1_REG_PTD_IMR (*((volatile unsigned long *)(IO_ADDRESS(PTD_IMR))))#define MX1_REG_PTD_ISR (*((volatile unsigned long *)(IO_ADDRESS(PTD_ISR))))#define MX1_REG_PTD_GPR (*((volatile unsigned long *)(IO_ADDRESS(PTD_GPR))))#define MX1_REG_PTD_SWR (*((volatile unsigned long *)(IO_ADDRESS(PTD_SWR))))#define MX1_REG_PTD_PUEN (*((volatile unsigned long *)(IO_ADDRESS(PTD_PUEN))))#endif #endif //I2C_KEYPAD_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -