详解内核驱动操作GPIO引脚API函数
函数原型:
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
unsigned int s3c2410_gpio_getcfg(unsigned int pin);
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
unsigned int s3c2410_gpio_getpin(unsigned int pin);
unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change);
int s3c2410_gpio_getirq(unsigned int pin);
关于函数中用到的虚拟地址到物理地址转换的变量及算法可以参考
http://www.doczj.com/doc/61b6a60402020740be1e9b9f.html/hefeng330467115@126/blog/static/78205842201 0620511659/
或http://www.doczj.com/doc/61b6a60402020740be1e9b9f.html/u3/102836/showart_2065945.html
看简单led驱动程序是用到的文件及头文件可能有:
linux/include/asm-arm/arch-s3c2410/map.h
linux/include/asm-arm/arch-s3c2410/regs-gpio.h
linux/arch/arm/plat-s3c24xx/gpio.c
linux/include/asm-arm/io.h
用Source Insight 打开这些文件,然后再看驱动程序,可以随意跳转到定义处,很是方便
pin参数:
gpio引脚及特殊功能寄存器助记符都在
linux/include/asm-arm/arch-s3c2410/regs-gpio.h中定义:
eg:
S3C2410_GPACON
S3C2410_GPADAT
S3C2410_GPA0 - S3C2410_GPA22 //引脚
S3C2410_GPA0_OUT - S3C2410_GPA22_OUT //设置引脚为输出
用到哪个不清楚的可以直接到这个文件去查找
还有中断和GSTATUS:
S3C2410_EXTINT0 -> irq sense control for EINT0..EINT7
S3C2410_EXTINT1 -> irq sense control for EINT8..EINT15
S3C2410_EXTINT2 -> irq sense control for EINT16..EINT23
……
function参数:
指定引脚功能:输出、输入还是特殊功能,也在
linux/include/asm-arm/arch-s3c2410/regs-gpio.h中定义。
函数功能:
1原型:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int