概述
以hi3531d为例,具体地址可以参考手册:ReleaseDoc/zh/00.hardware/chip中Hi3531DV100 H.265编解码处理器用户指南.pdf,内容中的14.外围设备–14.5 GPIO:(在文件下载中有上传实例文件,可参考 board(GPIO设置).c)
- 在uboot中的路径可以安排在u-boot-2010.06/board/hi35xx/中。
- 设置寄存器偏移含义:
#define GPIO_DIR 0x400
#define GPIO_IS 0x404
#define GPIO_IBE 0x408
#define GPIO_IEV 0x40C
#define GPIO_IE 0x410
#define GPIO_RIS 0x414
#define GPIO_MIS 0x418
#define GPIO_IC 0x41C
#define IO_CONFIG_REG_BASE 0x120F0000
#define GPIO7_REG_BASE 0x121C0000
- 定义方向
// 定义复用
void gpio_muxctrl_config(unsigned long muxctrl_reg, unsigned int value)
{
unsigned long base;
base = IO_CONFIG_REG_BASE+muxctrl_reg;
__raw_writel(value, base);
}
- 定义输入输出
// 设置输入输出
void gpio_dir_config(unsigned long gpio_base, unsigned char gpio_offset, unsigned char flag)
{
int value;
unsigned long base;
base = gpio_base+GPIO_DIR; //direction reg offset addr is 0x400
value = __raw_readl(base);
if(flag)
{
value |= (1 << gpio_offset);
}
else
{
value &= ~(1 << gpio_offset);
}
__raw_writel(value, base);
}
- 定义输出高低
void gpio_output_set(unsigned long gpio_base, unsigned char gpio_offset, int value)
{
unsigned long base = gpio_base + (1 << (gpio_offset + 2)); /* PADDR[9:2]分别对应 GPIO_DATA[7:0]*/
unsigned long l;
unsigned long flags;
l = (__raw_readl(base) & (~(1 << gpio_offset))) | (!!value << gpio_offset);
__raw_writel(l, base);
}
- 调用实验
void set_gameport_gpio_default_level(void)
{
gpio_muxctrl_config(0xF8,1); //set gpio7_6 muxctrl_reg62,muxctrl_reg62 offset addr is 0xF8,please look datasheet
gpio_dir_config(GPIO7_REG_BASE,6,1); //set gpio7_6 be output 1代表输出,0代表输入
gpio_output_set(GPIO7_REG_BASE,6,1);
}
注:0xF8为偏移地址
最后
以上就是英俊蓝天为你收集整理的uboot中添加hi35xx的GPIO设置的全部内容,希望文章能够帮你解决uboot中添加hi35xx的GPIO设置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复