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

📄 i2c-keypad.h

📁 Linux下I2C以及I2C下的键盘驱动
💻 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 + -