mbox series

[0/6] Enable PMI8998 charger on supported devices

Message ID 20230524-pmi8998-charger-dts-v1-0-f9334afc4505@linaro.org
Headers show
Series Enable PMI8998 charger on supported devices | expand

Message

Caleb Connolly May 24, 2023, 5:38 p.m. UTC
These devices have been fairly heavily validated with the driver and are
known to not explode. Add the pmi8998_charger node to pmi8998 and enable
the charger for the OnePlus 6(T), PocoPhone F1 and SHIFT6mq.

The charger depends on the RRADC for the input voltage and current. The
RRADC was originally disabled by default, but there isn't really a need
for this as it's used by all devices. Let's take the opportunity to
enable it by default.

The associated driver and dt-bindings that this series depends on can be
found here:
https://lore.kernel.org/linux-arm-msm/20230524-pmi8998-charger-v8-0-b87ffcd9864d@linaro.org

---
Caleb Connolly (5):
      dt-bindings: mfd: qcom,spmi-pmic: Document pmi8998 charger
      arm64: dts: qcom: pmi8998: enable rradc by default
      arm64: dts: qcom: pmi8998: add charger node
      arm64: dts: qcom: sdm845-oneplus: enable pmi8998 charger
      arm64: dts: qcom: sdm845-shift-axolotl: enable pmi8998 charger

Joel Selvaraj (1):
      arm64: dts: qcom: sdm845-xiaomi-beryllium: enable pmi8998 charger

 .../devicetree/bindings/mfd/qcom,spmi-pmic.yaml    |  1 +
 .../boot/dts/qcom/msm8998-oneplus-common.dtsi      |  4 ----
 arch/arm64/boot/dts/qcom/pmi8998.dtsi              | 22 ++++++++++++++++++++--
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts         |  4 ----
 .../arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi |  2 +-
 .../boot/dts/qcom/sdm845-oneplus-enchilada.dts     |  4 ++++
 arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts |  4 ++++
 arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts  |  9 +++++++++
 .../dts/qcom/sdm845-xiaomi-beryllium-common.dtsi   | 15 ++++++++++++---
 9 files changed, 51 insertions(+), 14 deletions(-)
---
base-commit: cc08021afd54862446ef11fd683558a7e57cdc6a

// Caleb (they/them)

Comments

