Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp5103817ybp; Mon, 7 Oct 2019 20:10:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqzxE8/uW+65FJ4VYlbJd+5JdONrkE+zuHNP+LPc604Tg5Te0fTSWtFhw4ysUbUTQDIviss9 X-Received: by 2002:a17:906:1248:: with SMTP id u8mr26063495eja.172.1570504243092; Mon, 07 Oct 2019 20:10:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570504243; cv=none; d=google.com; s=arc-20160816; b=bfJyGUvxMAE5ymKbeGuMy5LOR28rlDWrD2Pls4WvdFdjjSovwOOPDdaFYAF57aBInd 3eS8yVH3UBxnFUKkJXE7asw2vouKyeR39waDNOpHOKErbGH3Np4w62HSEwfAojiqOhm2 gq0Xo4V3ZAL3Q7vHyGhtl7/bx+wDHhZ24jC7QVc2LzDBrNEfxDCn6LJXL9xKy/NtSsiG eIDWwJRY9Jf1J1McS++k9AszdDtIY/m0N6QSgxCN78/DI0cRD/O+tGzJ+1Ueiv7N13XB cUxdWKsh6jH3qi1j/XjEKrT6o9Zj0L75Xg6s8DGI5qvIGNMoMARiiNG2PDtvknJT9xRr +3pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:from:cc:to:subject :content-transfer-encoding:mime-version:references:in-reply-to:date; bh=Y9znsZqcMtCw/cRI0C+w63QDUhlS+liF4prkYrteVYU=; b=jSK1GBk4mRvLVVgBQcXjBlrlD9wbgB/ATmAtfzKxEHHr5NOqbhW7KSOCUVRIQs6s7h UWHKzmiud6Ssyta/I2xTfNORDBzio4dZW7gdn5lVLs1Feh7i8TzisRzkS4nNRlqC/gyk XZ5RO7xQR2hGpGShiZA7t0S9ZgU5uRwCQf98fQdbr0dQ9BAWwZyyVFmpZKqUpAaWYaB9 Lo5qKfJucMNYFE02/e5Nh5JqTcXWFVV0fFXsD+J4C3v6akSa1oVYecVcn4E4y5rVdZ/X MU96d6Qq6Bh2m5Va4wAiLio0CKUETqsyqELXFkifFo7bVor2L/UoFKiv5EAuPMQozrtk PeWg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id oe23si8062967ejb.199.2019.10.07.20.10.19; Mon, 07 Oct 2019 20:10:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729874AbfJHDJp convert rfc822-to-8bit (ORCPT + 99 others); Mon, 7 Oct 2019 23:09:45 -0400 Received: from hermes.aosc.io ([199.195.250.187]:53710 "EHLO hermes.aosc.io" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729536AbfJHDJp (ORCPT ); Mon, 7 Oct 2019 23:09:45 -0400 Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: icenowy@aosc.io) by hermes.aosc.io (Postfix) with ESMTPSA id 0EA728355D; Tue, 8 Oct 2019 03:09:41 +0000 (UTC) Date: Tue, 08 Oct 2019 11:09:34 +0800 In-Reply-To: References: <20191002112545.58481-1-icenowy@aosc.io> <20191002112545.58481-3-icenowy@aosc.io> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Subject: Re: [linux-sunxi] [PATCH 2/2] power: supply: axp20x_usb_power: add applied max Vbus support for AXP813 To: Chen-Yu Tsai , Sebastian Reichel CC: "open list:THERMAL" , linux-kernel , linux-sunxi From: Icenowy Zheng Message-ID: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 于 2019年10月8日 GMT+08:00 上午12:07:05, Chen-Yu Tsai 写到: >Hi, > >On Wed, Oct 2, 2019 at 7:27 PM Icenowy Zheng wrote: >> >> AXP813 PMIC has two Vbus maximum value settings -- one is the default >> value, which is currently the only supported one; the other is the >> really applied value, which is set according to the default value if >the >> BC detection module detected a charging port, or 500mA if no charging >> port is detected. >> >> Add support for reading and writing of the really applied Vbus >maxmium >> value. Interestingly it has a larger range than the default value. >> >> Signed-off-by: Icenowy Zheng >> --- >> drivers/power/supply/axp20x_usb_power.c | 132 >+++++++++++++++++++++++- >> 1 file changed, 129 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/power/supply/axp20x_usb_power.c >b/drivers/power/supply/axp20x_usb_power.c >> index 5f0a5722b19e..905668a2727f 100644 >> --- a/drivers/power/supply/axp20x_usb_power.c >> +++ b/drivers/power/supply/axp20x_usb_power.c > >[...] > >> @@ -354,6 +451,9 @@ static int axp20x_usb_power_set_property(struct >power_supply *psy, >> >val->intval); >> return axp20x_usb_power_set_current_max(power, >val->intval); >> >> + case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: >> + return >axp20x_usb_power_set_input_current_limit(power, val->intval); >> + > >So I think there are two things that should be adjusted. > >First, we should be using POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT for all >PMICs. >As far as the sysfs documents go, CURRENT_MAX is read-only, and should >refer to >the hard limit the hardware can support, i.e. maximum power ratings. >INPUT_CURRENT_LIMIT and INPUT_VOLTAGE_LIMIT are for configurable upper >and lower >limits respectively. > >Sebastian, is my understanding of this correct? > >We already use INPUT_CURRENT_LIMIT for the AXP813 in the axp20x-ac >driver, and >it would be nice to have both drivers expose the same attributes. > >Second, since the value set in register 0x35 is the one that actually >has an >effect, as opposed to just being a default, we should just use that >one. However, that default value is also important, otherwise users will get dropped back to 500mAh each time they re-insert USB jack. Is there a property to export the default value? BTW, if possible, apply patch 1 first, because it can raise current to 1.5A in the default situation. > >Could you restructure the series based on what I described, with a new >patch 1 >switching from CURRENT_MAX to INPUT_CURRENT_LIMIT, and then this patch >as patch 2? >And both patches should have Fixes tags and possibly CC stable so they >get backported >for people that are using stable kernels? And then the original patch >2 as patch 3. > >ChenYu > >> default: >> return -EINVAL; >> } >> @@ -365,7 +465,8 @@ static int axp20x_usb_power_prop_writeable(struct >power_supply *psy, >> enum power_supply_property >psp) >> { >> return psp == POWER_SUPPLY_PROP_VOLTAGE_MIN || >> - psp == POWER_SUPPLY_PROP_CURRENT_MAX; >> + psp == POWER_SUPPLY_PROP_CURRENT_MAX || >> + psp == POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT; >> } >> >> static enum power_supply_property axp20x_usb_power_properties[] = { >> @@ -386,6 +487,15 @@ static enum power_supply_property >axp22x_usb_power_properties[] = { >> POWER_SUPPLY_PROP_CURRENT_MAX, >> }; >> >> +static enum power_supply_property axp813_usb_power_properties[] = { >> + POWER_SUPPLY_PROP_HEALTH, >> + POWER_SUPPLY_PROP_PRESENT, >> + POWER_SUPPLY_PROP_ONLINE, >> + POWER_SUPPLY_PROP_VOLTAGE_MIN, >> + POWER_SUPPLY_PROP_CURRENT_MAX, >> + POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, >> +}; >> + >> static const struct power_supply_desc axp20x_usb_power_desc = { >> .name = "axp20x-usb", >> .type = POWER_SUPPLY_TYPE_USB, >> @@ -406,6 +516,16 @@ static const struct power_supply_desc >axp22x_usb_power_desc = { >> .set_property = axp20x_usb_power_set_property, >> }; >> >> +static const struct power_supply_desc axp813_usb_power_desc = { >> + .name = "axp20x-usb", >> + .type = POWER_SUPPLY_TYPE_USB, >> + .properties = axp813_usb_power_properties, >> + .num_properties = ARRAY_SIZE(axp813_usb_power_properties), >> + .property_is_writeable = axp20x_usb_power_prop_writeable, >> + .get_property = axp20x_usb_power_get_property, >> + .set_property = axp20x_usb_power_set_property, >> +}; >> + >> static int configure_iio_channels(struct platform_device *pdev, >> struct axp20x_usb_power *power) >> { >> @@ -487,10 +607,16 @@ static int axp20x_usb_power_probe(struct >platform_device *pdev) >> usb_power_desc = &axp20x_usb_power_desc; >> irq_names = axp20x_irq_names; >> } else if (power->axp20x_id == AXP221_ID || >> - power->axp20x_id == AXP223_ID || >> - power->axp20x_id == AXP813_ID) { >> + power->axp20x_id == AXP223_ID) { >> usb_power_desc = &axp22x_usb_power_desc; >> irq_names = axp22x_irq_names; >> + } else if (power->axp20x_id == AXP813_ID) { >> + usb_power_desc = &axp813_usb_power_desc; >> + irq_names = axp22x_irq_names; >> + >> + /* Enable USB Battery Charging specification >detection */ >> + regmap_update_bits(axp20x->regmap, AXP288_BC_GLOBAL, >> + AXP813_BC_EN, AXP813_BC_EN); > >This seems like a duplicate of > >> } else { >> dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n", >> axp20x->variant); >> -- >> 2.21.0 >> >> -- >> You received this message because you are subscribed to the Google >Groups "linux-sunxi" group. >> To unsubscribe from this group and stop receiving emails from it, >send an email to linux-sunxi+unsubscribe@googlegroups.com. >> To view this discussion on the web, visit >https://groups.google.com/d/msgid/linux-sunxi/20191002112545.58481-3-icenowy%40aosc.io. -- 使用 K-9 Mail 发送自我的Android设备。