Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.18-rc8 509 lines 15 kB view raw
1Device Tree Clock bindings for arch-at91 2 3This binding uses the common clock binding[1]. 4 5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt 6 7Required properties: 8- compatible : shall be one of the following: 9 "atmel,at91sam9x5-sckc" or 10 "atmel,sama5d4-sckc": 11 at91 SCKC (Slow Clock Controller) 12 This node contains the slow clock definitions. 13 14 "atmel,at91sam9x5-clk-slow-osc": 15 at91 slow oscillator 16 17 "atmel,at91sam9x5-clk-slow-rc-osc": 18 at91 internal slow RC oscillator 19 20 "atmel,at91rm9200-pmc" or 21 "atmel,at91sam9g45-pmc" or 22 "atmel,at91sam9n12-pmc" or 23 "atmel,at91sam9x5-pmc" or 24 "atmel,sama5d3-pmc": 25 at91 PMC (Power Management Controller) 26 All at91 specific clocks (clocks defined below) must be child 27 node of the PMC node. 28 29 "atmel,at91sam9x5-clk-slow" (under sckc node) 30 or 31 "atmel,at91sam9260-clk-slow" (under pmc node): 32 at91 slow clk 33 34 "atmel,at91rm9200-clk-main-osc" 35 "atmel,at91sam9x5-clk-main-rc-osc" 36 at91 main clk sources 37 38 "atmel,at91sam9x5-clk-main" 39 "atmel,at91rm9200-clk-main": 40 at91 main clock 41 42 "atmel,at91rm9200-clk-master" or 43 "atmel,at91sam9x5-clk-master": 44 at91 master clock 45 46 "atmel,at91sam9x5-clk-peripheral" or 47 "atmel,at91rm9200-clk-peripheral": 48 at91 peripheral clocks 49 50 "atmel,at91rm9200-clk-pll" or 51 "atmel,at91sam9g45-clk-pll" or 52 "atmel,at91sam9g20-clk-pllb" or 53 "atmel,sama5d3-clk-pll": 54 at91 pll clocks 55 56 "atmel,at91sam9x5-clk-plldiv": 57 at91 plla divisor 58 59 "atmel,at91rm9200-clk-programmable" or 60 "atmel,at91sam9g45-clk-programmable" or 61 "atmel,at91sam9x5-clk-programmable": 62 at91 programmable clocks 63 64 "atmel,at91sam9x5-clk-smd": 65 at91 SMD (Soft Modem) clock 66 67 "atmel,at91rm9200-clk-system": 68 at91 system clocks 69 70 "atmel,at91rm9200-clk-usb" or 71 "atmel,at91sam9x5-clk-usb" or 72 "atmel,at91sam9n12-clk-usb": 73 at91 usb clock 74 75 "atmel,at91sam9x5-clk-utmi": 76 at91 utmi clock 77 78 "atmel,sama5d4-clk-h32mx": 79 at91 h32mx clock 80 81 "atmel,sama5d2-clk-generated": 82 at91 generated clock 83 84 "atmel,sama5d2-clk-audio-pll-frac": 85 at91 audio fractional pll 86 87 "atmel,sama5d2-clk-audio-pll-pad": 88 at91 audio pll CLK_AUDIO output pin 89 90 "atmel,sama5d2-clk-audio-pll-pmc" 91 at91 audio pll output on AUDIOPLLCLK that feeds the PMC 92 and can be used by peripheral clock or generic clock 93 94Required properties for SCKC node: 95- reg : defines the IO memory reserved for the SCKC. 96- #size-cells : shall be 0 (reg is used to encode clk id). 97- #address-cells : shall be 1 (reg is used to encode clk id). 98 99 100For example: 101 sckc: sckc@fffffe50 { 102 compatible = "atmel,sama5d3-pmc"; 103 reg = <0xfffffe50 0x4> 104 #size-cells = <0>; 105 #address-cells = <1>; 106 107 /* put at91 slow clocks here */ 108 }; 109 110 111Required properties for internal slow RC oscillator: 112- #clock-cells : from common clock binding; shall be set to 0. 113- clock-frequency : define the internal RC oscillator frequency. 114 115Optional properties: 116- clock-accuracy : define the internal RC oscillator accuracy. 117 118For example: 119 slow_rc_osc: slow_rc_osc { 120 compatible = "atmel,at91sam9x5-clk-slow-rc-osc"; 121 clock-frequency = <32768>; 122 clock-accuracy = <50000000>; 123 }; 124 125Required properties for slow oscillator: 126- #clock-cells : from common clock binding; shall be set to 0. 127- clocks : shall encode the main osc source clk sources (see atmel datasheet). 128 129Optional properties: 130- atmel,osc-bypass : boolean property. Set this when a clock signal is directly 131 provided on XIN. 132 133For example: 134 slow_osc: slow_osc { 135 compatible = "atmel,at91rm9200-clk-slow-osc"; 136 #clock-cells = <0>; 137 clocks = <&slow_xtal>; 138 }; 139 140Required properties for slow clock: 141- #clock-cells : from common clock binding; shall be set to 0. 142- clocks : shall encode the slow clk sources (see atmel datasheet). 143 144For example: 145 clk32k: slck { 146 compatible = "atmel,at91sam9x5-clk-slow"; 147 #clock-cells = <0>; 148 clocks = <&slow_rc_osc &slow_osc>; 149 }; 150 151Required properties for PMC node: 152- reg : defines the IO memory reserved for the PMC. 153- #size-cells : shall be 0 (reg is used to encode clk id). 154- #address-cells : shall be 1 (reg is used to encode clk id). 155- interrupts : shall be set to PMC interrupt line. 156- interrupt-controller : tell that the PMC is an interrupt controller. 157- #interrupt-cells : must be set to 1. The first cell encodes the interrupt id, 158 and reflect the bit position in the PMC_ER/DR/SR registers. 159 You can use the dt macros defined in dt-bindings/clock/at91.h. 160 0 (AT91_PMC_MOSCS) -> main oscillator ready 161 1 (AT91_PMC_LOCKA) -> PLL A ready 162 2 (AT91_PMC_LOCKB) -> PLL B ready 163 3 (AT91_PMC_MCKRDY) -> master clock ready 164 6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready 165 8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready 166 16 (AT91_PMC_MOSCSELS) -> main oscillator selected 167 17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized 168 18 (AT91_PMC_CFDEV) -> clock failure detected 169 170For example: 171 pmc: pmc@fffffc00 { 172 compatible = "atmel,sama5d3-pmc"; 173 interrupts = <1 4 7>; 174 interrupt-controller; 175 #interrupt-cells = <2>; 176 #size-cells = <0>; 177 #address-cells = <1>; 178 179 /* put at91 clocks here */ 180 }; 181 182Required properties for main clock internal RC oscillator: 183- interrupt-parent : must reference the PMC node. 184- interrupts : shall be set to "<0>". 185- clock-frequency : define the internal RC oscillator frequency. 186 187Optional properties: 188- clock-accuracy : define the internal RC oscillator accuracy. 189 190For example: 191 main_rc_osc: main_rc_osc { 192 compatible = "atmel,at91sam9x5-clk-main-rc-osc"; 193 interrupt-parent = <&pmc>; 194 interrupts = <0>; 195 clock-frequency = <12000000>; 196 clock-accuracy = <50000000>; 197 }; 198 199Required properties for main clock oscillator: 200- interrupt-parent : must reference the PMC node. 201- interrupts : shall be set to "<0>". 202- #clock-cells : from common clock binding; shall be set to 0. 203- clocks : shall encode the main osc source clk sources (see atmel datasheet). 204 205Optional properties: 206- atmel,osc-bypass : boolean property. Specified if a clock signal is provided 207 on XIN. 208 209 clock signal is directly provided on XIN pin. 210 211For example: 212 main_osc: main_osc { 213 compatible = "atmel,at91rm9200-clk-main-osc"; 214 interrupt-parent = <&pmc>; 215 interrupts = <0>; 216 #clock-cells = <0>; 217 clocks = <&main_xtal>; 218 }; 219 220Required properties for main clock: 221- interrupt-parent : must reference the PMC node. 222- interrupts : shall be set to "<0>". 223- #clock-cells : from common clock binding; shall be set to 0. 224- clocks : shall encode the main clk sources (see atmel datasheet). 225 226For example: 227 main: mainck { 228 compatible = "atmel,at91sam9x5-clk-main"; 229 interrupt-parent = <&pmc>; 230 interrupts = <0>; 231 #clock-cells = <0>; 232 clocks = <&main_rc_osc &main_osc>; 233 }; 234 235Required properties for master clock: 236- interrupt-parent : must reference the PMC node. 237- interrupts : shall be set to "<3>". 238- #clock-cells : from common clock binding; shall be set to 0. 239- clocks : shall be the master clock sources (see atmel datasheet) phandles. 240 e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>". 241- atmel,clk-output-range : minimum and maximum clock frequency (two u32 242 fields). 243 e.g. output = <0 133000000>; <=> 0 to 133MHz. 244- atmel,clk-divisors : master clock divisors table (four u32 fields). 245 0 <=> reserved value. 246 e.g. divisors = <1 2 4 6>; 247- atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the 248 PRES field as CLOCK_DIV3 (e.g sam9x5). 249 250For example: 251 mck: mck { 252 compatible = "atmel,at91rm9200-clk-master"; 253 interrupt-parent = <&pmc>; 254 interrupts = <3>; 255 #clock-cells = <0>; 256 atmel,clk-output-range = <0 133000000>; 257 atmel,clk-divisors = <1 2 4 0>; 258 }; 259 260Required properties for peripheral clocks: 261- #size-cells : shall be 0 (reg is used to encode clk id). 262- #address-cells : shall be 1 (reg is used to encode clk id). 263- clocks : shall be the master clock phandle. 264 e.g. clocks = <&mck>; 265- name: device tree node describing a specific peripheral clock. 266 * #clock-cells : from common clock binding; shall be set to 0. 267 * reg: peripheral id. See Atmel's datasheets to get a full 268 list of peripheral ids. 269 * atmel,clk-output-range : minimum and maximum clock frequency 270 (two u32 fields). Only valid on at91sam9x5-clk-peripheral 271 compatible IPs. 272 273For example: 274 periph: periphck { 275 compatible = "atmel,at91sam9x5-clk-peripheral"; 276 #size-cells = <0>; 277 #address-cells = <1>; 278 clocks = <&mck>; 279 280 ssc0_clk { 281 #clock-cells = <0>; 282 reg = <2>; 283 atmel,clk-output-range = <0 133000000>; 284 }; 285 286 usart0_clk { 287 #clock-cells = <0>; 288 reg = <3>; 289 atmel,clk-output-range = <0 66000000>; 290 }; 291 }; 292 293 294Required properties for pll clocks: 295- interrupt-parent : must reference the PMC node. 296- interrupts : shall be set to "<1>". 297- #clock-cells : from common clock binding; shall be set to 0. 298- clocks : shall be the main clock phandle. 299- reg : pll id. 300 0 -> PLL A 301 1 -> PLL B 302- atmel,clk-input-range : minimum and maximum source clock frequency (two u32 303 fields). 304 e.g. input = <1 32000000>; <=> 1 to 32MHz. 305- #atmel,pll-clk-output-range-cells : number of cells reserved for pll output 306 range description. Sould be set to 2, 3 307 or 4. 308 * 1st and 2nd cells represent the frequency range (min-max). 309 * 3rd cell is optional and represents the OUT field value for the given 310 range. 311 * 4th cell is optional and represents the ICPLL field (PLLICPR 312 register) 313- atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter 314 depending on #atmel,pll-output-range-cells 315 property value. 316 317For example: 318 plla: pllack { 319 compatible = "atmel,at91sam9g45-clk-pll"; 320 interrupt-parent = <&pmc>; 321 interrupts = <1>; 322 #clock-cells = <0>; 323 clocks = <&main>; 324 reg = <0>; 325 atmel,clk-input-range = <2000000 32000000>; 326 #atmel,pll-clk-output-range-cells = <4>; 327 atmel,pll-clk-output-ranges = <74500000 800000000 0 0 328 69500000 750000000 1 0 329 64500000 700000000 2 0 330 59500000 650000000 3 0 331 54500000 600000000 0 1 332 49500000 550000000 1 1 333 44500000 500000000 2 1 334 40000000 450000000 3 1>; 335 }; 336 337Required properties for plldiv clocks (plldiv = pll / 2): 338- #clock-cells : from common clock binding; shall be set to 0. 339- clocks : shall be the plla clock phandle. 340 341The pll divisor is equal to 2 and cannot be changed. 342 343For example: 344 plladiv: plladivck { 345 compatible = "atmel,at91sam9x5-clk-plldiv"; 346 #clock-cells = <0>; 347 clocks = <&plla>; 348 }; 349 350Required properties for programmable clocks: 351- interrupt-parent : must reference the PMC node. 352- #size-cells : shall be 0 (reg is used to encode clk id). 353- #address-cells : shall be 1 (reg is used to encode clk id). 354- clocks : shall be the programmable clock source phandles. 355 e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>; 356- name: device tree node describing a specific prog clock. 357 * #clock-cells : from common clock binding; shall be set to 0. 358 * reg : programmable clock id (register offset from PCKx 359 register). 360 * interrupts : shall be set to "<(8 + id)>". 361 362For example: 363 prog: progck { 364 compatible = "atmel,at91sam9g45-clk-programmable"; 365 #size-cells = <0>; 366 #address-cells = <1>; 367 interrupt-parent = <&pmc>; 368 clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>; 369 370 prog0 { 371 #clock-cells = <0>; 372 reg = <0>; 373 interrupts = <8>; 374 }; 375 376 prog1 { 377 #clock-cells = <0>; 378 reg = <1>; 379 interrupts = <9>; 380 }; 381 }; 382 383 384Required properties for smd clock: 385- #clock-cells : from common clock binding; shall be set to 0. 386- clocks : shall be the smd clock source phandles. 387 e.g. clocks = <&plladiv>, <&utmi>; 388 389For example: 390 smd: smdck { 391 compatible = "atmel,at91sam9x5-clk-smd"; 392 #clock-cells = <0>; 393 clocks = <&plladiv>, <&utmi>; 394 }; 395 396Required properties for system clocks: 397- #size-cells : shall be 0 (reg is used to encode clk id). 398- #address-cells : shall be 1 (reg is used to encode clk id). 399- name: device tree node describing a specific system clock. 400 * #clock-cells : from common clock binding; shall be set to 0. 401 * reg: system clock id (bit position in SCER/SCDR/SCSR registers). 402 See Atmel's datasheet to get a full list of system clock ids. 403 404For example: 405 system: systemck { 406 compatible = "atmel,at91rm9200-clk-system"; 407 #address-cells = <1>; 408 #size-cells = <0>; 409 410 ddrck { 411 #clock-cells = <0>; 412 reg = <2>; 413 clocks = <&mck>; 414 }; 415 416 uhpck { 417 #clock-cells = <0>; 418 reg = <6>; 419 clocks = <&usb>; 420 }; 421 422 udpck { 423 #clock-cells = <0>; 424 reg = <7>; 425 clocks = <&usb>; 426 }; 427 }; 428 429 430Required properties for usb clock: 431- #clock-cells : from common clock binding; shall be set to 0. 432- clocks : shall be the smd clock source phandles. 433 e.g. clocks = <&pllb>; 434- atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"): 435 usb clock divisor table. 436 e.g. divisors = <1 2 4 0>; 437 438For example: 439 usb: usbck { 440 compatible = "atmel,at91sam9x5-clk-usb"; 441 #clock-cells = <0>; 442 clocks = <&plladiv>, <&utmi>; 443 }; 444 445 usb: usbck { 446 compatible = "atmel,at91rm9200-clk-usb"; 447 #clock-cells = <0>; 448 clocks = <&pllb>; 449 atmel,clk-divisors = <1 2 4 0>; 450 }; 451 452 453Required properties for utmi clock: 454- interrupt-parent : must reference the PMC node. 455- interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>". 456- #clock-cells : from common clock binding; shall be set to 0. 457- clocks : shall be the main clock source phandle. 458 459For example: 460 utmi: utmick { 461 compatible = "atmel,at91sam9x5-clk-utmi"; 462 interrupt-parent = <&pmc>; 463 interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>; 464 #clock-cells = <0>; 465 clocks = <&main>; 466 }; 467 468Required properties for 32 bits bus Matrix clock (h32mx clock): 469- #clock-cells : from common clock binding; shall be set to 0. 470- clocks : shall be the master clock source phandle. 471 472For example: 473 h32ck: h32mxck { 474 #clock-cells = <0>; 475 compatible = "atmel,sama5d4-clk-h32mx"; 476 clocks = <&mck>; 477 }; 478 479Required properties for generated clocks: 480- #size-cells : shall be 0 (reg is used to encode clk id). 481- #address-cells : shall be 1 (reg is used to encode clk id). 482- clocks : shall be the generated clock source phandles. 483 e.g. clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>; 484- name: device tree node describing a specific generated clock. 485 * #clock-cells : from common clock binding; shall be set to 0. 486 * reg: peripheral id. See Atmel's datasheets to get a full 487 list of peripheral ids. 488 * atmel,clk-output-range : minimum and maximum clock frequency 489 (two u32 fields). 490 491For example: 492 gck { 493 compatible = "atmel,sama5d2-clk-generated"; 494 #address-cells = <1>; 495 #size-cells = <0>; 496 clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>; 497 498 tcb0_gclk: tcb0_gclk { 499 #clock-cells = <0>; 500 reg = <35>; 501 atmel,clk-output-range = <0 83000000>; 502 }; 503 504 pwm_gclk: pwm_gclk { 505 #clock-cells = <0>; 506 reg = <38>; 507 atmel,clk-output-range = <0 83000000>; 508 }; 509 };