Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp56802pxb; Tue, 12 Apr 2022 16:42:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwI1L0w/21fnij417tyh9DxYb7O++bufUiBA//dQWadAqo9a/4l0YDRiFW9h4QuIx5alHWS X-Received: by 2002:a05:6a02:283:b0:342:703e:1434 with SMTP id bk3-20020a056a02028300b00342703e1434mr32176990pgb.74.1649806926803; Tue, 12 Apr 2022 16:42:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649806926; cv=none; d=google.com; s=arc-20160816; b=xB6NYndgPhb7dJRuTyFpcbCtHuQlErncoPAgTu77xUkiKkF6qHtBMTrJlA3gUmHCgn 7bIMN+CBpJ51xAqOwKwtffoPq3hGBtFDxUyjC66Jl84pPkza9vVgETbTVgiO9pcyma0d ARmt0uyqXyHckOzEpdH3D/8Zbm5XP/0mhv57G+m4OuO/zd4CjU1NJDBxzamlcYx5IBzH +ubJ7K2MceBIMML6bWc4zFHiYYvMZj27LYjMQLWSGB+lTLy3tQVL9srMYBNQrFKLmhUT FUxO+F3wRt5lb0J0pP3DyLKmaN3ZZarJtOTnGrfZeAuvu5WVQcfhlRECO5HiGWNSpX2U dQpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=By7NZlyksknui22RTrvH/ozXI4O7YTAgnKlpWr9+n64=; b=AcruYD2mlYb7lQK8lWd0v42UQUE2ToEOwMsGDTdinozQWAHgA6AhFidgf2wUvOsCF+ 9ZjSzMZ82HWGqBkcPUtmzVpYMYZRrnmbPS0QY4keHVQadBUpne0l3UpNj5LjSy2b/+NS zZe0sBLEL6tQoxLsPqCvzX611sh+llYiRJVx2yJOJfATrQCLkdD8RgWLOG5Hw/LE6Zg7 U/xLFvbFYY7HLPPiiOIxdajfVtjZVMFmbv2OjgRBDrj9r6JDFF1UYYcn0r7xgutbLg9v A0XK+3U5L573xy3HjQPK6FNcMjR9KxlnqjlRjQGJUxXWSB97BdvE8zCAjLBtfe9YC5SK mdNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Crs6Ls1f; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id e21-20020a633715000000b00399f7e8d23csi3782713pga.665.2022.04.12.16.42.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 16:42:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Crs6Ls1f; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A23561C7BBE; Tue, 12 Apr 2022 14:34:06 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377202AbiDLHsA (ORCPT + 99 others); Tue, 12 Apr 2022 03:48:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353075AbiDLHOs (ORCPT ); Tue, 12 Apr 2022 03:14:48 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C887255AF; Mon, 11 Apr 2022 23:56:20 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id DAD4460EEB; Tue, 12 Apr 2022 06:56:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4C4EC385A6; Tue, 12 Apr 2022 06:56:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649746579; bh=CBy5DzSt/DDqfNIg2zikiyymZmnWiRhZbtSG9wmBV8s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Crs6Ls1fhcCoaKKGRQLIu+5LeD8c1WTM3rx3jIBS2v0ybjtKXkUvMroWbLvm5rxc1 6j2nuPpDA/kulbS2w6Q/qcUkVClvcC+F+e/fZ1hBGMCLUjAuBGnqTw2uUwFU+3Smfk c45pfjk5Etbiiy2qGGv9xkwKxFtX16VSD9dva/aw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hans de Goede , Sebastian Reichel , Sasha Levin Subject: [PATCH 5.16 056/285] power: supply: axp288-charger: Set Vhold to 4.4V Date: Tue, 12 Apr 2022 08:28:33 +0200 Message-Id: <20220412062945.287639987@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062943.670770901@linuxfoundation.org> References: <20220412062943.670770901@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hans de Goede [ Upstream commit 5ac121b81b4051e7fc83d5b3456a5e499d5bd147 ] The AXP288's recommended and factory default Vhold value (minimum input voltage below which the input current draw will be reduced) is 4.4V. This lines up with other charger IC's such as the TI bq2419x/bq2429x series which use 4.36V or 4.44V. For some reason some BIOS-es initialize Vhold to 4.6V or even 4.7V which combined with the typical voltage drop over typically low wire gauge micro-USB cables leads to the input-current getting capped below 1A (with a 2A capable dedicated charger) based on Vhold. This leads to slow charging, or even to the device slowly discharging if the device is in heavy use. As the Linux AXP288 drivers use the builtin BC1.2 charger detection and send the input-current-limit according to the detected charger there really is no reason not to use the recommended 4.4V Vhold. Set Vhold to 4.4V to fix the slow charging issue on various devices. There is one exception, the special-case of the HP X2 2-in-1s which combine this BC1.2 capable PMIC with a Type-C port and a 5V/3A factory provided charger with a Type-C plug which does not do BC1.2. These have their input-current-limit hardcoded to 3A (like under Windows) and use a higher Vhold on purpose to limit the current when used with other chargers. To avoid touching Vhold on these HP X2 laptops the code setting Vhold is added to an else branch of the if checking for these models. Note this also fixes the sofar unused VBUS_ISPOUT_VHOLD_SET_MASK define, which was wrong. Signed-off-by: Hans de Goede Signed-off-by: Sebastian Reichel Signed-off-by: Sasha Levin --- drivers/power/supply/axp288_charger.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c index ec41f6cd3f93..c498e62ab4e2 100644 --- a/drivers/power/supply/axp288_charger.c +++ b/drivers/power/supply/axp288_charger.c @@ -42,11 +42,11 @@ #define VBUS_ISPOUT_CUR_LIM_1500MA 0x1 /* 1500mA */ #define VBUS_ISPOUT_CUR_LIM_2000MA 0x2 /* 2000mA */ #define VBUS_ISPOUT_CUR_NO_LIM 0x3 /* 2500mA */ -#define VBUS_ISPOUT_VHOLD_SET_MASK 0x31 +#define VBUS_ISPOUT_VHOLD_SET_MASK 0x38 #define VBUS_ISPOUT_VHOLD_SET_BIT_POS 0x3 #define VBUS_ISPOUT_VHOLD_SET_OFFSET 4000 /* 4000mV */ #define VBUS_ISPOUT_VHOLD_SET_LSB_RES 100 /* 100mV */ -#define VBUS_ISPOUT_VHOLD_SET_4300MV 0x3 /* 4300mV */ +#define VBUS_ISPOUT_VHOLD_SET_4400MV 0x4 /* 4400mV */ #define VBUS_ISPOUT_VBUS_PATH_DIS BIT(7) #define CHRG_CCCV_CC_MASK 0xf /* 4 bits */ @@ -769,6 +769,16 @@ static int charger_init_hw_regs(struct axp288_chrg_info *info) ret = axp288_charger_vbus_path_select(info, true); if (ret < 0) return ret; + } else { + /* Set Vhold to the factory default / recommended 4.4V */ + val = VBUS_ISPOUT_VHOLD_SET_4400MV << VBUS_ISPOUT_VHOLD_SET_BIT_POS; + ret = regmap_update_bits(info->regmap, AXP20X_VBUS_IPSOUT_MGMT, + VBUS_ISPOUT_VHOLD_SET_MASK, val); + if (ret < 0) { + dev_err(&info->pdev->dev, "register(%x) write error(%d)\n", + AXP20X_VBUS_IPSOUT_MGMT, ret); + return ret; + } } /* Read current charge voltage and current limit */ -- 2.35.1