Commit b98d13c7 authored by G.Shark Jeong's avatar G.Shark Jeong Committed by Bryan Wu

leds: Add new LED driver for lm355x chips

This driver is a general version for LM355x,lm3554 and lm3556,led chips of TI.

LM3554 :
The LM3554 is a 2 MHz fixed-frequency synchronous boost
converter with 1.2A dual high side led drivers.
Datasheet: www.ti.com/lit/ds/symlink/lm3554.pdf

LM3556 :
The LM3556 is a 4 MHz fixed-frequency synchronous boost
converter plus 1.5A constant current driver for a high-current white LED.
Datasheet: www.national.com/ds/LM/LM3556.pdf

(bryan.wu@canonical.com: use flush_work() to replace flush_work_sync() which is
deprecated)
Signed-off-by: default avatarG.Shark Jeong <gshark.jeong@gmail.com>
Signed-off-by: default avatarBryan Wu <bryan.wu@canonical.com>
parent 56a1e9ad
...@@ -423,13 +423,13 @@ config LEDS_MAX8997 ...@@ -423,13 +423,13 @@ config LEDS_MAX8997
This option enables support for on-chip LED drivers on This option enables support for on-chip LED drivers on
MAXIM MAX8997 PMIC. MAXIM MAX8997 PMIC.
config LEDS_LM3556 config LEDS_LM355x
tristate "LED support for LM3556 Chip" tristate "LED support for LM355x Chips, LM3554 and LM3556"
depends on LEDS_CLASS && I2C depends on LEDS_CLASS && I2C
select REGMAP_I2C select REGMAP_I2C
help help
This option enables support for LEDs connected to LM3556. This option enables support for LEDs connected to LM355x.
LM3556 includes Torch, Flash and Indicator functions. LM355x includes Torch, Flash and Indicator functions.
config LEDS_OT200 config LEDS_OT200
tristate "LED support for the Bachmann OT200" tristate "LED support for the Bachmann OT200"
......
...@@ -48,7 +48,7 @@ obj-$(CONFIG_LEDS_NETXBIG) += leds-netxbig.o ...@@ -48,7 +48,7 @@ obj-$(CONFIG_LEDS_NETXBIG) += leds-netxbig.o
obj-$(CONFIG_LEDS_ASIC3) += leds-asic3.o obj-$(CONFIG_LEDS_ASIC3) += leds-asic3.o
obj-$(CONFIG_LEDS_RENESAS_TPU) += leds-renesas-tpu.o obj-$(CONFIG_LEDS_RENESAS_TPU) += leds-renesas-tpu.o
obj-$(CONFIG_LEDS_MAX8997) += leds-max8997.o obj-$(CONFIG_LEDS_MAX8997) += leds-max8997.o
obj-$(CONFIG_LEDS_LM3556) += leds-lm3556.o obj-$(CONFIG_LEDS_LM355x) += leds-lm355x.o
obj-$(CONFIG_LEDS_BLINKM) += leds-blinkm.o obj-$(CONFIG_LEDS_BLINKM) += leds-blinkm.o
# LED SPI Drivers # LED SPI Drivers
......
/*
* Simple driver for Texas Instruments LM3556 LED Flash driver chip (Rev0x03)
* Copyright (C) 2012 Texas Instruments
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
#ifndef __LINUX_LM3556_H
#define __LINUX_LM3556_H
#define LM3556_NAME "leds-lm3556"
enum lm3556_pin_polarity {
PIN_LOW_ACTIVE = 0,
PIN_HIGH_ACTIVE,
};
enum lm3556_pin_enable {
PIN_DISABLED = 0,
PIN_ENABLED,
};
enum lm3556_strobe_usuage {
STROBE_EDGE_DETECT = 0,
STROBE_LEVEL_DETECT,
};
enum lm3556_indic_mode {
INDIC_MODE_INTERNAL = 0,
INDIC_MODE_EXTERNAL,
};
struct lm3556_platform_data {
enum lm3556_pin_enable torch_pin_en;
enum lm3556_pin_polarity torch_pin_polarity;
enum lm3556_strobe_usuage strobe_usuage;
enum lm3556_pin_enable strobe_pin_en;
enum lm3556_pin_polarity strobe_pin_polarity;
enum lm3556_pin_enable tx_pin_en;
enum lm3556_pin_polarity tx_pin_polarity;
enum lm3556_indic_mode indicator_mode;
};
#endif /* __LINUX_LM3556_H */
/*
* Copyright (C) 2012 Texas Instruments
*
* License Terms: GNU General Public License v2
*
* Simple driver for Texas Instruments LM355x LED driver chip
*
* Author: G.Shark Jeong <gshark.jeong@gmail.com>
* Daniel Jeong <daniel.jeong@ti.com>
*/
#define LM355x_NAME "leds-lm355x"
#define LM3554_NAME "leds-lm3554"
#define LM3556_NAME "leds-lm3556"
/* lm3554 : strobe def. on */
enum lm355x_strobe {
LM355x_PIN_STROBE_DISABLE = 0x00,
LM355x_PIN_STROBE_ENABLE = 0x01,
};
enum lm355x_torch {
LM355x_PIN_TORCH_DISABLE = 0,
LM3554_PIN_TORCH_ENABLE = 0x80,
LM3556_PIN_TORCH_ENABLE = 0x10,
};
enum lm355x_tx2 {
LM355x_PIN_TX_DISABLE = 0,
LM3554_PIN_TX_ENABLE = 0x20,
LM3556_PIN_TX_ENABLE = 0x40,
};
enum lm355x_ntc {
LM355x_PIN_NTC_DISABLE = 0,
LM3554_PIN_NTC_ENABLE = 0x08,
LM3556_PIN_NTC_ENABLE = 0x80,
};
enum lm355x_pmode {
LM355x_PMODE_DISABLE = 0,
LM355x_PMODE_ENABLE = 0x04,
};
/*
* struct lm3554_platform_data
* @pin_strobe: strobe input
* @pin_torch : input pin
* lm3554-tx1/torch/gpio1
* lm3556-torch
* @pin_tx2 : input pin
* lm3554-envm/tx2/gpio2
* lm3556-tx pin
* @ntc_pin : output pin
* lm3554-ledi/ntc
* lm3556-temp pin
* @pass_mode : pass mode
*/
struct lm355x_platform_data {
enum lm355x_strobe pin_strobe;
enum lm355x_torch pin_tx1;
enum lm355x_tx2 pin_tx2;
enum lm355x_ntc ntc_pin;
enum lm355x_pmode pass_mode;
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment