PageRenderTime 26ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi

https://github.com/tiwai/sound
Device Tree | 438 lines | 367 code | 60 blank | 11 comment | 0 complexity | 397f5abedf2caa22d3e49941b212fc5b MD5 | raw file
  1. // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
  2. /*
  3. * Copyright (C) Linaro Ltd 2019 - All Rights Reserved
  4. * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
  5. * Copyright (C) 2020 Marek Vasut <marex@denx.de>
  6. */
  7. /* Avenger96 uses DHCOR SoM configured for 1V8 IO operation */
  8. #include "stm32mp15xx-dhcor-io1v8.dtsi"
  9. / {
  10. aliases {
  11. ethernet0 = &ethernet0;
  12. mmc0 = &sdmmc1;
  13. serial0 = &uart4;
  14. serial1 = &uart7;
  15. serial2 = &usart2;
  16. spi0 = &qspi;
  17. };
  18. /* XTal Q1 */
  19. cec_clock: clk-cec-fixed {
  20. #clock-cells = <0>;
  21. compatible = "fixed-clock";
  22. clock-frequency = <24000000>;
  23. };
  24. chosen {
  25. stdout-path = "serial0:115200n8";
  26. };
  27. hdmi-out {
  28. compatible = "hdmi-connector";
  29. type = "a";
  30. port {
  31. hdmi_con: endpoint {
  32. remote-endpoint = <&adv7513_out>;
  33. };
  34. };
  35. };
  36. led {
  37. compatible = "gpio-leds";
  38. led1 {
  39. label = "green:user0";
  40. gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>;
  41. linux,default-trigger = "heartbeat";
  42. default-state = "off";
  43. };
  44. led2 {
  45. label = "green:user1";
  46. gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
  47. linux,default-trigger = "mmc0";
  48. default-state = "off";
  49. };
  50. led3 {
  51. label = "green:user2";
  52. gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>;
  53. linux,default-trigger = "mmc1";
  54. default-state = "off";
  55. };
  56. led4 {
  57. label = "green:user3";
  58. gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>;
  59. linux,default-trigger = "none";
  60. default-state = "off";
  61. panic-indicator;
  62. };
  63. };
  64. sd_switch: regulator-sd_switch {
  65. compatible = "regulator-gpio";
  66. regulator-name = "sd_switch";
  67. regulator-min-microvolt = <1800000>;
  68. regulator-max-microvolt = <2900000>;
  69. regulator-type = "voltage";
  70. regulator-always-on;
  71. gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>;
  72. gpios-states = <0>;
  73. states = <1800000 0x1>,
  74. <2900000 0x0>;
  75. };
  76. sound {
  77. compatible = "audio-graph-card";
  78. label = "STM32MP1-AV96-HDMI";
  79. dais = <&sai2a_port>;
  80. status = "okay";
  81. };
  82. wlan_pwr: regulator-wlan {
  83. compatible = "regulator-fixed";
  84. regulator-name = "wl-reg";
  85. regulator-min-microvolt = <3300000>;
  86. regulator-max-microvolt = <3300000>;
  87. gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>;
  88. enable-active-high;
  89. };
  90. };
  91. &adc {
  92. pinctrl-names = "default";
  93. pinctrl-0 = <&adc12_ain_pins_b>;
  94. vdd-supply = <&vdd>;
  95. vdda-supply = <&vdda>;
  96. vref-supply = <&vdda>;
  97. status = "okay";
  98. adc1: adc@0 {
  99. st,adc-channels = <0 1 6>;
  100. st,min-sample-time-nsecs = <5000>;
  101. status = "okay";
  102. };
  103. adc2: adc@100 {
  104. st,adc-channels = <0 1 2>;
  105. st,min-sample-time-nsecs = <5000>;
  106. status = "okay";
  107. };
  108. };
  109. &ethernet0 {
  110. status = "okay";
  111. pinctrl-0 = <&ethernet0_rgmii_pins_c>;
  112. pinctrl-1 = <&ethernet0_rgmii_sleep_pins_c>;
  113. pinctrl-names = "default", "sleep";
  114. phy-mode = "rgmii";
  115. max-speed = <1000>;
  116. phy-handle = <&phy0>;
  117. mdio0 {
  118. #address-cells = <1>;
  119. #size-cells = <0>;
  120. compatible = "snps,dwmac-mdio";
  121. reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
  122. reset-delay-us = <1000>;
  123. reset-post-delay-us = <1000>;
  124. phy0: ethernet-phy@7 {
  125. reg = <7>;
  126. rxc-skew-ps = <1500>;
  127. rxdv-skew-ps = <540>;
  128. rxd0-skew-ps = <420>;
  129. rxd1-skew-ps = <420>;
  130. rxd2-skew-ps = <420>;
  131. rxd3-skew-ps = <420>;
  132. txc-skew-ps = <1440>;
  133. txen-skew-ps = <540>;
  134. txd0-skew-ps = <420>;
  135. txd1-skew-ps = <420>;
  136. txd2-skew-ps = <420>;
  137. txd3-skew-ps = <420>;
  138. };
  139. };
  140. };
  141. &gpioa {
  142. gpio-line-names = "", "", "", "",
  143. "", "", "", "",
  144. "", "", "", "AV96-K",
  145. "AV96-I", "", "AV96-A", "";
  146. };
  147. &gpiob {
  148. gpio-line-names = "", "", "", "",
  149. "", "AV96-J", "", "",
  150. "", "", "", "AV96-B",
  151. "", "AV96-L", "", "";
  152. };
  153. &gpioc {
  154. gpio-line-names = "", "", "", "AV96-C",
  155. "", "", "", "",
  156. "", "", "", "",
  157. "", "", "", "";
  158. };
  159. &gpiod {
  160. gpio-line-names = "", "", "", "",
  161. "", "", "", "",
  162. "AV96-D", "", "", "",
  163. "", "", "AV96-E", "AV96-F";
  164. };
  165. &gpiof {
  166. gpio-line-names = "", "", "", "",
  167. "", "", "", "",
  168. "", "", "", "",
  169. "AV96-G", "AV96-H", "", "";
  170. };
  171. &i2c1 { /* X6 I2C1 */
  172. pinctrl-names = "default";
  173. pinctrl-0 = <&i2c1_pins_b>;
  174. i2c-scl-rising-time-ns = <185>;
  175. i2c-scl-falling-time-ns = <20>;
  176. status = "okay";
  177. /delete-property/dmas;
  178. /delete-property/dma-names;
  179. };
  180. &i2c2 { /* X6 I2C2 */
  181. pinctrl-names = "default";
  182. pinctrl-0 = <&i2c2_pins_c>;
  183. i2c-scl-rising-time-ns = <185>;
  184. i2c-scl-falling-time-ns = <20>;
  185. status = "okay";
  186. /delete-property/dmas;
  187. /delete-property/dma-names;
  188. };
  189. &i2c4 {
  190. hdmi-transmitter@3d {
  191. compatible = "adi,adv7513";
  192. reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>;
  193. reg-names = "main", "edid", "cec", "packet";
  194. clocks = <&cec_clock>;
  195. clock-names = "cec";
  196. avdd-supply = <&v3v3>;
  197. dvdd-supply = <&v3v3>;
  198. pvdd-supply = <&v3v3>;
  199. dvdd-3v-supply = <&v3v3>;
  200. bgvdd-supply = <&v3v3>;
  201. interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
  202. interrupt-parent = <&gpiog>;
  203. status = "okay";
  204. adi,input-depth = <8>;
  205. adi,input-colorspace = "rgb";
  206. adi,input-clock = "1x";
  207. ports {
  208. #address-cells = <1>;
  209. #size-cells = <0>;
  210. port@0 {
  211. reg = <0>;
  212. adv7513_in: endpoint {
  213. remote-endpoint = <&ltdc_ep0_out>;
  214. };
  215. };
  216. port@1 {
  217. reg = <1>;
  218. adv7513_out: endpoint {
  219. remote-endpoint = <&hdmi_con>;
  220. };
  221. };
  222. port@2 {
  223. reg = <2>;
  224. adv7513_i2s0: endpoint {
  225. remote-endpoint = <&sai2a_endpoint>;
  226. };
  227. };
  228. };
  229. };
  230. };
  231. &ltdc {
  232. pinctrl-names = "default", "sleep";
  233. pinctrl-0 = <&ltdc_pins_d>;
  234. pinctrl-1 = <&ltdc_sleep_pins_d>;
  235. status = "okay";
  236. port {
  237. #address-cells = <1>;
  238. #size-cells = <0>;
  239. ltdc_ep0_out: endpoint@0 {
  240. reg = <0>;
  241. remote-endpoint = <&adv7513_in>;
  242. };
  243. };
  244. };
  245. &sai2 {
  246. clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
  247. pinctrl-names = "default", "sleep";
  248. pinctrl-0 = <&sai2a_pins_c>;
  249. pinctrl-1 = <&sai2a_sleep_pins_c>;
  250. clock-names = "pclk", "x8k", "x11k";
  251. status = "okay";
  252. sai2a: audio-controller@4400b004 {
  253. #clock-cells = <0>;
  254. dma-names = "tx";
  255. clocks = <&rcc SAI2_K>;
  256. clock-names = "sai_ck";
  257. status = "okay";
  258. sai2a_port: port {
  259. sai2a_endpoint: endpoint {
  260. remote-endpoint = <&adv7513_i2s0>;
  261. format = "i2s";
  262. mclk-fs = <256>;
  263. };
  264. };
  265. };
  266. };
  267. &sdmmc1 {
  268. pinctrl-names = "default", "opendrain", "sleep";
  269. pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>;
  270. pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>;
  271. pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>;
  272. cd-gpios = <&gpioi 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
  273. disable-wp;
  274. st,sig-dir;
  275. st,neg-edge;
  276. st,use-ckin;
  277. bus-width = <4>;
  278. vmmc-supply = <&vdd_sd>;
  279. vqmmc-supply = <&sd_switch>;
  280. status = "okay";
  281. };
  282. &sdmmc2 {
  283. pinctrl-names = "default", "opendrain", "sleep";
  284. pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>;
  285. pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>;
  286. pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>;
  287. bus-width = <8>;
  288. mmc-ddr-1_8v;
  289. no-sd;
  290. no-sdio;
  291. non-removable;
  292. st,neg-edge;
  293. vmmc-supply = <&v3v3>;
  294. vqmmc-supply = <&vdd_io>;
  295. status = "okay";
  296. };
  297. &sdmmc3 {
  298. pinctrl-names = "default", "opendrain", "sleep";
  299. pinctrl-0 = <&sdmmc3_b4_pins_b>;
  300. pinctrl-1 = <&sdmmc3_b4_od_pins_b>;
  301. pinctrl-2 = <&sdmmc3_b4_sleep_pins_b>;
  302. broken-cd;
  303. non-removable;
  304. st,neg-edge;
  305. bus-width = <4>;
  306. vmmc-supply = <&wlan_pwr>;
  307. status = "okay";
  308. #address-cells = <1>;
  309. #size-cells = <0>;
  310. brcmf: bcrmf@1 {
  311. reg = <1>;
  312. compatible = "brcm,bcm4329-fmac";
  313. };
  314. };
  315. &spi2 {
  316. pinctrl-names = "default";
  317. pinctrl-0 = <&spi2_pins_a>;
  318. cs-gpios = <&gpioi 0 0>;
  319. status = "disabled";
  320. /delete-property/dmas;
  321. /delete-property/dma-names;
  322. };
  323. &uart4 {
  324. /* On Low speed expansion header */
  325. label = "LS-UART1";
  326. pinctrl-names = "default";
  327. pinctrl-0 = <&uart4_pins_b>;
  328. /delete-property/dmas;
  329. /delete-property/dma-names;
  330. status = "okay";
  331. };
  332. &uart7 {
  333. /* On Low speed expansion header */
  334. label = "LS-UART0";
  335. pinctrl-names = "default";
  336. pinctrl-0 = <&uart7_pins_a>;
  337. uart-has-rtscts;
  338. /delete-property/dmas;
  339. /delete-property/dma-names;
  340. status = "okay";
  341. };
  342. /* Bluetooth */
  343. &usart2 {
  344. pinctrl-names = "default", "sleep";
  345. pinctrl-0 = <&usart2_pins_a>;
  346. pinctrl-1 = <&usart2_sleep_pins_a>;
  347. st,hw-flow-ctrl;
  348. /delete-property/dmas;
  349. /delete-property/dma-names;
  350. status = "okay";
  351. bluetooth {
  352. compatible = "brcm,bcm43438-bt";
  353. max-speed = <3000000>;
  354. shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>;
  355. };
  356. };
  357. &usbh_ehci {
  358. phys = <&usbphyc_port0>;
  359. phy-names = "usb";
  360. status = "okay";
  361. };
  362. &usbotg_hs {
  363. pinctrl-0 = <&usbotg_hs_pins_a>;
  364. pinctrl-names = "default";
  365. phy-names = "usb2-phy";
  366. phys = <&usbphyc_port1 0>;
  367. status = "okay";
  368. vbus-supply = <&vbus_otg>;
  369. };
  370. &usbphyc {
  371. status = "okay";
  372. };
  373. &usbphyc_port0 {
  374. phy-supply = <&vdd_usb>;
  375. };
  376. &usbphyc_port1 {
  377. phy-supply = <&vdd_usb>;
  378. };