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