tangyu1121 发表于 2015-1-22 14:25:47

软件配置PMU的IO口问题

请教几个IO口配置的功能:
在firefly-rk3288.dts文件中,开发板上面我们使用的是ACT8846的PMU:
&act8846 {
gpios =<&gpio7 GPIO_B6 GPIO_ACTIVE_LOW>,<&gpio0 GPIO_A1 GPIO_ACTIVE_HIGH>,<&gpio7 GPIO_B2 GPIO_ACTIVE_HIGH>;
在配置的时候有配置上面的这3个IO口,请帮忙解答一下这里配置的IO口是做什么功能使用的?

tangyu1121 发表于 2015-1-22 17:32:08

zhansb 发表于 2015-1-22 16:16
可以把了解的信息发出来,方便大家学习

好啊!
首先:
1、在firefly-rk3288.dts中我们看到8846配置的地方有配置如下3个GPIO口;
/include/ "act8846.dtsi"
&act8846 {
        gpios =<&gpio7 GPIO_B6 GPIO_ACTIVE_LOW>,<&gpio0 GPIO_A1 GPIO_ACTIVE_HIGH>,<&gpio7 GPIO_B2 GPIO_ACTIVE_HIGH>,<&gpio0 GPIO_B3 GPIO_ACTIVE_HIGH>;
2、接着我们找到8846 PMU解析这几个IO口的地方:
kernel/drivers/regulator/act8846.c中的act8846_parse_dt函数会去解析这几个IO口
gpio = of_get_named_gpio(act8846_pmic_np,"gpios", 0);
                if (!gpio_is_valid(gpio))
                        printk("invalid gpio: %d\n",gpio);
        pdata->pmic_sleep_gpio = gpio;       
        pdata->pmic_sleep = true;
       
        gpio = of_get_named_gpio(act8846_pmic_np,"gpios", 1);
                if (!gpio_is_valid(gpio))
                        printk("invalid gpio: %d\n",gpio);
        pdata->pmic_hold_gpio = gpio;       
        pdata->pm_off = of_property_read_bool(act8846_pmic_np,"act8846,system-power-controller");

    gpio = of_get_named_gpio(act8846_pmic_np,"gpios", 2);
      if (!gpio_is_valid(gpio))
                printk("invalid gpio: %d\n",gpio);
    pdata->pmic_cpu_det_gpio = gpio;
of_get_named_gpio函数的第三个参数:0,1, 2就firefly-rk3288.dts里定义的IO口顺序
3、然后根据这里IO口取的名字比较见名知意,在结合原理图上查看对应的IO的功能,就大概知道这里设置这 几个IO口是什么功能了:比如说SDK中的:第一个IO口是PMU的SLEEP口,让PMU进入SLEEP模式,第二个是PMU_HOLD,用来维持PMU的电压,第三个是CPU_DET,主要是在关机的时候断开和主控的连接;
4、自己也可以按照这个流程设置一些开机或者关机就必须置高或者置低的口
写的不对的请各位指正,谢谢!

tangyu1121 发表于 2015-1-22 14:53:06

已经了解是什么功能了,谢谢!问题关闭

zhansb 发表于 2015-1-22 16:16:11

可以把了解的信息发出来,方便大家学习:lol

zhansb 发表于 2015-1-22 17:58:45

赞一个{:2_27:}

shumanzhou 发表于 2015-10-8 11:17:03

你好,那个cpu_det 软件拉低了,为什么相应的引脚还是高电平?
页: [1]
查看完整版本: 软件配置PMU的IO口问题