Konrad Dybcio May 26, 2023, 7:46 p.m. UTC | #1
On 24.05.2023 19:38, Caleb Connolly wrote:
> Add a node for the smb2 charger hardware found on the pmi8998 pmic
> following the DT bindings.
> 
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/pmi8998.dtsi | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/pmi8998.dtsi b/arch/arm64/boot/dts/qcom/pmi8998.dtsi
> index be6f60bfc26c..73f51451d21d 100644
> --- a/arch/arm64/boot/dts/qcom/pmi8998.dtsi
> +++ b/arch/arm64/boot/dts/qcom/pmi8998.dtsi
> @@ -9,6 +9,26 @@ pmi8998_lsid0: pmic@2 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  
> +		pmi8998_charger: charger@1000 {
> +			compatible = "qcom,pmi8998-charger";
> +			reg = <0x1000>;
> +
> +			interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>,
> +				     <0x2 0x12 0x2 IRQ_TYPE_EDGE_BOTH>,
> +				     <0x2 0x16 0x1 IRQ_TYPE_EDGE_RISING>,
> +				     <0x2 0x13 0x6 IRQ_TYPE_EDGE_RISING>;
> +			interrupt-names = "usb-plugin",
> +					  "bat-ov",
> +					  "wdog-bark",
> +					  "usbin-icl-change";
> +
> +			io-channels = <&pmi8998_rradc 3>,
> +				      <&pmi8998_rradc 4>;
> +			io-channel-names = "usbin_i", "usbin_v";
Are these hard-wired internally?

Konrad
> +
> +			status = "disabled";
> +		};
> +
>  		pmi8998_gpios: gpio@c000 {
>  			compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
>  			reg = <0xc000>;
>
Konrad Dybcio May 26, 2023, 7:47 p.m. UTC | #2
On 24.05.2023 19:38, Caleb Connolly wrote:
> From: Joel Selvaraj <joelselvaraj.oss@gmail.com>
> 
> Enable the pmi8998 charger and define some basic battery properties.
> 
> Signed-off-by: Joel Selvaraj <joelselvaraj.oss@gmail.com>
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> index 1915643f1c49..2060b31648fc 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> @@ -115,6 +115,14 @@ rmtfs_mem: memory@f6301000 {
>  		};
>  	};
>  
> +	battery: battery {
> +		compatible = "simple-battery";
> +
> +		charge-full-design-microamp-hours = <4000000>;
> +		voltage-min-design-microvolt = <3400000>;
> +		voltage-max-design-microvolt = <4400000>;
> +	};
> +
>  	vreg_s4a_1p8: vreg-s4a-1p8 {
>  		compatible = "regulator-fixed";
>  		regulator-name = "vreg_s4a_1p8";
> @@ -341,6 +349,11 @@ &pmi8998_wled {
>  	qcom,cabc;
>  };
>  
> +&pmi8998_charger {
> +	status = "okay";
> +	monitored-battery = <&battery>;
status last, please

Konrad
> +};
> +
>  &pm8998_resin {
>  	linux,code = <KEY_VOLUMEDOWN>;
>  	status = "okay";
>
Konrad Dybcio May 26, 2023, 9:41 p.m. UTC | #3
On 26.05.2023 23:39, Caleb Connolly wrote:
> 
> 
> On 26/05/2023 20:46, Konrad Dybcio wrote:
>>
>>
>> On 24.05.2023 19:38, Caleb Connolly wrote:
>>> Add a node for the smb2 charger hardware found on the pmi8998 pmic
>>> following the DT bindings.
>>>
>>> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
>>> ---
>>>  arch/arm64/boot/dts/qcom/pmi8998.dtsi | 20 ++++++++++++++++++++
>>>  1 file changed, 20 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/pmi8998.dtsi b/arch/arm64/boot/dts/qcom/pmi8998.dtsi
>>> index be6f60bfc26c..73f51451d21d 100644
>>> --- a/arch/arm64/boot/dts/qcom/pmi8998.dtsi
>>> +++ b/arch/arm64/boot/dts/qcom/pmi8998.dtsi
>>> @@ -9,6 +9,26 @@ pmi8998_lsid0: pmic@2 {
>>>  		#address-cells = <1>;
>>>  		#size-cells = <0>;
>>>  
>>> +		pmi8998_charger: charger@1000 {
>>> +			compatible = "qcom,pmi8998-charger";
>>> +			reg = <0x1000>;
>>> +
>>> +			interrupts = <0x2 0x13 0x4 IRQ_TYPE_EDGE_BOTH>,
>>> +				     <0x2 0x12 0x2 IRQ_TYPE_EDGE_BOTH>,
>>> +				     <0x2 0x16 0x1 IRQ_TYPE_EDGE_RISING>,
>>> +				     <0x2 0x13 0x6 IRQ_TYPE_EDGE_RISING>;
>>> +			interrupt-names = "usb-plugin",
>>> +					  "bat-ov",
>>> +					  "wdog-bark",
>>> +					  "usbin-icl-change";
>>> +
>>> +			io-channels = <&pmi8998_rradc 3>,
>>> +				      <&pmi8998_rradc 4>;
>>> +			io-channel-names = "usbin_i", "usbin_v";
>> Are these hard-wired internally?
> 
> Yes, features like AICL (automatic input current limiting - where the
> device pulls more and more current until the input voltage drops) are
> run autonomously and dont rely on the driver to tell the charger block
> what the readings are.
> 
> This is only used to expose the voltage/current values to userspace via
> the standard psy interface.
OK cool 

Konrad
>>
>> Konrad
>>> +
>>> +			status = "disabled";
>>> +		};
>>> +
>>>  		pmi8998_gpios: gpio@c000 {
>>>  			compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
>>>  			reg = <0xc000>;
>>>
>