Sean Anderson | 4a3390f | 2020-06-24 06:41:12 -0400 | [diff] [blame] | 1 | Simple Power-Managed Bus |
| 2 | ======================== |
| 3 | |
| 4 | A Simple Power-Managed Bus is a transparent bus that doesn't need a real |
| 5 | driver, as it's typically initialized by the boot loader. |
| 6 | |
| 7 | However, its bus controller is part of a PM domain, or under the control of a |
| 8 | functional clock. Hence, the bus controller's PM domain and/or clock must be |
| 9 | enabled for child devices connected to the bus (either on-SoC or externally) |
| 10 | to function. |
| 11 | |
| 12 | While "simple-pm-bus" follows the "simple-bus" set of properties, as specified |
| 13 | in the Devicetree Specification, it is not an extension of "simple-bus". |
| 14 | |
| 15 | |
| 16 | Required properties: |
| 17 | - compatible: Must contain at least "simple-pm-bus". |
| 18 | Must not contain "simple-bus". |
| 19 | It's recommended to let this be preceded by one or more |
| 20 | vendor-specific compatible values. |
| 21 | - #address-cells, #size-cells, ranges: Must describe the mapping between |
| 22 | parent address and child address spaces. |
| 23 | |
| 24 | Optional platform-specific properties for clock or PM domain control (at least |
| 25 | one of them is required): |
| 26 | - clocks: Must contain a reference to the functional clock(s), |
| 27 | - power-domains: Must contain a reference to the PM domain. |
| 28 | Please refer to the binding documentation for the clock and/or PM domain |
| 29 | providers for more details. |
| 30 | |
| 31 | |
| 32 | Example: |
| 33 | |
| 34 | bsc: bus@fec10000 { |
| 35 | compatible = "renesas,bsc-sh73a0", "renesas,bsc", |
| 36 | "simple-pm-bus"; |
| 37 | #address-cells = <1>; |
| 38 | #size-cells = <1>; |
| 39 | ranges = <0 0 0x20000000>; |
| 40 | reg = <0xfec10000 0x400>; |
| 41 | interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; |
| 42 | clocks = <&zb_clk>; |
| 43 | power-domains = <&pd_a4s>; |
| 44 | }; |