The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/leds/leds-bcm6328.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
    2 %YAML 1.2
    3 ---
    4 $id: http://devicetree.org/schemas/leds/leds-bcm6328.yaml#
    5 $schema: http://devicetree.org/meta-schemas/core.yaml#
    6 
    7 title: LEDs connected to Broadcom BCM6328 controller
    8 
    9 maintainers:
   10   - Álvaro Fernández Rojas <noltari@gmail.com>
   11 
   12 description: |
   13   This controller is present on BCM6318, BCM6328, BCM6362 and BCM63268.
   14   In these SoCs it's possible to control LEDs both as GPIOs or by hardware.
   15   However, on some devices there are Serial LEDs (LEDs connected to a 74x164
   16   controller), which can either be controlled by software (exporting the 74x164
   17   as spi-gpio. See
   18   Documentation/devicetree/bindings/gpio/fairchild,74hc595.yaml), or by hardware
   19   using this driver.
   20   Some of these Serial LEDs are hardware controlled (e.g. ethernet LEDs) and
   21   exporting the 74x164 as spi-gpio prevents those LEDs to be hardware
   22   controlled, so the only chance to keep them working is by using this driver.
   23 
   24   BCM6328 LED controller has a HWDIS register, which controls whether a LED
   25   should be controlled by a hardware signal instead of the MODE register value,
   26   with 0 meaning hardware control enabled and 1 hardware control disabled. This
   27   is usually 1:1 for hardware to LED signals, but through the activity/link
   28   registers you have some limited control over rerouting the LEDs (as
   29   explained later in brcm,link-signal-sources). Even if a LED is hardware
   30   controlled you are still able to make it blink or light it up if it isn't,
   31   but you can't turn it off if the hardware decides to light it up. For this
   32   reason, hardware controlled LEDs aren't registered as LED class devices.
   33 
   34   Each LED is represented as a sub-node of the brcm,bcm6328-leds device.
   35 
   36 properties:
   37   compatible:
   38     const: brcm,bcm6328-leds
   39 
   40   reg:
   41     maxItems: 1
   42 
   43   brcm,serial-leds:
   44     type: boolean
   45     description: Enables Serial LEDs.
   46 
   47   brcm,serial-mux:
   48     type: boolean
   49     description: Enables Serial LEDs multiplexing.
   50 
   51   brcm,serial-clk-low:
   52     type: boolean
   53     description: Makes clock signal active low.
   54 
   55   brcm,serial-dat-low:
   56     type: boolean
   57     description: Makes data signal active low.
   58 
   59   brcm,serial-shift-inv:
   60     type: boolean
   61     description: Inverts Serial LEDs shift direction.
   62 
   63   "#address-cells":
   64     const: 1
   65 
   66   "#size-cells":
   67     const: 0
   68 
   69 patternProperties:
   70   "@[a-f0-9]+$":
   71     type: object
   72 
   73     $ref: common.yaml#
   74 
   75     properties:
   76       reg:
   77         items:
   78           - maximum: 23
   79         description: LED pin number (only LEDs 0 to 23 are valid).
   80 
   81       active-low:
   82         type: boolean
   83         description: Makes LED active low.
   84 
   85       brcm,hardware-controlled:
   86         type: boolean
   87         description: Makes this LED hardware controlled.
   88 
   89       brcm,link-signal-sources:
   90         $ref: /schemas/types.yaml#/definitions/uint32-array
   91         minItems: 1
   92         maxItems: 4
   93         description: >
   94           An array of hardware link signal sources. Up to four link hardware
   95           signals can get muxed into these LEDs. Only valid for LEDs 0 to 7,
   96           where LED signals 0 to 3 may be muxed to LEDs 0 to 3, and signals 4 to
   97           7 may be muxed to LEDs 4 to 7. A signal can be muxed to more than one
   98           LED, and one LED can have more than one source signal.
   99 
  100       brcm,activity-signal-sources:
  101         $ref: /schemas/types.yaml#/definitions/uint32-array
  102         minItems: 1
  103         maxItems: 4
  104         description: >
  105           An array of hardware activity signal sources. Up to four activity
  106           hardware signals can get muxed into these LEDs. Only valid for LEDs 0
  107           to 7, where LED signals 0 to 3 may be muxed to LEDs 0 to 3, and
  108           signals 4 to 7 may be muxed to LEDs 4 to 7. A signal can be muxed to
  109           more than one LED, and one LED can have more than one source signal.
  110 
  111     required:
  112       - reg
  113 
  114     unevaluatedProperties: false
  115 
  116 required:
  117   - reg
  118   - "#address-cells"
  119   - "#size-cells"
  120 
  121 additionalProperties: false
  122 
  123 examples:
  124   - |
  125     /* BCM6328 with 4 EPHY LEDs */
  126     led-controller@10000800 {
  127         compatible = "brcm,bcm6328-leds";
  128         #address-cells = <1>;
  129         #size-cells = <0>;
  130         reg = <0x10000800 0x24>;
  131 
  132         alarm_red@2 {
  133             reg = <2>;
  134             active-low;
  135             label = "red:alarm";
  136         };
  137 
  138         inet_green@3 {
  139             reg = <3>;
  140             active-low;
  141             label = "green:inet";
  142         };
  143 
  144         power_green@4 {
  145             reg = <4>;
  146             active-low;
  147             label = "green:power";
  148             default-state = "on";
  149         };
  150 
  151         ephy0_spd@17 {
  152             reg = <17>;
  153             brcm,hardware-controlled;
  154         };
  155 
  156         ephy1_spd@18 {
  157             reg = <18>;
  158             brcm,hardware-controlled;
  159         };
  160 
  161         ephy2_spd@19 {
  162             reg = <19>;
  163             brcm,hardware-controlled;
  164         };
  165 
  166         ephy3_spd@20 {
  167             reg = <20>;
  168             brcm,hardware-controlled;
  169         };
  170     };
  171   - |
  172     /* BCM63268 with Serial/GPHY0 LEDs */
  173     led-controller@10001900 {
  174         compatible = "brcm,bcm6328-leds";
  175         #address-cells = <1>;
  176         #size-cells = <0>;
  177         reg = <0x10001900 0x24>;
  178         brcm,serial-leds;
  179         brcm,serial-dat-low;
  180         brcm,serial-shift-inv;
  181 
  182         gphy0_spd0@0 {
  183             reg = <0>;
  184             brcm,hardware-controlled;
  185             brcm,link-signal-sources = <0>;
  186         };
  187 
  188         gphy0_spd1@1 {
  189             reg = <1>;
  190             brcm,hardware-controlled;
  191             brcm,link-signal-sources = <1>;
  192         };
  193 
  194         inet_red@2 {
  195             reg = <2>;
  196             active-low;
  197             label = "red:inet";
  198         };
  199 
  200         dsl_green@3 {
  201             reg = <3>;
  202             active-low;
  203             label = "green:dsl";
  204         };
  205 
  206         usb_green@4 {
  207             reg = <4>;
  208             active-low;
  209             label = "green:usb";
  210         };
  211 
  212         wps_green@7 {
  213             reg = <7>;
  214             active-low;
  215             label = "green:wps";
  216         };
  217 
  218         inet_green@8 {
  219             reg = <8>;
  220             active-low;
  221             label = "green:inet";
  222         };
  223 
  224         ephy0_act@9 {
  225             reg = <9>;
  226             brcm,hardware-controlled;
  227         };
  228 
  229         ephy1_act@10 {
  230             reg = <10>;
  231             brcm,hardware-controlled;
  232         };
  233 
  234         ephy2_act@11 {
  235             reg = <11>;
  236             brcm,hardware-controlled;
  237         };
  238 
  239         gphy0_act@12 {
  240             reg = <12>;
  241             brcm,hardware-controlled;
  242         };
  243 
  244         ephy0_spd@13 {
  245             reg = <13>;
  246             brcm,hardware-controlled;
  247         };
  248 
  249         ephy1_spd@14 {
  250             reg = <14>;
  251             brcm,hardware-controlled;
  252         };
  253 
  254         ephy2_spd@15 {
  255             reg = <15>;
  256             brcm,hardware-controlled;
  257         };
  258 
  259         power_green@20 {
  260             reg = <20>;
  261             active-low;
  262             label = "green:power";
  263             default-state = "on";
  264         };
  265     };
  266   - |
  267     /* BCM6362 with 1 LED for each EPHY */
  268     led-controller@10001900 {
  269         compatible = "brcm,bcm6328-leds";
  270         #address-cells = <1>;
  271         #size-cells = <0>;
  272         reg = <0x10001900 0x24>;
  273 
  274         usb@0 {
  275             reg = <0>;
  276             brcm,hardware-controlled;
  277             brcm,link-signal-sources = <0>;
  278             brcm,activity-signal-sources = <0>;
  279             /* USB link/activity routed to USB LED */
  280         };
  281 
  282         inet@1 {
  283             reg = <1>;
  284             brcm,hardware-controlled;
  285             brcm,activity-signal-sources = <1>;
  286             /* INET activity routed to INET LED */
  287         };
  288 
  289         ephy0@4 {
  290             reg = <4>;
  291             brcm,hardware-controlled;
  292             brcm,link-signal-sources = <4>;
  293             /* EPHY0 link routed to EPHY0 LED */
  294         };
  295 
  296         ephy1@5 {
  297             reg = <5>;
  298             brcm,hardware-controlled;
  299             brcm,link-signal-sources = <5>;
  300             /* EPHY1 link routed to EPHY1 LED */
  301         };
  302 
  303         ephy2@6 {
  304             reg = <6>;
  305             brcm,hardware-controlled;
  306             brcm,link-signal-sources = <6>;
  307             /* EPHY2 link routed to EPHY2 LED */
  308         };
  309 
  310         ephy3@7 {
  311             reg = <7>;
  312             brcm,hardware-controlled;
  313             brcm,link-signal-sources = <7>;
  314             /* EPHY3 link routed to EPHY3 LED */
  315         };
  316 
  317         power_green@20 {
  318             reg = <20>;
  319             active-low;
  320             label = "green:power";
  321             default-state = "on";
  322         };
  323     };
  324   - |
  325     /* BCM6362 with 1 LED for all EPHYs */
  326     led-controller@10001900 {
  327         compatible = "brcm,bcm6328-leds";
  328         #address-cells = <1>;
  329         #size-cells = <0>;
  330         reg = <0x10001900 0x24>;
  331 
  332         usb@0 {
  333             reg = <0>;
  334             brcm,hardware-controlled;
  335             brcm,link-signal-sources = <0 1>;
  336             brcm,activity-signal-sources = <0 1>;
  337             /* USB/INET link/activity routed to USB LED */
  338         };
  339 
  340         ephy@4 {
  341             reg = <4>;
  342             brcm,hardware-controlled;
  343             brcm,link-signal-sources = <4 5 6 7>;
  344             /* EPHY0/1/2/3 link routed to EPHY0 LED */
  345         };
  346 
  347         power_green@20 {
  348             reg = <20>;
  349             active-low;
  350             label = "green:power";
  351             default-state = "on";
  352         };
  353     };
  354   - |
  355     /* BCM6362 with EPHY LEDs swapped */
  356     led-controller@10001900 {
  357         compatible = "brcm,bcm6328-leds";
  358         #address-cells = <1>;
  359         #size-cells = <0>;
  360         reg = <0x10001900 0x24>;
  361 
  362         usb@0 {
  363             reg = <0>;
  364             brcm,hardware-controlled;
  365             brcm,link-signal-sources = <0>;
  366             brcm,activity-signal-sources = <0 1>;
  367             /* USB link/act and INET act routed to USB LED */
  368         };
  369 
  370         ephy0@4 {
  371             reg = <4>;
  372             brcm,hardware-controlled;
  373             brcm,link-signal-sources = <7>;
  374             /* EPHY3 link routed to EPHY0 LED */
  375         };
  376 
  377         ephy1@5 {
  378             reg = <5>;
  379             brcm,hardware-controlled;
  380             brcm,link-signal-sources = <6>;
  381             /* EPHY2 link routed to EPHY1 LED */
  382         };
  383 
  384         ephy2@6 {
  385             reg = <6>;
  386             brcm,hardware-controlled;
  387             brcm,link-signal-sources = <5>;
  388             /* EPHY1 link routed to EPHY2 LED */
  389         };
  390 
  391         ephy3@7 {
  392             reg = <7>;
  393             brcm,hardware-controlled;
  394             brcm,link-signal-sources = <4>;
  395             /* EPHY0 link routed to EPHY3 LED */
  396         };
  397 
  398         power_green@20 {
  399             reg = <20>;
  400             active-low;
  401             label = "green:power";
  402             default-state = "on";
  403         };
  404     };

Cache object: bb05e8f38d3397b6945a90764dcb2816


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.