271 lines
8.9 KiB
Plaintext
271 lines
8.9 KiB
Plaintext
Qualcomm QPNP Leds
|
|
|
|
QPNP (Qualcomm Plug N Play) LEDs driver is used for
|
|
controlling LEDs that are part of PMIC on Qualcomm reference
|
|
platforms. The PMIC is connected to Host processor via
|
|
SPMI bus. This driver supports various LED modules such as
|
|
Keypad backlight, WLED (white LED), RGB LED and flash LED.
|
|
|
|
Each LED module is represented as a node of "leds-qpnp". This
|
|
node will further contain the type of LED supported and its
|
|
properties. At least one child node is required for each LED
|
|
module. Each must have the required properties below, in addition
|
|
to the properties for the LED type, WLED, Flash or RGB.
|
|
|
|
Required properties for each child node, WLED, Flash and RGB:
|
|
- compatible : should be "qcom,leds-qpnp"
|
|
- qcom,id : must be one of values supported in enum qpnp_led
|
|
- label : type of led that will be used, ie "wled"
|
|
- qcom,max-current : maximum current that the LED can sustain
|
|
- linux,name : name of the led that is used in led framework
|
|
|
|
WLED is primarily used as display backlight. Display subsystem uses
|
|
LED triggers for WLED to control the brightness as needed.
|
|
|
|
Optional properties for WLED:
|
|
- qcom,num-strings: number of wled strings supported
|
|
- qcom,ovp-val: over voltage protection threshold,
|
|
follows enum wled_ovp_threshold
|
|
- qcom,boost-curr-lim: boot currnet limit, follows enum wled_current_bost_limit
|
|
- qcom,ctrl-delay-us: delay in activation of led
|
|
- qcom,dig-mod-gen-en: digital module generator
|
|
- qcom,cs-out-en: current sink output enable
|
|
- qcom,op-fdbck: selection of output as feedback for the boost, 00 = automatic selection, 01 = select LED1 output, 02 = select LED2 output, 03 = select LED3 output
|
|
- qcom,cp-select: high pole capacitance
|
|
- linux,default-trigger: trigger the led from external modules such as display
|
|
- qcom,default-state: default state of the led, should be "on" or "off"
|
|
|
|
Flash is used primarily as a camera or video flash.
|
|
|
|
Optional properties for flash:
|
|
- qcom,headroom: headroom to use, mV
|
|
- qcom,duration: duration of the flash, ms
|
|
- qcom,clamp-curr: current to clamp at, mA
|
|
- qcom,startup-dly: delay before flashing after flash executed, us
|
|
- qcom,saftey-timer: include for safety timer use, otherwise watchdog timer will be used
|
|
- linux,default-trigger: trigger the led from external modules such as display
|
|
- qcom,default-state: default state of the led, should be "on" or "off"
|
|
- qcom,torch-enable: set flash led to torch mode
|
|
- flash_boost-supply: SMBB regulator for LED flash mode
|
|
|
|
RGB Led is a tri-colored led, Red, Blue & Green.
|
|
|
|
Required properties for RGB led:
|
|
- qcom,mode: mode the led should operate in, options "pwm" and "lpg"
|
|
- qcom,pwm-channel: pwm channel the led will operate on
|
|
|
|
Required properties for PWM mode only:
|
|
- qcom,pwm-us: time the pwm device will modulate at (us)
|
|
|
|
Required properties for LPG mode only:
|
|
- qcom,duty-pcts: array of values for duty cycle to go through
|
|
- qcom,start-idx: starting point duty-pcts array
|
|
|
|
Optional properties for LPG mode only:
|
|
- qcom,pause-lo: pause at low end of cycle
|
|
- qcom,pause-hi: pause at high end of cycle
|
|
- qcom,ramp-step-ms: step between each cycle (ms)
|
|
- qcom,lut-flags: flags to be used in lut configuration
|
|
|
|
Optional properties for RGB led:
|
|
- linux,default-trigger: trigger the led from external modules such as display
|
|
- qcom,default-state: default state of the led, should be "on" or "off"
|
|
- qcom,turn-off-delay-ms: delay in millisecond for turning off the led when its default-state is "on". Value is being ignored in case default-state is "off".
|
|
- qcom,use-blink: Use blink sysfs entry for switching into lpg mode. For optimal use, set default mode to pwm. All required lpg parameters must be supplied.
|
|
|
|
MPP LED is an LED controled through a Multi Purpose Pin.
|
|
|
|
Optional properties for MPP LED:
|
|
- linux,default-trigger: trigger the led from external modules such as display
|
|
- qcom,default-state: default state of the led, should be "on" or "off"
|
|
- qcom,source-sel: select power source, default 1 (enabled)
|
|
- qcom,mode-ctrl: select operation mode, default 0x60 = Mode Sink
|
|
- qcom,mode: mode the led should operate in, options "pwm", "lpg" and "manual"
|
|
- qcom,use-blink: Use blink sysfs entry for switching into lpg mode. For optimal use, set default mode to pwm. All required lpg parameters must be supplied.
|
|
|
|
Required properties for PWM mode only:
|
|
- qcom,pwm-channel: pwm channel the led will operate on
|
|
- qcom,pwm-us: time the pwm device will modulate at (us)
|
|
|
|
Required properties for LPG mode only:
|
|
- qcom,pwm-channel: pwm channel the led will operate on
|
|
- qcom,duty-pcts: array of values for duty cycle to go through
|
|
- qcom,start-idx: starting point duty-pcts array
|
|
|
|
Optional properties for LPG mode only:
|
|
- qcom,pause-lo: pause at low end of cycle
|
|
- qcom,pause-hi: pause at high end of cycle
|
|
- qcom,ramp-step-ms: step between each cycle (ms)
|
|
- qcom,lut-flags: flags to be used in lut configuration
|
|
|
|
Keypad backlight is a backlight source for buttons. It supports four rows
|
|
and the required rows are enabled by specifying values in the properties.
|
|
|
|
Required properties for keypad backlight:
|
|
- qcom,mode: mode the led should operate in, options "pwm" and "lpg"
|
|
- qcom,pwm-channel: pwm channel the led will operate on
|
|
- qcom,pwm-us: time the pwm device will modulate at (us)
|
|
- qcom,row-src-sel-val: select source for rows. One bit is used for each row.
|
|
Specify 0 for vph_pwr and 1 for vbst for each row.
|
|
- qcom,row-scan-val: select rows for scanning
|
|
- qcom,row-scan-en: row scan enable
|
|
|
|
Required properties for PWM mode only:
|
|
- qcom,pwm-us: time the pwm device will modulate at (us)
|
|
|
|
Required properties for LPG mode only:
|
|
- qcom,duty-pcts: array of values for duty cycle to go through
|
|
- qcom,start-idx: starting point duty-pcts array
|
|
|
|
Optional properties for LPG mode only:
|
|
- qcom,pause-lo: pause at low end of cycle
|
|
- qcom,pause-hi: pause at high end of cycle
|
|
- qcom,ramp-step-ms: step between each cycle (ms)
|
|
- qcom,lut-flags: flags to be used in lut configuration
|
|
|
|
Example:
|
|
|
|
qcom,leds@a200 {
|
|
status = "okay";
|
|
qcom,led_mpp_3 {
|
|
label = "mpp";
|
|
linux,name = "wled-backlight";
|
|
linux-default-trigger = "none";
|
|
qcom,default-state = "on";
|
|
qcom,max-current = <40>;
|
|
qcom,id = <6>;
|
|
qcom,source-sel = <1>;
|
|
qcom,mode-ctrl = <0x10>;
|
|
};
|
|
};
|
|
|
|
qcom,leds@a300 {
|
|
status = "okay";
|
|
qcom,led_mpp_pwm {
|
|
label = "mpp";
|
|
linux,name = "green";
|
|
linux,default-trigger = "none";
|
|
qcom,default-state = "off";
|
|
qcom,max-current = <40>;
|
|
qcom,current-setting = <5>;
|
|
qcom,id = <6>;
|
|
qcom,mode = "pwm";
|
|
qcom,source-sel = <8>;
|
|
qcom,mode-ctrl = <0x60>;
|
|
qcom,pwm-channel = <0>;
|
|
qcom,pwm-us = <1000>;
|
|
};
|
|
};
|
|
|
|
qcom,leds@d000 {
|
|
status = "okay";
|
|
qcom,rgb_pwm {
|
|
label = "rgb";
|
|
linux,name = "led:rgb_red";
|
|
qcom,mode = "pwm";
|
|
qcom,pwm-us = <1000>;
|
|
qcom,pwm-channel = <6>;
|
|
qcom,max-current = <12>;
|
|
qcom,default-state = "off";
|
|
qcom,id = <3>;
|
|
linux,default-trigger =
|
|
"battery-charging";
|
|
};
|
|
qcom,rgb_lpg {
|
|
label = "rgb";
|
|
linux,name = "led:rgb_green";
|
|
qcom,mode = "lpg";
|
|
qcom,pwm-channel = <5>;
|
|
qcom,duty-ms = <20>;
|
|
qcom,start-idx = <1>;
|
|
qcom,idx-len = <10>;
|
|
qcom,duty-pcts = [00 19 32 4B 64
|
|
64 4B 32 19 00];
|
|
qcom,max-current = <12>;
|
|
qcom,default-state = "off";
|
|
qcom,id = <3>;
|
|
linux,default-trigger =
|
|
"battery-charging";
|
|
};
|
|
|
|
qcom,rgb_blink {
|
|
label = "rgb";
|
|
linux,name = "led:rgb_blue";
|
|
qcom,mode = "pwm";
|
|
qcom,pwm-channel = <4>;
|
|
qcom,start-idx = <1>;
|
|
qcom,idx-len = <10>;
|
|
qcom,duty-pcts = [00 19 32 4B 64
|
|
64 4B 32 19 00];
|
|
qcom,lut-flags = <3>;
|
|
qcom,pause-lo = <0>;
|
|
qcom,pause-hi = <0>;
|
|
qcom,ramp-step-ms = <255>;
|
|
qcom,max-current = <12>;
|
|
qcom,default-state = "on";
|
|
qcom,turn-off-delay-ms = <500>;
|
|
qcom,id = <5>;
|
|
linux,default-trigger = "none";
|
|
qcom,pwm-us = <1000>;
|
|
qcom,use-blink;
|
|
};
|
|
};
|
|
|
|
qcom,leds@d300 {
|
|
compatible = "qcom,leds-qpnp";
|
|
status = "okay";
|
|
flash_boost-supply = <&pm8941_chg_boost>;
|
|
qcom,flash_0 {
|
|
qcom,max-current = <1000>;
|
|
qcom,default-state = "off";
|
|
qcom,headroom = <0>;
|
|
qcom,duration = <200>;
|
|
qcom,clamp-curr = <200>;
|
|
qcom,startup-dly = <1>;
|
|
qcom,safety-timer;
|
|
label = "flash";
|
|
linux,default-trigger =
|
|
"flash0_trigger";
|
|
linux,name = "led:flash_0";
|
|
qcom,current = <625>;
|
|
qcom,id = <1>;
|
|
};
|
|
};
|
|
|
|
qcom,leds@d800 {
|
|
compatible = "qcom,leds-qpnp";
|
|
status = "okay";
|
|
qcom,wled_0 {
|
|
linux,default-trigger = "bkl-trigger"
|
|
label = "wled";
|
|
qcom,cs-out-en;
|
|
qcom,op-fdbck = <1>;
|
|
qcom,default-state "off";
|
|
qcom,max-current = <25>;
|
|
qcom,ctrl-delay-us = <0>;
|
|
qcom,boost-curr-lim = <3>;
|
|
qcom,cp-sel = <0>;
|
|
qcom,switch-freq = <2>;
|
|
qcom,ovp-val = <2>;
|
|
qcom,num-strings = <1>;
|
|
qcom,id = <0>;
|
|
linux,name = "led:wled_backlight";
|
|
};
|
|
};
|
|
|
|
qcom,leds@e200 {
|
|
status = "okay";
|
|
qcom,kpdbl {
|
|
label = "kpdbl";
|
|
linux,name = "button-backlight";
|
|
qcom,mode = <0>;
|
|
qcom,pwm-channel = <8>;
|
|
qcom,pwm-us = <1000>;
|
|
qcom,id = <7>;
|
|
qcom,max-current = <20>;
|
|
qcom,row-src-sel-val = <0x00>;
|
|
qcom,row-scan-en = <0x01>;
|
|
qcom,row-scan-val = <0x01>;
|
|
};
|
|
};
|