Firefly开源社区

RK3288 uboot阶段GPIO功能复用(急)

38

积分

0

威望

0

贡献

技术小白

积分
38
发表于 2017-10-10 19:40:28     
在uboot阶段实现GPIO的功能复用,比如
pin          Ball pin name
R25         HOST_D6/TS_SYNC/CIF_VSYNC/GPIO2_B0
R25pin的默认功能是CIF_VSYNC,如果把它的功能改为GPIO2_B0应该怎么做?
回复

使用道具 举报

38

积分

0

威望

0

贡献

技术小白

积分
38
发表于 2017-10-10 23:49:05     
本帖最后由 怪兽one 于 2017-10-11 00:22 编辑

C:\Users\Administrator\Pictures\1.png

#define GRF_GPIO2B_0GPIO (grf_read(GRF_GPIO2B_IOMUX)&0xFFFFFFFA)

grf_write(GRF_GPIO2B_0GPIO,GRF_GPIO2B_IOMUX);
此方法是否可行?
2.png
1.png
回复

使用道具 举报

2963

积分

12

威望

22

贡献

高级创客

Rank: 6Rank: 6

积分
2963
发表于 2017-10-11 09:17:52     
试着将xml文件下面有关dvp的配置去掉,内核dts或者dtsi下的dvp印脚定义改成gpio
回复

使用道具 举报

38

积分

0

威望

0

贡献

技术小白

积分
38
发表于 2017-10-11 10:35:56     
本帖最后由 怪兽one 于 2017-10-11 15:39 编辑
leung先森 发表于 2017-10-11 09:17
试着将xml文件下面有关dvp的配置去掉,内核dts或者dtsi下的dvp印脚定义改成gpio

你说的是kernel阶段是吧?我想要在uboot阶段就配置好gpio功能,
在uboot阶段加入如下代码
//GPIO2_B0    gpio out
    static uint32 grf_gpio2b_iomux;  
    grf_gpio2b_iomux = (grf_readl(GRF_GPIO2B_IOMUX)&0xFFFFFFFC)|(3<<16);
//    grf_writel((3 << 16) & grf_gpio2b_iomux, GRF_GPIO2B_IOMUX);
    grf_writel(grf_gpio2b_iomux, GRF_GPIO2B_IOMUX);
    gpio_direction_output(GPIO_BANK2 | GPIO_B0, 1);

//GPIO2_B1    interrupt
    static uint32 grf_gpio2b_iomux;  
    int gpio_irq;

    grf_gpio2b_iomux = (grf_readl(GRF_GPIO2B_IOMUX)&0xFFFFFFF3)|(3<<18);
    grf_writel(grf_gpio2b_iomux, GRF_GPIO2B_IOMUX);
    gpio_irq = gpio_to_irq(GPIO_BANK2 | GPIO_B1);

这样设理论不知可行不可行
回复

使用道具 举报

38

积分

0

威望

0

贡献

技术小白

积分
38
发表于 2017-10-31 16:49:43     
      grf_writel((0x0000 | (0x03 << 16)), GRF_GPIO2B_IOMUX); //bit1:bit0  00:gpio
      gpio_direction_output(GPIO_BANK2 | GPIO_B0, 1);
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表