linux设备驱动子系统,Linux设备驱动之GPIO子系统

我们来看看linux 3.10中三星的GPIO寄存器配置方法

我们先看看最前面的

#define S5PV210_GPA1(_nr)    (S5PV210_GPIO_A1_START + (_nr))

S5PV210_GPIO_A1_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_A0),

因为    #define S5PV210_GPIO_NEXT(__gpio) \

((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 1)

S5PV210_GPIO_A1_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_A0)

= ((S5PV210_GPIO_A0_START) + (S5PV210_GPIO_A0_NR) + CONFIG_S3C_GPIO_SPACE + 1)

= 0 + 8 + 0 + 1

= 9

S5PV210_GPIO_A0_START=0不用管

那么S5PV210_GPA1(3) = (S5PV210_GPIO_A1_START + (3))

= 9+3

= 12

我们来看芯片手册GPIO部分

?GPA0: 8 in/out port - 2xUART with flow control

?GPA1: 4 in/out port - 2xUART without flowcontrol or 1xUART with flow control

?GPB: 8 in/out port - 2x SPI

这说明S5PV210_GPA1(3)=12意思是GPA1_3是s5pv210的第12个IO,linux把cpu的所有GPIO当作统一编址的设备,GPA0_0地址是1,GPA1_3地址是12

根据芯片手册,我们得知,s5pv210的每个IO口占用4bitGPxCON,1bitGPxDAT,4bitGPxDRV

而每组IO口必定有CON、DAT、DRV、CONPDN、PUDPDN5个寄存器

阅读(1442) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值