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

dt-bindings: leds: Add Allwinner A100 LED controller

The Allwinner A100, R329, and D1 SoCs contain an LED controller designed
to drive a series of RGB LED pixels. It supports PIO and DMA transfers,
and has configurable timing and pixel format. All three implementations
appear to be identical, so use the oldest as the fallback compatible.

Acked-by: Guo Ren <guoren@kernel.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Tested-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20231029212738.7871-2-samuel@sholland.org
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Samuel Holland and committed by
Lee Jones
65dcdf49 1de1da7b

+137
+137
Documentation/devicetree/bindings/leds/allwinner,sun50i-a100-ledc.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/leds/allwinner,sun50i-a100-ledc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Allwinner A100 LED Controller 8 + 9 + maintainers: 10 + - Samuel Holland <samuel@sholland.org> 11 + 12 + description: 13 + The LED controller found in Allwinner sunxi SoCs uses a one-wire serial 14 + interface to drive up to 1024 RGB LEDs. 15 + 16 + properties: 17 + compatible: 18 + oneOf: 19 + - const: allwinner,sun50i-a100-ledc 20 + - items: 21 + - enum: 22 + - allwinner,sun20i-d1-ledc 23 + - allwinner,sun50i-r329-ledc 24 + - const: allwinner,sun50i-a100-ledc 25 + 26 + reg: 27 + maxItems: 1 28 + 29 + "#address-cells": 30 + const: 1 31 + 32 + "#size-cells": 33 + const: 0 34 + 35 + interrupts: 36 + maxItems: 1 37 + 38 + clocks: 39 + items: 40 + - description: Bus clock 41 + - description: Module clock 42 + 43 + clock-names: 44 + items: 45 + - const: bus 46 + - const: mod 47 + 48 + resets: 49 + maxItems: 1 50 + 51 + dmas: 52 + maxItems: 1 53 + description: TX DMA channel 54 + 55 + dma-names: 56 + const: tx 57 + 58 + allwinner,pixel-format: 59 + description: Pixel format (subpixel transmission order), default is "grb" 60 + enum: 61 + - bgr 62 + - brg 63 + - gbr 64 + - grb 65 + - rbg 66 + - rgb 67 + 68 + allwinner,t0h-ns: 69 + default: 336 70 + description: Length of high pulse when transmitting a "0" bit 71 + 72 + allwinner,t0l-ns: 73 + default: 840 74 + description: Length of low pulse when transmitting a "0" bit 75 + 76 + allwinner,t1h-ns: 77 + default: 882 78 + description: Length of high pulse when transmitting a "1" bit 79 + 80 + allwinner,t1l-ns: 81 + default: 294 82 + description: Length of low pulse when transmitting a "1" bit 83 + 84 + allwinner,treset-ns: 85 + default: 300000 86 + description: Minimum delay between transmission frames 87 + 88 + patternProperties: 89 + "^multi-led@[0-9a-f]+$": 90 + type: object 91 + $ref: leds-class-multicolor.yaml# 92 + unevaluatedProperties: false 93 + properties: 94 + reg: 95 + minimum: 0 96 + maximum: 1023 97 + description: Index of the LED in the series (must be contiguous) 98 + 99 + required: 100 + - reg 101 + 102 + required: 103 + - compatible 104 + - reg 105 + - interrupts 106 + - clocks 107 + - clock-names 108 + - resets 109 + 110 + additionalProperties: false 111 + 112 + examples: 113 + - | 114 + #include <dt-bindings/interrupt-controller/irq.h> 115 + #include <dt-bindings/leds/common.h> 116 + 117 + ledc: led-controller@2008000 { 118 + compatible = "allwinner,sun20i-d1-ledc", 119 + "allwinner,sun50i-a100-ledc"; 120 + reg = <0x2008000 0x400>; 121 + interrupts = <36 IRQ_TYPE_LEVEL_HIGH>; 122 + clocks = <&ccu 12>, <&ccu 34>; 123 + clock-names = "bus", "mod"; 124 + resets = <&ccu 12>; 125 + dmas = <&dma 42>; 126 + dma-names = "tx"; 127 + #address-cells = <1>; 128 + #size-cells = <0>; 129 + 130 + multi-led@0 { 131 + reg = <0x0>; 132 + color = <LED_COLOR_ID_RGB>; 133 + function = LED_FUNCTION_INDICATOR; 134 + }; 135 + }; 136 + 137 + ...