sm8350-sony-xperia-sagami.dtsi 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. // SPDX-License-Identifier: BSD-3-Clause
  2. /*
  3. * Copyright (c) 2021, Konrad Dybcio <[email protected]>
  4. */
  5. #include "sm8350.dtsi"
  6. #include "pm8350.dtsi"
  7. #include "pm8350b.dtsi"
  8. #include "pm8350c.dtsi"
  9. #include "pmk8350.dtsi"
  10. #include "pmr735a.dtsi"
  11. #include "pmr735b.dtsi"
  12. / {
  13. /*
  14. * Yes, you are correct, there is NO MORE {msm,board,pmic}-id on SM8350!
  15. * Adding it will cause the bootloader to go crazy and randomly crash
  16. * shortly after closing UEFI boot services.. Perhaps that has something
  17. * to do with the OS running inside a VM now..?
  18. */
  19. chassis-type = "handset";
  20. chosen {
  21. #address-cells = <2>;
  22. #size-cells = <2>;
  23. ranges;
  24. framebuffer: framebuffer@e1000000 {
  25. compatible = "simple-framebuffer";
  26. reg = <0 0xe1000000 0 0x2300000>;
  27. /* The display, even though it's 4K, initializes at 1080-ish p */
  28. width = <1096>;
  29. height = <2560>;
  30. stride = <(1096 * 4)>;
  31. format = "a8r8g8b8";
  32. /*
  33. * That's (going to be) a lot of clocks, but it's necessary due
  34. * to unused clk cleanup & no panel driver yet
  35. */
  36. clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
  37. <&gcc GCC_DISP_SF_AXI_CLK>;
  38. };
  39. };
  40. gpio-keys {
  41. compatible = "gpio-keys";
  42. /* For reasons still unknown, GAssist key and Camera Focus/Shutter don't work.. */
  43. key-vol-down {
  44. label = "Volume Down";
  45. linux,code = <KEY_VOLUMEDOWN>;
  46. gpios = <&pmk8350_gpios 3 GPIO_ACTIVE_LOW>;
  47. debounce-interval = <15>;
  48. linux,can-disable;
  49. gpio-key,wakeup;
  50. };
  51. };
  52. reserved-memory {
  53. cont_splash_mem: memory@e1000000 {
  54. reg = <0 0xe1000000 0 0x2300000>;
  55. no-map;
  56. };
  57. ramoops@ffc00000 {
  58. compatible = "ramoops";
  59. reg = <0 0xffc00000 0 0x100000>;
  60. console-size = <0x40000>;
  61. record-size = <0x1000>;
  62. no-map;
  63. };
  64. };
  65. };
  66. &adsp {
  67. status = "okay";
  68. firmware-name = "qcom/adsp.mbn";
  69. };
  70. &cdsp {
  71. status = "okay";
  72. firmware-name = "qcom/cdsp.mbn";
  73. };
  74. &i2c1 {
  75. status = "okay";
  76. clock-frequency = <1000000>;
  77. /* Some subset of SONY IMX663 camera sensor @ 38 */
  78. };
  79. &i2c2 {
  80. status = "okay";
  81. clock-frequency = <400000>;
  82. /* Richwave RTC6226 FM Radio Receiver @ 64 */
  83. };
  84. &i2c4 {
  85. status = "okay";
  86. clock-frequency = <400000>;
  87. /* Samsung Touchscreen (needs I2C GPI DMA) @ 48 */
  88. };
  89. &i2c11 {
  90. status = "okay";
  91. clock-frequency = <1000000>;
  92. cs35l41_l: cs35l41@40 {
  93. compatible = "cirrus,cs35l41";
  94. reg = <0x40>;
  95. interrupt-parent = <&tlmm>;
  96. interrupts = <36 IRQ_TYPE_LEVEL_LOW>;
  97. reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
  98. cirrus,boost-peak-milliamp = <4000>;
  99. cirrus,boost-ind-nanohenry = <1000>;
  100. cirrus,boost-cap-microfarad = <15>;
  101. cirrus,asp-sdout-hiz = <3>;
  102. cirrus,gpio2-src-select = <2>;
  103. cirrus,gpio2-output-enable;
  104. #sound-dai-cells = <1>;
  105. };
  106. cs35l41_r: cs35l41@41 {
  107. compatible = "cirrus,cs35l41";
  108. reg = <0x41>;
  109. interrupt-parent = <&tlmm>;
  110. interrupts = <36 IRQ_TYPE_LEVEL_LOW>;
  111. reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
  112. cirrus,boost-peak-milliamp = <4000>;
  113. cirrus,boost-ind-nanohenry = <1000>;
  114. cirrus,boost-cap-microfarad = <15>;
  115. cirrus,asp-sdout-hiz = <3>;
  116. cirrus,gpio2-src-select = <2>;
  117. cirrus,gpio2-output-enable;
  118. #sound-dai-cells = <1>;
  119. };
  120. };
  121. &i2c12 {
  122. status = "okay";
  123. /* Clock frequency was not specified downstream, let's park it to 100 KHz */
  124. clock-frequency = <100000>;
  125. /* AMS TCS3490 RGB+IR color sensor @ 72 */
  126. };
  127. &i2c13 {
  128. status = "okay";
  129. /* Clock frequency was not specified downstream, let's park it to 100 KHz */
  130. clock-frequency = <100000>;
  131. /* Qualcomm PM8008i/PM8008j (?) @ 8, 9, c, d */
  132. /* Dialog SLG51000 CMIC @ 75 */
  133. };
  134. &i2c15 {
  135. status = "okay";
  136. clock-frequency = <400000>;
  137. /* NXP SN1X0 NFC @ 28 */
  138. };
  139. &i2c17 {
  140. status = "okay";
  141. clock-frequency = <1000000>;
  142. /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */
  143. };
  144. &ipa {
  145. status = "okay";
  146. memory-region = <&pil_ipa_fw_mem>;
  147. firmware-name = "qcom/ipa_fws.mbn";
  148. };
  149. &mpss {
  150. status = "okay";
  151. firmware-name = "qcom/modem.mbn";
  152. };
  153. &pmk8350_rtc {
  154. status = "okay";
  155. };
  156. &pon_pwrkey {
  157. status = "okay";
  158. };
  159. &pon_resin {
  160. status = "okay";
  161. linux,code = <KEY_VOLUMEUP>;
  162. };
  163. &qupv3_id_0 {
  164. status = "okay";
  165. };
  166. &qupv3_id_1 {
  167. status = "okay";
  168. };
  169. &qupv3_id_2 {
  170. status = "okay";
  171. };
  172. &slpi {
  173. status = "okay";
  174. firmware-name = "qcom/slpi.mbn";
  175. };
  176. &spi14 {
  177. status = "okay";
  178. /* NXP SN1X0 NFC Secure Element @ 0 */
  179. };
  180. &tlmm {
  181. gpio-reserved-ranges = <44 4>;
  182. ts_int_default: ts-int-default-state {
  183. pins = "gpio23";
  184. function = "gpio";
  185. drive-strength = <2>;
  186. bias-disable;
  187. input-enable;
  188. };
  189. };
  190. /* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
  191. &ufs_mem_hc { status = "disabled"; };
  192. &ufs_mem_phy { status = "disabled"; };
  193. /* TODO: Make USB3 work (perhaps needs regulators for higher-current operation?) */
  194. &usb_1 {
  195. status = "okay";
  196. qcom,select-utmi-as-pipe-clk;
  197. };
  198. &usb_1_dwc3 {
  199. dr_mode = "peripheral";
  200. maximum-speed = "high-speed";
  201. phys = <&usb_1_hsphy>;
  202. phy-names = "usb2-phy";
  203. };
  204. &usb_1_hsphy {
  205. status = "okay";
  206. };
  207. &usb_1_qmpphy {
  208. status = "okay";
  209. };