Commit f3033eb7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull LED updates from Lee Jones:
 "Core Frameworks:
   - Ensure seldom updated triggers have a brightness value before first
     update

  New Device Support:
   - Add support for Simatic IPC Device BX_59A to IPC LEDs Core
   - Add support for Qualcomm PMI8950 PWM to LPG Core

  New Functionality:
   - Add a bunch of new LED function identifiers
   - Add support for High Resolution Timers in LED Trigger Patten

  Fix-ups:
   - Shift out Audio Trigger to the Sound subsystem
   - Convert suitable calls to devm_* managed resources
   - Device Tree binding adaptions/conversions/creation
   - Remove superfluous code/variables/attributes and simplify overall
   - Use/convert to new/better APIs/helpers/MACROs instead of
     hand-rolling implementations

  Bug Fixes:
   - Repair enabling Torch Mode from V4L2 on the second LED
   - Ensure PWM is disabled when suspending"

* tag 'leds-next-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds: (28 commits)
  leds: mt6370: Remove unused field 'reg_cfgs' from 'struct mt6370_priv'
  leds: lp50xx: Remove unused field 'num_of_banked_leds' from 'struct lp50xx'
  leds: lp50xx: Remove unused field 'bank_modules' from 'struct lp50xx_led'
  leds: aat1290: Remove unused field 'torch_brightness' from 'struct aat1290_led'
  leds: sun50i-a100: Use match_string() helper to simplify the code
  leds: pwm: Disable PWM when going to suspend
  leds: trigger: pattern: Add support for hrtimer
  leds: mt6360: Fix the second LED can not enable torch mode by V4L2
  dt-bindings: leds: leds-qcom-lpg: Add support for PMI8950 PWM
  leds: qcom-lpg: Add support for PMI8950 PWM
  leds: apu: Remove duplicate DMI lookup data
  leds: trigger: netdev: Remove not needed call to led_set_brightness in deactivate
  dt-bindings: leds: Add LED_FUNCTION_SPEED_* for link speed on LAN/WAN
  dt-bindings: leds: Add LED_FUNCTION_MOBILE for mobile network
  leds: simatic-ipc-leds-gpio: Add support for module BX-59A
  dt-bindings: leds: qcom-lpg: Document PM6150L compatible
  dt-bindings: leds: pca963x: Convert text bindings to YAML
  leds: an30259a: Use devm_mutex_init() for mutex initialization
  leds: mlxreg: Use devm_mutex_init() for mutex initialization
  leds: nic78bx: Use devm API to cleanup module's resources
  ...
parents 7eae27cd f2994f53
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -12,6 +12,16 @@ Description:
		The exact format is described in:
		Documentation/devicetree/bindings/leds/leds-trigger-pattern.txt

What:		/sys/class/leds/<led>/hr_pattern
Date:		April 2024
Description:
		Specify a software pattern for the LED, that supports altering
		the brightness for the specified duration with one software
		timer. It can do gradual dimming and step change of brightness.

		Unlike the /sys/class/leds/<led>/pattern, this attribute runs
		a pattern on high-resolution timer (hrtimer).

What:		/sys/class/leds/<led>/hw_pattern
Date:		September 2018
KernelVersion:	4.20
+6 −2
Original line number Diff line number Diff line
@@ -27,9 +27,14 @@ properties:
          - qcom,pm8994-lpg
          - qcom,pmc8180c-lpg
          - qcom,pmi632-lpg
          - qcom,pmi8950-pwm
          - qcom,pmi8994-lpg
          - qcom,pmi8998-lpg
          - qcom,pmk8550-pwm
      - items:
          - enum:
              - qcom,pm6150l-lpg
          - const: qcom,pm8150l-lpg
      - items:
          - enum:
              - qcom,pm8550-pwm
@@ -142,6 +147,7 @@ allOf:
              - qcom,pm8941-lpg
              - qcom,pm8994-lpg
              - qcom,pmc8180c-lpg
              - qcom,pmi8950-pwm
              - qcom,pmi8994-lpg
              - qcom,pmi8998-lpg
              - qcom,pmk8550-pwm
@@ -290,5 +296,3 @@ examples:
        label = "blue";
      };
    };

