高通平台过压overvoltage分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuewen2008/article/details/78026617

过压门限

这里写图片描述
过压门限有三个option,其中option A的典型值为6.4v,option B的典型值为7.15,option C的典型值为10.3v
这里写图片描述

上表显示寄存器13f1的bit0到bit2值不同会对应不同的过压门限。

寄存器
主要是1310和13f1
这里写图片描述

这里写图片描述

代码实现
注册过压中断

smbchg_request_irqsREQUEST_IRQ(chip, spmi_resource, chip->usbin_ov_irq,
                "usbin-ov", usbin_ov_handler, flags, rc);

中断处理函数

static irqreturn_t usbin_ov_handler(int irq, void *_chip)
   rc = smbchg_read(chip, &reg, chip->usb_chgpth_base + RT_STS, 1);//获得寄存器1310的状态
if (reg & USBIN_OV_BIT) {//过压触发
        chip->usb_ov_det = true;
        if (chip->usb_psy) {
            pr_smb(PR_MISC, "setting usb psy health OV\n");
            rc = power_supply_set_health_state(chip->usb_psy,
POWER_SUPPLY_HEALTH_OVERVOLTAGE);//设置usb的health属性为过压
            if (rc)
                pr_smb(PR_STATUS,"usb psy does not allow updating prop %d rc = %d\n",
                    POWER_SUPPLY_HEALTH_OVERVOLTAGE, rc);
        }
    } else {
        chip->usb_ov_det = false;
        /* If USB is present, then handle the USB insertion */
        usb_present = is_usb_present(chip);
        if (usb_present)
            update_usb_status(chip, usb_present, false);
    }

log

中断触发:
01-01 00:05:36.502 I/ ( 0): usbin_ov_handler trigered
01-01 00:05:36.502 I/SMBCHG ( 0): usbin_ov_handler: setting usb psy health OV

状态上报
01-01 00:05:36.503 D/power_supply battery( 0): power_supply_changed
01-01 00:05:36.503 D/power_supply usb( 0): power_supply_update_gen_leds 1
01-01 00:05:36.503 D/power_supply usb( 0): uevent
01-01 00:05:36.503 D/power_supply usb( 0): POWER_SUPPLY_NAME=usb
01-01 00:05:36.503 D/power_supply usb( 0): prop HEALTH=Over voltage
01-01 00:05:36.503 D/power_supply usb( 0): prop PRESENT=1
01-01 00:05:36.503 D/power_supply usb( 0): prop ONLINE=1
01-01 00:05:36.503 D/power_supply usb( 0): prop VOLTAGE_MAX=0
01-01 00:05:36.503 D/power_supply usb( 0): prop CURRENT_MAX=1500000
01-01 00:05:36.503 D/power_supply usb( 0): prop INPUT_CURRENT_MAX=0
01-01 00:05:36.503 D/power_supply usb( 0): prop SCOPE=Device
01-01 00:05:36.503 D/power_supply usb( 0): prop TYPE=USB_DCP

过压以后会通过power supply机制上报,/sys/class/power_supplly/usb/health。

猜你喜欢

转载自blog.csdn.net/yuewen2008/article/details/78026617