13783 Power manage

来源:互联网 发布:老九门直播软件 编辑:程序博客网 时间:2024/06/08 17:35

*********************************************************************

关于13783开关机:

   13783上的ON1B管脚是一个输入pin,在其上可以连接一个按键,记过设置后用于power on/off button。

首先该键可用作power/on键,当13783所在的pdk板处于供电状态,而13783对cpu处于断电状态时,也就是没有给cpu供电时,但此时13783的电源有电,此时只有13783由VATLAS电压维持的核心电路和RTC module正常工作。此时的检测电路可以监测ON1B管脚的电压(该脚由VATLAS上拉,47k的电阻太大了,上拉不够,应换为10k左右的)变化状况,当电压出现一个上升沿时,该上升沿会自动进行30ms的消抖,当此上升沿出现时,硬件检测电路会把他识别为一个turn on event,从而载入各regulator的默认参数,并按照默认的顺序依次启动(间隔2ms,避免大的突入电流)。

此键也可以用来关机使用,当ON1BRSTEN位(Register 15,第二个bit)置为高时,4s钟的按键可使13783给cpu断电,但是若RESTARTEN(Register 15,第一个bit)位置为高,13783会在1s钟之后重新给cpu供电,相当于来了一次reset,所以只有先把RESTARTEN位置为低,并且按键4s后,才相当于来了一次power off。

*********************************************************************

 

power management driver很主要有以下三方面作用:

1、开关所有的regular

       2、为所有的regular设值

       3、获得所有的regular的当前电流值

和电池的充电没有关系。充电是由PMIC Battery Driver来完成的。

static int pmic_power_probe(struct platform_device *pdev)

{

       int irq, ret;

 

       /* configure on/off button */

       gpio_power_key_active();

 

       irq = (int)pdev->dev.platform_data;

 

       if (irq == 0) {

              pr_info(KERN_INFO "PMIC Power has no platform data/n");

              goto done;

       }

       set_irq_type(irq, IRQF_TRIGGER_RISING);

 

       ret = request_irq(irq, power_key_int, 0, "power_key", 0);

       if (ret)

              pr_info(KERN_ERR "register on-off key interrupt failed/n");

 

       set_irq_wake(irq, 1);

 

      done:

       pr_info(KERN_INFO "PMIC Power successfully probed/n");

       return 0;

}

 

注册了on/off button的中断,中断函数为power_key_int,

中断函数为:

static irqreturn_t power_key_int(int irq, void *dev_id)

{

       pr_info(KERN_INFO "on-off key pressed/n");

 

       return 0;

}

可以在此函数内进行事件处理,判断之后进行power方面的操作。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/beny610/archive/2008/12/25/3602085.aspx

原创粉丝点击