From patchwork Fri Aug 16 08:19:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 819957 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B9CE12C465; Fri, 16 Aug 2024 08:19:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796359; cv=none; b=ZLV7VAj33sT7tn2+DD+wkozESHNz1JM1/8sN6N04FJQyetg9ujgOzn+90wcFhlcY2vdUTfQSIHoWb3KH5Y9gWlSHu/khJt12v7hnxx12/MvQQr1stftx8FzINJAc5kZd4Jkpfz7zhNMkTwvo0+9W5twCw2HHKVAVbZfqsoOgexA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796359; c=relaxed/simple; bh=hw9bscDFCN3vQXC6NtThwBJyizDt4UmRCGdr2F/CUvE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ttP709IFDdXHWcMhYMxG+MnY7bevGYu46wDGXA3byudCi5iA5WNbp0jraanV00VTyUh2mWj5EsZzeasxcubAm8SAsZzFVnYGmeQNby4pRx9e93MGswnGSltZJl+RSPKXbtEAqBToTKnpLpFqG62crSYw4rbzrPlXf/cqt/wjViU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=M3dk1ZJS; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M3dk1ZJS" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-368313809a4so1429775f8f.0; Fri, 16 Aug 2024 01:19:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723796356; x=1724401156; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=OuFOTwnVfJo3Y5EGzlmZmw/h1XsJN7qD5nElULC2qxw=; b=M3dk1ZJSboFVTJu3ob1+m++WC6CKJhDJkVVNPXELlI65YlQSuBqfegG8ur8C5bXCst BkRi2B3k8Gu4c8Fre6lvyg5qHtz9PLlvzlOq9nlF864H5d7rC7T4doEaSQShkCi7CEU8 ky2bnSG8HPCH5v/QLkLASCbjuHPh77cEksh2fC0PV7Z9GwmiLJGNUoiw/SRkNN9+4Isu 5Vs2u4hSCpyBmYN98qI0R99grkJCtp3kvUBsyI0lSqkN6uuptaJYXGg5sG9kY+302uYw Mb0rQsR0g0p47KAT1oCm3AKLsZlfUyKXKB/iMhNN1BERaXRqoNViL5OAvNbAjXhqWcC7 G/Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723796356; x=1724401156; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OuFOTwnVfJo3Y5EGzlmZmw/h1XsJN7qD5nElULC2qxw=; b=HVU/dX4VqpiFApJFSWrhidi/GDAyrKBLdWRaVWbpRuMPHTAc+i20vDkPMZ/k8eRBhI onaUPNUQYQM0qxF9Ydi7EQXQavQ3eYhZGd604m3Kf4HCegTsTtKVzZh+DmMTLxLIWUoM 0vw1+9G5avFv+5vYZtrbppNxOSW6FxxL92bfYrEo+3o9PnCamkNah089BwAAaQWKggja HXHbaQ25IAVA3LaYZCSnWVwH0WVSK5TZwtczS5Sn8tPf43FPMs5N5IZlHZQ9AAQPouvS psRr22zvAwdxN/kj2DScfiWwfWfhIOfDtUY4qBj+qhPZMdemPx66Bz4ZFEodMje+baor K1mQ== X-Forwarded-Encrypted: i=1; AJvYcCXdMFzMA37sBeEbyvySxaiP8VB9Ivr69SWHNUB+i2AWObgz4ceCCSKPrYFS6ze4Lz72Latmh4fVogG260WlyhCl27BsVwRtR+zGnr8QTBkr8utifEKT8Itx/tO4ucfUtIRpSqurd7Dto8ft4nUlNEFBq8Kk+oXmcyEEiFho174FksIkzV1igL8Sc+gMcDRPBl8amjQI/tOJHAHjJVMbeOn/tgA//b8= X-Gm-Message-State: AOJu0Yx3zSDEtGkk3NJdfVLrd8LK30Tza6Dk4ZSpBZh3wavwqQij+pf/ obdMoFtfEIFS47Bt9+RSVvm5KimYE1BZV1mEPmA6v+eEJ9Har77l X-Google-Smtp-Source: AGHT+IGGVQuQ8zMyFMMGEoBO6ujH/sr/qCBYErhFw8TbTMZzGRD67A0Q/9o2jMrWQj5olGsuXutEBQ== X-Received: by 2002:a05:6000:4a:b0:36b:ea2d:fd5a with SMTP id ffacd0b85a97d-37186d7b2e8mr3437830f8f.22.1723796355464; Fri, 16 Aug 2024 01:19:15 -0700 (PDT) Received: from tablet.my.domain ([37.30.8.221]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ded35991sm69732645e9.21.2024.08.16.01.19.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 01:19:15 -0700 (PDT) From: Artur Weber Date: Fri, 16 Aug 2024 10:19:07 +0200 Subject: [PATCH v4 01/10] dt-bindings: power: supply: max77693: Add monitored-battery property Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240816-max77693-charger-extcon-v4-1-050a0a9bfea0@gmail.com> References: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> In-Reply-To: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sebastian Reichel , Rob Herring , Conor Dooley , Lee Jones , Krzysztof Kozlowski , Alim Akhtar , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Henrik Grimler , Wolfgang Wiedmeyer , Denis 'GNUtoo' Carikli , Artur Weber , Krzysztof Kozlowski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1566; i=aweber.kernel@gmail.com; h=from:subject:message-id; bh=hw9bscDFCN3vQXC6NtThwBJyizDt4UmRCGdr2F/CUvE=; b=owEBbQKS/ZANAwAKAbO7+KEToFFoAcsmYgBmvwt9rAhxytB9Lc18vnFg3zgPPljMqkf50Mp6b NdBnWipLeeJAjMEAAEKAB0WIQTmYwAOrB3szWrSiQ2zu/ihE6BRaAUCZr8LfQAKCRCzu/ihE6BR aPJhEACdsnef5g67ckXGS2TQ1QCDItHM8qP/BfBh5lcEFmL1LK8IoE4VSxLhJn03/O0hTSEoOU7 l29k1yLv+vulxktdeuAbrVoobqjnQlhHk1IQg4Ek3eDOI/JOr+zWL6l+WblJjuhPliQgBvSm8xM dKOpoiBmQaCg4vn0cNsMNaUANFZvOFuLm774j7B8uWE3FdvqjuZ82/WMeDQTVrJX7EN689sVu2H ZQWgupx4QwWP7Q8y5QWkEWqT2QNc7w2k8fHdoQm4NTPsHeM86j0SLxHLuWjMKyi4TN+szpvaibR k8I/peX7DmiU60ewbBzbPja+HBcLoL9HXpEnwZvG2XPK2My/1jvBj+8m2mYsgd9tJpCLACeAgxQ MvXvrnuat/rOpMgYVqPHC0w/wL7oPGcgx2YQ55DYabvAmaWPmg1Y6puh5djkZWL0C0xAF3z1xNL TWhVrFUtUCZqTrFRADf7iVDibBpuhVBBjqgzJ3EYks1HrmEbS1OY6FGtrZdyRgJhzA7UITgxzXC wW/0+Tce2/7lmDTP93r6b1irWAo20GGBMSLFLCzQAKWVamsx8wfm+OdehYJAD5gUiu8YwQzXth/ cHz+Q1Hi5DTudsTlIStQmDEhc/f50nUxy4aaFDc/ruptQ+of5eLuySK+y10MhAum85nZYgYJvMn a3r4Xj8BmCqoKAg== X-Developer-Key: i=aweber.kernel@gmail.com; a=openpgp; fpr=E663000EAC1DECCD6AD2890DB3BBF8A113A05168 Add the monitored-battery property, so that its constant charge current property can be used to specify the current limit to use for fast charge (when plugged into a wall charger). Reviewed-by: Krzysztof Kozlowski Tested-by: Henrik Grimler Signed-off-by: Artur Weber --- Changes in v2: - Switched to monitored-battery property from separate fast charge current property --- .../devicetree/bindings/power/supply/maxim,max77693.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml b/Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml index f5fd53debbc8..2f4437dafdc0 100644 --- a/Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml +++ b/Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml @@ -16,10 +16,19 @@ description: | See also Documentation/devicetree/bindings/mfd/maxim,max77693.yaml for additional information and example. +allOf: + - $ref: power-supply.yaml# + properties: compatible: const: maxim,max77693-charger + monitored-battery: + description: + Phandle to "simple-battery"-compatible battery node. + The constant-charge-current-max-microamps property of the battery + node is used to specify the fast charge current. + maxim,constant-microvolt: description: | Battery constant voltage in uV. The charger will operate in fast From patchwork Fri Aug 16 08:19:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 819956 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D8AE13B5B3; Fri, 16 Aug 2024 08:19:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796362; cv=none; b=Awt7Um2ncp2fTAYXDPgUu1w4XVPR84hEy6Fa6vBoUqxdRJWnvEC5Lo9aPJeBGiAic2cEVrAOVLaBrg2gnrCUAfPzoBicX8/JppX9ax9Ku5J+bITYFoilgXu64DxsPtRM8W7tuNDRBbyhDRB7XRXXSBrt4Lc06pu89wcJLqQfpho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796362; c=relaxed/simple; bh=9IYOJ5Si+LfLkVCi/KMBWfaO4SAQ49FCSsDSX2k02RU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GUcEF3UdI+lYbeu14mTS1jybYubgjgVDmspbaMZkC7EPVA2bCYKuoEpA+F1xrwKp3WOafjZYjFj5Ab2S+XrIQnCDvU2K0/3KJPyV8f0Ki3H1P6mMEZndA84uAQPE2jRMNt1wqrXydNFxo9ULzlhhR5+hiRkuXQqgOLVM2x5lVF0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=E2jLvzgi; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E2jLvzgi" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-428243f928cso12312855e9.3; Fri, 16 Aug 2024 01:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723796359; x=1724401159; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ATiloHsMDaf4CMk8cdUWOTXJanYqTe2+ZJJOm0eYxfI=; b=E2jLvzgiBUIGYc56aM9oJ8U0USO0B30xfOjacVzxFJL854sf/mr0rpDk20iyEQKPaW pp9uXmFSnVbM49m0UHrGrKfUh+S0RTcjxafVxcQvVI3l3ijVan1B/YiLUrnKkLUocqgc cL73XV8LLOPXLZM8fA5g8T5bu75WDzR3lChUv+VT0A9/EXVlZvgddlv+tWoMGQWL9oQ+ OAlaL14DdI6QoNbp42jhzuhbl3YsDepTyrGZu6H8+mkzEC1hvQYbQaoeq9OdVjG3LTWk U7WZnGG23qLnpGMfF9yJ2Rm+xuNiFEzs2j4/nGbWQ/9LSjMDTpE6hGz/0jKxFUysiZ6B yBLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723796359; x=1724401159; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ATiloHsMDaf4CMk8cdUWOTXJanYqTe2+ZJJOm0eYxfI=; b=uAbENiQKJNDv69/UgMsgPtIH0abD17q7JkyEgaKnIYh/jnO4Ra6w8OphsWekiasRUQ g/gjGOK5NOEk1QSGvrTnEZv9rRXtrV5s7u6EDZ4XE+vfE+/SuHyLHxbAh6tIPge7eo21 2BRWsKBuP9lxGaZ2sK6g758cb2J+X83qtb1ptQcFGGZEITuiLrxYaXAbP64chTcFZjXZ pEAwPeQ1fw+qhUkTQVU6aBFVFiScoPqR7NENuar4lqqAfZyNNH7T9MEG8p1tTA7mRNOx ggTikK1Dx+5ptiXHfvFOm7paXH62nS3QPj9PmwStpbO0Sk5FO0rsmzWG7ONhsQ6IdHe5 M5Rw== X-Forwarded-Encrypted: i=1; AJvYcCUEj9fkQYZdO0bgLdeHfh3aXxao1/9+ntL8JJYE8SleVOOUcqkgCHVnjprS9Ml1PF2uvIkgaHzoUiIPu0fayBg7A0J4hBnCHnZJigr01Vg8YsHG9cbxlVzqCwJ1tnvJllRjv4FdO2huX3Jxf5KuNmhARkd2HCiKMGHwceF0PoGNiK5p4mrdXuc76At5uqylrvwESiajhF+AP6M5osQMP3ZiFuHWv30= X-Gm-Message-State: AOJu0YwUakQRFOflWgQ/si3L9c/1R6MxldWpdhB2ZSQQBDc/SK9aCgLA bD2KwtckWrPgpff4NbKwj+Wf5E+sD0XixteVRvWdzvurqWSxFedk X-Google-Smtp-Source: AGHT+IFZVBfIxeRRQQdYKBVbIL/LlcK8Xckk0mrM3X9pjm13/8U5f09VuGWp1dTEiDNUiNzFSTW+1w== X-Received: by 2002:a05:600c:5254:b0:426:622d:9e6b with SMTP id 5b1f17b1804b1-429ed7cce32mr12561705e9.23.1723796359212; Fri, 16 Aug 2024 01:19:19 -0700 (PDT) Received: from tablet.my.domain ([37.30.8.221]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ded35991sm69732645e9.21.2024.08.16.01.19.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 01:19:18 -0700 (PDT) From: Artur Weber Date: Fri, 16 Aug 2024 10:19:09 +0200 Subject: [PATCH v4 03/10] power: supply: max77693: Expose input current limit and CC current properties Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240816-max77693-charger-extcon-v4-3-050a0a9bfea0@gmail.com> References: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> In-Reply-To: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sebastian Reichel , Rob Herring , Conor Dooley , Lee Jones , Krzysztof Kozlowski , Alim Akhtar , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Henrik Grimler , Wolfgang Wiedmeyer , Denis 'GNUtoo' Carikli , Artur Weber X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4267; i=aweber.kernel@gmail.com; h=from:subject:message-id; bh=9IYOJ5Si+LfLkVCi/KMBWfaO4SAQ49FCSsDSX2k02RU=; b=owEBbQKS/ZANAwAKAbO7+KEToFFoAcsmYgBmvwt+B9dItojtyq9JMOVXfTV0Y4E6HJELeVrGz 5L6JIMqdPaJAjMEAAEKAB0WIQTmYwAOrB3szWrSiQ2zu/ihE6BRaAUCZr8LfgAKCRCzu/ihE6BR aN/1D/44BbqpiUrmya2u3MQKsTMDcLUdMN1u7gjA0nVafkmQycc9654R/GBZ2Qc8fC6eLbFVvsB dhn7slD9g8dHpE4drqkTLFnceu70q519uo0ZXz/Jzv9EqYGOsHsGUjaqbolJeiWrYsqOlNxjV7X 2QdHze/Szy+NbdYxDTKzc6osxPLV49CylDodw8SDt6+xUNZDSRmC591KLSBtKjcHQMIJ2W0nluG YI47KKnt2gIMlpv4DjM33BRKVSlC129QunHtWLyDkVLdVjyU/ZKE4BAbkKLegvrcxWaA2TwD+Ar KtHiMx80shyu0bytyFB9BomXdFkRcI+FnQh0EpbzaupxcUA9EuGgcXV0isZ58CZrtI4iNSI0355 js19HfYVkZet2KcBO2+1eSZfC5V/5Tqk7xbbFisItCHDCmypocICWAOaVoXSHa1vCCIrMDbgz8V Mc4EVG61GuLi7dgDebwmagpTLDNrEuLnMf7X8iNiNEM5hFUdiuUn7YIOiR4lV/Csj9tfwJD/vmy 8fnO89flT2asT+YGPp9K9piIEf51CD9Otv/e1ZreqjM/5VcQnK4chCWE/9z0L25aJTWqtLAOMXJ xP+kkoiYYQFENRzGThOaVu4gG24BnA4amHOmgOMhan8AlvzOBUaFsLgOpP4vnbnttdrjg/TNlAr ipZLSuvMlGMuL6w== X-Developer-Key: i=aweber.kernel@gmail.com; a=openpgp; fpr=E663000EAC1DECCD6AD2890DB3BBF8A113A05168 There are two charger current limit registers: - Fast charge current limit (which controls current going from the charger to the battery); - CHGIN input current limit (which controls current going into the charger through the cable). Add the necessary functions to retrieve the CHGIN input limit (from CHARGER regulator) and maximum fast charge current values, and expose them as power supply properties. Tested-by: Henrik Grimler Signed-off-by: Artur Weber --- Changes in v3: - Dropped CHARGER reg reference in favor of managing the registers directly - Changed to use CONSTANT_CHARGE_CURRENT_MAX instead of CURRENT_MAX for fast charge/CC current property Changes in v2: - Adapted to both current limits being managed in the CHARGER regulator --- drivers/power/supply/max77693_charger.c | 52 +++++++++++++++++++++++++++++++++ include/linux/mfd/max77693-private.h | 5 ++++ 2 files changed, 57 insertions(+) diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c index 2001e12c9f7d..4caac142c428 100644 --- a/drivers/power/supply/max77693_charger.c +++ b/drivers/power/supply/max77693_charger.c @@ -197,12 +197,58 @@ static int max77693_get_online(struct regmap *regmap, int *val) return 0; } +/* + * There are *two* current limit registers: + * - CHGIN limit, which limits the input current from the external charger; + * - Fast charge current limit, which limits the current going to the battery. + */ + +static int max77693_get_input_current_limit(struct regmap *regmap, int *val) +{ + unsigned int data; + int ret; + + ret = regmap_read(regmap, MAX77693_CHG_REG_CHG_CNFG_09, &data); + if (ret < 0) + return ret; + + data &= CHG_CNFG_09_CHGIN_ILIM_MASK; + data >>= CHG_CNFG_09_CHGIN_ILIM_SHIFT; + + if (data <= 0x03) + /* The first four values (0x00..0x03) are 60mA */ + *val = 60000; + else + *val = data * 20000; /* 20mA steps */ + + return 0; +} + +static int max77693_get_fast_charge_current(struct regmap *regmap, int *val) +{ + unsigned int data; + int ret; + + ret = regmap_read(regmap, MAX77693_CHG_REG_CHG_CNFG_02, &data); + if (ret < 0) + return ret; + + data &= CHG_CNFG_02_CC_MASK; + data >>= CHG_CNFG_02_CC_SHIFT; + + *val = data * 33300; /* 33.3mA steps */ + + return 0; +} + static enum power_supply_property max77693_charger_props[] = { POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_CHARGE_TYPE, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_ONLINE, + POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, + POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, }; @@ -231,6 +277,12 @@ static int max77693_charger_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_ONLINE: ret = max77693_get_online(regmap, &val->intval); break; + case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + ret = max77693_get_input_current_limit(regmap, &val->intval); + break; + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX: + ret = max77693_get_fast_charge_current(regmap, &val->intval); + break; case POWER_SUPPLY_PROP_MODEL_NAME: val->strval = max77693_charger_model; break; diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h index 54444ff2a5de..20c5e02ed9da 100644 --- a/include/linux/mfd/max77693-private.h +++ b/include/linux/mfd/max77693-private.h @@ -217,6 +217,10 @@ enum max77693_charger_battery_state { #define CHG_CNFG_01_CHGRSTRT_MASK (0x3 << CHG_CNFG_01_CHGRSTRT_SHIFT) #define CHG_CNFG_01_PQEN_MAKS BIT(CHG_CNFG_01_PQEN_SHIFT) +/* MAX77693_CHG_REG_CHG_CNFG_02 register */ +#define CHG_CNFG_02_CC_SHIFT 0 +#define CHG_CNFG_02_CC_MASK 0x3F + /* MAX77693_CHG_REG_CHG_CNFG_03 register */ #define CHG_CNFG_03_TOITH_SHIFT 0 #define CHG_CNFG_03_TOTIME_SHIFT 3 @@ -244,6 +248,7 @@ enum max77693_charger_battery_state { #define CHG_CNFG_12_VCHGINREG_MASK (0x3 << CHG_CNFG_12_VCHGINREG_SHIFT) /* MAX77693 CHG_CNFG_09 Register */ +#define CHG_CNFG_09_CHGIN_ILIM_SHIFT 0 #define CHG_CNFG_09_CHGIN_ILIM_MASK 0x7F /* MAX77693 CHG_CTRL Register */ From patchwork Fri Aug 16 08:19:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 819955 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA47F140360; Fri, 16 Aug 2024 08:19:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796367; cv=none; b=cOTrgGJq9CS7K4gSl4lY/cFkJ8YxqKrn3kwT/2comcsb76Zedc8pDGdAZ0N+zmkrViDDpyspBVFvYbvrKzirbo+3lh1VhXbgC26GvUitxvWggWQDbDnuPbnJWdnpgvluIMYXy2MJwIgWFQWlSUCmafoikxVYnew1E9Iw2wHZ3cw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796367; c=relaxed/simple; bh=6pUEa/z1LpG4I1N0jklLMxkabmUriMb9vquyocxTwTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VaB7fPJRkUGMc8dyP+/WqXxn53UuroOXa3ob2OckeTNounaxm6juLJp3vpaoi3+JY9DOPQb/lAoOfIyUDZ90mCWK96Kv+0ZXOxwKuUUUUG3I4aSh1DU0whIY1rPb2lgNAKBDJvKowamDLKc3eEdhKuTvaaM6k4QbUyIGUYvAEPc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=O1qMfOK+; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="O1qMfOK+" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-42816ca782dso12730945e9.2; Fri, 16 Aug 2024 01:19:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723796364; x=1724401164; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=H0VjY7601kLqnVRjaSR87BnlCssrimW4yWJjrae9bpg=; b=O1qMfOK+/NOUGeOVlnuX2IM47m3G/05JViQwElXeLCkp4gnYyTcc5Ed7VmCfxaoqvC mrHHOTYa6wI844RBkNeZKE/SMyqvjimVhx6GPECPm85KQMo3jUk5E0dYF08HXfvaxFo0 DZH7rEFTYZBPqoSnL7n0+VSd9EhpcqWJzHYdkvGTwfWCNM/vaxtgS9c99GGlItC9rh+p rmkJ5WgpCLBZYWeXRVMR3rECHAfpvhEtDuzaVus1W5Ma8Nx/kXWlXRcSNz3cWTam48zI vfBJ76prVa/NVafyoqqNCL4xUufCr4zkPi/XgY9slNwABBJ+AMclAy4BqEOE970Mwm2Q njUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723796364; x=1724401164; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H0VjY7601kLqnVRjaSR87BnlCssrimW4yWJjrae9bpg=; b=FyyiOM2qq2sTn39Zjr+huWcz5h2qo5+cCp819qIFVLTe8kwh/z0N8zQU2mJ9qkpprl hrZCyMQ+5FHbLmpRYyTl/VJViD6B71DzPv3qo+m98LvRovqjslJ0nbS4esx+6IlY/g7k 1nJ+/yqbEfgHNUAJIUFS8mtmf4/4x61LH9f7wT40yj3rXtbkd4Vf5lo2x5cfKBLuTd9Y lPbrF1Eu0Q6QHqLWu9hiX3knNXnh0/1pdAUgPceu746p9JnSLKY21xxASHEtHoMvAhw2 pvhrbc4kXsTKfigv1jQRdqyFnIRfea3XaXJGSq+gAcFtqyo99z2SXJQ/tTBCcRY6GccX mZiQ== X-Forwarded-Encrypted: i=1; AJvYcCXbUy4u797k4PRAc4QeTT+w337o+LwX2Mkef7Ca0qaKUS391b0mH+32Ym4T5CYwDT7Ih5Fpm0HJnM3It+NN/qnmViBi25E71EZ00bmFd0yjL2CF0sBbZrfMyXbSyO8p43cYXeLPsLplsx1p+h/oKO4UC5/rpR5GcR2FE/4rc8qw9LGU/ILLUCT43g7B5JFg6cJ3yoYOirzGSu7UzK0ERVY4Qbp+oik= X-Gm-Message-State: AOJu0YxFLbo2BajmJoGmiOBcdVoAaUDGL/HpZRVFHh3o5RNRXMm695kT dNUFKfet3U32StRSK0fGGjz+TxhAMgqIKfLKdylUI+YvqKXAttRk X-Google-Smtp-Source: AGHT+IEiFFDQqMF8QgPyT0z9ZHgrr2uIL5HHhcaOJ5FP3rUqg97S4HoRfBM4xlWnm5CoJ0V8/bA7AQ== X-Received: by 2002:a05:600c:3547:b0:426:647b:1bfa with SMTP id 5b1f17b1804b1-429ed780642mr12963605e9.8.1723796363711; Fri, 16 Aug 2024 01:19:23 -0700 (PDT) Received: from tablet.my.domain ([37.30.8.221]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ded35991sm69732645e9.21.2024.08.16.01.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 01:19:23 -0700 (PDT) From: Artur Weber Date: Fri, 16 Aug 2024 10:19:11 +0200 Subject: [PATCH v4 05/10] power: supply: max77693: Add USB extcon detection for enabling charging Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240816-max77693-charger-extcon-v4-5-050a0a9bfea0@gmail.com> References: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> In-Reply-To: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sebastian Reichel , Rob Herring , Conor Dooley , Lee Jones , Krzysztof Kozlowski , Alim Akhtar , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Henrik Grimler , Wolfgang Wiedmeyer , Denis 'GNUtoo' Carikli , Artur Weber X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6402; i=aweber.kernel@gmail.com; h=from:subject:message-id; bh=6pUEa/z1LpG4I1N0jklLMxkabmUriMb9vquyocxTwTg=; b=owEBbQKS/ZANAwAKAbO7+KEToFFoAcsmYgBmvwt+8h9TAdRRpp+MYN+z1MTgfK4MwdezAyecY L0tGGVUHyOJAjMEAAEKAB0WIQTmYwAOrB3szWrSiQ2zu/ihE6BRaAUCZr8LfgAKCRCzu/ihE6BR aCwHD/4+5OtgAWYW5evgF17zGQOGWQ+0ZWdUpL6NXjN5ntkmEMjjRHP5Wzcs/hzVGeWRrXva2QK jW79NxVHo04f+/n/Gd4AzvlaBlIE7Xcx5YDwE0bW0DMoHyObESv8ixIorAQ4qwHFDcdsC4ocUBd Hcvj23ARvHQsmAQ+sIPAepKMKAJNIJc1kexeXL6+8e00ZiNO1b5JImBGDZURAPO2wwonioyaXqh sduh7t1jFmH9slClur5QuekezehIQjoj+MoLTc+7/lVgse3kCIHuT78+QKt/7hhEsgBo3jSvyg+ B+uuxBl8FtJPoisizdv+hfaOVjiBvMUs+N6gi8qZHoWwdTfvFqb6biM4XPhUSmL+Q0pVzVyHRcL GEEjf32UviPLAXAyySMGb0BIy2A2ictFLux7bM6ogWpHUhW0facibLpp9+kFjAExYeEXDwHExfk ybQsr/QIiJoPuU9ytZM51hi78yt47P3k8z2K/Nem5rHOPJTmZCMP+5IRjrDx7ZCrP05yNe3bZs/ 6IOYbv2QwFlqlJ+bWYczrbgLxlKNNMXeRet33W7P9459LGN2dJy/cQxopqiO3n5ofNIW3vPTPvf LQwytwLGlcKblw3oDdY0xyLGQow7BqAKzc66fYrHtxdFv8wlCr8qs6jDHxZh83TSQo1Z059sQKT RftZqJJgdjrsKSQ== X-Developer-Key: i=aweber.kernel@gmail.com; a=openpgp; fpr=E663000EAC1DECCD6AD2890DB3BBF8A113A05168 1. Add a function that allows for enabling/disabling charging. 2. Add a device tree property, "maxim,usb-connector", that can be used to specify a USB connector to use to detect whether a charging cable has been plugged in/out, and enable/disable charging accordingly. The extcon listener/worker implementation is inspired by the rt5033_charger driver. Tested-by: Henrik Grimler Signed-off-by: Artur Weber --- Changes in v4: - Fix missing connector property causing probe deferrals Changes in v3: - Adapted to both limits being split up again - Move charging/extcon work functions above reg_init - Drop unnecessary extcon unregister from probe error path - Change disconnect message Changes in v2: - Changed to adapt to both current limits being managed by one function --- drivers/power/supply/Kconfig | 1 + drivers/power/supply/max77693_charger.c | 122 ++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig index 3e31375491d5..e4aeff9e7ad1 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -549,6 +549,7 @@ config CHARGER_MAX77650 config CHARGER_MAX77693 tristate "Maxim MAX77693 battery charger driver" depends on MFD_MAX77693 + depends on EXTCON || !EXTCON help Say Y to enable support for the Maxim MAX77693 battery charger. diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c index 17975ec69a6a..d67857d2aa0b 100644 --- a/drivers/power/supply/max77693_charger.c +++ b/drivers/power/supply/max77693_charger.c @@ -5,6 +5,8 @@ // Copyright (C) 2014 Samsung Electronics // Krzysztof Kozlowski +#include +#include #include #include #include @@ -28,6 +30,13 @@ struct max77693_charger { u32 batttery_overcurrent; u32 fast_charge_current; u32 charge_input_threshold_volt; + + /* USB cable notifications */ + struct { + struct extcon_dev *edev; + struct notifier_block nb; + struct work_struct work; + } cable; }; static int max77693_get_charger_state(struct regmap *regmap, int *val) @@ -668,6 +677,77 @@ static int max77693_set_charge_input_threshold_volt(struct max77693_charger *chg CHG_CNFG_12_VCHGINREG_MASK, data); } +static int max77693_set_charging(struct max77693_charger *chg, bool enable) +{ + unsigned int data; + + if (enable) + data = CHG_CNFG_00_CHG_MASK | CHG_CNFG_00_BUCK_MASK; + else + data = ~(CHG_CNFG_00_CHG_MASK | CHG_CNFG_00_BUCK_MASK); + + return regmap_update_bits(chg->max77693->regmap, + MAX77693_CHG_REG_CHG_CNFG_00, + CHG_CNFG_00_CHG_MASK | CHG_CNFG_00_BUCK_MASK, + data); +} + +static void max77693_charger_extcon_work(struct work_struct *work) +{ + struct max77693_charger *chg = container_of(work, struct max77693_charger, + cable.work); + struct extcon_dev *edev = chg->cable.edev; + int connector, state; + int ret; + + for (connector = EXTCON_USB_HOST; connector <= EXTCON_CHG_USB_PD; + connector++) { + state = extcon_get_state(edev, connector); + if (state == 1) + break; + } + + switch (connector) { + case EXTCON_CHG_USB_SDP: + case EXTCON_CHG_USB_DCP: + case EXTCON_CHG_USB_CDP: + case EXTCON_CHG_USB_ACA: + case EXTCON_CHG_USB_FAST: + case EXTCON_CHG_USB_SLOW: + case EXTCON_CHG_USB_PD: + ret = max77693_set_charging(chg, true); + if (ret) { + dev_err(chg->dev, "failed to enable charging\n"); + break; + } + dev_info(chg->dev, "charging. connector type: %d\n", + connector); + break; + default: + ret = max77693_set_charging(chg, false); + if (ret) { + dev_err(chg->dev, "failed to disable charging\n"); + break; + } + dev_info(chg->dev, "not charging. connector type: %d\n", + connector); + break; + } + + power_supply_changed(chg->charger); +} + +static int max77693_charger_extcon_notifier(struct notifier_block *nb, + unsigned long event, void *param) +{ + struct max77693_charger *chg = container_of(nb, struct max77693_charger, + cable.nb); + + schedule_work(&chg->cable.work); + + return NOTIFY_OK; +} + /* * Sets charger registers to proper and safe default values. */ @@ -734,12 +814,34 @@ static int max77693_dt_init(struct device *dev, struct max77693_charger *chg) { struct device_node *np = dev->of_node; struct power_supply_battery_info *battery_info; + struct device_node *np_conn, *np_edev; if (!np) { dev_err(dev, "no charger OF node\n"); return -EINVAL; } + np_conn = of_parse_phandle(np, "maxim,usb-connector", 0); + if (np_conn) { + np_edev = of_get_parent(np_conn); + + chg->cable.edev = extcon_find_edev_by_node(np_edev); + if (IS_ERR(chg->cable.edev)) { + /* + * In case of deferred extcon probe, defer our probe as well + * until it appears. + */ + if (PTR_ERR(chg->cable.edev) == -EPROBE_DEFER) + return PTR_ERR(chg->cable.edev); + /* + * Otherwise, ignore errors (the charger can run without a + * connector provided). + */ + dev_warn(dev, "no extcon device found in device-tree (%ld)\n", + PTR_ERR(chg->cable.edev)); + } + } + if (of_property_read_u32(np, "maxim,constant-microvolt", &chg->constant_volt)) chg->constant_volt = DEFAULT_CONSTANT_VOLT; @@ -811,6 +913,26 @@ static int max77693_charger_probe(struct platform_device *pdev) if (ret) return ret; + /* Set up extcon if the USB connector node was found */ + if (!IS_ERR(chg->cable.edev)) { + ret = devm_work_autocancel(&pdev->dev, &chg->cable.work, + max77693_charger_extcon_work); + if (ret) { + dev_err(&pdev->dev, "failed: initialize extcon work\n"); + return ret; + } + + chg->cable.nb.notifier_call = max77693_charger_extcon_notifier; + + ret = devm_extcon_register_notifier_all(&pdev->dev, + chg->cable.edev, + &chg->cable.nb); + if (ret) { + dev_err(&pdev->dev, "failed: register extcon notifier\n"); + return ret; + } + } + ret = device_create_file(&pdev->dev, &dev_attr_fast_charge_timer); if (ret) { dev_err(&pdev->dev, "failed: create fast charge timer sysfs entry\n"); From patchwork Fri Aug 16 08:19:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 819954 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A60A1448C9; Fri, 16 Aug 2024 08:19:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796371; cv=none; b=qheJOj9tluqYRAv304HJalg09a8ced2ZXxI+w+fyXZGvromq1BSDChTC/xrdazk7F3tPZMCSTYvF8nxMAZOA4OqPX8zlJefaC9DhCIieIjB3qg561tXSs6K5c/n40l64ddTltAwF/39EMk/jliI1fXKHPf8rfojO5vK2hz2SrIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796371; c=relaxed/simple; bh=OEUMcNEwb5KpCYbBVGa/9sqAXNJSzG3pMkHYL8I03Hs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BYd/BRIe/E8RS77oCve5PJNFY7d/eH6bATiPuXbi8AElrG/4JtyZLWDYpYwshsmPe4DFHY9PaAhhuK+EUAv3wX/09VUAPMbLXYaYHwIgSB67X7y77/iGXt+Xdfua4UMnUHBzfFogFFD4hL+aYzQ8HIyvBLdG3DSjm8zeR2lDHc8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Q+QUHHvp; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Q+QUHHvp" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4280ca0791bso12476165e9.1; Fri, 16 Aug 2024 01:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723796368; x=1724401168; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=vXcN+4MSX/QcUPqVj1wMQhGhi1WKb399yNI1f64c3To=; b=Q+QUHHvp61FRoGBiiqksPTSG9V+m1rpEW16yP1XtEVHFnfi7d7g5m9FZkU/bLgx5Ei toAXKArJwfdxnBMKXdxcLT9pWgVWG5CEZZY3si6edzdeeVDmFPqXVSoWFFGuJ4ZmClUm MXHgYNX0ZrS0KVIyZlqt8HvJ9DZQDMMudWfmcHEFC1DFOMiPwvlcG1+ED7OGvFrOwvBz 66SVBP6wHnDkOYct3wJpth/t/6FE/W5ZEkRKinnAeQj+JT/4nuyAjsb0yfl7LYzmC3wg ZGC9uU5GHBzEZX3rh+l/7MKXzRuOm/zXpXRHMxp1eKKxsCACBmUAUkM1nlonGJxNiCad Lt2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723796368; x=1724401168; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vXcN+4MSX/QcUPqVj1wMQhGhi1WKb399yNI1f64c3To=; b=dhhKxSN/+3ZFXMO4/TzeRjTIzY9m/4bfLjWeIcI/JsyY1q/Hj8qaDn7eYv4cEyUlHd akx/Jrnw8+nrpp3pGcr6/inNsY5TYUUrrRd/nw7wf0LObAGLKCdIxBtoHgAsohgXvL2Y mziTSH5QtBqp6iht/qPlpgpyUYKhAloYxgDu8EkfgirCJIVdBJCYAXYl0Nwm4W9xC9Oo uWIM3g4M47Ti2uV1zoo6ZjefZ7dE11XU0DDgiBmsRNWaygptApM9dGRM1y7rUvjHzJFv M0koc2hewZtVNfnnd+mOTpAWSau7yJWVZG6waTvPo1uzP/EqHcepjQxAbFiSafsZGka/ FCSA== X-Forwarded-Encrypted: i=1; AJvYcCV5fWJKqEubPLL4JT0ESAACjMGQozB/O/XmRg1BcNBbWmmuZdNUd35T8eamEtpS+bpJ7Ijn5sBJ+d0TEMxnKBTDAmFPYcvkC2/a+2Ugn4cjW0H7njDd86aVDLK+2XyzaKlGl7xAhfCcaVcHGhPn5qId9VGDkJ1LMfafMuEFYGTE2Je+/hTWg/8WAg7esnau7WPxp2zJ6Wy5nfPH338Bbi/NR+ybwes= X-Gm-Message-State: AOJu0YwjTiYkERkhwMCXqvFQ/IM9UXLTvbnnKnkvcWjJUMZAiEitHPS+ KgFxA9yrxUHwd+Za/w3sd0PIr8WUZoUkxdoED2Jf85PYgAc05F/9 X-Google-Smtp-Source: AGHT+IHcp7XnLYvNLhbNQnLEg3KjGHkjXNOAnHLq2tZHnyLDVXPWGzMQ/tM7Ng9t/D3Pn35IE9GwdQ== X-Received: by 2002:a05:600c:3c9e:b0:427:98b4:624b with SMTP id 5b1f17b1804b1-429ed7e4314mr13528225e9.24.1723796367650; Fri, 16 Aug 2024 01:19:27 -0700 (PDT) Received: from tablet.my.domain ([37.30.8.221]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ded35991sm69732645e9.21.2024.08.16.01.19.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 01:19:27 -0700 (PDT) From: Artur Weber Date: Fri, 16 Aug 2024 10:19:13 +0200 Subject: [PATCH v4 07/10] power: supply: max77693: Set up charge/input current according to cable type Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240816-max77693-charger-extcon-v4-7-050a0a9bfea0@gmail.com> References: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> In-Reply-To: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sebastian Reichel , Rob Herring , Conor Dooley , Lee Jones , Krzysztof Kozlowski , Alim Akhtar , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Henrik Grimler , Wolfgang Wiedmeyer , Denis 'GNUtoo' Carikli , Artur Weber X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2794; i=aweber.kernel@gmail.com; h=from:subject:message-id; bh=OEUMcNEwb5KpCYbBVGa/9sqAXNJSzG3pMkHYL8I03Hs=; b=owEBbQKS/ZANAwAKAbO7+KEToFFoAcsmYgBmvwt+pTyoecftSlWocNm7S26aezVV4rEMO+uPW 6mo/bs4DKKJAjMEAAEKAB0WIQTmYwAOrB3szWrSiQ2zu/ihE6BRaAUCZr8LfgAKCRCzu/ihE6BR aPA9EACUf+9CzArgSMlfX70XD47zElr1ycVHjU3iVpni38eeLaboCWaOWLue0lUp8vJc+z72T2A l73u4b4NAsTtECVS7yt5TGx351I4glu00VE0m6+3Ia10dPOos/IEcl7fgYYcZbwusGlqBdOUs8P 0Vpox3q33iJTI51mwM1TULoUkJ0cC8j1P/Ca7WCL8/+G0j9cUBI7PY2+nz1aYKqhLuJ2LsTGFz/ eDRZVBkC9uAeG93rfr9m4+HCmtFs7EjNrCa64aIjJb92JNeuDGXs+N8De/pA7BQ7V9/BdnJ1FAk eMp5Oeddtnipbd/1xRH6Gk+yBWHaY6wZTITPnqxhvkT+SjK2D9ItoVZ6jvNbWn7ml+BT9HmXFPV Os4WUQ7otla0t2IiYWVlMMp1UQ6XaYDCNMEQX9IYf124mMhJIXAc1iJnFt//SwG3Cdx7e5KOhiZ vMNRJhz779zLSo+/LpCXFL4Pr8URHMfDDnZHgX+EW9e3Ay0YkBl76+pV6iar8s6DZ/ka6C4SRpf 4LMmudret0Nn/sogjbBkLJl1s6aiGOTT5xi9P5QrzjuhbfOB1dKd90HtlEEZQGVsz5zGAxP3WIm /dTutI6AoeolshZSPXSwh6W25o9Yy2a9FzVeO6uMv96T+JfDOQMRMFssG2SizCy5AAvwFZZbwGA W80OZ31JEeXliRQ== X-Developer-Key: i=aweber.kernel@gmail.com; a=openpgp; fpr=E663000EAC1DECCD6AD2890DB3BBF8A113A05168 This behavior was observed on a downstream kernel - for chargers, the current would be set to a fast charge current value, and it would be bumped down for all other cable types. If we leave only the fast charge current value applied, peripheral mode stops working. If we stick to 500mA, charging becomes too slow. So, set the charge input current limit accordingly to the cable type. Tested-by: Henrik Grimler Signed-off-by: Artur Weber --- Changes in v3: - Re-introduced this commit from v1. It seems to have been accidentally rolled into the previous commit in v2. --- drivers/power/supply/max77693_charger.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c index bf156544fe1b..908fd2a178ee 100644 --- a/drivers/power/supply/max77693_charger.c +++ b/drivers/power/supply/max77693_charger.c @@ -716,6 +716,7 @@ static void max77693_charger_extcon_work(struct work_struct *work) cable.work); struct extcon_dev *edev = chg->cable.edev; bool set_charging, set_otg; + unsigned int input_current; int connector, state; int ret; @@ -728,19 +729,28 @@ static void max77693_charger_extcon_work(struct work_struct *work) switch (connector) { case EXTCON_CHG_USB_SDP: - case EXTCON_CHG_USB_DCP: case EXTCON_CHG_USB_CDP: + case EXTCON_CHG_USB_SLOW: + input_current = 500000; /* 500 mA */ + set_charging = true; + set_otg = false; + + dev_info(chg->dev, "slow charging. connector type: %d\n", + connector); + break; + case EXTCON_CHG_USB_DCP: case EXTCON_CHG_USB_ACA: case EXTCON_CHG_USB_FAST: - case EXTCON_CHG_USB_SLOW: case EXTCON_CHG_USB_PD: + input_current = chg->fast_charge_current; set_charging = true; set_otg = false; - dev_info(chg->dev, "charging. connector type: %d\n", + dev_info(chg->dev, "fast charging. connector type: %d\n", connector); break; case EXTCON_USB_HOST: + input_current = 500000; /* 500 mA */ set_charging = false; set_otg = true; @@ -748,6 +758,7 @@ static void max77693_charger_extcon_work(struct work_struct *work) connector); break; default: + input_current = 500000; /* 500 mA */ set_charging = false; set_otg = false; @@ -756,6 +767,12 @@ static void max77693_charger_extcon_work(struct work_struct *work) break; } + ret = max77693_set_input_current_limit(chg, input_current); + if (ret) { + dev_err(chg->dev, "failed to set input current (%d)\n", ret); + goto out; + } + ret = max77693_set_charging(chg, set_charging); if (ret) { dev_err(chg->dev, "failed to set charging (%d)\n", ret); From patchwork Fri Aug 16 08:19:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 819953 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F96E145FEE; Fri, 16 Aug 2024 08:19:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796374; cv=none; b=iRZRt/FIYWNxY3mqqbossZvhtCgW6kflKGlJEPFulU2EKLZCVzzDDp3QFGCmfo/Rq0K5W7HiI+wDlcWl4qI0iaaGJno1DarPfuL6DDYxEJPVITim6SR/RXAQktMvZtjc6Fbj2FYuI/k59FzQh7v9lx1TO5z5niDPkN2hie4wNE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723796374; c=relaxed/simple; bh=tVXqBcPeo+G6mj6298MiM54OrNViarOkoHHogiR/EXo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ljQ5Q8bbu72gusVJ49Q3EsigBX0yteYrTKShX/ERSMXnYvwyFBaYacaQBLh54vmy2A++b6CvK0F5DOhqjcAvJyaN592iRq8qihamesV3yM3G/cvh8udSS+ZZpk9rY7X3fMIpcN7HE99LxKckVEuo41aGTy0gyLQ6v0Y1dVIjXtg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HO/W3jlr; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HO/W3jlr" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4280c55e488so8835305e9.0; Fri, 16 Aug 2024 01:19:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723796371; x=1724401171; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yoRhb00V3b2YHQgd98mtv4KUJ8LC4IwuReaO+Jmg960=; b=HO/W3jlrsZYqvkYrtwgGAxroB8ep1d+0EehVaE0ejyBqpqYsOzYZpQ7H7VUa1Cs4ks TKqKOrrEwQxxac596yg6TDWu7kGU0AbUEvIya2IWAGqNs/VCTh0fePoG8tn/oId7x8px 1HZpcibdJfpRDwG/nRpfNapIs6AHp2uouzwMCjKBAnYXcZaQnrU1++qUSrigjFciFBLH A13pR5YULrbnExlAJiASx3Pt6jNXCPPFizONM0UtMREPggdbk+5priZHB3X61RPmtdX2 i/PGgdCIYaR1ftWEZDyzoZe/idxAK14VoncroHtrq5aKyyNpNu82WNTfZue64x3k0Ixo e0Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723796371; x=1724401171; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yoRhb00V3b2YHQgd98mtv4KUJ8LC4IwuReaO+Jmg960=; b=gYge/5fjjNMYDKwFWaTT0fJQoJ96rHQSZ8xQoN1TpRFFWzURg7gC2JiYSbcKEO2q4T CW6TlWL5RN6nBE92ZFUf8iWXd+SdUKS3XuxfDkayGxPvNSCye3fuPy2Vk2jaO0npI25K X6GhcwI33LK5tgQkE14pvrrzXOO9T0n5bTQ/um+IYZmwTPkqJfYOdt7qC9c+1y5BF/TG KzID9p/nK4B9CQnL6y7j6owY769bon5hE6F0LntjVGTphmVeWCfr9otA5eLf+3r1J3q5 dTkXBUlcBxJ7CAsGup9TIc3AN+GWQQszI1OyARq31ErExlEjOh/c+5hQz3KLmd1M66ZB qqTw== X-Forwarded-Encrypted: i=1; AJvYcCVmYpnzBBMmioFHSU8XstZiwL/rGhmDqW7H4FeptrP5QKhO9SeUKDNo9LAi/iMtUFvP5o2L6BwyIHq+WbuNNeU7RJnLQ1rVuSnc0r+nyyeTUpv6DM3NHKNeGVAIyTw2+a3JmX6r9NCr80vu/Bh9r423z18YDUJoj5HXZESRMA5msRFm6vfeF8btv91k5V690sdy77evIkjRrB7dNk6e0rN4SE1wuc8= X-Gm-Message-State: AOJu0Yw1YUqbMlXh9UOveE6v+lSSOBSeI6sgqsbkMPeSB0O/cvMPXQMw 1EOSWrxjIDQeYIaWpxG33y+4ob60+E3Q/wHOZVaYz7m1blbV6UIx X-Google-Smtp-Source: AGHT+IF1E656TFpK2w4q5TDlMbLKFRWBD1HiXg+Mtkab768Qqq3+epDpvZYs/3x5inQx5XaV1Rl6FA== X-Received: by 2002:a05:600c:1d0e:b0:426:62a2:34fc with SMTP id 5b1f17b1804b1-429eda1f0ebmr12227085e9.11.1723796371414; Fri, 16 Aug 2024 01:19:31 -0700 (PDT) Received: from tablet.my.domain ([37.30.8.221]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ded35991sm69732645e9.21.2024.08.16.01.19.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 01:19:31 -0700 (PDT) From: Artur Weber Date: Fri, 16 Aug 2024 10:19:15 +0200 Subject: [PATCH v4 09/10] ARM: dts: samsung: exynos4212-tab3: Add USB connector node Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240816-max77693-charger-extcon-v4-9-050a0a9bfea0@gmail.com> References: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> In-Reply-To: <20240816-max77693-charger-extcon-v4-0-050a0a9bfea0@gmail.com> To: Krzysztof Kozlowski , Chanwoo Choi Cc: Sebastian Reichel , Rob Herring , Conor Dooley , Lee Jones , Krzysztof Kozlowski , Alim Akhtar , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Henrik Grimler , Wolfgang Wiedmeyer , Denis 'GNUtoo' Carikli , Artur Weber X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1292; i=aweber.kernel@gmail.com; h=from:subject:message-id; bh=tVXqBcPeo+G6mj6298MiM54OrNViarOkoHHogiR/EXo=; b=owEBbQKS/ZANAwAKAbO7+KEToFFoAcsmYgBmvwt/QhHtj7N5Zin99gbo1sxWukqNmO5BWXe+w GvTxBPZAJSJAjMEAAEKAB0WIQTmYwAOrB3szWrSiQ2zu/ihE6BRaAUCZr8LfwAKCRCzu/ihE6BR aDsbD/9qil+0jJMgb3pMowZYLtMLmZgqtHPWkr6hQ2Kay5TvaKFioVXLcyKTUksySXmaOYQddep 1iytEBc3dw16bB8xdkfLSM8b4n7ejE2/lnpBEfCghyQoUtlKHwdhiynmeYugiToudvZV9gtMJAx Ev7iFOYcxkZV4coYrUocOCGNi/TfZVGOUAEJy8fQpvjol9kDi6RfjSQyg/KcZd/JL0/qNcxL9y0 wq1Msrcjp+wfGBIztP2EnZNnNVAjjEkUrwywouRkA4KAqSDXoEJ2Y5SxKnc6BwVR6hTGOufkRWE TaBeWEHvhCqY98MOJ3sjbCDl2sbkBEhxxp98BaLD54Z+rF26R20zuBizwmaJGF6BjvT8cBDk7gY 1b1SfGSPJq8Tp5rbkaLC+oLKAfLqF9XYxSt4Dz5hCoOfaPbfhfiCOw6FyngQvBo0m/sayEBTv2X iW7yn36PzJ46x46H4rvk6dQtW/ZtzTCFGq1TIseruNUSuGocsjVj+QnPLe1ESezu68IRhPnwBLX A2GUEovvuyNcyU0Sq6S8ZWbxMt9xdOW5SOwxa7u5etYVn4+R3aN/q8PMlqFDJLx31w9xQpjEWh3 uhemeeA1c4K4YJkXjw6NXUc0cV89x+/WO7ALqQfViGDr0zSvttD0eZ+wQuU1MpSOAVcxJjoIFXF He1o9VwzZ0Z5LWw== X-Developer-Key: i=aweber.kernel@gmail.com; a=openpgp; fpr=E663000EAC1DECCD6AD2890DB3BBF8A113A05168 Add a subnode to the MAX77693 MFD for the MUIC and connect the USB connector node to the charger to allow for charger type/OTG cable detection. Tested-by: Henrik Grimler Signed-off-by: Artur Weber --- arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi index 3c905bfedd96..7309b4e1cc3d 100644 --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi @@ -157,6 +157,17 @@ charger_reg: CHARGER { }; }; + muic { + compatible = "maxim,max77693-muic"; + + usb_conn: connector { + compatible = "samsung,usb-connector-11pin", + "usb-b-connector"; + label = "micro-USB"; + type = "micro"; + }; + }; + charger { compatible = "maxim,max77693-charger"; monitored-battery = <&battery>; @@ -166,6 +177,8 @@ charger { maxim,thermal-regulation-celsius = <100>; maxim,battery-overcurrent-microamp = <3500000>; maxim,charge-input-threshold-microvolt = <4300000>; + + maxim,usb-connector = <&usb_conn>; }; }; };