mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
d4ee021c41
There have been some cases of droid4 battery bulging that seem to be related to being left connected to the charger for several weeks. It is suspected that the 4.35V charge voltage configured for the battery is too much in the long run, so lets limit the charge voltage to 4.2V. It could also be that the batteries are just getting old. We don't really want to just change the charge voltage to 4.2V as Android may have charged the battery to 4.35V as pointed out by Pavel Machek. To add checks for battery voltage, the driver needs to understand the voltage it's charging at, and also needs to better understand it's charger state. Right now it only understands connect and disconnect, while now we need to know also a connected state but not charging. So let's add better charger state handling with help of chrgcurr2 interrupt for detecting charge full and retry, and add a check for battery voltage before we start charging. And then we finally can lower the charge voltage to 4.2V. Note that we've been using the same register values as the Android distros on droid4, so it is suspected that the same problem also exists in Android. Cc: Pavel Machek <pavel@ucw.cz> Cc: Rob Herring <robh+dt@kernel.org> Reported-by: Merlijn Wajer <merlijn@wizzup.org> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
273 lines
6.4 KiB
Plaintext
273 lines
6.4 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Common CPCAP configuration used on Motorola phones
|
|
*/
|
|
|
|
&mcspi1 {
|
|
cpcap: pmic@0 {
|
|
compatible = "motorola,cpcap", "st,6556002";
|
|
reg = <0>; /* cs0 */
|
|
interrupt-parent = <&gpio1>;
|
|
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
spi-max-frequency = <3000000>;
|
|
spi-cs-high;
|
|
|
|
cpcap_adc: adc {
|
|
compatible = "motorola,mapphone-cpcap-adc";
|
|
interrupts-extended = <&cpcap 8 0>;
|
|
interrupt-names = "adcdone";
|
|
#io-channel-cells = <1>;
|
|
};
|
|
|
|
cpcap_battery: battery {
|
|
compatible = "motorola,cpcap-battery";
|
|
interrupts-extended = <
|
|
&cpcap 6 0 &cpcap 5 0 &cpcap 3 0
|
|
&cpcap 20 0 &cpcap 54 0
|
|
>;
|
|
interrupt-names =
|
|
"eol", "lowbph", "lowbpl",
|
|
"chrgcurr1", "battdetb";
|
|
io-channels = <&cpcap_adc 0 &cpcap_adc 1
|
|
&cpcap_adc 5 &cpcap_adc 6>;
|
|
io-channel-names = "battdetb", "battp",
|
|
"chg_isense", "batti";
|
|
power-supplies = <&cpcap_charger>;
|
|
};
|
|
|
|
cpcap_charger: charger {
|
|
compatible = "motorola,mapphone-cpcap-charger";
|
|
interrupts-extended = <
|
|
&cpcap 13 0 &cpcap 12 0 &cpcap 29 0 &cpcap 28 0
|
|
&cpcap 22 0 &cpcap 21 0 &cpcap 20 0 &cpcap 19 0
|
|
&cpcap 54 0
|
|
>;
|
|
interrupt-names =
|
|
"chrg_det", "rvrs_chrg", "chrg_se1b", "se0conn",
|
|
"rvrs_mode", "chrgcurr2", "chrgcurr1", "vbusvld",
|
|
"battdetb";
|
|
mode-gpios = <&gpio3 29 GPIO_ACTIVE_LOW
|
|
&gpio3 23 GPIO_ACTIVE_LOW>;
|
|
io-channels = <&cpcap_adc 0 &cpcap_adc 1
|
|
&cpcap_adc 2 &cpcap_adc 5
|
|
&cpcap_adc 6>;
|
|
io-channel-names = "battdetb", "battp",
|
|
"vbus", "chg_isense",
|
|
"batti";
|
|
};
|
|
|
|
cpcap_regulator: regulator {
|
|
compatible = "motorola,mapphone-cpcap-regulator";
|
|
|
|
cpcap_regulators: regulators {
|
|
};
|
|
};
|
|
|
|
cpcap_audio: audio-codec {
|
|
#sound-dai-cells = <1>;
|
|
|
|
port@0 {
|
|
cpcap_audio_codec0: endpoint {
|
|
};
|
|
};
|
|
port@1 {
|
|
cpcap_audio_codec1: endpoint {
|
|
};
|
|
};
|
|
};
|
|
|
|
cpcap_rtc: rtc {
|
|
compatible = "motorola,cpcap-rtc";
|
|
|
|
interrupt-parent = <&cpcap>;
|
|
interrupts = <39 IRQ_TYPE_NONE>, <26 IRQ_TYPE_NONE>;
|
|
};
|
|
|
|
power_button: button {
|
|
compatible = "motorola,cpcap-pwrbutton";
|
|
|
|
interrupts = <23 IRQ_TYPE_NONE>;
|
|
};
|
|
|
|
cpcap_usb2_phy: phy {
|
|
compatible = "motorola,mapphone-cpcap-usb-phy";
|
|
pinctrl-0 = <&usb_gpio_mux_sel1 &usb_gpio_mux_sel2>;
|
|
pinctrl-1 = <&usb_ulpi_pins>;
|
|
pinctrl-2 = <&usb_utmi_pins>;
|
|
pinctrl-3 = <&uart3_pins>;
|
|
pinctrl-names = "default", "ulpi", "utmi", "uart";
|
|
#phy-cells = <0>;
|
|
interrupts-extended = <
|
|
&cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
|
|
&cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
|
|
&cpcap 48 0
|
|
>;
|
|
interrupt-names =
|
|
"id_ground", "id_float", "se0conn", "vbusvld",
|
|
"sessvld", "sessend", "se1", "dm", "dp";
|
|
mode-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH
|
|
&gpio1 0 GPIO_ACTIVE_HIGH>;
|
|
io-channels = <&cpcap_adc 2>, <&cpcap_adc 7>;
|
|
io-channel-names = "vbus", "id";
|
|
vusb-supply = <&vusb>;
|
|
};
|
|
|
|
led_red: led-red {
|
|
compatible = "motorola,cpcap-led-red";
|
|
vdd-supply = <&sw5>;
|
|
label = "status-led:red";
|
|
};
|
|
|
|
led_green: led-green {
|
|
compatible = "motorola,cpcap-led-green";
|
|
vdd-supply = <&sw5>;
|
|
label = "status-led:green";
|
|
};
|
|
|
|
led_blue: led-blue {
|
|
compatible = "motorola,cpcap-led-blue";
|
|
vdd-supply = <&sw5>;
|
|
label = "status-led:blue";
|
|
};
|
|
|
|
led_adl: led-adl {
|
|
compatible = "motorola,cpcap-led-adl";
|
|
vdd-supply = <&sw5>;
|
|
label = "button-backlight";
|
|
};
|
|
|
|
led_cp: led-cp {
|
|
compatible = "motorola,cpcap-led-cp";
|
|
vdd-supply = <&sw5>;
|
|
label = "shift-key-light";
|
|
};
|
|
};
|
|
};
|
|
|
|
&cpcap_regulators {
|
|
sw5: SW5 {
|
|
regulator-min-microvolt = <5050000>;
|
|
regulator-max-microvolt = <5050000>;
|
|
regulator-enable-ramp-delay = <50000>;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vcam: VCAM {
|
|
regulator-min-microvolt = <2900000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
/* Used by DSS */
|
|
vcsi: VCSI {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vdac: VDAC {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vdig: VDIG {
|
|
regulator-min-microvolt = <1875000>;
|
|
regulator-max-microvolt = <1875000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vfuse: VFUSE {
|
|
regulator-min-microvolt = <1500000>;
|
|
regulator-max-microvolt = <3150000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vhvio: VHVIO {
|
|
regulator-min-microvolt = <2775000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
/* Used by eMMC at mmc2 */
|
|
vsdio: VSDIO {
|
|
regulator-min-microvolt = <2900000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vpll: VPLL {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-enable-ramp-delay = <100>;
|
|
};
|
|
|
|
vrf1: VRF1 {
|
|
regulator-min-microvolt = <2775000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vrf2: VRF2 {
|
|
regulator-min-microvolt = <2775000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vrfref: VRFREF {
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-enable-ramp-delay = <100>;
|
|
};
|
|
|
|
vwlan1: VWLAN1 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1900000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
/* Used by micro-SDIO at mmc1 */
|
|
vwlan2: VWLAN2 {
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vsim: VSIM {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vsimcard: VSIMCARD {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vvib: VVIB {
|
|
regulator-min-microvolt = <1300000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-enable-ramp-delay = <500>;
|
|
};
|
|
|
|
vusb: VUSB {
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
};
|
|
|
|
vaudio: VAUDIO {
|
|
regulator-min-microvolt = <2775000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-enable-ramp-delay = <1000>;
|
|
regulator-initial-mode = <0x00>; /* NORMAL */
|
|
};
|
|
};
|