A133连接pc板子掉电
作者:互联网
平台:A133+AXP717
系统:Android11
内核:Linux5.4
现象:在板子不接电池的情况下,连接电脑板子掉电(该项目不需要电池),用示波器抓到的波形显示reset一直为低。
使用逻辑分析仪测量pmu和主控在掉电前的通讯,发现其对pmu进行写0x17 0x88
通过查阅axp717数据手册我们发现这是一个限流操作,限制为500ma。
我们将屏幕和喇叭去掉,发现其能正常开机了,说明猜想正确。
pmu_usbpc_vol = <4600>;
pmu_usbpc_cur = <1500>;//将其改为1.5A
pmu_usbad_vol = <4600>;
pmu_usbad_cur = <2500>;
pmu_usb_typec_used = <0>;
wakeup_usb_in;
wakeup_usb_out;
};
我们将dts中的pmu_usbpc_cur设为1500后进行测试,发现仍然起不来,逻辑分析仪显示仍然是下0x17 0x88,没办法我们只好去跟代码了。
通过compatible查找到文件为axp2202_usb_power.c
函数axp2202_set_iin_limit为限流函数,添加打印后发现其当连接pc时下了500ma的参数
static int axp2202_set_iin_limit(struct regmap *regmap, int mA)
{
printk("axp2202_set_iin_limit mA = %d\n",mA);
unsigned int data;
int ret = 0;
data = mA;
printk("pmu_debug: data = %d",data);
if (data > 3250)
data = 3250;
if (data < 100)
data = 100;
data = ((data - 100) / 50);
ret = regmap_update_bits(regmap, AXP2202_IIN_LIM, GENMASK(5, 0),
data);
if (ret < 0)
return ret;
return 0;
}
在文件中共有3处调用
static int axp2202_usb_set_property(struct power_supply *psy,
enum power_supply_property psp,
const union power_supply_propval *val)
static irqreturn_t axp2202_irq_handler_usb_in(int irq, void *data)
static void axp2202_usb_set_current_fsm(struct work_struct *work)
通过再次添加打印,我们发现axp2202_usb_set_property为该次调用函数
.set_property = axp2202_usb_set_property,
static int ps_set_cur_charge_cntl_limit(struct thermal_cooling_device *tcd,
unsigned long state)
{ ret = psy->desc->set_property(psy,
POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, &val);}
.set_cur_state = ps_set_cur_charge_cntl_limit,
最后发现为sunxi_udc.c下的sunxi_set_cur_vol_work调用
void sunxi_set_cur_vol_work(struct work_struct *work)
{
#if !defined(SUNXI_USB_FPGA) && defined(CONFIG_POWER_SUPPLY)
struct power_supply *psy = NULL;
union power_supply_propval temp;
if (of_find_property(g_udc_pdev->dev.of_node, "det_vbus_supply", NULL))
psy = devm_power_supply_get_by_phandle(&g_udc_pdev->dev,
"det_vbus_supply");
if (!psy || IS_ERR(psy)) {
DMSG_PANIC("%s()%d WARN: get power supply failed\n",
__func__, __LINE__);
} else {
temp.intval = 2500;//改大到2500
power_supply_set_property(psy,
POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, &temp);
}
#endif
}
标签:pmu,set,usb,power,supply,掉电,pc,A133,data 来源: https://blog.csdn.net/qq_45362097/article/details/120710425