Commit f5c31bcf authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull LED updates from Lee Jones:
 "Core Framework:
   - Introduce ExpressWire library

  New Drivers:
   - Add support for ON Semiconductor NCP5623 RGB LED Driver

  New Device Support:
   - Add support for PM660L to Qualcomm's LPG driver

  New Functionality:
   - Dynamically load modules required for the default-trigger
   - Add some support for suspend and resume
   - Allow LEDs to remain lit during suspend

  Fix-ups:
   - Device Tree binding adaptions/conversions/creation
   - Fix include lists; alphabetise, remove unused, explicitly add used
   - Add new led_match_default_trigger to avoid duplication
   - Add module alias' to aid auto-loading
   - Default to hw_control if no others are specified
   - De-bloat the supported link speed attribute lists
   - Remove superfluous code and simplify overall
   - Constify some variables

  Bug Fixes:
   - Prevent kernel panic when renaming the net interface
   - Fix Kconfig related build errors
   - Ensure mutexes are unlocked prior to destroying them
   - Provide clean-up between state changes to avoid invalid state
   - Fix some broken kernel-doc headers"

* tag 'leds-next-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds: (41 commits)
  leds: ncp5623: Add MS suffix to time defines
  leds: Add NCP5623 multi-led driver
  dt-bindings: leds: Add NCP5623 multi-LED Controller
  leds: mlxreg: Drop an excess struct mlxreg_led_data member
  leds: leds-mlxcpld: Fix struct mlxcpld_led_priv member name
  leds: lm3601x: Fix struct lm3601_led kernel-doc warnings
  leds: Fix ifdef check for gpio_led_register_device()
  dt-bindings: leds: qcom-lpg: Narrow nvmem for other variants
  dt-bindings: leds: qcom-lpg: Drop redundant qcom,pm8550-pwm in if:then:
  dt-bindings: leds: Add LED_FUNCTION_WAN_ONLINE for Internet access
  leds: sgm3140: Add missing timer cleanup and flash gpio control
  leds: expresswire: Don't depend on NEW_LEDS
  Revert "leds: Only descend into leds directory when CONFIG_NEW_LEDS is set"
  leds: aw2013: Unlock mutex before destroying it
  leds: qcom-lpg: Add QCOM_PBS dependency
  leds: rgb: leds-group-multicolor: Allow LEDs to stay on in suspend
  leds: trigger: netdev: Fix kernel panic on interface rename trig notify
  leds: qcom-lpg: Add PM660L configuration and compatible
  leds: spi-byte: Use devm_led_classdev_register_ext()
  leds: pca963x: Add support for suspend and resume
  ...
parents f3d8f29d 45066c4b
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -88,6 +88,8 @@ Description:
		speed of 10MBps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 10Mbps link speed.

What:		/sys/class/leds/<led>/link_100
Date:		Jun 2023
KernelVersion:	6.5
@@ -101,6 +103,8 @@ Description:
		speed of 100Mbps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 100Mbps link speed.

What:		/sys/class/leds/<led>/link_1000
Date:		Jun 2023
KernelVersion:	6.5
@@ -114,6 +118,8 @@ Description:
		speed of 1000Mbps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 1000Mbps link speed.

What:		/sys/class/leds/<led>/link_2500
Date:		Nov 2023
KernelVersion:	6.8
@@ -127,6 +133,8 @@ Description:
		speed of 2500Mbps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 2500Mbps link speed.

What:		/sys/class/leds/<led>/link_5000
Date:		Nov 2023
KernelVersion:	6.8
@@ -140,6 +148,8 @@ Description:
		speed of 5000Mbps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 5000Mbps link speed.

What:		/sys/class/leds/<led>/link_10000
Date:		Nov 2023
KernelVersion:	6.8
@@ -153,6 +163,8 @@ Description:
		speed of 10000Mbps of the named network device.
		Setting this value also immediately changes the LED state.

		Present only if the named network device supports 10000Mbps link speed.

What:		/sys/class/leds/<led>/half_duplex
Date:		Jun 2023
KernelVersion:	6.5
+7 −7
Original line number Diff line number Diff line
What:		/sys/class/leds/<led>/ttyname
What:		/sys/class/leds/<tty_led>/ttyname
Date:		Dec 2020
KernelVersion:	5.10
Contact:	linux-leds@vger.kernel.org
Description:
		Specifies the tty device name of the triggering tty

What:		/sys/class/leds/<led>/rx
What:		/sys/class/leds/<tty_led>/rx
Date:		February 2024
KernelVersion:	6.8
Description:
@@ -13,7 +13,7 @@ Description:
		If set to 0, the LED will not blink on reception.
		If set to 1 (default), the LED will blink on reception.

What:		/sys/class/leds/<led>/tx
What:		/sys/class/leds/<tty_led>/tx
Date:		February 2024
KernelVersion:	6.8
Description:
@@ -21,7 +21,7 @@ Description:
		If set to 0, the LED will not blink on transmission.
		If set to 1 (default), the LED will blink on transmission.

What:		/sys/class/leds/<led>/cts
What:		/sys/class/leds/<tty_led>/cts
Date:		February 2024
KernelVersion:	6.8
Description:
@@ -31,7 +31,7 @@ Description:
		If set to 0 (default), the LED will not evaluate CTS.
		If set to 1, the LED will evaluate CTS.

What:		/sys/class/leds/<led>/dsr
What:		/sys/class/leds/<tty_led>/dsr
Date:		February 2024
KernelVersion:	6.8
Description:
@@ -41,7 +41,7 @@ Description:
		If set to 0 (default), the LED will not evaluate DSR.
		If set to 1, the LED will evaluate DSR.

