Firefly开源社区

标题: RK3288 uboot阶段GPIO功能复用(急) [打印本页]

作者: 怪兽one    时间: 2017-10-10 19:40
标题: RK3288 uboot阶段GPIO功能复用(急)
在uboot阶段实现GPIO的功能复用,比如
pin          Ball pin name
R25         HOST_D6/TS_SYNC/CIF_VSYNC/GPIO2_B0
R25pin的默认功能是CIF_VSYNC,如果把它的功能改为GPIO2_B0应该怎么做?
作者: 怪兽one    时间: 2017-10-10 23:49
本帖最后由 怪兽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 (25.26 KB, 下载次数: 514)

2.png

1.png (61.75 KB, 下载次数: 543)

1.png

作者: leung先森    时间: 2017-10-11 09:17
试着将xml文件下面有关dvp的配置去掉,内核dts或者dtsi下的dvp印脚定义改成gpio
作者: 怪兽one    时间: 2017-10-11 10:35
本帖最后由 怪兽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);

这样设理论不知可行不可行
作者: 怪兽one    时间: 2017-10-31 16:49
      grf_writel((0x0000 | (0x03 << 16)), GRF_GPIO2B_IOMUX); //bit1:bit0  00:gpio
      gpio_direction_output(GPIO_BANK2 | GPIO_B0, 1);




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1