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