1 // SPDX-License-Identifier: GPL-2.0 1 // SPDX-License-Identifier: GPL-2.0 2 /dts-v1/; 2 /dts-v1/; 3 3 4 #include "jz4770.dtsi" 4 #include "jz4770.dtsi" 5 #include <dt-bindings/clock/ingenic,tcu.h> 5 #include <dt-bindings/clock/ingenic,tcu.h> 6 6 7 #include <dt-bindings/gpio/gpio.h> 7 #include <dt-bindings/gpio/gpio.h> 8 #include <dt-bindings/iio/adc/ingenic,adc.h> 8 #include <dt-bindings/iio/adc/ingenic,adc.h> 9 #include <dt-bindings/input/input.h> 9 #include <dt-bindings/input/input.h> 10 10 11 / { 11 / { 12 compatible = "gcw,zero", "ingenic,jz47 12 compatible = "gcw,zero", "ingenic,jz4770"; 13 model = "GCW Zero"; 13 model = "GCW Zero"; 14 14 15 aliases { 15 aliases { 16 serial0 = &uart0; 16 serial0 = &uart0; 17 serial1 = &uart1; 17 serial1 = &uart1; 18 serial2 = &uart2; 18 serial2 = &uart2; 19 serial3 = &uart3; 19 serial3 = &uart3; 20 }; 20 }; 21 21 22 memory: memory { 22 memory: memory { 23 device_type = "memory"; 23 device_type = "memory"; 24 reg = <0x0 0x10000000>, 24 reg = <0x0 0x10000000>, 25 <0x30000000 0x10000000>; 25 <0x30000000 0x10000000>; 26 }; 26 }; 27 27 28 chosen { 28 chosen { 29 stdout-path = "serial2:57600n8 29 stdout-path = "serial2:57600n8"; 30 }; 30 }; 31 31 32 vcc: regulator@0 { 32 vcc: regulator@0 { 33 compatible = "regulator-fixed" 33 compatible = "regulator-fixed"; 34 regulator-name = "vcc"; 34 regulator-name = "vcc"; 35 35 36 regulator-min-microvolt = <330 36 regulator-min-microvolt = <3300000>; 37 regulator-max-microvolt = <330 37 regulator-max-microvolt = <3300000>; 38 regulator-always-on; 38 regulator-always-on; 39 }; 39 }; 40 40 41 mmc1_power: regulator@1 { 41 mmc1_power: regulator@1 { 42 compatible = "regulator-fixed" 42 compatible = "regulator-fixed"; 43 regulator-name = "mmc1_vcc"; 43 regulator-name = "mmc1_vcc"; 44 gpio = <&gpe 9 0>; 44 gpio = <&gpe 9 0>; 45 45 46 regulator-min-microvolt = <330 46 regulator-min-microvolt = <3300000>; 47 regulator-max-microvolt = <330 47 regulator-max-microvolt = <3300000>; 48 vin-supply = <&vcc>; 48 vin-supply = <&vcc>; 49 }; 49 }; 50 50 51 headphones_amp: analog-amplifier@0 { 51 headphones_amp: analog-amplifier@0 { 52 compatible = "simple-audio-amp 52 compatible = "simple-audio-amplifier"; 53 enable-gpios = <&gpf 3 GPIO_AC 53 enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>; 54 enable-delay-ms = <50>; 54 enable-delay-ms = <50>; 55 55 56 VCC-supply = <&ldo5>; 56 VCC-supply = <&ldo5>; 57 sound-name-prefix = "Headphone 57 sound-name-prefix = "Headphones Amp"; 58 }; 58 }; 59 59 60 speaker_amp: analog-amplifier@1 { 60 speaker_amp: analog-amplifier@1 { 61 compatible = "simple-audio-amp 61 compatible = "simple-audio-amplifier"; 62 enable-gpios = <&gpf 20 GPIO_A 62 enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>; 63 63 64 VCC-supply = <&ldo5>; 64 VCC-supply = <&ldo5>; 65 sound-name-prefix = "Speaker A 65 sound-name-prefix = "Speaker Amp"; 66 }; 66 }; 67 67 68 sound { 68 sound { 69 compatible = "simple-audio-car 69 compatible = "simple-audio-card"; 70 70 71 simple-audio-card,name = "gcw0 71 simple-audio-card,name = "gcw0-audio"; 72 simple-audio-card,format = "i2 72 simple-audio-card,format = "i2s"; 73 73 74 simple-audio-card,widgets = 74 simple-audio-card,widgets = 75 "Speaker", "Speaker", 75 "Speaker", "Speaker", 76 "Headphone", "Headphon 76 "Headphone", "Headphones", 77 "Microphone", "Built-i 77 "Microphone", "Built-in Mic"; 78 simple-audio-card,routing = 78 simple-audio-card,routing = 79 "Headphones Amp INL", 79 "Headphones Amp INL", "LHPOUT", 80 "Headphones Amp INR", 80 "Headphones Amp INR", "RHPOUT", 81 "Headphones", "Headpho 81 "Headphones", "Headphones Amp OUTL", 82 "Headphones", "Headpho 82 "Headphones", "Headphones Amp OUTR", 83 "Speaker Amp INL", "LO 83 "Speaker Amp INL", "LOUT", 84 "Speaker Amp INR", "RO 84 "Speaker Amp INR", "ROUT", 85 "Speaker", "Speaker Am 85 "Speaker", "Speaker Amp OUTL", 86 "Speaker", "Speaker Am 86 "Speaker", "Speaker Amp OUTR", 87 "LLINEIN", "Cap-less", 87 "LLINEIN", "Cap-less", 88 "RLINEIN", "Cap-less", 88 "RLINEIN", "Cap-less", 89 "Built-in Mic", "MICBI 89 "Built-in Mic", "MICBIAS", 90 "MIC1P", "Built-in Mic 90 "MIC1P", "Built-in Mic", 91 "MIC1N", "Built-in Mic 91 "MIC1N", "Built-in Mic"; 92 simple-audio-card,pin-switches 92 simple-audio-card,pin-switches = "Speaker", "Headphones"; 93 93 94 simple-audio-card,hp-det-gpio 94 simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>; 95 simple-audio-card,aux-devs = < 95 simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>; 96 96 97 simple-audio-card,bitclock-mas 97 simple-audio-card,bitclock-master = <&dai_codec>; 98 simple-audio-card,frame-master 98 simple-audio-card,frame-master = <&dai_codec>; 99 99 100 dai_cpu: simple-audio-card,cpu 100 dai_cpu: simple-audio-card,cpu { 101 sound-dai = <&aic>; 101 sound-dai = <&aic>; 102 }; 102 }; 103 103 104 dai_codec: simple-audio-card,c 104 dai_codec: simple-audio-card,codec { 105 sound-dai = <&codec>; 105 sound-dai = <&codec>; 106 }; 106 }; 107 }; 107 }; 108 108 109 rumble { 109 rumble { 110 compatible = "pwm-vibrator"; 110 compatible = "pwm-vibrator"; 111 pwms = <&pwm 4 2000000 0>; 111 pwms = <&pwm 4 2000000 0>; 112 pwm-names = "enable"; 112 pwm-names = "enable"; 113 113 114 pinctrl-names = "default"; 114 pinctrl-names = "default"; 115 pinctrl-0 = <&pins_pwm4>; 115 pinctrl-0 = <&pins_pwm4>; 116 }; 116 }; 117 117 118 backlight: backlight { 118 backlight: backlight { 119 compatible = "pwm-backlight"; 119 compatible = "pwm-backlight"; 120 pwms = <&pwm 1 40000 0>; 120 pwms = <&pwm 1 40000 0>; 121 power-supply = <&vcc>; 121 power-supply = <&vcc>; 122 122 123 brightness-levels = <0 16 32 4 123 brightness-levels = <0 16 32 48 64 80 96 112 128 124 144 160 1 124 144 160 176 192 208 224 240 255>; 125 default-brightness-level = <12 125 default-brightness-level = <12>; 126 126 127 pinctrl-names = "default"; 127 pinctrl-names = "default"; 128 pinctrl-0 = <&pins_pwm1>; 128 pinctrl-0 = <&pins_pwm1>; 129 }; 129 }; 130 130 131 gpio-keys { 131 gpio-keys { 132 compatible = "gpio-keys"; 132 compatible = "gpio-keys"; 133 autorepeat; 133 autorepeat; 134 134 135 button-0 { 135 button-0 { 136 label = "D-pad up"; 136 label = "D-pad up"; 137 linux,code = <KEY_UP>; 137 linux,code = <KEY_UP>; 138 linux,can-disable; 138 linux,can-disable; 139 gpios = <&gpe 21 GPIO_ 139 gpios = <&gpe 21 GPIO_ACTIVE_LOW>; 140 }; 140 }; 141 141 142 button-1 { 142 button-1 { 143 label = "D-pad down"; 143 label = "D-pad down"; 144 linux,code = <KEY_DOWN 144 linux,code = <KEY_DOWN>; 145 linux,can-disable; 145 linux,can-disable; 146 gpios = <&gpe 25 GPIO_ 146 gpios = <&gpe 25 GPIO_ACTIVE_LOW>; 147 }; 147 }; 148 148 149 button-2 { 149 button-2 { 150 label = "D-pad left"; 150 label = "D-pad left"; 151 linux,code = <KEY_LEFT 151 linux,code = <KEY_LEFT>; 152 linux,can-disable; 152 linux,can-disable; 153 gpios = <&gpe 23 GPIO_ 153 gpios = <&gpe 23 GPIO_ACTIVE_LOW>; 154 }; 154 }; 155 155 156 button-3 { 156 button-3 { 157 label = "D-pad right"; 157 label = "D-pad right"; 158 linux,code = <KEY_RIGH 158 linux,code = <KEY_RIGHT>; 159 linux,can-disable; 159 linux,can-disable; 160 gpios = <&gpe 24 GPIO_ 160 gpios = <&gpe 24 GPIO_ACTIVE_LOW>; 161 }; 161 }; 162 162 163 button-4 { 163 button-4 { 164 label = "Button A"; 164 label = "Button A"; 165 linux,code = <KEY_LEFT 165 linux,code = <KEY_LEFTCTRL>; 166 linux,can-disable; 166 linux,can-disable; 167 gpios = <&gpe 29 GPIO_ 167 gpios = <&gpe 29 GPIO_ACTIVE_LOW>; 168 }; 168 }; 169 169 170 button-5 { 170 button-5 { 171 label = "Button B"; 171 label = "Button B"; 172 linux,code = <KEY_LEFT 172 linux,code = <KEY_LEFTALT>; 173 linux,can-disable; 173 linux,can-disable; 174 gpios = <&gpe 20 GPIO_ 174 gpios = <&gpe 20 GPIO_ACTIVE_LOW>; 175 }; 175 }; 176 176 177 button-6 { 177 button-6 { 178 label = "Button Y"; 178 label = "Button Y"; 179 linux,code = <KEY_SPAC 179 linux,code = <KEY_SPACE>; 180 linux,can-disable; 180 linux,can-disable; 181 gpios = <&gpe 27 GPIO_ 181 gpios = <&gpe 27 GPIO_ACTIVE_LOW>; 182 }; 182 }; 183 183 184 button-7 { 184 button-7 { 185 label = "Button X"; 185 label = "Button X"; 186 linux,code = <KEY_LEFT 186 linux,code = <KEY_LEFTSHIFT>; 187 linux,can-disable; 187 linux,can-disable; 188 gpios = <&gpe 28 GPIO_ 188 gpios = <&gpe 28 GPIO_ACTIVE_LOW>; 189 }; 189 }; 190 190 191 button-8 { 191 button-8 { 192 label = "Left shoulder 192 label = "Left shoulder button"; 193 linux,code = <KEY_TAB> 193 linux,code = <KEY_TAB>; 194 linux,can-disable; 194 linux,can-disable; 195 gpios = <&gpb 20 GPIO_ 195 gpios = <&gpb 20 GPIO_ACTIVE_LOW>; 196 }; 196 }; 197 197 198 button-9 { 198 button-9 { 199 label = "Right shoulde 199 label = "Right shoulder button"; 200 linux,code = <KEY_BACK 200 linux,code = <KEY_BACKSPACE>; 201 linux,can-disable; 201 linux,can-disable; 202 gpios = <&gpe 26 GPIO_ 202 gpios = <&gpe 26 GPIO_ACTIVE_LOW>; 203 }; 203 }; 204 204 205 button-10 { 205 button-10 { 206 label = "Start button" 206 label = "Start button"; 207 linux,code = <KEY_ENTE 207 linux,code = <KEY_ENTER>; 208 linux,can-disable; 208 linux,can-disable; 209 gpios = <&gpb 21 GPIO_ 209 gpios = <&gpb 21 GPIO_ACTIVE_LOW>; 210 }; 210 }; 211 211 212 button-11 { 212 button-11 { 213 label = "Select button 213 label = "Select button"; 214 linux,code = <KEY_ESC> 214 linux,code = <KEY_ESC>; 215 linux,can-disable; 215 linux,can-disable; 216 /* 216 /* 217 * This is the only bu 217 * This is the only button that is active high, 218 * since it doubles as 218 * since it doubles as BOOT_SEL1. 219 */ 219 */ 220 gpios = <&gpd 18 GPIO_ 220 gpios = <&gpd 18 GPIO_ACTIVE_HIGH>; 221 }; 221 }; 222 222 223 button-12 { 223 button-12 { 224 label = "Power slider" 224 label = "Power slider"; 225 linux,code = <KEY_POWE 225 linux,code = <KEY_POWER>; 226 linux,can-disable; 226 linux,can-disable; 227 gpios = <&gpa 30 GPIO_ 227 gpios = <&gpa 30 GPIO_ACTIVE_LOW>; 228 wakeup-source; 228 wakeup-source; 229 }; 229 }; 230 230 231 button-13 { 231 button-13 { 232 label = "Power hold"; 232 label = "Power hold"; 233 linux,code = <KEY_PAUS 233 linux,code = <KEY_PAUSE>; 234 linux,can-disable; 234 linux,can-disable; 235 gpios = <&gpf 11 GPIO_ 235 gpios = <&gpf 11 GPIO_ACTIVE_LOW>; 236 }; 236 }; 237 }; 237 }; 238 238 239 i2c3: i2c-controller@3 { 239 i2c3: i2c-controller@3 { 240 compatible = "i2c-gpio"; 240 compatible = "i2c-gpio"; 241 #address-cells = <1>; 241 #address-cells = <1>; 242 #size-cells = <0>; 242 #size-cells = <0>; 243 243 244 sda-gpios = <&gpd 5 GPIO_ACTIV 244 sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>; 245 scl-gpios = <&gpd 4 GPIO_ACTIV 245 scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>; 246 i2c-gpio,delay-us = <2>; /* 25 246 i2c-gpio,delay-us = <2>; /* 250 kHz */ 247 247 248 act8600: pmic@5a { 248 act8600: pmic@5a { 249 compatible = "active-s 249 compatible = "active-semi,act8600"; 250 reg = <0x5a>; 250 reg = <0x5a>; 251 251 252 regulators { 252 regulators { 253 /* USB OTG */ 253 /* USB OTG */ 254 otg_vbus: SUDC 254 otg_vbus: SUDCDC_REG4 { 255 /* 255 /* 256 * 5.3 256 * 5.3V instead of 5.0V to compensate 257 * for 257 * for the voltage drop of a diode 258 * bet 258 * between the regulator and the 259 * con 259 * connector. 260 */ 260 */ 261 regula 261 regulator-min-microvolt = <5300000>; 262 regula 262 regulator-max-microvolt = <5300000>; 263 inl-su 263 inl-supply = <&vcc>; 264 }; 264 }; 265 265 266 /* 266 /* 267 * When this i 267 * When this is off, there is no sound, but also 268 * no USB netw 268 * no USB networking. 269 */ 269 */ 270 ldo5: LDO5 { 270 ldo5: LDO5 { 271 regula 271 regulator-min-microvolt = <2500000>; 272 regula 272 regulator-max-microvolt = <2500000>; 273 inl-su 273 inl-supply = <&vcc>; 274 }; 274 }; 275 275 276 /* LCD panel a 276 /* LCD panel and FM radio */ 277 ldo6: LDO6 { 277 ldo6: LDO6 { 278 regula 278 regulator-min-microvolt = <3300000>; 279 regula 279 regulator-max-microvolt = <3300000>; 280 inl-su 280 inl-supply = <&vcc>; 281 }; 281 }; 282 282 283 /* ??? */ 283 /* ??? */ 284 LDO7 { 284 LDO7 { 285 regula 285 regulator-min-microvolt = <3300000>; 286 regula 286 regulator-max-microvolt = <3300000>; 287 /*regu 287 /*regulator-always-on;*/ 288 inl-su 288 inl-supply = <&vcc>; 289 }; 289 }; 290 290 291 /* 291 /* 292 * The colors 292 * The colors on the LCD are wrong when this is 293 * off. Which 293 * off. Which is strange, since the LCD panel 294 * data sheet 294 * data sheet only mentions a 3.3V input. 295 */ 295 */ 296 LDO8 { 296 LDO8 { 297 regula 297 regulator-min-microvolt = <1800000>; 298 regula 298 regulator-max-microvolt = <1800000>; 299 regula 299 regulator-always-on; 300 inl-su 300 inl-supply = <&vcc>; 301 }; 301 }; 302 302 303 /* RTC fixed 3 303 /* RTC fixed 3.3V */ 304 LDO_REG9 { 304 LDO_REG9 { 305 regula 305 regulator-min-microvolt = <3300000>; 306 regula 306 regulator-max-microvolt = <3300000>; 307 regula 307 regulator-always-on; 308 inl-su 308 inl-supply = <&vcc>; 309 }; 309 }; 310 310 311 /* Unused fixe 311 /* Unused fixed 1.2V */ 312 LDO_REG10 { 312 LDO_REG10 { 313 inl-su 313 inl-supply = <&vcc>; 314 }; 314 }; 315 }; 315 }; 316 }; 316 }; 317 }; 317 }; 318 318 319 leds { 319 leds { 320 compatible = "gpio-leds"; 320 compatible = "gpio-leds"; 321 321 322 led { 322 led { 323 gpios = <&gpb 30 GPIO_ 323 gpios = <&gpb 30 GPIO_ACTIVE_LOW>; 324 default-state = "on"; 324 default-state = "on"; 325 }; 325 }; 326 }; 326 }; 327 327 328 spi { 328 spi { 329 compatible = "spi-gpio"; 329 compatible = "spi-gpio"; 330 #address-cells = <1>; 330 #address-cells = <1>; 331 #size-cells = <0>; 331 #size-cells = <0>; 332 332 333 sck-gpios = <&gpe 15 GPIO_ACTI 333 sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>; 334 mosi-gpios = <&gpe 17 GPIO_ACT 334 mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>; 335 cs-gpios = <&gpe 16 GPIO_ACTIV 335 cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>; 336 num-chipselects = <1>; 336 num-chipselects = <1>; 337 337 338 nt39016@0 { 338 nt39016@0 { 339 compatible = "kingdisp 339 compatible = "kingdisplay,kd035g6-54nt"; 340 reg = <0>; 340 reg = <0>; 341 341 342 spi-max-frequency = <3 342 spi-max-frequency = <3125000>; 343 spi-3wire; 343 spi-3wire; 344 344 345 reset-gpios = <&gpe 2 345 reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>; 346 346 347 backlight = <&backligh 347 backlight = <&backlight>; 348 power-supply = <&ldo6> 348 power-supply = <&ldo6>; 349 349 350 port { 350 port { 351 panel_input: e 351 panel_input: endpoint { 352 remote 352 remote-endpoint = <&panel_output>; 353 }; 353 }; 354 }; 354 }; 355 }; 355 }; 356 }; 356 }; 357 357 358 connector { 358 connector { 359 compatible = "gpio-usb-b-conne 359 compatible = "gpio-usb-b-connector", "usb-b-connector"; 360 label = "mini-USB"; 360 label = "mini-USB"; 361 type = "mini"; 361 type = "mini"; 362 362 363 /* 363 /* 364 * USB OTG is not yet working 364 * USB OTG is not yet working reliably, the ID detection 365 * mechanism tends to fry easi 365 * mechanism tends to fry easily for unknown reasons. 366 * Until this is fixed, disabl 366 * Until this is fixed, disable OTG by not providing the 367 * ID GPIO to the driver. 367 * ID GPIO to the driver. 368 */ 368 */ 369 //id-gpios = <&gpf 18 GPIO_ACT 369 //id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>; 370 370 371 vbus-gpios = <&gpb 5 GPIO_ACTI 371 vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>; 372 vbus-supply = <&otg_vbus>; 372 vbus-supply = <&otg_vbus>; 373 373 374 pinctrl-names = "default"; 374 pinctrl-names = "default"; 375 pinctrl-0 = <&pins_otg>; 375 pinctrl-0 = <&pins_otg>; 376 376 377 port { 377 port { 378 usb_ep: endpoint { 378 usb_ep: endpoint { 379 remote-endpoin 379 remote-endpoint = <&usb_otg_ep>; 380 }; 380 }; 381 }; 381 }; 382 }; 382 }; 383 }; 383 }; 384 384 385 &ext { 385 &ext { 386 clock-frequency = <12000000>; 386 clock-frequency = <12000000>; 387 }; 387 }; 388 388 389 &pinctrl { 389 &pinctrl { 390 pins_lcd: lcd { 390 pins_lcd: lcd { 391 function = "lcd"; 391 function = "lcd"; 392 groups = "lcd-24bit"; 392 groups = "lcd-24bit"; 393 }; 393 }; 394 394 395 pins_uart2: uart2 { 395 pins_uart2: uart2 { 396 function = "uart2"; 396 function = "uart2"; 397 groups = "uart2-data"; 397 groups = "uart2-data"; 398 }; 398 }; 399 399 400 pins_mmc0: mmc0 { 400 pins_mmc0: mmc0 { 401 function = "mmc0"; 401 function = "mmc0"; 402 groups = "mmc0-1bit-a", "mmc0- 402 groups = "mmc0-1bit-a", "mmc0-4bit-a"; 403 }; 403 }; 404 404 405 pins_mmc1: mmc1 { 405 pins_mmc1: mmc1 { 406 function = "mmc1"; 406 function = "mmc1"; 407 groups = "mmc1-1bit-d", "mmc1- 407 groups = "mmc1-1bit-d", "mmc1-4bit-d"; 408 }; 408 }; 409 409 410 pins_otg: otg { 410 pins_otg: otg { 411 otg-vbus-pin { 411 otg-vbus-pin { 412 function = "otg"; 412 function = "otg"; 413 groups = "otg-vbus"; 413 groups = "otg-vbus"; 414 }; 414 }; 415 415 416 vbus-pin { 416 vbus-pin { 417 pins = "PB5"; 417 pins = "PB5"; 418 bias-disable; 418 bias-disable; 419 }; 419 }; 420 }; 420 }; 421 421 422 pins_pwm1: pwm1 { 422 pins_pwm1: pwm1 { 423 function = "pwm1"; 423 function = "pwm1"; 424 groups = "pwm1"; 424 groups = "pwm1"; 425 }; 425 }; 426 426 427 pins_pwm4: pwm4 { 427 pins_pwm4: pwm4 { 428 function = "pwm4"; 428 function = "pwm4"; 429 groups = "pwm4"; 429 groups = "pwm4"; 430 }; 430 }; 431 }; 431 }; 432 432 433 &uart2 { 433 &uart2 { 434 pinctrl-names = "default"; 434 pinctrl-names = "default"; 435 pinctrl-0 = <&pins_uart2>; 435 pinctrl-0 = <&pins_uart2>; 436 436 437 status = "okay"; 437 status = "okay"; 438 }; 438 }; 439 439 440 &cgu { 440 &cgu { 441 /* 441 /* 442 * Put high-speed peripherals under PL 442 * Put high-speed peripherals under PLL1, such that we can change the 443 * PLL0 frequency on demand without ha 443 * PLL0 frequency on demand without having to suspend peripherals. 444 * We use a rate of 432 MHz, which is 444 * We use a rate of 432 MHz, which is the least common multiple of 445 * 27 MHz (required by TV encoder) and 445 * 27 MHz (required by TV encoder) and 48 MHz (required by USB host). 446 * Put the GPU under PLL0 since we wan 446 * Put the GPU under PLL0 since we want a higher frequency. 447 * Use the 32 kHz oscillator as the pa 447 * Use the 32 kHz oscillator as the parent of the RTC for a higher 448 * precision. 448 * precision. 449 */ 449 */ 450 assigned-clocks = 450 assigned-clocks = 451 <&cgu JZ4770_CLK_PLL1>, 451 <&cgu JZ4770_CLK_PLL1>, 452 <&cgu JZ4770_CLK_GPU>, 452 <&cgu JZ4770_CLK_GPU>, 453 <&cgu JZ4770_CLK_RTC>, 453 <&cgu JZ4770_CLK_RTC>, 454 <&cgu JZ4770_CLK_UHC>, 454 <&cgu JZ4770_CLK_UHC>, 455 <&cgu JZ4770_CLK_LPCLK_MUX>, 455 <&cgu JZ4770_CLK_LPCLK_MUX>, 456 <&cgu JZ4770_CLK_MMC0_MUX>, 456 <&cgu JZ4770_CLK_MMC0_MUX>, 457 <&cgu JZ4770_CLK_MMC1_MUX>; 457 <&cgu JZ4770_CLK_MMC1_MUX>; 458 assigned-clock-parents = 458 assigned-clock-parents = 459 <0>, 459 <0>, 460 <&cgu JZ4770_CLK_PLL0>, 460 <&cgu JZ4770_CLK_PLL0>, 461 <&cgu JZ4770_CLK_OSC32K>, 461 <&cgu JZ4770_CLK_OSC32K>, 462 <&cgu JZ4770_CLK_PLL1>, 462 <&cgu JZ4770_CLK_PLL1>, 463 <&cgu JZ4770_CLK_PLL1>, 463 <&cgu JZ4770_CLK_PLL1>, 464 <&cgu JZ4770_CLK_PLL1>, 464 <&cgu JZ4770_CLK_PLL1>, 465 <&cgu JZ4770_CLK_PLL1>; 465 <&cgu JZ4770_CLK_PLL1>; 466 assigned-clock-rates = 466 assigned-clock-rates = 467 <432000000>, 467 <432000000>, 468 <600000000>; 468 <600000000>; 469 }; 469 }; 470 470 471 &uhc { 471 &uhc { 472 /* The WiFi module is connected to the 472 /* The WiFi module is connected to the UHC. */ 473 status = "okay"; 473 status = "okay"; 474 }; 474 }; 475 475 476 &tcu { 476 &tcu { 477 /* 477 /* 478 * 750 kHz for the system timer and cl 478 * 750 kHz for the system timer and clocksource, 12 MHz for the OST, 479 * and use RTC as the parent for the w 479 * and use RTC as the parent for the watchdog clock 480 */ 480 */ 481 assigned-clocks = <&tcu TCU_CLK_TIMER0 481 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>, 482 <&tcu TCU_CLK_OST>, 482 <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>; 483 assigned-clock-parents = <0>, <0>, <0> 483 assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>; 484 assigned-clock-rates = <750000>, <7500 484 assigned-clock-rates = <750000>, <750000>, <12000000>; 485 485 486 /* PWM1 is in use, so use channel #2 f 486 /* PWM1 is in use, so use channel #2 for the clocksource */ 487 ingenic,pwm-channels-mask = <0xfa>; 487 ingenic,pwm-channels-mask = <0xfa>; 488 }; 488 }; 489 489 490 &usb_otg { 490 &usb_otg { 491 port { 491 port { 492 usb_otg_ep: endpoint { 492 usb_otg_ep: endpoint { 493 remote-endpoint = <&us 493 remote-endpoint = <&usb_ep>; 494 }; 494 }; 495 }; 495 }; 496 }; 496 }; 497 497 498 &otg_phy { 498 &otg_phy { 499 vcc-supply = <&ldo5>; 499 vcc-supply = <&ldo5>; 500 }; 500 }; 501 501 502 &rtc { 502 &rtc { 503 clocks = <&cgu JZ4770_CLK_RTC>; 503 clocks = <&cgu JZ4770_CLK_RTC>; 504 clock-names = "rtc"; 504 clock-names = "rtc"; 505 505 506 system-power-controller; 506 system-power-controller; 507 }; 507 }; 508 508 509 &mmc0 { 509 &mmc0 { 510 status = "okay"; 510 status = "okay"; 511 511 512 bus-width = <4>; 512 bus-width = <4>; 513 max-frequency = <48000000>; 513 max-frequency = <48000000>; 514 vmmc-supply = <&vcc>; 514 vmmc-supply = <&vcc>; 515 non-removable; 515 non-removable; 516 516 517 pinctrl-names = "default"; 517 pinctrl-names = "default"; 518 pinctrl-0 = <&pins_mmc0>; 518 pinctrl-0 = <&pins_mmc0>; 519 }; 519 }; 520 520 521 &mmc1 { 521 &mmc1 { 522 status = "okay"; 522 status = "okay"; 523 523 524 bus-width = <4>; 524 bus-width = <4>; 525 max-frequency = <48000000>; 525 max-frequency = <48000000>; 526 cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>; 526 cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>; 527 vmmc-supply = <&mmc1_power>; 527 vmmc-supply = <&mmc1_power>; 528 528 529 pinctrl-names = "default"; 529 pinctrl-names = "default"; 530 pinctrl-0 = <&pins_mmc1>; 530 pinctrl-0 = <&pins_mmc1>; 531 }; 531 }; 532 532 533 &lcd { 533 &lcd { 534 pinctrl-names = "default"; 534 pinctrl-names = "default"; 535 pinctrl-0 = <&pins_lcd>; 535 pinctrl-0 = <&pins_lcd>; 536 536 537 port { 537 port { 538 panel_output: endpoint { 538 panel_output: endpoint { 539 remote-endpoint = <&pa 539 remote-endpoint = <&panel_input>; 540 }; 540 }; 541 }; 541 }; 542 }; 542 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.