xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/qcom/pm8916.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun#include <dt-bindings/iio/qcom,spmi-vadc.h>
3*4882a593Smuzhiyun#include <dt-bindings/input/linux-event-codes.h>
4*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
5*4882a593Smuzhiyun#include <dt-bindings/spmi/spmi.h>
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun&spmi_bus {
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun	pm8916_0: pmic@0 {
10*4882a593Smuzhiyun		compatible = "qcom,pm8916", "qcom,spmi-pmic";
11*4882a593Smuzhiyun		reg = <0x0 SPMI_USID>;
12*4882a593Smuzhiyun		#address-cells = <1>;
13*4882a593Smuzhiyun		#size-cells = <0>;
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun		pon@800 {
16*4882a593Smuzhiyun			compatible = "qcom,pm8916-pon";
17*4882a593Smuzhiyun			reg = <0x800>;
18*4882a593Smuzhiyun			mode-bootloader = <0x2>;
19*4882a593Smuzhiyun			mode-recovery = <0x1>;
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun			pwrkey {
22*4882a593Smuzhiyun				compatible = "qcom,pm8941-pwrkey";
23*4882a593Smuzhiyun				interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
24*4882a593Smuzhiyun				debounce = <15625>;
25*4882a593Smuzhiyun				bias-pull-up;
26*4882a593Smuzhiyun				linux,code = <KEY_POWER>;
27*4882a593Smuzhiyun			};
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun			pm8916_resin: resin {
30*4882a593Smuzhiyun				compatible = "qcom,pm8941-resin";
31*4882a593Smuzhiyun				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
32*4882a593Smuzhiyun				debounce = <15625>;
33*4882a593Smuzhiyun				bias-pull-up;
34*4882a593Smuzhiyun				status = "disabled";
35*4882a593Smuzhiyun			};
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun			watchdog {
38*4882a593Smuzhiyun				compatible = "qcom,pm8916-wdt";
39*4882a593Smuzhiyun				interrupts = <0x0 0x8 6 IRQ_TYPE_EDGE_RISING>;
40*4882a593Smuzhiyun				timeout-sec = <60>;
41*4882a593Smuzhiyun			};
42*4882a593Smuzhiyun		};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun		pm8916_temp: temp-alarm@2400 {
45*4882a593Smuzhiyun			compatible = "qcom,spmi-temp-alarm";
46*4882a593Smuzhiyun			reg = <0x2400>;
47*4882a593Smuzhiyun			interrupts = <0 0x24 0 IRQ_TYPE_EDGE_RISING>;
48*4882a593Smuzhiyun			io-channels = <&pm8916_vadc VADC_DIE_TEMP>;
49*4882a593Smuzhiyun			io-channel-names = "thermal";
50*4882a593Smuzhiyun			#thermal-sensor-cells = <0>;
51*4882a593Smuzhiyun		};
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun		pm8916_vadc: adc@3100 {
54*4882a593Smuzhiyun			compatible = "qcom,spmi-vadc";
55*4882a593Smuzhiyun			reg = <0x3100>;
56*4882a593Smuzhiyun			interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
57*4882a593Smuzhiyun			#address-cells = <1>;
58*4882a593Smuzhiyun			#size-cells = <0>;
59*4882a593Smuzhiyun			#io-channel-cells = <1>;
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun			adc-chan@0 {
62*4882a593Smuzhiyun				reg = <VADC_USBIN>;
63*4882a593Smuzhiyun				qcom,pre-scaling = <1 10>;
64*4882a593Smuzhiyun			};
65*4882a593Smuzhiyun			adc-chan@7 {
66*4882a593Smuzhiyun				reg = <VADC_VSYS>;
67*4882a593Smuzhiyun				qcom,pre-scaling = <1 3>;
68*4882a593Smuzhiyun			};
69*4882a593Smuzhiyun			adc-chan@8 {
70*4882a593Smuzhiyun				reg = <VADC_DIE_TEMP>;
71*4882a593Smuzhiyun			};
72*4882a593Smuzhiyun			adc-chan@9 {
73*4882a593Smuzhiyun				reg = <VADC_REF_625MV>;
74*4882a593Smuzhiyun			};
75*4882a593Smuzhiyun			adc-chan@a {
76*4882a593Smuzhiyun				reg = <VADC_REF_1250MV>;
77*4882a593Smuzhiyun			};
78*4882a593Smuzhiyun			adc-chan@e {
79*4882a593Smuzhiyun				reg = <VADC_GND_REF>;
80*4882a593Smuzhiyun			};
81*4882a593Smuzhiyun			adc-chan@f {
82*4882a593Smuzhiyun				reg = <VADC_VDD_VADC>;
83*4882a593Smuzhiyun			};
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		rtc@6000 {
87*4882a593Smuzhiyun			compatible = "qcom,pm8941-rtc";
88*4882a593Smuzhiyun			reg = <0x6000>;
89*4882a593Smuzhiyun			interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun		pm8916_mpps: mpps@a000 {
93*4882a593Smuzhiyun			compatible = "qcom,pm8916-mpp";
94*4882a593Smuzhiyun			reg = <0xa000>;
95*4882a593Smuzhiyun			gpio-controller;
96*4882a593Smuzhiyun			#gpio-cells = <2>;
97*4882a593Smuzhiyun			interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
98*4882a593Smuzhiyun				     <0 0xa1 0 IRQ_TYPE_NONE>,
99*4882a593Smuzhiyun				     <0 0xa2 0 IRQ_TYPE_NONE>,
100*4882a593Smuzhiyun				     <0 0xa3 0 IRQ_TYPE_NONE>;
101*4882a593Smuzhiyun		};
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun		pm8916_gpios: gpios@c000 {
104*4882a593Smuzhiyun			compatible = "qcom,pm8916-gpio";
105*4882a593Smuzhiyun			reg = <0xc000>;
106*4882a593Smuzhiyun			gpio-controller;
107*4882a593Smuzhiyun			#gpio-cells = <2>;
108*4882a593Smuzhiyun			interrupts = <0 0xc0 0 IRQ_TYPE_NONE>,
109*4882a593Smuzhiyun				     <0 0xc1 0 IRQ_TYPE_NONE>,
110*4882a593Smuzhiyun				     <0 0xc2 0 IRQ_TYPE_NONE>,
111*4882a593Smuzhiyun				     <0 0xc3 0 IRQ_TYPE_NONE>;
112*4882a593Smuzhiyun		};
113*4882a593Smuzhiyun	};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	pm8916_1: pmic@1 {
116*4882a593Smuzhiyun		compatible = "qcom,pm8916", "qcom,spmi-pmic";
117*4882a593Smuzhiyun		reg = <0x1 SPMI_USID>;
118*4882a593Smuzhiyun		#address-cells = <1>;
119*4882a593Smuzhiyun		#size-cells = <0>;
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun		pm8916_vib: vibrator@c000 {
122*4882a593Smuzhiyun			compatible = "qcom,pm8916-vib";
123*4882a593Smuzhiyun			reg = <0xc000>;
124*4882a593Smuzhiyun			status = "disabled";
125*4882a593Smuzhiyun		};
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun		wcd_codec: audio-codec@f000 {
128*4882a593Smuzhiyun			compatible = "qcom,pm8916-wcd-analog-codec";
129*4882a593Smuzhiyun			reg = <0xf000>;
130*4882a593Smuzhiyun			reg-names = "pmic-codec-core";
131*4882a593Smuzhiyun			clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
132*4882a593Smuzhiyun			clock-names = "mclk";
133*4882a593Smuzhiyun			interrupt-parent = <&spmi_bus>;
134*4882a593Smuzhiyun			interrupts = <0x1 0xf0 0x0 IRQ_TYPE_NONE>,
135*4882a593Smuzhiyun				     <0x1 0xf0 0x1 IRQ_TYPE_NONE>,
136*4882a593Smuzhiyun				     <0x1 0xf0 0x2 IRQ_TYPE_NONE>,
137*4882a593Smuzhiyun				     <0x1 0xf0 0x3 IRQ_TYPE_NONE>,
138*4882a593Smuzhiyun				     <0x1 0xf0 0x4 IRQ_TYPE_NONE>,
139*4882a593Smuzhiyun				     <0x1 0xf0 0x5 IRQ_TYPE_NONE>,
140*4882a593Smuzhiyun				     <0x1 0xf0 0x6 IRQ_TYPE_NONE>,
141*4882a593Smuzhiyun				     <0x1 0xf0 0x7 IRQ_TYPE_NONE>,
142*4882a593Smuzhiyun				     <0x1 0xf1 0x0 IRQ_TYPE_NONE>,
143*4882a593Smuzhiyun				     <0x1 0xf1 0x1 IRQ_TYPE_NONE>,
144*4882a593Smuzhiyun				     <0x1 0xf1 0x2 IRQ_TYPE_NONE>,
145*4882a593Smuzhiyun				     <0x1 0xf1 0x3 IRQ_TYPE_NONE>,
146*4882a593Smuzhiyun				     <0x1 0xf1 0x4 IRQ_TYPE_NONE>,
147*4882a593Smuzhiyun				     <0x1 0xf1 0x5 IRQ_TYPE_NONE>;
148*4882a593Smuzhiyun			interrupt-names = "cdc_spk_cnp_int",
149*4882a593Smuzhiyun					  "cdc_spk_clip_int",
150*4882a593Smuzhiyun					  "cdc_spk_ocp_int",
151*4882a593Smuzhiyun					  "mbhc_ins_rem_det1",
152*4882a593Smuzhiyun					  "mbhc_but_rel_det",
153*4882a593Smuzhiyun					  "mbhc_but_press_det",
154*4882a593Smuzhiyun					  "mbhc_ins_rem_det",
155*4882a593Smuzhiyun					  "mbhc_switch_int",
156*4882a593Smuzhiyun					  "cdc_ear_ocp_int",
157*4882a593Smuzhiyun					  "cdc_hphr_ocp_int",
158*4882a593Smuzhiyun					  "cdc_hphl_ocp_det",
159*4882a593Smuzhiyun					  "cdc_ear_cnp_int",
160*4882a593Smuzhiyun					  "cdc_hphr_cnp_int",
161*4882a593Smuzhiyun					  "cdc_hphl_cnp_int";
162*4882a593Smuzhiyun			vdd-cdc-io-supply = <&pm8916_l5>;
163*4882a593Smuzhiyun			vdd-cdc-tx-rx-cx-supply = <&pm8916_l5>;
164*4882a593Smuzhiyun			vdd-micbias-supply = <&pm8916_l13>;
165*4882a593Smuzhiyun			#sound-dai-cells = <1>;
166*4882a593Smuzhiyun		};
167*4882a593Smuzhiyun	};
168*4882a593Smuzhiyun};
169