What:		/sys/class/leds/<led>/dcd
What:		/sys/class/leds/<tty_led>/dcd
Date:		February 2024
KernelVersion:	6.8
Description:
@@ -51,7 +51,7 @@ Description:
		If set to 0 (default), the LED will not evaluate CAR (DCD).
		If set to 1, the LED will evaluate CAR (DCD).

What:		/sys/class/leds/<led>/rng
What:		/sys/class/leds/<tty_led>/rng
Date:		February 2024
KernelVersion:	6.8
Description:
+101 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ maintainers:

description: >
  The Qualcomm Light Pulse Generator consists of three different hardware blocks;
  a ramp generator with lookup table, the light pulse generator and a three
  a ramp generator with lookup table (LUT), the light pulse generator and a three
  channel current sink. These blocks are found in a wide range of Qualcomm PMICs.

properties:
@@ -63,6 +63,29 @@ properties:
        - description: dtest line to attach
        - description: flags for the attachment

  nvmem:
    description: >
      This property is required for PMICs that supports PPG, which is when a
      PMIC stores LPG per-channel data and pattern LUT in SDAM modules instead
      of in a LUT peripheral. For PMICs, such as PM8350C, per-channel data
      and pattern LUT is separated into 2 SDAM modules. In that case, phandles
      to both SDAM modules need to be specified.
    minItems: 1
    maxItems: 2

  nvmem-names:
    minItems: 1
    items:
      - const: lpg_chan_sdam
      - const: lut_sdam

  qcom,pbs:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: >
      Phandle of the Qualcomm Programmable Boot Sequencer node (PBS).
      PBS node is used to trigger LPG pattern sequences for PMICs that support
      single SDAM PPG.

  multi-led:
    type: object
    $ref: leds-class-multicolor.yaml#
@@ -106,6 +129,52 @@ required:

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,pm660l-lpg
              - qcom,pm8150b-lpg
              - qcom,pm8150l-lpg
              - qcom,pm8916-pwm
              - qcom,pm8941-lpg
              - qcom,pm8994-lpg
              - qcom,pmc8180c-lpg
              - qcom,pmi8994-lpg
              - qcom,pmi8998-lpg
              - qcom,pmk8550-pwm
    then:
      properties:
        nvmem: false
        nvmem-names: false

  - if:
      properties:
        compatible:
          contains:
            const: qcom,pmi632-lpg
    then:
      properties:
        nvmem:
          maxItems: 1
        nvmem-names:
          maxItems: 1

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,pm8350c-pwm
    then:
      properties:
        nvmem:
          minItems: 2
        nvmem-names:
          minItems: 2

examples:
  - |
    #include <dt-bindings/leds/common.h>
@@ -191,4 +260,35 @@ examples:
      compatible = "qcom,pm8916-pwm";
      #pwm-cells = <2>;
    };
  - |
    #include <dt-bindings/leds/common.h>

    led-controller {
      compatible = "qcom,pmi632-lpg";
      #address-cells = <1>;
      #size-cells = <0>;
      #pwm-cells = <2>;
      nvmem-names = "lpg_chan_sdam";
      nvmem = <&pmi632_sdam_7>;
      qcom,pbs = <&pmi632_pbs_client3>;

      led@1 {
        reg = <1>;
        color = <LED_COLOR_ID_RED>;
        label = "red";
      };

      led@2 {
        reg = <2>;
        color = <LED_COLOR_ID_GREEN>;
        label = "green";
      };

      led@3 {
        reg = <3>;
        color = <LED_COLOR_ID_BLUE>;
        label = "blue";
      };
    };

...
+96 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/leds/onnn,ncp5623.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ON Semiconductor NCP5623 multi-LED Driver

maintainers:
  - Abdel Alkuor <alkuor@gmail.com>

description:
  NCP5623 Triple Output I2C Controlled LED Driver.
  https://www.onsemi.com/pdf/datasheet/ncp5623-d.pdf

properties:
  compatible:
    enum:
      - onnn,ncp5623

  reg:
    const: 0x38

  multi-led:
    type: object
    $ref: leds-class-multicolor.yaml#
    unevaluatedProperties: false

    properties:
      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

    patternProperties:
      "^led@[0-2]$":
        type: object
        $ref: common.yaml#
        unevaluatedProperties: false

        properties:
          reg:
            minimum: 0
            maximum: 2

        required:
          - reg
          - color

    required:
      - "#address-cells"
      - "#size-cells"

required:
  - compatible
  - reg
  - multi-led

additionalProperties: false

examples:
  - |
    #include <dt-bindings/leds/common.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        led-controller@38 {
            compatible = "onnn,ncp5623";
            reg = <0x38>;

            multi-led {
                color = <LED_COLOR_ID_RGB>;

                #address-cells = <1>;
                #size-cells = <0>;

                led@0 {
                    reg = <0>;
                    color = <LED_COLOR_ID_RED>;
                };

                led@1 {
                    reg = <1>;
                    color = <LED_COLOR_ID_GREEN>;
                };

                led@2 {
                    reg = <2>;
                    color = <LED_COLOR_ID_BLUE>;
                };
            };
        };
    };
+1 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ obj-$(CONFIG_CPU_IDLE) += cpuidle/
obj-y				+= mmc/
obj-y				+= ufs/
obj-$(CONFIG_MEMSTICK)		+= memstick/
obj-$(CONFIG_NEW_LEDS)		+= leds/
obj-y				+= leds/
obj-$(CONFIG_INFINIBAND)	+= infiniband/
obj-y				+= firmware/
obj-$(CONFIG_CRYPTO)		+= crypto/
Loading