搜索
 找回密码
 立即注册

简单一步 , 微信登陆

kernel也可以控制GPIO

作者:Jack.Lin | 时间:2016-5-28 15:10:33 | 阅读:63441| 显示全部楼层
网络上有讲到关于kernel如何控制GPIO的方法往往比较复杂,这里介绍一种我在mstar platform实际写过的一种简单方法。
Kernel是往往没有现成的GPIO控制接口,所以得自己造。
这里以在kernel控制PAD_GPIO_PM1,PAD_GPIO_PM5这两个IO口为例。例子中出现的寄存器要在你所用平台的CHIP资料上找。


#if defined(CONFIG_ARM) || defined(CONFIG_MIPS)
#define REG_MIPS_BASE               0xFD000000      //Use 8 bit addressing
#elif defined(CONFIG_ARM64)
extern ptrdiff_t mstar_pm_base;
#define REG_MIPS_BASE           (mstar_pm_base)
#endif


#define MHal_GPIO_REG(addr)         (*(volatile U8*)(REG_MIPS_BASE + (((addr) & ~1) << 1) + (addr & 1)))


#define PAD_GPIO_PM1 11
#define PAD_GPIO_PM1_ADDR  0x0f02UL
#define PAD_GPIO_PM1_OEN BIT0
#define PAD_GPIO_PM1_OUT BIT1
#define PAD_GPIO_PM1_IN BIT2


#define PAD_GPIO_PM5 15
#define PAD_GPIO_PM5_ADDR  0x0f0AUL
#define PAD_GPIO_PM5_OEN BIT0
#define PAD_GPIO_PM5_OUT BIT1
#define PAD_GPIO_PM5_IN BIT2


void GPIO_PM1_Set_High()
{
        MHal_GPIO_REG(PAD_GPIO_PM1_ADDR) &= ~PAD_GPIO_PM1_OEN;
        MHal_GPIO_REG(PAD_GPIO_PM1_ADDR) |= PAD_GPIO_PM1_OUT;
}


void GPIO_PM1_Set_Low()
{
        MHal_GPIO_REG(PAD_GPIO_PM1_ADDR) &= ~PAD_GPIO_PM1_OEN;
        MHal_GPIO_REG(PAD_GPIO_PM1_ADDR) &= ~PAD_GPIO_PM1_OUT;
}


void GPIO_PM5_Set_High()
{
        MHal_GPIO_REG(PAD_GPIO_PM5_ADDR) &= ~PAD_GPIO_PM1_OEN;
        MHal_GPIO_REG(PAD_GPIO_PM5_ADDR) |= PAD_GPIO_PM1_OUT;
}


void GPIO_PM5_Set_Low()
{
        MHal_GPIO_REG(PAD_GPIO_PM5_ADDR) &= ~PAD_GPIO_PM1_OEN;
        MHal_GPIO_REG(PAD_GPIO_PM5_ADDR) &= ~PAD_GPIO_PM1_OUT;
}




该会员没有填写今日想说内容.
回复

使用道具 举报

大神点评15

Jack.Lin 发表于:2016-6-1 16:32:35
希望对大家有用。
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

AlexWeng 发表于:2016-7-3 19:17:40
牛牛牛!
该会员没有填写今日想说内容.
回复

使用道具 举报

xuludestiny 发表于:2016-7-5 13:00:57
很有用,谢谢楼主,,
把水灌满
回复 支持 反对

使用道具 举报

steven 发表于:2016-8-26 12:14:49
这方法不太实用,代码移植性不好
回复 支持 反对

使用道具 举报

jayden 发表于:2016-8-31 14:25:42
靠,我自己找了好久找到,早看你帖子就好!!
回复 支持 反对

使用道具 举报

creass 发表于:2016-9-3 13:40:10

Jack 必须牛!
hahaahhahaha!!123
回复 支持 反对

使用道具 举报

Sunny 发表于:2016-9-6 16:18:10
学习了。
回复

使用道具 举报

Robby.zou 发表于:2016-9-30 11:03:46
该会员没有填写今日想说内容.
回复

使用道具 举报

steven 发表于:2016-9-30 11:53:50
不是通用写法,没啥实际用处
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版