怪兽one 发表于 2017-10-10 19:40:28

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: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);
此方法是否可行?

leung先森 发表于 2017-10-11 09:17:52

试着将xml文件下面有关dvp的配置去掉,内核dts或者dtsi下的dvp印脚定义改成gpio

怪兽one 发表于 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);

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

怪兽one 发表于 2017-10-31 16:49:43

      grf_writel((0x0000 | (0x03 << 16)), GRF_GPIO2B_IOMUX); //bit1:bit000:gpio
      gpio_direction_output(GPIO_BANK2 | GPIO_B0, 1);
页: [1]
查看完整版本: RK3288 uboot阶段GPIO功能复用(急)