mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
ARM: dts: msm: Add iio support for pmi632
Add charger and QG support for the targets using pmi632 and pm6125. While at it, also update the pm6125 and pmi632 nodes for msm-5.4. Change-Id: I79641b72c5424708a971273de740233767efd5aa
This commit is contained in:
parent
8ee1559bc5
commit
5cc35f2295
3 changed files with 168 additions and 81 deletions
|
|
@ -3,6 +3,7 @@
|
|||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/spmi/spmi.h>
|
||||
#include <dt-bindings/iio/qcom,spmi-vadc.h>
|
||||
#include <dt-bindings/clock/qcom,rpmcc.h>
|
||||
|
||||
&spmi_bus {
|
||||
#address-cells = <2>;
|
||||
|
|
@ -13,7 +14,7 @@
|
|||
qcom,pm6125@0 {
|
||||
compatible = "qcom,spmi-pmic";
|
||||
reg = <0x0 0x0>;
|
||||
#address-cells = <2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
qcom,power-on@800 {
|
||||
|
|
@ -29,13 +30,13 @@
|
|||
|
||||
qcom,pon_1 {
|
||||
qcom,pon-type = <PON_POWER_ON_TYPE_KPDPWR>;
|
||||
qcom,pull-up = <1>;
|
||||
qcom,pull-up;
|
||||
linux,code = <KEY_POWER>;
|
||||
};
|
||||
|
||||
qcom,pon_2 {
|
||||
qcom,pon-type = <PON_POWER_ON_TYPE_RESIN>;
|
||||
qcom,pull-up = <1>;
|
||||
qcom,pull-up;
|
||||
linux,code = <KEY_VOLUMEDOWN>;
|
||||
};
|
||||
};
|
||||
|
|
@ -47,43 +48,42 @@
|
|||
#size-cells = <0>;
|
||||
interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "eoc-int-en-set";
|
||||
qcom,adc-vdd-reference = <1875>;
|
||||
#io-channel-cells = <1>;
|
||||
io-channel-ranges;
|
||||
|
||||
/* Channel nodes */
|
||||
ref_gnd {
|
||||
reg = <ADC_REF_GND>;
|
||||
reg = <ADC5_REF_GND>;
|
||||
label = "ref_gnd";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
vref_1p25 {
|
||||
reg = <ADC_1P25VREF>;
|
||||
reg = <ADC5_1P25VREF>;
|
||||
label = "vref_1p25";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
die_temp {
|
||||
reg = <ADC_DIE_TEMP>;
|
||||
reg = <ADC5_DIE_TEMP>;
|
||||
label = "die_temp";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
vph_pwr {
|
||||
reg = <ADC_VPH_PWR>;
|
||||
reg = <ADC5_VPH_PWR>;
|
||||
label = "vph_pwr";
|
||||
qcom,pre-scaling = <1 3>;
|
||||
};
|
||||
|
||||
vcoin {
|
||||
reg = <ADC_VCOIN>;
|
||||
reg = <ADC5_VCOIN>;
|
||||
label = "vcoin";
|
||||
qcom,pre-scaling = <1 3>;
|
||||
};
|
||||
|
||||
xo_therm {
|
||||
reg = <ADC_XO_THERM_PU2>;
|
||||
reg = <ADC5_XO_THERM_100K_PU>;
|
||||
label = "xo_therm";
|
||||
qcom,ratiometric;
|
||||
qcom,hw-settle-time = <200>;
|
||||
|
|
@ -105,8 +105,9 @@
|
|||
compatible = "qcom,spmi-temp-alarm";
|
||||
reg = <0x2400>;
|
||||
interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
|
||||
io-channels = <&pm6125_vadc ADC5_DIE_TEMP>;
|
||||
io-channel-names = "thermal";
|
||||
#thermal-sensor-cells = <0>;
|
||||
qcom,temperature-threshold-set = <1>;
|
||||
};
|
||||
|
||||
pm6125_clkdiv: clock-controller@5b00 {
|
||||
|
|
@ -117,29 +118,15 @@
|
|||
clock-output-names = "pm6125_div_clk1";
|
||||
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
|
||||
clock-names = "xo";
|
||||
assigned-clocks = <&pm6125_clkdiv 1>;
|
||||
assigned-clock-rates = <9600000>;
|
||||
};
|
||||
|
||||
pm6125_gpios: pinctrl@c000 {
|
||||
compatible = "qcom,pm6125-gpio";
|
||||
reg = <0xc000>;
|
||||
interrupts = <0x0 0xc0 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc1 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc2 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc3 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc4 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc5 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc6 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc7 0 IRQ_TYPE_NONE>,
|
||||
<0x0 0xc8 0 IRQ_TYPE_NONE>;
|
||||
interrupt-names = "pm6125_gpio1", "pm6125_gpio2",
|
||||
"pm6125_gpio3", "pm6125_gpio4",
|
||||
"pm6125_gpio5", "pm6125_gpio6",
|
||||
"pm6125_gpio7", "pm6125_gpio8",
|
||||
"pm6125_gpio9";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
pm6125_rtc: qcom,pm6125_rtc {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
qcom,pmi632@2 {
|
||||
compatible = "qcom,spmi-pmic";
|
||||
reg = <0x2 0x0>;
|
||||
#address-cells = <2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmi632_pon: qcom,power-on@800 {
|
||||
|
|
@ -21,68 +21,65 @@
|
|||
|
||||
pmi632_vadc: vadc@3100 {
|
||||
compatible = "qcom,spmi-adc5-lite";
|
||||
reg = <0x3100>, <0x3700>;
|
||||
reg-names = "adc5-usr-base", "adc5-cal-base";
|
||||
reg = <0x3100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <0x2 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "eoc-int-en-set";
|
||||
qcom,adc-vdd-reference = <1875>;
|
||||
#io-channel-cells = <1>;
|
||||
io-channel-ranges;
|
||||
qcom,pmic-revid = <&pmi632_revid>;
|
||||
|
||||
/* Channel nodes */
|
||||
ref_gnd {
|
||||
reg = <ADC_REF_GND>;
|
||||
reg = <ADC5_REF_GND>;
|
||||
label = "ref_gnd";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
vref_1p25 {
|
||||
reg = <ADC_1P25VREF>;
|
||||
reg = <ADC5_1P25VREF>;
|
||||
label = "vref_1p25";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
die_temp {
|
||||
reg = <ADC_DIE_TEMP>;
|
||||
reg = <ADC5_DIE_TEMP>;
|
||||
label = "die_temp";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
vph_pwr {
|
||||
reg = <ADC_VPH_PWR>;
|
||||
reg = <ADC5_VPH_PWR>;
|
||||
label = "vph_pwr";
|
||||
qcom,pre-scaling = <1 3>;
|
||||
};
|
||||
|
||||
vbat_sns {
|
||||
reg = <ADC_VBAT_SNS>;
|
||||
reg = <ADC5_VBAT_SNS>;
|
||||
label = "vbat_sns";
|
||||
qcom,pre-scaling = <1 3>;
|
||||
};
|
||||
|
||||
usb_in_i_uv {
|
||||
reg = <ADC_USB_IN_I>;
|
||||
reg = <ADC5_USB_IN_I>;
|
||||
label = "usb_in_i_uv";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
usb_in_v_div_16 {
|
||||
reg = <ADC_USB_IN_V_16>;
|
||||
reg = <ADC5_USB_IN_V_16>;
|
||||
label = "usb_in_v_div_16";
|
||||
qcom,pre-scaling = <1 16>;
|
||||
};
|
||||
|
||||
chg_temp {
|
||||
reg = <ADC_CHG_TEMP>;
|
||||
reg = <ADC5_CHG_TEMP>;
|
||||
label = "chg_temp";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
bat_therm {
|
||||
reg = <ADC_BAT_THERM_PU2>;
|
||||
reg = <ADC5_BAT_THERM_100K_PU>;
|
||||
label = "bat_therm";
|
||||
qcom,ratiometric;
|
||||
qcom,hw-settle-time = <200>;
|
||||
|
|
@ -90,7 +87,7 @@
|
|||
};
|
||||
|
||||
bat_therm_30k {
|
||||
reg = <ADC_BAT_THERM_PU1>;
|
||||
reg = <ADC5_BAT_THERM_30K_PU>;
|
||||
label = "bat_therm_30k";
|
||||
qcom,ratiometric;
|
||||
qcom,hw-settle-time = <200>;
|
||||
|
|
@ -98,7 +95,7 @@
|
|||
};
|
||||
|
||||
bat_therm_400k {
|
||||
reg = <ADC_BAT_THERM_PU3>;
|
||||
reg = <ADC5_BAT_THERM_400K_PU>;
|
||||
label = "bat_therm_400k";
|
||||
qcom,ratiometric;
|
||||
qcom,hw-settle-time = <200>;
|
||||
|
|
@ -106,7 +103,7 @@
|
|||
};
|
||||
|
||||
bat_id {
|
||||
reg = <ADC_BAT_ID_PU2>;
|
||||
reg = <ADC5_BAT_ID_100K_PU>;
|
||||
label = "bat_id";
|
||||
qcom,ratiometric;
|
||||
qcom,hw-settle-time = <200>;
|
||||
|
|
@ -114,23 +111,11 @@
|
|||
};
|
||||
|
||||
i_parallel {
|
||||
reg = <ADC_PARALLEL_ISENSE>;
|
||||
reg = <ADC5_PARALLEL_ISENSE>;
|
||||
label = "i_parallel";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
v_i_int_ext {
|
||||
reg = <ADC_INT_EXT_ISENSE_VBAT_VDATA>;
|
||||
label = "v_i_int_vbat_vdata";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
v_i_parallel {
|
||||
reg = <ADC_PARALLEL_ISENSE_VBAT_VDATA>;
|
||||
label = "v_i_parallel_vbat_vdata";
|
||||
qcom,pre-scaling = <1 1>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
pmi632_adc_tm: adc_tm@3500 {
|
||||
|
|
@ -147,6 +132,8 @@
|
|||
compatible = "qcom,spmi-temp-alarm";
|
||||
reg = <0x2400>;
|
||||
interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
|
||||
io-channels = <&pmi632_vadc ADC5_DIE_TEMP>;
|
||||
io-channel-names = "thermal";
|
||||
#thermal-sensor-cells = <0>;
|
||||
qcom,temperature-threshold-set = <1>;
|
||||
};
|
||||
|
|
@ -154,33 +141,22 @@
|
|||
pmi632_gpios: pinctrl@c000 {
|
||||
compatible = "qcom,pmi632-gpio";
|
||||
reg = <0xc000>;
|
||||
interrupts = <0x2 0xc0 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc1 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc2 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc3 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc4 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc5 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc6 0 IRQ_TYPE_NONE>,
|
||||
<0x2 0xc7 0 IRQ_TYPE_NONE>;
|
||||
interrupt-names = "pmi632_gpio1", "pmi632_gpio2",
|
||||
"pmi632_gpio3", "pmi632_gpio4",
|
||||
"pmi632_gpio5", "pmi632_gpio6",
|
||||
"pmi632_gpio7", "pmi632_gpio8";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
pmi632_charger: qcom,qpnp-smb5 {
|
||||
compatible = "qcom,qpnp-smb5";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#cooling-cells = <2>;
|
||||
|
||||
qcom,pmic-revid = <&pmi632_revid>;
|
||||
io-channels = <&pmi632_vadc ADC_USB_IN_V_16>,
|
||||
<&pmi632_vadc ADC_USB_IN_I>,
|
||||
<&pmi632_vadc ADC_CHG_TEMP>,
|
||||
<&pmi632_vadc ADC_DIE_TEMP>;
|
||||
io-channels = <&pmi632_vadc ADC5_USB_IN_V_16>,
|
||||
<&pmi632_vadc ADC5_USB_IN_I>,
|
||||
<&pmi632_vadc ADC5_CHG_TEMP>,
|
||||
<&pmi632_vadc ADC5_DIE_TEMP>;
|
||||
io-channel-names = "usb_in_voltage",
|
||||
"usb_in_current",
|
||||
"chg_temp",
|
||||
|
|
@ -340,11 +316,10 @@
|
|||
pmi632_qg: qpnp,qg {
|
||||
compatible = "qcom,qpnp-qg";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
qcom,pmic-revid = <&pmi632_revid>;
|
||||
io-channels = <&pmi632_vadc ADC_BAT_THERM_PU2>,
|
||||
<&pmi632_vadc ADC_BAT_ID_PU2>;
|
||||
io-channels = <&pmi632_vadc ADC5_BAT_THERM_100K_PU>,
|
||||
<&pmi632_vadc ADC5_BAT_ID_100K_PU>;
|
||||
io-channel-names = "batt-therm",
|
||||
"batt-id";
|
||||
|
||||
|
|
@ -485,7 +460,6 @@
|
|||
interrupts = <0x3 0xec 0x1 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "sc-irq";
|
||||
|
||||
qcom,pmic-revid = <&pmi632_revid>;
|
||||
qcom,voltage-step-ramp;
|
||||
|
||||
lcdb_ldo_vreg: ldo {
|
||||
|
|
@ -527,7 +501,6 @@
|
|||
qcom,thermal-derate-en;
|
||||
qcom,thermal-derate-current = <200 500 1000>;
|
||||
qcom,isc-delay = <192>;
|
||||
qcom,pmic-revid = <&pmi632_revid>;
|
||||
|
||||
pmi632_flash0: qcom,flash_0 {
|
||||
label = "flash";
|
||||
|
|
|
|||
127
qcom/pmi632_pm6125_iio.dtsi
Normal file
127
qcom/pmi632_pm6125_iio.dtsi
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
#include <dt-bindings/iio/qti_power_supply_iio.h>
|
||||
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/iio/qcom,spmi-vadc.h>
|
||||
#include "pmi632.dtsi"
|
||||
#include "pm6125.dtsi"
|
||||
|
||||
&soc {
|
||||
mtp_batterydata: qcom,battery-data {
|
||||
qcom,batt-id-range-pct = <15>;
|
||||
#include "qg-batterydata-alium-3600mah.dtsi"
|
||||
};
|
||||
};
|
||||
|
||||
&pmi632_gpios {
|
||||
smb_en {
|
||||
smb_en_default: smb_en_default {
|
||||
pins = "gpio2";
|
||||
function = "func1";
|
||||
output-enable;
|
||||
};
|
||||
};
|
||||
|
||||
pmi632_sense {
|
||||
/* GPIO 7 and 8 are external-sense pins for PMI632 */
|
||||
pmi632_sense_default: pmi632_sense_default {
|
||||
pins = "gpio7", "gpio8";
|
||||
bias-high-impedance; /* disable the GPIO */
|
||||
bias-disable; /* no-pull */
|
||||
};
|
||||
};
|
||||
|
||||
pmi632_ctm {
|
||||
/* Disable GPIO1 for h/w base mitigation */
|
||||
pmi632_ctm_default: pmi632_ctm_default {
|
||||
pins = "gpio1";
|
||||
bias-high-impedance; /* disable the GPIO */
|
||||
bias-disable; /* no-pull */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pmi632_charger {
|
||||
status = "ok"
|
||||
#io-channel-cells = <1>;
|
||||
io-channels = <&pmi632_vadc ADC5_USB_IN_V_16>,
|
||||
<&pmi632_vadc ADC5_USB_IN_I>,
|
||||
<&pmi632_vadc ADC5_CHG_TEMP>,
|
||||
<&pmi632_vadc ADC5_DIE_TEMP>;
|
||||
<&pmi632_qg PSY_IIO_RESISTANCE_ID>,
|
||||
<&pmi632_qg PSY_IIO_VOLTAGE_NOW>,
|
||||
<&pmi632_qg PSY_IIO_TEMP>,
|
||||
<&pmi632_qg PSY_IIO_CAPACITY>,
|
||||
<&pmi632_qg PSY_IIO_VOLTAGE_OCV>,
|
||||
<&pmi632_qg PSY_IIO_VOLTAGE_AVG>,
|
||||
<&pmi632_qg PSY_IIO_DEBUG_BATTERY>,
|
||||
<&pmi632_qg PSY_IIO_REAL_CAPACITY>,
|
||||
<&pmi632_qg PSY_IIO_CC_SOC>,
|
||||
<&pmi632_qg PSY_IIO_CURRENT_NOW>,
|
||||
<&pmi632_qg PSY_IIO_VOLTAGE_MAX>,
|
||||
<&pmi632_qg PSY_IIO_CHARGE_FULL>,
|
||||
<&pmi632_qg PSY_IIO_CHARGE_COUNTER>,
|
||||
<&pmi632_qg PSY_IIO_CYCLE_COUNT>,
|
||||
<&pmi632_qg PSY_IIO_CHARGE_FULL_DESIGN>,
|
||||
<&pmi632_qg PSY_IIO_TIME_TO_FULL_NOW>,
|
||||
io-channel-names = "usb_in_voltage",
|
||||
"usb_in_current",
|
||||
"chg_temp",
|
||||
"die_temp",
|
||||
"resistance_id",
|
||||
"voltage_now",
|
||||
"temp",
|
||||
"capacity",
|
||||
"voltage_ocv",
|
||||
"voltage_avg",
|
||||
"debug_battery",
|
||||
"real_capacity",
|
||||
"cc_soc",
|
||||
"current_now",
|
||||
"voltage_max",
|
||||
"charge_full",
|
||||
"charge_counter",
|
||||
"cycle_count",
|
||||
"charge_full_design",
|
||||
"time_to_full_now",
|
||||
qcom,battery-data = <&mtp_batterydata>;
|
||||
qcom,suspend-input-on-debug-batt;
|
||||
qcom,sw-jeita-enable;
|
||||
qcom,step-charging-enable;
|
||||
qcom,hvdcp2-max-icl-ua = <2000000>;
|
||||
/* SMB1355 only */
|
||||
qcom,sec-charger-config = <2>;
|
||||
dpdm-supply = <&qusb_phy0>;
|
||||
qcom,charger-temp-max = <800>;
|
||||
qcom,smb-temp-max = <800>;
|
||||
qcom,auto-recharge-soc = <98>;
|
||||
qcom,flash-disable-soc = <10>;
|
||||
qcom,hw-die-temp-mitigation;
|
||||
qcom,hw-connector-mitigation;
|
||||
qcom,connector-internal-pull-kohm = <100>;
|
||||
qcom,float-option = <1>;
|
||||
qcom,thermal-mitigation = <3000000 2500000
|
||||
2000000 1500000 1000000 500000>;
|
||||
};
|
||||
|
||||
&pmi632_qg {
|
||||
status = "ok"
|
||||
#io-channel-cells = <1>;
|
||||
io-channels = <&pmi632_vadc ADC5_BAT_THERM_100K_PU>,
|
||||
<&pmi632_vadc ADC5_BAT_ID_100K_PU>;
|
||||
<&pmi632_charger PSY_IIO_INPUT_CURRENT_LIMITED>,
|
||||
<&pmi632_charger PSY_IIO_RECHARGE_SOC>,
|
||||
<&pmi632_charger PSY_IIO_FORCE_RECHARGE>,
|
||||
<&pmi632_charger PSY_IIO_CHARGE_DONE>,
|
||||
io-channel-names = "batt-therm",
|
||||
"batt-id",
|
||||
"input_current_limited",
|
||||
"recharge_soc",
|
||||
"force_recharge",
|
||||
"charge_done",
|
||||
"cp_charging_enabled";
|
||||
qcom,battery-data = <&mtp_batterydata>;
|
||||
qcom,qg-iterm-ma = <100>;
|
||||
qcom,hold-soc-while-full;
|
||||
qcom,linearize-soc;
|
||||
qcom,qg-use-s7-ocv;
|
||||
};
|
||||
Loading…
Reference in a new issue