Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f9cc570 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull LED updates from Jacek Anaszewski:
 "LED class drivers improvements:

  leds-pca955x:
   - add Device Tree support and bindings
   - use devm_led_classdev_register()
   - add GPIO support
   - prevent crippled LED class device name
   - check for I2C errors

  leds-gpio:
   - add optional retain-state-shutdown DT property
   - allow LED to retain state at shutdown

  leds-tlc591xx:
   - merge conditional tests
   - add missing of_node_put

  leds-powernv:
   - delete an error message for a failed memory allocation in
     powernv_led_create()

  leds-is31fl32xx.c
   - convert to using custom %pOF printf format specifier

  Constify attribute_group structures in:
   - leds-blinkm
   - leds-lm3533

  Make several arrays static const in:
   - leds-aat1290
   - leds-lp5521
   - leds-lp5562
   - leds-lp8501"

* tag 'leds_for_4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
  leds: pca955x: check for I2C errors
  leds: gpio: Allow LED to retain state at shutdown
  dt-bindings: leds: gpio: Add optional retain-state-shutdown property
  leds: powernv: Delete an error message for a failed memory allocation in powernv_led_create()
  leds: lp8501: make several arrays static const
  leds: lp5562: make several arrays static const
  leds: lp5521: make several arrays static const
  leds: aat1290: make array max_mm_current_percent static const
  leds: pca955x: Prevent crippled LED device name
  leds: lm3533: constify attribute_group structure
  dt-bindings: leds: add pca955x
  leds: pca955x: add GPIO support
  leds: pca955x: use devm_led_classdev_register
  leds: pca955x: add device tree support
  leds: Convert to using %pOF instead of full_name
  leds: blinkm: constify attribute_group structures.
  leds: tlc591xx: add missing of_node_put
  leds: tlc591xx: merge conditional tests
parents cd7b34fe 1591caf2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ LED sub-node properties:
  see Documentation/devicetree/bindings/leds/common.txt
- retain-state-suspended: (optional) The suspend state can be retained.Such
  as charge-led gpio.
- retain-state-shutdown: (optional) Retain the state of the LED on shutdown.
  Useful in BMC systems, for example when the BMC is rebooted while the host
  remains up.
- panic-indicator : (optional)
  see Documentation/devicetree/bindings/leds/common.txt

+88 −0
Original line number Diff line number Diff line
* NXP - pca955x LED driver

The PCA955x family of chips are I2C LED blinkers whose pins not used
to control LEDs can be used as general purpose I/Os. The GPIO pins can
be input or output, and output pins can also be pulse-width controlled.

Required properties:
- compatible : should be one of :
	"nxp,pca9550"
	"nxp,pca9551"
	"nxp,pca9552"
	"nxp,pca9553"
- #address-cells: must be 1
- #size-cells: must be 0
- reg: I2C slave address. depends on the model.

Optional properties:
- gpio-controller: allows pins to be used as GPIOs.
- #gpio-cells: must be 2.
- gpio-line-names: define the names of the GPIO lines

LED sub-node properties:
- reg : number of LED line.
		from 0 to  1 for the pca9550
		from 0 to  7 for the pca9551
		from 0 to 15 for the pca9552
		from 0 to  3 for the pca9553
- type: (optional) either
	PCA9532_TYPE_NONE
	PCA9532_TYPE_LED
	PCA9532_TYPE_GPIO
	see dt-bindings/leds/leds-pca955x.h (default to LED)
- label : (optional)
	see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : (optional)
	see Documentation/devicetree/bindings/leds/common.txt

Examples:

pca9552: pca9552@60 {
	compatible = "nxp,pca9552";
	#address-cells = <1>;
        #size-cells = <0>;
	reg = <0x60>;

	gpio-controller;
	#gpio-cells = <2>;
	gpio-line-names = "GPIO12", "GPIO13", "GPIO14", "GPIO15";

	gpio@12 {
		reg = <12>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@13 {
		reg = <13>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@14 {
		reg = <14>;
		type = <PCA955X_TYPE_GPIO>;
	};
	gpio@15 {
		reg = <15>;
		type = <PCA955X_TYPE_GPIO>;
	};

	led@0 {
		label = "red:power";
		linux,default-trigger = "default-on";
		reg = <0>;
		type = <PCA955X_TYPE_LED>;
	};
	led@1 {
		label = "green:power";
		reg = <1>;
		type = <PCA955X_TYPE_LED>;
	};
	led@2 {
		label = "pca9552:yellow";
		reg = <2>;
		type = <PCA955X_TYPE_LED>;
	};
	led@3 {
		label = "pca9552:white";
		reg = <3>;
		type = <PCA955X_TYPE_LED>;
	};
};
+11 −0
Original line number Diff line number Diff line
@@ -386,6 +386,17 @@ config LEDS_PCA955X
	  LED driver chips accessed via the I2C bus.  Supported
	  devices include PCA9550, PCA9551, PCA9552, and PCA9553.

config LEDS_PCA955X_GPIO
	bool "Enable GPIO support for PCA955X"
	depends on LEDS_PCA955X
	depends on GPIOLIB
	help
	  Allow unused pins on PCA955X to be used as gpio.

	  To use a pin as gpio the pin type should be set to
	  PCA955X_TYPE_GPIO in the device tree.


config LEDS_PCA963X
	tristate "LED support for PCA963x I2C chip"
	depends on LEDS_CLASS
+4 −2
Original line number Diff line number Diff line
@@ -314,8 +314,10 @@ static void aat1290_led_validate_mm_current(struct aat1290_led *led,
static int init_mm_current_scale(struct aat1290_led *led,
			struct aat1290_led_config_data *cfg)
{
	int max_mm_current_percent[] = { 20, 22, 25, 28, 32, 36, 40, 45, 50, 56,
						63, 71, 79, 89, 100 };
	static const int max_mm_current_percent[] = {
		20, 22, 25, 28, 32, 36, 40, 45, 50, 56,
		63, 71, 79, 89, 100
	};
	int i, max_mm_current =
			AAT1290_MAX_MM_CURRENT(cfg->max_flash_current);

+1 −1
Original line number Diff line number Diff line
@@ -298,7 +298,7 @@ static struct attribute *blinkm_attrs[] = {
	NULL,
};

static struct attribute_group blinkm_group = {
static const struct attribute_group blinkm_group = {
	.name = "blinkm",
	.attrs = blinkm_attrs,
};
Loading