181 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | |
| %YAML 1.2
 | |
| ---
 | |
| $id: http://devicetree.org/schemas/pwm/pwm-amlogic.yaml#
 | |
| $schema: http://devicetree.org/meta-schemas/core.yaml#
 | |
| 
 | |
| title: Amlogic PWM
 | |
| 
 | |
| maintainers:
 | |
|   - Heiner Kallweit <hkallweit1@gmail.com>
 | |
| 
 | |
| properties:
 | |
|   compatible:
 | |
|     oneOf:
 | |
|       - enum:
 | |
|           - amlogic,meson8b-pwm
 | |
|           - amlogic,meson-gxbb-pwm
 | |
|           - amlogic,meson-gxbb-ao-pwm
 | |
|           - amlogic,meson-axg-ee-pwm
 | |
|           - amlogic,meson-axg-ao-pwm
 | |
|           - amlogic,meson-g12a-ee-pwm
 | |
|           - amlogic,meson-g12a-ao-pwm-ab
 | |
|           - amlogic,meson-g12a-ao-pwm-cd
 | |
|         deprecated: true
 | |
|       - items:
 | |
|           - const: amlogic,meson-gx-pwm
 | |
|           - const: amlogic,meson-gxbb-pwm
 | |
|         deprecated: true
 | |
|       - items:
 | |
|           - const: amlogic,meson-gx-ao-pwm
 | |
|           - const: amlogic,meson-gxbb-ao-pwm
 | |
|         deprecated: true
 | |
|       - items:
 | |
|           - const: amlogic,meson8-pwm
 | |
|           - const: amlogic,meson8b-pwm
 | |
|         deprecated: true
 | |
|       - enum:
 | |
|           - amlogic,meson8-pwm-v2
 | |
|           - amlogic,meson-s4-pwm
 | |
|       - items:
 | |
|           - enum:
 | |
|               - amlogic,meson-a1-pwm
 | |
|           - const: amlogic,meson-s4-pwm
 | |
|       - items:
 | |
|           - enum:
 | |
|               - amlogic,meson8b-pwm-v2
 | |
|               - amlogic,meson-gxbb-pwm-v2
 | |
|               - amlogic,meson-axg-pwm-v2
 | |
|               - amlogic,meson-g12-pwm-v2
 | |
|           - const: amlogic,meson8-pwm-v2
 | |
| 
 | |
|   reg:
 | |
|     maxItems: 1
 | |
| 
 | |
|   clocks:
 | |
|     minItems: 1
 | |
|     maxItems: 4
 | |
| 
 | |
|   clock-names:
 | |
|     minItems: 1
 | |
|     maxItems: 2
 | |
| 
 | |
|   power-domains:
 | |
|     maxItems: 1
 | |
| 
 | |
|   "#pwm-cells":
 | |
|     const: 3
 | |
| 
 | |
| required:
 | |
|   - compatible
 | |
|   - reg
 | |
| 
 | |
| allOf:
 | |
|   - $ref: pwm.yaml#
 | |
| 
 | |
|   - if:
 | |
|       properties:
 | |
|         compatible:
 | |
|           contains:
 | |
|             enum:
 | |
|               - amlogic,meson8-pwm
 | |
|               - amlogic,meson8b-pwm
 | |
|               - amlogic,meson-gxbb-pwm
 | |
|               - amlogic,meson-gxbb-ao-pwm
 | |
|               - amlogic,meson-axg-ee-pwm
 | |
|               - amlogic,meson-axg-ao-pwm
 | |
|               - amlogic,meson-g12a-ee-pwm
 | |
|               - amlogic,meson-g12a-ao-pwm-ab
 | |
|               - amlogic,meson-g12a-ao-pwm-cd
 | |
|     then:
 | |
|       # Obsolete historic bindings tied to the driver implementation
 | |
|       # The clocks provided here are meant to be matched with the input
 | |
|       # known (hard-coded) in the driver and used to select pwm clock
 | |
|       # source. Currently, the linux driver ignores this.
 | |
|       # This is kept to maintain ABI backward compatibility.
 | |
|       properties:
 | |
|         clocks:
 | |
|           maxItems: 2
 | |
|         clock-names:
 | |
|           oneOf:
 | |
|             - items:
 | |
|                 - enum: [clkin0, clkin1]
 | |
|             - items:
 | |
|                 - const: clkin0
 | |
|                 - const: clkin1
 | |
| 
 | |
|   # Newer binding where clock describe the actual clock inputs of the pwm
 | |
|   # block. These are necessary but some inputs may be grounded.
 | |
|   - if:
 | |
|       properties:
 | |
|         compatible:
 | |
|           contains:
 | |
|             enum:
 | |
|               - amlogic,meson8-pwm-v2
 | |
|     then:
 | |
|       properties:
 | |
|         clocks:
 | |
|           minItems: 1
 | |
|           items:
 | |
|             - description: input clock 0 of the pwm block
 | |
|             - description: input clock 1 of the pwm block
 | |
|             - description: input clock 2 of the pwm block
 | |
|             - description: input clock 3 of the pwm block
 | |
|         clock-names: false
 | |
|       required:
 | |
|         - clocks
 | |
| 
 | |
|   # Newer IP block take a single input per channel, instead of 4 inputs
 | |
|   # for both channels
 | |
|   - if:
 | |
|       properties:
 | |
|         compatible:
 | |
|           contains:
 | |
|             enum:
 | |
|               - amlogic,meson-s4-pwm
 | |
|     then:
 | |
|       properties:
 | |
|         clocks:
 | |
|           items:
 | |
|             - description: input clock of PWM channel A
 | |
|             - description: input clock of PWM channel B
 | |
|         clock-names: false
 | |
|       required:
 | |
|         - clocks
 | |
| 
 | |
|   - if:
 | |
|       properties:
 | |
|         compatible:
 | |
|           contains:
 | |
|             enum:
 | |
|               - amlogic,meson-a1-pwm
 | |
|     then:
 | |
|       required:
 | |
|         - power-domains
 | |
| 
 | |
| additionalProperties: false
 | |
| 
 | |
| examples:
 | |
|   - |
 | |
|     pwm@8550 {
 | |
|       compatible = "amlogic,meson-gxbb-pwm";
 | |
|       reg = <0x08550 0x10>;
 | |
|       clocks = <&xtal>, <&xtal>;
 | |
|       clock-names = "clkin0", "clkin1";
 | |
|       #pwm-cells = <3>;
 | |
|     };    
 | |
|   - |
 | |
|     pwm@2000 {
 | |
|       compatible = "amlogic,meson8-pwm-v2";
 | |
|       reg = <0x1000 0x10>;
 | |
|       clocks = <&xtal>, <0>, <&fdiv4>, <&fdiv5>;
 | |
|       #pwm-cells = <3>;
 | |
|     };    
 | |
|   - |
 | |
|     pwm@1000 {
 | |
|       compatible = "amlogic,meson-s4-pwm";
 | |
|       reg = <0x1000 0x10>;
 | |
|       clocks = <&pwm_src_a>, <&pwm_src_b>;
 | |
|       #pwm-cells = <3>;
 | |
|     };    
 |