uboot中添加hi35xx的GPIO设置

以hi3531d为例,具体地址可以参考手册:ReleaseDoc/zh/00.hardware/chip中Hi3531DV100 H.265编解码处理器用户指南.pdf,内容中的14.外围设备–14.5 GPIO:(在文件下载中有上传实例文件,可参考 board(GPIO设置).c)

  1. 在uboot中的路径可以安排在u-boot-2010.06/board/hi35xx/中。
  2. 设置寄存器偏移含义:
#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
  1. 定义方向
//  定义复用
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);  
}
  1. 定义输入输出
// 设置输入输出
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);  
}
  1. 定义输出高低
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);  

}
  1. 调用实验
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为偏移地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值