1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 /* 2 /* 3 * Copyright (c) 2019 BayLibre, SAS 3 * Copyright (c) 2019 BayLibre, SAS 4 * Author: Neil Armstrong <narmstrong@baylibre. 4 * Author: Neil Armstrong <narmstrong@baylibre.com> 5 */ 5 */ 6 6 7 #include "meson-g12b-odroid.dtsi" 7 #include "meson-g12b-odroid.dtsi" 8 8 9 / { 9 / { 10 aliases { 10 aliases { 11 rtc0 = &rtc; 11 rtc0 = &rtc; 12 }; 12 }; 13 13 14 dio2133: audio-amplifier-0 { 14 dio2133: audio-amplifier-0 { 15 compatible = "simple-audio-amp 15 compatible = "simple-audio-amplifier"; 16 enable-gpios = <&gpio_ao GPIOA 16 enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; 17 VCC-supply = <&vcc_5v>; 17 VCC-supply = <&vcc_5v>; 18 sound-name-prefix = "U19"; 18 sound-name-prefix = "U19"; 19 status = "okay"; 19 status = "okay"; 20 }; 20 }; 21 21 22 hub_5v: regulator-hub-5v { 22 hub_5v: regulator-hub-5v { 23 compatible = "regulator-fixed" 23 compatible = "regulator-fixed"; 24 regulator-name = "HUB_5V"; 24 regulator-name = "HUB_5V"; 25 regulator-min-microvolt = <500 25 regulator-min-microvolt = <5000000>; 26 regulator-max-microvolt = <500 26 regulator-max-microvolt = <5000000>; 27 vin-supply = <&vcc_5v>; 27 vin-supply = <&vcc_5v>; 28 28 29 /* Connected to the Hub CHIPEN 29 /* Connected to the Hub CHIPENABLE, LOW sets low power state */ 30 gpio = <&gpio GPIOH_5 GPIO_ACT 30 gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; 31 enable-active-high; 31 enable-active-high; 32 }; 32 }; 33 33 34 /* USB hub supports both USB 2.0 and U << 35 usb-hub { << 36 dr_mode = "host"; << 37 #address-cells = <1>; << 38 #size-cells = <0>; << 39 << 40 /* 2.0 hub on port 1 */ << 41 hub_2_0: hub@1 { << 42 compatible = "usb5e3,6 << 43 reg = <1>; << 44 peer-hub = <&hub_3_0>; << 45 vdd-supply = <&usb_pwr << 46 }; << 47 << 48 /* 3.0 hub on port 4 */ << 49 hub_3_0: hub@2 { << 50 compatible = "usb5e3,6 << 51 reg = <2>; << 52 peer-hub = <&hub_2_0>; << 53 reset-gpios = <&gpio G << 54 vdd-supply = <&vcc_5v> << 55 }; << 56 }; << 57 << 58 sound { 34 sound { 59 compatible = "amlogic,axg-soun 35 compatible = "amlogic,axg-sound-card"; 60 model = "ODROID-N2"; 36 model = "ODROID-N2"; 61 audio-widgets = "Line", "Lineo 37 audio-widgets = "Line", "Lineout"; 62 audio-aux-devs = <&tdmout_b>, 38 audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>, 63 <&tdmin_b>, < 39 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>, 64 <&dio2133>; 40 <&dio2133>; 65 audio-routing = "TDMOUT_B IN 0 41 audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", 66 "TDMOUT_B IN 1 42 "TDMOUT_B IN 1", "FRDDR_B OUT 1", 67 "TDMOUT_B IN 2 43 "TDMOUT_B IN 2", "FRDDR_C OUT 1", 68 "TDM_B Playbac 44 "TDM_B Playback", "TDMOUT_B OUT", 69 "TDMOUT_C IN 0 45 "TDMOUT_C IN 0", "FRDDR_A OUT 2", 70 "TDMOUT_C IN 1 46 "TDMOUT_C IN 1", "FRDDR_B OUT 2", 71 "TDMOUT_C IN 2 47 "TDMOUT_C IN 2", "FRDDR_C OUT 2", 72 "TDM_C Playbac 48 "TDM_C Playback", "TDMOUT_C OUT", 73 "TDMIN_A IN 4" 49 "TDMIN_A IN 4", "TDM_B Loopback", 74 "TDMIN_B IN 4" 50 "TDMIN_B IN 4", "TDM_B Loopback", 75 "TDMIN_C IN 4" 51 "TDMIN_C IN 4", "TDM_B Loopback", 76 "TDMIN_LB IN 1 52 "TDMIN_LB IN 1", "TDM_B Loopback", 77 "TDMIN_A IN 5" 53 "TDMIN_A IN 5", "TDM_C Loopback", 78 "TDMIN_B IN 5" 54 "TDMIN_B IN 5", "TDM_C Loopback", 79 "TDMIN_C IN 5" 55 "TDMIN_C IN 5", "TDM_C Loopback", 80 "TDMIN_LB IN 2 56 "TDMIN_LB IN 2", "TDM_C Loopback", 81 "TODDR_A IN 0" 57 "TODDR_A IN 0", "TDMIN_A OUT", 82 "TODDR_B IN 0" 58 "TODDR_B IN 0", "TDMIN_A OUT", 83 "TODDR_C IN 0" 59 "TODDR_C IN 0", "TDMIN_A OUT", 84 "TODDR_A IN 1" 60 "TODDR_A IN 1", "TDMIN_B OUT", 85 "TODDR_B IN 1" 61 "TODDR_B IN 1", "TDMIN_B OUT", 86 "TODDR_C IN 1" 62 "TODDR_C IN 1", "TDMIN_B OUT", 87 "TODDR_A IN 2" 63 "TODDR_A IN 2", "TDMIN_C OUT", 88 "TODDR_B IN 2" 64 "TODDR_B IN 2", "TDMIN_C OUT", 89 "TODDR_C IN 2" 65 "TODDR_C IN 2", "TDMIN_C OUT", 90 "TODDR_A IN 6" 66 "TODDR_A IN 6", "TDMIN_LB OUT", 91 "TODDR_B IN 6" 67 "TODDR_B IN 6", "TDMIN_LB OUT", 92 "TODDR_C IN 6" 68 "TODDR_C IN 6", "TDMIN_LB OUT", 93 "U19 INL", "AC 69 "U19 INL", "ACODEC LOLP", 94 "U19 INR", "AC 70 "U19 INR", "ACODEC LORP", 95 "Lineout", "U1 71 "Lineout", "U19 OUTL", 96 "Lineout", "U1 72 "Lineout", "U19 OUTR"; 97 73 98 clocks = <&clkc CLKID_MPLL2>, << 99 <&clkc CLKID_MPLL0>, << 100 <&clkc CLKID_MPLL1>; << 101 << 102 assigned-clocks = <&clkc CLKID 74 assigned-clocks = <&clkc CLKID_MPLL2>, 103 <&clkc CLKID 75 <&clkc CLKID_MPLL0>, 104 <&clkc CLKID 76 <&clkc CLKID_MPLL1>; 105 assigned-clock-parents = <0>, 77 assigned-clock-parents = <0>, <0>, <0>; 106 assigned-clock-rates = <294912 78 assigned-clock-rates = <294912000>, 107 <270950 79 <270950400>, 108 <393216 80 <393216000>; 109 81 110 dai-link-0 { 82 dai-link-0 { 111 sound-dai = <&frddr_a> 83 sound-dai = <&frddr_a>; 112 }; 84 }; 113 85 114 dai-link-1 { 86 dai-link-1 { 115 sound-dai = <&frddr_b> 87 sound-dai = <&frddr_b>; 116 }; 88 }; 117 89 118 dai-link-2 { 90 dai-link-2 { 119 sound-dai = <&frddr_c> 91 sound-dai = <&frddr_c>; 120 }; 92 }; 121 93 122 dai-link-3 { 94 dai-link-3 { 123 sound-dai = <&toddr_a> 95 sound-dai = <&toddr_a>; 124 }; 96 }; 125 97 126 dai-link-4 { 98 dai-link-4 { 127 sound-dai = <&toddr_b> 99 sound-dai = <&toddr_b>; 128 }; 100 }; 129 101 130 dai-link-5 { 102 dai-link-5 { 131 sound-dai = <&toddr_c> 103 sound-dai = <&toddr_c>; 132 }; 104 }; 133 105 134 /* 8ch hdmi interface */ 106 /* 8ch hdmi interface */ 135 dai-link-6 { 107 dai-link-6 { 136 sound-dai = <&tdmif_b> 108 sound-dai = <&tdmif_b>; 137 dai-format = "i2s"; 109 dai-format = "i2s"; 138 dai-tdm-slot-tx-mask-0 110 dai-tdm-slot-tx-mask-0 = <1 1>; 139 dai-tdm-slot-tx-mask-1 111 dai-tdm-slot-tx-mask-1 = <1 1>; 140 dai-tdm-slot-tx-mask-2 112 dai-tdm-slot-tx-mask-2 = <1 1>; 141 dai-tdm-slot-tx-mask-3 113 dai-tdm-slot-tx-mask-3 = <1 1>; 142 mclk-fs = <256>; 114 mclk-fs = <256>; 143 115 144 codec-0 { 116 codec-0 { 145 sound-dai = <& 117 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 146 }; 118 }; 147 119 148 codec-1 { 120 codec-1 { 149 sound-dai = <& 121 sound-dai = <&toacodec TOACODEC_IN_B>; 150 }; 122 }; 151 }; 123 }; 152 124 153 /* i2s jack output interface * 125 /* i2s jack output interface */ 154 dai-link-7 { 126 dai-link-7 { 155 sound-dai = <&tdmif_c> 127 sound-dai = <&tdmif_c>; 156 dai-format = "i2s"; 128 dai-format = "i2s"; 157 dai-tdm-slot-tx-mask-0 129 dai-tdm-slot-tx-mask-0 = <1 1>; 158 mclk-fs = <256>; 130 mclk-fs = <256>; 159 131 160 codec-0 { 132 codec-0 { 161 sound-dai = <& 133 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; 162 }; 134 }; 163 135 164 codec-1 { 136 codec-1 { 165 sound-dai = <& 137 sound-dai = <&toacodec TOACODEC_IN_C>; 166 }; 138 }; 167 }; 139 }; 168 140 169 /* hdmi glue */ 141 /* hdmi glue */ 170 dai-link-8 { 142 dai-link-8 { 171 sound-dai = <&tohdmitx 143 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 172 144 173 codec { 145 codec { 174 sound-dai = <& 146 sound-dai = <&hdmi_tx>; 175 }; 147 }; 176 }; 148 }; 177 149 178 /* acodec glue */ 150 /* acodec glue */ 179 dai-link-9 { 151 dai-link-9 { 180 sound-dai = <&toacodec 152 sound-dai = <&toacodec TOACODEC_OUT>; 181 153 182 codec { 154 codec { 183 sound-dai = <& 155 sound-dai = <&acodec>; 184 }; 156 }; 185 }; 157 }; 186 }; 158 }; 187 }; 159 }; 188 160 189 &acodec { 161 &acodec { 190 AVDD-supply = <&vddao_1v8>; 162 AVDD-supply = <&vddao_1v8>; 191 status = "okay"; 163 status = "okay"; 192 }; 164 }; 193 165 194 ðmac { 166 ðmac { 195 pinctrl-0 = <ð_pins>, <ð_rgmii_p 167 pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; 196 pinctrl-names = "default"; 168 pinctrl-names = "default"; 197 status = "okay"; 169 status = "okay"; 198 phy-mode = "rgmii"; 170 phy-mode = "rgmii"; 199 phy-handle = <&external_phy>; 171 phy-handle = <&external_phy>; 200 amlogic,tx-delay-ns = <2>; 172 amlogic,tx-delay-ns = <2>; 201 }; 173 }; 202 174 203 &ext_mdio { 175 &ext_mdio { 204 external_phy: ethernet-phy@0 { 176 external_phy: ethernet-phy@0 { 205 /* Realtek RTL8211F (0x001cc91 177 /* Realtek RTL8211F (0x001cc916) */ 206 reg = <0>; 178 reg = <0>; 207 max-speed = <1000>; 179 max-speed = <1000>; 208 180 209 reset-assert-us = <10000>; 181 reset-assert-us = <10000>; 210 reset-deassert-us = <80000>; 182 reset-deassert-us = <80000>; 211 reset-gpios = <&gpio GPIOZ_15 183 reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; 212 184 213 interrupt-parent = <&gpio_intc 185 interrupt-parent = <&gpio_intc>; 214 /* MAC_INTR on GPIOZ_14 */ 186 /* MAC_INTR on GPIOZ_14 */ 215 interrupts = <IRQID_GPIOZ_14 I 187 interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>; 216 }; 188 }; 217 }; 189 }; 218 190 219 &gpio { 191 &gpio { 220 gpio-line-names = 192 gpio-line-names = 221 /* GPIOZ */ 193 /* GPIOZ */ 222 "", "", "", "", "", "", "", "" 194 "", "", "", "", "", "", "", "", 223 "", "", "", "", "", "", "", "" 195 "", "", "", "", "", "", "", "", 224 /* GPIOH */ 196 /* GPIOH */ 225 "", "", "", "", "", "", "", "" 197 "", "", "", "", "", "", "", "", 226 "", 198 "", 227 /* BOOT */ 199 /* BOOT */ 228 "", "", "", "", "", "", "", "" 200 "", "", "", "", "", "", "", "", 229 "", "", "", "", "", "", "", "" 201 "", "", "", "", "", "", "", "", 230 /* GPIOC */ 202 /* GPIOC */ 231 "", "", "", "", "", "", "", "" 203 "", "", "", "", "", "", "", "", 232 /* GPIOA */ 204 /* GPIOA */ 233 "PIN_44", /* GPIOA_0 */ 205 "PIN_44", /* GPIOA_0 */ 234 "PIN_46", /* GPIOA_1 */ 206 "PIN_46", /* GPIOA_1 */ 235 "PIN_45", /* GPIOA_2 */ 207 "PIN_45", /* GPIOA_2 */ 236 "PIN_47", /* GPIOA_3 */ 208 "PIN_47", /* GPIOA_3 */ 237 "PIN_26", /* GPIOA_4 */ 209 "PIN_26", /* GPIOA_4 */ 238 "", "", "", "", "", "", 210 "", "", "", "", "", "", 239 "PIN_42", /* GPIOA_11 */ 211 "PIN_42", /* GPIOA_11 */ 240 "PIN_32", /* GPIOA_12 */ 212 "PIN_32", /* GPIOA_12 */ 241 "PIN_7", /* GPIOA_13 */ 213 "PIN_7", /* GPIOA_13 */ 242 "PIN_27", /* GPIOA_14 */ 214 "PIN_27", /* GPIOA_14 */ 243 "PIN_28", /* GPIOA_15 */ 215 "PIN_28", /* GPIOA_15 */ 244 /* GPIOX */ 216 /* GPIOX */ 245 "PIN_16", /* GPIOX_0 */ 217 "PIN_16", /* GPIOX_0 */ 246 "PIN_18", /* GPIOX_1 */ 218 "PIN_18", /* GPIOX_1 */ 247 "PIN_22", /* GPIOX_2 */ 219 "PIN_22", /* GPIOX_2 */ 248 "PIN_11", /* GPIOX_3 */ 220 "PIN_11", /* GPIOX_3 */ 249 "PIN_13", /* GPIOX_4 */ 221 "PIN_13", /* GPIOX_4 */ 250 "PIN_33", /* GPIOX_5 */ 222 "PIN_33", /* GPIOX_5 */ 251 "PIN_35", /* GPIOX_6 */ 223 "PIN_35", /* GPIOX_6 */ 252 "PIN_15", /* GPIOX_7 */ 224 "PIN_15", /* GPIOX_7 */ 253 "PIN_19", /* GPIOX_8 */ 225 "PIN_19", /* GPIOX_8 */ 254 "PIN_21", /* GPIOX_9 */ 226 "PIN_21", /* GPIOX_9 */ 255 "PIN_24", /* GPIOX_10 */ 227 "PIN_24", /* GPIOX_10 */ 256 "PIN_23", /* GPIOX_11 */ 228 "PIN_23", /* GPIOX_11 */ 257 "PIN_8", /* GPIOX_12 */ 229 "PIN_8", /* GPIOX_12 */ 258 "PIN_10", /* GPIOX_13 */ 230 "PIN_10", /* GPIOX_13 */ 259 "PIN_29", /* GPIOX_14 */ 231 "PIN_29", /* GPIOX_14 */ 260 "PIN_31", /* GPIOX_15 */ 232 "PIN_31", /* GPIOX_15 */ 261 "PIN_12", /* GPIOX_16 */ 233 "PIN_12", /* GPIOX_16 */ 262 "PIN_3", /* GPIOX_17 */ 234 "PIN_3", /* GPIOX_17 */ 263 "PIN_5", /* GPIOX_18 */ 235 "PIN_5", /* GPIOX_18 */ 264 "PIN_36"; /* GPIOX_19 */ 236 "PIN_36"; /* GPIOX_19 */ >> 237 /* >> 238 * WARNING: The USB Hub on the Odroid-N2 needs a reset signal >> 239 * to be turned high in order to be detected by the USB Controller >> 240 * This signal should be handled by a USB specific power sequence >> 241 * in order to reset the Hub when USB bus is powered down. >> 242 */ >> 243 usb-hub-hog { >> 244 gpio-hog; >> 245 gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; >> 246 output-high; >> 247 line-name = "usb-hub-reset"; >> 248 }; 265 }; 249 }; 266 250 267 &i2c3 { 251 &i2c3 { 268 status = "okay"; 252 status = "okay"; 269 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3 253 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; 270 pinctrl-names = "default"; 254 pinctrl-names = "default"; 271 255 272 rtc: rtc@51 { 256 rtc: rtc@51 { 273 compatible = "nxp,pcf8563"; 257 compatible = "nxp,pcf8563"; 274 reg = <0x51>; 258 reg = <0x51>; 275 wakeup-source; 259 wakeup-source; 276 }; 260 }; 277 }; 261 }; 278 262 279 &ir { 263 &ir { 280 status = "okay"; 264 status = "okay"; 281 pinctrl-0 = <&remote_input_ao_pins>; 265 pinctrl-0 = <&remote_input_ao_pins>; 282 pinctrl-names = "default"; 266 pinctrl-names = "default"; 283 linux,rc-map-name = "rc-odroid"; 267 linux,rc-map-name = "rc-odroid"; 284 }; 268 }; 285 269 286 /* 270 /* 287 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins 271 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins 288 * and eMMC Data 4 to 7 pins. 272 * and eMMC Data 4 to 7 pins. 289 * Replace emmc_data_8b_pins to emmc_data_4b_p 273 * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0, 290 * and change bus-width to 4 then spifc can be 274 * and change bus-width to 4 then spifc can be enabled. 291 * The SW1 slide should also be set to the cor 275 * The SW1 slide should also be set to the correct position. 292 */ 276 */ 293 &spifc { 277 &spifc { 294 status = "disabled"; 278 status = "disabled"; 295 pinctrl-0 = <&nor_pins>; 279 pinctrl-0 = <&nor_pins>; 296 pinctrl-names = "default"; 280 pinctrl-names = "default"; 297 281 298 mx25u64: flash@0 { 282 mx25u64: flash@0 { 299 #address-cells = <1>; 283 #address-cells = <1>; 300 #size-cells = <1>; 284 #size-cells = <1>; 301 compatible = "mxicy,mx25u6435f 285 compatible = "mxicy,mx25u6435f", "jedec,spi-nor"; 302 reg = <0>; 286 reg = <0>; 303 spi-max-frequency = <104000000 287 spi-max-frequency = <104000000>; 304 }; 288 }; 305 }; 289 }; 306 290 307 &toacodec { 291 &toacodec { 308 status = "okay"; 292 status = "okay"; 309 }; 293 }; 310 294 311 &usb { 295 &usb { 312 vbus-supply = <&usb_pwr_en>; 296 vbus-supply = <&usb_pwr_en>; 313 }; 297 }; 314 298 315 &usb2_phy1 { 299 &usb2_phy1 { 316 /* Enable the hub which is connected t 300 /* Enable the hub which is connected to this port */ 317 phy-supply = <&hub_5v>; 301 phy-supply = <&hub_5v>; 318 }; 302 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.