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

Merge tag 'devicetree-for-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull devicetree updates from Rob Herring:

- Update dtc to upstream v1.5.1-22-gc40aeb60b47a (plus 1 revert)

- Fix for DMA coherent devices on Power

- Rework and simplify the DT phandle cache code

- DT schema conversions for LEDS, gpio-leds, STM32 dfsdm, STM32 UART,
STM32 ROMEM, STM32 watchdog, STM32 DMAs, STM32 mlahb, STM32 RTC,
STM32 RCC, STM32 syscon, rs485, Renesas rCar CSI2, Faraday FTIDE010,
DWC2, Arm idle-states, Allwinner legacy resets, PRCM and clocks,
Allwinner H6 OPP, Allwinner AHCI, Allwinner MBUS, Allwinner A31 CSI,
Allwinner h/w codec, Allwinner A10 system ctrl, Allwinner SRAM,
Allwinner USB PHY, Renesas CEU, generic PCI host, Arm Versatile PCI

- New binding schemas for SATA and PATA controllers, TI and Infineon VR
controllers, MAX31730

- New compatible strings for i.MX8QM, WCN3991, renesas,r8a77961-wdt,
renesas,etheravb-r8a77961

- Add USB 'super-speed-plus' as a documented speed

- Vendor prefixes for broadmobi, calaosystems, kam, and mps

- Clean-up the multiple flavors of ST-Ericsson vendor prefixes

* tag 'devicetree-for-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (66 commits)
scripts/dtc: Revert "yamltree: Ensure consistent bracketing of properties with phandles"
of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc
dt-bindings: leds: Convert gpio-leds to DT schema
dt-bindings: leds: Convert common LED binding to schema
dt-bindings: PCI: Convert generic host binding to DT schema
dt-bindings: PCI: Convert Arm Versatile binding to DT schema
dt-bindings: Be explicit about installing deps
dt-bindings: stm32: convert dfsdm to json-schema
dt-bindings: serial: Convert STM32 UART to json-schema
dt-bindings: serial: Convert rs485 bindings to json-schema
dt-bindings: timer: Use non-empty ranges in example
dt-bindings: arm-boards: typo fix
dt-bindings: Add TI and Infineon VR Controllers as trivial devices
dt-binding: usb: add "super-speed-plus"
dt-bindings: rcar-csi2: Convert bindings to json-schema
dt-bindings: iio: adc: ad7606: Fix wrong maxItems value
dt-bindings: Convert Faraday FTIDE010 to DT schema
dt-bindings: Create DT bindings for PATA controllers
dt-bindings: Create DT bindings for SATA controllers
dt: bindings: add vendor prefix for Kamstrup A/S
...

+7605 -3330
+1 -1
Documentation/devicetree/bindings/arm/arm-boards
··· 121 121 Required nodes: 122 122 123 123 - soc: some node of the RealView platforms must be the SoC 124 - node that contain the SoC-specific devices, withe the compatible 124 + node that contain the SoC-specific devices, with the compatible 125 125 string set to one of these tuples: 126 126 "arm,realview-eb-soc", "simple-bus" 127 127 "arm,realview-pb1176-soc", "simple-bus"
-706
Documentation/devicetree/bindings/arm/idle-states.txt
··· 1 - ========================================== 2 - ARM idle states binding description 3 - ========================================== 4 - 5 - ========================================== 6 - 1 - Introduction 7 - ========================================== 8 - 9 - ARM systems contain HW capable of managing power consumption dynamically, 10 - where cores can be put in different low-power states (ranging from simple 11 - wfi to power gating) according to OS PM policies. The CPU states representing 12 - the range of dynamic idle states that a processor can enter at run-time, can be 13 - specified through device tree bindings representing the parameters required 14 - to enter/exit specific idle states on a given processor. 15 - 16 - According to the Server Base System Architecture document (SBSA, [3]), the 17 - power states an ARM CPU can be put into are identified by the following list: 18 - 19 - - Running 20 - - Idle_standby 21 - - Idle_retention 22 - - Sleep 23 - - Off 24 - 25 - The power states described in the SBSA document define the basic CPU states on 26 - top of which ARM platforms implement power management schemes that allow an OS 27 - PM implementation to put the processor in different idle states (which include 28 - states listed above; "off" state is not an idle state since it does not have 29 - wake-up capabilities, hence it is not considered in this document). 30 - 31 - Idle state parameters (e.g. entry latency) are platform specific and need to be 32 - characterized with bindings that provide the required information to OS PM 33 - code so that it can build the required tables and use them at runtime. 34 - 35 - The device tree binding definition for ARM idle states is the subject of this 36 - document. 37 - 38 - =========================================== 39 - 2 - idle-states definitions 40 - =========================================== 41 - 42 - Idle states are characterized for a specific system through a set of 43 - timing and energy related properties, that underline the HW behaviour 44 - triggered upon idle states entry and exit. 45 - 46 - The following diagram depicts the CPU execution phases and related timing 47 - properties required to enter and exit an idle state: 48 - 49 - ..__[EXEC]__|__[PREP]__|__[ENTRY]__|__[IDLE]__|__[EXIT]__|__[EXEC]__.. 50 - | | | | | 51 - 52 - |<------ entry ------->| 53 - | latency | 54 - |<- exit ->| 55 - | latency | 56 - |<-------- min-residency -------->| 57 - |<------- wakeup-latency ------->| 58 - 59 - Diagram 1: CPU idle state execution phases 60 - 61 - EXEC: Normal CPU execution. 62 - 63 - PREP: Preparation phase before committing the hardware to idle mode 64 - like cache flushing. This is abortable on pending wake-up 65 - event conditions. The abort latency is assumed to be negligible 66 - (i.e. less than the ENTRY + EXIT duration). If aborted, CPU 67 - goes back to EXEC. This phase is optional. If not abortable, 68 - this should be included in the ENTRY phase instead. 69 - 70 - ENTRY: The hardware is committed to idle mode. This period must run 71 - to completion up to IDLE before anything else can happen. 72 - 73 - IDLE: This is the actual energy-saving idle period. This may last 74 - between 0 and infinite time, until a wake-up event occurs. 75 - 76 - EXIT: Period during which the CPU is brought back to operational 77 - mode (EXEC). 78 - 79 - entry-latency: Worst case latency required to enter the idle state. The 80 - exit-latency may be guaranteed only after entry-latency has passed. 81 - 82 - min-residency: Minimum period, including preparation and entry, for a given 83 - idle state to be worthwhile energywise. 84 - 85 - wakeup-latency: Maximum delay between the signaling of a wake-up event and the 86 - CPU being able to execute normal code again. If not specified, this is assumed 87 - to be entry-latency + exit-latency. 88 - 89 - These timing parameters can be used by an OS in different circumstances. 90 - 91 - An idle CPU requires the expected min-residency time to select the most 92 - appropriate idle state based on the expected expiry time of the next IRQ 93 - (i.e. wake-up) that causes the CPU to return to the EXEC phase. 94 - 95 - An operating system scheduler may need to compute the shortest wake-up delay 96 - for CPUs in the system by detecting how long will it take to get a CPU out 97 - of an idle state, e.g.: 98 - 99 - wakeup-delay = exit-latency + max(entry-latency - (now - entry-timestamp), 0) 100 - 101 - In other words, the scheduler can make its scheduling decision by selecting 102 - (e.g. waking-up) the CPU with the shortest wake-up delay. 103 - The wake-up delay must take into account the entry latency if that period 104 - has not expired. The abortable nature of the PREP period can be ignored 105 - if it cannot be relied upon (e.g. the PREP deadline may occur much sooner than 106 - the worst case since it depends on the CPU operating conditions, i.e. caches 107 - state). 108 - 109 - An OS has to reliably probe the wakeup-latency since some devices can enforce 110 - latency constraint guarantees to work properly, so the OS has to detect the 111 - worst case wake-up latency it can incur if a CPU is allowed to enter an 112 - idle state, and possibly to prevent that to guarantee reliable device 113 - functioning. 114 - 115 - The min-residency time parameter deserves further explanation since it is 116 - expressed in time units but must factor in energy consumption coefficients. 117 - 118 - The energy consumption of a cpu when it enters a power state can be roughly 119 - characterised by the following graph: 120 - 121 - | 122 - | 123 - | 124 - e | 125 - n | /--- 126 - e | /------ 127 - r | /------ 128 - g | /----- 129 - y | /------ 130 - | ---- 131 - | /| 132 - | / | 133 - | / | 134 - | / | 135 - | / | 136 - | / | 137 - |/ | 138 - -----|-------+---------------------------------- 139 - 0| 1 time(ms) 140 - 141 - Graph 1: Energy vs time example 142 - 143 - The graph is split in two parts delimited by time 1ms on the X-axis. 144 - The graph curve with X-axis values = { x | 0 < x < 1ms } has a steep slope 145 - and denotes the energy costs incurred while entering and leaving the idle 146 - state. 147 - The graph curve in the area delimited by X-axis values = {x | x > 1ms } has 148 - shallower slope and essentially represents the energy consumption of the idle 149 - state. 150 - 151 - min-residency is defined for a given idle state as the minimum expected 152 - residency time for a state (inclusive of preparation and entry) after 153 - which choosing that state become the most energy efficient option. A good 154 - way to visualise this, is by taking the same graph above and comparing some 155 - states energy consumptions plots. 156 - 157 - For sake of simplicity, let's consider a system with two idle states IDLE1, 158 - and IDLE2: 159 - 160 - | 161 - | 162 - | 163 - | /-- IDLE1 164 - e | /--- 165 - n | /---- 166 - e | /--- 167 - r | /-----/--------- IDLE2 168 - g | /-------/--------- 169 - y | ------------ /---| 170 - | / /---- | 171 - | / /--- | 172 - | / /---- | 173 - | / /--- | 174 - | --- | 175 - | / | 176 - | / | 177 - |/ | time 178 - ---/----------------------------+------------------------ 179 - |IDLE1-energy < IDLE2-energy | IDLE2-energy < IDLE1-energy 180 - | 181 - IDLE2-min-residency 182 - 183 - Graph 2: idle states min-residency example 184 - 185 - In graph 2 above, that takes into account idle states entry/exit energy 186 - costs, it is clear that if the idle state residency time (i.e. time till next 187 - wake-up IRQ) is less than IDLE2-min-residency, IDLE1 is the better idle state 188 - choice energywise. 189 - 190 - This is mainly down to the fact that IDLE1 entry/exit energy costs are lower 191 - than IDLE2. 192 - 193 - However, the lower power consumption (i.e. shallower energy curve slope) of 194 - idle state IDLE2 implies that after a suitable time, IDLE2 becomes more energy 195 - efficient. 196 - 197 - The time at which IDLE2 becomes more energy efficient than IDLE1 (and other 198 - shallower states in a system with multiple idle states) is defined 199 - IDLE2-min-residency and corresponds to the time when energy consumption of 200 - IDLE1 and IDLE2 states breaks even. 201 - 202 - The definitions provided in this section underpin the idle states 203 - properties specification that is the subject of the following sections. 204 - 205 - =========================================== 206 - 3 - idle-states node 207 - =========================================== 208 - 209 - ARM processor idle states are defined within the idle-states node, which is 210 - a direct child of the cpus node [1] and provides a container where the 211 - processor idle states, defined as device tree nodes, are listed. 212 - 213 - - idle-states node 214 - 215 - Usage: Optional - On ARM systems, it is a container of processor idle 216 - states nodes. If the system does not provide CPU 217 - power management capabilities, or the processor just 218 - supports idle_standby, an idle-states node is not 219 - required. 220 - 221 - Description: idle-states node is a container node, where its 222 - subnodes describe the CPU idle states. 223 - 224 - Node name must be "idle-states". 225 - 226 - The idle-states node's parent node must be the cpus node. 227 - 228 - The idle-states node's child nodes can be: 229 - 230 - - one or more state nodes 231 - 232 - Any other configuration is considered invalid. 233 - 234 - An idle-states node defines the following properties: 235 - 236 - - entry-method 237 - Value type: <stringlist> 238 - Usage and definition depend on ARM architecture version. 239 - # On ARM v8 64-bit this property is required and must 240 - be: 241 - - "psci" 242 - # On ARM 32-bit systems this property is optional 243 - 244 - This assumes that the "enable-method" property is set to "psci" in the cpu 245 - node[6] that is responsible for setting up CPU idle management in the OS 246 - implementation. 247 - 248 - The nodes describing the idle states (state) can only be defined 249 - within the idle-states node, any other configuration is considered invalid 250 - and therefore must be ignored. 251 - 252 - =========================================== 253 - 4 - state node 254 - =========================================== 255 - 256 - A state node represents an idle state description and must be defined as 257 - follows: 258 - 259 - - state node 260 - 261 - Description: must be child of the idle-states node 262 - 263 - The state node name shall follow standard device tree naming 264 - rules ([5], 2.2.1 "Node names"), in particular state nodes which 265 - are siblings within a single common parent must be given a unique name. 266 - 267 - The idle state entered by executing the wfi instruction (idle_standby 268 - SBSA,[3][4]) is considered standard on all ARM platforms and therefore 269 - must not be listed. 270 - 271 - With the definitions provided above, the following list represents 272 - the valid properties for a state node: 273 - 274 - - compatible 275 - Usage: Required 276 - Value type: <stringlist> 277 - Definition: Must be "arm,idle-state". 278 - 279 - - local-timer-stop 280 - Usage: See definition 281 - Value type: <none> 282 - Definition: if present the CPU local timer control logic is 283 - lost on state entry, otherwise it is retained. 284 - 285 - - entry-latency-us 286 - Usage: Required 287 - Value type: <prop-encoded-array> 288 - Definition: u32 value representing worst case latency in 289 - microseconds required to enter the idle state. 290 - 291 - - exit-latency-us 292 - Usage: Required 293 - Value type: <prop-encoded-array> 294 - Definition: u32 value representing worst case latency 295 - in microseconds required to exit the idle state. 296 - The exit-latency-us duration may be guaranteed 297 - only after entry-latency-us has passed. 298 - 299 - - min-residency-us 300 - Usage: Required 301 - Value type: <prop-encoded-array> 302 - Definition: u32 value representing minimum residency duration 303 - in microseconds, inclusive of preparation and 304 - entry, for this idle state to be considered 305 - worthwhile energy wise (refer to section 2 of 306 - this document for a complete description). 307 - 308 - - wakeup-latency-us: 309 - Usage: Optional 310 - Value type: <prop-encoded-array> 311 - Definition: u32 value representing maximum delay between the 312 - signaling of a wake-up event and the CPU being 313 - able to execute normal code again. If omitted, 314 - this is assumed to be equal to: 315 - 316 - entry-latency-us + exit-latency-us 317 - 318 - It is important to supply this value on systems 319 - where the duration of PREP phase (see diagram 1, 320 - section 2) is non-neglibigle. 321 - In such systems entry-latency-us + exit-latency-us 322 - will exceed wakeup-latency-us by this duration. 323 - 324 - - status: 325 - Usage: Optional 326 - Value type: <string> 327 - Definition: A standard device tree property [5] that indicates 328 - the operational status of an idle-state. 329 - If present, it shall be: 330 - "okay": to indicate that the idle state is 331 - operational. 332 - "disabled": to indicate that the idle state has 333 - been disabled in firmware so it is not 334 - operational. 335 - If the property is not present the idle-state must 336 - be considered operational. 337 - 338 - - idle-state-name: 339 - Usage: Optional 340 - Value type: <string> 341 - Definition: A string used as a descriptive name for the idle 342 - state. 343 - 344 - In addition to the properties listed above, a state node may require 345 - additional properties specific to the entry-method defined in the 346 - idle-states node. Please refer to the entry-method bindings 347 - documentation for properties definitions. 348 - 349 - =========================================== 350 - 4 - Examples 351 - =========================================== 352 - 353 - Example 1 (ARM 64-bit, 16-cpu system, PSCI enable-method): 354 - 355 - cpus { 356 - #size-cells = <0>; 357 - #address-cells = <2>; 358 - 359 - CPU0: cpu@0 { 360 - device_type = "cpu"; 361 - compatible = "arm,cortex-a57"; 362 - reg = <0x0 0x0>; 363 - enable-method = "psci"; 364 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 365 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 366 - }; 367 - 368 - CPU1: cpu@1 { 369 - device_type = "cpu"; 370 - compatible = "arm,cortex-a57"; 371 - reg = <0x0 0x1>; 372 - enable-method = "psci"; 373 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 374 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 375 - }; 376 - 377 - CPU2: cpu@100 { 378 - device_type = "cpu"; 379 - compatible = "arm,cortex-a57"; 380 - reg = <0x0 0x100>; 381 - enable-method = "psci"; 382 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 383 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 384 - }; 385 - 386 - CPU3: cpu@101 { 387 - device_type = "cpu"; 388 - compatible = "arm,cortex-a57"; 389 - reg = <0x0 0x101>; 390 - enable-method = "psci"; 391 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 392 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 393 - }; 394 - 395 - CPU4: cpu@10000 { 396 - device_type = "cpu"; 397 - compatible = "arm,cortex-a57"; 398 - reg = <0x0 0x10000>; 399 - enable-method = "psci"; 400 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 401 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 402 - }; 403 - 404 - CPU5: cpu@10001 { 405 - device_type = "cpu"; 406 - compatible = "arm,cortex-a57"; 407 - reg = <0x0 0x10001>; 408 - enable-method = "psci"; 409 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 410 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 411 - }; 412 - 413 - CPU6: cpu@10100 { 414 - device_type = "cpu"; 415 - compatible = "arm,cortex-a57"; 416 - reg = <0x0 0x10100>; 417 - enable-method = "psci"; 418 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 419 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 420 - }; 421 - 422 - CPU7: cpu@10101 { 423 - device_type = "cpu"; 424 - compatible = "arm,cortex-a57"; 425 - reg = <0x0 0x10101>; 426 - enable-method = "psci"; 427 - cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 428 - &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 429 - }; 430 - 431 - CPU8: cpu@100000000 { 432 - device_type = "cpu"; 433 - compatible = "arm,cortex-a53"; 434 - reg = <0x1 0x0>; 435 - enable-method = "psci"; 436 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 437 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 438 - }; 439 - 440 - CPU9: cpu@100000001 { 441 - device_type = "cpu"; 442 - compatible = "arm,cortex-a53"; 443 - reg = <0x1 0x1>; 444 - enable-method = "psci"; 445 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 446 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 447 - }; 448 - 449 - CPU10: cpu@100000100 { 450 - device_type = "cpu"; 451 - compatible = "arm,cortex-a53"; 452 - reg = <0x1 0x100>; 453 - enable-method = "psci"; 454 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 455 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 456 - }; 457 - 458 - CPU11: cpu@100000101 { 459 - device_type = "cpu"; 460 - compatible = "arm,cortex-a53"; 461 - reg = <0x1 0x101>; 462 - enable-method = "psci"; 463 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 464 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 465 - }; 466 - 467 - CPU12: cpu@100010000 { 468 - device_type = "cpu"; 469 - compatible = "arm,cortex-a53"; 470 - reg = <0x1 0x10000>; 471 - enable-method = "psci"; 472 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 473 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 474 - }; 475 - 476 - CPU13: cpu@100010001 { 477 - device_type = "cpu"; 478 - compatible = "arm,cortex-a53"; 479 - reg = <0x1 0x10001>; 480 - enable-method = "psci"; 481 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 482 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 483 - }; 484 - 485 - CPU14: cpu@100010100 { 486 - device_type = "cpu"; 487 - compatible = "arm,cortex-a53"; 488 - reg = <0x1 0x10100>; 489 - enable-method = "psci"; 490 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 491 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 492 - }; 493 - 494 - CPU15: cpu@100010101 { 495 - device_type = "cpu"; 496 - compatible = "arm,cortex-a53"; 497 - reg = <0x1 0x10101>; 498 - enable-method = "psci"; 499 - cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 500 - &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 501 - }; 502 - 503 - idle-states { 504 - entry-method = "psci"; 505 - 506 - CPU_RETENTION_0_0: cpu-retention-0-0 { 507 - compatible = "arm,idle-state"; 508 - arm,psci-suspend-param = <0x0010000>; 509 - entry-latency-us = <20>; 510 - exit-latency-us = <40>; 511 - min-residency-us = <80>; 512 - }; 513 - 514 - CLUSTER_RETENTION_0: cluster-retention-0 { 515 - compatible = "arm,idle-state"; 516 - local-timer-stop; 517 - arm,psci-suspend-param = <0x1010000>; 518 - entry-latency-us = <50>; 519 - exit-latency-us = <100>; 520 - min-residency-us = <250>; 521 - wakeup-latency-us = <130>; 522 - }; 523 - 524 - CPU_SLEEP_0_0: cpu-sleep-0-0 { 525 - compatible = "arm,idle-state"; 526 - local-timer-stop; 527 - arm,psci-suspend-param = <0x0010000>; 528 - entry-latency-us = <250>; 529 - exit-latency-us = <500>; 530 - min-residency-us = <950>; 531 - }; 532 - 533 - CLUSTER_SLEEP_0: cluster-sleep-0 { 534 - compatible = "arm,idle-state"; 535 - local-timer-stop; 536 - arm,psci-suspend-param = <0x1010000>; 537 - entry-latency-us = <600>; 538 - exit-latency-us = <1100>; 539 - min-residency-us = <2700>; 540 - wakeup-latency-us = <1500>; 541 - }; 542 - 543 - CPU_RETENTION_1_0: cpu-retention-1-0 { 544 - compatible = "arm,idle-state"; 545 - arm,psci-suspend-param = <0x0010000>; 546 - entry-latency-us = <20>; 547 - exit-latency-us = <40>; 548 - min-residency-us = <90>; 549 - }; 550 - 551 - CLUSTER_RETENTION_1: cluster-retention-1 { 552 - compatible = "arm,idle-state"; 553 - local-timer-stop; 554 - arm,psci-suspend-param = <0x1010000>; 555 - entry-latency-us = <50>; 556 - exit-latency-us = <100>; 557 - min-residency-us = <270>; 558 - wakeup-latency-us = <100>; 559 - }; 560 - 561 - CPU_SLEEP_1_0: cpu-sleep-1-0 { 562 - compatible = "arm,idle-state"; 563 - local-timer-stop; 564 - arm,psci-suspend-param = <0x0010000>; 565 - entry-latency-us = <70>; 566 - exit-latency-us = <100>; 567 - min-residency-us = <300>; 568 - wakeup-latency-us = <150>; 569 - }; 570 - 571 - CLUSTER_SLEEP_1: cluster-sleep-1 { 572 - compatible = "arm,idle-state"; 573 - local-timer-stop; 574 - arm,psci-suspend-param = <0x1010000>; 575 - entry-latency-us = <500>; 576 - exit-latency-us = <1200>; 577 - min-residency-us = <3500>; 578 - wakeup-latency-us = <1300>; 579 - }; 580 - }; 581 - 582 - }; 583 - 584 - Example 2 (ARM 32-bit, 8-cpu system, two clusters): 585 - 586 - cpus { 587 - #size-cells = <0>; 588 - #address-cells = <1>; 589 - 590 - CPU0: cpu@0 { 591 - device_type = "cpu"; 592 - compatible = "arm,cortex-a15"; 593 - reg = <0x0>; 594 - cpu-idle-states = <&CPU_SLEEP_0_0 &CLUSTER_SLEEP_0>; 595 - }; 596 - 597 - CPU1: cpu@1 { 598 - device_type = "cpu"; 599 - compatible = "arm,cortex-a15"; 600 - reg = <0x1>; 601 - cpu-idle-states = <&CPU_SLEEP_0_0 &CLUSTER_SLEEP_0>; 602 - }; 603 - 604 - CPU2: cpu@2 { 605 - device_type = "cpu"; 606 - compatible = "arm,cortex-a15"; 607 - reg = <0x2>; 608 - cpu-idle-states = <&CPU_SLEEP_0_0 &CLUSTER_SLEEP_0>; 609 - }; 610 - 611 - CPU3: cpu@3 { 612 - device_type = "cpu"; 613 - compatible = "arm,cortex-a15"; 614 - reg = <0x3>; 615 - cpu-idle-states = <&CPU_SLEEP_0_0 &CLUSTER_SLEEP_0>; 616 - }; 617 - 618 - CPU4: cpu@100 { 619 - device_type = "cpu"; 620 - compatible = "arm,cortex-a7"; 621 - reg = <0x100>; 622 - cpu-idle-states = <&CPU_SLEEP_1_0 &CLUSTER_SLEEP_1>; 623 - }; 624 - 625 - CPU5: cpu@101 { 626 - device_type = "cpu"; 627 - compatible = "arm,cortex-a7"; 628 - reg = <0x101>; 629 - cpu-idle-states = <&CPU_SLEEP_1_0 &CLUSTER_SLEEP_1>; 630 - }; 631 - 632 - CPU6: cpu@102 { 633 - device_type = "cpu"; 634 - compatible = "arm,cortex-a7"; 635 - reg = <0x102>; 636 - cpu-idle-states = <&CPU_SLEEP_1_0 &CLUSTER_SLEEP_1>; 637 - }; 638 - 639 - CPU7: cpu@103 { 640 - device_type = "cpu"; 641 - compatible = "arm,cortex-a7"; 642 - reg = <0x103>; 643 - cpu-idle-states = <&CPU_SLEEP_1_0 &CLUSTER_SLEEP_1>; 644 - }; 645 - 646 - idle-states { 647 - CPU_SLEEP_0_0: cpu-sleep-0-0 { 648 - compatible = "arm,idle-state"; 649 - local-timer-stop; 650 - entry-latency-us = <200>; 651 - exit-latency-us = <100>; 652 - min-residency-us = <400>; 653 - wakeup-latency-us = <250>; 654 - }; 655 - 656 - CLUSTER_SLEEP_0: cluster-sleep-0 { 657 - compatible = "arm,idle-state"; 658 - local-timer-stop; 659 - entry-latency-us = <500>; 660 - exit-latency-us = <1500>; 661 - min-residency-us = <2500>; 662 - wakeup-latency-us = <1700>; 663 - }; 664 - 665 - CPU_SLEEP_1_0: cpu-sleep-1-0 { 666 - compatible = "arm,idle-state"; 667 - local-timer-stop; 668 - entry-latency-us = <300>; 669 - exit-latency-us = <500>; 670 - min-residency-us = <900>; 671 - wakeup-latency-us = <600>; 672 - }; 673 - 674 - CLUSTER_SLEEP_1: cluster-sleep-1 { 675 - compatible = "arm,idle-state"; 676 - local-timer-stop; 677 - entry-latency-us = <800>; 678 - exit-latency-us = <2000>; 679 - min-residency-us = <6500>; 680 - wakeup-latency-us = <2300>; 681 - }; 682 - }; 683 - 684 - }; 685 - 686 - =========================================== 687 - 5 - References 688 - =========================================== 689 - 690 - [1] ARM Linux Kernel documentation - CPUs bindings 691 - Documentation/devicetree/bindings/arm/cpus.yaml 692 - 693 - [2] ARM Linux Kernel documentation - PSCI bindings 694 - Documentation/devicetree/bindings/arm/psci.yaml 695 - 696 - [3] ARM Server Base System Architecture (SBSA) 697 - http://infocenter.arm.com/help/index.jsp 698 - 699 - [4] ARM Architecture Reference Manuals 700 - http://infocenter.arm.com/help/index.jsp 701 - 702 - [5] Devicetree Specification 703 - https://www.devicetree.org/specifications/ 704 - 705 - [6] ARM Linux Kernel documentation - Booting AArch64 Linux 706 - Documentation/arm64/booting.rst
+661
Documentation/devicetree/bindings/arm/idle-states.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/idle-states.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: ARM idle states binding description 8 + 9 + maintainers: 10 + - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 11 + 12 + description: |+ 13 + ========================================== 14 + 1 - Introduction 15 + ========================================== 16 + 17 + ARM systems contain HW capable of managing power consumption dynamically, 18 + where cores can be put in different low-power states (ranging from simple wfi 19 + to power gating) according to OS PM policies. The CPU states representing the 20 + range of dynamic idle states that a processor can enter at run-time, can be 21 + specified through device tree bindings representing the parameters required to 22 + enter/exit specific idle states on a given processor. 23 + 24 + According to the Server Base System Architecture document (SBSA, [3]), the 25 + power states an ARM CPU can be put into are identified by the following list: 26 + 27 + - Running 28 + - Idle_standby 29 + - Idle_retention 30 + - Sleep 31 + - Off 32 + 33 + The power states described in the SBSA document define the basic CPU states on 34 + top of which ARM platforms implement power management schemes that allow an OS 35 + PM implementation to put the processor in different idle states (which include 36 + states listed above; "off" state is not an idle state since it does not have 37 + wake-up capabilities, hence it is not considered in this document). 38 + 39 + Idle state parameters (e.g. entry latency) are platform specific and need to 40 + be characterized with bindings that provide the required information to OS PM 41 + code so that it can build the required tables and use them at runtime. 42 + 43 + The device tree binding definition for ARM idle states is the subject of this 44 + document. 45 + 46 + =========================================== 47 + 2 - idle-states definitions 48 + =========================================== 49 + 50 + Idle states are characterized for a specific system through a set of 51 + timing and energy related properties, that underline the HW behaviour 52 + triggered upon idle states entry and exit. 53 + 54 + The following diagram depicts the CPU execution phases and related timing 55 + properties required to enter and exit an idle state: 56 + 57 + ..__[EXEC]__|__[PREP]__|__[ENTRY]__|__[IDLE]__|__[EXIT]__|__[EXEC]__.. 58 + | | | | | 59 + 60 + |<------ entry ------->| 61 + | latency | 62 + |<- exit ->| 63 + | latency | 64 + |<-------- min-residency -------->| 65 + |<------- wakeup-latency ------->| 66 + 67 + Diagram 1: CPU idle state execution phases 68 + 69 + EXEC: Normal CPU execution. 70 + 71 + PREP: Preparation phase before committing the hardware to idle mode 72 + like cache flushing. This is abortable on pending wake-up 73 + event conditions. The abort latency is assumed to be negligible 74 + (i.e. less than the ENTRY + EXIT duration). If aborted, CPU 75 + goes back to EXEC. This phase is optional. If not abortable, 76 + this should be included in the ENTRY phase instead. 77 + 78 + ENTRY: The hardware is committed to idle mode. This period must run 79 + to completion up to IDLE before anything else can happen. 80 + 81 + IDLE: This is the actual energy-saving idle period. This may last 82 + between 0 and infinite time, until a wake-up event occurs. 83 + 84 + EXIT: Period during which the CPU is brought back to operational 85 + mode (EXEC). 86 + 87 + entry-latency: Worst case latency required to enter the idle state. The 88 + exit-latency may be guaranteed only after entry-latency has passed. 89 + 90 + min-residency: Minimum period, including preparation and entry, for a given 91 + idle state to be worthwhile energywise. 92 + 93 + wakeup-latency: Maximum delay between the signaling of a wake-up event and the 94 + CPU being able to execute normal code again. If not specified, this is assumed 95 + to be entry-latency + exit-latency. 96 + 97 + These timing parameters can be used by an OS in different circumstances. 98 + 99 + An idle CPU requires the expected min-residency time to select the most 100 + appropriate idle state based on the expected expiry time of the next IRQ 101 + (i.e. wake-up) that causes the CPU to return to the EXEC phase. 102 + 103 + An operating system scheduler may need to compute the shortest wake-up delay 104 + for CPUs in the system by detecting how long will it take to get a CPU out 105 + of an idle state, e.g.: 106 + 107 + wakeup-delay = exit-latency + max(entry-latency - (now - entry-timestamp), 0) 108 + 109 + In other words, the scheduler can make its scheduling decision by selecting 110 + (e.g. waking-up) the CPU with the shortest wake-up delay. 111 + The wake-up delay must take into account the entry latency if that period 112 + has not expired. The abortable nature of the PREP period can be ignored 113 + if it cannot be relied upon (e.g. the PREP deadline may occur much sooner than 114 + the worst case since it depends on the CPU operating conditions, i.e. caches 115 + state). 116 + 117 + An OS has to reliably probe the wakeup-latency since some devices can enforce 118 + latency constraint guarantees to work properly, so the OS has to detect the 119 + worst case wake-up latency it can incur if a CPU is allowed to enter an 120 + idle state, and possibly to prevent that to guarantee reliable device 121 + functioning. 122 + 123 + The min-residency time parameter deserves further explanation since it is 124 + expressed in time units but must factor in energy consumption coefficients. 125 + 126 + The energy consumption of a cpu when it enters a power state can be roughly 127 + characterised by the following graph: 128 + 129 + | 130 + | 131 + | 132 + e | 133 + n | /--- 134 + e | /------ 135 + r | /------ 136 + g | /----- 137 + y | /------ 138 + | ---- 139 + | /| 140 + | / | 141 + | / | 142 + | / | 143 + | / | 144 + | / | 145 + |/ | 146 + -----|-------+---------------------------------- 147 + 0| 1 time(ms) 148 + 149 + Graph 1: Energy vs time example 150 + 151 + The graph is split in two parts delimited by time 1ms on the X-axis. 152 + The graph curve with X-axis values = { x | 0 < x < 1ms } has a steep slope 153 + and denotes the energy costs incurred while entering and leaving the idle 154 + state. 155 + The graph curve in the area delimited by X-axis values = {x | x > 1ms } has 156 + shallower slope and essentially represents the energy consumption of the idle 157 + state. 158 + 159 + min-residency is defined for a given idle state as the minimum expected 160 + residency time for a state (inclusive of preparation and entry) after 161 + which choosing that state become the most energy efficient option. A good 162 + way to visualise this, is by taking the same graph above and comparing some 163 + states energy consumptions plots. 164 + 165 + For sake of simplicity, let's consider a system with two idle states IDLE1, 166 + and IDLE2: 167 + 168 + | 169 + | 170 + | 171 + | /-- IDLE1 172 + e | /--- 173 + n | /---- 174 + e | /--- 175 + r | /-----/--------- IDLE2 176 + g | /-------/--------- 177 + y | ------------ /---| 178 + | / /---- | 179 + | / /--- | 180 + | / /---- | 181 + | / /--- | 182 + | --- | 183 + | / | 184 + | / | 185 + |/ | time 186 + ---/----------------------------+------------------------ 187 + |IDLE1-energy < IDLE2-energy | IDLE2-energy < IDLE1-energy 188 + | 189 + IDLE2-min-residency 190 + 191 + Graph 2: idle states min-residency example 192 + 193 + In graph 2 above, that takes into account idle states entry/exit energy 194 + costs, it is clear that if the idle state residency time (i.e. time till next 195 + wake-up IRQ) is less than IDLE2-min-residency, IDLE1 is the better idle state 196 + choice energywise. 197 + 198 + This is mainly down to the fact that IDLE1 entry/exit energy costs are lower 199 + than IDLE2. 200 + 201 + However, the lower power consumption (i.e. shallower energy curve slope) of 202 + idle state IDLE2 implies that after a suitable time, IDLE2 becomes more energy 203 + efficient. 204 + 205 + The time at which IDLE2 becomes more energy efficient than IDLE1 (and other 206 + shallower states in a system with multiple idle states) is defined 207 + IDLE2-min-residency and corresponds to the time when energy consumption of 208 + IDLE1 and IDLE2 states breaks even. 209 + 210 + The definitions provided in this section underpin the idle states 211 + properties specification that is the subject of the following sections. 212 + 213 + =========================================== 214 + 3 - idle-states node 215 + =========================================== 216 + 217 + ARM processor idle states are defined within the idle-states node, which is 218 + a direct child of the cpus node [1] and provides a container where the 219 + processor idle states, defined as device tree nodes, are listed. 220 + 221 + On ARM systems, it is a container of processor idle states nodes. If the 222 + system does not provide CPU power management capabilities, or the processor 223 + just supports idle_standby, an idle-states node is not required. 224 + 225 + =========================================== 226 + 4 - References 227 + =========================================== 228 + 229 + [1] ARM Linux Kernel documentation - CPUs bindings 230 + Documentation/devicetree/bindings/arm/cpus.yaml 231 + 232 + [2] ARM Linux Kernel documentation - PSCI bindings 233 + Documentation/devicetree/bindings/arm/psci.yaml 234 + 235 + [3] ARM Server Base System Architecture (SBSA) 236 + http://infocenter.arm.com/help/index.jsp 237 + 238 + [4] ARM Architecture Reference Manuals 239 + http://infocenter.arm.com/help/index.jsp 240 + 241 + [6] ARM Linux Kernel documentation - Booting AArch64 Linux 242 + Documentation/arm64/booting.rst 243 + 244 + properties: 245 + $nodename: 246 + const: idle-states 247 + 248 + entry-method: 249 + description: | 250 + Usage and definition depend on ARM architecture version. 251 + 252 + On ARM v8 64-bit this property is required. 253 + On ARM 32-bit systems this property is optional 254 + 255 + This assumes that the "enable-method" property is set to "psci" in the cpu 256 + node[6] that is responsible for setting up CPU idle management in the OS 257 + implementation. 258 + const: psci 259 + 260 + patternProperties: 261 + "^(cpu|cluster)-": 262 + type: object 263 + description: | 264 + Each state node represents an idle state description and must be defined 265 + as follows. 266 + 267 + The idle state entered by executing the wfi instruction (idle_standby 268 + SBSA,[3][4]) is considered standard on all ARM platforms and therefore 269 + must not be listed. 270 + 271 + In addition to the properties listed above, a state node may require 272 + additional properties specific to the entry-method defined in the 273 + idle-states node. Please refer to the entry-method bindings 274 + documentation for properties definitions. 275 + 276 + properties: 277 + compatible: 278 + const: arm,idle-state 279 + 280 + local-timer-stop: 281 + description: 282 + If present the CPU local timer control logic is 283 + lost on state entry, otherwise it is retained. 284 + type: boolean 285 + 286 + entry-latency-us: 287 + description: 288 + Worst case latency in microseconds required to enter the idle state. 289 + 290 + exit-latency-us: 291 + description: 292 + Worst case latency in microseconds required to exit the idle state. 293 + The exit-latency-us duration may be guaranteed only after 294 + entry-latency-us has passed. 295 + 296 + min-residency-us: 297 + description: 298 + Minimum residency duration in microseconds, inclusive of preparation 299 + and entry, for this idle state to be considered worthwhile energy wise 300 + (refer to section 2 of this document for a complete description). 301 + 302 + wakeup-latency-us: 303 + description: | 304 + Maximum delay between the signaling of a wake-up event and the CPU 305 + being able to execute normal code again. If omitted, this is assumed 306 + to be equal to: 307 + 308 + entry-latency-us + exit-latency-us 309 + 310 + It is important to supply this value on systems where the duration of 311 + PREP phase (see diagram 1, section 2) is non-neglibigle. In such 312 + systems entry-latency-us + exit-latency-us will exceed 313 + wakeup-latency-us by this duration. 314 + 315 + idle-state-name: 316 + $ref: /schemas/types.yaml#definitions/string 317 + description: 318 + A string used as a descriptive name for the idle state. 319 + 320 + required: 321 + - compatible 322 + - entry-latency-us 323 + - exit-latency-us 324 + - min-residency-us 325 + 326 + additionalProperties: false 327 + 328 + examples: 329 + - | 330 + 331 + cpus { 332 + #size-cells = <0>; 333 + #address-cells = <2>; 334 + 335 + cpu@0 { 336 + device_type = "cpu"; 337 + compatible = "arm,cortex-a57"; 338 + reg = <0x0 0x0>; 339 + enable-method = "psci"; 340 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 341 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 342 + }; 343 + 344 + cpu@1 { 345 + device_type = "cpu"; 346 + compatible = "arm,cortex-a57"; 347 + reg = <0x0 0x1>; 348 + enable-method = "psci"; 349 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 350 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 351 + }; 352 + 353 + cpu@100 { 354 + device_type = "cpu"; 355 + compatible = "arm,cortex-a57"; 356 + reg = <0x0 0x100>; 357 + enable-method = "psci"; 358 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 359 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 360 + }; 361 + 362 + cpu@101 { 363 + device_type = "cpu"; 364 + compatible = "arm,cortex-a57"; 365 + reg = <0x0 0x101>; 366 + enable-method = "psci"; 367 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 368 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 369 + }; 370 + 371 + cpu@10000 { 372 + device_type = "cpu"; 373 + compatible = "arm,cortex-a57"; 374 + reg = <0x0 0x10000>; 375 + enable-method = "psci"; 376 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 377 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 378 + }; 379 + 380 + cpu@10001 { 381 + device_type = "cpu"; 382 + compatible = "arm,cortex-a57"; 383 + reg = <0x0 0x10001>; 384 + enable-method = "psci"; 385 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 386 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 387 + }; 388 + 389 + cpu@10100 { 390 + device_type = "cpu"; 391 + compatible = "arm,cortex-a57"; 392 + reg = <0x0 0x10100>; 393 + enable-method = "psci"; 394 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 395 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 396 + }; 397 + 398 + cpu@10101 { 399 + device_type = "cpu"; 400 + compatible = "arm,cortex-a57"; 401 + reg = <0x0 0x10101>; 402 + enable-method = "psci"; 403 + cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0 404 + &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>; 405 + }; 406 + 407 + cpu@100000000 { 408 + device_type = "cpu"; 409 + compatible = "arm,cortex-a53"; 410 + reg = <0x1 0x0>; 411 + enable-method = "psci"; 412 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 413 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 414 + }; 415 + 416 + cpu@100000001 { 417 + device_type = "cpu"; 418 + compatible = "arm,cortex-a53"; 419 + reg = <0x1 0x1>; 420 + enable-method = "psci"; 421 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 422 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 423 + }; 424 + 425 + cpu@100000100 { 426 + device_type = "cpu"; 427 + compatible = "arm,cortex-a53"; 428 + reg = <0x1 0x100>; 429 + enable-method = "psci"; 430 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 431 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 432 + }; 433 + 434 + cpu@100000101 { 435 + device_type = "cpu"; 436 + compatible = "arm,cortex-a53"; 437 + reg = <0x1 0x101>; 438 + enable-method = "psci"; 439 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 440 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 441 + }; 442 + 443 + cpu@100010000 { 444 + device_type = "cpu"; 445 + compatible = "arm,cortex-a53"; 446 + reg = <0x1 0x10000>; 447 + enable-method = "psci"; 448 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 449 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 450 + }; 451 + 452 + cpu@100010001 { 453 + device_type = "cpu"; 454 + compatible = "arm,cortex-a53"; 455 + reg = <0x1 0x10001>; 456 + enable-method = "psci"; 457 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 458 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 459 + }; 460 + 461 + cpu@100010100 { 462 + device_type = "cpu"; 463 + compatible = "arm,cortex-a53"; 464 + reg = <0x1 0x10100>; 465 + enable-method = "psci"; 466 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 467 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 468 + }; 469 + 470 + cpu@100010101 { 471 + device_type = "cpu"; 472 + compatible = "arm,cortex-a53"; 473 + reg = <0x1 0x10101>; 474 + enable-method = "psci"; 475 + cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0 476 + &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>; 477 + }; 478 + 479 + idle-states { 480 + entry-method = "psci"; 481 + 482 + CPU_RETENTION_0_0: cpu-retention-0-0 { 483 + compatible = "arm,idle-state"; 484 + arm,psci-suspend-param = <0x0010000>; 485 + entry-latency-us = <20>; 486 + exit-latency-us = <40>; 487 + min-residency-us = <80>; 488 + }; 489 + 490 + CLUSTER_RETENTION_0: cluster-retention-0 { 491 + compatible = "arm,idle-state"; 492 + local-timer-stop; 493 + arm,psci-suspend-param = <0x1010000>; 494 + entry-latency-us = <50>; 495 + exit-latency-us = <100>; 496 + min-residency-us = <250>; 497 + wakeup-latency-us = <130>; 498 + }; 499 + 500 + CPU_SLEEP_0_0: cpu-sleep-0-0 { 501 + compatible = "arm,idle-state"; 502 + local-timer-stop; 503 + arm,psci-suspend-param = <0x0010000>; 504 + entry-latency-us = <250>; 505 + exit-latency-us = <500>; 506 + min-residency-us = <950>; 507 + }; 508 + 509 + CLUSTER_SLEEP_0: cluster-sleep-0 { 510 + compatible = "arm,idle-state"; 511 + local-timer-stop; 512 + arm,psci-suspend-param = <0x1010000>; 513 + entry-latency-us = <600>; 514 + exit-latency-us = <1100>; 515 + min-residency-us = <2700>; 516 + wakeup-latency-us = <1500>; 517 + }; 518 + 519 + CPU_RETENTION_1_0: cpu-retention-1-0 { 520 + compatible = "arm,idle-state"; 521 + arm,psci-suspend-param = <0x0010000>; 522 + entry-latency-us = <20>; 523 + exit-latency-us = <40>; 524 + min-residency-us = <90>; 525 + }; 526 + 527 + CLUSTER_RETENTION_1: cluster-retention-1 { 528 + compatible = "arm,idle-state"; 529 + local-timer-stop; 530 + arm,psci-suspend-param = <0x1010000>; 531 + entry-latency-us = <50>; 532 + exit-latency-us = <100>; 533 + min-residency-us = <270>; 534 + wakeup-latency-us = <100>; 535 + }; 536 + 537 + CPU_SLEEP_1_0: cpu-sleep-1-0 { 538 + compatible = "arm,idle-state"; 539 + local-timer-stop; 540 + arm,psci-suspend-param = <0x0010000>; 541 + entry-latency-us = <70>; 542 + exit-latency-us = <100>; 543 + min-residency-us = <300>; 544 + wakeup-latency-us = <150>; 545 + }; 546 + 547 + CLUSTER_SLEEP_1: cluster-sleep-1 { 548 + compatible = "arm,idle-state"; 549 + local-timer-stop; 550 + arm,psci-suspend-param = <0x1010000>; 551 + entry-latency-us = <500>; 552 + exit-latency-us = <1200>; 553 + min-residency-us = <3500>; 554 + wakeup-latency-us = <1300>; 555 + }; 556 + }; 557 + }; 558 + 559 + - | 560 + // Example 2 (ARM 32-bit, 8-cpu system, two clusters): 561 + 562 + cpus { 563 + #size-cells = <0>; 564 + #address-cells = <1>; 565 + 566 + cpu@0 { 567 + device_type = "cpu"; 568 + compatible = "arm,cortex-a15"; 569 + reg = <0x0>; 570 + cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>; 571 + }; 572 + 573 + cpu@1 { 574 + device_type = "cpu"; 575 + compatible = "arm,cortex-a15"; 576 + reg = <0x1>; 577 + cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>; 578 + }; 579 + 580 + cpu@2 { 581 + device_type = "cpu"; 582 + compatible = "arm,cortex-a15"; 583 + reg = <0x2>; 584 + cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>; 585 + }; 586 + 587 + cpu@3 { 588 + device_type = "cpu"; 589 + compatible = "arm,cortex-a15"; 590 + reg = <0x3>; 591 + cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>; 592 + }; 593 + 594 + cpu@100 { 595 + device_type = "cpu"; 596 + compatible = "arm,cortex-a7"; 597 + reg = <0x100>; 598 + cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>; 599 + }; 600 + 601 + cpu@101 { 602 + device_type = "cpu"; 603 + compatible = "arm,cortex-a7"; 604 + reg = <0x101>; 605 + cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>; 606 + }; 607 + 608 + cpu@102 { 609 + device_type = "cpu"; 610 + compatible = "arm,cortex-a7"; 611 + reg = <0x102>; 612 + cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>; 613 + }; 614 + 615 + cpu@103 { 616 + device_type = "cpu"; 617 + compatible = "arm,cortex-a7"; 618 + reg = <0x103>; 619 + cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>; 620 + }; 621 + 622 + idle-states { 623 + cpu_sleep_0_0: cpu-sleep-0-0 { 624 + compatible = "arm,idle-state"; 625 + local-timer-stop; 626 + entry-latency-us = <200>; 627 + exit-latency-us = <100>; 628 + min-residency-us = <400>; 629 + wakeup-latency-us = <250>; 630 + }; 631 + 632 + cluster_sleep_0: cluster-sleep-0 { 633 + compatible = "arm,idle-state"; 634 + local-timer-stop; 635 + entry-latency-us = <500>; 636 + exit-latency-us = <1500>; 637 + min-residency-us = <2500>; 638 + wakeup-latency-us = <1700>; 639 + }; 640 + 641 + cpu_sleep_1_0: cpu-sleep-1-0 { 642 + compatible = "arm,idle-state"; 643 + local-timer-stop; 644 + entry-latency-us = <300>; 645 + exit-latency-us = <500>; 646 + min-residency-us = <900>; 647 + wakeup-latency-us = <600>; 648 + }; 649 + 650 + cluster_sleep_1: cluster-sleep-1 { 651 + compatible = "arm,idle-state"; 652 + local-timer-stop; 653 + entry-latency-us = <800>; 654 + exit-latency-us = <2000>; 655 + min-residency-us = <6500>; 656 + wakeup-latency-us = <2300>; 657 + }; 658 + }; 659 + }; 660 + 661 + ...
-37
Documentation/devicetree/bindings/arm/stm32/mlahb.txt
··· 1 - ML-AHB interconnect bindings 2 - 3 - These bindings describe the STM32 SoCs ML-AHB interconnect bus which connects 4 - a Cortex-M subsystem with dedicated memories. 5 - The MCU SRAM and RETRAM memory parts can be accessed through different addresses 6 - (see "RAM aliases" in [1]) using different buses (see [2]) : balancing the 7 - Cortex-M firmware accesses among those ports allows to tune the system 8 - performance. 9 - 10 - [1]: https://www.st.com/resource/en/reference_manual/dm00327659.pdf 11 - [2]: https://wiki.st.com/stm32mpu/wiki/STM32MP15_RAM_mapping 12 - 13 - Required properties: 14 - - compatible: should be "simple-bus" 15 - - dma-ranges: describes memory addresses translation between the local CPU and 16 - the remote Cortex-M processor. Each memory region, is declared with 17 - 3 parameters: 18 - - param 1: device base address (Cortex-M processor address) 19 - - param 2: physical base address (local CPU address) 20 - - param 3: size of the memory region. 21 - 22 - The Cortex-M remote processor accessed via the mlahb interconnect is described 23 - by a child node. 24 - 25 - Example: 26 - mlahb { 27 - compatible = "simple-bus"; 28 - #address-cells = <1>; 29 - #size-cells = <1>; 30 - dma-ranges = <0x00000000 0x38000000 0x10000>, 31 - <0x10000000 0x10000000 0x60000>, 32 - <0x30000000 0x30000000 0x60000>; 33 - 34 - m4_rproc: m4@10000000 { 35 - ... 36 - }; 37 - };
+70
Documentation/devicetree/bindings/arm/stm32/st,mlahb.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/arm/stm32/st,mlahb.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: STMicroelectronics STM32 ML-AHB interconnect bindings 8 + 9 + maintainers: 10 + - Fabien Dessenne <fabien.dessenne@st.com> 11 + - Arnaud Pouliquen <arnaud.pouliquen@st.com> 12 + 13 + description: | 14 + These bindings describe the STM32 SoCs ML-AHB interconnect bus which connects 15 + a Cortex-M subsystem with dedicated memories. The MCU SRAM and RETRAM memory 16 + parts can be accessed through different addresses (see "RAM aliases" in [1]) 17 + using different buses (see [2]): balancing the Cortex-M firmware accesses 18 + among those ports allows to tune the system performance. 19 + [1]: https://www.st.com/resource/en/reference_manual/dm00327659.pdf 20 + [2]: https://wiki.st.com/stm32mpu/wiki/STM32MP15_RAM_mapping 21 + 22 + allOf: 23 + - $ref: /schemas/simple-bus.yaml# 24 + 25 + properties: 26 + compatible: 27 + contains: 28 + enum: 29 + - st,mlahb 30 + 31 + dma-ranges: 32 + description: | 33 + Describe memory addresses translation between the local CPU and the 34 + remote Cortex-M processor. Each memory region, is declared with 35 + 3 parameters: 36 + - param 1: device base address (Cortex-M processor address) 37 + - param 2: physical base address (local CPU address) 38 + - param 3: size of the memory region. 39 + maxItems: 3 40 + 41 + '#address-cells': 42 + const: 1 43 + 44 + '#size-cells': 45 + const: 1 46 + 47 + required: 48 + - compatible 49 + - '#address-cells' 50 + - '#size-cells' 51 + - dma-ranges 52 + 53 + examples: 54 + - | 55 + mlahb: ahb { 56 + compatible = "st,mlahb", "simple-bus"; 57 + #address-cells = <1>; 58 + #size-cells = <1>; 59 + reg = <0x10000000 0x40000>; 60 + ranges; 61 + dma-ranges = <0x00000000 0x38000000 0x10000>, 62 + <0x10000000 0x10000000 0x60000>, 63 + <0x30000000 0x30000000 0x60000>; 64 + 65 + m4_rproc: m4@10000000 { 66 + reg = <0x10000000 0x40000>; 67 + }; 68 + }; 69 + 70 + ...
+41
Documentation/devicetree/bindings/arm/stm32/st,stm32-syscon.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/arm/stm32/st,stm32-syscon.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: STMicroelectronics STM32 Platforms System Controller bindings 8 + 9 + maintainers: 10 + - Alexandre Torgue <alexandre.torgue@st.com> 11 + - Christophe Roullier <christophe.roullier@st.com> 12 + 13 + properties: 14 + compatible: 15 + oneOf: 16 + - items: 17 + - enum: 18 + - st,stm32mp157-syscfg 19 + - const: syscon 20 + 21 + reg: 22 + maxItems: 1 23 + 24 + clocks: 25 + maxItems: 1 26 + 27 + required: 28 + - compatible 29 + - reg 30 + - clocks 31 + 32 + examples: 33 + - | 34 + #include <dt-bindings/clock/stm32mp1-clks.h> 35 + syscfg: syscon@50020000 { 36 + compatible = "st,stm32mp157-syscfg", "syscon"; 37 + reg = <0x50020000 0x400>; 38 + clocks = <&rcc SYSCFG>; 39 + }; 40 + 41 + ...
-16
Documentation/devicetree/bindings/arm/stm32/stm32-syscon.txt
··· 1 - STMicroelectronics STM32 Platforms System Controller 2 - 3 - Properties: 4 - - compatible : should contain two values. First value must be : 5 - - " st,stm32mp157-syscfg " - for stm32mp157 based SoCs, 6 - second value must be always "syscon". 7 - - reg : offset and length of the register set. 8 - - clocks: phandle to the syscfg clock 9 - 10 - Example: 11 - syscfg: syscon@50020000 { 12 - compatible = "st,stm32mp157-syscfg", "syscon"; 13 - reg = <0x50020000 0x400>; 14 - clocks = <&rcc SYSCFG>; 15 - }; 16 -
+65
Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun4i-a10-mbus.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner Memory Bus (MBUS) controller 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + description: | 14 + The MBUS controller drives the MBUS that other devices in the SoC 15 + will use to perform DMA. It also has a register interface that 16 + allows to monitor and control the bandwidth and priorities for 17 + masters on that bus. 18 + 19 + Each device having to perform their DMA through the MBUS must have 20 + the interconnects and interconnect-names properties set to the MBUS 21 + controller and with "dma-mem" as the interconnect name. 22 + 23 + properties: 24 + "#interconnect-cells": 25 + const: 1 26 + description: 27 + The content of the cell is the MBUS ID. 28 + 29 + compatible: 30 + enum: 31 + - allwinner,sun5i-a13-mbus 32 + - allwinner,sun8i-h3-mbus 33 + 34 + reg: 35 + maxItems: 1 36 + 37 + clocks: 38 + maxItems: 1 39 + 40 + dma-ranges: 41 + description: 42 + See section 2.3.9 of the DeviceTree Specification. 43 + 44 + required: 45 + - "#interconnect-cells" 46 + - compatible 47 + - reg 48 + - clocks 49 + - dma-ranges 50 + 51 + additionalProperties: false 52 + 53 + examples: 54 + - | 55 + #include <dt-bindings/clock/sun5i-ccu.h> 56 + 57 + mbus: dram-controller@1c01000 { 58 + compatible = "allwinner,sun5i-a13-mbus"; 59 + reg = <0x01c01000 0x1000>; 60 + clocks = <&ccu CLK_MBUS>; 61 + dma-ranges = <0x00000000 0x40000000 0x20000000>; 62 + #interconnect-cells = <1>; 63 + }; 64 + 65 + ...
-37
Documentation/devicetree/bindings/arm/sunxi/sunxi-mbus.txt
··· 1 - Allwinner Memory Bus (MBUS) controller 2 - 3 - The MBUS controller drives the MBUS that other devices in the SoC will 4 - use to perform DMA. It also has a register interface that allows to 5 - monitor and control the bandwidth and priorities for masters on that 6 - bus. 7 - 8 - Required properties: 9 - - compatible: Must be one of: 10 - - allwinner,sun5i-a13-mbus 11 - - allwinner,sun8i-h3-mbus 12 - - reg: Offset and length of the register set for the controller 13 - - clocks: phandle to the clock driving the controller 14 - - dma-ranges: See section 2.3.9 of the DeviceTree Specification 15 - - #interconnect-cells: Must be one, with the argument being the MBUS 16 - port ID 17 - 18 - Each device having to perform their DMA through the MBUS must have the 19 - interconnects and interconnect-names properties set to the MBUS 20 - controller and with "dma-mem" as the interconnect name. 21 - 22 - Example: 23 - 24 - mbus: dram-controller@1c01000 { 25 - compatible = "allwinner,sun5i-a13-mbus"; 26 - reg = <0x01c01000 0x1000>; 27 - clocks = <&ccu CLK_MBUS>; 28 - dma-ranges = <0x00000000 0x40000000 0x20000000>; 29 - #interconnect-cells = <1>; 30 - }; 31 - 32 - fe0: display-frontend@1e00000 { 33 - compatible = "allwinner,sun5i-a13-display-frontend"; 34 - ... 35 - interconnects = <&mbus 19>; 36 - interconnect-names = "dma-mem"; 37 - };
-12
Documentation/devicetree/bindings/ata/ahci-platform.txt
··· 9 9 10 10 Required properties: 11 11 - compatible : compatible string, one of: 12 - - "allwinner,sun4i-a10-ahci" 13 - - "allwinner,sun8i-r40-ahci" 14 12 - "brcm,iproc-ahci" 15 13 - "hisilicon,hisi-ahci" 16 14 - "cavium,octeon-7130-ahci" ··· 43 45 - #address-cells : number of cells to encode an address 44 46 - #size-cells : number of cells representing the size of an address 45 47 46 - For allwinner,sun8i-r40-ahci, the reset property must be present. 47 - 48 48 Sub-nodes required properties: 49 49 - reg : the port number 50 50 And at least one of the following properties: ··· 55 59 reg = <0xffe08000 0x1000>; 56 60 interrupts = <115>; 57 61 }; 58 - 59 - ahci: sata@1c18000 { 60 - compatible = "allwinner,sun4i-a10-ahci"; 61 - reg = <0x01c18000 0x1000>; 62 - interrupts = <56>; 63 - clocks = <&pll6 0>, <&ahb_gates 25>; 64 - target-supply = <&reg_ahci_5v>; 65 - }; 66 62 67 63 With sub-nodes: 68 64 sata@f7e90000 {
+47
Documentation/devicetree/bindings/ata/allwinner,sun4i-a10-ahci.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/allwinner,sun4i-a10-ahci.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 AHCI SATA Controller bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + compatible: 15 + const: allwinner,sun4i-a10-ahci 16 + 17 + reg: 18 + maxItems: 1 19 + 20 + clocks: 21 + items: 22 + - description: AHCI Bus Clock 23 + - description: AHCI Module Clock 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + target-supply: 29 + description: Regulator for SATA target power 30 + 31 + required: 32 + - compatible 33 + - reg 34 + - clocks 35 + - interrupts 36 + 37 + additionalProperties: false 38 + 39 + examples: 40 + - | 41 + ahci: sata@1c18000 { 42 + compatible = "allwinner,sun4i-a10-ahci"; 43 + reg = <0x01c18000 0x1000>; 44 + interrupts = <56>; 45 + clocks = <&pll6 0>, <&ahb_gates 25>; 46 + target-supply = <&reg_ahci_5v>; 47 + };
+67
Documentation/devicetree/bindings/ata/allwinner,sun8i-r40-ahci.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/allwinner,sun8i-r40-ahci.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner R40 AHCI SATA Controller bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + compatible: 15 + const: allwinner,sun8i-r40-ahci 16 + 17 + reg: 18 + maxItems: 1 19 + 20 + clocks: 21 + items: 22 + - description: AHCI Bus Clock 23 + - description: AHCI Module Clock 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + resets: 29 + maxItems: 1 30 + 31 + reset-names: 32 + const: ahci 33 + 34 + ahci-supply: 35 + description: Regulator for the AHCI controller 36 + 37 + phy-supply: 38 + description: Regulator for the SATA PHY power 39 + 40 + required: 41 + - compatible 42 + - reg 43 + - clocks 44 + - interrupts 45 + - resets 46 + - reset-names 47 + 48 + additionalProperties: false 49 + 50 + examples: 51 + - | 52 + #include <dt-bindings/interrupt-controller/arm-gic.h> 53 + #include <dt-bindings/clock/sun8i-r40-ccu.h> 54 + #include <dt-bindings/reset/sun8i-r40-ccu.h> 55 + 56 + ahci: sata@1c18000 { 57 + compatible = "allwinner,sun8i-r40-ahci"; 58 + reg = <0x01c18000 0x1000>; 59 + interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; 60 + clocks = <&ccu CLK_BUS_SATA>, <&ccu CLK_SATA>; 61 + resets = <&ccu RST_BUS_SATA>; 62 + reset-names = "ahci"; 63 + ahci-supply = <&reg_dldo4>; 64 + phy-supply = <&reg_eldo3>; 65 + }; 66 + 67 + ...
-38
Documentation/devicetree/bindings/ata/faraday,ftide010.txt
··· 1 - * Faraday Technology FTIDE010 PATA controller 2 - 3 - This controller is the first Faraday IDE interface block, used in the 4 - StorLink SL2312 and SL3516, later known as the Cortina Systems Gemini 5 - platform. The controller can do PIO modes 0 through 4, Multi-word DMA 6 - (MWDM)modes 0 through 2 and Ultra DMA modes 0 through 6. 7 - 8 - On the Gemini platform, this PATA block is accompanied by a PATA to 9 - SATA bridge in order to support SATA. This is why a phandle to that 10 - controller is compulsory on that platform. 11 - 12 - The timing properties are unique per-SoC, not per-board. 13 - 14 - Required properties: 15 - - compatible: should be one of 16 - "cortina,gemini-pata", "faraday,ftide010" 17 - "faraday,ftide010" 18 - - interrupts: interrupt for the block 19 - - reg: registers and size for the block 20 - 21 - Optional properties: 22 - - clocks: a SoC clock running the peripheral. 23 - - clock-names: should be set to "PCLK" for the peripheral clock. 24 - 25 - Required properties for "cortina,gemini-pata" compatible: 26 - - sata: a phande to the Gemini PATA to SATA bridge, see 27 - cortina,gemini-sata-bridge.txt for details. 28 - 29 - Example: 30 - 31 - ata@63000000 { 32 - compatible = "cortina,gemini-pata", "faraday,ftide010"; 33 - reg = <0x63000000 0x100>; 34 - interrupts = <4 IRQ_TYPE_EDGE_RISING>; 35 - clocks = <&gcc GEMINI_CLK_GATE_IDE>; 36 - clock-names = "PCLK"; 37 - sata = <&sata>; 38 - };
+89
Documentation/devicetree/bindings/ata/faraday,ftide010.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/faraday,ftide010.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Faraday Technology FTIDE010 PATA controller 8 + 9 + maintainers: 10 + - Linus Walleij <linus.walleij@linaro.org> 11 + 12 + description: | 13 + This controller is the first Faraday IDE interface block, used in the 14 + StorLink SL3512 and SL3516, later known as the Cortina Systems Gemini 15 + platform. The controller can do PIO modes 0 through 4, Multi-word DMA 16 + (MWDM) modes 0 through 2 and Ultra DMA modes 0 through 6. 17 + 18 + On the Gemini platform, this PATA block is accompanied by a PATA to 19 + SATA bridge in order to support SATA. This is why a phandle to that 20 + controller is compulsory on that platform. 21 + 22 + The timing properties are unique per-SoC, not per-board. 23 + 24 + properties: 25 + compatible: 26 + oneOf: 27 + - const: faraday,ftide010 28 + - items: 29 + - const: cortina,gemini-pata 30 + - const: faraday,ftide010 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + interrupts: 36 + maxItems: 1 37 + 38 + clocks: 39 + minItems: 1 40 + 41 + clock-names: 42 + const: PCLK 43 + 44 + sata: 45 + description: 46 + phandle to the Gemini PATA to SATA bridge, if available 47 + $ref: /schemas/types.yaml#/definitions/phandle 48 + 49 + required: 50 + - compatible 51 + - reg 52 + - interrupts 53 + 54 + allOf: 55 + - $ref: pata-common.yaml# 56 + 57 + - if: 58 + properties: 59 + compatible: 60 + contains: 61 + const: cortina,gemini-pata 62 + 63 + then: 64 + required: 65 + - sata 66 + 67 + examples: 68 + - | 69 + #include <dt-bindings/interrupt-controller/irq.h> 70 + #include <dt-bindings/clock/cortina,gemini-clock.h> 71 + 72 + ide@63000000 { 73 + compatible = "cortina,gemini-pata", "faraday,ftide010"; 74 + reg = <0x63000000 0x100>; 75 + interrupts = <4 IRQ_TYPE_EDGE_RISING>; 76 + clocks = <&gcc GEMINI_CLK_GATE_IDE>; 77 + clock-names = "PCLK"; 78 + sata = <&sata>; 79 + #address-cells = <1>; 80 + #size-cells = <0>; 81 + ide-port@0 { 82 + reg = <0>; 83 + }; 84 + ide-port@1 { 85 + reg = <1>; 86 + }; 87 + }; 88 + 89 + ...
+50
Documentation/devicetree/bindings/ata/pata-common.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/pata-common.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Common Properties for Parallel AT attachment (PATA) controllers 8 + 9 + maintainers: 10 + - Linus Walleij <linus.walleij@linaro.org> 11 + 12 + description: | 13 + This document defines device tree properties common to most Parallel 14 + ATA (PATA, also known as IDE) AT attachment storage devices. 15 + It doesn't constitue a device tree binding specification by itself but is 16 + meant to be referenced by device tree bindings. 17 + 18 + The PATA (IDE) controller-specific device tree bindings are responsible for 19 + defining whether each property is required or optional. 20 + 21 + properties: 22 + $nodename: 23 + pattern: "^ide(@.*)?$" 24 + description: 25 + Specifies the host controller node. PATA host controller nodes are named 26 + "ide". 27 + 28 + "#address-cells": 29 + const: 1 30 + 31 + "#size-cells": 32 + const: 0 33 + 34 + patternProperties: 35 + "^ide-port@[0-1]$": 36 + description: | 37 + DT nodes for ports connected on the PATA host. The master drive will have 38 + ID number 0 and the slave drive will have ID number 1. The PATA port 39 + nodes will be named "ide-port". 40 + type: object 41 + 42 + properties: 43 + reg: 44 + minimum: 0 45 + maximum: 1 46 + description: 47 + The ID number of the drive port, 0 for the master port and 1 for the 48 + slave port. 49 + 50 + ...
+50
Documentation/devicetree/bindings/ata/sata-common.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/sata-common.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Common Properties for Serial AT attachment (SATA) controllers 8 + 9 + maintainers: 10 + - Linus Walleij <linus.walleij@linaro.org> 11 + 12 + description: | 13 + This document defines device tree properties common to most Serial 14 + AT attachment (SATA) storage devices. It doesn't constitute a device tree 15 + binding specification by itself but is meant to be referenced by device 16 + tree bindings. 17 + 18 + The SATA controller-specific device tree bindings are responsible for 19 + defining whether each property is required or optional. 20 + 21 + properties: 22 + $nodename: 23 + pattern: "^sata(@.*)?$" 24 + description: 25 + Specifies the host controller node. SATA host controller nodes are named 26 + "sata" 27 + 28 + "#address-cells": 29 + const: 1 30 + 31 + "#size-cells": 32 + const: 0 33 + 34 + patternProperties: 35 + "^sata-port@[0-9a-e]$": 36 + description: | 37 + DT nodes for ports connected on the SATA host. The SATA port 38 + nodes will be named "sata-port". 39 + type: object 40 + 41 + properties: 42 + reg: 43 + minimum: 0 44 + maximum: 14 45 + description: 46 + The ID number of the drive port SATA can potentially use a port 47 + multiplier making it possible to connect up to 15 disks to a single 48 + SATA port. 49 + 50 + ...
+108
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-ahb-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-ahb-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 AHB Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + enum: 21 + - allwinner,sun4i-a10-ahb-clk 22 + - allwinner,sun6i-a31-ahb1-clk 23 + - allwinner,sun8i-h3-ahb2-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + minItems: 1 30 + maxItems: 4 31 + description: > 32 + The parent order must match the hardware programming order. 33 + 34 + clock-output-names: 35 + maxItems: 1 36 + 37 + required: 38 + - "#clock-cells" 39 + - compatible 40 + - reg 41 + - clocks 42 + - clock-output-names 43 + 44 + additionalProperties: false 45 + 46 + allOf: 47 + - if: 48 + properties: 49 + compatible: 50 + contains: 51 + const: allwinner,sun4i-a10-ahb-clk 52 + 53 + then: 54 + properties: 55 + clocks: 56 + maxItems: 1 57 + 58 + - if: 59 + properties: 60 + compatible: 61 + contains: 62 + const: allwinner,sun6i-a31-ahb1-clk 63 + 64 + then: 65 + properties: 66 + clocks: 67 + maxItems: 4 68 + 69 + - if: 70 + properties: 71 + compatible: 72 + contains: 73 + const: allwinner,sun8i-h3-ahb2-clk 74 + 75 + then: 76 + properties: 77 + clocks: 78 + maxItems: 2 79 + 80 + examples: 81 + - | 82 + ahb@1c20054 { 83 + #clock-cells = <0>; 84 + compatible = "allwinner,sun4i-a10-ahb-clk"; 85 + reg = <0x01c20054 0x4>; 86 + clocks = <&axi>; 87 + clock-output-names = "ahb"; 88 + }; 89 + 90 + - | 91 + ahb1@1c20054 { 92 + #clock-cells = <0>; 93 + compatible = "allwinner,sun6i-a31-ahb1-clk"; 94 + reg = <0x01c20054 0x4>; 95 + clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>; 96 + clock-output-names = "ahb1"; 97 + }; 98 + 99 + - | 100 + ahb2_clk@1c2005c { 101 + #clock-cells = <0>; 102 + compatible = "allwinner,sun8i-h3-ahb2-clk"; 103 + reg = <0x01c2005c 0x4>; 104 + clocks = <&ahb1>, <&pll6d2>; 105 + clock-output-names = "ahb2"; 106 + }; 107 + 108 + ...
+50
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-apb0-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-apb0-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 APB0 Bus Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-apb0-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-output-names: 29 + maxItems: 1 30 + 31 + required: 32 + - "#clock-cells" 33 + - compatible 34 + - reg 35 + - clocks 36 + - clock-output-names 37 + 38 + additionalProperties: false 39 + 40 + examples: 41 + - | 42 + apb0@1c20054 { 43 + #clock-cells = <0>; 44 + compatible = "allwinner,sun4i-a10-apb0-clk"; 45 + reg = <0x01c20054 0x4>; 46 + clocks = <&ahb>; 47 + clock-output-names = "apb0"; 48 + }; 49 + 50 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-apb1-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-apb1-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 APB1 Bus Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-apb1-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 3 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + clk@1c20058 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun4i-a10-apb1-clk"; 47 + reg = <0x01c20058 0x4>; 48 + clocks = <&osc24M>, <&pll6 1>, <&osc32k>; 49 + clock-output-names = "apb1"; 50 + }; 51 + 52 + ...
+61
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-axi-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-axi-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 AXI Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + enum: 21 + - allwinner,sun4i-a10-axi-clk 22 + - allwinner,sun8i-a23-axi-clk 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + clocks: 28 + maxItems: 1 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + axi@1c20054 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun4i-a10-axi-clk"; 47 + reg = <0x01c20054 0x4>; 48 + clocks = <&cpu>; 49 + clock-output-names = "axi"; 50 + }; 51 + 52 + - | 53 + axi_clk@1c20050 { 54 + #clock-cells = <0>; 55 + compatible = "allwinner,sun8i-a23-axi-clk"; 56 + reg = <0x01c20050 0x4>; 57 + clocks = <&cpu>; 58 + clock-output-names = "axi"; 59 + }; 60 + 61 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-cpu-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-cpu-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 CPU Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-cpu-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 4 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + cpu@1c20054 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun4i-a10-cpu-clk"; 47 + reg = <0x01c20054 0x4>; 48 + clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>; 49 + clock-output-names = "cpu"; 50 + }; 51 + 52 + ...
+57
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-display-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-display-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Display Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + "#reset-cells": 20 + const: 0 21 + 22 + compatible: 23 + const: allwinner,sun4i-a10-display-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 3 30 + description: > 31 + The parent order must match the hardware programming order. 32 + 33 + clock-output-names: 34 + maxItems: 1 35 + 36 + required: 37 + - "#clock-cells" 38 + - "#reset-cells" 39 + - compatible 40 + - reg 41 + - clocks 42 + - clock-output-names 43 + 44 + additionalProperties: false 45 + 46 + examples: 47 + - | 48 + clk@1c20104 { 49 + #clock-cells = <0>; 50 + #reset-cells = <0>; 51 + compatible = "allwinner,sun4i-a10-display-clk"; 52 + reg = <0x01c20104 0x4>; 53 + clocks = <&pll3>, <&pll7>, <&pll5 1>; 54 + clock-output-names = "de-be"; 55 + }; 56 + 57 + ...
+152
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-gates-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-gates-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Bus Gates Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + This additional argument passed to that clock is the offset of 20 + the bit controlling this particular gate in the register. 21 + 22 + compatible: 23 + oneOf: 24 + - const: allwinner,sun4i-a10-gates-clk 25 + - const: allwinner,sun4i-a10-axi-gates-clk 26 + - const: allwinner,sun4i-a10-ahb-gates-clk 27 + - const: allwinner,sun5i-a10s-ahb-gates-clk 28 + - const: allwinner,sun5i-a13-ahb-gates-clk 29 + - const: allwinner,sun7i-a20-ahb-gates-clk 30 + - const: allwinner,sun6i-a31-ahb1-gates-clk 31 + - const: allwinner,sun8i-a23-ahb1-gates-clk 32 + - const: allwinner,sun9i-a80-ahb0-gates-clk 33 + - const: allwinner,sun9i-a80-ahb1-gates-clk 34 + - const: allwinner,sun9i-a80-ahb2-gates-clk 35 + - const: allwinner,sun4i-a10-apb0-gates-clk 36 + - const: allwinner,sun5i-a10s-apb0-gates-clk 37 + - const: allwinner,sun5i-a13-apb0-gates-clk 38 + - const: allwinner,sun7i-a20-apb0-gates-clk 39 + - const: allwinner,sun9i-a80-apb0-gates-clk 40 + - const: allwinner,sun8i-a83t-apb0-gates-clk 41 + - const: allwinner,sun4i-a10-apb1-gates-clk 42 + - const: allwinner,sun5i-a13-apb1-gates-clk 43 + - const: allwinner,sun5i-a10s-apb1-gates-clk 44 + - const: allwinner,sun6i-a31-apb1-gates-clk 45 + - const: allwinner,sun7i-a20-apb1-gates-clk 46 + - const: allwinner,sun8i-a23-apb1-gates-clk 47 + - const: allwinner,sun9i-a80-apb1-gates-clk 48 + - const: allwinner,sun6i-a31-apb2-gates-clk 49 + - const: allwinner,sun8i-a23-apb2-gates-clk 50 + - const: allwinner,sun8i-a83t-bus-gates-clk 51 + - const: allwinner,sun9i-a80-apbs-gates-clk 52 + - const: allwinner,sun4i-a10-dram-gates-clk 53 + 54 + - items: 55 + - const: allwinner,sun5i-a13-dram-gates-clk 56 + - const: allwinner,sun4i-a10-gates-clk 57 + 58 + - items: 59 + - const: allwinner,sun8i-h3-apb0-gates-clk 60 + - const: allwinner,sun4i-a10-gates-clk 61 + 62 + reg: 63 + maxItems: 1 64 + 65 + clocks: 66 + maxItems: 1 67 + 68 + clock-indices: 69 + minItems: 1 70 + maxItems: 64 71 + 72 + clock-output-names: 73 + minItems: 1 74 + maxItems: 64 75 + 76 + required: 77 + - "#clock-cells" 78 + - compatible 79 + - reg 80 + - clocks 81 + - clock-indices 82 + - clock-output-names 83 + 84 + additionalProperties: false 85 + 86 + examples: 87 + - | 88 + clk@1c2005c { 89 + #clock-cells = <1>; 90 + compatible = "allwinner,sun4i-a10-axi-gates-clk"; 91 + reg = <0x01c2005c 0x4>; 92 + clocks = <&axi>; 93 + clock-indices = <0>; 94 + clock-output-names = "axi_dram"; 95 + }; 96 + 97 + - | 98 + clk@1c20060 { 99 + #clock-cells = <1>; 100 + compatible = "allwinner,sun4i-a10-ahb-gates-clk"; 101 + reg = <0x01c20060 0x8>; 102 + clocks = <&ahb>; 103 + clock-indices = <0>, <1>, 104 + <2>, <3>, 105 + <4>, <5>, <6>, 106 + <7>, <8>, <9>, 107 + <10>, <11>, <12>, 108 + <13>, <14>, <16>, 109 + <17>, <18>, <20>, 110 + <21>, <22>, <23>, 111 + <24>, <25>, <26>, 112 + <32>, <33>, <34>, 113 + <35>, <36>, <37>, 114 + <40>, <41>, <43>, 115 + <44>, <45>, 116 + <46>, <47>, 117 + <50>, <52>; 118 + clock-output-names = "ahb_usb0", "ahb_ehci0", 119 + "ahb_ohci0", "ahb_ehci1", 120 + "ahb_ohci1", "ahb_ss", "ahb_dma", 121 + "ahb_bist", "ahb_mmc0", "ahb_mmc1", 122 + "ahb_mmc2", "ahb_mmc3", "ahb_ms", 123 + "ahb_nand", "ahb_sdram", "ahb_ace", 124 + "ahb_emac", "ahb_ts", "ahb_spi0", 125 + "ahb_spi1", "ahb_spi2", "ahb_spi3", 126 + "ahb_pata", "ahb_sata", "ahb_gps", 127 + "ahb_ve", "ahb_tvd", "ahb_tve0", 128 + "ahb_tve1", "ahb_lcd0", "ahb_lcd1", 129 + "ahb_csi0", "ahb_csi1", "ahb_hdmi", 130 + "ahb_de_be0", "ahb_de_be1", 131 + "ahb_de_fe0", "ahb_de_fe1", 132 + "ahb_mp", "ahb_mali400"; 133 + }; 134 + 135 + 136 + - | 137 + clk@1c20068 { 138 + #clock-cells = <1>; 139 + compatible = "allwinner,sun4i-a10-apb0-gates-clk"; 140 + reg = <0x01c20068 0x4>; 141 + clocks = <&apb0>; 142 + clock-indices = <0>, <1>, 143 + <2>, <3>, 144 + <5>, <6>, 145 + <7>, <10>; 146 + clock-output-names = "apb0_codec", "apb0_spdif", 147 + "apb0_ac97", "apb0_iis", 148 + "apb0_pio", "apb0_ir0", 149 + "apb0_ir1", "apb0_keypad"; 150 + }; 151 + 152 + ...
+63
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-mbus-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-mbus-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 MBUS Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + enum: 21 + - allwinner,sun5i-a13-mbus-clk 22 + - allwinner,sun8i-a23-mbus-clk 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + clocks: 28 + maxItems: 3 29 + description: > 30 + The parent order must match the hardware programming order. 31 + 32 + clock-output-names: 33 + maxItems: 1 34 + 35 + required: 36 + - "#clock-cells" 37 + - compatible 38 + - reg 39 + - clocks 40 + - clock-output-names 41 + 42 + additionalProperties: false 43 + 44 + examples: 45 + - | 46 + clk@1c2015c { 47 + #clock-cells = <0>; 48 + compatible = "allwinner,sun5i-a13-mbus-clk"; 49 + reg = <0x01c2015c 0x4>; 50 + clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 51 + clock-output-names = "mbus"; 52 + }; 53 + 54 + - | 55 + clk@1c2015c { 56 + #clock-cells = <0>; 57 + compatible = "allwinner,sun8i-a23-mbus-clk"; 58 + reg = <0x01c2015c 0x4>; 59 + clocks = <&osc24M>, <&pll6 1>, <&pll5>; 60 + clock-output-names = "mbus"; 61 + }; 62 + 63 + ...
+87
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-mmc-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-mmc-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Module 1 Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + There is three different outputs: the main clock, with the ID 0, 20 + and the output and sample clocks, with the IDs 1 and 2, 21 + respectively. 22 + 23 + compatible: 24 + enum: 25 + - allwinner,sun4i-a10-mmc-clk 26 + - allwinner,sun9i-a80-mmc-clk 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + clocks: 32 + minItems: 2 33 + maxItems: 3 34 + description: > 35 + The parent order must match the hardware programming order. 36 + 37 + clock-output-names: 38 + maxItems: 3 39 + 40 + required: 41 + - "#clock-cells" 42 + - compatible 43 + - reg 44 + - clocks 45 + - clock-output-names 46 + 47 + additionalProperties: false 48 + 49 + if: 50 + properties: 51 + compatible: 52 + contains: 53 + const: allwinner,sun4i-a10-mmc-clk 54 + 55 + then: 56 + properties: 57 + clocks: 58 + maxItems: 3 59 + 60 + else: 61 + properties: 62 + clocks: 63 + maxItems: 2 64 + 65 + examples: 66 + - | 67 + clk@1c20088 { 68 + #clock-cells = <1>; 69 + compatible = "allwinner,sun4i-a10-mmc-clk"; 70 + reg = <0x01c20088 0x4>; 71 + clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 72 + clock-output-names = "mmc0", 73 + "mmc0_output", 74 + "mmc0_sample"; 75 + }; 76 + 77 + - | 78 + clk@6000410 { 79 + #clock-cells = <1>; 80 + compatible = "allwinner,sun9i-a80-mmc-clk"; 81 + reg = <0x06000410 0x4>; 82 + clocks = <&osc24M>, <&pll4>; 83 + clock-output-names = "mmc0", "mmc0_output", 84 + "mmc0_sample"; 85 + }; 86 + 87 + ...
+80
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-mod0-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-mod0-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Module 0 Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + select: 16 + properties: 17 + compatible: 18 + contains: 19 + enum: 20 + - allwinner,sun4i-a10-mod0-clk 21 + - allwinner,sun9i-a80-mod0-clk 22 + 23 + # The PRCM on the A31 and A23 will have the reg property missing, 24 + # since it's set at the upper level node, and will be validated by 25 + # PRCM's schema. Make sure we only validate standalone nodes. 26 + required: 27 + - compatible 28 + - reg 29 + 30 + properties: 31 + "#clock-cells": 32 + const: 0 33 + 34 + compatible: 35 + enum: 36 + - allwinner,sun4i-a10-mod0-clk 37 + - allwinner,sun9i-a80-mod0-clk 38 + 39 + reg: 40 + maxItems: 1 41 + 42 + clocks: 43 + # On the A80, the PRCM mod0 clocks have 2 parents. 44 + minItems: 2 45 + maxItems: 3 46 + description: > 47 + The parent order must match the hardware programming order. 48 + 49 + clock-output-names: 50 + maxItems: 1 51 + 52 + required: 53 + - "#clock-cells" 54 + - compatible 55 + - reg 56 + - clocks 57 + - clock-output-names 58 + 59 + additionalProperties: false 60 + 61 + examples: 62 + - | 63 + clk@1c20080 { 64 + #clock-cells = <0>; 65 + compatible = "allwinner,sun4i-a10-mod0-clk"; 66 + reg = <0x01c20080 0x4>; 67 + clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 68 + clock-output-names = "nand"; 69 + }; 70 + 71 + - | 72 + clk@8001454 { 73 + #clock-cells = <0>; 74 + compatible = "allwinner,sun4i-a10-mod0-clk"; 75 + reg = <0x08001454 0x4>; 76 + clocks = <&osc32k>, <&osc24M>; 77 + clock-output-names = "r_ir"; 78 + }; 79 + 80 + ...
+57
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-mod1-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-mod1-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Module 1 Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-mod1-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 4 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + #include <dt-bindings/clock/sun4i-a10-pll2.h> 45 + 46 + clk@1c200c0 { 47 + #clock-cells = <0>; 48 + compatible = "allwinner,sun4i-a10-mod1-clk"; 49 + reg = <0x01c200c0 0x4>; 50 + clocks = <&pll2 SUN4I_A10_PLL2_8X>, 51 + <&pll2 SUN4I_A10_PLL2_4X>, 52 + <&pll2 SUN4I_A10_PLL2_2X>, 53 + <&pll2 SUN4I_A10_PLL2_1X>; 54 + clock-output-names = "spdif"; 55 + }; 56 + 57 + ...
+51
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-osc-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-osc-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Gatable Oscillator Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-osc-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clock-frequency: 26 + description: > 27 + Frequency of the main oscillator. 28 + 29 + clock-output-names: 30 + maxItems: 1 31 + 32 + required: 33 + - "#clock-cells" 34 + - compatible 35 + - reg 36 + - clock-frequency 37 + - clock-output-names 38 + 39 + additionalProperties: false 40 + 41 + examples: 42 + - | 43 + osc24M: clk@01c20050 { 44 + #clock-cells = <0>; 45 + compatible = "allwinner,sun4i-a10-osc-clk"; 46 + reg = <0x01c20050 0x4>; 47 + clock-frequency = <24000000>; 48 + clock-output-names = "osc24M"; 49 + }; 50 + 51 + ...
+71
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-pll1-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-pll1-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 CPU PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + enum: 21 + - allwinner,sun4i-a10-pll1-clk 22 + - allwinner,sun6i-a31-pll1-clk 23 + - allwinner,sun8i-a23-pll1-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + clock-output-names: 32 + maxItems: 1 33 + 34 + required: 35 + - "#clock-cells" 36 + - compatible 37 + - reg 38 + - clocks 39 + - clock-output-names 40 + 41 + additionalProperties: false 42 + 43 + examples: 44 + - | 45 + clk@1c20000 { 46 + #clock-cells = <0>; 47 + compatible = "allwinner,sun4i-a10-pll1"; 48 + reg = <0x01c20000 0x4>; 49 + clocks = <&osc24M>; 50 + clock-output-names = "osc24M"; 51 + }; 52 + 53 + - | 54 + clk@1c20000 { 55 + #clock-cells = <0>; 56 + compatible = "allwinner,sun6i-a31-pll1-clk"; 57 + reg = <0x01c20000 0x4>; 58 + clocks = <&osc24M>; 59 + clock-output-names = "pll1"; 60 + }; 61 + 62 + - | 63 + clk@1c20000 { 64 + #clock-cells = <0>; 65 + compatible = "allwinner,sun8i-a23-pll1-clk"; 66 + reg = <0x01c20000 0x4>; 67 + clocks = <&osc24M>; 68 + clock-output-names = "pll1"; 69 + }; 70 + 71 + ...
+50
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-pll3-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-pll3-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Video PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun4i-a10-pll3-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-output-names: 29 + maxItems: 1 30 + 31 + required: 32 + - "#clock-cells" 33 + - compatible 34 + - reg 35 + - clocks 36 + - clock-output-names 37 + 38 + additionalProperties: false 39 + 40 + examples: 41 + - | 42 + clk@1c20010 { 43 + #clock-cells = <0>; 44 + compatible = "allwinner,sun4i-a10-pll3-clk"; 45 + reg = <0x01c20010 0x4>; 46 + clocks = <&osc3M>; 47 + clock-output-names = "pll3"; 48 + }; 49 + 50 + ...
+53
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-pll5-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-pll5-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 DRAM PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The first output is the DRAM clock output, the second is meant 20 + for peripherals on the SoC. 21 + 22 + compatible: 23 + const: allwinner,sun4i-a10-pll5-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + clock-output-names: 32 + maxItems: 2 33 + 34 + required: 35 + - "#clock-cells" 36 + - compatible 37 + - reg 38 + - clocks 39 + - clock-output-names 40 + 41 + additionalProperties: false 42 + 43 + examples: 44 + - | 45 + clk@1c20020 { 46 + #clock-cells = <1>; 47 + compatible = "allwinner,sun4i-a10-pll5-clk"; 48 + reg = <0x01c20020 0x4>; 49 + clocks = <&osc24M>; 50 + clock-output-names = "pll5_ddr", "pll5_other"; 51 + }; 52 + 53 + ...
+53
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-pll6-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-pll6-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Peripheral PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The first output is the SATA clock output, the second is the 20 + regular PLL output, the third is a PLL output at twice the rate. 21 + 22 + compatible: 23 + const: allwinner,sun4i-a10-pll6-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + clock-output-names: 32 + maxItems: 3 33 + 34 + required: 35 + - "#clock-cells" 36 + - compatible 37 + - reg 38 + - clocks 39 + - clock-output-names 40 + 41 + additionalProperties: false 42 + 43 + examples: 44 + - | 45 + clk@1c20028 { 46 + #clock-cells = <1>; 47 + compatible = "allwinner,sun4i-a10-pll6-clk"; 48 + reg = <0x01c20028 0x4>; 49 + clocks = <&osc24M>; 50 + clock-output-names = "pll6_sata", "pll6_other", "pll6"; 51 + }; 52 + 53 + ...
+77
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-tcon-ch0-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-tcon-ch0-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 TCON Channel 0 Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + "#reset-cells": 20 + const: 1 21 + 22 + compatible: 23 + enum: 24 + - allwinner,sun4i-a10-tcon-ch0-clk 25 + - allwinner,sun4i-a10-tcon-ch1-clk 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + clocks: 31 + maxItems: 4 32 + description: > 33 + The parent order must match the hardware programming order. 34 + 35 + clock-output-names: 36 + maxItems: 1 37 + 38 + required: 39 + - "#clock-cells" 40 + - compatible 41 + - reg 42 + - clocks 43 + - clock-output-names 44 + 45 + if: 46 + properties: 47 + compatible: 48 + contains: 49 + const: allwinner,sun4i-a10-tcon-ch0-clk 50 + 51 + then: 52 + required: 53 + - "#reset-cells" 54 + 55 + additionalProperties: false 56 + 57 + examples: 58 + - | 59 + clk@1c20118 { 60 + #clock-cells = <0>; 61 + #reset-cells = <1>; 62 + compatible = "allwinner,sun4i-a10-tcon-ch0-clk"; 63 + reg = <0x01c20118 0x4>; 64 + clocks = <&pll3>, <&pll7>, <&pll3x2>, <&pll7x2>; 65 + clock-output-names = "tcon-ch0-sclk"; 66 + }; 67 + 68 + - | 69 + clk@1c2012c { 70 + #clock-cells = <0>; 71 + compatible = "allwinner,sun4i-a10-tcon-ch1-clk"; 72 + reg = <0x01c2012c 0x4>; 73 + clocks = <&pll3>, <&pll7>, <&pll3x2>, <&pll7x2>; 74 + clock-output-names = "tcon-ch1-sclk"; 75 + }; 76 + 77 + ...
+166
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-usb-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-usb-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 USB Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The additional ID argument passed to the clock shall refer to 20 + the index of the output. 21 + 22 + "#reset-cells": 23 + const: 1 24 + 25 + compatible: 26 + enum: 27 + - allwinner,sun4i-a10-usb-clk 28 + - allwinner,sun5i-a13-usb-clk 29 + - allwinner,sun6i-a31-usb-clk 30 + - allwinner,sun8i-a23-usb-clk 31 + - allwinner,sun8i-h3-usb-clk 32 + 33 + reg: 34 + maxItems: 1 35 + 36 + clocks: 37 + maxItems: 1 38 + 39 + clock-output-names: 40 + minItems: 2 41 + maxItems: 8 42 + 43 + required: 44 + - "#clock-cells" 45 + - "#reset-cells" 46 + - compatible 47 + - reg 48 + - clocks 49 + - clock-output-names 50 + 51 + additionalProperties: false 52 + 53 + allOf: 54 + - if: 55 + properties: 56 + compatible: 57 + contains: 58 + const: allwinner,sun4i-a10-usb-clk 59 + 60 + then: 61 + properties: 62 + clock-output-names: 63 + maxItems: 3 64 + 65 + - if: 66 + properties: 67 + compatible: 68 + contains: 69 + const: allwinner,sun5i-a13-usb-clk 70 + 71 + then: 72 + properties: 73 + clock-output-names: 74 + maxItems: 2 75 + 76 + - if: 77 + properties: 78 + compatible: 79 + contains: 80 + const: allwinner,sun6i-a31-usb-clk 81 + 82 + then: 83 + properties: 84 + clock-output-names: 85 + maxItems: 6 86 + 87 + - if: 88 + properties: 89 + compatible: 90 + contains: 91 + const: allwinner,sun8i-a23-usb-clk 92 + 93 + then: 94 + properties: 95 + clock-output-names: 96 + maxItems: 5 97 + 98 + - if: 99 + properties: 100 + compatible: 101 + contains: 102 + const: allwinner,sun8i-h3-usb-clk 103 + 104 + then: 105 + properties: 106 + clock-output-names: 107 + maxItems: 8 108 + 109 + examples: 110 + - | 111 + clk@1c200cc { 112 + #clock-cells = <1>; 113 + #reset-cells = <1>; 114 + compatible = "allwinner,sun4i-a10-usb-clk"; 115 + reg = <0x01c200cc 0x4>; 116 + clocks = <&pll6 1>; 117 + clock-output-names = "usb_ohci0", "usb_ohci1", "usb_phy"; 118 + }; 119 + 120 + - | 121 + clk@1c200cc { 122 + #clock-cells = <1>; 123 + #reset-cells = <1>; 124 + compatible = "allwinner,sun5i-a13-usb-clk"; 125 + reg = <0x01c200cc 0x4>; 126 + clocks = <&pll6 1>; 127 + clock-output-names = "usb_ohci0", "usb_phy"; 128 + }; 129 + 130 + - | 131 + clk@1c200cc { 132 + #clock-cells = <1>; 133 + #reset-cells = <1>; 134 + compatible = "allwinner,sun6i-a31-usb-clk"; 135 + reg = <0x01c200cc 0x4>; 136 + clocks = <&osc24M>; 137 + clock-output-names = "usb_phy0", "usb_phy1", "usb_phy2", 138 + "usb_ohci0", "usb_ohci1", 139 + "usb_ohci2"; 140 + }; 141 + 142 + - | 143 + clk@1c200cc { 144 + #clock-cells = <1>; 145 + #reset-cells = <1>; 146 + compatible = "allwinner,sun8i-a23-usb-clk"; 147 + reg = <0x01c200cc 0x4>; 148 + clocks = <&osc24M>; 149 + clock-output-names = "usb_phy0", "usb_phy1", "usb_hsic", 150 + "usb_hsic_12M", "usb_ohci0"; 151 + }; 152 + 153 + - | 154 + clk@1c200cc { 155 + #clock-cells = <1>; 156 + #reset-cells = <1>; 157 + compatible = "allwinner,sun8i-h3-usb-clk"; 158 + reg = <0x01c200cc 0x4>; 159 + clocks = <&osc24M>; 160 + clock-output-names = "usb_phy0", "usb_phy1", 161 + "usb_phy2", "usb_phy3", 162 + "usb_ohci0", "usb_ohci1", 163 + "usb_ohci2", "usb_ohci3"; 164 + }; 165 + 166 + ...
+55
Documentation/devicetree/bindings/clock/allwinner,sun4i-a10-ve-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun4i-a10-ve-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Video Engine Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + "#reset-cells": 20 + const: 0 21 + 22 + compatible: 23 + const: allwinner,sun4i-a10-ve-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + clock-output-names: 32 + maxItems: 1 33 + 34 + required: 35 + - "#clock-cells" 36 + - "#reset-cells" 37 + - compatible 38 + - reg 39 + - clocks 40 + - clock-output-names 41 + 42 + additionalProperties: false 43 + 44 + examples: 45 + - | 46 + clk@1c2013c { 47 + #clock-cells = <0>; 48 + #reset-cells = <0>; 49 + compatible = "allwinner,sun4i-a10-ve-clk"; 50 + reg = <0x01c2013c 0x4>; 51 + clocks = <&pll4>; 52 + clock-output-names = "ve"; 53 + }; 54 + 55 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun5i-a13-ahb-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun5i-a13-ahb-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A13 AHB Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun5i-a13-ahb-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 3 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + ahb@1c20054 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun5i-a13-ahb-clk"; 47 + reg = <0x01c20054 0x4>; 48 + clocks = <&axi>, <&cpu>, <&pll6 1>; 49 + clock-output-names = "ahb"; 50 + }; 51 + 52 + ...
+53
Documentation/devicetree/bindings/clock/allwinner,sun6i-a31-pll6-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun6i-a31-pll6-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A31 Peripheral PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The first output is the regular PLL output, the second is a PLL 20 + output at twice the rate. 21 + 22 + compatible: 23 + const: allwinner,sun6i-a31-pll6-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + clock-output-names: 32 + maxItems: 2 33 + 34 + required: 35 + - "#clock-cells" 36 + - compatible 37 + - reg 38 + - clocks 39 + - clock-output-names 40 + 41 + additionalProperties: false 42 + 43 + examples: 44 + - | 45 + clk@1c20028 { 46 + #clock-cells = <1>; 47 + compatible = "allwinner,sun6i-a31-pll6-clk"; 48 + reg = <0x01c20028 0x4>; 49 + clocks = <&osc24M>; 50 + clock-output-names = "pll6", "pll6x2"; 51 + }; 52 + 53 + ...
+51
Documentation/devicetree/bindings/clock/allwinner,sun7i-a20-gmac-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun7i-a20-gmac-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A20 GMAC TX Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#clock-cells": 15 + const: 0 16 + 17 + compatible: 18 + const: allwinner,sun7i-a20-gmac-clk 19 + 20 + reg: 21 + maxItems: 1 22 + 23 + clocks: 24 + maxItems: 2 25 + description: > 26 + The parent clocks shall be fixed rate dummy clocks at 25 MHz and 27 + 125 MHz, respectively. 28 + 29 + clock-output-names: 30 + maxItems: 1 31 + 32 + required: 33 + - "#clock-cells" 34 + - compatible 35 + - reg 36 + - clocks 37 + - clock-output-names 38 + 39 + additionalProperties: false 40 + 41 + examples: 42 + - | 43 + clk@1c20164 { 44 + #clock-cells = <0>; 45 + compatible = "allwinner,sun7i-a20-gmac-clk"; 46 + reg = <0x01c20164 0x4>; 47 + clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; 48 + clock-output-names = "gmac_tx"; 49 + }; 50 + 51 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun7i-a20-out-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun7i-a20-out-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A20 Output Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun7i-a20-out-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 3 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + clk@1c201f0 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun7i-a20-out-clk"; 47 + reg = <0x01c201f0 0x4>; 48 + clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>; 49 + clock-output-names = "clk_out_a"; 50 + }; 51 + 52 + ...
+103
Documentation/devicetree/bindings/clock/allwinner,sun8i-h3-bus-gates-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun8i-h3-bus-gates-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Bus Gates Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + This additional argument passed to that clock is the offset of 20 + the bit controlling this particular gate in the register. 21 + 22 + compatible: 23 + const: allwinner,sun8i-h3-bus-gates-clk 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 4 30 + 31 + clock-names: 32 + maxItems: 4 33 + description: > 34 + The parent order must match the hardware programming order. 35 + 36 + clock-indices: 37 + minItems: 1 38 + maxItems: 64 39 + 40 + clock-output-names: 41 + minItems: 1 42 + maxItems: 64 43 + 44 + required: 45 + - "#clock-cells" 46 + - compatible 47 + - reg 48 + - clocks 49 + - clock-indices 50 + - clock-names 51 + - clock-output-names 52 + 53 + additionalProperties: false 54 + 55 + examples: 56 + - | 57 + clk@1c20060 { 58 + #clock-cells = <1>; 59 + compatible = "allwinner,sun8i-h3-bus-gates-clk"; 60 + reg = <0x01c20060 0x14>; 61 + clocks = <&ahb1>, <&ahb2>, <&apb1>, <&apb2>; 62 + clock-names = "ahb1", "ahb2", "apb1", "apb2"; 63 + clock-indices = <5>, <6>, <8>, 64 + <9>, <10>, <13>, 65 + <14>, <17>, <18>, 66 + <19>, <20>, 67 + <21>, <23>, 68 + <24>, <25>, 69 + <26>, <27>, 70 + <28>, <29>, 71 + <30>, <31>, <32>, 72 + <35>, <36>, <37>, 73 + <40>, <41>, <43>, 74 + <44>, <52>, <53>, 75 + <54>, <64>, 76 + <65>, <69>, <72>, 77 + <76>, <77>, <78>, 78 + <96>, <97>, <98>, 79 + <112>, <113>, 80 + <114>, <115>, 81 + <116>, <128>, <135>; 82 + clock-output-names = "bus_ce", "bus_dma", "bus_mmc0", 83 + "bus_mmc1", "bus_mmc2", "bus_nand", 84 + "bus_sdram", "bus_gmac", "bus_ts", 85 + "bus_hstimer", "bus_spi0", 86 + "bus_spi1", "bus_otg", 87 + "bus_otg_ehci0", "bus_ehci1", 88 + "bus_ehci2", "bus_ehci3", 89 + "bus_otg_ohci0", "bus_ohci1", 90 + "bus_ohci2", "bus_ohci3", "bus_ve", 91 + "bus_lcd0", "bus_lcd1", "bus_deint", 92 + "bus_csi", "bus_tve", "bus_hdmi", 93 + "bus_de", "bus_gpu", "bus_msgbox", 94 + "bus_spinlock", "bus_codec", 95 + "bus_spdif", "bus_pio", "bus_ths", 96 + "bus_i2s0", "bus_i2s1", "bus_i2s2", 97 + "bus_i2c0", "bus_i2c1", "bus_i2c2", 98 + "bus_uart0", "bus_uart1", 99 + "bus_uart2", "bus_uart3", 100 + "bus_scr", "bus_ephy", "bus_dbg"; 101 + }; 102 + 103 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-ahb-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-ahb-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 AHB Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun9i-a80-ahb-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 4 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + clk@6000060 { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun9i-a80-ahb-clk"; 47 + reg = <0x06000060 0x4>; 48 + clocks = <&gt_clk>, <&pll4>, <&pll12>, <&pll12>; 49 + clock-output-names = "ahb0"; 50 + }; 51 + 52 + ...
+63
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-apb0-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-apb0-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 APB0 Bus Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + enum: 21 + - allwinner,sun9i-a80-apb0-clk 22 + - allwinner,sun9i-a80-apb1-clk 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + clocks: 28 + maxItems: 2 29 + description: > 30 + The parent order must match the hardware programming order. 31 + 32 + clock-output-names: 33 + maxItems: 1 34 + 35 + required: 36 + - "#clock-cells" 37 + - compatible 38 + - reg 39 + - clocks 40 + - clock-output-names 41 + 42 + additionalProperties: false 43 + 44 + examples: 45 + - | 46 + clk@6000070 { 47 + #clock-cells = <0>; 48 + compatible = "allwinner,sun9i-a80-apb0-clk"; 49 + reg = <0x06000070 0x4>; 50 + clocks = <&osc24M>, <&pll4>; 51 + clock-output-names = "apb0"; 52 + }; 53 + 54 + - | 55 + clk@6000074 { 56 + #clock-cells = <0>; 57 + compatible = "allwinner,sun9i-a80-apb1-clk"; 58 + reg = <0x06000074 0x4>; 59 + clocks = <&osc24M>, <&pll4>; 60 + clock-output-names = "apb1"; 61 + }; 62 + 63 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-cpus-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-cpus-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 CPUS Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun9i-a80-cpus-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 4 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + clk@8001410 { 45 + compatible = "allwinner,sun9i-a80-cpus-clk"; 46 + reg = <0x08001410 0x4>; 47 + #clock-cells = <0>; 48 + clocks = <&osc32k>, <&osc24M>, <&pll4>, <&pll3>; 49 + clock-output-names = "cpus"; 50 + }; 51 + 52 + ...
+52
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-gt-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-gt-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 GT Bus Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun9i-a80-gt-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 4 27 + description: > 28 + The parent order must match the hardware programming order. 29 + 30 + clock-output-names: 31 + maxItems: 1 32 + 33 + required: 34 + - "#clock-cells" 35 + - compatible 36 + - reg 37 + - clocks 38 + - clock-output-names 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + clk@0600005c { 45 + #clock-cells = <0>; 46 + compatible = "allwinner,sun9i-a80-gt-clk"; 47 + reg = <0x0600005c 0x4>; 48 + clocks = <&osc24M>, <&pll4>, <&pll12>, <&pll12>; 49 + clock-output-names = "gt"; 50 + }; 51 + 52 + ...
+68
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-mmc-config-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-mmc-config-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 MMC Configuration Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + description: > 16 + There is one clock/reset output per mmc controller. The number of 17 + outputs is determined by the size of the address block, which is 18 + related to the overall mmc block. 19 + 20 + properties: 21 + "#clock-cells": 22 + const: 1 23 + description: > 24 + The additional ID argument passed to the clock shall refer to 25 + the index of the output. 26 + 27 + "#reset-cells": 28 + const: 1 29 + 30 + compatible: 31 + const: allwinner,sun9i-a80-mmc-config-clk 32 + 33 + reg: 34 + maxItems: 1 35 + 36 + clocks: 37 + maxItems: 1 38 + 39 + resets: 40 + maxItems: 1 41 + 42 + clock-output-names: 43 + maxItems: 4 44 + 45 + required: 46 + - "#clock-cells" 47 + - "#reset-cells" 48 + - compatible 49 + - reg 50 + - clocks 51 + - clock-output-names 52 + 53 + additionalProperties: false 54 + 55 + examples: 56 + - | 57 + clk@1c13000 { 58 + #clock-cells = <1>; 59 + #reset-cells = <1>; 60 + compatible = "allwinner,sun9i-a80-mmc-config-clk"; 61 + reg = <0x01c13000 0x10>; 62 + clocks = <&ahb0_gates 8>; 63 + resets = <&ahb0_resets 8>; 64 + clock-output-names = "mmc0_config", "mmc1_config", 65 + "mmc2_config", "mmc3_config"; 66 + }; 67 + 68 + ...
+50
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-pll4-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-pll4-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 Peripheral PLL Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 0 18 + 19 + compatible: 20 + const: allwinner,sun9i-a80-pll4-clk 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-output-names: 29 + maxItems: 1 30 + 31 + required: 32 + - "#clock-cells" 33 + - compatible 34 + - reg 35 + - clocks 36 + - clock-output-names 37 + 38 + additionalProperties: false 39 + 40 + examples: 41 + - | 42 + clk@600000c { 43 + #clock-cells = <0>; 44 + compatible = "allwinner,sun9i-a80-pll4-clk"; 45 + reg = <0x0600000c 0x4>; 46 + clocks = <&osc24M>; 47 + clock-output-names = "pll4"; 48 + }; 49 + 50 + ...
+60
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-usb-mod-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-usb-mod-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 USB Module Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The additional ID argument passed to the clock shall refer to 20 + the index of the output. 21 + 22 + "#reset-cells": 23 + const: 1 24 + 25 + compatible: 26 + const: allwinner,sun9i-a80-usb-mod-clk 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + clocks: 32 + maxItems: 1 33 + 34 + clock-output-names: 35 + maxItems: 6 36 + 37 + required: 38 + - "#clock-cells" 39 + - "#reset-cells" 40 + - compatible 41 + - reg 42 + - clocks 43 + - clock-output-names 44 + 45 + additionalProperties: false 46 + 47 + examples: 48 + - | 49 + clk@a08000 { 50 + #clock-cells = <1>; 51 + #reset-cells = <1>; 52 + compatible = "allwinner,sun9i-a80-usb-mod-clk"; 53 + reg = <0x00a08000 0x4>; 54 + clocks = <&ahb1_gates 1>; 55 + clock-output-names = "usb0_ahb", "usb_ohci0", 56 + "usb1_ahb", "usb_ohci1", 57 + "usb2_ahb", "usb_ohci2"; 58 + }; 59 + 60 + ...
+60
Documentation/devicetree/bindings/clock/allwinner,sun9i-a80-usb-phy-clk.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/allwinner,sun9i-a80-usb-phy-clk.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A80 USB PHY Clock Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + "#clock-cells": 17 + const: 1 18 + description: > 19 + The additional ID argument passed to the clock shall refer to 20 + the index of the output. 21 + 22 + "#reset-cells": 23 + const: 1 24 + 25 + compatible: 26 + const: allwinner,sun9i-a80-usb-phy-clk 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + clocks: 32 + maxItems: 1 33 + 34 + clock-output-names: 35 + maxItems: 6 36 + 37 + required: 38 + - "#clock-cells" 39 + - "#reset-cells" 40 + - compatible 41 + - reg 42 + - clocks 43 + - clock-output-names 44 + 45 + additionalProperties: false 46 + 47 + examples: 48 + - | 49 + clk@a08004 { 50 + #clock-cells = <1>; 51 + #reset-cells = <1>; 52 + compatible = "allwinner,sun9i-a80-usb-phy-clk"; 53 + reg = <0x00a08004 0x4>; 54 + clocks = <&ahb1_gates 1>; 55 + clock-output-names = "usb_phy0", "usb_hsic1_480M", 56 + "usb_phy1", "usb_hsic2_480M", 57 + "usb_phy2", "usb_hsic_12M"; 58 + }; 59 + 60 + ...
-60
Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt
··· 1 - STMicroelectronics STM32 Peripheral Reset Clock Controller 2 - ========================================================== 3 - 4 - The RCC IP is both a reset and a clock controller. 5 - 6 - RCC makes also power management (resume/supend and wakeup interrupt). 7 - 8 - Please also refer to reset.txt for common reset controller binding usage. 9 - 10 - Please also refer to clock-bindings.txt for common clock controller 11 - binding usage. 12 - 13 - 14 - Required properties: 15 - - compatible: "st,stm32mp1-rcc", "syscon" 16 - - reg: should be register base and length as documented in the datasheet 17 - - #clock-cells: 1, device nodes should specify the clock in their 18 - "clocks" property, containing a phandle to the clock device node, 19 - an index specifying the clock to use. 20 - - #reset-cells: Shall be 1 21 - - interrupts: Should contain a general interrupt line and a interrupt line 22 - to the wake-up of processor (CSTOP). 23 - 24 - Example: 25 - rcc: rcc@50000000 { 26 - compatible = "st,stm32mp1-rcc", "syscon"; 27 - reg = <0x50000000 0x1000>; 28 - #clock-cells = <1>; 29 - #reset-cells = <1>; 30 - interrupts = <GIC_SPI 5 IRQ_TYPE_NONE>, 31 - <GIC_SPI 145 IRQ_TYPE_NONE>; 32 - }; 33 - 34 - Specifying clocks 35 - ================= 36 - 37 - All available clocks are defined as preprocessor macros in 38 - dt-bindings/clock/stm32mp1-clks.h header and can be used in device 39 - tree sources. 40 - 41 - Specifying softreset control of devices 42 - ======================================= 43 - 44 - Device nodes should specify the reset channel required in their "resets" 45 - property, containing a phandle to the reset device node and an index specifying 46 - which channel to use. 47 - The index is the bit number within the RCC registers bank, starting from RCC 48 - base address. 49 - It is calculated as: index = register_offset / 4 * 32 + bit_offset. 50 - Where bit_offset is the bit offset within the register. 51 - 52 - For example on STM32MP1, for LTDC reset: 53 - ltdc = APB4_RSTSETR_offset / 4 * 32 + LTDC_bit_offset 54 - = 0x180 / 4 * 32 + 0 = 3072 55 - 56 - The list of valid indices for STM32MP1 is available in: 57 - include/dt-bindings/reset-controller/stm32mp1-resets.h 58 - 59 - This file implements defines like: 60 - #define LTDC_R 3072
+79
Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/bindings/clock/st,stm32mp1-rcc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Reset Clock Controller Binding 8 + 9 + maintainers: 10 + - Gabriel Fernandez <gabriel.fernandez@st.com> 11 + 12 + description: | 13 + The RCC IP is both a reset and a clock controller. 14 + RCC makes also power management (resume/supend and wakeup interrupt). 15 + Please also refer to reset.txt for common reset controller binding usage. 16 + 17 + This binding uses common clock bindings 18 + Documentation/devicetree/bindings/clock/clock-bindings.txt 19 + 20 + Specifying clocks 21 + ================= 22 + 23 + All available clocks are defined as preprocessor macros in 24 + dt-bindings/clock/stm32mp1-clks.h header and can be used in device 25 + tree sources. 26 + 27 + Specifying softreset control of devices 28 + ======================================= 29 + 30 + Device nodes should specify the reset channel required in their "resets" 31 + property, containing a phandle to the reset device node and an index specifying 32 + which channel to use. 33 + The index is the bit number within the RCC registers bank, starting from RCC 34 + base address. 35 + It is calculated as: index = register_offset / 4 * 32 + bit_offset. 36 + Where bit_offset is the bit offset within the register. 37 + 38 + For example on STM32MP1, for LTDC reset: 39 + ltdc = APB4_RSTSETR_offset / 4 * 32 + LTDC_bit_offset 40 + = 0x180 / 4 * 32 + 0 = 3072 41 + 42 + The list of valid indices for STM32MP1 is available in: 43 + include/dt-bindings/reset-controller/stm32mp1-resets.h 44 + 45 + This file implements defines like: 46 + #define LTDC_R 3072 47 + 48 + properties: 49 + "#clock-cells": 50 + const: 1 51 + 52 + "#reset-cells": 53 + const: 1 54 + 55 + compatible: 56 + items: 57 + - const: st,stm32mp1-rcc 58 + - const: syscon 59 + 60 + reg: 61 + maxItems: 1 62 + 63 + required: 64 + - "#clock-cells" 65 + - "#reset-cells" 66 + - compatible 67 + - reg 68 + 69 + additionalProperties: false 70 + 71 + examples: 72 + - | 73 + rcc: rcc@50000000 { 74 + compatible = "st,stm32mp1-rcc", "syscon"; 75 + reg = <0x50000000 0x1000>; 76 + #clock-cells = <1>; 77 + #reset-cells = <1>; 78 + }; 79 + ...
-225
Documentation/devicetree/bindings/clock/sunxi.txt
··· 1 - Device Tree Clock bindings for arch-sunxi 2 - 3 - This binding uses the common clock binding[1]. 4 - 5 - [1] Documentation/devicetree/bindings/clock/clock-bindings.txt 6 - 7 - Required properties: 8 - - compatible : shall be one of the following: 9 - "allwinner,sun4i-a10-osc-clk" - for a gatable oscillator 10 - "allwinner,sun4i-a10-pll1-clk" - for the main PLL clock and PLL4 11 - "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 12 - "allwinner,sun8i-a23-pll1-clk" - for the main PLL clock on A23 13 - "allwinner,sun4i-a10-pll3-clk" - for the video PLL clock on A10 14 - "allwinner,sun9i-a80-pll4-clk" - for the peripheral PLLs on A80 15 - "allwinner,sun4i-a10-pll5-clk" - for the PLL5 clock 16 - "allwinner,sun4i-a10-pll6-clk" - for the PLL6 clock 17 - "allwinner,sun6i-a31-pll6-clk" - for the PLL6 clock on A31 18 - "allwinner,sun9i-a80-gt-clk" - for the GT bus clock on A80 19 - "allwinner,sun4i-a10-cpu-clk" - for the CPU multiplexer clock 20 - "allwinner,sun4i-a10-axi-clk" - for the AXI clock 21 - "allwinner,sun8i-a23-axi-clk" - for the AXI clock on A23 22 - "allwinner,sun4i-a10-gates-clk" - for generic gates on all compatible SoCs 23 - "allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates 24 - "allwinner,sun4i-a10-ahb-clk" - for the AHB clock 25 - "allwinner,sun5i-a13-ahb-clk" - for the AHB clock on A13 26 - "allwinner,sun9i-a80-ahb-clk" - for the AHB bus clocks on A80 27 - "allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10 28 - "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13 29 - "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s 30 - "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 31 - "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 32 - "allwinner,sun9i-a80-cpus-clk" - for the CPUS on A80 33 - "allwinner,sun6i-a31-ahb1-clk" - for the AHB1 clock on A31 34 - "allwinner,sun8i-h3-ahb2-clk" - for the AHB2 clock on H3 35 - "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 36 - "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 37 - "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 38 - "allwinner,sun9i-a80-ahb1-gates-clk" - for the AHB1 gates on A80 39 - "allwinner,sun9i-a80-ahb2-gates-clk" - for the AHB2 gates on A80 40 - "allwinner,sun4i-a10-apb0-clk" - for the APB0 clock 41 - "allwinner,sun6i-a31-apb0-clk" - for the APB0 clock on A31 42 - "allwinner,sun8i-a23-apb0-clk" - for the APB0 clock on A23 43 - "allwinner,sun9i-a80-apb0-clk" - for the APB0 bus clock on A80 44 - "allwinner,sun8i-a83t-apb0-gates-clk" - for the APB0 gates on A83T 45 - "allwinner,sun4i-a10-apb0-gates-clk" - for the APB0 gates on A10 46 - "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 47 - "allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s 48 - "allwinner,sun6i-a31-apb0-gates-clk" - for the APB0 gates on A31 49 - "allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20 50 - "allwinner,sun8i-a23-apb0-gates-clk" - for the APB0 gates on A23 51 - "allwinner,sun8i-h3-apb0-gates-clk" - for the APB0 gates on H3 52 - "allwinner,sun9i-a80-apb0-gates-clk" - for the APB0 gates on A80 53 - "allwinner,sun4i-a10-apb1-clk" - for the APB1 clock 54 - "allwinner,sun9i-a80-apb1-clk" - for the APB1 bus clock on A80 55 - "allwinner,sun4i-a10-apb1-gates-clk" - for the APB1 gates on A10 56 - "allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13 57 - "allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s 58 - "allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31 59 - "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 60 - "allwinner,sun8i-a23-apb1-gates-clk" - for the APB1 gates on A23 61 - "allwinner,sun9i-a80-apb1-gates-clk" - for the APB1 gates on A80 62 - "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 63 - "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 64 - "allwinner,sun8i-a83t-bus-gates-clk" - for the bus gates on A83T 65 - "allwinner,sun8i-h3-bus-gates-clk" - for the bus gates on H3 66 - "allwinner,sun9i-a80-apbs-gates-clk" - for the APBS gates on A80 67 - "allwinner,sun4i-a10-display-clk" - for the display clocks on the A10 68 - "allwinner,sun4i-a10-dram-gates-clk" - for the DRAM gates on A10 69 - "allwinner,sun5i-a13-dram-gates-clk" - for the DRAM gates on A13 70 - "allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 71 - "allwinner,sun4i-a10-mmc-clk" - for the MMC clock 72 - "allwinner,sun9i-a80-mmc-clk" - for mmc module clocks on A80 73 - "allwinner,sun9i-a80-mmc-config-clk" - for mmc gates + resets on A80 74 - "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks 75 - "allwinner,sun9i-a80-mod0-clk" - for module 0 (storage) clocks on A80 76 - "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 77 - "allwinner,sun7i-a20-out-clk" - for the external output clocks 78 - "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 79 - "allwinner,sun4i-a10-tcon-ch0-clk" - for the TCON channel 0 clock on the A10 80 - "allwinner,sun4i-a10-tcon-ch1-clk" - for the TCON channel 1 clock on the A10 81 - "allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20 82 - "allwinner,sun5i-a13-usb-clk" - for usb gates + resets on A13 83 - "allwinner,sun6i-a31-usb-clk" - for usb gates + resets on A31 84 - "allwinner,sun8i-a23-usb-clk" - for usb gates + resets on A23 85 - "allwinner,sun8i-h3-usb-clk" - for usb gates + resets on H3 86 - "allwinner,sun9i-a80-usb-mod-clk" - for usb gates + resets on A80 87 - "allwinner,sun9i-a80-usb-phy-clk" - for usb phy gates + resets on A80 88 - "allwinner,sun4i-a10-ve-clk" - for the Video Engine clock 89 - "allwinner,sun6i-a31-display-clk" - for the display clocks 90 - 91 - Required properties for all clocks: 92 - - reg : shall be the control register address for the clock. 93 - - clocks : shall be the input parent clock(s) phandle for the clock. For 94 - multiplexed clocks, the list order must match the hardware 95 - programming order. 96 - - #clock-cells : from common clock binding; shall be set to 0 except for 97 - the following compatibles where it shall be set to 1: 98 - "allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", 99 - "allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk", 100 - "allwinner,*-usb-clk", "allwinner,*-mmc-clk", 101 - "allwinner,*-mmc-config-clk" 102 - - clock-output-names : shall be the corresponding names of the outputs. 103 - If the clock module only has one output, the name shall be the 104 - module name. 105 - 106 - And "allwinner,*-usb-clk" clocks also require: 107 - - reset-cells : shall be set to 1 108 - 109 - The "allwinner,sun4i-a10-ve-clk" clock also requires: 110 - - reset-cells : shall be set to 0 111 - 112 - The "allwinner,sun9i-a80-mmc-config-clk" clock also requires: 113 - - #reset-cells : shall be set to 1 114 - - resets : shall be the reset control phandle for the mmc block. 115 - 116 - For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate 117 - dummy clocks at 25 MHz and 125 MHz, respectively. See example. 118 - 119 - Clock consumers should specify the desired clocks they use with a 120 - "clocks" phandle cell. Consumers that are using a gated clock should 121 - provide an additional ID in their clock property. This ID is the 122 - offset of the bit controlling this particular gate in the register. 123 - For the other clocks with "#clock-cells" = 1, the additional ID shall 124 - refer to the index of the output. 125 - 126 - For "allwinner,sun6i-a31-pll6-clk", there are 2 outputs. The first output 127 - is the normal PLL6 output, or "pll6". The second output is rate doubled 128 - PLL6, or "pll6x2". 129 - 130 - The "allwinner,*-mmc-clk" clocks have three different outputs: the 131 - main clock, with the ID 0, and the output and sample clocks, with the 132 - IDs 1 and 2, respectively. 133 - 134 - The "allwinner,sun9i-a80-mmc-config-clk" clock has one clock/reset output 135 - per mmc controller. The number of outputs is determined by the size of 136 - the address block, which is related to the overall mmc block. 137 - 138 - For example: 139 - 140 - osc24M: clk@1c20050 { 141 - #clock-cells = <0>; 142 - compatible = "allwinner,sun4i-a10-osc-clk"; 143 - reg = <0x01c20050 0x4>; 144 - clocks = <&osc24M_fixed>; 145 - clock-output-names = "osc24M"; 146 - }; 147 - 148 - pll1: clk@1c20000 { 149 - #clock-cells = <0>; 150 - compatible = "allwinner,sun4i-a10-pll1-clk"; 151 - reg = <0x01c20000 0x4>; 152 - clocks = <&osc24M>; 153 - clock-output-names = "pll1"; 154 - }; 155 - 156 - pll5: clk@1c20020 { 157 - #clock-cells = <1>; 158 - compatible = "allwinner,sun4i-pll5-clk"; 159 - reg = <0x01c20020 0x4>; 160 - clocks = <&osc24M>; 161 - clock-output-names = "pll5_ddr", "pll5_other"; 162 - }; 163 - 164 - pll6: clk@1c20028 { 165 - #clock-cells = <1>; 166 - compatible = "allwinner,sun6i-a31-pll6-clk"; 167 - reg = <0x01c20028 0x4>; 168 - clocks = <&osc24M>; 169 - clock-output-names = "pll6", "pll6x2"; 170 - }; 171 - 172 - cpu: cpu@1c20054 { 173 - #clock-cells = <0>; 174 - compatible = "allwinner,sun4i-a10-cpu-clk"; 175 - reg = <0x01c20054 0x4>; 176 - clocks = <&osc32k>, <&osc24M>, <&pll1>; 177 - clock-output-names = "cpu"; 178 - }; 179 - 180 - mmc0_clk: clk@1c20088 { 181 - #clock-cells = <1>; 182 - compatible = "allwinner,sun4i-a10-mmc-clk"; 183 - reg = <0x01c20088 0x4>; 184 - clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 185 - clock-output-names = "mmc0", "mmc0_output", "mmc0_sample"; 186 - }; 187 - 188 - mii_phy_tx_clk: clk@2 { 189 - #clock-cells = <0>; 190 - compatible = "fixed-clock"; 191 - clock-frequency = <25000000>; 192 - clock-output-names = "mii_phy_tx"; 193 - }; 194 - 195 - gmac_int_tx_clk: clk@3 { 196 - #clock-cells = <0>; 197 - compatible = "fixed-clock"; 198 - clock-frequency = <125000000>; 199 - clock-output-names = "gmac_int_tx"; 200 - }; 201 - 202 - gmac_clk: clk@1c20164 { 203 - #clock-cells = <0>; 204 - compatible = "allwinner,sun7i-a20-gmac-clk"; 205 - reg = <0x01c20164 0x4>; 206 - /* 207 - * The first clock must be fixed at 25MHz; 208 - * the second clock must be fixed at 125MHz 209 - */ 210 - clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; 211 - clock-output-names = "gmac"; 212 - }; 213 - 214 - mmc_config_clk: clk@1c13000 { 215 - compatible = "allwinner,sun9i-a80-mmc-config-clk"; 216 - reg = <0x01c13000 0x10>; 217 - clocks = <&ahb0_gates 8>; 218 - clock-names = "ahb"; 219 - resets = <&ahb0_resets 8>; 220 - reset-names = "ahb"; 221 - #clock-cells = <1>; 222 - #reset-cells = <1>; 223 - clock-output-names = "mmc0_config", "mmc1_config", 224 - "mmc2_config", "mmc3_config"; 225 - };
+102
Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/dma/st,stm32-dma.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 DMA Controller bindings 8 + 9 + description: | 10 + The STM32 DMA is a general-purpose direct memory access controller capable of 11 + supporting 8 independent DMA channels. Each channel can have up to 8 requests. 12 + DMA clients connected to the STM32 DMA controller must use the format 13 + described in the dma.txt file, using a four-cell specifier for each 14 + channel: a phandle to the DMA controller plus the following four integer cells: 15 + 1. The channel id 16 + 2. The request line number 17 + 3. A 32bit mask specifying the DMA channel configuration which are device 18 + dependent: 19 + -bit 9: Peripheral Increment Address 20 + 0x0: no address increment between transfers 21 + 0x1: increment address between transfers 22 + -bit 10: Memory Increment Address 23 + 0x0: no address increment between transfers 24 + 0x1: increment address between transfers 25 + -bit 15: Peripheral Increment Offset Size 26 + 0x0: offset size is linked to the peripheral bus width 27 + 0x1: offset size is fixed to 4 (32-bit alignment) 28 + -bit 16-17: Priority level 29 + 0x0: low 30 + 0x1: medium 31 + 0x2: high 32 + 0x3: very high 33 + 4. A 32bit bitfield value specifying DMA features which are device dependent: 34 + -bit 0-1: DMA FIFO threshold selection 35 + 0x0: 1/4 full FIFO 36 + 0x1: 1/2 full FIFO 37 + 0x2: 3/4 full FIFO 38 + 0x3: full FIFO 39 + 40 + maintainers: 41 + - Amelie Delaunay <amelie.delaunay@st.com> 42 + 43 + allOf: 44 + - $ref: "dma-controller.yaml#" 45 + 46 + properties: 47 + "#dma-cells": 48 + const: 4 49 + 50 + compatible: 51 + const: st,stm32-dma 52 + 53 + reg: 54 + maxItems: 1 55 + 56 + clocks: 57 + maxItems: 1 58 + 59 + interrupts: 60 + maxItems: 8 61 + description: Should contain all of the per-channel DMA 62 + interrupts in ascending order with respect to the 63 + DMA channel index. 64 + 65 + resets: 66 + maxItems: 1 67 + 68 + st,mem2mem: 69 + $ref: /schemas/types.yaml#/definitions/flag 70 + description: if defined, it indicates that the controller 71 + supports memory-to-memory transfer 72 + 73 + required: 74 + - compatible 75 + - reg 76 + - clocks 77 + - interrupts 78 + 79 + examples: 80 + - | 81 + #include <dt-bindings/interrupt-controller/arm-gic.h> 82 + #include <dt-bindings/clock/stm32mp1-clks.h> 83 + #include <dt-bindings/reset/stm32mp1-resets.h> 84 + dma-controller@40026400 { 85 + compatible = "st,stm32-dma"; 86 + reg = <0x40026400 0x400>; 87 + interrupts = <56>, 88 + <57>, 89 + <58>, 90 + <59>, 91 + <60>, 92 + <68>, 93 + <69>, 94 + <70>; 95 + clocks = <&clk_hclk>; 96 + #dma-cells = <4>; 97 + st,mem2mem; 98 + resets = <&rcc 150>; 99 + dma-requests = <8>; 100 + }; 101 + 102 + ...
+52
Documentation/devicetree/bindings/dma/st,stm32-dmamux.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/dma/st,stm32-dmamux.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 DMA MUX (DMA request router) bindings 8 + 9 + maintainers: 10 + - Amelie Delaunay <amelie.delaunay@st.com> 11 + 12 + allOf: 13 + - $ref: "dma-router.yaml#" 14 + 15 + properties: 16 + "#dma-cells": 17 + const: 3 18 + 19 + compatible: 20 + const: st,stm32h7-dmamux 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + resets: 29 + maxItems: 1 30 + 31 + required: 32 + - compatible 33 + - reg 34 + - dma-masters 35 + 36 + examples: 37 + - | 38 + #include <dt-bindings/interrupt-controller/arm-gic.h> 39 + #include <dt-bindings/clock/stm32mp1-clks.h> 40 + #include <dt-bindings/reset/stm32mp1-resets.h> 41 + dma-router@40020800 { 42 + compatible = "st,stm32h7-dmamux"; 43 + reg = <0x40020800 0x3c>; 44 + #dma-cells = <3>; 45 + dma-requests = <128>; 46 + dma-channels = <16>; 47 + dma-masters = <&dma1 &dma2>; 48 + clocks = <&timer_clk>; 49 + }; 50 + 51 + ... 52 +
+105
Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/dma/st,stm32-mdma.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 MDMA Controller bindings 8 + 9 + description: | 10 + The STM32 MDMA is a general-purpose direct memory access controller capable of 11 + supporting 64 independent DMA channels with 256 HW requests. 12 + DMA clients connected to the STM32 MDMA controller must use the format 13 + described in the dma.txt file, using a five-cell specifier for each channel: 14 + a phandle to the MDMA controller plus the following five integer cells: 15 + 1. The request line number 16 + 2. The priority level 17 + 0x0: Low 18 + 0x1: Medium 19 + 0x2: High 20 + 0x3: Very high 21 + 3. A 32bit mask specifying the DMA channel configuration 22 + -bit 0-1: Source increment mode 23 + 0x0: Source address pointer is fixed 24 + 0x2: Source address pointer is incremented after each data transfer 25 + 0x3: Source address pointer is decremented after each data transfer 26 + -bit 2-3: Destination increment mode 27 + 0x0: Destination address pointer is fixed 28 + 0x2: Destination address pointer is incremented after each data transfer 29 + 0x3: Destination address pointer is decremented after each data transfer 30 + -bit 8-9: Source increment offset size 31 + 0x0: byte (8bit) 32 + 0x1: half-word (16bit) 33 + 0x2: word (32bit) 34 + 0x3: double-word (64bit) 35 + -bit 10-11: Destination increment offset size 36 + 0x0: byte (8bit) 37 + 0x1: half-word (16bit) 38 + 0x2: word (32bit) 39 + 0x3: double-word (64bit) 40 + -bit 25-18: The number of bytes to be transferred in a single transfer 41 + (min = 1 byte, max = 128 bytes) 42 + -bit 29:28: Trigger Mode 43 + 0x00: Each MDMA request triggers a buffer transfer (max 128 bytes) 44 + 0x1: Each MDMA request triggers a block transfer (max 64K bytes) 45 + 0x2: Each MDMA request triggers a repeated block transfer 46 + 0x3: Each MDMA request triggers a linked list transfer 47 + 4. A 32bit value specifying the register to be used to acknowledge the request 48 + if no HW ack signal is used by the MDMA client 49 + 5. A 32bit mask specifying the value to be written to acknowledge the request 50 + if no HW ack signal is used by the MDMA client 51 + 52 + maintainers: 53 + - Amelie Delaunay <amelie.delaunay@st.com> 54 + 55 + allOf: 56 + - $ref: "dma-controller.yaml#" 57 + 58 + properties: 59 + "#dma-cells": 60 + const: 5 61 + 62 + compatible: 63 + const: st,stm32h7-mdma 64 + 65 + reg: 66 + maxItems: 1 67 + 68 + clocks: 69 + maxItems: 1 70 + 71 + interrupts: 72 + maxItems: 1 73 + 74 + resets: 75 + maxItems: 1 76 + 77 + st,ahb-addr-masks: 78 + $ref: /schemas/types.yaml#/definitions/uint32-array 79 + description: Array of u32 mask to list memory devices addressed via AHB bus. 80 + 81 + required: 82 + - compatible 83 + - reg 84 + - clocks 85 + - interrupts 86 + 87 + examples: 88 + - | 89 + #include <dt-bindings/interrupt-controller/arm-gic.h> 90 + #include <dt-bindings/clock/stm32mp1-clks.h> 91 + #include <dt-bindings/reset/stm32mp1-resets.h> 92 + dma-controller@52000000 { 93 + compatible = "st,stm32h7-mdma"; 94 + reg = <0x52000000 0x1000>; 95 + interrupts = <122>; 96 + clocks = <&timer_clk>; 97 + resets = <&rcc 992>; 98 + #dma-cells = <5>; 99 + dma-channels = <16>; 100 + dma-requests = <32>; 101 + st,ahb-addr-masks = <0x20000000>, <0x00000000>; 102 + }; 103 + 104 + ... 105 +
-83
Documentation/devicetree/bindings/dma/stm32-dma.txt
··· 1 - * STMicroelectronics STM32 DMA controller 2 - 3 - The STM32 DMA is a general-purpose direct memory access controller capable of 4 - supporting 8 independent DMA channels. Each channel can have up to 8 requests. 5 - 6 - Required properties: 7 - - compatible: Should be "st,stm32-dma" 8 - - reg: Should contain DMA registers location and length. This should include 9 - all of the per-channel registers. 10 - - interrupts: Should contain all of the per-channel DMA interrupts in 11 - ascending order with respect to the DMA channel index. 12 - - clocks: Should contain the input clock of the DMA instance. 13 - - #dma-cells : Must be <4>. See DMA client paragraph for more details. 14 - 15 - Optional properties: 16 - - dma-requests : Number of DMA requests supported. 17 - - resets: Reference to a reset controller asserting the DMA controller 18 - - st,mem2mem: boolean; if defined, it indicates that the controller supports 19 - memory-to-memory transfer 20 - 21 - Example: 22 - 23 - dma2: dma-controller@40026400 { 24 - compatible = "st,stm32-dma"; 25 - reg = <0x40026400 0x400>; 26 - interrupts = <56>, 27 - <57>, 28 - <58>, 29 - <59>, 30 - <60>, 31 - <68>, 32 - <69>, 33 - <70>; 34 - clocks = <&clk_hclk>; 35 - #dma-cells = <4>; 36 - st,mem2mem; 37 - resets = <&rcc 150>; 38 - dma-requests = <8>; 39 - }; 40 - 41 - * DMA client 42 - 43 - DMA clients connected to the STM32 DMA controller must use the format 44 - described in the dma.txt file, using a four-cell specifier for each 45 - channel: a phandle to the DMA controller plus the following four integer cells: 46 - 47 - 1. The channel id 48 - 2. The request line number 49 - 3. A 32bit mask specifying the DMA channel configuration which are device 50 - dependent: 51 - -bit 9: Peripheral Increment Address 52 - 0x0: no address increment between transfers 53 - 0x1: increment address between transfers 54 - -bit 10: Memory Increment Address 55 - 0x0: no address increment between transfers 56 - 0x1: increment address between transfers 57 - -bit 15: Peripheral Increment Offset Size 58 - 0x0: offset size is linked to the peripheral bus width 59 - 0x1: offset size is fixed to 4 (32-bit alignment) 60 - -bit 16-17: Priority level 61 - 0x0: low 62 - 0x1: medium 63 - 0x2: high 64 - 0x3: very high 65 - 4. A 32bit bitfield value specifying DMA features which are device dependent: 66 - -bit 0-1: DMA FIFO threshold selection 67 - 0x0: 1/4 full FIFO 68 - 0x1: 1/2 full FIFO 69 - 0x2: 3/4 full FIFO 70 - 0x3: full FIFO 71 - 72 - 73 - Example: 74 - 75 - usart1: serial@40011000 { 76 - compatible = "st,stm32-uart"; 77 - reg = <0x40011000 0x400>; 78 - interrupts = <37>; 79 - clocks = <&clk_pclk2>; 80 - dmas = <&dma2 2 4 0x10400 0x3>, 81 - <&dma2 7 5 0x10200 0x3>; 82 - dma-names = "rx", "tx"; 83 - };
-84
Documentation/devicetree/bindings/dma/stm32-dmamux.txt
··· 1 - STM32 DMA MUX (DMA request router) 2 - 3 - Required properties: 4 - - compatible: "st,stm32h7-dmamux" 5 - - reg: Memory map for accessing module 6 - - #dma-cells: Should be set to <3>. 7 - First parameter is request line number. 8 - Second is DMA channel configuration 9 - Third is Fifo threshold 10 - For more details about the three cells, please see 11 - stm32-dma.txt documentation binding file 12 - - dma-masters: Phandle pointing to the DMA controllers. 13 - Several controllers are allowed. Only "st,stm32-dma" DMA 14 - compatible are supported. 15 - 16 - Optional properties: 17 - - dma-channels : Number of DMA requests supported. 18 - - dma-requests : Number of DMAMUX requests supported. 19 - - resets: Reference to a reset controller asserting the DMA controller 20 - - clocks: Input clock of the DMAMUX instance. 21 - 22 - Example: 23 - 24 - /* DMA controller 1 */ 25 - dma1: dma-controller@40020000 { 26 - compatible = "st,stm32-dma"; 27 - reg = <0x40020000 0x400>; 28 - interrupts = <11>, 29 - <12>, 30 - <13>, 31 - <14>, 32 - <15>, 33 - <16>, 34 - <17>, 35 - <47>; 36 - clocks = <&timer_clk>; 37 - #dma-cells = <4>; 38 - st,mem2mem; 39 - resets = <&rcc 150>; 40 - dma-channels = <8>; 41 - dma-requests = <8>; 42 - }; 43 - 44 - /* DMA controller 1 */ 45 - dma2: dma@40020400 { 46 - compatible = "st,stm32-dma"; 47 - reg = <0x40020400 0x400>; 48 - interrupts = <56>, 49 - <57>, 50 - <58>, 51 - <59>, 52 - <60>, 53 - <68>, 54 - <69>, 55 - <70>; 56 - clocks = <&timer_clk>; 57 - #dma-cells = <4>; 58 - st,mem2mem; 59 - resets = <&rcc 150>; 60 - dma-channels = <8>; 61 - dma-requests = <8>; 62 - }; 63 - 64 - /* DMA mux */ 65 - dmamux1: dma-router@40020800 { 66 - compatible = "st,stm32h7-dmamux"; 67 - reg = <0x40020800 0x3c>; 68 - #dma-cells = <3>; 69 - dma-requests = <128>; 70 - dma-channels = <16>; 71 - dma-masters = <&dma1 &dma2>; 72 - clocks = <&timer_clk>; 73 - }; 74 - 75 - /* DMA client */ 76 - usart1: serial@40011000 { 77 - compatible = "st,stm32-usart", "st,stm32-uart"; 78 - reg = <0x40011000 0x400>; 79 - interrupts = <37>; 80 - clocks = <&timer_clk>; 81 - dmas = <&dmamux1 41 0x414 0>, 82 - <&dmamux1 42 0x414 0>; 83 - dma-names = "rx", "tx"; 84 - };
-94
Documentation/devicetree/bindings/dma/stm32-mdma.txt
··· 1 - * STMicroelectronics STM32 MDMA controller 2 - 3 - The STM32 MDMA is a general-purpose direct memory access controller capable of 4 - supporting 64 independent DMA channels with 256 HW requests. 5 - 6 - Required properties: 7 - - compatible: Should be "st,stm32h7-mdma" 8 - - reg: Should contain MDMA registers location and length. This should include 9 - all of the per-channel registers. 10 - - interrupts: Should contain the MDMA interrupt. 11 - - clocks: Should contain the input clock of the DMA instance. 12 - - resets: Reference to a reset controller asserting the DMA controller. 13 - - #dma-cells : Must be <5>. See DMA client paragraph for more details. 14 - 15 - Optional properties: 16 - - dma-channels: Number of DMA channels supported by the controller. 17 - - dma-requests: Number of DMA request signals supported by the controller. 18 - - st,ahb-addr-masks: Array of u32 mask to list memory devices addressed via 19 - AHB bus. 20 - 21 - Example: 22 - 23 - mdma1: dma@52000000 { 24 - compatible = "st,stm32h7-mdma"; 25 - reg = <0x52000000 0x1000>; 26 - interrupts = <122>; 27 - clocks = <&timer_clk>; 28 - resets = <&rcc 992>; 29 - #dma-cells = <5>; 30 - dma-channels = <16>; 31 - dma-requests = <32>; 32 - st,ahb-addr-masks = <0x20000000>, <0x00000000>; 33 - }; 34 - 35 - * DMA client 36 - 37 - DMA clients connected to the STM32 MDMA controller must use the format 38 - described in the dma.txt file, using a five-cell specifier for each channel: 39 - a phandle to the MDMA controller plus the following five integer cells: 40 - 41 - 1. The request line number 42 - 2. The priority level 43 - 0x00: Low 44 - 0x01: Medium 45 - 0x10: High 46 - 0x11: Very high 47 - 3. A 32bit mask specifying the DMA channel configuration 48 - -bit 0-1: Source increment mode 49 - 0x00: Source address pointer is fixed 50 - 0x10: Source address pointer is incremented after each data transfer 51 - 0x11: Source address pointer is decremented after each data transfer 52 - -bit 2-3: Destination increment mode 53 - 0x00: Destination address pointer is fixed 54 - 0x10: Destination address pointer is incremented after each data 55 - transfer 56 - 0x11: Destination address pointer is decremented after each data 57 - transfer 58 - -bit 8-9: Source increment offset size 59 - 0x00: byte (8bit) 60 - 0x01: half-word (16bit) 61 - 0x10: word (32bit) 62 - 0x11: double-word (64bit) 63 - -bit 10-11: Destination increment offset size 64 - 0x00: byte (8bit) 65 - 0x01: half-word (16bit) 66 - 0x10: word (32bit) 67 - 0x11: double-word (64bit) 68 - -bit 25-18: The number of bytes to be transferred in a single transfer 69 - (min = 1 byte, max = 128 bytes) 70 - -bit 29:28: Trigger Mode 71 - 0x00: Each MDMA request triggers a buffer transfer (max 128 bytes) 72 - 0x01: Each MDMA request triggers a block transfer (max 64K bytes) 73 - 0x10: Each MDMA request triggers a repeated block transfer 74 - 0x11: Each MDMA request triggers a linked list transfer 75 - 4. A 32bit value specifying the register to be used to acknowledge the request 76 - if no HW ack signal is used by the MDMA client 77 - 5. A 32bit mask specifying the value to be written to acknowledge the request 78 - if no HW ack signal is used by the MDMA client 79 - 80 - Example: 81 - 82 - i2c4: i2c@5c002000 { 83 - compatible = "st,stm32f7-i2c"; 84 - reg = <0x5c002000 0x400>; 85 - interrupts = <95>, 86 - <96>; 87 - clocks = <&timer_clk>; 88 - #address-cells = <1>; 89 - #size-cells = <0>; 90 - dmas = <&mdma1 36 0x0 0x40008 0x0 0x0>, 91 - <&mdma1 37 0x0 0x40002 0x0 0x0>; 92 - dma-names = "rx", "tx"; 93 - status = "disabled"; 94 - };
+1
Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.txt
··· 4 4 - compatible : 5 5 - "fsl,imx7ulp-lpi2c" for LPI2C compatible with the one integrated on i.MX7ULP soc 6 6 - "fsl,imx8qxp-lpi2c" for LPI2C compatible with the one integrated on i.MX8QXP soc 7 + - "fsl,imx8qm-lpi2c" for LPI2C compatible with the one integrated on i.MX8QM soc 7 8 - reg : address and length of the lpi2c master registers 8 9 - interrupts : lpi2c interrupt 9 10 - clocks : lpi2c clock specifier
+4 -4
Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
··· 82 82 Must be the device tree identifier of the over-sampling 83 83 mode pins. As the line is active high, it should be marked 84 84 GPIO_ACTIVE_HIGH. 85 - maxItems: 1 85 + maxItems: 3 86 86 87 87 adi,sw-mode: 88 88 description: ··· 125 125 adi,conversion-start-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; 126 126 reset-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>; 127 127 adi,first-data-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; 128 - adi,oversampling-ratio-gpios = <&gpio 18 GPIO_ACTIVE_HIGH 129 - &gpio 23 GPIO_ACTIVE_HIGH 130 - &gpio 26 GPIO_ACTIVE_HIGH>; 128 + adi,oversampling-ratio-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>, 129 + <&gpio 23 GPIO_ACTIVE_HIGH>, 130 + <&gpio 26 GPIO_ACTIVE_HIGH>; 131 131 standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>; 132 132 adi,sw-mode; 133 133 };
-135
Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.txt
··· 1 - STMicroelectronics STM32 DFSDM ADC device driver 2 - 3 - 4 - STM32 DFSDM ADC is a sigma delta analog-to-digital converter dedicated to 5 - interface external sigma delta modulators to STM32 micro controllers. 6 - It is mainly targeted for: 7 - - Sigma delta modulators (motor control, metering...) 8 - - PDM microphones (audio digital microphone) 9 - 10 - It features up to 8 serial digital interfaces (SPI or Manchester) and 11 - up to 4 filters on stm32h7 or 6 filters on stm32mp1. 12 - 13 - Each child node match with a filter instance. 14 - 15 - Contents of a STM32 DFSDM root node: 16 - ------------------------------------ 17 - Required properties: 18 - - compatible: Should be one of: 19 - "st,stm32h7-dfsdm" 20 - "st,stm32mp1-dfsdm" 21 - - reg: Offset and length of the DFSDM block register set. 22 - - clocks: IP and serial interfaces clocking. Should be set according 23 - to rcc clock ID and "clock-names". 24 - - clock-names: Input clock name "dfsdm" must be defined, 25 - "audio" is optional. If defined CLKOUT is based on the audio 26 - clock, else "dfsdm" is used. 27 - - #interrupt-cells = <1>; 28 - - #address-cells = <1>; 29 - - #size-cells = <0>; 30 - 31 - Optional properties: 32 - - spi-max-frequency: Requested only for SPI master mode. 33 - SPI clock OUT frequency (Hz). This clock must be set according 34 - to "clock" property. Frequency must be a multiple of the rcc 35 - clock frequency. If not, SPI CLKOUT frequency will not be 36 - accurate. 37 - - pinctrl-names: Set to "default". 38 - - pinctrl-0: List of phandles pointing to pin configuration 39 - nodes to set pins in mode of operation for dfsdm 40 - on external pin. 41 - 42 - Contents of a STM32 DFSDM child nodes: 43 - -------------------------------------- 44 - 45 - Required properties: 46 - - compatible: Must be: 47 - "st,stm32-dfsdm-adc" for sigma delta ADCs 48 - "st,stm32-dfsdm-dmic" for audio digital microphone. 49 - - reg: Specifies the DFSDM filter instance used. 50 - Valid values are from 0 to 3 on stm32h7, 0 to 5 on stm32mp1. 51 - - interrupts: IRQ lines connected to each DFSDM filter instance. 52 - - st,adc-channels: List of single-ended channels muxed for this ADC. 53 - valid values: 54 - "st,stm32h7-dfsdm" compatibility: 0 to 7. 55 - - st,adc-channel-names: List of single-ended channel names. 56 - - st,filter-order: SinC filter order from 0 to 5. 57 - 0: FastSinC 58 - [1-5]: order 1 to 5. 59 - For audio purpose it is recommended to use order 3 to 5. 60 - - #io-channel-cells = <1>: See the IIO bindings section "IIO consumers". 61 - 62 - Required properties for "st,stm32-dfsdm-adc" compatibility: 63 - - io-channels: From common IIO binding. Used to pipe external sigma delta 64 - modulator or internal ADC output to DFSDM channel. 65 - This is not required for "st,stm32-dfsdm-pdm" compatibility as 66 - PDM microphone is binded in Audio DT node. 67 - 68 - Required properties for "st,stm32-dfsdm-pdm" compatibility: 69 - - #sound-dai-cells: Must be set to 0. 70 - - dma: DMA controller phandle and DMA request line associated to the 71 - filter instance (specified by the field "reg") 72 - - dma-names: Must be "rx" 73 - 74 - Optional properties: 75 - - st,adc-channel-types: Single-ended channel input type. 76 - - "SPI_R": SPI with data on rising edge (default) 77 - - "SPI_F": SPI with data on falling edge 78 - - "MANCH_R": manchester codec, rising edge = logic 0, falling edge = logic 1 79 - - "MANCH_F": manchester codec, rising edge = logic 1, falling edge = logic 0 80 - - st,adc-channel-clk-src: Conversion clock source. 81 - - "CLKIN": external SPI clock (CLKIN x) 82 - - "CLKOUT": internal SPI clock (CLKOUT) (default) 83 - - "CLKOUT_F": internal SPI clock divided by 2 (falling edge). 84 - - "CLKOUT_R": internal SPI clock divided by 2 (rising edge). 85 - 86 - - st,adc-alt-channel: Must be defined if two sigma delta modulator are 87 - connected on same SPI input. 88 - If not set, channel n is connected to SPI input n. 89 - If set, channel n is connected to SPI input n + 1. 90 - 91 - - st,filter0-sync: Set to 1 to synchronize with DFSDM filter instance 0. 92 - Used for multi microphones synchronization. 93 - 94 - Example of a sigma delta adc connected on DFSDM SPI port 0 95 - and a pdm microphone connected on DFSDM SPI port 1: 96 - 97 - ads1202: simple_sd_adc@0 { 98 - compatible = "ads1202"; 99 - #io-channel-cells = <1>; 100 - }; 101 - 102 - dfsdm: dfsdm@40017000 { 103 - compatible = "st,stm32h7-dfsdm"; 104 - reg = <0x40017000 0x400>; 105 - clocks = <&rcc DFSDM1_CK>; 106 - clock-names = "dfsdm"; 107 - #interrupt-cells = <1>; 108 - #address-cells = <1>; 109 - #size-cells = <0>; 110 - 111 - dfsdm_adc0: filter@0 { 112 - compatible = "st,stm32-dfsdm-adc"; 113 - #io-channel-cells = <1>; 114 - reg = <0>; 115 - interrupts = <110>; 116 - st,adc-channels = <0>; 117 - st,adc-channel-names = "sd_adc0"; 118 - st,adc-channel-types = "SPI_F"; 119 - st,adc-channel-clk-src = "CLKOUT"; 120 - io-channels = <&ads1202 0>; 121 - st,filter-order = <3>; 122 - }; 123 - dfsdm_pdm1: filter@1 { 124 - compatible = "st,stm32-dfsdm-dmic"; 125 - reg = <1>; 126 - interrupts = <111>; 127 - dmas = <&dmamux1 102 0x400 0x00>; 128 - dma-names = "rx"; 129 - st,adc-channels = <1>; 130 - st,adc-channel-names = "dmic1"; 131 - st,adc-channel-types = "SPI_R"; 132 - st,adc-channel-clk-src = "CLKOUT"; 133 - st,filter-order = <5>; 134 - }; 135 - }
+332
Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/st,stm32-dfsdm-adc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 DFSDM ADC device driver 8 + 9 + maintainers: 10 + - Fabrice Gasnier <fabrice.gasnier@st.com> 11 + - Olivier Moysan <olivier.moysan@st.com> 12 + 13 + description: | 14 + STM32 DFSDM ADC is a sigma delta analog-to-digital converter dedicated to 15 + interface external sigma delta modulators to STM32 micro controllers. 16 + It is mainly targeted for: 17 + - Sigma delta modulators (motor control, metering...) 18 + - PDM microphones (audio digital microphone) 19 + 20 + It features up to 8 serial digital interfaces (SPI or Manchester) and 21 + up to 4 filters on stm32h7 or 6 filters on stm32mp1. 22 + 23 + Each child node matches with a filter instance. 24 + 25 + properties: 26 + compatible: 27 + enum: 28 + - st,stm32h7-dfsdm 29 + - st,stm32mp1-dfsdm 30 + 31 + reg: 32 + maxItems: 1 33 + 34 + clocks: 35 + items: 36 + - description: 37 + Internal clock used for DFSDM digital processing and control blocks. 38 + dfsdm clock can also feed CLKOUT, when CLKOUT is used. 39 + - description: audio clock can be used as an alternate to feed CLKOUT. 40 + minItems: 1 41 + maxItems: 2 42 + 43 + clock-names: 44 + items: 45 + - const: dfsdm 46 + - const: audio 47 + minItems: 1 48 + maxItems: 2 49 + 50 + "#address-cells": 51 + const: 1 52 + 53 + "#size-cells": 54 + const: 0 55 + 56 + spi-max-frequency: 57 + description: 58 + SPI clock OUT frequency (Hz). Requested only for SPI master mode. 59 + This clock must be set according to the "clock" property. 60 + Frequency must be a multiple of the rcc clock frequency. 61 + If not, SPI CLKOUT frequency will not be accurate. 62 + maximum: 20000000 63 + 64 + required: 65 + - compatible 66 + - reg 67 + - clocks 68 + - clock-names 69 + - "#address-cells" 70 + - "#size-cells" 71 + 72 + patternProperties: 73 + "^filter@[0-9]+$": 74 + type: object 75 + description: child node 76 + 77 + properties: 78 + compatible: 79 + enum: 80 + - st,stm32-dfsdm-adc 81 + - st,stm32-dfsdm-dmic 82 + 83 + reg: 84 + description: Specifies the DFSDM filter instance used. 85 + maxItems: 1 86 + 87 + interrupts: 88 + maxItems: 1 89 + 90 + st,adc-channels: 91 + description: | 92 + List of single-ended channels muxed for this ADC. 93 + On stm32h7 and stm32mp1: 94 + - For st,stm32-dfsdm-adc: up to 8 channels numbered from 0 to 7. 95 + - For st,stm32-dfsdm-dmic: 1 channel numbered from 0 to 7. 96 + allOf: 97 + - $ref: /schemas/types.yaml#/definitions/uint32-array 98 + - items: 99 + minimum: 0 100 + maximum: 7 101 + 102 + st,adc-channel-names: 103 + description: List of single-ended channel names. 104 + allOf: 105 + - $ref: /schemas/types.yaml#/definitions/string-array 106 + 107 + st,filter-order: 108 + description: | 109 + SinC filter order from 0 to 5. 110 + - 0: FastSinC 111 + - [1-5]: order 1 to 5. 112 + For audio purpose it is recommended to use order 3 to 5. 113 + allOf: 114 + - $ref: /schemas/types.yaml#/definitions/uint32 115 + - items: 116 + minimum: 0 117 + maximum: 5 118 + 119 + "#io-channel-cells": 120 + const: 1 121 + 122 + st,adc-channel-types: 123 + description: | 124 + Single-ended channel input type. 125 + - "SPI_R": SPI with data on rising edge (default) 126 + - "SPI_F": SPI with data on falling edge 127 + - "MANCH_R": manchester codec, rising edge = logic 0, falling edge = logic 1 128 + - "MANCH_F": manchester codec, rising edge = logic 1, falling edge = logic 0 129 + items: 130 + enum: [ SPI_R, SPI_F, MANCH_R, MANCH_F ] 131 + allOf: 132 + - $ref: /schemas/types.yaml#/definitions/non-unique-string-array 133 + 134 + st,adc-channel-clk-src: 135 + description: | 136 + Conversion clock source. 137 + - "CLKIN": external SPI clock (CLKIN x) 138 + - "CLKOUT": internal SPI clock (CLKOUT) (default) 139 + - "CLKOUT_F": internal SPI clock divided by 2 (falling edge). 140 + - "CLKOUT_R": internal SPI clock divided by 2 (rising edge). 141 + items: 142 + enum: [ CLKIN, CLKOUT, CLKOUT_F, CLKOUT_R ] 143 + allOf: 144 + - $ref: /schemas/types.yaml#/definitions/non-unique-string-array 145 + 146 + st,adc-alt-channel: 147 + description: 148 + Must be defined if two sigma delta modulators are 149 + connected on same SPI input. 150 + If not set, channel n is connected to SPI input n. 151 + If set, channel n is connected to SPI input n + 1. 152 + type: boolean 153 + 154 + st,filter0-sync: 155 + description: 156 + Set to 1 to synchronize with DFSDM filter instance 0. 157 + Used for multi microphones synchronization. 158 + type: boolean 159 + 160 + dmas: 161 + maxItems: 1 162 + 163 + dma-names: 164 + items: 165 + - const: rx 166 + 167 + required: 168 + - compatible 169 + - reg 170 + - interrupts 171 + - st,adc-channels 172 + - st,adc-channel-names 173 + - st,filter-order 174 + - "#io-channel-cells" 175 + 176 + allOf: 177 + - if: 178 + properties: 179 + compatible: 180 + contains: 181 + const: st,stm32-dfsdm-adc 182 + 183 + - then: 184 + properties: 185 + st,adc-channels: 186 + minItems: 1 187 + maxItems: 8 188 + 189 + st,adc-channel-names: 190 + minItems: 1 191 + maxItems: 8 192 + 193 + st,adc-channel-types: 194 + minItems: 1 195 + maxItems: 8 196 + 197 + st,adc-channel-clk-src: 198 + minItems: 1 199 + maxItems: 8 200 + 201 + io-channels: 202 + description: 203 + From common IIO binding. Used to pipe external sigma delta 204 + modulator or internal ADC output to DFSDM channel. 205 + This is not required for "st,stm32-dfsdm-pdm" compatibility as 206 + PDM microphone is binded in Audio DT node. 207 + 208 + required: 209 + - io-channels 210 + 211 + - if: 212 + properties: 213 + compatible: 214 + contains: 215 + const: st,stm32-dfsdm-dmic 216 + 217 + - then: 218 + properties: 219 + st,adc-channels: 220 + maxItems: 1 221 + 222 + st,adc-channel-names: 223 + maxItems: 1 224 + 225 + st,adc-channel-types: 226 + maxItems: 1 227 + 228 + st,adc-channel-clk-src: 229 + maxItems: 1 230 + 231 + required: 232 + - dmas 233 + - dma-names 234 + 235 + patternProperties: 236 + "^dfsdm-dai+$": 237 + type: object 238 + description: child node 239 + 240 + properties: 241 + "#sound-dai-cells": 242 + const: 0 243 + 244 + io-channels: 245 + description: 246 + From common IIO binding. Used to pipe external sigma delta 247 + modulator or internal ADC output to DFSDM channel. 248 + 249 + required: 250 + - "#sound-dai-cells" 251 + - io-channels 252 + 253 + allOf: 254 + - if: 255 + properties: 256 + compatible: 257 + contains: 258 + const: st,stm32h7-dfsdm 259 + 260 + - then: 261 + patternProperties: 262 + "^filter@[0-9]+$": 263 + properties: 264 + reg: 265 + items: 266 + minimum: 0 267 + maximum: 3 268 + 269 + - if: 270 + properties: 271 + compatible: 272 + contains: 273 + const: st,stm32mp1-dfsdm 274 + 275 + - then: 276 + patternProperties: 277 + "^filter@[0-9]+$": 278 + properties: 279 + reg: 280 + items: 281 + minimum: 0 282 + maximum: 5 283 + 284 + examples: 285 + - | 286 + #include <dt-bindings/interrupt-controller/arm-gic.h> 287 + #include <dt-bindings/clock/stm32mp1-clks.h> 288 + dfsdm: dfsdm@4400d000 { 289 + compatible = "st,stm32mp1-dfsdm"; 290 + reg = <0x4400d000 0x800>; 291 + clocks = <&rcc DFSDM_K>, <&rcc ADFSDM_K>; 292 + clock-names = "dfsdm", "audio"; 293 + #address-cells = <1>; 294 + #size-cells = <0>; 295 + 296 + dfsdm0: filter@0 { 297 + compatible = "st,stm32-dfsdm-dmic"; 298 + reg = <0>; 299 + interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; 300 + dmas = <&dmamux1 101 0x400 0x01>; 301 + dma-names = "rx"; 302 + #io-channel-cells = <1>; 303 + st,adc-channels = <1>; 304 + st,adc-channel-names = "dmic0"; 305 + st,adc-channel-types = "SPI_R"; 306 + st,adc-channel-clk-src = "CLKOUT"; 307 + st,filter-order = <5>; 308 + 309 + asoc_pdm0: dfsdm-dai { 310 + compatible = "st,stm32h7-dfsdm-dai"; 311 + #sound-dai-cells = <0>; 312 + io-channels = <&dfsdm0 0>; 313 + }; 314 + }; 315 + 316 + dfsdm_pdm1: filter@1 { 317 + compatible = "st,stm32-dfsdm-adc"; 318 + reg = <1>; 319 + interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; 320 + dmas = <&dmamux1 102 0x400 0x01>; 321 + dma-names = "rx"; 322 + #io-channel-cells = <1>; 323 + st,adc-channels = <2 3>; 324 + st,adc-channel-names = "in2", "in3"; 325 + st,adc-channel-types = "SPI_R", "SPI_R"; 326 + st,adc-channel-clk-src = "CLKOUT_F", "CLKOUT_F"; 327 + io-channels = <&sd_adc2 &sd_adc3>; 328 + st,filter-order = <1>; 329 + }; 330 + }; 331 + 332 + ...
+1 -173
Documentation/devicetree/bindings/leds/common.txt
··· 1 - * Common leds properties. 2 - 3 - LED and flash LED devices provide the same basic functionality as current 4 - regulators, but extended with LED and flash LED specific features like 5 - blinking patterns, flash timeout, flash faults and external flash strobe mode. 6 - 7 - Many LED devices expose more than one current output that can be connected 8 - to one or more discrete LED component. Since the arrangement of connections 9 - can influence the way of the LED device initialization, the LED components 10 - have to be tightly coupled with the LED device binding. They are represented 11 - by child nodes of the parent LED device binding. 12 - 13 - 14 - Optional properties for child nodes: 15 - - led-sources : List of device current outputs the LED is connected to. The 16 - outputs are identified by the numbers that must be defined 17 - in the LED device binding documentation. 18 - 19 - - function: LED functon. Use one of the LED_FUNCTION_* prefixed definitions 20 - from the header include/dt-bindings/leds/common.h. 21 - If there is no matching LED_FUNCTION available, add a new one. 22 - 23 - - color : Color of the LED. Use one of the LED_COLOR_ID_* prefixed definitions 24 - from the header include/dt-bindings/leds/common.h. 25 - If there is no matching LED_COLOR_ID available, add a new one. 26 - 27 - - function-enumerator: Integer to be used when more than one instance 28 - of the same function is needed, differing only with 29 - an ordinal number. 30 - 31 - - label : The label for this LED. If omitted, the label is taken from the node 32 - name (excluding the unit address). It has to uniquely identify 33 - a device, i.e. no other LED class device can be assigned the same 34 - label. This property is deprecated - use 'function' and 'color' 35 - properties instead. function-enumerator has no effect when this 36 - property is present. 37 - 38 - - default-state : The initial state of the LED. Valid values are "on", "off", 39 - and "keep". If the LED is already on or off and the default-state property is 40 - set the to same value, then no glitch should be produced where the LED 41 - momentarily turns off (or on). The "keep" setting will keep the LED at 42 - whatever its current state is, without producing a glitch. The default is 43 - off if this property is not present. 44 - 45 - - linux,default-trigger : This parameter, if present, is a 46 - string defining the trigger assigned to the LED. Current triggers are: 47 - "backlight" - LED will act as a back-light, controlled by the framebuffer 48 - system 49 - "default-on" - LED will turn on (but for leds-gpio see "default-state" 50 - property in Documentation/devicetree/bindings/leds/leds-gpio.txt) 51 - "heartbeat" - LED "double" flashes at a load average based rate 52 - "disk-activity" - LED indicates disk activity 53 - "ide-disk" - LED indicates IDE disk activity (deprecated), 54 - in new implementations use "disk-activity" 55 - "timer" - LED flashes at a fixed, configurable rate 56 - "pattern" - LED alters the brightness for the specified duration with one 57 - software timer (requires "led-pattern" property) 58 - 59 - - led-pattern : Array of integers with default pattern for certain triggers. 60 - Each trigger may parse this property differently: 61 - - one-shot : two numbers specifying delay on and delay off (in ms), 62 - - timer : two numbers specifying delay on and delay off (in ms), 63 - - pattern : the pattern is given by a series of tuples, of 64 - brightness and duration (in ms). The exact format is 65 - described in: 66 - Documentation/devicetree/bindings/leds/leds-trigger-pattern.txt 67 - 68 - 69 - - led-max-microamp : Maximum LED supply current in microamperes. This property 70 - can be made mandatory for the board configurations 71 - introducing a risk of hardware damage in case an excessive 72 - current is set. 73 - For flash LED controllers with configurable current this 74 - property is mandatory for the LEDs in the non-flash modes 75 - (e.g. torch or indicator). 76 - 77 - - panic-indicator : This property specifies that the LED should be used, 78 - if at all possible, as a panic indicator. 79 - 80 - - trigger-sources : List of devices which should be used as a source triggering 81 - this LED activity. Some LEDs can be related to a specific 82 - device and should somehow indicate its state. E.g. USB 2.0 83 - LED may react to device(s) in a USB 2.0 port(s). 84 - Another common example is switch or router with multiple 85 - Ethernet ports each of them having its own LED assigned 86 - (assuming they are not hardwired). In such cases this 87 - property should contain phandle(s) of related source 88 - device(s). 89 - In many cases LED can be related to more than one device 90 - (e.g. one USB LED vs. multiple USB ports). Each source 91 - should be represented by a node in the device tree and be 92 - referenced by a phandle and a set of phandle arguments. A 93 - length of arguments should be specified by the 94 - #trigger-source-cells property in the source node. 95 - 96 - Required properties for flash LED child nodes: 97 - - flash-max-microamp : Maximum flash LED supply current in microamperes. 98 - - flash-max-timeout-us : Maximum timeout in microseconds after which the flash 99 - LED is turned off. 100 - 101 - For controllers that have no configurable current the flash-max-microamp 102 - property can be omitted. 103 - For controllers that have no configurable timeout the flash-max-timeout-us 104 - property can be omitted. 105 - 106 - * Trigger source providers 107 - 108 - Each trigger source should be represented by a device tree node. It may be e.g. 109 - a USB port or an Ethernet device. 110 - 111 - Required properties for trigger source: 112 - - #trigger-source-cells : Number of cells in a source trigger. Typically 0 for 113 - nodes of simple trigger sources (e.g. a specific USB 114 - port). 115 - 116 - * Examples 117 - 118 - #include <dt-bindings/leds/common.h> 119 - 120 - led-controller@0 { 121 - compatible = "gpio-leds"; 122 - 123 - led0 { 124 - function = LED_FUNCTION_STATUS; 125 - linux,default-trigger = "heartbeat"; 126 - gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; 127 - }; 128 - 129 - led1 { 130 - function = LED_FUNCTION_USB; 131 - gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; 132 - trigger-sources = <&ohci_port1>, <&ehci_port1>; 133 - }; 134 - }; 135 - 136 - led-controller@0 { 137 - compatible = "maxim,max77693-led"; 138 - 139 - led { 140 - function = LED_FUNCTION_FLASH; 141 - color = <LED_COLOR_ID_WHITE>; 142 - led-sources = <0>, <1>; 143 - led-max-microamp = <50000>; 144 - flash-max-microamp = <320000>; 145 - flash-max-timeout-us = <500000>; 146 - }; 147 - }; 148 - 149 - led-controller@30 { 150 - compatible = "panasonic,an30259a"; 151 - reg = <0x30>; 152 - #address-cells = <1>; 153 - #size-cells = <0>; 154 - 155 - led@1 { 156 - reg = <1>; 157 - linux,default-trigger = "heartbeat"; 158 - function = LED_FUNCTION_INDICATOR; 159 - function-enumerator = <1>; 160 - }; 161 - 162 - led@2 { 163 - reg = <2>; 164 - function = LED_FUNCTION_INDICATOR; 165 - function-enumerator = <2>; 166 - }; 167 - 168 - led@3 { 169 - reg = <3>; 170 - function = LED_FUNCTION_INDICATOR; 171 - function-enumerator = <3>; 172 - }; 173 - }; 1 + This file has moved to ./common.yaml.
+228
Documentation/devicetree/bindings/leds/common.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/leds/common.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Common leds properties 8 + 9 + maintainers: 10 + - Jacek Anaszewski <jacek.anaszewski@gmail.com> 11 + - Pavel Machek <pavel@ucw.cz> 12 + 13 + description: 14 + LED and flash LED devices provide the same basic functionality as current 15 + regulators, but extended with LED and flash LED specific features like 16 + blinking patterns, flash timeout, flash faults and external flash strobe mode. 17 + 18 + Many LED devices expose more than one current output that can be connected 19 + to one or more discrete LED component. Since the arrangement of connections 20 + can influence the way of the LED device initialization, the LED components 21 + have to be tightly coupled with the LED device binding. They are represented 22 + by child nodes of the parent LED device binding. 23 + 24 + properties: 25 + led-sources: 26 + description: 27 + List of device current outputs the LED is connected to. The outputs are 28 + identified by the numbers that must be defined in the LED device binding 29 + documentation. 30 + $ref: /schemas/types.yaml#definitions/uint32-array 31 + 32 + function: 33 + description: 34 + LED function. Use one of the LED_FUNCTION_* prefixed definitions 35 + from the header include/dt-bindings/leds/common.h. If there is no 36 + matching LED_FUNCTION available, add a new one. 37 + $ref: /schemas/types.yaml#definitions/string 38 + 39 + color: 40 + description: 41 + Color of the LED. Use one of the LED_COLOR_ID_* prefixed definitions from 42 + the header include/dt-bindings/leds/common.h. If there is no matching 43 + LED_COLOR_ID available, add a new one. 44 + allOf: 45 + - $ref: /schemas/types.yaml#definitions/uint32 46 + minimum: 0 47 + maximum: 8 48 + 49 + function-enumerator: 50 + description: 51 + Integer to be used when more than one instance of the same function is 52 + needed, differing only with an ordinal number. 53 + $ref: /schemas/types.yaml#definitions/uint32 54 + 55 + label: 56 + description: 57 + The label for this LED. If omitted, the label is taken from the node name 58 + (excluding the unit address). It has to uniquely identify a device, i.e. 59 + no other LED class device can be assigned the same label. This property is 60 + deprecated - use 'function' and 'color' properties instead. 61 + function-enumerator has no effect when this property is present. 62 + 63 + default-state: 64 + description: 65 + The initial state of the LED. If the LED is already on or off and the 66 + default-state property is set the to same value, then no glitch should be 67 + produced where the LED momentarily turns off (or on). The "keep" setting 68 + will keep the LED at whatever its current state is, without producing a 69 + glitch. 70 + allOf: 71 + - $ref: /schemas/types.yaml#definitions/string 72 + enum: 73 + - on 74 + - off 75 + - keep 76 + default: off 77 + 78 + linux,default-trigger: 79 + description: 80 + This parameter, if present, is a string defining the trigger assigned to 81 + the LED. 82 + allOf: 83 + - $ref: /schemas/types.yaml#definitions/string 84 + enum: 85 + # LED will act as a back-light, controlled by the framebuffer system 86 + - backlight 87 + # LED will turn on (but for leds-gpio see "default-state" property in 88 + # Documentation/devicetree/bindings/leds/leds-gpio.txt) 89 + - default-on 90 + # LED "double" flashes at a load average based rate 91 + - heartbeat 92 + # LED indicates disk activity 93 + - disk-activity 94 + # LED indicates IDE disk activity (deprecated), in new implementations 95 + # use "disk-activity" 96 + - ide-disk 97 + # LED flashes at a fixed, configurable rate 98 + - timer 99 + # LED alters the brightness for the specified duration with one software 100 + # timer (requires "led-pattern" property) 101 + - pattern 102 + 103 + led-pattern: 104 + description: | 105 + Array of integers with default pattern for certain triggers. 106 + 107 + Each trigger may parse this property differently: 108 + - one-shot : two numbers specifying delay on and delay off (in ms), 109 + - timer : two numbers specifying delay on and delay off (in ms), 110 + - pattern : the pattern is given by a series of tuples, of 111 + brightness and duration (in ms). The exact format is 112 + described in: 113 + Documentation/devicetree/bindings/leds/leds-trigger-pattern.txt 114 + allOf: 115 + - $ref: /schemas/types.yaml#definitions/uint32-matrix 116 + items: 117 + minItems: 2 118 + maxItems: 2 119 + 120 + led-max-microamp: 121 + description: 122 + Maximum LED supply current in microamperes. This property can be made 123 + mandatory for the board configurations introducing a risk of hardware 124 + damage in case an excessive current is set. 125 + For flash LED controllers with configurable current this property is 126 + mandatory for the LEDs in the non-flash modes (e.g. torch or indicator). 127 + 128 + panic-indicator: 129 + description: 130 + This property specifies that the LED should be used, if at all possible, 131 + as a panic indicator. 132 + type: boolean 133 + 134 + trigger-sources: 135 + description: | 136 + List of devices which should be used as a source triggering this LED 137 + activity. Some LEDs can be related to a specific device and should somehow 138 + indicate its state. E.g. USB 2.0 LED may react to device(s) in a USB 2.0 139 + port(s). 140 + Another common example is switch or router with multiple Ethernet ports 141 + each of them having its own LED assigned (assuming they are not 142 + hardwired). In such cases this property should contain phandle(s) of 143 + related source device(s). 144 + In many cases LED can be related to more than one device (e.g. one USB LED 145 + vs. multiple USB ports). Each source should be represented by a node in 146 + the device tree and be referenced by a phandle and a set of phandle 147 + arguments. A length of arguments should be specified by the 148 + #trigger-source-cells property in the source node. 149 + $ref: /schemas/types.yaml#definitions/phandle-array 150 + 151 + # Required properties for flash LED child nodes: 152 + flash-max-microamp: 153 + description: 154 + Maximum flash LED supply current in microamperes. Required for flash LED 155 + nodes with configurable current. 156 + 157 + flash-max-timeout-us: 158 + description: 159 + Maximum timeout in microseconds after which the flash LED is turned off. 160 + Required for flash LED nodes with configurable timeout. 161 + 162 + examples: 163 + - | 164 + #include <dt-bindings/gpio/gpio.h> 165 + #include <dt-bindings/leds/common.h> 166 + 167 + led-controller { 168 + compatible = "gpio-leds"; 169 + 170 + led0 { 171 + function = LED_FUNCTION_STATUS; 172 + linux,default-trigger = "heartbeat"; 173 + gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; 174 + }; 175 + 176 + led1 { 177 + function = LED_FUNCTION_USB; 178 + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; 179 + trigger-sources = <&ohci_port1>, <&ehci_port1>; 180 + }; 181 + }; 182 + 183 + led-controller@0 { 184 + compatible = "maxim,max77693-led"; 185 + reg = <0 0x100>; 186 + 187 + led { 188 + function = LED_FUNCTION_FLASH; 189 + color = <LED_COLOR_ID_WHITE>; 190 + led-sources = <0>, <1>; 191 + led-max-microamp = <50000>; 192 + flash-max-microamp = <320000>; 193 + flash-max-timeout-us = <500000>; 194 + }; 195 + }; 196 + 197 + i2c { 198 + #address-cells = <1>; 199 + #size-cells = <0>; 200 + 201 + led-controller@30 { 202 + compatible = "panasonic,an30259a"; 203 + reg = <0x30>; 204 + #address-cells = <1>; 205 + #size-cells = <0>; 206 + 207 + led@1 { 208 + reg = <1>; 209 + linux,default-trigger = "heartbeat"; 210 + function = LED_FUNCTION_INDICATOR; 211 + function-enumerator = <1>; 212 + }; 213 + 214 + led@2 { 215 + reg = <2>; 216 + function = LED_FUNCTION_INDICATOR; 217 + function-enumerator = <2>; 218 + }; 219 + 220 + led@3 { 221 + reg = <3>; 222 + function = LED_FUNCTION_INDICATOR; 223 + function-enumerator = <3>; 224 + }; 225 + }; 226 + }; 227 + 228 + ...
+1 -1
Documentation/devicetree/bindings/leds/irled/spi-ir-led.txt
··· 8 8 - compatible: should be "ir-spi-led". 9 9 10 10 Optional properties: 11 - - duty-cycle: 8 bit balue that represents the percentage of one period 11 + - duty-cycle: 8 bit value that represents the percentage of one period 12 12 in which the signal is active. It can be 50, 60, 70, 75, 80 or 90. 13 13 - led-active-low: boolean value that specifies whether the output is 14 14 negated with a NOT gate.
-75
Documentation/devicetree/bindings/leds/leds-gpio.txt
··· 1 - LEDs connected to GPIO lines 2 - 3 - Required properties: 4 - - compatible : should be "gpio-leds". 5 - 6 - Each LED is represented as a sub-node of the gpio-leds device. Each 7 - node's name represents the name of the corresponding LED. 8 - 9 - LED sub-node properties: 10 - - gpios : Should specify the LED's GPIO, see "gpios property" in 11 - Documentation/devicetree/bindings/gpio/gpio.txt. Active low LEDs should be 12 - indicated using flags in the GPIO specifier. 13 - - function : (optional) 14 - see Documentation/devicetree/bindings/leds/common.txt 15 - - color : (optional) 16 - see Documentation/devicetree/bindings/leds/common.txt 17 - - label : (optional) 18 - see Documentation/devicetree/bindings/leds/common.txt (deprecated) 19 - - linux,default-trigger : (optional) 20 - see Documentation/devicetree/bindings/leds/common.txt 21 - - default-state: (optional) The initial state of the LED. 22 - see Documentation/devicetree/bindings/leds/common.txt 23 - - retain-state-suspended: (optional) The suspend state can be retained.Such 24 - as charge-led gpio. 25 - - retain-state-shutdown: (optional) Retain the state of the LED on shutdown. 26 - Useful in BMC systems, for example when the BMC is rebooted while the host 27 - remains up. 28 - - panic-indicator : (optional) 29 - see Documentation/devicetree/bindings/leds/common.txt 30 - 31 - Examples: 32 - 33 - #include <dt-bindings/gpio/gpio.h> 34 - #include <dt-bindings/leds/common.h> 35 - 36 - leds { 37 - compatible = "gpio-leds"; 38 - led0 { 39 - gpios = <&mcu_pio 0 GPIO_ACTIVE_LOW>; 40 - linux,default-trigger = "disk-activity"; 41 - function = LED_FUNCTION_DISK; 42 - }; 43 - 44 - led1 { 45 - gpios = <&mcu_pio 1 GPIO_ACTIVE_HIGH>; 46 - /* Keep LED on if BIOS detected hardware fault */ 47 - default-state = "keep"; 48 - function = LED_FUNCTION_FAULT; 49 - }; 50 - }; 51 - 52 - run-control { 53 - compatible = "gpio-leds"; 54 - led0 { 55 - gpios = <&mpc8572 6 GPIO_ACTIVE_HIGH>; 56 - color = <LED_COLOR_ID_RED>; 57 - default-state = "off"; 58 - }; 59 - led1 { 60 - gpios = <&mpc8572 7 GPIO_ACTIVE_HIGH>; 61 - color = <LED_COLOR_ID_GREEN>; 62 - default-state = "on"; 63 - }; 64 - }; 65 - 66 - leds { 67 - compatible = "gpio-leds"; 68 - 69 - led0 { 70 - gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 71 - linux,default-trigger = "max8903-charger-charging"; 72 - retain-state-suspended; 73 - function = LED_FUNCTION_CHARGE; 74 - }; 75 - };
+86
Documentation/devicetree/bindings/leds/leds-gpio.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/leds/leds-gpio.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: LEDs connected to GPIO lines 8 + 9 + maintainers: 10 + - Jacek Anaszewski <jacek.anaszewski@gmail.com> 11 + - Pavel Machek <pavel@ucw.cz> 12 + 13 + description: 14 + Each LED is represented as a sub-node of the gpio-leds device. Each 15 + node's name represents the name of the corresponding LED. 16 + 17 + properties: 18 + compatible: 19 + const: gpio-leds 20 + 21 + patternProperties: 22 + # The first form is preferred, but fall back to just 'led' anywhere in the 23 + # node name to at least catch some child nodes. 24 + "(^led-[0-9a-f]$|led)": 25 + type: object 26 + 27 + allOf: 28 + - $ref: common.yaml# 29 + 30 + properties: 31 + gpios: 32 + maxItems: 1 33 + 34 + retain-state-suspended: 35 + description: 36 + The suspend state can be retained.Such as charge-led gpio. 37 + type: boolean 38 + 39 + retain-state-shutdown: 40 + description: 41 + Retain the state of the LED on shutdown. Useful in BMC systems, for 42 + example when the BMC is rebooted while the host remains up. 43 + type: boolean 44 + 45 + required: 46 + - gpios 47 + 48 + additionalProperties: false 49 + 50 + examples: 51 + - | 52 + 53 + #include <dt-bindings/gpio/gpio.h> 54 + #include <dt-bindings/leds/common.h> 55 + 56 + leds { 57 + compatible = "gpio-leds"; 58 + led-0 { 59 + gpios = <&mcu_pio 0 GPIO_ACTIVE_LOW>; 60 + linux,default-trigger = "disk-activity"; 61 + function = LED_FUNCTION_DISK; 62 + }; 63 + 64 + led-1 { 65 + gpios = <&mcu_pio 1 GPIO_ACTIVE_HIGH>; 66 + /* Keep LED on if BIOS detected hardware fault */ 67 + default-state = "keep"; 68 + function = LED_FUNCTION_FAULT; 69 + }; 70 + }; 71 + 72 + run-control { 73 + compatible = "gpio-leds"; 74 + led-0 { 75 + gpios = <&mpc8572 6 GPIO_ACTIVE_HIGH>; 76 + color = <LED_COLOR_ID_RED>; 77 + default-state = "off"; 78 + }; 79 + led-1 { 80 + gpios = <&mpc8572 7 GPIO_ACTIVE_HIGH>; 81 + color = <LED_COLOR_ID_GREEN>; 82 + default-state = "on"; 83 + }; 84 + }; 85 + 86 + ...
+24
Documentation/devicetree/bindings/leds/trigger-source.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/leds/trigger-source.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Trigger source providers 8 + 9 + maintainers: 10 + - Jacek Anaszewski <jacek.anaszewski@gmail.com> 11 + - Pavel Machek <pavel@ucw.cz> 12 + 13 + description: 14 + Each trigger source provider should be represented by a device tree node. It 15 + may be e.g. a USB port or an Ethernet device. 16 + 17 + properties: 18 + '#trigger-source-cells': 19 + description: 20 + Number of cells in a source trigger. Typically 0 for nodes of simple 21 + trigger sources (e.g. a specific USB port). 22 + enum: [ 0, 1 ] 23 + 24 + ...
+83
Documentation/devicetree/bindings/media/allwinner,sun4i-a10-video-engine.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/media/allwinner,sun4i-a10-video-engine.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 Video Engine Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + compatible: 15 + enum: 16 + - allwinner,sun4i-a10-video-engine 17 + - allwinner,sun5i-a13-video-engine 18 + - allwinner,sun7i-a20-video-engine 19 + - allwinner,sun8i-a33-video-engine 20 + - allwinner,sun8i-h3-video-engine 21 + - allwinner,sun50i-a64-video-engine 22 + - allwinner,sun50i-h5-video-engine 23 + - allwinner,sun50i-h6-video-engine 24 + 25 + reg: 26 + maxItems: 1 27 + 28 + interrupts: 29 + maxItems: 1 30 + 31 + clocks: 32 + items: 33 + - description: Bus Clock 34 + - description: Module Clock 35 + - description: RAM Clock 36 + 37 + clock-names: 38 + items: 39 + - const: ahb 40 + - const: mod 41 + - const: ram 42 + 43 + resets: 44 + maxItems: 1 45 + 46 + allwinner,sram: 47 + $ref: /schemas/types.yaml#/definitions/phandle-array 48 + description: Phandle to the device SRAM 49 + 50 + memory-region: 51 + description: 52 + CMA pool to use for buffers allocation instead of the default 53 + CMA pool. 54 + 55 + required: 56 + - compatible 57 + - reg 58 + - interrupts 59 + - clocks 60 + - clock-names 61 + - resets 62 + - allwinner,sram 63 + 64 + additionalProperties: false 65 + 66 + examples: 67 + - | 68 + #include <dt-bindings/interrupt-controller/arm-gic.h> 69 + #include <dt-bindings/clock/sun7i-a20-ccu.h> 70 + #include <dt-bindings/reset/sun4i-a10-ccu.h> 71 + 72 + video-codec@1c0e000 { 73 + compatible = "allwinner,sun7i-a20-video-engine"; 74 + reg = <0x01c0e000 0x1000>; 75 + interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 76 + clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>, 77 + <&ccu CLK_DRAM_VE>; 78 + clock-names = "ahb", "mod", "ram"; 79 + resets = <&ccu RST_VE>; 80 + allwinner,sram = <&ve_sram 1>; 81 + }; 82 + 83 + ...
+115
Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/media/allwinner,sun6i-a31-csi.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A31 CMOS Sensor Interface (CSI) Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + compatible: 15 + enum: 16 + - allwinner,sun6i-a31-csi 17 + - allwinner,sun8i-a83t-csi 18 + - allwinner,sun8i-h3-csi 19 + - allwinner,sun8i-v3s-csi 20 + - allwinner,sun50i-a64-csi 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + clocks: 29 + items: 30 + - description: Bus Clock 31 + - description: Module Clock 32 + - description: DRAM Clock 33 + 34 + clock-names: 35 + items: 36 + - const: bus 37 + - const: mod 38 + - const: ram 39 + 40 + resets: 41 + maxItems: 1 42 + 43 + # See ./video-interfaces.txt for details 44 + port: 45 + type: object 46 + 47 + properties: 48 + endpoint: 49 + type: object 50 + 51 + properties: 52 + remote-endpoint: true 53 + 54 + bus-width: 55 + enum: [ 8, 10, 12, 16 ] 56 + 57 + pclk-sample: true 58 + hsync-active: true 59 + vsync-active: true 60 + 61 + required: 62 + - bus-width 63 + - remote-endpoint 64 + 65 + required: 66 + - endpoint 67 + 68 + additionalProperties: false 69 + 70 + required: 71 + - compatible 72 + - reg 73 + - interrupts 74 + - clocks 75 + - clock-names 76 + - resets 77 + 78 + additionalProperties: false 79 + 80 + examples: 81 + - | 82 + #include <dt-bindings/interrupt-controller/arm-gic.h> 83 + #include <dt-bindings/clock/sun8i-v3s-ccu.h> 84 + #include <dt-bindings/reset/sun8i-v3s-ccu.h> 85 + 86 + csi1: csi@1cb4000 { 87 + compatible = "allwinner,sun8i-v3s-csi"; 88 + reg = <0x01cb4000 0x1000>; 89 + interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 90 + clocks = <&ccu CLK_BUS_CSI>, 91 + <&ccu CLK_CSI1_SCLK>, 92 + <&ccu CLK_DRAM_CSI>; 93 + clock-names = "bus", 94 + "mod", 95 + "ram"; 96 + resets = <&ccu RST_BUS_CSI>; 97 + 98 + port { 99 + /* Parallel bus endpoint */ 100 + csi1_ep: endpoint { 101 + remote-endpoint = <&adv7611_ep>; 102 + bus-width = <16>; 103 + 104 + /* 105 + * If hsync-active/vsync-active are missing, 106 + * embedded BT.656 sync is used. 107 + */ 108 + hsync-active = <0>; /* Active low */ 109 + vsync-active = <0>; /* Active low */ 110 + pclk-sample = <1>; /* Rising */ 111 + }; 112 + }; 113 + }; 114 + 115 + ...
-57
Documentation/devicetree/bindings/media/cedrus.txt
··· 1 - Device-tree bindings for the VPU found in Allwinner SoCs, referred to as the 2 - Video Engine (VE) in Allwinner literature. 3 - 4 - The VPU can only access the first 256 MiB of DRAM, that are DMA-mapped starting 5 - from the DRAM base. This requires specific memory allocation and handling. 6 - 7 - Required properties: 8 - - compatible : must be one of the following compatibles: 9 - - "allwinner,sun4i-a10-video-engine" 10 - - "allwinner,sun5i-a13-video-engine" 11 - - "allwinner,sun7i-a20-video-engine" 12 - - "allwinner,sun8i-a33-video-engine" 13 - - "allwinner,sun8i-h3-video-engine" 14 - - "allwinner,sun50i-a64-video-engine" 15 - - "allwinner,sun50i-h5-video-engine" 16 - - "allwinner,sun50i-h6-video-engine" 17 - - reg : register base and length of VE; 18 - - clocks : list of clock specifiers, corresponding to entries in 19 - the clock-names property; 20 - - clock-names : should contain "ahb", "mod" and "ram" entries; 21 - - resets : phandle for reset; 22 - - interrupts : VE interrupt number; 23 - - allwinner,sram : SRAM region to use with the VE. 24 - 25 - Optional properties: 26 - - memory-region : CMA pool to use for buffers allocation instead of the 27 - default CMA pool. 28 - 29 - Example: 30 - 31 - reserved-memory { 32 - #address-cells = <1>; 33 - #size-cells = <1>; 34 - ranges; 35 - 36 - /* Address must be kept in the lower 256 MiBs of DRAM for VE. */ 37 - cma_pool: default-pool { 38 - compatible = "shared-dma-pool"; 39 - size = <0x6000000>; 40 - alloc-ranges = <0x4a000000 0x6000000>; 41 - reusable; 42 - linux,cma-default; 43 - }; 44 - }; 45 - 46 - video-codec@1c0e000 { 47 - compatible = "allwinner,sun7i-a20-video-engine"; 48 - reg = <0x01c0e000 0x1000>; 49 - 50 - clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>, 51 - <&ccu CLK_DRAM_VE>; 52 - clock-names = "ahb", "mod", "ram"; 53 - 54 - resets = <&ccu RST_VE>; 55 - interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 56 - allwinner,sram = <&ve_sram 1>; 57 - };
+1 -1
Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt
··· 1 - Samsung S5P/EXYNOS SoC series JPEG codec 1 + Samsung S5P/Exynos SoC series JPEG codec 2 2 3 3 Required properties: 4 4
+1 -1
Documentation/devicetree/bindings/media/exynos5-gsc.txt
··· 1 1 * Samsung Exynos5 G-Scaler device 2 2 3 - G-Scaler is used for scaling and color space conversion on EXYNOS5 SoCs. 3 + G-Scaler is used for scaling and color space conversion on Exynos5 SoCs. 4 4 5 5 Required properties: 6 6 - compatible: should be one of
-86
Documentation/devicetree/bindings/media/renesas,ceu.txt
··· 1 - Renesas Capture Engine Unit (CEU) 2 - ---------------------------------------------- 3 - 4 - The Capture Engine Unit is the image capture interface found in the Renesas 5 - SH Mobile, R-Mobile and RZ SoCs. 6 - 7 - The interface supports a single parallel input with data bus width of 8 or 16 8 - bits. 9 - 10 - Required properties: 11 - - compatible: Shall be one of the following values: 12 - "renesas,r7s72100-ceu" for CEU units found in RZ/A1H and RZ/A1M SoCs 13 - "renesas,r8a7740-ceu" for CEU units found in R-Mobile A1 R8A7740 SoCs 14 - - reg: Registers address base and size. 15 - - interrupts: The interrupt specifier. 16 - 17 - The CEU supports a single parallel input and should contain a single 'port' 18 - subnode with a single 'endpoint'. Connection to input devices are modeled 19 - according to the video interfaces OF bindings specified in: 20 - [1] Documentation/devicetree/bindings/media/video-interfaces.txt 21 - 22 - Optional endpoint properties applicable to parallel input bus described in 23 - the above mentioned "video-interfaces.txt" file are supported. 24 - 25 - - hsync-active: See [1] for description. If property is not present, 26 - default is active high. 27 - - vsync-active: See [1] for description. If property is not present, 28 - default is active high. 29 - - bus-width: See [1] for description. Accepted values are '8' and '16'. 30 - If property is not present, default is '8'. 31 - - field-even-active: See [1] for description. If property is not present, 32 - an even field is identified by a logic 0 (active-low signal). 33 - 34 - Example: 35 - 36 - The example describes the connection between the Capture Engine Unit and an 37 - OV7670 image sensor connected to i2c1 interface. 38 - 39 - ceu: ceu@e8210000 { 40 - reg = <0xe8210000 0x209c>; 41 - compatible = "renesas,r7s72100-ceu"; 42 - interrupts = <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>; 43 - 44 - pinctrl-names = "default"; 45 - pinctrl-0 = <&vio_pins>; 46 - 47 - status = "okay"; 48 - 49 - port { 50 - ceu_in: endpoint { 51 - remote-endpoint = <&ov7670_out>; 52 - 53 - hsync-active = <1>; 54 - vsync-active = <0>; 55 - }; 56 - }; 57 - }; 58 - 59 - i2c1: i2c@fcfee400 { 60 - pinctrl-names = "default"; 61 - pinctrl-0 = <&i2c1_pins>; 62 - 63 - status = "okay"; 64 - 65 - clock-frequency = <100000>; 66 - 67 - ov7670: camera@21 { 68 - compatible = "ovti,ov7670"; 69 - reg = <0x21>; 70 - 71 - pinctrl-names = "default"; 72 - pinctrl-0 = <&vio_pins>; 73 - 74 - reset-gpios = <&port3 11 GPIO_ACTIVE_LOW>; 75 - powerdown-gpios = <&port3 12 GPIO_ACTIVE_HIGH>; 76 - 77 - port { 78 - ov7670_out: endpoint { 79 - remote-endpoint = <&ceu_in>; 80 - 81 - hsync-active = <1>; 82 - vsync-active = <0>; 83 - }; 84 - }; 85 - }; 86 - };
+78
Documentation/devicetree/bindings/media/renesas,ceu.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/media/renesas,ceu.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Renesas Capture Engine Unit (CEU) Bindings 8 + 9 + maintainers: 10 + - Jacopo Mondi <jacopo+renesas@jmondi.org> 11 + - linux-renesas-soc@vger.kernel.org 12 + 13 + description: |+ 14 + The Capture Engine Unit is the image capture interface found in the Renesas SH 15 + Mobile, R-Mobile and RZ SoCs. The interface supports a single parallel input 16 + with data bus width of 8 or 16 bits. 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - renesas,r7s72100-ceu 22 + - renesas,r8a7740-ceu 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + interrupts: 28 + maxItems: 1 29 + 30 + port: 31 + type: object 32 + additionalProperties: false 33 + 34 + properties: 35 + endpoint: 36 + type: object 37 + additionalProperties: false 38 + 39 + # Properties described in 40 + # Documentation/devicetree/bindings/media/video-interfaces.txt 41 + properties: 42 + remote-endpoint: true 43 + hsync-active: true 44 + vsync-active: true 45 + field-even-active: false 46 + bus-width: 47 + enum: [8, 16] 48 + default: 8 49 + 50 + required: 51 + - remote-endpoint 52 + 53 + required: 54 + - endpoint 55 + 56 + required: 57 + - compatible 58 + - reg 59 + - interrupts 60 + - port 61 + 62 + examples: 63 + - | 64 + #include <dt-bindings/interrupt-controller/arm-gic.h> 65 + 66 + ceu: ceu@e8210000 { 67 + reg = <0xe8210000 0x209c>; 68 + compatible = "renesas,r7s72100-ceu"; 69 + interrupts = <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>; 70 + 71 + port { 72 + ceu_in: endpoint { 73 + remote-endpoint = <&ov7670_out>; 74 + hsync-active = <1>; 75 + vsync-active = <0>; 76 + }; 77 + }; 78 + };
-107
Documentation/devicetree/bindings/media/renesas,csi2.txt
··· 1 - Renesas R-Car MIPI CSI-2 2 - ------------------------ 3 - 4 - The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the 5 - Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the 6 - R-Car VIN module, which provides the video capture capabilities. 7 - 8 - Mandatory properties 9 - -------------------- 10 - - compatible: Must be one or more of the following 11 - - "renesas,r8a774a1-csi2" for the R8A774A1 device. 12 - - "renesas,r8a774b1-csi2" for the R8A774B1 device. 13 - - "renesas,r8a774c0-csi2" for the R8A774C0 device. 14 - - "renesas,r8a7795-csi2" for the R8A7795 device. 15 - - "renesas,r8a7796-csi2" for the R8A7796 device. 16 - - "renesas,r8a77965-csi2" for the R8A77965 device. 17 - - "renesas,r8a77970-csi2" for the R8A77970 device. 18 - - "renesas,r8a77980-csi2" for the R8A77980 device. 19 - - "renesas,r8a77990-csi2" for the R8A77990 device. 20 - 21 - - reg: the register base and size for the device registers 22 - - interrupts: the interrupt for the device 23 - - clocks: A phandle + clock specifier for the module clock 24 - - resets: A phandle + reset specifier for the module reset 25 - 26 - The device node shall contain two 'port' child nodes according to the 27 - bindings defined in Documentation/devicetree/bindings/media/ 28 - video-interfaces.txt. port@0 shall connect to the CSI-2 source. port@1 29 - shall connect to all the R-Car VIN modules that have a hardware 30 - connection to the CSI-2 receiver. 31 - 32 - - port@0- Video source (mandatory) 33 - - endpoint@0 - sub-node describing the endpoint that is the video source 34 - 35 - - port@1 - VIN instances (optional) 36 - - One endpoint sub-node for every R-Car VIN instance which is connected 37 - to the R-Car CSI-2 receiver. 38 - 39 - Example: 40 - 41 - csi20: csi2@fea80000 { 42 - compatible = "renesas,r8a7796-csi2"; 43 - reg = <0 0xfea80000 0 0x10000>; 44 - interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; 45 - clocks = <&cpg CPG_MOD 714>; 46 - power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; 47 - resets = <&cpg 714>; 48 - 49 - ports { 50 - #address-cells = <1>; 51 - #size-cells = <0>; 52 - 53 - port@0 { 54 - #address-cells = <1>; 55 - #size-cells = <0>; 56 - 57 - reg = <0>; 58 - 59 - csi20_in: endpoint@0 { 60 - reg = <0>; 61 - clock-lanes = <0>; 62 - data-lanes = <1>; 63 - remote-endpoint = <&adv7482_txb>; 64 - }; 65 - }; 66 - 67 - port@1 { 68 - #address-cells = <1>; 69 - #size-cells = <0>; 70 - 71 - reg = <1>; 72 - 73 - csi20vin0: endpoint@0 { 74 - reg = <0>; 75 - remote-endpoint = <&vin0csi20>; 76 - }; 77 - csi20vin1: endpoint@1 { 78 - reg = <1>; 79 - remote-endpoint = <&vin1csi20>; 80 - }; 81 - csi20vin2: endpoint@2 { 82 - reg = <2>; 83 - remote-endpoint = <&vin2csi20>; 84 - }; 85 - csi20vin3: endpoint@3 { 86 - reg = <3>; 87 - remote-endpoint = <&vin3csi20>; 88 - }; 89 - csi20vin4: endpoint@4 { 90 - reg = <4>; 91 - remote-endpoint = <&vin4csi20>; 92 - }; 93 - csi20vin5: endpoint@5 { 94 - reg = <5>; 95 - remote-endpoint = <&vin5csi20>; 96 - }; 97 - csi20vin6: endpoint@6 { 98 - reg = <6>; 99 - remote-endpoint = <&vin6csi20>; 100 - }; 101 - csi20vin7: endpoint@7 { 102 - reg = <7>; 103 - remote-endpoint = <&vin7csi20>; 104 - }; 105 - }; 106 - }; 107 - };
+198
Documentation/devicetree/bindings/media/renesas,csi2.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + # Copyright (C) 2020 Renesas Electronics Corp. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/media/renesas,csi2.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: Renesas R-Car MIPI CSI-2 receiver 9 + 10 + maintainers: 11 + - Niklas Söderlund <niklas.soderlund@ragnatech.se> 12 + 13 + description: 14 + The R-Car CSI-2 receiver device provides MIPI CSI-2 capabilities for the 15 + Renesas R-Car and RZ/G2 family of devices. It is used in conjunction with the 16 + R-Car VIN module, which provides the video capture capabilities. 17 + 18 + properties: 19 + compatible: 20 + items: 21 + - enum: 22 + - renesas,r8a774a1-csi2 # RZ/G2M 23 + - renesas,r8a774b1-csi2 # RZ/G2N 24 + - renesas,r8a774c0-csi2 # RZ/G2E 25 + - renesas,r8a7795-csi2 # R-Car H3 26 + - renesas,r8a7796-csi2 # R-Car M3-W 27 + - renesas,r8a77965-csi2 # R-Car M3-N 28 + - renesas,r8a77970-csi2 # R-Car V3M 29 + - renesas,r8a77980-csi2 # R-Car V3H 30 + - renesas,r8a77990-csi2 # R-Car E3 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + interrupts: 36 + maxItems: 1 37 + 38 + clocks: 39 + maxItems: 1 40 + 41 + power-domains: 42 + maxItems: 1 43 + 44 + resets: 45 + maxItems: 1 46 + 47 + ports: 48 + type: object 49 + description: 50 + A node containing input and output port nodes with endpoint definitions 51 + as documented in 52 + Documentation/devicetree/bindings/media/video-interfaces.txt 53 + 54 + properties: 55 + port@0: 56 + type: object 57 + description: 58 + Input port node, single endpoint describing the CSI-2 transmitter. 59 + 60 + properties: 61 + reg: 62 + const: 0 63 + 64 + endpoint: 65 + type: object 66 + 67 + properties: 68 + clock-lanes: 69 + maxItems: 1 70 + 71 + data-lanes: 72 + maxItems: 1 73 + 74 + remote-endpoint: true 75 + 76 + required: 77 + - clock-lanes 78 + - data-lanes 79 + - remote-endpoint 80 + 81 + additionalProperties: false 82 + 83 + additionalProperties: false 84 + 85 + port@1: 86 + type: object 87 + description: 88 + Output port node, multiple endpoints describing all the R-Car VIN 89 + modules connected the CSI-2 receiver. 90 + 91 + properties: 92 + '#address-cells': 93 + const: 1 94 + 95 + '#size-cells': 96 + const: 0 97 + 98 + reg: 99 + const: 1 100 + 101 + patternProperties: 102 + "^endpoint@[0-9a-f]$": 103 + type: object 104 + 105 + properties: 106 + reg: 107 + maxItems: 1 108 + 109 + remote-endpoint: true 110 + 111 + required: 112 + - reg 113 + - remote-endpoint 114 + 115 + additionalProperties: false 116 + 117 + additionalProperties: false 118 + 119 + required: 120 + - compatible 121 + - reg 122 + - interrupts 123 + - clocks 124 + - power-domains 125 + - resets 126 + - ports 127 + 128 + additionalProperties: false 129 + 130 + examples: 131 + - | 132 + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> 133 + #include <dt-bindings/interrupt-controller/arm-gic.h> 134 + #include <dt-bindings/power/r8a7796-sysc.h> 135 + 136 + csi20: csi2@fea80000 { 137 + compatible = "renesas,r8a7796-csi2"; 138 + reg = <0 0xfea80000 0 0x10000>; 139 + interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; 140 + clocks = <&cpg CPG_MOD 714>; 141 + power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; 142 + resets = <&cpg 714>; 143 + 144 + ports { 145 + #address-cells = <1>; 146 + #size-cells = <0>; 147 + 148 + port@0 { 149 + reg = <0>; 150 + 151 + csi20_in: endpoint { 152 + clock-lanes = <0>; 153 + data-lanes = <1>; 154 + remote-endpoint = <&adv7482_txb>; 155 + }; 156 + }; 157 + 158 + port@1 { 159 + #address-cells = <1>; 160 + #size-cells = <0>; 161 + 162 + reg = <1>; 163 + 164 + csi20vin0: endpoint@0 { 165 + reg = <0>; 166 + remote-endpoint = <&vin0csi20>; 167 + }; 168 + csi20vin1: endpoint@1 { 169 + reg = <1>; 170 + remote-endpoint = <&vin1csi20>; 171 + }; 172 + csi20vin2: endpoint@2 { 173 + reg = <2>; 174 + remote-endpoint = <&vin2csi20>; 175 + }; 176 + csi20vin3: endpoint@3 { 177 + reg = <3>; 178 + remote-endpoint = <&vin3csi20>; 179 + }; 180 + csi20vin4: endpoint@4 { 181 + reg = <4>; 182 + remote-endpoint = <&vin4csi20>; 183 + }; 184 + csi20vin5: endpoint@5 { 185 + reg = <5>; 186 + remote-endpoint = <&vin5csi20>; 187 + }; 188 + csi20vin6: endpoint@6 { 189 + reg = <6>; 190 + remote-endpoint = <&vin6csi20>; 191 + }; 192 + csi20vin7: endpoint@7 { 193 + reg = <7>; 194 + remote-endpoint = <&vin7csi20>; 195 + }; 196 + }; 197 + }; 198 + };
+1 -1
Documentation/devicetree/bindings/media/samsung-fimc.txt
··· 1 - Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC) 1 + Samsung S5P/Exynos SoC Camera Subsystem (FIMC) 2 2 ---------------------------------------------- 3 3 4 4 The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices
+1 -1
Documentation/devicetree/bindings/media/samsung-mipi-csis.txt
··· 1 - Samsung S5P/EXYNOS SoC series MIPI CSI-2 receiver (MIPI CSIS) 1 + Samsung S5P/Exynos SoC series MIPI CSI-2 receiver (MIPI CSIS) 2 2 ------------------------------------------------------------- 3 3 4 4 Required properties:
-61
Documentation/devicetree/bindings/media/sun6i-csi.txt
··· 1 - Allwinner V3s Camera Sensor Interface 2 - ------------------------------------- 3 - 4 - Allwinner V3s SoC features a CSI module(CSI1) with parallel interface. 5 - 6 - Required properties: 7 - - compatible: value must be one of: 8 - * "allwinner,sun6i-a31-csi" 9 - * "allwinner,sun8i-a83t-csi" 10 - * "allwinner,sun8i-h3-csi" 11 - * "allwinner,sun8i-v3s-csi" 12 - * "allwinner,sun50i-a64-csi" 13 - - reg: base address and size of the memory-mapped region. 14 - - interrupts: interrupt associated to this IP 15 - - clocks: phandles to the clocks feeding the CSI 16 - * bus: the CSI interface clock 17 - * mod: the CSI module clock 18 - * ram: the CSI DRAM clock 19 - - clock-names: the clock names mentioned above 20 - - resets: phandles to the reset line driving the CSI 21 - 22 - The CSI node should contain one 'port' child node with one child 'endpoint' 23 - node, according to the bindings defined in 24 - Documentation/devicetree/bindings/media/video-interfaces.txt. 25 - 26 - Endpoint node properties for CSI 27 - --------------------------------- 28 - See the video-interfaces.txt for a detailed description of these properties. 29 - - remote-endpoint : (required) a phandle to the bus receiver's endpoint 30 - node 31 - - bus-width: : (required) must be 8, 10, 12 or 16 32 - - pclk-sample : (optional) (default: sample on falling edge) 33 - - hsync-active : (required; parallel-only) 34 - - vsync-active : (required; parallel-only) 35 - 36 - Example: 37 - 38 - csi1: csi@1cb4000 { 39 - compatible = "allwinner,sun8i-v3s-csi"; 40 - reg = <0x01cb4000 0x1000>; 41 - interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 42 - clocks = <&ccu CLK_BUS_CSI>, 43 - <&ccu CLK_CSI1_SCLK>, 44 - <&ccu CLK_DRAM_CSI>; 45 - clock-names = "bus", "mod", "ram"; 46 - resets = <&ccu RST_BUS_CSI>; 47 - 48 - port { 49 - /* Parallel bus endpoint */ 50 - csi1_ep: endpoint { 51 - remote-endpoint = <&adv7611_ep>; 52 - bus-width = <16>; 53 - 54 - /* If hsync-active/vsync-active are missing, 55 - embedded BT.656 sync is used */ 56 - hsync-active = <0>; /* Active low */ 57 - vsync-active = <0>; /* Active low */ 58 - pclk-sample = <1>; /* Rising */ 59 - }; 60 - }; 61 - };
+219
Documentation/devicetree/bindings/mfd/allwinner,sun6i-a31-prcm.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/allwinner,sun6i-a31-prcm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A31 PRCM Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + compatible: 17 + const: allwinner,sun6i-a31-prcm 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + patternProperties: 23 + "^.*_(clk|rst)$": 24 + type: object 25 + 26 + properties: 27 + compatible: 28 + enum: 29 + - allwinner,sun4i-a10-mod0-clk 30 + - allwinner,sun6i-a31-apb0-clk 31 + - allwinner,sun6i-a31-apb0-gates-clk 32 + - allwinner,sun6i-a31-ar100-clk 33 + - allwinner,sun6i-a31-clock-reset 34 + - fixed-factor-clock 35 + 36 + allOf: 37 + - if: 38 + properties: 39 + compatible: 40 + contains: 41 + const: allwinner,sun6i-a31-apb0-clk 42 + 43 + then: 44 + properties: 45 + "#clock-cells": 46 + const: 0 47 + 48 + # Already checked in the main schema 49 + compatible: true 50 + 51 + clocks: 52 + maxItems: 1 53 + 54 + clock-output-names: 55 + maxItems: 1 56 + 57 + phandle: true 58 + 59 + required: 60 + - "#clock-cells" 61 + - compatible 62 + - clocks 63 + - clock-output-names 64 + 65 + additionalProperties: false 66 + 67 + - if: 68 + properties: 69 + compatible: 70 + contains: 71 + const: allwinner,sun6i-a31-apb0-gates-clk 72 + 73 + then: 74 + properties: 75 + "#clock-cells": 76 + const: 1 77 + description: > 78 + This additional argument passed to that clock is the 79 + offset of the bit controlling this particular gate in 80 + the register. 81 + 82 + # Already checked in the main schema 83 + compatible: true 84 + 85 + clocks: 86 + maxItems: 1 87 + 88 + clock-output-names: 89 + minItems: 1 90 + maxItems: 32 91 + 92 + phandle: true 93 + 94 + required: 95 + - "#clock-cells" 96 + - compatible 97 + - clocks 98 + - clock-output-names 99 + 100 + additionalProperties: false 101 + 102 + - if: 103 + properties: 104 + compatible: 105 + contains: 106 + const: allwinner,sun6i-a31-ar100-clk 107 + 108 + then: 109 + properties: 110 + "#clock-cells": 111 + const: 0 112 + 113 + # Already checked in the main schema 114 + compatible: true 115 + 116 + clocks: 117 + maxItems: 4 118 + description: > 119 + The parent order must match the hardware programming 120 + order. 121 + 122 + clock-output-names: 123 + maxItems: 1 124 + 125 + phandle: true 126 + 127 + required: 128 + - "#clock-cells" 129 + - compatible 130 + - clocks 131 + - clock-output-names 132 + 133 + additionalProperties: false 134 + 135 + - if: 136 + properties: 137 + compatible: 138 + contains: 139 + const: allwinner,sun6i-a31-clock-reset 140 + 141 + then: 142 + properties: 143 + "#reset-cells": 144 + const: 1 145 + 146 + # Already checked in the main schema 147 + compatible: true 148 + 149 + phandle: true 150 + 151 + required: 152 + - "#reset-cells" 153 + - compatible 154 + 155 + additionalProperties: false 156 + 157 + required: 158 + - compatible 159 + - reg 160 + 161 + additionalProperties: false 162 + 163 + examples: 164 + - | 165 + #include <dt-bindings/clock/sun6i-a31-ccu.h> 166 + 167 + prcm@1f01400 { 168 + compatible = "allwinner,sun6i-a31-prcm"; 169 + reg = <0x01f01400 0x200>; 170 + 171 + ar100: ar100_clk { 172 + compatible = "allwinner,sun6i-a31-ar100-clk"; 173 + #clock-cells = <0>; 174 + clocks = <&rtc 0>, <&osc24M>, 175 + <&ccu CLK_PLL_PERIPH>, 176 + <&ccu CLK_PLL_PERIPH>; 177 + clock-output-names = "ar100"; 178 + }; 179 + 180 + ahb0: ahb0_clk { 181 + compatible = "fixed-factor-clock"; 182 + #clock-cells = <0>; 183 + clock-div = <1>; 184 + clock-mult = <1>; 185 + clocks = <&ar100>; 186 + clock-output-names = "ahb0"; 187 + }; 188 + 189 + apb0: apb0_clk { 190 + compatible = "allwinner,sun6i-a31-apb0-clk"; 191 + #clock-cells = <0>; 192 + clocks = <&ahb0>; 193 + clock-output-names = "apb0"; 194 + }; 195 + 196 + apb0_gates: apb0_gates_clk { 197 + compatible = "allwinner,sun6i-a31-apb0-gates-clk"; 198 + #clock-cells = <1>; 199 + clocks = <&apb0>; 200 + clock-output-names = "apb0_pio", "apb0_ir", 201 + "apb0_timer", "apb0_p2wi", 202 + "apb0_uart", "apb0_1wire", 203 + "apb0_i2c"; 204 + }; 205 + 206 + ir_clk: ir_clk { 207 + #clock-cells = <0>; 208 + compatible = "allwinner,sun4i-a10-mod0-clk"; 209 + clocks = <&rtc 0>, <&osc24M>; 210 + clock-output-names = "ir"; 211 + }; 212 + 213 + apb0_rst: apb0_rst { 214 + compatible = "allwinner,sun6i-a31-clock-reset"; 215 + #reset-cells = <1>; 216 + }; 217 + }; 218 + 219 + ...
+200
Documentation/devicetree/bindings/mfd/allwinner,sun8i-a23-prcm.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0+ 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/allwinner,sun8i-a23-prcm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A23 PRCM Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + properties: 16 + compatible: 17 + const: allwinner,sun8i-a23-prcm 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + patternProperties: 23 + "^.*(clk|rst|codec).*$": 24 + type: object 25 + 26 + properties: 27 + compatible: 28 + enum: 29 + - fixed-factor-clock 30 + - allwinner,sun8i-a23-apb0-clk 31 + - allwinner,sun8i-a23-apb0-gates-clk 32 + - allwinner,sun6i-a31-clock-reset 33 + - allwinner,sun8i-a23-codec-analog 34 + 35 + required: 36 + - compatible 37 + 38 + allOf: 39 + - if: 40 + properties: 41 + compatible: 42 + contains: 43 + const: allwinner,sun8i-a23-apb0-clk 44 + 45 + then: 46 + properties: 47 + "#clock-cells": 48 + const: 0 49 + 50 + # Already checked in the main schema 51 + compatible: true 52 + 53 + clocks: 54 + maxItems: 1 55 + 56 + clock-output-names: 57 + maxItems: 1 58 + 59 + phandle: true 60 + 61 + required: 62 + - "#clock-cells" 63 + - compatible 64 + - clocks 65 + - clock-output-names 66 + 67 + additionalProperties: false 68 + 69 + - if: 70 + properties: 71 + compatible: 72 + contains: 73 + const: allwinner,sun8i-a23-apb0-gates-clk 74 + 75 + then: 76 + properties: 77 + "#clock-cells": 78 + const: 1 79 + description: > 80 + This additional argument passed to that clock is the 81 + offset of the bit controlling this particular gate in 82 + the register. 83 + 84 + # Already checked in the main schema 85 + compatible: true 86 + 87 + clocks: 88 + maxItems: 1 89 + 90 + clock-output-names: 91 + minItems: 1 92 + maxItems: 32 93 + 94 + phandle: true 95 + 96 + required: 97 + - "#clock-cells" 98 + - compatible 99 + - clocks 100 + - clock-output-names 101 + 102 + additionalProperties: false 103 + 104 + - if: 105 + properties: 106 + compatible: 107 + contains: 108 + const: allwinner,sun6i-a31-clock-reset 109 + 110 + then: 111 + properties: 112 + "#reset-cells": 113 + const: 1 114 + 115 + # Already checked in the main schema 116 + compatible: true 117 + 118 + phandle: true 119 + 120 + required: 121 + - "#reset-cells" 122 + - compatible 123 + 124 + additionalProperties: false 125 + 126 + - if: 127 + properties: 128 + compatible: 129 + contains: 130 + const: allwinner,sun8i-a23-codec-analog 131 + 132 + then: 133 + properties: 134 + # Already checked in the main schema 135 + compatible: true 136 + 137 + phandle: true 138 + 139 + required: 140 + - compatible 141 + 142 + additionalProperties: false 143 + 144 + required: 145 + - compatible 146 + - reg 147 + 148 + additionalProperties: false 149 + 150 + examples: 151 + - | 152 + prcm@1f01400 { 153 + compatible = "allwinner,sun8i-a23-prcm"; 154 + reg = <0x01f01400 0x200>; 155 + 156 + ar100: ar100_clk { 157 + compatible = "fixed-factor-clock"; 158 + #clock-cells = <0>; 159 + clock-div = <1>; 160 + clock-mult = <1>; 161 + clocks = <&osc24M>; 162 + clock-output-names = "ar100"; 163 + }; 164 + 165 + ahb0: ahb0_clk { 166 + compatible = "fixed-factor-clock"; 167 + #clock-cells = <0>; 168 + clock-div = <1>; 169 + clock-mult = <1>; 170 + clocks = <&ar100>; 171 + clock-output-names = "ahb0"; 172 + }; 173 + 174 + apb0: apb0_clk { 175 + compatible = "allwinner,sun8i-a23-apb0-clk"; 176 + #clock-cells = <0>; 177 + clocks = <&ahb0>; 178 + clock-output-names = "apb0"; 179 + }; 180 + 181 + apb0_gates: apb0_gates_clk { 182 + compatible = "allwinner,sun8i-a23-apb0-gates-clk"; 183 + #clock-cells = <1>; 184 + clocks = <&apb0>; 185 + clock-output-names = "apb0_pio", "apb0_timer", 186 + "apb0_rsb", "apb0_uart", 187 + "apb0_i2c"; 188 + }; 189 + 190 + apb0_rst: apb0_rst { 191 + compatible = "allwinner,sun6i-a31-clock-reset"; 192 + #reset-cells = <1>; 193 + }; 194 + 195 + codec_analog: codec-analog { 196 + compatible = "allwinner,sun8i-a23-codec-analog"; 197 + }; 198 + }; 199 + 200 + ...
-59
Documentation/devicetree/bindings/mfd/sun6i-prcm.txt
··· 1 - * Allwinner PRCM (Power/Reset/Clock Management) Multi-Functional Device 2 - 3 - PRCM is an MFD device exposing several Power Management related devices 4 - (like clks and reset controllers). 5 - 6 - Required properties: 7 - - compatible: "allwinner,sun6i-a31-prcm" or "allwinner,sun8i-a23-prcm" 8 - - reg: The PRCM registers range 9 - 10 - The prcm node may contain several subdevices definitions: 11 - - see Documentation/devicetree/bindings/clock/sunxi.txt for clock devices 12 - - see Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt for reset 13 - controller devices 14 - 15 - 16 - Example: 17 - 18 - prcm: prcm@1f01400 { 19 - compatible = "allwinner,sun6i-a31-prcm"; 20 - reg = <0x01f01400 0x200>; 21 - 22 - /* Put subdevices here */ 23 - ar100: ar100_clk { 24 - compatible = "allwinner,sun6i-a31-ar100-clk"; 25 - #clock-cells = <0>; 26 - clocks = <&osc32k>, <&osc24M>, <&pll6>, <&pll6>; 27 - }; 28 - 29 - ahb0: ahb0_clk { 30 - compatible = "fixed-factor-clock"; 31 - #clock-cells = <0>; 32 - clock-div = <1>; 33 - clock-mult = <1>; 34 - clocks = <&ar100_div>; 35 - clock-output-names = "ahb0"; 36 - }; 37 - 38 - apb0: apb0_clk { 39 - compatible = "allwinner,sun6i-a31-apb0-clk"; 40 - #clock-cells = <0>; 41 - clocks = <&ahb0>; 42 - clock-output-names = "apb0"; 43 - }; 44 - 45 - apb0_gates: apb0_gates_clk { 46 - compatible = "allwinner,sun6i-a31-apb0-gates-clk"; 47 - #clock-cells = <1>; 48 - clocks = <&apb0>; 49 - clock-output-names = "apb0_pio", "apb0_ir", 50 - "apb0_timer01", "apb0_p2wi", 51 - "apb0_uart", "apb0_1wire", 52 - "apb0_i2c"; 53 - }; 54 - 55 - apb0_rst: apb0_rst { 56 - compatible = "allwinner,sun6i-a31-clock-reset"; 57 - #reset-cells = <1>; 58 - }; 59 - };
+1
Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
··· 22 22 "fsl,imx8mm-usdhc" 23 23 "fsl,imx8mn-usdhc" 24 24 "fsl,imx8mp-usdhc" 25 + "fsl,imx8qm-usdhc" 25 26 "fsl,imx8qxp-usdhc" 26 27 27 28 Optional properties:
+2 -3
Documentation/devicetree/bindings/mmc/mmc-controller.yaml
··· 96 96 description: 97 97 When set, no physical write-protect line is present. This 98 98 property should only be specified when the controller has a 99 - dedicated write-protect detection logic. If a GPIO is always 100 - used for the write-protect detection. If a GPIO is always used 99 + dedicated write-protect detection logic. If a GPIO is always used 101 100 for the write-protect detection logic, it is sufficient to not 102 101 specify the wp-gpios property in the absence of a write-protect 103 - line. 102 + line. Not used in combination with eMMC or SDIO. 104 103 105 104 wp-gpios: 106 105 description:
+1
Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
··· 11 11 - compatible: should contain one of the following: 12 12 * "qcom,qca6174-bt" 13 13 * "qcom,wcn3990-bt" 14 + * "qcom,wcn3991-bt" 14 15 * "qcom,wcn3998-bt" 15 16 16 17 Optional properties for compatible string qcom,qca6174-bt:
+4 -3
Documentation/devicetree/bindings/net/renesas,ravb.txt
··· 21 21 - "renesas,etheravb-r8a774b1" for the R8A774B1 SoC. 22 22 - "renesas,etheravb-r8a774c0" for the R8A774C0 SoC. 23 23 - "renesas,etheravb-r8a7795" for the R8A7795 SoC. 24 - - "renesas,etheravb-r8a7796" for the R8A7796 SoC. 24 + - "renesas,etheravb-r8a7796" for the R8A77960 SoC. 25 + - "renesas,etheravb-r8a77961" for the R8A77961 SoC. 25 26 - "renesas,etheravb-r8a77965" for the R8A77965 SoC. 26 27 - "renesas,etheravb-r8a77970" for the R8A77970 SoC. 27 28 - "renesas,etheravb-r8a77980" for the R8A77980 SoC. ··· 38 37 - reg: Offset and length of (1) the register block and (2) the stream buffer. 39 38 The region for the register block is mandatory. 40 39 The region for the stream buffer is optional, as it is only present on 41 - R-Car Gen2 and RZ/G1 SoCs, and on R-Car H3 (R8A7795), M3-W (R8A7796), 42 - and M3-N (R8A77965). 40 + R-Car Gen2 and RZ/G1 SoCs, and on R-Car H3 (R8A7795), M3-W (R8A77960), 41 + M3-W+ (R8A77961), and M3-N (R8A77965). 43 42 - interrupts: A list of interrupt-specifiers, one for each entry in 44 43 interrupt-names. 45 44 If interrupt-names is not present, an interrupt specifier
-31
Documentation/devicetree/bindings/nvmem/st,stm32-romem.txt
··· 1 - STMicroelectronics STM32 Factory-programmed data device tree bindings 2 - 3 - This represents STM32 Factory-programmed read only non-volatile area: locked 4 - flash, OTP, read-only HW regs... This contains various information such as: 5 - analog calibration data for temperature sensor (e.g. TS_CAL1, TS_CAL2), 6 - internal vref (VREFIN_CAL), unique device ID... 7 - 8 - Required properties: 9 - - compatible: Should be one of: 10 - "st,stm32f4-otp" 11 - "st,stm32mp15-bsec" 12 - - reg: Offset and length of factory-programmed area. 13 - - #address-cells: Should be '<1>'. 14 - - #size-cells: Should be '<1>'. 15 - 16 - Optional Data cells: 17 - - Must be child nodes as described in nvmem.txt. 18 - 19 - Example on stm32f4: 20 - romem: nvmem@1fff7800 { 21 - compatible = "st,stm32f4-otp"; 22 - reg = <0x1fff7800 0x400>; 23 - #address-cells = <1>; 24 - #size-cells = <1>; 25 - 26 - /* Data cells: ts_cal1 at 0x1fff7a2c */ 27 - ts_cal1: calib@22c { 28 - reg = <0x22c 0x2>; 29 - }; 30 - ... 31 - };
+46
Documentation/devicetree/bindings/nvmem/st,stm32-romem.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/nvmem/st,stm32-romem.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 Factory-programmed data bindings 8 + 9 + description: | 10 + This represents STM32 Factory-programmed read only non-volatile area: locked 11 + flash, OTP, read-only HW regs... This contains various information such as: 12 + analog calibration data for temperature sensor (e.g. TS_CAL1, TS_CAL2), 13 + internal vref (VREFIN_CAL), unique device ID... 14 + 15 + maintainers: 16 + - Fabrice Gasnier <fabrice.gasnier@st.com> 17 + 18 + allOf: 19 + - $ref: "nvmem.yaml#" 20 + 21 + properties: 22 + compatible: 23 + enum: 24 + - st,stm32f4-otp 25 + - st,stm32mp15-bsec 26 + 27 + required: 28 + - "#address-cells" 29 + - "#size-cells" 30 + - compatible 31 + - reg 32 + 33 + examples: 34 + - | 35 + efuse@1fff7800 { 36 + compatible = "st,stm32f4-otp"; 37 + reg = <0x1fff7800 0x400>; 38 + #address-cells = <1>; 39 + #size-cells = <1>; 40 + 41 + calib@22c { 42 + reg = <0x22c 0x2>; 43 + }; 44 + }; 45 + 46 + ...
+129
Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/opp/allwinner,sun50i-h6-operating-points.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner H6 CPU OPP Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + description: | 14 + For some SoCs, the CPU frequency subset and voltage value of each 15 + OPP varies based on the silicon variant in use. Allwinner Process 16 + Voltage Scaling Tables defines the voltage and frequency value based 17 + on the speedbin blown in the efuse combination. The 18 + sun50i-cpufreq-nvmem driver reads the efuse value from the SoC to 19 + provide the OPP framework with required information. 20 + 21 + properties: 22 + compatible: 23 + const: allwinner,sun50i-h6-operating-points 24 + 25 + nvmem-cells: 26 + description: | 27 + A phandle pointing to a nvmem-cells node representing the efuse 28 + registers that has information about the speedbin that is used 29 + to select the right frequency/voltage value pair. Please refer 30 + the for nvmem-cells bindings 31 + Documentation/devicetree/bindings/nvmem/nvmem.txt and also 32 + examples below. 33 + 34 + required: 35 + - compatible 36 + - nvmem-cells 37 + 38 + patternProperties: 39 + "opp-[0-9]+": 40 + type: object 41 + 42 + properties: 43 + opp-hz: true 44 + 45 + patternProperties: 46 + "opp-microvolt-.*": true 47 + 48 + required: 49 + - opp-hz 50 + - opp-microvolt-speed0 51 + - opp-microvolt-speed1 52 + - opp-microvolt-speed2 53 + 54 + unevaluatedProperties: false 55 + 56 + unevaluatedProperties: false 57 + 58 + examples: 59 + - | 60 + cpu_opp_table: opp-table { 61 + compatible = "allwinner,sun50i-h6-operating-points"; 62 + nvmem-cells = <&speedbin_efuse>; 63 + opp-shared; 64 + 65 + opp-480000000 { 66 + clock-latency-ns = <244144>; /* 8 32k periods */ 67 + opp-hz = /bits/ 64 <480000000>; 68 + 69 + opp-microvolt-speed0 = <880000>; 70 + opp-microvolt-speed1 = <820000>; 71 + opp-microvolt-speed2 = <800000>; 72 + }; 73 + 74 + opp-720000000 { 75 + clock-latency-ns = <244144>; /* 8 32k periods */ 76 + opp-hz = /bits/ 64 <720000000>; 77 + 78 + opp-microvolt-speed0 = <880000>; 79 + opp-microvolt-speed1 = <820000>; 80 + opp-microvolt-speed2 = <800000>; 81 + }; 82 + 83 + opp-816000000 { 84 + clock-latency-ns = <244144>; /* 8 32k periods */ 85 + opp-hz = /bits/ 64 <816000000>; 86 + 87 + opp-microvolt-speed0 = <880000>; 88 + opp-microvolt-speed1 = <820000>; 89 + opp-microvolt-speed2 = <800000>; 90 + }; 91 + 92 + opp-888000000 { 93 + clock-latency-ns = <244144>; /* 8 32k periods */ 94 + opp-hz = /bits/ 64 <888000000>; 95 + 96 + opp-microvolt-speed0 = <940000>; 97 + opp-microvolt-speed1 = <820000>; 98 + opp-microvolt-speed2 = <800000>; 99 + }; 100 + 101 + opp-1080000000 { 102 + clock-latency-ns = <244144>; /* 8 32k periods */ 103 + opp-hz = /bits/ 64 <1080000000>; 104 + 105 + opp-microvolt-speed0 = <1060000>; 106 + opp-microvolt-speed1 = <880000>; 107 + opp-microvolt-speed2 = <840000>; 108 + }; 109 + 110 + opp-1320000000 { 111 + clock-latency-ns = <244144>; /* 8 32k periods */ 112 + opp-hz = /bits/ 64 <1320000000>; 113 + 114 + opp-microvolt-speed0 = <1160000>; 115 + opp-microvolt-speed1 = <940000>; 116 + opp-microvolt-speed2 = <900000>; 117 + }; 118 + 119 + opp-1488000000 { 120 + clock-latency-ns = <244144>; /* 8 32k periods */ 121 + opp-hz = /bits/ 64 <1488000000>; 122 + 123 + opp-microvolt-speed0 = <1160000>; 124 + opp-microvolt-speed1 = <1000000>; 125 + opp-microvolt-speed2 = <960000>; 126 + }; 127 + }; 128 + 129 + ...
-167
Documentation/devicetree/bindings/opp/sun50i-nvmem-cpufreq.txt
··· 1 - Allwinner Technologies, Inc. NVMEM CPUFreq and OPP bindings 2 - =================================== 3 - 4 - For some SoCs, the CPU frequency subset and voltage value of each OPP 5 - varies based on the silicon variant in use. Allwinner Process Voltage 6 - Scaling Tables defines the voltage and frequency value based on the 7 - speedbin blown in the efuse combination. The sun50i-cpufreq-nvmem driver 8 - reads the efuse value from the SoC to provide the OPP framework with 9 - required information. 10 - 11 - Required properties: 12 - -------------------- 13 - In 'cpus' nodes: 14 - - operating-points-v2: Phandle to the operating-points-v2 table to use. 15 - 16 - In 'operating-points-v2' table: 17 - - compatible: Should be 18 - - 'allwinner,sun50i-h6-operating-points'. 19 - - nvmem-cells: A phandle pointing to a nvmem-cells node representing the 20 - efuse registers that has information about the speedbin 21 - that is used to select the right frequency/voltage value 22 - pair. Please refer the for nvmem-cells bindings 23 - Documentation/devicetree/bindings/nvmem/nvmem.txt and 24 - also examples below. 25 - 26 - In every OPP node: 27 - - opp-microvolt-<name>: Voltage in micro Volts. 28 - At runtime, the platform can pick a <name> and 29 - matching opp-microvolt-<name> property. 30 - [See: opp.txt] 31 - HW: <name>: 32 - sun50i-h6 speed0 speed1 speed2 33 - 34 - Example 1: 35 - --------- 36 - 37 - cpus { 38 - #address-cells = <1>; 39 - #size-cells = <0>; 40 - 41 - cpu0: cpu@0 { 42 - compatible = "arm,cortex-a53"; 43 - device_type = "cpu"; 44 - reg = <0>; 45 - enable-method = "psci"; 46 - clocks = <&ccu CLK_CPUX>; 47 - clock-latency-ns = <244144>; /* 8 32k periods */ 48 - operating-points-v2 = <&cpu_opp_table>; 49 - #cooling-cells = <2>; 50 - }; 51 - 52 - cpu1: cpu@1 { 53 - compatible = "arm,cortex-a53"; 54 - device_type = "cpu"; 55 - reg = <1>; 56 - enable-method = "psci"; 57 - clocks = <&ccu CLK_CPUX>; 58 - clock-latency-ns = <244144>; /* 8 32k periods */ 59 - operating-points-v2 = <&cpu_opp_table>; 60 - #cooling-cells = <2>; 61 - }; 62 - 63 - cpu2: cpu@2 { 64 - compatible = "arm,cortex-a53"; 65 - device_type = "cpu"; 66 - reg = <2>; 67 - enable-method = "psci"; 68 - clocks = <&ccu CLK_CPUX>; 69 - clock-latency-ns = <244144>; /* 8 32k periods */ 70 - operating-points-v2 = <&cpu_opp_table>; 71 - #cooling-cells = <2>; 72 - }; 73 - 74 - cpu3: cpu@3 { 75 - compatible = "arm,cortex-a53"; 76 - device_type = "cpu"; 77 - reg = <3>; 78 - enable-method = "psci"; 79 - clocks = <&ccu CLK_CPUX>; 80 - clock-latency-ns = <244144>; /* 8 32k periods */ 81 - operating-points-v2 = <&cpu_opp_table>; 82 - #cooling-cells = <2>; 83 - }; 84 - }; 85 - 86 - cpu_opp_table: opp_table { 87 - compatible = "allwinner,sun50i-h6-operating-points"; 88 - nvmem-cells = <&speedbin_efuse>; 89 - opp-shared; 90 - 91 - opp@480000000 { 92 - clock-latency-ns = <244144>; /* 8 32k periods */ 93 - opp-hz = /bits/ 64 <480000000>; 94 - 95 - opp-microvolt-speed0 = <880000>; 96 - opp-microvolt-speed1 = <820000>; 97 - opp-microvolt-speed2 = <800000>; 98 - }; 99 - 100 - opp@720000000 { 101 - clock-latency-ns = <244144>; /* 8 32k periods */ 102 - opp-hz = /bits/ 64 <720000000>; 103 - 104 - opp-microvolt-speed0 = <880000>; 105 - opp-microvolt-speed1 = <820000>; 106 - opp-microvolt-speed2 = <800000>; 107 - }; 108 - 109 - opp@816000000 { 110 - clock-latency-ns = <244144>; /* 8 32k periods */ 111 - opp-hz = /bits/ 64 <816000000>; 112 - 113 - opp-microvolt-speed0 = <880000>; 114 - opp-microvolt-speed1 = <820000>; 115 - opp-microvolt-speed2 = <800000>; 116 - }; 117 - 118 - opp@888000000 { 119 - clock-latency-ns = <244144>; /* 8 32k periods */ 120 - opp-hz = /bits/ 64 <888000000>; 121 - 122 - opp-microvolt-speed0 = <940000>; 123 - opp-microvolt-speed1 = <820000>; 124 - opp-microvolt-speed2 = <800000>; 125 - }; 126 - 127 - opp@1080000000 { 128 - clock-latency-ns = <244144>; /* 8 32k periods */ 129 - opp-hz = /bits/ 64 <1080000000>; 130 - 131 - opp-microvolt-speed0 = <1060000>; 132 - opp-microvolt-speed1 = <880000>; 133 - opp-microvolt-speed2 = <840000>; 134 - }; 135 - 136 - opp@1320000000 { 137 - clock-latency-ns = <244144>; /* 8 32k periods */ 138 - opp-hz = /bits/ 64 <1320000000>; 139 - 140 - opp-microvolt-speed0 = <1160000>; 141 - opp-microvolt-speed1 = <940000>; 142 - opp-microvolt-speed2 = <900000>; 143 - }; 144 - 145 - opp@1488000000 { 146 - clock-latency-ns = <244144>; /* 8 32k periods */ 147 - opp-hz = /bits/ 64 <1488000000>; 148 - 149 - opp-microvolt-speed0 = <1160000>; 150 - opp-microvolt-speed1 = <1000000>; 151 - opp-microvolt-speed2 = <960000>; 152 - }; 153 - }; 154 - .... 155 - soc { 156 - .... 157 - sid: sid@3006000 { 158 - compatible = "allwinner,sun50i-h6-sid"; 159 - reg = <0x03006000 0x400>; 160 - #address-cells = <1>; 161 - #size-cells = <1>; 162 - .... 163 - speedbin_efuse: speed@1c { 164 - reg = <0x1c 4>; 165 - }; 166 - }; 167 - };
-10
Documentation/devicetree/bindings/pci/arm,juno-r1-pcie.txt
··· 1 - * ARM Juno R1 PCIe interface 2 - 3 - This PCIe host controller is based on PLDA XpressRICH3-AXI IP 4 - and thus inherits all the common properties defined in plda,xpressrich3-axi.txt 5 - as well as the base properties defined in host-generic-pci.txt. 6 - 7 - Required properties: 8 - - compatible: "arm,juno-r1-pcie" 9 - - dma-coherent: The host controller bridges the AXI transactions into PCIe bus 10 - in a manner that makes the DMA operations to appear coherent to the CPUs.
-42
Documentation/devicetree/bindings/pci/designware-pcie-ecam.txt
··· 1 - * Synopsys DesignWare PCIe root complex in ECAM shift mode 2 - 3 - In some cases, firmware may already have configured the Synopsys DesignWare 4 - PCIe controller in RC mode with static ATU window mappings that cover all 5 - config, MMIO and I/O spaces in a [mostly] ECAM compatible fashion. 6 - In this case, there is no need for the OS to perform any low level setup 7 - of clocks, PHYs or device registers, nor is there any reason for the driver 8 - to reconfigure ATU windows for config and/or IO space accesses at runtime. 9 - 10 - In cases where the IP was synthesized with a minimum ATU window size of 11 - 64 KB, it cannot be supported by the generic ECAM driver, because it 12 - requires special config space accessors that filter accesses to device #1 13 - and beyond on the first bus. 14 - 15 - Required properties: 16 - - compatible: "marvell,armada8k-pcie-ecam" or 17 - "socionext,synquacer-pcie-ecam" or 18 - "snps,dw-pcie-ecam" (must be preceded by a more specific match) 19 - 20 - Please refer to the binding document of "pci-host-ecam-generic" in the 21 - file host-generic-pci.txt for a description of the remaining required 22 - and optional properties. 23 - 24 - Example: 25 - 26 - pcie1: pcie@7f000000 { 27 - compatible = "socionext,synquacer-pcie-ecam", "snps,dw-pcie-ecam"; 28 - device_type = "pci"; 29 - reg = <0x0 0x7f000000 0x0 0xf00000>; 30 - bus-range = <0x0 0xe>; 31 - #address-cells = <3>; 32 - #size-cells = <2>; 33 - ranges = <0x1000000 0x00 0x00010000 0x00 0x7ff00000 0x0 0x00010000>, 34 - <0x2000000 0x00 0x70000000 0x00 0x70000000 0x0 0x0f000000>, 35 - <0x3000000 0x3f 0x00000000 0x3f 0x00000000 0x1 0x00000000>; 36 - 37 - #interrupt-cells = <0x1>; 38 - interrupt-map-mask = <0x0 0x0 0x0 0x0>; 39 - interrupt-map = <0x0 0x0 0x0 0x0 &gic 0x0 0x0 0x0 182 0x4>; 40 - msi-map = <0x0 &its 0x0 0x10000>; 41 - dma-coherent; 42 - };
-42
Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
··· 41 41 0x0 0 0 3 &mbigen_pcie 3 12 42 42 0x0 0 0 4 &mbigen_pcie 4 13>; 43 43 }; 44 - 45 - HiSilicon Hip06/Hip07 PCIe host bridge DT (almost-ECAM) description. 46 - 47 - Some BIOSes place the host controller in a mode where it is ECAM 48 - compliant for all devices other than the root complex. In such cases, 49 - the host controller should be described as below. 50 - 51 - The properties and their meanings are identical to those described in 52 - host-generic-pci.txt except as listed below. 53 - 54 - Properties of the host controller node that differ from 55 - host-generic-pci.txt: 56 - 57 - - compatible : Must be "hisilicon,hip06-pcie-ecam", or 58 - "hisilicon,hip07-pcie-ecam" 59 - 60 - - reg : Two entries: First the ECAM configuration space for any 61 - other bus underneath the root bus. Second, the base 62 - and size of the HiSilicon host bridge registers include 63 - the RC's own config space. 64 - 65 - Example: 66 - pcie0: pcie@a0090000 { 67 - compatible = "hisilicon,hip06-pcie-ecam"; 68 - reg = <0 0xb0000000 0 0x2000000>, /* ECAM configuration space */ 69 - <0 0xa0090000 0 0x10000>; /* host bridge registers */ 70 - bus-range = <0 31>; 71 - msi-map = <0x0000 &its_dsa 0x0000 0x2000>; 72 - msi-map-mask = <0xffff>; 73 - #address-cells = <3>; 74 - #size-cells = <2>; 75 - device_type = "pci"; 76 - dma-coherent; 77 - ranges = <0x02000000 0 0xb2000000 0x0 0xb2000000 0 0x5ff0000 78 - 0x01000000 0 0 0 0xb7ff0000 0 0x10000>; 79 - #interrupt-cells = <1>; 80 - interrupt-map-mask = <0xf800 0 0 7>; 81 - interrupt-map = <0x0 0 0 1 &mbigen_pcie0 650 4 82 - 0x0 0 0 2 &mbigen_pcie0 650 4 83 - 0x0 0 0 3 &mbigen_pcie0 650 4 84 - 0x0 0 0 4 &mbigen_pcie0 650 4>; 85 - };
-101
Documentation/devicetree/bindings/pci/host-generic-pci.txt
··· 1 - * Generic PCI host controller 2 - 3 - Firmware-initialised PCI host controllers and PCI emulations, such as the 4 - virtio-pci implementations found in kvmtool and other para-virtualised 5 - systems, do not require driver support for complexities such as regulator 6 - and clock management. In fact, the controller may not even require the 7 - configuration of a control interface by the operating system, instead 8 - presenting a set of fixed windows describing a subset of IO, Memory and 9 - Configuration Spaces. 10 - 11 - Such a controller can be described purely in terms of the standardized device 12 - tree bindings communicated in pci.txt: 13 - 14 - 15 - Properties of the host controller node: 16 - 17 - - compatible : Must be "pci-host-cam-generic" or "pci-host-ecam-generic" 18 - depending on the layout of configuration space (CAM vs 19 - ECAM respectively). 20 - 21 - - device_type : Must be "pci". 22 - 23 - - ranges : As described in IEEE Std 1275-1994, but must provide 24 - at least a definition of non-prefetchable memory. One 25 - or both of prefetchable Memory and IO Space may also 26 - be provided. 27 - 28 - - bus-range : Optional property (also described in IEEE Std 1275-1994) 29 - to indicate the range of bus numbers for this controller. 30 - If absent, defaults to <0 255> (i.e. all buses). 31 - 32 - - #address-cells : Must be 3. 33 - 34 - - #size-cells : Must be 2. 35 - 36 - - reg : The Configuration Space base address and size, as accessed 37 - from the parent bus. The base address corresponds to 38 - the first bus in the "bus-range" property. If no 39 - "bus-range" is specified, this will be bus 0 (the default). 40 - 41 - Properties of the /chosen node: 42 - 43 - - linux,pci-probe-only 44 - : Optional property which takes a single-cell argument. 45 - If '0', then Linux will assign devices in its usual manner, 46 - otherwise it will not try to assign devices and instead use 47 - them as they are configured already. 48 - 49 - Configuration Space is assumed to be memory-mapped (as opposed to being 50 - accessed via an ioport) and laid out with a direct correspondence to the 51 - geography of a PCI bus address by concatenating the various components to 52 - form an offset. 53 - 54 - For CAM, this 24-bit offset is: 55 - 56 - cfg_offset(bus, device, function, register) = 57 - bus << 16 | device << 11 | function << 8 | register 58 - 59 - While ECAM extends this by 4 bits to accommodate 4k of function space: 60 - 61 - cfg_offset(bus, device, function, register) = 62 - bus << 20 | device << 15 | function << 12 | register 63 - 64 - Interrupt mapping is exactly as described in `Open Firmware Recommended 65 - Practice: Interrupt Mapping' and requires the following properties: 66 - 67 - - #interrupt-cells : Must be 1 68 - 69 - - interrupt-map : <see aforementioned specification> 70 - 71 - - interrupt-map-mask : <see aforementioned specification> 72 - 73 - 74 - Example: 75 - 76 - pci { 77 - compatible = "pci-host-cam-generic" 78 - device_type = "pci"; 79 - #address-cells = <3>; 80 - #size-cells = <2>; 81 - bus-range = <0x0 0x1>; 82 - 83 - // CPU_PHYSICAL(2) SIZE(2) 84 - reg = <0x0 0x40000000 0x0 0x1000000>; 85 - 86 - // BUS_ADDRESS(3) CPU_PHYSICAL(2) SIZE(2) 87 - ranges = <0x01000000 0x0 0x01000000 0x0 0x01000000 0x0 0x00010000>, 88 - <0x02000000 0x0 0x41000000 0x0 0x41000000 0x0 0x3f000000>; 89 - 90 - 91 - #interrupt-cells = <0x1>; 92 - 93 - // PCI_DEVICE(3) INT#(1) CONTROLLER(PHANDLE) CONTROLLER_DATA(3) 94 - interrupt-map = < 0x0 0x0 0x0 0x1 &gic 0x0 0x4 0x1 95 - 0x800 0x0 0x0 0x1 &gic 0x0 0x5 0x1 96 - 0x1000 0x0 0x0 0x1 &gic 0x0 0x6 0x1 97 - 0x1800 0x0 0x0 0x1 &gic 0x0 0x7 0x1>; 98 - 99 - // PCI_DEVICE(3) INT#(1) 100 - interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 101 - }
+172
Documentation/devicetree/bindings/pci/host-generic-pci.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/pci/host-generic-pci.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Generic PCI host controller 8 + 9 + maintainers: 10 + - Will Deacon <will@kernel.org> 11 + 12 + description: | 13 + Firmware-initialised PCI host controllers and PCI emulations, such as the 14 + virtio-pci implementations found in kvmtool and other para-virtualised 15 + systems, do not require driver support for complexities such as regulator 16 + and clock management. In fact, the controller may not even require the 17 + configuration of a control interface by the operating system, instead 18 + presenting a set of fixed windows describing a subset of IO, Memory and 19 + Configuration Spaces. 20 + 21 + Configuration Space is assumed to be memory-mapped (as opposed to being 22 + accessed via an ioport) and laid out with a direct correspondence to the 23 + geography of a PCI bus address by concatenating the various components to 24 + form an offset. 25 + 26 + For CAM, this 24-bit offset is: 27 + 28 + cfg_offset(bus, device, function, register) = 29 + bus << 16 | device << 11 | function << 8 | register 30 + 31 + While ECAM extends this by 4 bits to accommodate 4k of function space: 32 + 33 + cfg_offset(bus, device, function, register) = 34 + bus << 20 | device << 15 | function << 12 | register 35 + 36 + properties: 37 + compatible: 38 + description: Depends on the layout of configuration space (CAM vs ECAM 39 + respectively). May also have more specific compatibles. 40 + oneOf: 41 + - description: 42 + PCIe host controller in Arm Juno based on PLDA XpressRICH3-AXI IP 43 + items: 44 + - const: arm,juno-r1-pcie 45 + - const: plda,xpressrich3-axi 46 + - const: pci-host-ecam-generic 47 + - description: | 48 + ThunderX PCI host controller for pass-1.x silicon 49 + 50 + Firmware-initialized PCI host controller to on-chip devices found on 51 + some Cavium ThunderX processors. These devices have ECAM-based config 52 + access, but the BARs are all at fixed addresses. We handle the fixed 53 + addresses by synthesizing Enhanced Allocation (EA) capabilities for 54 + these devices. 55 + const: cavium,pci-host-thunder-ecam 56 + - description: 57 + Cavium ThunderX PEM firmware-initialized PCIe host controller 58 + const: cavium,pci-host-thunder-pem 59 + - description: 60 + HiSilicon Hip06/Hip07 PCIe host bridge in almost-ECAM mode. Some 61 + firmware places the host controller in a mode where it is ECAM 62 + compliant for all devices other than the root complex. 63 + enum: 64 + - hisilicon,hip06-pcie-ecam 65 + - hisilicon,hip07-pcie-ecam 66 + - description: | 67 + In some cases, firmware may already have configured the Synopsys 68 + DesignWare PCIe controller in RC mode with static ATU window mappings 69 + that cover all config, MMIO and I/O spaces in a [mostly] ECAM 70 + compatible fashion. In this case, there is no need for the OS to 71 + perform any low level setup of clocks, PHYs or device registers, nor 72 + is there any reason for the driver to reconfigure ATU windows for 73 + config and/or IO space accesses at runtime. 74 + 75 + In cases where the IP was synthesized with a minimum ATU window size 76 + of 64 KB, it cannot be supported by the generic ECAM driver, because 77 + it requires special config space accessors that filter accesses to 78 + device #1 and beyond on the first bus. 79 + items: 80 + - enum: 81 + - marvell,armada8k-pcie-ecam 82 + - socionext,synquacer-pcie-ecam 83 + - const: snps,dw-pcie-ecam 84 + - description: 85 + CAM or ECAM compliant PCI host controllers without any quirks 86 + enum: 87 + - pci-host-cam-generic 88 + - pci-host-ecam-generic 89 + 90 + reg: 91 + description: 92 + The Configuration Space base address and size, as accessed from the parent 93 + bus. The base address corresponds to the first bus in the "bus-range" 94 + property. If no "bus-range" is specified, this will be bus 0 (the 95 + default). Some host controllers have a 2nd non-compliant address range, 96 + so 2 entries are allowed. 97 + minItems: 1 98 + maxItems: 2 99 + 100 + ranges: 101 + description: 102 + As described in IEEE Std 1275-1994, but must provide at least a 103 + definition of non-prefetchable memory. One or both of prefetchable Memory 104 + and IO Space may also be provided. 105 + minItems: 1 106 + maxItems: 3 107 + 108 + dma-coherent: true 109 + 110 + required: 111 + - compatible 112 + - reg 113 + - ranges 114 + 115 + allOf: 116 + - $ref: /schemas/pci/pci-bus.yaml# 117 + - if: 118 + properties: 119 + compatible: 120 + contains: 121 + const: arm,juno-r1-pcie 122 + then: 123 + required: 124 + - dma-coherent 125 + 126 + - if: 127 + properties: 128 + compatible: 129 + not: 130 + contains: 131 + enum: 132 + - cavium,pci-host-thunder-pem 133 + - hisilicon,hip06-pcie-ecam 134 + - hisilicon,hip07-pcie-ecam 135 + then: 136 + properties: 137 + reg: 138 + maxItems: 1 139 + 140 + examples: 141 + - | 142 + 143 + bus { 144 + #address-cells = <2>; 145 + #size-cells = <2>; 146 + pcie@40000000 { 147 + compatible = "pci-host-cam-generic"; 148 + device_type = "pci"; 149 + #address-cells = <3>; 150 + #size-cells = <2>; 151 + bus-range = <0x0 0x1>; 152 + 153 + // CPU_PHYSICAL(2) SIZE(2) 154 + reg = <0x0 0x40000000 0x0 0x1000000>; 155 + 156 + // BUS_ADDRESS(3) CPU_PHYSICAL(2) SIZE(2) 157 + ranges = <0x01000000 0x0 0x01000000 0x0 0x01000000 0x0 0x00010000>, 158 + <0x02000000 0x0 0x41000000 0x0 0x41000000 0x0 0x3f000000>; 159 + 160 + #interrupt-cells = <0x1>; 161 + 162 + // PCI_DEVICE(3) INT#(1) CONTROLLER(PHANDLE) CONTROLLER_DATA(3) 163 + interrupt-map = < 0x0 0x0 0x0 0x1 &gic 0x0 0x4 0x1>, 164 + < 0x800 0x0 0x0 0x1 &gic 0x0 0x5 0x1>, 165 + <0x1000 0x0 0x0 0x1 &gic 0x0 0x6 0x1>, 166 + <0x1800 0x0 0x0 0x1 &gic 0x0 0x7 0x1>; 167 + 168 + // PCI_DEVICE(3) INT#(1) 169 + interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 170 + }; 171 + }; 172 + ...
-30
Documentation/devicetree/bindings/pci/pci-thunder-ecam.txt
··· 1 - * ThunderX PCI host controller for pass-1.x silicon 2 - 3 - Firmware-initialized PCI host controller to on-chip devices found on 4 - some Cavium ThunderX processors. These devices have ECAM-based config 5 - access, but the BARs are all at fixed addresses. We handle the fixed 6 - addresses by synthesizing Enhanced Allocation (EA) capabilities for 7 - these devices. 8 - 9 - The properties and their meanings are identical to those described in 10 - host-generic-pci.txt except as listed below. 11 - 12 - Properties of the host controller node that differ from 13 - host-generic-pci.txt: 14 - 15 - - compatible : Must be "cavium,pci-host-thunder-ecam" 16 - 17 - Example: 18 - 19 - pcie@84b000000000 { 20 - compatible = "cavium,pci-host-thunder-ecam"; 21 - device_type = "pci"; 22 - msi-parent = <&its>; 23 - msi-map = <0 &its 0x30000 0x10000>; 24 - bus-range = <0 31>; 25 - #size-cells = <2>; 26 - #address-cells = <3>; 27 - #stream-id-cells = <1>; 28 - reg = <0x84b0 0x00000000 0 0x02000000>; /* Configuration space */ 29 - ranges = <0x03000000 0x8180 0x00000000 0x8180 0x00000000 0x80 0x00000000>; /* mem ranges */ 30 - };
-43
Documentation/devicetree/bindings/pci/pci-thunder-pem.txt
··· 1 - * ThunderX PEM PCIe host controller 2 - 3 - Firmware-initialized PCI host controller found on some Cavium 4 - ThunderX processors. 5 - 6 - The properties and their meanings are identical to those described in 7 - host-generic-pci.txt except as listed below. 8 - 9 - Properties of the host controller node that differ from 10 - host-generic-pci.txt: 11 - 12 - - compatible : Must be "cavium,pci-host-thunder-pem" 13 - 14 - - reg : Two entries: First the configuration space for down 15 - stream devices base address and size, as accessed 16 - from the parent bus. Second, the register bank of 17 - the PEM device PCIe bridge. 18 - 19 - Example: 20 - 21 - pci@87e0,c2000000 { 22 - compatible = "cavium,pci-host-thunder-pem"; 23 - device_type = "pci"; 24 - msi-parent = <&its>; 25 - msi-map = <0 &its 0x10000 0x10000>; 26 - bus-range = <0x8f 0xc7>; 27 - #size-cells = <2>; 28 - #address-cells = <3>; 29 - 30 - reg = <0x8880 0x8f000000 0x0 0x39000000>, /* Configuration space */ 31 - <0x87e0 0xc2000000 0x0 0x00010000>; /* PEM space */ 32 - ranges = <0x01000000 0x00 0x00020000 0x88b0 0x00020000 0x00 0x00010000>, /* I/O */ 33 - <0x03000000 0x00 0x10000000 0x8890 0x10000000 0x0f 0xf0000000>, /* mem64 */ 34 - <0x43000000 0x10 0x00000000 0x88a0 0x00000000 0x10 0x00000000>, /* mem64-pref */ 35 - <0x03000000 0x87e0 0xc2f00000 0x87e0 0xc2000000 0x00 0x00100000>; /* mem64 PEM BAR4 */ 36 - 37 - #interrupt-cells = <1>; 38 - interrupt-map-mask = <0 0 0 7>; 39 - interrupt-map = <0 0 0 1 &gic0 0 0 0 24 4>, /* INTA */ 40 - <0 0 0 2 &gic0 0 0 0 25 4>, /* INTB */ 41 - <0 0 0 3 &gic0 0 0 0 26 4>, /* INTC */ 42 - <0 0 0 4 &gic0 0 0 0 27 4>; /* INTD */ 43 - };
-12
Documentation/devicetree/bindings/pci/plda,xpressrich3-axi.txt
··· 1 - * PLDA XpressRICH3-AXI host controller 2 - 3 - The PLDA XpressRICH3-AXI host controller can be configured in a manner that 4 - makes it compliant with the SBSA[1] standard published by ARM Ltd. For those 5 - scenarios, the host-generic-pci.txt bindings apply with the following additions 6 - to the compatible property: 7 - 8 - Required properties: 9 - - compatible: should contain "plda,xpressrich3-axi" to identify the IP used. 10 - 11 - 12 - [1] http://infocenter.arm.com/help/topic/com.arm.doc.den0029a/
-59
Documentation/devicetree/bindings/pci/versatile.txt
··· 1 - * ARM Versatile Platform Baseboard PCI interface 2 - 3 - PCI host controller found on the ARM Versatile PB board's FPGA. 4 - 5 - Required properties: 6 - - compatible: should contain "arm,versatile-pci" to identify the Versatile PCI 7 - controller. 8 - - reg: base addresses and lengths of the PCI controller. There must be 3 9 - entries: 10 - - Versatile-specific registers 11 - - Self Config space 12 - - Config space 13 - - #address-cells: set to <3> 14 - - #size-cells: set to <2> 15 - - device_type: set to "pci" 16 - - bus-range: set to <0 0xff> 17 - - ranges: ranges for the PCI memory and I/O regions 18 - - #interrupt-cells: set to <1> 19 - - interrupt-map-mask and interrupt-map: standard PCI properties to define 20 - the mapping of the PCI interface to interrupt numbers. 21 - 22 - Example: 23 - 24 - pci-controller@10001000 { 25 - compatible = "arm,versatile-pci"; 26 - device_type = "pci"; 27 - reg = <0x10001000 0x1000 28 - 0x41000000 0x10000 29 - 0x42000000 0x100000>; 30 - bus-range = <0 0xff>; 31 - #address-cells = <3>; 32 - #size-cells = <2>; 33 - #interrupt-cells = <1>; 34 - 35 - ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */ 36 - 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */ 37 - 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ 38 - 39 - interrupt-map-mask = <0x1800 0 0 7>; 40 - interrupt-map = <0x1800 0 0 1 &sic 28 41 - 0x1800 0 0 2 &sic 29 42 - 0x1800 0 0 3 &sic 30 43 - 0x1800 0 0 4 &sic 27 44 - 45 - 0x1000 0 0 1 &sic 27 46 - 0x1000 0 0 2 &sic 28 47 - 0x1000 0 0 3 &sic 29 48 - 0x1000 0 0 4 &sic 30 49 - 50 - 0x0800 0 0 1 &sic 30 51 - 0x0800 0 0 2 &sic 27 52 - 0x0800 0 0 3 &sic 28 53 - 0x0800 0 0 4 &sic 29 54 - 55 - 0x0000 0 0 1 &sic 29 56 - 0x0000 0 0 2 &sic 30 57 - 0x0000 0 0 3 &sic 27 58 - 0x0000 0 0 4 &sic 28>; 59 - };
+92
Documentation/devicetree/bindings/pci/versatile.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/pci/versatile.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: ARM Versatile Platform Baseboard PCI interface 8 + 9 + maintainers: 10 + - Rob Herring <robh@kernel.org> 11 + 12 + description: |+ 13 + PCI host controller found on the ARM Versatile PB board's FPGA. 14 + 15 + allOf: 16 + - $ref: /schemas/pci/pci-bus.yaml# 17 + 18 + properties: 19 + compatible: 20 + const: arm,versatile-pci 21 + 22 + reg: 23 + items: 24 + - description: Versatile-specific registers 25 + - description: Self Config space 26 + - description: Config space 27 + 28 + ranges: 29 + maxItems: 3 30 + 31 + "#interrupt-cells": true 32 + 33 + interrupt-map: 34 + maxItems: 16 35 + 36 + interrupt-map-mask: 37 + items: 38 + - const: 0x1800 39 + - const: 0 40 + - const: 0 41 + - const: 7 42 + 43 + required: 44 + - compatible 45 + - reg 46 + - ranges 47 + - "#interrupt-cells" 48 + - interrupt-map 49 + - interrupt-map-mask 50 + 51 + examples: 52 + - | 53 + pci@10001000 { 54 + compatible = "arm,versatile-pci"; 55 + device_type = "pci"; 56 + reg = <0x10001000 0x1000>, 57 + <0x41000000 0x10000>, 58 + <0x42000000 0x100000>; 59 + bus-range = <0 0xff>; 60 + #address-cells = <3>; 61 + #size-cells = <2>; 62 + #interrupt-cells = <1>; 63 + 64 + ranges = 65 + <0x01000000 0 0x00000000 0x43000000 0 0x00010000>, /* downstream I/O */ 66 + <0x02000000 0 0x50000000 0x50000000 0 0x10000000>, /* non-prefetchable memory */ 67 + <0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ 68 + 69 + interrupt-map-mask = <0x1800 0 0 7>; 70 + interrupt-map = <0x1800 0 0 1 &sic 28>, 71 + <0x1800 0 0 2 &sic 29>, 72 + <0x1800 0 0 3 &sic 30>, 73 + <0x1800 0 0 4 &sic 27>, 74 + 75 + <0x1000 0 0 1 &sic 27>, 76 + <0x1000 0 0 2 &sic 28>, 77 + <0x1000 0 0 3 &sic 29>, 78 + <0x1000 0 0 4 &sic 30>, 79 + 80 + <0x0800 0 0 1 &sic 30>, 81 + <0x0800 0 0 2 &sic 27>, 82 + <0x0800 0 0 3 &sic 28>, 83 + <0x0800 0 0 4 &sic 29>, 84 + 85 + <0x0000 0 0 1 &sic 29>, 86 + <0x0000 0 0 2 &sic 30>, 87 + <0x0000 0 0 3 &sic 27>, 88 + <0x0000 0 0 4 &sic 28>; 89 + }; 90 + 91 + 92 + ...
+105
Documentation/devicetree/bindings/phy/allwinner,sun4i-a10-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun4i-a10-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + enum: 19 + - allwinner,sun4i-a10-usb-phy 20 + - allwinner,sun7i-a20-usb-phy 21 + 22 + reg: 23 + items: 24 + - description: PHY Control registers 25 + - description: PHY PMU1 registers 26 + - description: PHY PMU2 registers 27 + 28 + reg-names: 29 + items: 30 + - const: phy_ctrl 31 + - const: pmu1 32 + - const: pmu2 33 + 34 + clocks: 35 + maxItems: 1 36 + description: USB PHY bus clock 37 + 38 + clock-names: 39 + const: usb_phy 40 + 41 + resets: 42 + items: 43 + - description: USB OTG reset 44 + - description: USB Host 1 Controller reset 45 + - description: USB Host 2 Controller reset 46 + 47 + reset-names: 48 + items: 49 + - const: usb0_reset 50 + - const: usb1_reset 51 + - const: usb2_reset 52 + 53 + usb0_id_det-gpios: 54 + description: GPIO to the USB OTG ID pin 55 + 56 + usb0_vbus_det-gpios: 57 + description: GPIO to the USB OTG VBUS detect pin 58 + 59 + usb0_vbus_power-supply: 60 + description: Power supply to detect the USB OTG VBUS 61 + 62 + usb0_vbus-supply: 63 + description: Regulator controlling USB OTG VBUS 64 + 65 + usb1_vbus-supply: 66 + description: Regulator controlling USB1 Host controller 67 + 68 + usb2_vbus-supply: 69 + description: Regulator controlling USB2 Host controller 70 + 71 + required: 72 + - "#phy-cells" 73 + - compatible 74 + - clocks 75 + - clock-names 76 + - reg 77 + - reg-names 78 + - resets 79 + - reset-names 80 + 81 + additionalProperties: false 82 + 83 + examples: 84 + - | 85 + #include <dt-bindings/gpio/gpio.h> 86 + #include <dt-bindings/clock/sun4i-a10-ccu.h> 87 + #include <dt-bindings/reset/sun4i-a10-ccu.h> 88 + 89 + usbphy: phy@01c13400 { 90 + #phy-cells = <1>; 91 + compatible = "allwinner,sun4i-a10-usb-phy"; 92 + reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>; 93 + reg-names = "phy_ctrl", "pmu1", "pmu2"; 94 + clocks = <&ccu CLK_USB_PHY>; 95 + clock-names = "usb_phy"; 96 + resets = <&ccu RST_USB_PHY0>, 97 + <&ccu RST_USB_PHY1>, 98 + <&ccu RST_USB_PHY2>; 99 + reset-names = "usb0_reset", "usb1_reset", "usb2_reset"; 100 + usb0_id_det-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; 101 + usb0_vbus_det-gpios = <&pio 7 22 GPIO_ACTIVE_HIGH>; 102 + usb0_vbus-supply = <&reg_usb0_vbus>; 103 + usb1_vbus-supply = <&reg_usb1_vbus>; 104 + usb2_vbus-supply = <&reg_usb2_vbus>; 105 + };
+106
Documentation/devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun50i-a64-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A64 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun50i-a64-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU0 registers 24 + - description: PHY PMU1 registers 25 + 26 + reg-names: 27 + items: 28 + - const: phy_ctrl 29 + - const: pmu0 30 + - const: pmu1 31 + 32 + clocks: 33 + items: 34 + - description: USB OTG PHY bus clock 35 + - description: USB Host 0 PHY bus clock 36 + 37 + clock-names: 38 + items: 39 + - const: usb0_phy 40 + - const: usb1_phy 41 + 42 + resets: 43 + items: 44 + - description: USB OTG reset 45 + - description: USB Host 1 Controller reset 46 + 47 + reset-names: 48 + items: 49 + - const: usb0_reset 50 + - const: usb1_reset 51 + 52 + usb0_id_det-gpios: 53 + description: GPIO to the USB OTG ID pin 54 + 55 + usb0_vbus_det-gpios: 56 + description: GPIO to the USB OTG VBUS detect pin 57 + 58 + usb0_vbus_power-supply: 59 + description: Power supply to detect the USB OTG VBUS 60 + 61 + usb0_vbus-supply: 62 + description: Regulator controlling USB OTG VBUS 63 + 64 + usb1_vbus-supply: 65 + description: Regulator controlling USB1 Host controller 66 + 67 + required: 68 + - "#phy-cells" 69 + - compatible 70 + - clocks 71 + - clock-names 72 + - reg 73 + - reg-names 74 + - resets 75 + - reset-names 76 + 77 + additionalProperties: false 78 + 79 + examples: 80 + - | 81 + #include <dt-bindings/gpio/gpio.h> 82 + #include <dt-bindings/clock/sun50i-a64-ccu.h> 83 + #include <dt-bindings/reset/sun50i-a64-ccu.h> 84 + 85 + phy@1c19400 { 86 + #phy-cells = <1>; 87 + compatible = "allwinner,sun50i-a64-usb-phy"; 88 + reg = <0x01c19400 0x14>, 89 + <0x01c1a800 0x4>, 90 + <0x01c1b800 0x4>; 91 + reg-names = "phy_ctrl", 92 + "pmu0", 93 + "pmu1"; 94 + clocks = <&ccu CLK_USB_PHY0>, 95 + <&ccu CLK_USB_PHY1>; 96 + clock-names = "usb0_phy", 97 + "usb1_phy"; 98 + resets = <&ccu RST_USB_PHY0>, 99 + <&ccu RST_USB_PHY1>; 100 + reset-names = "usb0_reset", 101 + "usb1_reset"; 102 + usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 103 + usb0_vbus_power-supply = <&usb_power_supply>; 104 + usb0_vbus-supply = <&reg_drivevbus>; 105 + usb1_vbus-supply = <&reg_usb1_vbus>; 106 + };
+105
Documentation/devicetree/bindings/phy/allwinner,sun50i-h6-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun50i-h6-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner H6 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun50i-h6-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU0 registers 24 + - description: PHY PMU3 registers 25 + 26 + reg-names: 27 + items: 28 + - const: phy_ctrl 29 + - const: pmu0 30 + - const: pmu3 31 + 32 + clocks: 33 + items: 34 + - description: USB OTG PHY bus clock 35 + - description: USB Host PHY bus clock 36 + 37 + clock-names: 38 + items: 39 + - const: usb0_phy 40 + - const: usb3_phy 41 + 42 + resets: 43 + items: 44 + - description: USB OTG reset 45 + - description: USB Host Controller reset 46 + 47 + reset-names: 48 + items: 49 + - const: usb0_reset 50 + - const: usb3_reset 51 + 52 + usb0_id_det-gpios: 53 + description: GPIO to the USB OTG ID pin 54 + 55 + usb0_vbus_det-gpios: 56 + description: GPIO to the USB OTG VBUS detect pin 57 + 58 + usb0_vbus_power-supply: 59 + description: Power supply to detect the USB OTG VBUS 60 + 61 + usb0_vbus-supply: 62 + description: Regulator controlling USB OTG VBUS 63 + 64 + usb3_vbus-supply: 65 + description: Regulator controlling USB3 Host controller 66 + 67 + required: 68 + - "#phy-cells" 69 + - compatible 70 + - clocks 71 + - clock-names 72 + - reg 73 + - reg-names 74 + - resets 75 + - reset-names 76 + 77 + additionalProperties: false 78 + 79 + examples: 80 + - | 81 + #include <dt-bindings/gpio/gpio.h> 82 + #include <dt-bindings/clock/sun50i-h6-ccu.h> 83 + #include <dt-bindings/reset/sun50i-h6-ccu.h> 84 + 85 + phy@5100400 { 86 + #phy-cells = <1>; 87 + compatible = "allwinner,sun50i-h6-usb-phy"; 88 + reg = <0x05100400 0x24>, 89 + <0x05101800 0x4>, 90 + <0x05311800 0x4>; 91 + reg-names = "phy_ctrl", 92 + "pmu0", 93 + "pmu3"; 94 + clocks = <&ccu CLK_USB_PHY0>, 95 + <&ccu CLK_USB_PHY3>; 96 + clock-names = "usb0_phy", 97 + "usb3_phy"; 98 + resets = <&ccu RST_USB_PHY0>, 99 + <&ccu RST_USB_PHY3>; 100 + reset-names = "usb0_reset", 101 + "usb3_reset"; 102 + usb0_id_det-gpios = <&pio 2 6 GPIO_ACTIVE_HIGH>; /* PC6 */ 103 + usb0_vbus-supply = <&reg_vcc5v>; 104 + usb3_vbus-supply = <&reg_vcc5v>; 105 + };
+93
Documentation/devicetree/bindings/phy/allwinner,sun5i-a13-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun5i-a13-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A13 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun5i-a13-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU1 registers 24 + 25 + reg-names: 26 + items: 27 + - const: phy_ctrl 28 + - const: pmu1 29 + 30 + clocks: 31 + maxItems: 1 32 + description: USB OTG PHY bus clock 33 + 34 + clock-names: 35 + const: usb_phy 36 + 37 + resets: 38 + items: 39 + - description: USB OTG reset 40 + - description: USB Host 1 Controller reset 41 + 42 + reset-names: 43 + items: 44 + - const: usb0_reset 45 + - const: usb1_reset 46 + 47 + usb0_id_det-gpios: 48 + description: GPIO to the USB OTG ID pin 49 + 50 + usb0_vbus_det-gpios: 51 + description: GPIO to the USB OTG VBUS detect pin 52 + 53 + usb0_vbus_power-supply: 54 + description: Power supply to detect the USB OTG VBUS 55 + 56 + usb0_vbus-supply: 57 + description: Regulator controlling USB OTG VBUS 58 + 59 + usb1_vbus-supply: 60 + description: Regulator controlling USB1 Host controller 61 + 62 + required: 63 + - "#phy-cells" 64 + - compatible 65 + - clocks 66 + - clock-names 67 + - reg 68 + - reg-names 69 + - resets 70 + - reset-names 71 + 72 + additionalProperties: false 73 + 74 + examples: 75 + - | 76 + #include <dt-bindings/gpio/gpio.h> 77 + #include <dt-bindings/clock/sun5i-ccu.h> 78 + #include <dt-bindings/reset/sun5i-ccu.h> 79 + 80 + phy@1c13400 { 81 + #phy-cells = <1>; 82 + compatible = "allwinner,sun5i-a13-usb-phy"; 83 + reg = <0x01c13400 0x10>, <0x01c14800 0x4>; 84 + reg-names = "phy_ctrl", "pmu1"; 85 + clocks = <&ccu CLK_USB_PHY0>; 86 + clock-names = "usb_phy"; 87 + resets = <&ccu RST_USB_PHY0>, <&ccu RST_USB_PHY1>; 88 + reset-names = "usb0_reset", "usb1_reset"; 89 + usb0_id_det-gpios = <&pio 6 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PG2 */ 90 + usb0_vbus_det-gpios = <&pio 6 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PG1 */ 91 + usb0_vbus-supply = <&reg_usb0_vbus>; 92 + usb1_vbus-supply = <&reg_usb1_vbus>; 93 + };
+119
Documentation/devicetree/bindings/phy/allwinner,sun6i-a31-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun6i-a31-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A31 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun6i-a31-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU1 registers 24 + - description: PHY PMU2 registers 25 + 26 + reg-names: 27 + items: 28 + - const: phy_ctrl 29 + - const: pmu1 30 + - const: pmu2 31 + 32 + clocks: 33 + items: 34 + - description: USB OTG PHY bus clock 35 + - description: USB Host 0 PHY bus clock 36 + - description: USB Host 1 PHY bus clock 37 + 38 + clock-names: 39 + items: 40 + - const: usb0_phy 41 + - const: usb1_phy 42 + - const: usb2_phy 43 + 44 + resets: 45 + items: 46 + - description: USB OTG reset 47 + - description: USB Host 1 Controller reset 48 + - description: USB Host 2 Controller reset 49 + 50 + reset-names: 51 + items: 52 + - const: usb0_reset 53 + - const: usb1_reset 54 + - const: usb2_reset 55 + 56 + usb0_id_det-gpios: 57 + description: GPIO to the USB OTG ID pin 58 + 59 + usb0_vbus_det-gpios: 60 + description: GPIO to the USB OTG VBUS detect pin 61 + 62 + usb0_vbus_power-supply: 63 + description: Power supply to detect the USB OTG VBUS 64 + 65 + usb0_vbus-supply: 66 + description: Regulator controlling USB OTG VBUS 67 + 68 + usb1_vbus-supply: 69 + description: Regulator controlling USB1 Host controller 70 + 71 + usb2_vbus-supply: 72 + description: Regulator controlling USB2 Host controller 73 + 74 + required: 75 + - "#phy-cells" 76 + - compatible 77 + - clocks 78 + - clock-names 79 + - reg 80 + - reg-names 81 + - resets 82 + - reset-names 83 + 84 + additionalProperties: false 85 + 86 + examples: 87 + - | 88 + #include <dt-bindings/gpio/gpio.h> 89 + #include <dt-bindings/clock/sun6i-a31-ccu.h> 90 + #include <dt-bindings/reset/sun6i-a31-ccu.h> 91 + 92 + phy@1c19400 { 93 + #phy-cells = <1>; 94 + compatible = "allwinner,sun6i-a31-usb-phy"; 95 + reg = <0x01c19400 0x10>, 96 + <0x01c1a800 0x4>, 97 + <0x01c1b800 0x4>; 98 + reg-names = "phy_ctrl", 99 + "pmu1", 100 + "pmu2"; 101 + clocks = <&ccu CLK_USB_PHY0>, 102 + <&ccu CLK_USB_PHY1>, 103 + <&ccu CLK_USB_PHY2>; 104 + clock-names = "usb0_phy", 105 + "usb1_phy", 106 + "usb2_phy"; 107 + resets = <&ccu RST_USB_PHY0>, 108 + <&ccu RST_USB_PHY1>, 109 + <&ccu RST_USB_PHY2>; 110 + reset-names = "usb0_reset", 111 + "usb1_reset", 112 + "usb2_reset"; 113 + usb0_id_det-gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; /* PA15 */ 114 + usb0_vbus_det-gpios = <&pio 0 16 GPIO_ACTIVE_HIGH>; /* PA16 */ 115 + usb0_vbus_power-supply = <&usb_power_supply>; 116 + usb0_vbus-supply = <&reg_drivevbus>; 117 + usb1_vbus-supply = <&reg_usb1_vbus>; 118 + usb2_vbus-supply = <&reg_usb2_vbus>; 119 + };
+102
Documentation/devicetree/bindings/phy/allwinner,sun8i-a23-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun8i-a23-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A23 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + enum: 19 + - allwinner,sun8i-a23-usb-phy 20 + - allwinner,sun8i-a33-usb-phy 21 + 22 + reg: 23 + items: 24 + - description: PHY Control registers 25 + - description: PHY PMU1 registers 26 + 27 + reg-names: 28 + items: 29 + - const: phy_ctrl 30 + - const: pmu1 31 + 32 + clocks: 33 + items: 34 + - description: USB OTG PHY bus clock 35 + - description: USB Host 0 PHY bus clock 36 + 37 + clock-names: 38 + items: 39 + - const: usb0_phy 40 + - const: usb1_phy 41 + 42 + resets: 43 + items: 44 + - description: USB OTG reset 45 + - description: USB Host 1 Controller reset 46 + 47 + reset-names: 48 + items: 49 + - const: usb0_reset 50 + - const: usb1_reset 51 + 52 + usb0_id_det-gpios: 53 + description: GPIO to the USB OTG ID pin 54 + 55 + usb0_vbus_det-gpios: 56 + description: GPIO to the USB OTG VBUS detect pin 57 + 58 + usb0_vbus_power-supply: 59 + description: Power supply to detect the USB OTG VBUS 60 + 61 + usb0_vbus-supply: 62 + description: Regulator controlling USB OTG VBUS 63 + 64 + usb1_vbus-supply: 65 + description: Regulator controlling USB1 Host controller 66 + 67 + required: 68 + - "#phy-cells" 69 + - compatible 70 + - clocks 71 + - clock-names 72 + - reg 73 + - reg-names 74 + - resets 75 + - reset-names 76 + 77 + additionalProperties: false 78 + 79 + examples: 80 + - | 81 + #include <dt-bindings/gpio/gpio.h> 82 + #include <dt-bindings/clock/sun8i-a23-a33-ccu.h> 83 + #include <dt-bindings/reset/sun8i-a23-a33-ccu.h> 84 + 85 + phy@1c19400 { 86 + #phy-cells = <1>; 87 + compatible = "allwinner,sun8i-a23-usb-phy"; 88 + reg = <0x01c19400 0x10>, <0x01c1a800 0x4>; 89 + reg-names = "phy_ctrl", "pmu1"; 90 + clocks = <&ccu CLK_USB_PHY0>, 91 + <&ccu CLK_USB_PHY1>; 92 + clock-names = "usb0_phy", 93 + "usb1_phy"; 94 + resets = <&ccu RST_USB_PHY0>, 95 + <&ccu RST_USB_PHY1>; 96 + reset-names = "usb0_reset", 97 + "usb1_reset"; 98 + usb0_id_det-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */ 99 + usb0_vbus_power-supply = <&usb_power_supply>; 100 + usb0_vbus-supply = <&reg_drivevbus>; 101 + usb1_vbus-supply = <&reg_usb1_vbus>; 102 + };
+122
Documentation/devicetree/bindings/phy/allwinner,sun8i-a83t-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun8i-a83t-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A83t USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun8i-a83t-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU1 registers 24 + - description: PHY PMU2 registers 25 + 26 + reg-names: 27 + items: 28 + - const: phy_ctrl 29 + - const: pmu1 30 + - const: pmu2 31 + 32 + clocks: 33 + items: 34 + - description: USB OTG PHY bus clock 35 + - description: USB Host 0 PHY bus clock 36 + - description: USB Host 1 PHY bus clock 37 + - description: USB HSIC 12MHz clock 38 + 39 + clock-names: 40 + items: 41 + - const: usb0_phy 42 + - const: usb1_phy 43 + - const: usb2_phy 44 + - const: usb2_hsic_12M 45 + 46 + resets: 47 + items: 48 + - description: USB OTG reset 49 + - description: USB Host 1 Controller reset 50 + - description: USB Host 2 Controller reset 51 + 52 + reset-names: 53 + items: 54 + - const: usb0_reset 55 + - const: usb1_reset 56 + - const: usb2_reset 57 + 58 + usb0_id_det-gpios: 59 + description: GPIO to the USB OTG ID pin 60 + 61 + usb0_vbus_det-gpios: 62 + description: GPIO to the USB OTG VBUS detect pin 63 + 64 + usb0_vbus_power-supply: 65 + description: Power supply to detect the USB OTG VBUS 66 + 67 + usb0_vbus-supply: 68 + description: Regulator controlling USB OTG VBUS 69 + 70 + usb1_vbus-supply: 71 + description: Regulator controlling USB1 Host controller 72 + 73 + usb2_vbus-supply: 74 + description: Regulator controlling USB2 Host controller 75 + 76 + required: 77 + - "#phy-cells" 78 + - compatible 79 + - clocks 80 + - clock-names 81 + - reg 82 + - reg-names 83 + - resets 84 + - reset-names 85 + 86 + additionalProperties: false 87 + 88 + examples: 89 + - | 90 + #include <dt-bindings/gpio/gpio.h> 91 + #include <dt-bindings/clock/sun8i-a83t-ccu.h> 92 + #include <dt-bindings/reset/sun8i-a83t-ccu.h> 93 + 94 + phy@1c19400 { 95 + #phy-cells = <1>; 96 + compatible = "allwinner,sun8i-a83t-usb-phy"; 97 + reg = <0x01c19400 0x10>, 98 + <0x01c1a800 0x14>, 99 + <0x01c1b800 0x14>; 100 + reg-names = "phy_ctrl", 101 + "pmu1", 102 + "pmu2"; 103 + clocks = <&ccu CLK_USB_PHY0>, 104 + <&ccu CLK_USB_PHY1>, 105 + <&ccu CLK_USB_HSIC>, 106 + <&ccu CLK_USB_HSIC_12M>; 107 + clock-names = "usb0_phy", 108 + "usb1_phy", 109 + "usb2_phy", 110 + "usb2_hsic_12M"; 111 + resets = <&ccu RST_USB_PHY0>, 112 + <&ccu RST_USB_PHY1>, 113 + <&ccu RST_USB_HSIC>; 114 + reset-names = "usb0_reset", 115 + "usb1_reset", 116 + "usb2_reset"; 117 + usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ 118 + usb0_vbus_power-supply = <&usb_power_supply>; 119 + usb0_vbus-supply = <&reg_drivevbus>; 120 + usb1_vbus-supply = <&reg_usb1_vbus>; 121 + usb2_vbus-supply = <&reg_usb2_vbus>; 122 + };
+137
Documentation/devicetree/bindings/phy/allwinner,sun8i-h3-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun8i-h3-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner H3 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun8i-h3-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU0 registers 24 + - description: PHY PMU1 registers 25 + - description: PHY PMU2 registers 26 + - description: PHY PMU3 registers 27 + 28 + reg-names: 29 + items: 30 + - const: phy_ctrl 31 + - const: pmu0 32 + - const: pmu1 33 + - const: pmu2 34 + - const: pmu3 35 + 36 + clocks: 37 + items: 38 + - description: USB OTG PHY bus clock 39 + - description: USB Host 0 PHY bus clock 40 + - description: USB Host 1 PHY bus clock 41 + - description: USB Host 2 PHY bus clock 42 + 43 + clock-names: 44 + items: 45 + - const: usb0_phy 46 + - const: usb1_phy 47 + - const: usb2_phy 48 + - const: usb3_phy 49 + 50 + resets: 51 + items: 52 + - description: USB OTG reset 53 + - description: USB Host 1 Controller reset 54 + - description: USB Host 2 Controller reset 55 + - description: USB Host 3 Controller reset 56 + 57 + reset-names: 58 + items: 59 + - const: usb0_reset 60 + - const: usb1_reset 61 + - const: usb2_reset 62 + - const: usb3_reset 63 + 64 + usb0_id_det-gpios: 65 + description: GPIO to the USB OTG ID pin 66 + 67 + usb0_vbus_det-gpios: 68 + description: GPIO to the USB OTG VBUS detect pin 69 + 70 + usb0_vbus_power-supply: 71 + description: Power supply to detect the USB OTG VBUS 72 + 73 + usb0_vbus-supply: 74 + description: Regulator controlling USB OTG VBUS 75 + 76 + usb1_vbus-supply: 77 + description: Regulator controlling USB1 Host controller 78 + 79 + usb2_vbus-supply: 80 + description: Regulator controlling USB2 Host controller 81 + 82 + usb3_vbus-supply: 83 + description: Regulator controlling USB3 Host controller 84 + 85 + required: 86 + - "#phy-cells" 87 + - compatible 88 + - clocks 89 + - clock-names 90 + - reg 91 + - reg-names 92 + - resets 93 + - reset-names 94 + 95 + additionalProperties: false 96 + 97 + examples: 98 + - | 99 + #include <dt-bindings/gpio/gpio.h> 100 + #include <dt-bindings/clock/sun8i-h3-ccu.h> 101 + #include <dt-bindings/reset/sun8i-h3-ccu.h> 102 + 103 + phy@1c19400 { 104 + #phy-cells = <1>; 105 + compatible = "allwinner,sun8i-h3-usb-phy"; 106 + reg = <0x01c19400 0x2c>, 107 + <0x01c1a800 0x4>, 108 + <0x01c1b800 0x4>, 109 + <0x01c1c800 0x4>, 110 + <0x01c1d800 0x4>; 111 + reg-names = "phy_ctrl", 112 + "pmu0", 113 + "pmu1", 114 + "pmu2", 115 + "pmu3"; 116 + clocks = <&ccu CLK_USB_PHY0>, 117 + <&ccu CLK_USB_PHY1>, 118 + <&ccu CLK_USB_PHY2>, 119 + <&ccu CLK_USB_PHY3>; 120 + clock-names = "usb0_phy", 121 + "usb1_phy", 122 + "usb2_phy", 123 + "usb3_phy"; 124 + resets = <&ccu RST_USB_PHY0>, 125 + <&ccu RST_USB_PHY1>, 126 + <&ccu RST_USB_PHY2>, 127 + <&ccu RST_USB_PHY3>; 128 + reset-names = "usb0_reset", 129 + "usb1_reset", 130 + "usb2_reset", 131 + "usb3_reset"; 132 + usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ 133 + usb0_vbus-supply = <&reg_usb0_vbus>; 134 + usb1_vbus-supply = <&reg_usb1_vbus>; 135 + usb2_vbus-supply = <&reg_usb2_vbus>; 136 + usb3_vbus-supply = <&reg_usb3_vbus>; 137 + };
+119
Documentation/devicetree/bindings/phy/allwinner,sun8i-r40-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun8i-r40-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner R40 USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun8i-r40-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU0 registers 24 + - description: PHY PMU1 registers 25 + - description: PHY PMU2 registers 26 + 27 + reg-names: 28 + items: 29 + - const: phy_ctrl 30 + - const: pmu0 31 + - const: pmu1 32 + - const: pmu2 33 + 34 + clocks: 35 + items: 36 + - description: USB OTG PHY bus clock 37 + - description: USB Host 0 PHY bus clock 38 + - description: USB Host 1 PHY bus clock 39 + 40 + clock-names: 41 + items: 42 + - const: usb0_phy 43 + - const: usb1_phy 44 + - const: usb2_phy 45 + 46 + resets: 47 + items: 48 + - description: USB OTG reset 49 + - description: USB Host 1 Controller reset 50 + - description: USB Host 2 Controller reset 51 + 52 + reset-names: 53 + items: 54 + - const: usb0_reset 55 + - const: usb1_reset 56 + - const: usb2_reset 57 + 58 + usb0_id_det-gpios: 59 + description: GPIO to the USB OTG ID pin 60 + 61 + usb0_vbus_det-gpios: 62 + description: GPIO to the USB OTG VBUS detect pin 63 + 64 + usb0_vbus_power-supply: 65 + description: Power supply to detect the USB OTG VBUS 66 + 67 + usb0_vbus-supply: 68 + description: Regulator controlling USB OTG VBUS 69 + 70 + usb1_vbus-supply: 71 + description: Regulator controlling USB1 Host controller 72 + 73 + usb2_vbus-supply: 74 + description: Regulator controlling USB2 Host controller 75 + 76 + required: 77 + - "#phy-cells" 78 + - compatible 79 + - clocks 80 + - clock-names 81 + - reg 82 + - reg-names 83 + - resets 84 + - reset-names 85 + 86 + additionalProperties: false 87 + 88 + examples: 89 + - | 90 + #include <dt-bindings/gpio/gpio.h> 91 + #include <dt-bindings/clock/sun8i-r40-ccu.h> 92 + #include <dt-bindings/reset/sun8i-r40-ccu.h> 93 + 94 + phy@1c13400 { 95 + #phy-cells = <1>; 96 + compatible = "allwinner,sun8i-r40-usb-phy"; 97 + reg = <0x01c13400 0x14>, 98 + <0x01c14800 0x4>, 99 + <0x01c19800 0x4>, 100 + <0x01c1c800 0x4>; 101 + reg-names = "phy_ctrl", 102 + "pmu0", 103 + "pmu1", 104 + "pmu2"; 105 + clocks = <&ccu CLK_USB_PHY0>, 106 + <&ccu CLK_USB_PHY1>, 107 + <&ccu CLK_USB_PHY2>; 108 + clock-names = "usb0_phy", 109 + "usb1_phy", 110 + "usb2_phy"; 111 + resets = <&ccu RST_USB_PHY0>, 112 + <&ccu RST_USB_PHY1>, 113 + <&ccu RST_USB_PHY2>; 114 + reset-names = "usb0_reset", 115 + "usb1_reset", 116 + "usb2_reset"; 117 + usb1_vbus-supply = <&reg_vcc5v0>; 118 + usb2_vbus-supply = <&reg_vcc5v0>; 119 + };
+86
Documentation/devicetree/bindings/phy/allwinner,sun8i-v3s-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/allwinner,sun8i-v3s-usb-phy.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner V3s USB PHY Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + properties: 14 + "#phy-cells": 15 + const: 1 16 + 17 + compatible: 18 + const: allwinner,sun8i-v3s-usb-phy 19 + 20 + reg: 21 + items: 22 + - description: PHY Control registers 23 + - description: PHY PMU0 registers 24 + 25 + reg-names: 26 + items: 27 + - const: phy_ctrl 28 + - const: pmu0 29 + 30 + clocks: 31 + maxItems: 1 32 + description: USB OTG PHY bus clock 33 + 34 + clock-names: 35 + const: usb0_phy 36 + 37 + resets: 38 + maxItems: 1 39 + description: USB OTG reset 40 + 41 + reset-names: 42 + const: usb0_reset 43 + 44 + usb0_id_det-gpios: 45 + description: GPIO to the USB OTG ID pin 46 + 47 + usb0_vbus_det-gpios: 48 + description: GPIO to the USB OTG VBUS detect pin 49 + 50 + usb0_vbus_power-supply: 51 + description: Power supply to detect the USB OTG VBUS 52 + 53 + usb0_vbus-supply: 54 + description: Regulator controlling USB OTG VBUS 55 + 56 + required: 57 + - "#phy-cells" 58 + - compatible 59 + - clocks 60 + - clock-names 61 + - reg 62 + - reg-names 63 + - resets 64 + - reset-names 65 + 66 + additionalProperties: false 67 + 68 + examples: 69 + - | 70 + #include <dt-bindings/gpio/gpio.h> 71 + #include <dt-bindings/clock/sun8i-v3s-ccu.h> 72 + #include <dt-bindings/reset/sun8i-v3s-ccu.h> 73 + 74 + phy@1c19400 { 75 + #phy-cells = <1>; 76 + compatible = "allwinner,sun8i-v3s-usb-phy"; 77 + reg = <0x01c19400 0x2c>, 78 + <0x01c1a800 0x4>; 79 + reg-names = "phy_ctrl", 80 + "pmu0"; 81 + clocks = <&ccu CLK_USB_PHY0>; 82 + clock-names = "usb0_phy"; 83 + resets = <&ccu RST_USB_PHY0>; 84 + reset-names = "usb0_reset"; 85 + usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 86 + };
+1 -1
Documentation/devicetree/bindings/phy/rockchip,px30-dsi-dphy.yaml
··· 58 58 examples: 59 59 - | 60 60 dsi_dphy: phy@ff2e0000 { 61 - compatible = "rockchip,px30-video-phy"; 61 + compatible = "rockchip,px30-dsi-dphy"; 62 62 reg = <0x0 0xff2e0000 0x0 0x10000>; 63 63 clocks = <&pmucru 13>, <&cru 12>; 64 64 clock-names = "ref", "pclk";
+3 -3
Documentation/devicetree/bindings/phy/samsung-phy.txt
··· 1 - Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY 1 + Samsung S5P/Exynos SoC series MIPI CSIS/DSIM DPHY 2 2 ------------------------------------------------- 3 3 4 4 Required properties: ··· 27 27 supports additional fifth PHY: 28 28 4 - MIPI CSIS 2. 29 29 30 - Samsung EXYNOS SoC series Display Port PHY 30 + Samsung Exynos SoC series Display Port PHY 31 31 ------------------------------------------------- 32 32 33 33 Required properties: ··· 38 38 control pmu registers for power isolation. 39 39 - #phy-cells : from the generic PHY bindings, must be 0; 40 40 41 - Samsung S5P/EXYNOS SoC series USB PHY 41 + Samsung S5P/Exynos SoC series USB PHY 42 42 ------------------------------------------------- 43 43 44 44 Required properties:
-68
Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt
··· 1 - Allwinner sun4i USB PHY 2 - ----------------------- 3 - 4 - Required properties: 5 - - compatible : should be one of 6 - * allwinner,sun4i-a10-usb-phy 7 - * allwinner,sun5i-a13-usb-phy 8 - * allwinner,sun6i-a31-usb-phy 9 - * allwinner,sun7i-a20-usb-phy 10 - * allwinner,sun8i-a23-usb-phy 11 - * allwinner,sun8i-a33-usb-phy 12 - * allwinner,sun8i-a83t-usb-phy 13 - * allwinner,sun8i-h3-usb-phy 14 - * allwinner,sun8i-r40-usb-phy 15 - * allwinner,sun8i-v3s-usb-phy 16 - * allwinner,sun50i-a64-usb-phy 17 - * allwinner,sun50i-h6-usb-phy 18 - - reg : a list of offset + length pairs 19 - - reg-names : 20 - * "phy_ctrl" 21 - * "pmu0" for H3, V3s, A64 or H6 22 - * "pmu1" 23 - * "pmu2" for sun4i, sun6i, sun7i, sun8i-a83t or sun8i-h3 24 - * "pmu3" for sun8i-h3 or sun50i-h6 25 - - #phy-cells : from the generic phy bindings, must be 1 26 - - clocks : phandle + clock specifier for the phy clocks 27 - - clock-names : 28 - * "usb_phy" for sun4i, sun5i or sun7i 29 - * "usb0_phy", "usb1_phy" and "usb2_phy" for sun6i 30 - * "usb0_phy", "usb1_phy" for sun8i 31 - * "usb0_phy", "usb1_phy", "usb2_phy" and "usb2_hsic_12M" for sun8i-a83t 32 - * "usb0_phy", "usb1_phy", "usb2_phy" and "usb3_phy" for sun8i-h3 33 - * "usb0_phy" and "usb3_phy" for sun50i-h6 34 - - resets : a list of phandle + reset specifier pairs 35 - - reset-names : 36 - * "usb0_reset" 37 - * "usb1_reset" 38 - * "usb2_reset" for sun4i, sun6i, sun7i, sun8i-a83t or sun8i-h3 39 - * "usb3_reset" for sun8i-h3 and sun50i-h6 40 - 41 - Optional properties: 42 - - usb0_id_det-gpios : gpio phandle for reading the otg id pin value 43 - - usb0_vbus_det-gpios : gpio phandle for detecting the presence of usb0 vbus 44 - - usb0_vbus_power-supply: power-supply phandle for usb0 vbus presence detect 45 - - usb0_vbus-supply : regulator phandle for controller usb0 vbus 46 - - usb1_vbus-supply : regulator phandle for controller usb1 vbus 47 - - usb2_vbus-supply : regulator phandle for controller usb2 vbus 48 - - usb3_vbus-supply : regulator phandle for controller usb3 vbus 49 - 50 - Example: 51 - usbphy: phy@01c13400 { 52 - #phy-cells = <1>; 53 - compatible = "allwinner,sun4i-a10-usb-phy"; 54 - /* phy base regs, phy1 pmu reg, phy2 pmu reg */ 55 - reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>; 56 - reg-names = "phy_ctrl", "pmu1", "pmu2"; 57 - clocks = <&usb_clk 8>; 58 - clock-names = "usb_phy"; 59 - resets = <&usb_clk 0>, <&usb_clk 1>, <&usb_clk 2>; 60 - reset-names = "usb0_reset", "usb1_reset", "usb2_reset"; 61 - pinctrl-names = "default"; 62 - pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; 63 - usb0_id_det-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; /* PH19 */ 64 - usb0_vbus_det-gpios = <&pio 7 22 GPIO_ACTIVE_HIGH>; /* PH22 */ 65 - usb0_vbus-supply = <&reg_usb0_vbus>; 66 - usb1_vbus-supply = <&reg_usb1_vbus>; 67 - usb2_vbus-supply = <&reg_usb2_vbus>; 68 - };
+68
Documentation/devicetree/bindings/reset/allwinner,sun6i-a31-clock-reset.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/reset/allwinner,sun6i-a31-clock-reset.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A31 Peripheral Reset Controller Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + deprecated: true 14 + 15 + select: 16 + properties: 17 + compatible: 18 + contains: 19 + enum: 20 + - allwinner,sun6i-a31-ahb1-reset 21 + - allwinner,sun6i-a31-clock-reset 22 + 23 + # The PRCM on the A31 and A23 will have the reg property missing, 24 + # since it's set at the upper level node, and will be validated by 25 + # PRCM's schema. Make sure we only validate standalone nodes. 26 + required: 27 + - compatible 28 + - reg 29 + 30 + properties: 31 + "#reset-cells": 32 + const: 1 33 + description: > 34 + This additional argument passed to that reset controller is the 35 + offset of the bit controlling this particular reset line in the 36 + register. 37 + 38 + compatible: 39 + enum: 40 + - allwinner,sun6i-a31-ahb1-reset 41 + - allwinner,sun6i-a31-clock-reset 42 + 43 + reg: 44 + maxItems: 1 45 + 46 + required: 47 + - "#reset-cells" 48 + - compatible 49 + - reg 50 + 51 + additionalProperties: false 52 + 53 + examples: 54 + - | 55 + ahb1_rst: reset@1c202c0 { 56 + #reset-cells = <1>; 57 + compatible = "allwinner,sun6i-a31-ahb1-reset"; 58 + reg = <0x01c202c0 0xc>; 59 + }; 60 + 61 + - | 62 + apbs_rst: reset@80014b0 { 63 + #reset-cells = <1>; 64 + compatible = "allwinner,sun6i-a31-clock-reset"; 65 + reg = <0x080014b0 0x4>; 66 + }; 67 + 68 + ...
-21
Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt
··· 1 - Allwinner sunxi Peripheral Reset Controller 2 - =========================================== 3 - 4 - Please also refer to reset.txt in this directory for common reset 5 - controller binding usage. 6 - 7 - Required properties: 8 - - compatible: Should be one of the following: 9 - "allwinner,sun6i-a31-ahb1-reset" 10 - "allwinner,sun6i-a31-clock-reset" 11 - - reg: should be register base and length as documented in the 12 - datasheet 13 - - #reset-cells: 1, see below 14 - 15 - example: 16 - 17 - ahb1_rst: reset@1c202c0 { 18 - #reset-cells = <1>; 19 - compatible = "allwinner,sun6i-a31-ahb1-reset"; 20 - reg = <0x01c202c0 0xc>; 21 - };
-61
Documentation/devicetree/bindings/rtc/st,stm32-rtc.txt
··· 1 - STM32 Real Time Clock 2 - 3 - Required properties: 4 - - compatible: can be one of the following: 5 - - "st,stm32-rtc" for devices compatible with stm32(f4/f7). 6 - - "st,stm32h7-rtc" for devices compatible with stm32h7. 7 - - "st,stm32mp1-rtc" for devices compatible with stm32mp1. 8 - - reg: address range of rtc register set. 9 - - clocks: can use up to two clocks, depending on part used: 10 - - "rtc_ck": RTC clock source. 11 - - "pclk": RTC APB interface clock. 12 - It is not present on stm32(f4/f7). 13 - It is required on stm32(h7/mp1). 14 - - clock-names: must be "rtc_ck" and "pclk". 15 - It is required on stm32(h7/mp1). 16 - - interrupts: rtc alarm interrupt. On stm32mp1, a second interrupt is required 17 - for rtc alarm wakeup interrupt. 18 - - st,syscfg: phandle/offset/mask triplet. The phandle to pwrcfg used to 19 - access control register at offset, and change the dbp (Disable Backup 20 - Protection) bit represented by the mask, mandatory to disable/enable backup 21 - domain (RTC registers) write protection. 22 - It is required on stm32(f4/f7/h7). 23 - 24 - Optional properties (to override default rtc_ck parent clock on stm32(f4/f7/h7): 25 - - assigned-clocks: reference to the rtc_ck clock entry. 26 - - assigned-clock-parents: phandle of the new parent clock of rtc_ck. 27 - 28 - Example: 29 - 30 - rtc: rtc@40002800 { 31 - compatible = "st,stm32-rtc"; 32 - reg = <0x40002800 0x400>; 33 - clocks = <&rcc 1 CLK_RTC>; 34 - assigned-clocks = <&rcc 1 CLK_RTC>; 35 - assigned-clock-parents = <&rcc 1 CLK_LSE>; 36 - interrupt-parent = <&exti>; 37 - interrupts = <17 1>; 38 - st,syscfg = <&pwrcfg 0x00 0x100>; 39 - }; 40 - 41 - rtc: rtc@58004000 { 42 - compatible = "st,stm32h7-rtc"; 43 - reg = <0x58004000 0x400>; 44 - clocks = <&rcc RTCAPB_CK>, <&rcc RTC_CK>; 45 - clock-names = "pclk", "rtc_ck"; 46 - assigned-clocks = <&rcc RTC_CK>; 47 - assigned-clock-parents = <&rcc LSE_CK>; 48 - interrupt-parent = <&exti>; 49 - interrupts = <17 1>; 50 - interrupt-names = "alarm"; 51 - st,syscfg = <&pwrcfg 0x00 0x100>; 52 - }; 53 - 54 - rtc: rtc@5c004000 { 55 - compatible = "st,stm32mp1-rtc"; 56 - reg = <0x5c004000 0x400>; 57 - clocks = <&rcc RTCAPB>, <&rcc RTC>; 58 - clock-names = "pclk", "rtc_ck"; 59 - interrupts-extended = <&intc GIC_SPI 3 IRQ_TYPE_NONE>, 60 - <&exti 19 1>; 61 - };
+139
Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/rtc/st,stm32-rtc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 Real Time Clock Bindings 8 + 9 + maintainers: 10 + - Gabriel Fernandez <gabriel.fernandez@st.com> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - st,stm32-rtc 16 + - st,stm32h7-rtc 17 + - st,stm32mp1-rtc 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + clocks: 23 + minItems: 1 24 + maxItems: 2 25 + 26 + clock-names: 27 + items: 28 + - const: pclk 29 + - const: rtc_ck 30 + 31 + interrupts: 32 + maxItems: 1 33 + 34 + st,syscfg: 35 + allOf: 36 + - $ref: "/schemas/types.yaml#/definitions/phandle-array" 37 + - items: 38 + minItems: 3 39 + maxItems: 3 40 + description: | 41 + Phandle/offset/mask triplet. The phandle to pwrcfg used to 42 + access control register at offset, and change the dbp (Disable Backup 43 + Protection) bit represented by the mask, mandatory to disable/enable backup 44 + domain (RTC registers) write protection. 45 + 46 + assigned-clocks: 47 + description: | 48 + override default rtc_ck parent clock reference to the rtc_ck clock entry 49 + maxItems: 1 50 + 51 + assigned-clock-parents: 52 + description: | 53 + override default rtc_ck parent clock phandle of the new parent clock of rtc_ck 54 + maxItems: 1 55 + 56 + allOf: 57 + - if: 58 + properties: 59 + compatible: 60 + contains: 61 + const: st,stm32-rtc 62 + 63 + then: 64 + properties: 65 + clocks: 66 + minItems: 1 67 + maxItems: 1 68 + 69 + clock-names: false 70 + 71 + required: 72 + - st,syscfg 73 + 74 + - if: 75 + properties: 76 + compatible: 77 + contains: 78 + const: st,stm32h7-rtc 79 + 80 + then: 81 + properties: 82 + clocks: 83 + minItems: 2 84 + maxItems: 2 85 + 86 + required: 87 + - clock-names 88 + - st,syscfg 89 + 90 + - if: 91 + properties: 92 + compatible: 93 + contains: 94 + const: st,stm32mp1-rtc 95 + 96 + then: 97 + properties: 98 + clocks: 99 + minItems: 2 100 + maxItems: 2 101 + 102 + assigned-clocks: false 103 + assigned-clock-parents: false 104 + 105 + required: 106 + - clock-names 107 + 108 + required: 109 + - compatible 110 + - reg 111 + - clocks 112 + - interrupts 113 + 114 + examples: 115 + - | 116 + #include <dt-bindings/mfd/stm32f4-rcc.h> 117 + #include <dt-bindings/clock/stm32fx-clock.h> 118 + rtc@40002800 { 119 + compatible = "st,stm32-rtc"; 120 + reg = <0x40002800 0x400>; 121 + clocks = <&rcc 1 CLK_RTC>; 122 + assigned-clocks = <&rcc 1 CLK_RTC>; 123 + assigned-clock-parents = <&rcc 1 CLK_LSE>; 124 + interrupt-parent = <&exti>; 125 + interrupts = <17 1>; 126 + st,syscfg = <&pwrcfg 0x00 0x100>; 127 + }; 128 + 129 + #include <dt-bindings/interrupt-controller/arm-gic.h> 130 + #include <dt-bindings/clock/stm32mp1-clks.h> 131 + rtc@5c004000 { 132 + compatible = "st,stm32mp1-rtc"; 133 + reg = <0x5c004000 0x400>; 134 + clocks = <&rcc RTCAPB>, <&rcc RTC>; 135 + clock-names = "pclk", "rtc_ck"; 136 + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 137 + }; 138 + 139 + ...
+2
Documentation/devicetree/bindings/serial/fsl-lpuart.txt
··· 10 10 on i.MX7ULP SoC with 32-bit little-endian register organization 11 11 - "fsl,imx8qxp-lpuart" for lpuart compatible with the one integrated 12 12 on i.MX8QXP SoC with 32-bit little-endian register organization 13 + - "fsl,imx8qm-lpuart" for lpuart compatible with the one integrated 14 + on i.MX8QM SoC with 32-bit little-endian register organization 13 15 - reg : Address and length of the register set for the device 14 16 - interrupts : Should contain uart interrupt 15 17 - clocks : phandle + clock specifier pairs, one for each entry in clock-names
+1 -31
Documentation/devicetree/bindings/serial/rs485.txt
··· 1 - * RS485 serial communications 2 - 3 - The RTS signal is capable of automatically controlling line direction for 4 - the built-in half-duplex mode. 5 - The properties described hereafter shall be given to a half-duplex capable 6 - UART node. 7 - 8 - Optional properties: 9 - - rs485-rts-delay: prop-encoded-array <a b> where: 10 - * a is the delay between rts signal and beginning of data sent in milliseconds. 11 - it corresponds to the delay before sending data. 12 - * b is the delay between end of data sent and rts signal in milliseconds 13 - it corresponds to the delay after sending data and actual release of the line. 14 - If this property is not specified, <0 0> is assumed. 15 - - rs485-rts-active-low: drive RTS low when sending (default is high). 16 - - linux,rs485-enabled-at-boot-time: empty property telling to enable the rs485 17 - feature at boot time. It can be disabled later with proper ioctl. 18 - - rs485-rx-during-tx: empty property that enables the receiving of data even 19 - while sending data. 20 - 21 - RS485 example for Atmel USART: 22 - usart0: serial@fff8c000 { 23 - compatible = "atmel,at91sam9260-usart"; 24 - reg = <0xfff8c000 0x4000>; 25 - interrupts = <7>; 26 - atmel,use-dma-rx; 27 - atmel,use-dma-tx; 28 - linux,rs485-enabled-at-boot-time; 29 - rs485-rts-delay = <0 200>; // in milliseconds 30 - }; 31 - 1 + See rs485.yaml
+45
Documentation/devicetree/bindings/serial/rs485.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/serial/rs485.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RS485 serial communications Bindings 8 + 9 + description: The RTS signal is capable of automatically controlling 10 + line direction for the built-in half-duplex mode. 11 + The properties described hereafter shall be given to a 12 + half-duplex capable UART node. 13 + 14 + maintainers: 15 + - Rob Herring <robh@kernel.org> 16 + 17 + properties: 18 + rs485-rts-delay: 19 + description: prop-encoded-array <a b> 20 + allOf: 21 + - $ref: /schemas/types.yaml#/definitions/uint32-array 22 + - items: 23 + items: 24 + - description: 25 + Delay between rts signal and beginning of data sent in milliseconds. 26 + It corresponds to the delay before sending data. 27 + default: 0 28 + maximum: 1000 29 + - description: 30 + Delay between end of data sent and rts signal in milliseconds. 31 + It corresponds to the delay after sending data and actual release of the line. 32 + default: 0 33 + maximum: 1000 34 + 35 + rs485-rts-active-low: 36 + description: drive RTS low when sending (default is high). 37 + $ref: /schemas/types.yaml#/definitions/flag 38 + 39 + linux,rs485-enabled-at-boot-time: 40 + description: enables the rs485 feature at boot time. It can be disabled later with proper ioctl. 41 + $ref: /schemas/types.yaml#/definitions/flag 42 + 43 + rs485-rx-during-tx: 44 + description: enables the receiving of data even while sending data. 45 + $ref: /schemas/types.yaml#/definitions/flag
+80
Documentation/devicetree/bindings/serial/st,stm32-uart.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/serial/st,stm32-uart.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + maintainers: 8 + - Erwan Le Ray <erwan.leray@st.com> 9 + 10 + title: STMicroelectronics STM32 USART bindings 11 + 12 + allOf: 13 + - $ref: rs485.yaml 14 + 15 + properties: 16 + compatible: 17 + enum: 18 + - st,stm32-uart 19 + - st,stm32f7-uart 20 + - st,stm32h7-uart 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + resets: 32 + maxItems: 1 33 + 34 + label: 35 + description: label associated with this uart 36 + 37 + st,hw-flow-ctrl: 38 + description: enable hardware flow control 39 + $ref: /schemas/types.yaml#/definitions/flag 40 + 41 + dmas: 42 + minItems: 1 43 + maxItems: 2 44 + 45 + dma-names: 46 + items: 47 + enum: [ rx, tx ] 48 + minItems: 1 49 + maxItems: 2 50 + 51 + wakeup-source: true 52 + 53 + rs485-rts-delay: true 54 + rs485-rts-active-low: true 55 + linux,rs485-enabled-at-boot-time: true 56 + rs485-rx-during-tx: true 57 + 58 + required: 59 + - compatible 60 + - reg 61 + - interrupts 62 + - clocks 63 + 64 + additionalProperties: false 65 + 66 + examples: 67 + - | 68 + #include <dt-bindings/clock/stm32mp1-clks.h> 69 + usart1: serial@40011000 { 70 + compatible = "st,stm32-uart"; 71 + reg = <0x40011000 0x400>; 72 + interrupts = <37>; 73 + clocks = <&rcc 0 164>; 74 + dmas = <&dma2 2 4 0x414 0x0>, 75 + <&dma2 7 4 0x414 0x0>; 76 + dma-names = "rx", "tx"; 77 + rs485-rts-active-low; 78 + }; 79 + 80 + ...
-57
Documentation/devicetree/bindings/serial/st,stm32-usart.txt
··· 1 - * STMicroelectronics STM32 USART 2 - 3 - Required properties: 4 - - compatible: can be either: 5 - - "st,stm32-uart", 6 - - "st,stm32f7-uart", 7 - - "st,stm32h7-uart". 8 - depending is compatible with stm32(f4), stm32f7 or stm32h7. 9 - - reg: The address and length of the peripheral registers space 10 - - interrupts: 11 - - The interrupt line for the USART instance, 12 - - An optional wake-up interrupt. 13 - - clocks: The input clock of the USART instance 14 - 15 - Optional properties: 16 - - resets: Must contain the phandle to the reset controller. 17 - - pinctrl: The reference on the pins configuration 18 - - st,hw-flow-ctrl: bool flag to enable hardware flow control. 19 - - rs485-rts-delay, rs485-rx-during-tx, rs485-rts-active-low, 20 - linux,rs485-enabled-at-boot-time: see rs485.txt. 21 - - dmas: phandle(s) to DMA controller node(s). Refer to stm32-dma.txt 22 - - dma-names: "rx" and/or "tx" 23 - - wakeup-source: bool flag to indicate this device has wakeup capabilities 24 - - interrupt-names, if optional wake-up interrupt is used, should be: 25 - - "event": the name for the interrupt line of the USART instance 26 - - "wakeup" the name for the optional wake-up interrupt 27 - 28 - 29 - Examples: 30 - usart4: serial@40004c00 { 31 - compatible = "st,stm32-uart"; 32 - reg = <0x40004c00 0x400>; 33 - interrupts = <52>; 34 - clocks = <&clk_pclk1>; 35 - pinctrl-names = "default"; 36 - pinctrl-0 = <&pinctrl_usart4>; 37 - }; 38 - 39 - usart2: serial@40004400 { 40 - compatible = "st,stm32-uart"; 41 - reg = <0x40004400 0x400>; 42 - interrupts = <38>; 43 - clocks = <&clk_pclk1>; 44 - st,hw-flow-ctrl; 45 - pinctrl-names = "default"; 46 - pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rtscts>; 47 - }; 48 - 49 - usart1: serial@40011000 { 50 - compatible = "st,stm32-uart"; 51 - reg = <0x40011000 0x400>; 52 - interrupts = <37>; 53 - clocks = <&rcc 0 164>; 54 - dmas = <&dma2 2 4 0x414 0x0>, 55 - <&dma2 7 4 0x414 0x0>; 56 - dma-names = "rx", "tx"; 57 - };
+140
Documentation/devicetree/bindings/sram/allwinner,sun4i-a10-system-control.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0+ 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/sram/allwinner,sun4i-a10-system-control.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A10 System Control Device Tree Bindings 8 + 9 + maintainers: 10 + - Chen-Yu Tsai <wens@csie.org> 11 + - Maxime Ripard <mripard@kernel.org> 12 + 13 + description: 14 + The SRAM controller found on most Allwinner devices is represented 15 + by a regular node for the SRAM controller itself, with sub-nodes 16 + representing the SRAM handled by the SRAM controller. 17 + 18 + properties: 19 + "#address-cells": 20 + const: 1 21 + 22 + "#size-cells": 23 + const: 1 24 + 25 + compatible: 26 + oneOf: 27 + - const: allwinner,sun4i-a10-sram-controller 28 + deprecated: true 29 + - const: allwinner,sun4i-a10-system-control 30 + - const: allwinner,sun5i-a13-system-control 31 + - items: 32 + - const: allwinner,sun7i-a20-system-control 33 + - const: allwinner,sun4i-a10-system-control 34 + - const: allwinner,sun8i-a23-system-control 35 + - const: allwinner,sun8i-h3-system-control 36 + - const: allwinner,sun50i-a64-sram-controller 37 + deprecated: true 38 + - const: allwinner,sun50i-a64-system-control 39 + - const: allwinner,sun50i-h5-system-control 40 + - items: 41 + - const: allwinner,sun50i-h6-system-control 42 + - const: allwinner,sun50i-a64-system-control 43 + - items: 44 + - const: allwinner,suniv-f1c100s-system-control 45 + - const: allwinner,sun4i-a10-system-control 46 + 47 + reg: 48 + maxItems: 1 49 + 50 + ranges: true 51 + 52 + patternProperties: 53 + "^sram@[a-z0-9]+": 54 + type: object 55 + 56 + properties: 57 + compatible: 58 + const: mmio-sram 59 + 60 + patternProperties: 61 + "^sram-section?@[a-f0-9]+$": 62 + type: object 63 + 64 + properties: 65 + compatible: 66 + oneOf: 67 + - const: allwinner,sun4i-a10-sram-a3-a4 68 + - const: allwinner,sun4i-a10-sram-c1 69 + - const: allwinner,sun4i-a10-sram-d 70 + - const: allwinner,sun50i-a64-sram-c 71 + - items: 72 + - const: allwinner,sun5i-a13-sram-a3-a4 73 + - const: allwinner,sun4i-a10-sram-a3-a4 74 + - items: 75 + - const: allwinner,sun7i-a20-sram-a3-a4 76 + - const: allwinner,sun4i-a10-sram-a3-a4 77 + - items: 78 + - const: allwinner,sun5i-a13-sram-c1 79 + - const: allwinner,sun4i-a10-sram-c1 80 + - items: 81 + - const: allwinner,sun7i-a20-sram-c1 82 + - const: allwinner,sun4i-a10-sram-c1 83 + - items: 84 + - const: allwinner,sun8i-a23-sram-c1 85 + - const: allwinner,sun4i-a10-sram-c1 86 + - items: 87 + - const: allwinner,sun8i-h3-sram-c1 88 + - const: allwinner,sun4i-a10-sram-c1 89 + - items: 90 + - const: allwinner,sun50i-a64-sram-c1 91 + - const: allwinner,sun4i-a10-sram-c1 92 + - items: 93 + - const: allwinner,sun50i-h5-sram-c1 94 + - const: allwinner,sun4i-a10-sram-c1 95 + - items: 96 + - const: allwinner,sun50i-h6-sram-c1 97 + - const: allwinner,sun4i-a10-sram-c1 98 + - items: 99 + - const: allwinner,sun5i-a13-sram-d 100 + - const: allwinner,sun4i-a10-sram-d 101 + - items: 102 + - const: allwinner,sun7i-a20-sram-d 103 + - const: allwinner,sun4i-a10-sram-d 104 + - items: 105 + - const: allwinner,suniv-f1c100s-sram-d 106 + - const: allwinner,sun4i-a10-sram-d 107 + - items: 108 + - const: allwinner,sun50i-h6-sram-c 109 + - const: allwinner,sun50i-a64-sram-c 110 + 111 + required: 112 + - "#address-cells" 113 + - "#size-cells" 114 + - compatible 115 + - reg 116 + 117 + additionalProperties: false 118 + 119 + examples: 120 + - | 121 + system-control@1c00000 { 122 + compatible = "allwinner,sun4i-a10-system-control"; 123 + reg = <0x01c00000 0x30>; 124 + #address-cells = <1>; 125 + #size-cells = <1>; 126 + ranges; 127 + 128 + sram_a: sram@00000000 { 129 + compatible = "mmio-sram"; 130 + reg = <0x00000000 0xc000>; 131 + #address-cells = <1>; 132 + #size-cells = <1>; 133 + ranges = <0 0x00000000 0xc000>; 134 + 135 + emac_sram: sram-section@8000 { 136 + compatible = "allwinner,sun4i-a10-sram-a3-a4"; 137 + reg = <0x8000 0x4000>; 138 + }; 139 + }; 140 + };
+15 -10
Documentation/devicetree/bindings/sram/sram.yaml
··· 55 55 type: boolean 56 56 57 57 patternProperties: 58 - "^([a-z]*-)?sram@[a-f0-9]+$": 58 + "^([a-z]*-)?sram(-section)?@[a-f0-9]+$": 59 59 type: object 60 60 description: 61 61 Each child of the sram node specifies a region of reserved memory. ··· 64 64 description: 65 65 Should contain a vendor specific string in the form 66 66 <vendor>,[<device>-]<usage> 67 - enum: 68 - - allwinner,sun9i-a80-smp-sram 69 - - amlogic,meson8-smp-sram 70 - - amlogic,meson8b-smp-sram 71 - - renesas,smp-sram 72 - - rockchip,rk3066-smp-sram 73 - - samsung,exynos4210-sysram 74 - - samsung,exynos4210-sysram-ns 75 - - socionext,milbeaut-smp-sram 67 + contains: 68 + enum: 69 + - allwinner,sun4i-a10-sram-a3-a4 70 + - allwinner,sun4i-a10-sram-c1 71 + - allwinner,sun4i-a10-sram-d 72 + - allwinner,sun9i-a80-smp-sram 73 + - allwinner,sun50i-a64-sram-c 74 + - amlogic,meson8-smp-sram 75 + - amlogic,meson8b-smp-sram 76 + - renesas,smp-sram 77 + - rockchip,rk3066-smp-sram 78 + - samsung,exynos4210-sysram 79 + - samsung,exynos4210-sysram-ns 80 + - socionext,milbeaut-smp-sram 76 81 77 82 reg: 78 83 description:
-113
Documentation/devicetree/bindings/sram/sunxi-sram.txt
··· 1 - Allwinnner SoC SRAM controllers 2 - ----------------------------------------------------- 3 - 4 - The SRAM controller found on most Allwinner devices is represented by 5 - a regular node for the SRAM controller itself, with sub-nodes 6 - reprensenting the SRAM handled by the SRAM controller. 7 - 8 - Controller Node 9 - --------------- 10 - 11 - Required properties: 12 - - compatible : should be: 13 - - "allwinner,sun4i-a10-sram-controller" (deprecated) 14 - - "allwinner,sun4i-a10-system-control" 15 - - "allwinner,sun5i-a13-system-control" 16 - - "allwinner,sun7i-a20-system-control", "allwinner,sun4i-a10-system-control" 17 - - "allwinner,sun8i-a23-system-control" 18 - - "allwinner,sun8i-h3-system-control" 19 - - "allwinner,sun50i-a64-sram-controller" (deprecated) 20 - - "allwinner,sun50i-a64-system-control" 21 - - "allwinner,sun50i-h5-system-control" 22 - - "allwinner,sun50i-h6-system-control", "allwinner,sun50i-a64-system-control" 23 - - "allwinner,suniv-f1c100s-system-control", "allwinner,sun4i-a10-system-control" 24 - - reg : sram controller register offset + length 25 - 26 - SRAM nodes 27 - ---------- 28 - 29 - Each SRAM is described using the mmio-sram bindings documented in 30 - Documentation/devicetree/bindings/sram/sram.txt 31 - 32 - Each SRAM will have SRAM sections that are going to be handled by the 33 - SRAM controller as subnodes. These sections are represented following 34 - once again the representation described in the mmio-sram binding. 35 - 36 - The valid sections compatible for A10 are: 37 - - allwinner,sun4i-a10-sram-a3-a4 38 - - allwinner,sun4i-a10-sram-c1 39 - - allwinner,sun4i-a10-sram-d 40 - 41 - The valid sections compatible for A13 are: 42 - - allwinner,sun5i-a13-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4 43 - - allwinner,sun5i-a13-sram-c1, allwinner,sun4i-a10-sram-c1 44 - - allwinner,sun5i-a13-sram-d, allwinner,sun4i-a10-sram-d 45 - 46 - The valid sections compatible for A20 are: 47 - - allwinner,sun7i-a20-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4 48 - - allwinner,sun7i-a20-sram-c1, allwinner,sun4i-a10-sram-c1 49 - - allwinner,sun7i-a20-sram-d, allwinner,sun4i-a10-sram-d 50 - 51 - The valid sections compatible for A23/A33 are: 52 - - allwinner,sun8i-a23-sram-c1, allwinner,sun4i-a10-sram-c1 53 - 54 - The valid sections compatible for H3 are: 55 - - allwinner,sun8i-h3-sram-c1, allwinner,sun4i-a10-sram-c1 56 - 57 - The valid sections compatible for A64 are: 58 - - allwinner,sun50i-a64-sram-c 59 - - allwinner,sun50i-a64-sram-c1, allwinner,sun4i-a10-sram-c1 60 - 61 - The valid sections compatible for H5 are: 62 - - allwinner,sun50i-h5-sram-c1, allwinner,sun4i-a10-sram-c1 63 - 64 - The valid sections compatible for H6 are: 65 - - allwinner,sun50i-h6-sram-c, allwinner,sun50i-a64-sram-c 66 - - allwinner,sun50i-h6-sram-c1, allwinner,sun4i-a10-sram-c1 67 - 68 - The valid sections compatible for F1C100s are: 69 - - allwinner,suniv-f1c100s-sram-d, allwinner,sun4i-a10-sram-d 70 - 71 - Devices using SRAM sections 72 - --------------------------- 73 - 74 - Some devices need to request to the SRAM controller to map an SRAM for 75 - their exclusive use. 76 - 77 - The relationship between such a device and an SRAM section is 78 - expressed through the allwinner,sram property, that will take a 79 - phandle and an argument. 80 - 81 - This valid values for this argument are: 82 - - 0: CPU 83 - - 1: Device 84 - 85 - Example 86 - ------- 87 - system-control@1c00000 { 88 - compatible = "allwinner,sun4i-a10-system-control"; 89 - reg = <0x01c00000 0x30>; 90 - #address-cells = <1>; 91 - #size-cells = <1>; 92 - ranges; 93 - 94 - sram_a: sram@00000000 { 95 - compatible = "mmio-sram"; 96 - reg = <0x00000000 0xc000>; 97 - #address-cells = <1>; 98 - #size-cells = <1>; 99 - ranges = <0 0x00000000 0xc000>; 100 - 101 - emac_sram: sram-section@8000 { 102 - compatible = "allwinner,sun4i-a10-sram-a3-a4"; 103 - reg = <0x8000 0x4000>; 104 - }; 105 - }; 106 - }; 107 - 108 - emac: ethernet@1c0b000 { 109 - compatible = "allwinner,sun4i-a10-emac"; 110 - ... 111 - 112 - allwinner,sram = <&emac_sram 1>; 113 - };
+6 -6
Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml
··· 99 99 compatible = "arm,armv7-timer-mem"; 100 100 #address-cells = <1>; 101 101 #size-cells = <1>; 102 - ranges; 102 + ranges = <0 0xf0001000 0x1000>; 103 103 reg = <0xf0000000 0x1000>; 104 104 clock-frequency = <50000000>; 105 105 106 - frame@f0001000 { 106 + frame@0 { 107 107 frame-number = <0>; 108 108 interrupts = <0 13 0x8>, 109 109 <0 14 0x8>; 110 - reg = <0xf0001000 0x1000>, 111 - <0xf0002000 0x1000>; 110 + reg = <0x0000 0x1000>, 111 + <0x1000 0x1000>; 112 112 }; 113 113 114 - frame@f0003000 { 114 + frame@2000 { 115 115 frame-number = <1>; 116 116 interrupts = <0 15 0x8>; 117 - reg = <0xf0003000 0x1000>; 117 + reg = <0x2000 0x1000>; 118 118 }; 119 119 }; 120 120
+10
Documentation/devicetree/bindings/trivial-devices.yaml
··· 104 104 - infineon,slb9645tt 105 105 # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor 106 106 - infineon,tlv493d-a1b6 107 + # Infineon Multi-phase Digital VR Controller xdpe12254 108 + - infineon,xdpe12254 109 + # Infineon Multi-phase Digital VR Controller xdpe12284 110 + - infineon,xdpe12284 107 111 # Inspur Power System power supply unit version 1 108 112 - inspur,ipsps1 109 113 # Intersil ISL29028 Ambient Light and Proximity Sensor ··· 136 132 - maxim,max6621 137 133 # 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface 138 134 - maxim,max6625 135 + # 3-Channel Remote Temperature Sensor 136 + - maxim,max31730 139 137 # mCube 3-axis 8-bit digital accelerometer 140 138 - mcube,mc3230 141 139 # MEMSIC 2-axis 8-bit digital accelerometer ··· 360 354 - ti,tmp103 361 355 # Digital Temperature Sensor 362 356 - ti,tmp275 357 + # TI Dual channel DCAP+ multiphase controller TPS53679 358 + - ti,tps53679 359 + # TI Dual channel DCAP+ multiphase controller TPS53688 360 + - ti,tps53688 363 361 # Winbond/Nuvoton H/W Monitor 364 362 - winbond,w83793 365 363 # i2c trusted platform module (TPM)
+1 -1
Documentation/devicetree/bindings/usb/amlogic,meson-g12a-usb-ctrl.yaml
··· 107 107 reg = <0xff400000 0x40000>; 108 108 interrupts = <31>; 109 109 clocks = <&clkc_usb1>; 110 - clock-names = "ddr"; 110 + clock-names = "otg"; 111 111 phys = <&usb2_phy1>; 112 112 dr_mode = "peripheral"; 113 113 g-rx-fifo-size = <192>;
-64
Documentation/devicetree/bindings/usb/dwc2.txt
··· 1 - Platform DesignWare HS OTG USB 2.0 controller 2 - ----------------------------------------------------- 3 - 4 - Required properties: 5 - - compatible : One of: 6 - - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC. 7 - - hisilicon,hi6220-usb: The DWC2 USB controller instance in the hi6220 SoC. 8 - - rockchip,rk3066-usb: The DWC2 USB controller instance in the rk3066 Soc; 9 - - "rockchip,px30-usb", "rockchip,rk3066-usb", "snps,dwc2": for px30 Soc; 10 - - "rockchip,rk3188-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3188 Soc; 11 - - "rockchip,rk3288-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3288 Soc; 12 - - "lantiq,arx100-usb": The DWC2 USB controller instance in Lantiq ARX SoCs; 13 - - "lantiq,xrx200-usb": The DWC2 USB controller instance in Lantiq XRX SoCs; 14 - - "amlogic,meson8-usb": The DWC2 USB controller instance in Amlogic Meson8 SoCs; 15 - - "amlogic,meson8b-usb": The DWC2 USB controller instance in Amlogic Meson8b SoCs; 16 - - "amlogic,meson-gxbb-usb": The DWC2 USB controller instance in Amlogic S905 SoCs; 17 - - "amlogic,meson-g12a-usb": The DWC2 USB controller instance in Amlogic G12A SoCs; 18 - - "amcc,dwc-otg": The DWC2 USB controller instance in AMCC Canyonlands 460EX SoCs; 19 - - snps,dwc2: A generic DWC2 USB controller with default parameters. 20 - - "st,stm32f4x9-fsotg": The DWC2 USB FS/HS controller instance in STM32F4x9 SoCs 21 - configured in FS mode; 22 - - "st,stm32f4x9-hsotg": The DWC2 USB HS controller instance in STM32F4x9 SoCs 23 - configured in HS mode; 24 - - "st,stm32f7-hsotg": The DWC2 USB HS controller instance in STM32F7 SoCs 25 - configured in HS mode; 26 - - reg : Should contain 1 register range (address and length) 27 - - interrupts : Should contain 1 interrupt 28 - - clocks: clock provider specifier 29 - - clock-names: shall be "otg" 30 - Refer to clk/clock-bindings.txt for generic clock consumer properties 31 - 32 - Optional properties: 33 - - phys: phy provider specifier 34 - - phy-names: shall be "usb2-phy" 35 - - vbus-supply: reference to the VBUS regulator. Depending on the current mode 36 - this is enabled (in "host" mode") or disabled (in "peripheral" mode). The 37 - regulator is updated if the controller is configured in "otg" mode and the 38 - status changes between "host" and "peripheral". 39 - Refer to phy/phy-bindings.txt for generic phy consumer properties 40 - - dr_mode: shall be one of "host", "peripheral" and "otg" 41 - Refer to usb/generic.txt 42 - - g-rx-fifo-size: size of rx fifo size in gadget mode. 43 - - g-np-tx-fifo-size: size of non-periodic tx fifo size in gadget mode. 44 - - g-tx-fifo-size: size of periodic tx fifo per endpoint (except ep0) in gadget mode. 45 - - snps,need-phy-for-wake: If present indicates that the phy needs to be left 46 - on for remote wakeup during suspend. 47 - - snps,reset-phy-on-wake: If present indicates that we need to reset the PHY when 48 - we detect a wakeup. This is due to a hardware errata. 49 - 50 - Deprecated properties: 51 - - g-use-dma: gadget DMA mode is automatically detected 52 - 53 - Example: 54 - 55 - usb@101c0000 { 56 - compatible = "ralink,rt3050-usb, snps,dwc2"; 57 - reg = <0x101c0000 40000>; 58 - interrupts = <18>; 59 - clocks = <&usb_otg_ahb_clk>; 60 - clock-names = "otg"; 61 - phys = <&usbphy>; 62 - phy-names = "usb2-phy"; 63 - snps,need-phy-for-wake; 64 - };
+151
Documentation/devicetree/bindings/usb/dwc2.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/usb/dwc2.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: DesignWare HS OTG USB 2.0 controller Bindings 8 + 9 + maintainers: 10 + - Rob Herring <robh@kernel.org> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - const: brcm,bcm2835-usb 16 + - const: hisilicon,hi6220-usb 17 + - items: 18 + - const: rockchip,rk3066-usb 19 + - const: snps,dwc2 20 + - items: 21 + - const: rockchip,px30-usb 22 + - const: rockchip,rk3066-usb 23 + - const: snps,dwc2 24 + - items: 25 + - const: rockchip,rk3036-usb 26 + - const: rockchip,rk3066-usb 27 + - const: snps,dwc2 28 + - items: 29 + - const: rockchip,rv1108-usb 30 + - const: rockchip,rk3066-usb 31 + - const: snps,dwc2 32 + - items: 33 + - const: rockchip,rk3188-usb 34 + - const: rockchip,rk3066-usb 35 + - const: snps,dwc2 36 + - items: 37 + - const: rockchip,rk3228-usb 38 + - const: rockchip,rk3066-usb 39 + - const: snps,dwc2 40 + - items: 41 + - const: rockchip,rk3288-usb 42 + - const: rockchip,rk3066-usb 43 + - const: snps,dwc2 44 + - const: lantiq,arx100-usb 45 + - const: lantiq,xrx200-usb 46 + - items: 47 + - const: amlogic,meson8-usb 48 + - const: snps,dwc2 49 + - items: 50 + - const: amlogic,meson8b-usb 51 + - const: snps,dwc2 52 + - const: amlogic,meson-gxbb-usb 53 + - items: 54 + - const: amlogic,meson-g12a-usb 55 + - const: snps,dwc2 56 + - const: amcc,dwc-otg 57 + - const: snps,dwc2 58 + - const: st,stm32f4x9-fsotg 59 + - const: st,stm32f4x9-hsotg 60 + - const: st,stm32f7-hsotg 61 + - const: samsung,s3c6400-hsotg 62 + 63 + reg: 64 + maxItems: 1 65 + 66 + interrupts: 67 + maxItems: 1 68 + 69 + clocks: 70 + maxItems: 1 71 + 72 + clock-names: 73 + items: 74 + - const: otg 75 + 76 + resets: 77 + items: 78 + - description: common reset 79 + - description: ecc reset 80 + minItems: 1 81 + 82 + reset-names: 83 + items: 84 + - const: dwc2 85 + - const: dwc2-ecc 86 + minItems: 1 87 + 88 + phys: 89 + maxItems: 1 90 + 91 + phy-names: 92 + const: usb2-phy 93 + 94 + vbus-supply: 95 + description: reference to the VBUS regulator. Depending on the current mode 96 + this is enabled (in "host" mode") or disabled (in "peripheral" mode). The 97 + regulator is updated if the controller is configured in "otg" mode and the 98 + status changes between "host" and "peripheral". 99 + 100 + vusb_d-supply: 101 + description: phandle to voltage regulator of digital section, 102 + 103 + vusb_a-supply: 104 + description: phandle to voltage regulator of analog section. 105 + 106 + dr_mode: 107 + enum: [host, peripheral, otg] 108 + 109 + g-rx-fifo-size: 110 + $ref: /schemas/types.yaml#/definitions/uint32 111 + description: size of rx fifo size in gadget mode. 112 + 113 + g-np-tx-fifo-size: 114 + $ref: /schemas/types.yaml#/definitions/uint32 115 + description: size of non-periodic tx fifo size in gadget mode. 116 + 117 + g-tx-fifo-size: 118 + $ref: /schemas/types.yaml#/definitions/uint32-array 119 + description: size of periodic tx fifo per endpoint (except ep0) in gadget mode. 120 + 121 + snps,need-phy-for-wake: 122 + $ref: /schemas/types.yaml#/definitions/flag 123 + description: If present indicates that the phy needs to be left on for remote wakeup during suspend. 124 + 125 + snps,reset-phy-on-wake: 126 + $ref: /schemas/types.yaml#/definitions/flag 127 + description: If present indicates that we need to reset the PHY when we detect a wakeup. 128 + This is due to a hardware errata. 129 + 130 + required: 131 + - compatible 132 + - reg 133 + - interrupts 134 + - clocks 135 + - clock-names 136 + 137 + additionalProperties: false 138 + 139 + examples: 140 + - | 141 + usb@101c0000 { 142 + compatible = "rockchip,rk3066-usb", "snps,dwc2"; 143 + reg = <0x10180000 0x40000>; 144 + interrupts = <18>; 145 + clocks = <&usb_otg_ahb_clk>; 146 + clock-names = "otg"; 147 + phys = <&usbphy>; 148 + phy-names = "usb2-phy"; 149 + }; 150 + 151 + ...
+5 -4
Documentation/devicetree/bindings/usb/generic.txt
··· 2 2 3 3 Optional properties: 4 4 - maximum-speed: tells USB controllers we want to work up to a certain 5 - speed. Valid arguments are "super-speed", "high-speed", 6 - "full-speed" and "low-speed". In case this isn't passed 7 - via DT, USB controllers should default to their maximum 8 - HW capability. 5 + speed. Valid arguments are "super-speed-plus", 6 + "super-speed", "high-speed", "full-speed" and 7 + "low-speed". In case this isn't passed via DT, USB 8 + controllers should default to their maximum HW 9 + capability. 9 10 - dr_mode: tells Dual-Role USB controllers that we want to work on a 10 11 particular mode. Valid arguments are "host", 11 12 "peripheral" and "otg". In case this attribute isn't
+12
Documentation/devicetree/bindings/vendor-prefixes.yaml
··· 151 151 description: Bosch Sensortec GmbH 152 152 "^boundary,.*": 153 153 description: Boundary Devices Inc. 154 + "^broadmobi,.*": 155 + description: Shanghai Broadmobi Communication Technology Co.,Ltd. 154 156 "^brcm,.*": 155 157 description: Broadcom Corporation 156 158 "^buffalo,.*": ··· 161 159 description: B&R Industrial Automation GmbH 162 160 "^bticino,.*": 163 161 description: Bticino International 162 + "^calaosystems,.*": 163 + description: CALAO Systems SAS 164 164 "^calxeda,.*": 165 165 description: Calxeda 166 166 "^capella,.*": ··· 481 477 description: Shenzhen Jesurun Electronics Business Dept. 482 478 "^jianda,.*": 483 479 description: Jiandangjing Technology Co., Ltd. 480 + "^kam,.*": 481 + description: Kamstrup A/S 484 482 "^karo,.*": 485 483 description: Ka-Ro electronics GmbH 486 484 "^keithkoep,.*": ··· 621 615 description: Moxa Inc. 622 616 "^mpl,.*": 623 617 description: MPL AG 618 + "^mps,.*": 619 + description: Monolithic Power Systems Inc. 624 620 "^mqmaker,.*": 625 621 description: mqmaker Inc. 626 622 "^mscc,.*": ··· 923 915 description: Startek 924 916 "^ste,.*": 925 917 description: ST-Ericsson 918 + deprecated: true 926 919 "^stericsson,.*": 927 920 description: ST-Ericsson 921 + "^st-ericsson,.*": 922 + description: ST-Ericsson 923 + deprecated: true 928 924 "^summit,.*": 929 925 description: Summit microelectronics 930 926 "^sunchip,.*":
+1
Documentation/devicetree/bindings/watchdog/renesas,wdt.txt
··· 19 19 - "renesas,r8a7794-wdt" (R-Car E2) 20 20 - "renesas,r8a7795-wdt" (R-Car H3) 21 21 - "renesas,r8a7796-wdt" (R-Car M3-W) 22 + - "renesas,r8a77961-wdt" (R-Car M3-W+) 22 23 - "renesas,r8a77965-wdt" (R-Car M3-N) 23 24 - "renesas,r8a77970-wdt" (R-Car V3M) 24 25 - "renesas,r8a77990-wdt" (R-Car E3)
-26
Documentation/devicetree/bindings/watchdog/st,stm32-iwdg.txt
··· 1 - STM32 Independent WatchDoG (IWDG) 2 - --------------------------------- 3 - 4 - Required properties: 5 - - compatible: Should be either: 6 - - "st,stm32-iwdg" 7 - - "st,stm32mp1-iwdg" 8 - - reg: Physical base address and length of the registers set for the device 9 - - clocks: Reference to the clock entry lsi. Additional pclk clock entry 10 - is required only for st,stm32mp1-iwdg. 11 - - clock-names: Name of the clocks used. 12 - "lsi" for st,stm32-iwdg 13 - "lsi", "pclk" for st,stm32mp1-iwdg 14 - 15 - Optional Properties: 16 - - timeout-sec: Watchdog timeout value in seconds. 17 - 18 - Example: 19 - 20 - iwdg: watchdog@40003000 { 21 - compatible = "st,stm32-iwdg"; 22 - reg = <0x40003000 0x400>; 23 - clocks = <&clk_lsi>; 24 - clock-names = "lsi"; 25 - timeout-sec = <32>; 26 - };
+57
Documentation/devicetree/bindings/watchdog/st,stm32-iwdg.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/watchdog/st,stm32-iwdg.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectronics STM32 Independent WatchDoG (IWDG) bindings 8 + 9 + maintainers: 10 + - Yannick Fertre <yannick.fertre@st.com> 11 + - Christophe Roullier <christophe.roullier@st.com> 12 + 13 + allOf: 14 + - $ref: "watchdog.yaml#" 15 + 16 + properties: 17 + compatible: 18 + enum: 19 + - st,stm32-iwdg 20 + - st,stm32mp1-iwdg 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + items: 27 + - description: Low speed clock 28 + - description: Optional peripheral clock 29 + minItems: 1 30 + maxItems: 2 31 + 32 + clock-names: 33 + items: 34 + enum: 35 + - lsi 36 + - pclk 37 + minItems: 1 38 + maxItems: 2 39 + 40 + required: 41 + - compatible 42 + - reg 43 + - clocks 44 + - clock-names 45 + 46 + examples: 47 + - | 48 + #include <dt-bindings/clock/stm32mp1-clks.h> 49 + watchdog@5a002000 { 50 + compatible = "st,stm32mp1-iwdg"; 51 + reg = <0x5a002000 0x400>; 52 + clocks = <&rcc IWDG2>, <&rcc CK_LSI>; 53 + clock-names = "pclk", "lsi"; 54 + timeout-sec = <32>; 55 + }; 56 + 57 + ...
+7 -1
Documentation/devicetree/writing-schema.rst
··· 121 121 installed. Ensure they are in your PATH (~/.local/bin by default). 122 122 123 123 dtc must also be built with YAML output support enabled. This requires that 124 - libyaml and its headers be installed on the host system. 124 + libyaml and its headers be installed on the host system. For some distributions 125 + that involves installing the development package, such as: 126 + 127 + Debian: 128 + apt-get install libyaml-dev 129 + Fedora: 130 + dnf -y install libyaml-devel 125 131 126 132 Running checks 127 133 ~~~~~~~~~~~~~~
+4 -4
MAINTAINERS
··· 10366 10366 L: linux-renesas-soc@vger.kernel.org 10367 10367 T: git git://linuxtv.org/media_tree.git 10368 10368 S: Supported 10369 - F: Documentation/devicetree/bindings/media/renesas,ceu.txt 10369 + F: Documentation/devicetree/bindings/media/renesas,ceu.yaml 10370 10370 F: drivers/media/platform/renesas-ceu.c 10371 10371 F: include/media/drv-intf/renesas-ceu.h 10372 10372 ··· 10404 10404 L: linux-renesas-soc@vger.kernel.org 10405 10405 T: git git://linuxtv.org/media_tree.git 10406 10406 S: Supported 10407 - F: Documentation/devicetree/bindings/media/renesas,csi2.txt 10407 + F: Documentation/devicetree/bindings/media/renesas,csi2.yaml 10408 10408 F: Documentation/devicetree/bindings/media/renesas,vin.txt 10409 10409 F: drivers/media/platform/rcar-vin/ 10410 10410 ··· 12696 12696 L: linux-pci@vger.kernel.org 12697 12697 L: linux-arm-kernel@lists.infradead.org 12698 12698 S: Maintained 12699 - F: Documentation/devicetree/bindings/pci/versatile.txt 12699 + F: Documentation/devicetree/bindings/pci/versatile.yaml 12700 12700 F: drivers/pci/controller/pci-versatile.c 12701 12701 12702 12702 PCI DRIVER FOR ARMADA 8K ··· 12729 12729 L: linux-pci@vger.kernel.org 12730 12730 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 12731 12731 S: Maintained 12732 - F: Documentation/devicetree/bindings/pci/host-generic-pci.txt 12732 + F: Documentation/devicetree/bindings/pci/host-generic-pci.yaml 12733 12733 F: drivers/pci/controller/pci-host-common.c 12734 12734 F: drivers/pci/controller/pci-host-generic.c 12735 12735
+1
arch/powerpc/Kconfig
··· 238 238 select NEED_DMA_MAP_STATE if PPC64 || NOT_COHERENT_CACHE 239 239 select NEED_SG_DMA_LENGTH 240 240 select OF 241 + select OF_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE 241 242 select OF_EARLY_FLATTREE 242 243 select OLD_SIGACTION if PPC32 243 244 select OLD_SIGSUSPEND
+4
drivers/of/Kconfig
··· 103 103 config OF_NUMA 104 104 bool 105 105 106 + config OF_DMA_DEFAULT_COHERENT 107 + # arches should select this if DMA is coherent by default for OF devices 108 + bool 109 + 106 110 endif # OF
+5 -1
drivers/of/address.c
··· 995 995 * @np: device node 996 996 * 997 997 * It returns true if "dma-coherent" property was found 998 - * for this device in DT. 998 + * for this device in the DT, or if DMA is coherent by 999 + * default for OF devices on the current platform. 999 1000 */ 1000 1001 bool of_dma_is_coherent(struct device_node *np) 1001 1002 { 1002 1003 struct device_node *node = of_node_get(np); 1004 + 1005 + if (IS_ENABLED(CONFIG_OF_DMA_DEFAULT_COHERENT)) 1006 + return true; 1003 1007 1004 1008 while (node) { 1005 1009 if (of_property_read_bool(node, "dma-coherent")) {
+25 -111
drivers/of/base.c
··· 135 135 } 136 136 #endif 137 137 138 - /* 139 - * Assumptions behind phandle_cache implementation: 140 - * - phandle property values are in a contiguous range of 1..n 141 - * 142 - * If the assumptions do not hold, then 143 - * - the phandle lookup overhead reduction provided by the cache 144 - * will likely be less 145 - */ 138 + #define OF_PHANDLE_CACHE_BITS 7 139 + #define OF_PHANDLE_CACHE_SZ BIT(OF_PHANDLE_CACHE_BITS) 146 140 147 - static struct device_node **phandle_cache; 148 - static u32 phandle_cache_mask; 141 + static struct device_node *phandle_cache[OF_PHANDLE_CACHE_SZ]; 142 + 143 + static u32 of_phandle_cache_hash(phandle handle) 144 + { 145 + return hash_32(handle, OF_PHANDLE_CACHE_BITS); 146 + } 149 147 150 148 /* 151 149 * Caller must hold devtree_lock. 152 150 */ 153 - static void __of_free_phandle_cache(void) 151 + void __of_phandle_cache_inv_entry(phandle handle) 154 152 { 155 - u32 cache_entries = phandle_cache_mask + 1; 156 - u32 k; 157 - 158 - if (!phandle_cache) 159 - return; 160 - 161 - for (k = 0; k < cache_entries; k++) 162 - of_node_put(phandle_cache[k]); 163 - 164 - kfree(phandle_cache); 165 - phandle_cache = NULL; 166 - } 167 - 168 - int of_free_phandle_cache(void) 169 - { 170 - unsigned long flags; 171 - 172 - raw_spin_lock_irqsave(&devtree_lock, flags); 173 - 174 - __of_free_phandle_cache(); 175 - 176 - raw_spin_unlock_irqrestore(&devtree_lock, flags); 177 - 178 - return 0; 179 - } 180 - #if !defined(CONFIG_MODULES) 181 - late_initcall_sync(of_free_phandle_cache); 182 - #endif 183 - 184 - /* 185 - * Caller must hold devtree_lock. 186 - */ 187 - void __of_free_phandle_cache_entry(phandle handle) 188 - { 189 - phandle masked_handle; 153 + u32 handle_hash; 190 154 struct device_node *np; 191 155 192 156 if (!handle) 193 157 return; 194 158 195 - masked_handle = handle & phandle_cache_mask; 159 + handle_hash = of_phandle_cache_hash(handle); 196 160 197 - if (phandle_cache) { 198 - np = phandle_cache[masked_handle]; 199 - if (np && handle == np->phandle) { 200 - of_node_put(np); 201 - phandle_cache[masked_handle] = NULL; 202 - } 203 - } 204 - } 205 - 206 - void of_populate_phandle_cache(void) 207 - { 208 - unsigned long flags; 209 - u32 cache_entries; 210 - struct device_node *np; 211 - u32 phandles = 0; 212 - 213 - raw_spin_lock_irqsave(&devtree_lock, flags); 214 - 215 - __of_free_phandle_cache(); 216 - 217 - for_each_of_allnodes(np) 218 - if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL) 219 - phandles++; 220 - 221 - if (!phandles) 222 - goto out; 223 - 224 - cache_entries = roundup_pow_of_two(phandles); 225 - phandle_cache_mask = cache_entries - 1; 226 - 227 - phandle_cache = kcalloc(cache_entries, sizeof(*phandle_cache), 228 - GFP_ATOMIC); 229 - if (!phandle_cache) 230 - goto out; 231 - 232 - for_each_of_allnodes(np) 233 - if (np->phandle && np->phandle != OF_PHANDLE_ILLEGAL) { 234 - of_node_get(np); 235 - phandle_cache[np->phandle & phandle_cache_mask] = np; 236 - } 237 - 238 - out: 239 - raw_spin_unlock_irqrestore(&devtree_lock, flags); 161 + np = phandle_cache[handle_hash]; 162 + if (np && handle == np->phandle) 163 + phandle_cache[handle_hash] = NULL; 240 164 } 241 165 242 166 void __init of_core_init(void) 243 167 { 244 168 struct device_node *np; 245 169 246 - of_populate_phandle_cache(); 247 170 248 171 /* Create the kset, and register existing nodes */ 249 172 mutex_lock(&of_mutex); ··· 176 253 pr_err("failed to register existing nodes\n"); 177 254 return; 178 255 } 179 - for_each_of_allnodes(np) 256 + for_each_of_allnodes(np) { 180 257 __of_attach_node_sysfs(np); 258 + if (np->phandle && !phandle_cache[of_phandle_cache_hash(np->phandle)]) 259 + phandle_cache[of_phandle_cache_hash(np->phandle)] = np; 260 + } 181 261 mutex_unlock(&of_mutex); 182 262 183 263 /* Symlink in /proc as required by userspace ABI */ ··· 1161 1235 { 1162 1236 struct device_node *np = NULL; 1163 1237 unsigned long flags; 1164 - phandle masked_handle; 1238 + u32 handle_hash; 1165 1239 1166 1240 if (!handle) 1167 1241 return NULL; 1168 1242 1243 + handle_hash = of_phandle_cache_hash(handle); 1244 + 1169 1245 raw_spin_lock_irqsave(&devtree_lock, flags); 1170 1246 1171 - masked_handle = handle & phandle_cache_mask; 1172 - 1173 - if (phandle_cache) { 1174 - if (phandle_cache[masked_handle] && 1175 - handle == phandle_cache[masked_handle]->phandle) 1176 - np = phandle_cache[masked_handle]; 1177 - if (np && of_node_check_flag(np, OF_DETACHED)) { 1178 - WARN_ON(1); /* did not uncache np on node removal */ 1179 - of_node_put(np); 1180 - phandle_cache[masked_handle] = NULL; 1181 - np = NULL; 1182 - } 1183 - } 1247 + if (phandle_cache[handle_hash] && 1248 + handle == phandle_cache[handle_hash]->phandle) 1249 + np = phandle_cache[handle_hash]; 1184 1250 1185 1251 if (!np) { 1186 1252 for_each_of_allnodes(np) 1187 1253 if (np->phandle == handle && 1188 1254 !of_node_check_flag(np, OF_DETACHED)) { 1189 - if (phandle_cache) { 1190 - /* will put when removed from cache */ 1191 - of_node_get(np); 1192 - phandle_cache[masked_handle] = np; 1193 - } 1255 + phandle_cache[handle_hash] = np; 1194 1256 break; 1195 1257 } 1196 1258 }
+1 -1
drivers/of/dynamic.c
··· 276 276 of_node_set_flag(np, OF_DETACHED); 277 277 278 278 /* race with of_find_node_by_phandle() prevented by devtree_lock */ 279 - __of_free_phandle_cache_entry(np->phandle); 279 + __of_phandle_cache_inv_entry(np->phandle); 280 280 } 281 281 282 282 /**
+1 -5
drivers/of/of_private.h
··· 84 84 int of_resolve_phandles(struct device_node *tree); 85 85 #endif 86 86 87 - #if defined(CONFIG_OF_DYNAMIC) 88 - void __of_free_phandle_cache_entry(phandle handle); 89 - #endif 87 + void __of_phandle_cache_inv_entry(phandle handle); 90 88 91 89 #if defined(CONFIG_OF_OVERLAY) 92 90 void of_overlay_mutex_lock(void); 93 91 void of_overlay_mutex_unlock(void); 94 - int of_free_phandle_cache(void); 95 - void of_populate_phandle_cache(void); 96 92 #else 97 93 static inline void of_overlay_mutex_lock(void) {}; 98 94 static inline void of_overlay_mutex_unlock(void) {};
-11
drivers/of/overlay.c
··· 974 974 goto err_free_overlay_changeset; 975 975 } 976 976 977 - of_populate_phandle_cache(); 978 - 979 977 ret = __of_changeset_apply_notify(&ovcs->cset); 980 978 if (ret) 981 979 pr_err("overlay apply changeset entry notify error %d\n", ret); ··· 1216 1218 1217 1219 list_del(&ovcs->ovcs_list); 1218 1220 1219 - /* 1220 - * Disable phandle cache. Avoids race condition that would arise 1221 - * from removing cache entry when the associated node is deleted. 1222 - */ 1223 - of_free_phandle_cache(); 1224 - 1225 1221 ret_apply = 0; 1226 1222 ret = __of_changeset_revert_entries(&ovcs->cset, &ret_apply); 1227 - 1228 - of_populate_phandle_cache(); 1229 - 1230 1223 if (ret) { 1231 1224 if (ret_apply) 1232 1225 devicetree_state_flags |= DTSF_REVERT_FAIL;
+5
scripts/dtc/checks.c
··· 691 691 return; 692 692 693 693 for_each_property(node, prop) { 694 + if (streq(prop->name, "phandle") 695 + || streq(prop->name, "linux,phandle")) { 696 + continue; 697 + } 698 + 694 699 if (!prop->val.val || !get_node_by_path(dti->dt, prop->val.val)) { 695 700 FAIL_PROP(c, dti, node, prop, "aliases property is not a valid node (%s)", 696 701 prop->val.val);
+4
scripts/dtc/dtc-parser.y
··· 2 2 /* 3 3 * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation. 2005. 4 4 */ 5 + %locations 6 + 5 7 %{ 6 8 #include <stdio.h> 7 9 #include <inttypes.h> ··· 18 16 srcpos_error((loc), "Error", __VA_ARGS__); \ 19 17 treesource_error = true; \ 20 18 } while (0) 19 + 20 + #define YYERROR_CALL(msg) yyerror(msg) 21 21 22 22 extern struct dt_info *parser_output; 23 23 extern bool treesource_error;
+1 -1
scripts/dtc/fstree.c
··· 30 30 31 31 tmpname = join_path(dirname, de->d_name); 32 32 33 - if (lstat(tmpname, &st) < 0) 33 + if (stat(tmpname, &st) < 0) 34 34 die("stat(%s): %s\n", tmpname, strerror(errno)); 35 35 36 36 if (S_ISREG(st.st_mode)) {
+7 -2
scripts/dtc/libfdt/fdt.c
··· 15 15 * that the given buffer contains what appears to be a flattened 16 16 * device tree with sane information in its header. 17 17 */ 18 - int fdt_ro_probe_(const void *fdt) 18 + int32_t fdt_ro_probe_(const void *fdt) 19 19 { 20 + uint32_t totalsize = fdt_totalsize(fdt); 21 + 20 22 if (fdt_magic(fdt) == FDT_MAGIC) { 21 23 /* Complete tree */ 22 24 if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) ··· 33 31 return -FDT_ERR_BADMAGIC; 34 32 } 35 33 36 - return 0; 34 + if (totalsize < INT32_MAX) 35 + return totalsize; 36 + else 37 + return -FDT_ERR_TRUNCATED; 37 38 } 38 39 39 40 static int check_off_(uint32_t hdrsize, uint32_t totalsize, uint32_t off)
+5 -3
scripts/dtc/libfdt/fdt_addresses.c
··· 14 14 static int fdt_cells(const void *fdt, int nodeoffset, const char *name) 15 15 { 16 16 const fdt32_t *c; 17 - int val; 17 + uint32_t val; 18 18 int len; 19 19 20 20 c = fdt_getprop(fdt, nodeoffset, name, &len); ··· 25 25 return -FDT_ERR_BADNCELLS; 26 26 27 27 val = fdt32_to_cpu(*c); 28 - if ((val <= 0) || (val > FDT_MAX_NCELLS)) 28 + if (val > FDT_MAX_NCELLS) 29 29 return -FDT_ERR_BADNCELLS; 30 30 31 - return val; 31 + return (int)val; 32 32 } 33 33 34 34 int fdt_address_cells(const void *fdt, int nodeoffset) ··· 36 36 int val; 37 37 38 38 val = fdt_cells(fdt, nodeoffset, "#address-cells"); 39 + if (val == 0) 40 + return -FDT_ERR_BADNCELLS; 39 41 if (val == -FDT_ERR_NOTFOUND) 40 42 return 2; 41 43 return val;
+19 -9
scripts/dtc/libfdt/fdt_overlay.c
··· 733 733 /* keep end marker to avoid strlen() */ 734 734 e = path + path_len; 735 735 736 - /* format: /<fragment-name>/__overlay__/<relative-subnode-path> */ 737 - 738 736 if (*path != '/') 739 737 return -FDT_ERR_BADVALUE; 740 738 741 739 /* get fragment name first */ 742 740 s = strchr(path + 1, '/'); 743 - if (!s) 744 - return -FDT_ERR_BADOVERLAY; 741 + if (!s) { 742 + /* Symbol refers to something that won't end 743 + * up in the target tree */ 744 + continue; 745 + } 745 746 746 747 frag_name = path + 1; 747 748 frag_name_len = s - path - 1; 748 749 749 750 /* verify format; safe since "s" lies in \0 terminated prop */ 750 751 len = sizeof("/__overlay__/") - 1; 751 - if ((e - s) < len || memcmp(s, "/__overlay__/", len)) 752 - return -FDT_ERR_BADOVERLAY; 753 - 754 - rel_path = s + len; 755 - rel_path_len = e - rel_path; 752 + if ((e - s) > len && (memcmp(s, "/__overlay__/", len) == 0)) { 753 + /* /<fragment-name>/__overlay__/<relative-subnode-path> */ 754 + rel_path = s + len; 755 + rel_path_len = e - rel_path - 1; 756 + } else if ((e - s) == len 757 + && (memcmp(s, "/__overlay__", len - 1) == 0)) { 758 + /* /<fragment-name>/__overlay__ */ 759 + rel_path = ""; 760 + rel_path_len = 0; 761 + } else { 762 + /* Symbol refers to something that won't end 763 + * up in the target tree */ 764 + continue; 765 + } 756 766 757 767 /* find the fragment index in which the symbol lies */ 758 768 ret = fdt_subnode_offset_namelen(fdto, 0, frag_name,
+6 -5
scripts/dtc/libfdt/fdt_ro.c
··· 33 33 34 34 const char *fdt_get_string(const void *fdt, int stroffset, int *lenp) 35 35 { 36 + int32_t totalsize = fdt_ro_probe_(fdt); 36 37 uint32_t absoffset = stroffset + fdt_off_dt_strings(fdt); 37 38 size_t len; 38 39 int err; 39 40 const char *s, *n; 40 41 41 - err = fdt_ro_probe_(fdt); 42 - if (err != 0) 42 + err = totalsize; 43 + if (totalsize < 0) 43 44 goto fail; 44 45 45 46 err = -FDT_ERR_BADOFFSET; 46 - if (absoffset >= fdt_totalsize(fdt)) 47 + if (absoffset >= totalsize) 47 48 goto fail; 48 - len = fdt_totalsize(fdt) - absoffset; 49 + len = totalsize - absoffset; 49 50 50 51 if (fdt_magic(fdt) == FDT_MAGIC) { 51 52 if (stroffset < 0) ··· 289 288 const char *nameptr; 290 289 int err; 291 290 292 - if (((err = fdt_ro_probe_(fdt)) != 0) 291 + if (((err = fdt_ro_probe_(fdt)) < 0) 293 292 || ((err = fdt_check_node_offset_(fdt, nodeoffset)) < 0)) 294 293 goto fail; 295 294
+2 -2
scripts/dtc/libfdt/libfdt.h
··· 136 136 137 137 static inline void fdt32_st(void *property, uint32_t value) 138 138 { 139 - uint8_t *bp = property; 139 + uint8_t *bp = (uint8_t *)property; 140 140 141 141 bp[0] = value >> 24; 142 142 bp[1] = (value >> 16) & 0xff; ··· 160 160 161 161 static inline void fdt64_st(void *property, uint64_t value) 162 162 { 163 - uint8_t *bp = property; 163 + uint8_t *bp = (uint8_t *)property; 164 164 165 165 bp[0] = value >> 56; 166 166 bp[1] = (value >> 48) & 0xff;
+6 -6
scripts/dtc/libfdt/libfdt_internal.h
··· 10 10 #define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) 11 11 #define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE)) 12 12 13 - int fdt_ro_probe_(const void *fdt); 14 - #define FDT_RO_PROBE(fdt) \ 15 - { \ 16 - int err_; \ 17 - if ((err_ = fdt_ro_probe_(fdt)) != 0) \ 18 - return err_; \ 13 + int32_t fdt_ro_probe_(const void *fdt); 14 + #define FDT_RO_PROBE(fdt) \ 15 + { \ 16 + int32_t totalsize_; \ 17 + if ((totalsize_ = fdt_ro_probe_(fdt)) < 0) \ 18 + return totalsize_; \ 19 19 } 20 20 21 21 int fdt_check_node_offset_(const void *fdt, int offset);
+1 -2
scripts/dtc/livetree.c
··· 526 526 p = strchr(path, '/'); 527 527 528 528 for_each_child(tree, child) { 529 - if (p && (strlen(child->name) == p-path) && 530 - strprefixeq(path, p - path, child->name)) 529 + if (p && strprefixeq(path, p - path, child->name)) 531 530 return get_node_by_path(child, p+1); 532 531 else if (!p && streq(path, child->name)) 533 532 return child;
+2 -1
scripts/dtc/util.c
··· 13 13 #include <stdarg.h> 14 14 #include <string.h> 15 15 #include <assert.h> 16 + #include <inttypes.h> 16 17 17 18 #include <errno.h> 18 19 #include <fcntl.h> ··· 394 393 395 394 printf(" = <"); 396 395 for (i = 0, len /= 4; i < len; i++) 397 - printf("0x%08x%s", fdt32_to_cpu(cell[i]), 396 + printf("0x%08" PRIx32 "%s", fdt32_to_cpu(cell[i]), 398 397 i < (len - 1) ? " " : ""); 399 398 printf(">"); 400 399 } else {
+4
scripts/dtc/util.h
··· 12 12 */ 13 13 14 14 #ifdef __GNUC__ 15 + #ifdef __clang__ 15 16 #define PRINTF(i, j) __attribute__((format (printf, i, j))) 17 + #else 18 + #define PRINTF(i, j) __attribute__((format (gnu_printf, i, j))) 19 + #endif 16 20 #define NORETURN __attribute__((noreturn)) 17 21 #else 18 22 #define PRINTF(i, j)
+1 -1
scripts/dtc/version_gen.h
··· 1 - #define DTC_VERSION "DTC 1.5.0-g702c1b6c" 1 + #define DTC_VERSION "DTC 1.5.0-gc40aeb60"