sm7225-fairphone-fp4.dts 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. // SPDX-License-Identifier: BSD-3-Clause
  2. /*
  3. * Copyright (c) 2021, Luca Weiss <[email protected]>
  4. */
  5. /dts-v1/;
  6. #include <dt-bindings/gpio/gpio.h>
  7. #include <dt-bindings/input/input.h>
  8. #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
  9. #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
  10. #include "sm7225.dtsi"
  11. #include "pm6150l.dtsi"
  12. #include "pm6350.dtsi"
  13. #include "pm7250b.dtsi"
  14. / {
  15. model = "Fairphone 4";
  16. compatible = "fairphone,fp4", "qcom,sm7225";
  17. chassis-type = "handset";
  18. /* required for bootloader to select correct board */
  19. qcom,msm-id = <434 0x10000>, <459 0x10000>;
  20. qcom,board-id = <8 32>;
  21. aliases {
  22. serial0 = &uart9;
  23. };
  24. chosen {
  25. #address-cells = <2>;
  26. #size-cells = <2>;
  27. ranges;
  28. stdout-path = "serial0:115200n8";
  29. framebuffer0: framebuffer@a000000 {
  30. compatible = "simple-framebuffer";
  31. reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
  32. width = <1080>;
  33. height = <2340>;
  34. stride = <(1080 * 4)>;
  35. format = "a8r8g8b8";
  36. };
  37. };
  38. gpio-keys {
  39. compatible = "gpio-keys";
  40. pinctrl-names = "default";
  41. pinctrl-0 = <&gpio_keys_pin>;
  42. key-volume-up {
  43. label = "volume_up";
  44. linux,code = <KEY_VOLUMEUP>;
  45. gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
  46. };
  47. };
  48. reserved-memory {
  49. /*
  50. * The rmtfs memory region in downstream is 'dynamically allocated'
  51. * but given the same address every time. Hard code it as this address is
  52. * where the modem firmware expects it to be.
  53. */
  54. memory@efe01000 {
  55. compatible = "qcom,rmtfs-mem";
  56. reg = <0 0xefe01000 0 0x600000>;
  57. no-map;
  58. qcom,client-id = <1>;
  59. qcom,vmid = <15>;
  60. };
  61. };
  62. thermal-zones {
  63. chg-skin-thermal {
  64. polling-delay-passive = <0>;
  65. polling-delay = <0>;
  66. thermal-sensors = <&pm7250b_adc_tm 0>;
  67. trips {
  68. active-config0 {
  69. temperature = <125000>;
  70. hysteresis = <1000>;
  71. type = "passive";
  72. };
  73. };
  74. };
  75. conn-thermal {
  76. polling-delay-passive = <0>;
  77. polling-delay = <0>;
  78. thermal-sensors = <&pm7250b_adc_tm 1>;
  79. trips {
  80. active-config0 {
  81. temperature = <125000>;
  82. hysteresis = <1000>;
  83. type = "passive";
  84. };
  85. };
  86. };
  87. };
  88. };
  89. &adsp {
  90. status = "okay";
  91. firmware-name = "qcom/sm7225/fairphone4/adsp.mdt";
  92. };
  93. &apps_rsc {
  94. pm6350-rpmh-regulators {
  95. compatible = "qcom,pm6350-rpmh-regulators";
  96. qcom,pmic-id = "a";
  97. vreg_s1a: smps1 {
  98. regulator-min-microvolt = <1000000>;
  99. regulator-max-microvolt = <1200000>;
  100. };
  101. vreg_s2a: smps2 {
  102. regulator-min-microvolt = <1503000>;
  103. regulator-max-microvolt = <2048000>;
  104. };
  105. vreg_l2a: ldo2 {
  106. regulator-min-microvolt = <1503000>;
  107. regulator-max-microvolt = <1980000>;
  108. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  109. };
  110. vreg_l3a: ldo3 {
  111. regulator-min-microvolt = <2700000>;
  112. regulator-max-microvolt = <3300000>;
  113. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  114. };
  115. vreg_l4a: ldo4 {
  116. regulator-min-microvolt = <352000>;
  117. regulator-max-microvolt = <801000>;
  118. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  119. };
  120. vreg_l5a: ldo5 {
  121. regulator-min-microvolt = <1503000>;
  122. regulator-max-microvolt = <1980000>;
  123. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  124. };
  125. vreg_l6a: ldo6 {
  126. regulator-min-microvolt = <1710000>;
  127. regulator-max-microvolt = <3544000>;
  128. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  129. };
  130. vreg_l7a: ldo7 {
  131. regulator-min-microvolt = <1620000>;
  132. regulator-max-microvolt = <1980000>;
  133. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  134. };
  135. vreg_l8a: ldo8 {
  136. regulator-min-microvolt = <2800000>;
  137. regulator-max-microvolt = <2800000>;
  138. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  139. };
  140. vreg_l9a: ldo9 {
  141. regulator-min-microvolt = <1650000>;
  142. regulator-max-microvolt = <3401000>;
  143. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  144. };
  145. vreg_l11a: ldo11 {
  146. regulator-min-microvolt = <1800000>;
  147. regulator-max-microvolt = <2000000>;
  148. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  149. };
  150. vreg_l12a: ldo12 {
  151. regulator-min-microvolt = <1620000>;
  152. regulator-max-microvolt = <1980000>;
  153. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  154. };
  155. vreg_l13a: ldo13 {
  156. regulator-min-microvolt = <570000>;
  157. regulator-max-microvolt = <650000>;
  158. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  159. };
  160. vreg_l14a: ldo14 {
  161. regulator-min-microvolt = <1700000>;
  162. regulator-max-microvolt = <1900000>;
  163. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  164. };
  165. vreg_l15a: ldo15 {
  166. regulator-min-microvolt = <1100000>;
  167. regulator-max-microvolt = <1305000>;
  168. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  169. };
  170. vreg_l16a: ldo16 {
  171. regulator-min-microvolt = <830000>;
  172. regulator-max-microvolt = <921000>;
  173. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  174. };
  175. vreg_l18a: ldo18 {
  176. regulator-min-microvolt = <788000>;
  177. regulator-max-microvolt = <1049000>;
  178. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  179. };
  180. vreg_l19a: ldo19 {
  181. regulator-min-microvolt = <1080000>;
  182. regulator-max-microvolt = <1305000>;
  183. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  184. };
  185. vreg_l20a: ldo20 {
  186. regulator-min-microvolt = <530000>;
  187. regulator-max-microvolt = <801000>;
  188. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  189. };
  190. vreg_l21a: ldo21 {
  191. regulator-min-microvolt = <751000>;
  192. regulator-max-microvolt = <825000>;
  193. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  194. };
  195. vreg_l22a: ldo22 {
  196. regulator-min-microvolt = <1080000>;
  197. regulator-max-microvolt = <1305000>;
  198. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  199. };
  200. };
  201. pm6150l-rpmh-regulators {
  202. compatible = "qcom,pm6150l-rpmh-regulators";
  203. qcom,pmic-id = "e";
  204. vreg_s8e: smps8 {
  205. regulator-min-microvolt = <313000>;
  206. regulator-max-microvolt = <1395000>;
  207. };
  208. vreg_l1e: ldo1 {
  209. regulator-min-microvolt = <1620000>;
  210. regulator-max-microvolt = <1980000>;
  211. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  212. };
  213. vreg_l2e: ldo2 {
  214. regulator-min-microvolt = <1170000>;
  215. regulator-max-microvolt = <1305000>;
  216. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  217. };
  218. vreg_l3e: ldo3 {
  219. regulator-min-microvolt = <1100000>;
  220. regulator-max-microvolt = <1299000>;
  221. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  222. };
  223. vreg_l4e: ldo4 {
  224. regulator-min-microvolt = <1620000>;
  225. regulator-max-microvolt = <3300000>;
  226. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  227. };
  228. vreg_l5e: ldo5 {
  229. regulator-min-microvolt = <1620000>;
  230. regulator-max-microvolt = <3300000>;
  231. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  232. };
  233. vreg_l6e: ldo6 {
  234. regulator-min-microvolt = <1700000>;
  235. regulator-max-microvolt = <3544000>;
  236. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  237. };
  238. vreg_l7e: ldo7 {
  239. regulator-min-microvolt = <2700000>;
  240. regulator-max-microvolt = <3544000>;
  241. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  242. };
  243. vreg_l8e: ldo8 {
  244. regulator-min-microvolt = <1620000>;
  245. regulator-max-microvolt = <2000000>;
  246. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  247. };
  248. vreg_l9e: ldo9 {
  249. regulator-min-microvolt = <2700000>;
  250. regulator-max-microvolt = <3544000>;
  251. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  252. };
  253. vreg_l10e: ldo10 {
  254. regulator-min-microvolt = <3000000>;
  255. regulator-max-microvolt = <3401000>;
  256. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  257. };
  258. vreg_l11e: ldo11 {
  259. regulator-min-microvolt = <3000000>;
  260. regulator-max-microvolt = <3401000>;
  261. regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
  262. };
  263. vreg_bob: bob {
  264. regulator-min-microvolt = <1620000>;
  265. regulator-max-microvolt = <5492000>;
  266. regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
  267. regulator-allow-bypass;
  268. };
  269. };
  270. };
  271. &cdsp {
  272. status = "okay";
  273. firmware-name = "qcom/sm7225/fairphone4/cdsp.mdt";
  274. };
  275. &i2c10 {
  276. status = "okay";
  277. clock-frequency = <400000>;
  278. haptics@5a {
  279. compatible = "awinic,aw8695";
  280. reg = <0x5a>;
  281. interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
  282. reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
  283. awinic,f0-preset = <2350>;
  284. awinic,f0-coefficient = <260>;
  285. awinic,f0-calibration-percent = <7>;
  286. awinic,drive-level = <125>;
  287. awinic,f0-detection-play-time = <5>;
  288. awinic,f0-detection-wait-time = <3>;
  289. awinic,f0-detection-repeat = <2>;
  290. awinic,f0-detection-trace = <15>;
  291. awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>;
  292. awinic,tset = /bits/ 8 <0x12>;
  293. awinic,r-spare = /bits/ 8 <0x68>;
  294. awinic,bemf-upper-threshold = <4104>;
  295. awinic,bemf-lower-threshold = <1016>;
  296. };
  297. };
  298. &mpss {
  299. status = "okay";
  300. firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
  301. };
  302. &pm6150l_wled {
  303. status = "okay";
  304. qcom,switching-freq = <800>;
  305. qcom,current-limit-microamp = <20000>;
  306. qcom,num-strings = <2>;
  307. };
  308. &pm6350_gpios {
  309. gpio_keys_pin: gpio-keys-state {
  310. pins = "gpio2";
  311. function = PMIC_GPIO_FUNC_NORMAL;
  312. bias-pull-up;
  313. input-enable;
  314. power-source = <0>;
  315. };
  316. };
  317. &pm6350_resin {
  318. status = "okay";
  319. linux,code = <KEY_VOLUMEDOWN>;
  320. };
  321. &pm7250b_adc {
  322. adc-chan@4d {
  323. reg = <ADC5_AMUX_THM1_100K_PU>;
  324. qcom,ratiometric;
  325. qcom,hw-settle-time = <200>;
  326. qcom,pre-scaling = <1 1>;
  327. label = "charger_skin_therm";
  328. };
  329. adc-chan@4f {
  330. reg = <ADC5_AMUX_THM3_100K_PU>;
  331. qcom,ratiometric;
  332. qcom,hw-settle-time = <200>;
  333. qcom,pre-scaling = <1 1>;
  334. label = "conn_therm";
  335. };
  336. };
  337. &pm7250b_adc_tm {
  338. status = "okay";
  339. charger-skin-therm@0 {
  340. reg = <0>;
  341. io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
  342. qcom,ratiometric;
  343. qcom,hw-settle-time-us = <200>;
  344. };
  345. conn-therm@1 {
  346. reg = <1>;
  347. io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
  348. qcom,ratiometric;
  349. qcom,hw-settle-time-us = <200>;
  350. };
  351. };
  352. &qupv3_id_1 {
  353. status = "okay";
  354. };
  355. &tlmm {
  356. gpio-reserved-ranges = <13 4>, <56 2>;
  357. };
  358. &uart9 {
  359. status = "okay";
  360. };
  361. &ufs_mem_hc {
  362. status = "okay";
  363. reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
  364. vcc-supply = <&vreg_l7e>;
  365. vcc-max-microamp = <800000>;
  366. vccq2-supply = <&vreg_l12a>;
  367. vccq2-max-microamp = <800000>;
  368. };
  369. &ufs_mem_phy {
  370. status = "okay";
  371. vdda-phy-supply = <&vreg_l18a>;
  372. vdda-pll-supply = <&vreg_l22a>;
  373. };
  374. &usb_1 {
  375. status = "okay";
  376. };
  377. &usb_1_dwc3 {
  378. maximum-speed = "super-speed";
  379. dr_mode = "peripheral";
  380. };
  381. &usb_1_hsphy {
  382. status = "okay";
  383. vdd-supply = <&vreg_l18a>;
  384. vdda-pll-supply = <&vreg_l2a>;
  385. vdda-phy-dpdm-supply = <&vreg_l3a>;
  386. };
  387. &usb_1_qmpphy {
  388. status = "okay";
  389. vdda-phy-supply = <&vreg_l22a>;
  390. vdda-pll-supply = <&vreg_l16a>;
  391. };
  392. &wifi {
  393. status = "okay";
  394. vdd-0.8-cx-mx-supply = <&vreg_l4a>;
  395. vdd-1.8-xo-supply = <&vreg_l7a>;
  396. vdd-1.3-rfa-supply = <&vreg_l2e>;
  397. vdd-3.3-ch0-supply = <&vreg_l10e>;
  398. vdd-3.3-ch1-supply = <&vreg_l11e>;
  399. };