...
+140 −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/nxp,pca963x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP PCA963x LED controllers

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description: |
  The NXP PCA963x are I2C-controlled LED drivers optimized for
  Red/Green/Blue/Amber (RGBA) color mixing applications. Each LED is
  individually controllable and has its own PWM controller.

  Datasheets are available at

  - https://www.nxp.com/docs/en/data-sheet/PCA9632.pdf
  - https://www.nxp.com/docs/en/data-sheet/PCA9633.pdf
  - https://www.nxp.com/docs/en/data-sheet/PCA9634.pdf
  - https://www.nxp.com/docs/en/data-sheet/PCA9635.pdf

properties:
  compatible:
    enum:
      - nxp,pca9632
      - nxp,pca9633
      - nxp,pca9634
      - nxp,pca9635

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  nxp,hw-blink:
    type: boolean
    description:
      Use hardware blinking instead of software blinking

  nxp,inverted-out:
    type: boolean
    description:
      Invert the polarity of the generated PWM.

  nxp,period-scale:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      In some configurations, the chip blinks faster than expected. This
      parameter provides a scaling ratio (fixed point, decimal divided by 1000)
      to compensate, e.g. 1300=1.3x and 750=0.75x.

  nxp,totem-pole:
    type: boolean
    description:
      Use totem pole (push-pull) instead of open-drain (pca9632 defaults to
      open-drain, newer chips to totem pole).

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

    properties:
      reg:
        minimum: 0

    required:
      - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nxp,pca9632
              - nxp,pca9633
    then:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              maximum: 3
    else:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              maximum: 7

additionalProperties: false

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

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

        led-controller@62 {
            compatible = "nxp,pca9632";
            reg = <0x62>;
            #address-cells = <1>;
            #size-cells = <0>;

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

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

            led@2 {
                    reg = <2>;
                    color = <LED_COLOR_ID_BLUE>;
                    function = LED_FUNCTION_STATUS;
            };

            led@3 {
                    reg = <3>;
                    color = <LED_COLOR_ID_WHITE>;
                    function = LED_FUNCTION_STATUS;
            };
        };
    };

...
+0 −52
Original line number Diff line number Diff line
LEDs connected to pca9632, pca9633 or pca9634

Required properties:
- compatible : should be : "nxp,pca9632", "nxp,pca9633", "nxp,pca9634" or "nxp,pca9635"

Optional properties:
- nxp,totem-pole : use totem pole (push-pull) instead of open-drain (pca9632 defaults
  to open-drain, newer chips to totem pole)
- nxp,hw-blink : use hardware blinking instead of software blinking
- nxp,period-scale : In some configurations, the chip blinks faster than expected.
		     This parameter provides a scaling ratio (fixed point, decimal divided
		     by 1000) to compensate, e.g. 1300=1.3x and 750=0.75x.
- nxp,inverted-out: invert the polarity of the generated PWM

Each led is represented as a sub-node of the nxp,pca963x device.

LED sub-node properties:
- label : (optional) see Documentation/devicetree/bindings/leds/common.txt
- reg : number of LED line (could be from 0 to 3 in pca9632 or pca9633,
		0 to 7 in pca9634, or 0 to 15 in pca9635)
- linux,default-trigger : (optional)
   see Documentation/devicetree/bindings/leds/common.txt

Examples:

pca9632: pca9632 {
	compatible = "nxp,pca9632";
	#address-cells = <1>;
	#size-cells = <0>;
	reg = <0x62>;

	red@0 {
		label = "red";
		reg = <0>;
		linux,default-trigger = "none";
	};
	green@1 {
		label = "green";
		reg = <1>;
		linux,default-trigger = "none";
	};
	blue@2 {
		label = "blue";
		reg = <2>;
		linux,default-trigger = "none";
	};
	unused@3 {
		label = "unused";
		reg = <3>;
		linux,default-trigger = "none";
	};
};
+0 −1
Original line number Diff line number Diff line
@@ -152,7 +152,6 @@ CONFIG_LEDS_TRIGGER_CAMERA=m
CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_NETDEV=y
CONFIG_LEDS_TRIGGER_PATTERN=y
CONFIG_LEDS_TRIGGER_AUDIO=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_JZ4740=y
CONFIG_DMADEVICES=y
Loading