~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm64/boot/dts/qcom/msm8916-samsung-serranove.dts

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0-only
  2 /*
  3  * Copyright (C) 2019 Stephan Gerhold
  4  */
  5 
  6 /dts-v1/;
  7 
  8 #include "msm8916-pm8916.dtsi"
  9 #include "msm8916-modem-qdsp6.dtsi"
 10 
 11 #include <dt-bindings/gpio/gpio.h>
 12 #include <dt-bindings/input/input.h>
 13 #include <dt-bindings/interrupt-controller/irq.h>
 14 
 15 /*
 16  * NOTE: The original firmware from Samsung can only boot ARM32 kernels.
 17  * Unfortunately, the firmware is signed and cannot be replaced easily.
 18  * There seems to be no way to boot ARM64 kernels on this device at the moment,
 19  * even though the hardware would support it.
 20  *
 21  * However, it is possible to use this device tree by compiling an ARM32 kernel
 22  * instead. For clarity and build testing this device tree is maintained next
 23  * to the other MSM8916 device trees. However, it is actually used through
 24  *   arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
 25  */
 26 
 27 / {
 28         model = "Samsung Galaxy S4 Mini Value Edition";
 29         compatible = "samsung,serranove", "qcom,msm8916";
 30         chassis-type = "handset";
 31 
 32         aliases {
 33                 mmc0 = &sdhc_1; /* eMMC */
 34                 mmc1 = &sdhc_2; /* SD card */
 35                 serial0 = &blsp_uart2;
 36         };
 37 
 38         chosen {
 39                 stdout-path = "serial0";
 40         };
 41 
 42         reserved-memory {
 43                 /* Additional memory used by Samsung firmware modifications */
 44                 tz-apps@85500000 {
 45                         reg = <0x0 0x85500000 0x0 0xb00000>;
 46                         no-map;
 47                 };
 48         };
 49 
 50         gpio-keys {
 51                 compatible = "gpio-keys";
 52 
 53                 pinctrl-names = "default";
 54                 pinctrl-0 = <&gpio_keys_default>;
 55 
 56                 label = "GPIO Buttons";
 57 
 58                 button-volume-up {
 59                         label = "Volume Up";
 60                         gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
 61                         linux,code = <KEY_VOLUMEUP>;
 62                 };
 63 
 64                 button-home {
 65                         label = "Home";
 66                         gpios = <&tlmm 109 GPIO_ACTIVE_LOW>;
 67                         linux,code = <KEY_HOMEPAGE>;
 68                 };
 69         };
 70 
 71         gpio-hall-sensor {
 72                 compatible = "gpio-keys";
 73 
 74                 pinctrl-names = "default";
 75                 pinctrl-0 = <&gpio_hall_sensor_default>;
 76 
 77                 label = "GPIO Hall Effect Sensor";
 78 
 79                 event-hall-sensor {
 80                         label = "Hall Effect Sensor";
 81                         gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
 82                         linux,input-type = <EV_SW>;
 83                         linux,code = <SW_LID>;
 84                         linux,can-disable;
 85                 };
 86         };
 87 
 88         reg_vdd_tsp: regulator-vdd-tsp {
 89                 compatible = "regulator-fixed";
 90                 regulator-name = "vdd_tsp";
 91                 regulator-min-microvolt = <3300000>;
 92                 regulator-max-microvolt = <3300000>;
 93 
 94                 gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
 95                 enable-active-high;
 96 
 97                 pinctrl-names = "default";
 98                 pinctrl-0 = <&tsp_en_default>;
 99         };
100 
101         reg_touch_key: regulator-touch-key {
102                 compatible = "regulator-fixed";
103                 regulator-name = "touch_key";
104                 regulator-min-microvolt = <2800000>;
105                 regulator-max-microvolt = <2800000>;
106 
107                 gpio = <&tlmm 86 GPIO_ACTIVE_HIGH>;
108                 enable-active-high;
109 
110                 pinctrl-names = "default";
111                 pinctrl-0 = <&tkey_en_default>;
112         };
113 
114         reg_key_led: regulator-key-led {
115                 compatible = "regulator-fixed";
116                 regulator-name = "key_led";
117                 regulator-min-microvolt = <3300000>;
118                 regulator-max-microvolt = <3300000>;
119 
120                 gpio = <&tlmm 60 GPIO_ACTIVE_HIGH>;
121                 enable-active-high;
122 
123                 pinctrl-names = "default";
124                 pinctrl-0 = <&tkey_led_en_default>;
125         };
126 
127         i2c-muic {
128                 compatible = "i2c-gpio";
129                 sda-gpios = <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
130                 scl-gpios = <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
131 
132                 pinctrl-names = "default";
133                 pinctrl-0 = <&muic_i2c_default>;
134 
135                 #address-cells = <1>;
136                 #size-cells = <0>;
137 
138                 muic: extcon@14 {
139                         compatible = "siliconmitus,sm5504-muic";
140                         reg = <0x14>;
141 
142                         interrupt-parent = <&tlmm>;
143                         interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
144 
145                         pinctrl-names = "default";
146                         pinctrl-0 = <&muic_irq_default>;
147 
148                         usb_con: connector {
149                                 compatible = "usb-b-connector";
150                                 label = "micro-USB";
151                                 type = "micro";
152                         };
153                 };
154         };
155 
156         i2c-tkey {
157                 compatible = "i2c-gpio";
158                 sda-gpios = <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
159                 scl-gpios = <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
160 
161                 pinctrl-names = "default";
162                 pinctrl-0 = <&tkey_i2c_default>;
163 
164                 #address-cells = <1>;
165                 #size-cells = <0>;
166 
167                 touchkey@20 {
168                         compatible = "coreriver,tc360-touchkey";
169                         reg = <0x20>;
170 
171                         interrupt-parent = <&tlmm>;
172                         interrupts = <98 IRQ_TYPE_EDGE_FALLING>;
173 
174                         vcc-supply = <&reg_touch_key>;
175                         vdd-supply = <&reg_key_led>;
176                         vddio-supply = <&pm8916_l6>;
177 
178                         linux,keycodes = <KEY_APPSELECT KEY_BACK>;
179 
180                         pinctrl-names = "default";
181                         pinctrl-0 = <&tkey_default>;
182                 };
183         };
184 
185         i2c-nfc {
186                 compatible = "i2c-gpio";
187                 sda-gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
188                 scl-gpios = <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
189 
190                 pinctrl-names = "default";
191                 pinctrl-0 = <&nfc_i2c_default>;
192 
193                 #address-cells = <1>;
194                 #size-cells = <0>;
195 
196                 nfc@2b {
197                         compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
198                         reg = <0x2b>;
199 
200                         interrupt-parent = <&tlmm>;
201                         interrupts = <21 IRQ_TYPE_EDGE_RISING>;
202 
203                         enable-gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
204                         firmware-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
205 
206                         pinctrl-names = "default";
207                         pinctrl-0 = <&nfc_default>;
208                 };
209         };
210 
211         battery: battery {
212                 compatible = "simple-battery";
213                 precharge-current-microamp = <450000>;
214                 constant-charge-current-max-microamp = <1000000>;
215                 charge-term-current-microamp = <150000>;
216                 precharge-upper-limit-microvolt = <3500000>;
217                 constant-charge-voltage-max-microvolt = <4350000>;
218         };
219 };
220 
221 &blsp_i2c2 {
222         status = "okay";
223 
224         imu@6b {
225                 compatible = "st,lsm6ds3";
226                 reg = <0x6b>;
227 
228                 interrupt-parent = <&tlmm>;
229                 interrupts = <115 IRQ_TYPE_EDGE_RISING>;
230 
231                 pinctrl-names = "default";
232                 pinctrl-0 = <&imu_irq_default>;
233         };
234 
235         magnetometer@2e {
236                 compatible = "yamaha,yas537";
237                 reg = <0x2e>;
238 
239                 mount-matrix = "0",  "1",  "0",
240                                "1",  "0",  "0",
241                                "0",  "0", "-1";
242         };
243 };
244 
245 &blsp_i2c4 {
246         status = "okay";
247 
248         fuel-gauge@35 {
249                 compatible = "richtek,rt5033-battery";
250                 reg = <0x35>;
251 
252                 interrupt-parent = <&tlmm>;
253                 interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
254 
255                 pinctrl-names = "default";
256                 pinctrl-0 = <&fg_alert_default>;
257 
258                 power-supplies = <&rt5033_charger>;
259         };
260 };
261 
262 &blsp_i2c5 {
263         status = "okay";
264 
265         touchscreen@20 {
266                 compatible = "zinitix,bt541";
267                 reg = <0x20>;
268 
269                 interrupt-parent = <&tlmm>;
270                 interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
271 
272                 touchscreen-size-x = <540>;
273                 touchscreen-size-y = <960>;
274 
275                 vdd-supply = <&reg_vdd_tsp>;
276                 vddo-supply = <&pm8916_l6>;
277 
278                 pinctrl-names = "default";
279                 pinctrl-0 = <&tsp_irq_default>;
280         };
281 };
282 
283 &blsp_i2c6 {
284         status = "okay";
285 
286         pmic@34 {
287                 compatible = "richtek,rt5033";
288                 reg = <0x34>;
289 
290                 interrupt-parent = <&tlmm>;
291                 interrupts = <62 IRQ_TYPE_EDGE_FALLING>;
292 
293                 pinctrl-names = "default";
294                 pinctrl-0 = <&pmic_int_default>;
295 
296                 regulators {
297                         rt5033_reg_safe_ldo: SAFE_LDO {
298                                 regulator-min-microvolt = <4900000>;
299                                 regulator-max-microvolt = <4900000>;
300                                 regulator-always-on;
301                         };
302                         rt5033_reg_ldo: LDO {
303                                 regulator-min-microvolt = <2800000>;
304                                 regulator-max-microvolt = <2800000>;
305                         };
306                         rt5033_reg_buck: BUCK {
307                                 regulator-min-microvolt = <1200000>;
308                                 regulator-max-microvolt = <1200000>;
309                         };
310                 };
311 
312                 rt5033_charger: charger {
313                         compatible = "richtek,rt5033-charger";
314                         monitored-battery = <&battery>;
315                         richtek,usb-connector = <&usb_con>;
316                 };
317         };
318 };
319 
320 &blsp_uart2 {
321         status = "okay";
322 };
323 
324 &mpss_mem {
325         reg = <0x0 0x86800000 0x0 0x5a00000>;
326 };
327 
328 &pm8916_resin {
329         status = "okay";
330         linux,code = <KEY_VOLUMEDOWN>;
331 };
332 
333 &pm8916_vib {
334         status = "okay";
335 };
336 
337 &sdhc_1 {
338         status = "okay";
339 };
340 
341 &sdhc_2 {
342         status = "okay";
343         non-removable;
344 
345         /*
346          * FIXME: Disable UHS-I modes since tuning fails with:
347          *
348          * sdhci_msm 7864900.sdhci: mmc1: No tuning point found
349          * mmc1: tuning execution failed: -5
350          * mmc1: error -5 whilst initialising SD card
351          *
352          * This is the quirk used on downstream, which suggests this is
353          * a hardware limitation. However, probing a card using DDR50 works
354          * (without tuning), so maybe only tuning is broken?
355          */
356         no-1-8-v;
357 };
358 
359 &sound {
360         audio-routing =
361                 "AMIC1", "MIC BIAS External1",
362                 "AMIC2", "MIC BIAS Internal2",
363                 "AMIC3", "MIC BIAS External1";
364 };
365 
366 &usb {
367         status = "okay";
368         extcon = <&muic>, <&muic>;
369 };
370 
371 &usb_hs_phy {
372         extcon = <&muic>;
373 };
374 
375 &venus {
376         status = "okay";
377 };
378 
379 &venus_mem {
380         status = "okay";
381 };
382 
383 &wcnss {
384         status = "okay";
385 };
386 
387 &wcnss_iris {
388         compatible = "qcom,wcn3660b";
389 };
390 
391 &wcnss_mem {
392         status = "okay";
393 };
394 
395 &tlmm {
396         fg_alert_default: fg-alert-default-state {
397                 pins = "gpio121";
398                 function = "gpio";
399 
400                 drive-strength = <2>;
401                 bias-disable;
402         };
403 
404         gpio_keys_default: gpio-keys-default-state {
405                 pins = "gpio107", "gpio109";
406                 function = "gpio";
407 
408                 drive-strength = <2>;
409                 bias-pull-up;
410         };
411 
412         gpio_hall_sensor_default: gpio-hall-sensor-default-state {
413                 pins = "gpio52";
414                 function = "gpio";
415 
416                 drive-strength = <2>;
417                 bias-disable;
418         };
419 
420         imu_irq_default: imu-irq-default-state {
421                 pins = "gpio115";
422                 function = "gpio";
423 
424                 drive-strength = <2>;
425                 bias-disable;
426         };
427 
428         muic_i2c_default: muic-i2c-default-state {
429                 pins = "gpio105", "gpio106";
430                 function = "gpio";
431 
432                 drive-strength = <2>;
433                 bias-disable;
434         };
435 
436         muic_irq_default: muic-irq-default-state {
437                 pins = "gpio12";
438                 function = "gpio";
439 
440                 drive-strength = <2>;
441                 bias-disable;
442         };
443 
444         nfc_default: nfc-default-state {
445                 nfc-pins {
446                         pins = "gpio20", "gpio49";
447                         function = "gpio";
448 
449                         drive-strength = <2>;
450                         bias-disable;
451                 };
452                 irq-pins {
453                         pins = "gpio21";
454                         function = "gpio";
455 
456                         drive-strength = <2>;
457                         bias-pull-down;
458                 };
459         };
460 
461         nfc_i2c_default: nfc-i2c-default-state {
462                 pins = "gpio0", "gpio1";
463                 function = "gpio";
464 
465                 drive-strength = <2>;
466                 bias-disable;
467         };
468 
469         pmic_int_default: pmic-int-default-state {
470                 pins = "gpio62";
471                 function = "gpio";
472 
473                 drive-strength = <2>;
474                 bias-disable;
475         };
476 
477         tkey_default: tkey-default-state {
478                 pins = "gpio98";
479                 function = "gpio";
480 
481                 drive-strength = <2>;
482                 bias-disable;
483         };
484 
485         tkey_en_default: tkey-en-default-state {
486                 pins = "gpio86";
487                 function = "gpio";
488 
489                 drive-strength = <2>;
490                 bias-disable;
491         };
492 
493         tkey_i2c_default: tkey-i2c-default-state {
494                 pins = "gpio16", "gpio17";
495                 function = "gpio";
496 
497                 drive-strength = <2>;
498                 bias-disable;
499         };
500 
501         tkey_led_en_default: tkey-led-en-default-state {
502                 pins = "gpio60";
503                 function = "gpio";
504 
505                 drive-strength = <2>;
506                 bias-disable;
507         };
508 
509         tsp_en_default: tsp-en-default-state {
510                 pins = "gpio73";
511                 function = "gpio";
512 
513                 drive-strength = <2>;
514                 bias-disable;
515         };
516 
517         tsp_irq_default: tsp-irq-default-state {
518                 pins = "gpio13";
519                 function = "gpio";
520 
521                 drive-strength = <2>;
522                 bias-disable;
523         };
524 };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php