Files
linux-legacy-genesi/include/linux/pmic_light.h
Rob Herring be0524d38f ENGR00117389 Port 5.0.0 release to 2.6.31
This is i.MX BSP 5.0.0 release ported to 2.6.31

Signed-off-by: Rob Herring <r.herring@freescale.com>
Signed-off-by: Alan Tull <r80115@freescale.com>
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
2010-08-10 11:44:41 -05:00

1083 lines
32 KiB
C
Raw Permalink Blame History

/*
* Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
* The code contained herein is licensed under the GNU Lesser General
* Public License. You may obtain a copy of the GNU Lesser General
* Public License Version 2.1 or later at the following locations:
*
* http://www.opensource.org/licenses/lgpl-license.html
* http://www.gnu.org/copyleft/lgpl.html
*/
#ifndef __ASM_ARCH_MXC_PMIC_LIGHT_H__
#define __ASM_ARCH_MXC_PMIC_LIGHT_H__
/*!
* @defgroup PMIC_LIGHT PMIC Light Driver
* @ingroup PMIC_DRVRS
*/
/*!
* @file arch-mxc/pmic_light.h
* @brief This is the header of PMIC Light driver.
*
* @ingroup PMIC_LIGHT
*/
#include <linux/ioctl.h>
#include <linux/pmic_status.h>
#include <linux/pmic_external.h>
/*!
* @name IOCTL user space interface
*/
/*! @{ */
/*!
* Enable Backlight.
* Argument type: none.
*/
#define PMIC_BKLIT_ENABLE _IO('p', 0xe0)
/*!
* Disable Backlight.
* Argument type: none.
*/
#define PMIC_BKLIT_DISABLE _IO('p', 0xe1)
/*!
* Set backlight configuration.
* Argument type: pointer to t_bklit_setting_param
*/
#define PMIC_SET_BKLIT _IOW('p', 0xe2, int)
/*!
* Get backlight configuration.
* Argument type: pointer to t_bklit_setting_param
*/
#define PMIC_GET_BKLIT _IOWR('p', 0xe3, int)
/*!
* Ramp up configuration.
* Argument type: t_bklit_channel
*/
#define PMIC_RAMPUP_BKLIT _IOW('p', 0xe4, int)
/*!
* Ramp down configuration.
* Argument type: t_bklit_channel
*/
#define PMIC_RAMPDOWN_BKLIT _IOW('p', 0xe5, int)
/*!
* Enable Tri-color LED.
* Argument type: t_tcled_enable_param
*/
#define PMIC_TCLED_ENABLE _IOW('p', 0xe6, int)
/*!
* Disable Tri-color LED.
* Argument type: t_funlight_bank
*/
#define PMIC_TCLED_DISABLE _IOW('p', 0xe7, int)
/*!
* Start Tri-color LED pattern.
* Argument type: t_fun_param
*/
#define PMIC_TCLED_PATTERN _IOW('p', 0xe8, int)
/*!
* Enable Backlight & tcled.
* Argument type: none.
*/
#define PMIC_BKLIT_TCLED_ENABLE _IO('p', 0xe9)
/*!
* Disable Backlight & tcled.
* Argument type: none.
*/
#define PMIC_BKLIT_TCLED_DISABLE _IO('p', 0xea)
/*!
* Reset ramp up configuration.
* Argument type: t_bklit_channel
*/
#define PMIC_OFF_RAMPUP_BKLIT _IOW('p', 0xeb, int)
/*!
* Reset ramp down configuration.
* Argument type: t_bklit_channel
*/
#define PMIC_OFF_RAMPDOWN_BKLIT _IOW('p', 0xec, int)
/*!
* Set tcled ind configuration.
* Argument type: t_tcled_ind_param
*/
#define PMIC_SET_TCLED _IOW('p', 0xed, int)
/*!
* Get tcled ind configuration.
* Argument type: t_tcled_ind_param
*/
#define PMIC_GET_TCLED _IOWR('p', 0xee, int)
/*! @} */
/*!
* @enum t_bklit_mode
* @brief Backlight modes.
*/
typedef enum {
BACKLIGHT_CURRENT_CTRL_MODE, /*! < Current control mode */
BACKLIGHT_TRIODE_MODE /*! < Triode mode */
} t_bklit_mode;
/*!
* @enum t_bklit_channel
* @brief Backlight channels.
*/
typedef enum {
BACKLIGHT_LED1, /*! < Backlight channel 1 */
BACKLIGHT_LED2, /*! < Backlight channel 2 */
BACKLIGHT_LED3 /*! < Backlight channel 3 */
} t_bklit_channel;
/*!
* @enum t_bklit_strobe_mode
* @brief Backlight Strobe Light Pulsing modes.
*/
typedef enum {
/*!
* No Strobe Light Pulsing
*/
BACKLIGHT_STROBE_NONE,
/*!
* Strobe Light Pulsing at 3.3% duty cycle over 300msec (Driver goes
* into Triode Mode with pulses constrained to 10msec.)
*/
BACKLIGHT_STROBE_FAST,
/*!
* Strobe Light Pulsing at 10% duty cycle over 100msec (Driver goes
* into Triode Mode with pulses constrained to 10msec.)
*/
BACKLIGHT_STROBE_SLOW
} t_bklit_strobe_mode;
/*!
* @struct t_bklit_setting_param
* @brief Backlight setting.
*/
typedef struct {
t_bklit_channel channel; /*!< Channel */
t_bklit_mode mode; /*!< Mode */
t_bklit_strobe_mode strobe; /*!< Strobe mode */
unsigned char current_level; /*!< Current level */
unsigned char duty_cycle; /*!< Duty cycle */
unsigned char cycle_time; /*!< Cycle time */
bool edge_slow; /*!< Edge Slow */
bool en_dis; /*!< Enable disable boost mode */
unsigned int abms; /*!< Adaptive boost
* mode selection */
unsigned int abr; /*!< Adaptive
* boost reference */
} t_bklit_setting_param;
/*!
* @enum t_funlight_bank
* @brief Tri-color LED fun light banks.
*/
typedef enum {
TCLED_FUN_BANK1 = 0, /*! < Fun light bank 1 */
TCLED_FUN_BANK2, /*! < Fun light bank 2 */
TCLED_FUN_BANK3 /*! < Fun light bank 3 */
} t_funlight_bank;
/*!
* @enum t_tcled_mode
* @brief Tri-color LED operation modes.
*
* The Tri-Color LED Driver circuitry includes 2 modes of operation. In LED
* Indicator Mode, this circuitry operates as Red and Green LED Drivers with
* flasher timing to indicate GSM network status. In Fun Light Mode, this
* circuitry provides expanded capability for current control and distribution
* that supplements the three channels.
*/
typedef enum {
TCLED_IND_MODE = 0, /*! < LED Indicator Mode */
TCLED_FUN_MODE /*! < Fun Light Mode */
} t_tcled_mode;
/*!
* @struct t_tcled_enable_param
* @brief enable setting.
*/
typedef struct {
t_funlight_bank bank; /*!< Bank */
t_tcled_mode mode; /*!< Mode */
} t_tcled_enable_param;
/*!
* @enum t_ind_channel
* @brief Tri-color LED indicator mode channels.
*
*/
typedef enum {
TCLED_IND_RED = 0, /*! < Red LED */
TCLED_IND_GREEN, /*! < Green LED */
TCLED_IND_BLUE /*! < Blue LED */
} t_ind_channel;
/*!
* @enum t_funlight_channel
* @brief Tri-color LED fun light mode channels.
*
*/
typedef enum {
TCLED_FUN_CHANNEL1 = 0, /*! < Fun light channel 1 (Red) */
TCLED_FUN_CHANNEL2, /*! < Fun light channel 2 (Green) */
TCLED_FUN_CHANNEL3 /*! < Fun light channel 3 (Blue) */
} t_funlight_channel;
/*!
* @enum t_tcled_ind_blink_pattern
* @brief Tri-color LED Indicator Mode blinking mode.
*/
typedef enum {
TCLED_IND_OFF = 0, /*! < Continuous off */
TCLED_IND_BLINK_1, /*! < 1 / 31 */
TCLED_IND_BLINK_2, /*! < 2 / 31 */
TCLED_IND_BLINK_3, /*! < 3 / 31 */
TCLED_IND_BLINK_4, /*! < 4 / 31 */
TCLED_IND_BLINK_5, /*! < 5 / 31 */
TCLED_IND_BLINK_6, /*! < 6 / 31 */
TCLED_IND_BLINK_7, /*! < 7 / 31 */
TCLED_IND_BLINK_8, /*! < 8 / 31 */
TCLED_IND_BLINK_9, /*! < 9 / 31 */
TCLED_IND_BLINK_10, /*! < 10 / 31 */
TCLED_IND_BLINK_11, /*! < 11 / 31 */
TCLED_IND_BLINK_12, /*! < 12 / 31 */
TCLED_IND_BLINK_13, /*! < 13 / 31 */
TCLED_IND_BLINK_14, /*! < 14 / 31 */
TCLED_IND_BLINK_15, /*! < 15 / 31 */
TCLED_IND_BLINK_16, /*! < 16 / 31 */
TCLED_IND_BLINK_17, /*! < 17 / 31 */
TCLED_IND_BLINK_18, /*! < 18 / 31 */
TCLED_IND_BLINK_19, /*! < 19 / 31 */
TCLED_IND_BLINK_20, /*! < 20 / 31 */
TCLED_IND_BLINK_21, /*! < 21 / 31 */
TCLED_IND_BLINK_22, /*! < 22 / 31 */
TCLED_IND_BLINK_23, /*! < 23 / 31 */
TCLED_IND_BLINK_24, /*! < 24 / 31 */
TCLED_IND_BLINK_25, /*! < 25 / 31 */
TCLED_IND_BLINK_26, /*! < 26 / 31 */
TCLED_IND_BLINK_27, /*! < 27 / 31 */
TCLED_IND_BLINK_28, /*! < 28 / 31 */
TCLED_IND_BLINK_29, /*! < 29 / 31 */
TCLED_IND_BLINK_30, /*! < 30 / 31 */
TCLED_IND_ON /*! < Continuous on */
} t_tcled_ind_blink_pattern;
/*!
* @enum t_tcled_cur_level
* @brief Tri-color LED current levels.
*/
typedef enum {
TCLED_CUR_LEVEL_1 = 0, /*! < Tri-Color LED current level 1 */
TCLED_CUR_LEVEL_2, /*! < Tri-Color LED current level 2 */
TCLED_CUR_LEVEL_3, /*! < Tri-Color LED current level 3 */
TCLED_CUR_LEVEL_4 /*! < Tri-Color LED current level 4 */
} t_tcled_cur_level;
/*!
* @enum t_tcled_fun_cycle_time
* @brief Tri-color LED fun light mode cycle time.
*/
typedef enum {
TC_CYCLE_TIME_1 = 0, /*! < Tri-Color LED cycle time 1 */
TC_CYCLE_TIME_2, /*! < Tri-Color LED cycle time 2 */
TC_CYCLE_TIME_3, /*! < Tri-Color LED cycle time 3 */
TC_CYCLE_TIME_4 /*! < Tri-Color LED cycle time 4 */
} t_tcled_fun_cycle_time;
/*!
* @enum t_tcled_fun_speed
* @brief Tri-color LED fun light mode pattern speed.
*/
typedef enum {
TC_OFF = 0, /*! < Tri-Color pattern off */
TC_SLOW, /*! < Tri-Color slow pattern */
TC_FAST /*! < Tri-Color fast pattern */
} t_tcled_fun_speed;
/*!
* @enum t_tcled_fun_speed
* @brief Tri-color LED fun light mode pattern speed.
*/
typedef enum {
TC_STROBE_OFF = 0, /*! < No strobe */
TC_STROBE_SLOW, /*! < Slow strobe pattern */
TC_STROBE_FAST /*! < fast strobe pattern */
} t_tcled_fun_strobe_speed;
/*!
* @enum t_chaselight_pattern
* @brief Tri-color LED fun light mode chasing light patterns.
*/
typedef enum {
PMIC_RGB = 0, /*!< R -> G -> B */
BGR /*!< B -> G -> R */
} t_chaselight_pattern;
/*!
* This enumeration of Fun Light Pattern.
*/
typedef enum {
/*!
* Blended ramps slow
*/
BLENDED_RAMPS_SLOW,
/*!
* Blended ramps fast
*/
BLENDED_RAMPS_FAST,
/*!
* Saw ramps slow
*/
SAW_RAMPS_SLOW,
/*!
* Saw ramps fast
*/
SAW_RAMPS_FAST,
/*!
* Blended bowtie slow
*/
BLENDED_BOWTIE_SLOW,
/*!
* Blended bowtie fast
*/
BLENDED_BOWTIE_FAST,
/*!
* Strobe slow
*/
STROBE_SLOW,
/*!
* Strobe fast
*/
STROBE_FAST,
/*!
* Chasing Light RGB Slow
*/
CHASING_LIGHT_RGB_SLOW,
/*!
* Chasing Light RGB fast
*/
CHASING_LIGHT_RGB_FAST,
/*!
* Chasing Light BGR Slow
*/
CHASING_LIGHT_BGR_SLOW,
/*!
* Chasing Light BGR fast
*/
CHASING_LIGHT_BGR_FAST,
} t_fun_pattern;
/*!
* @struct t_fun_param
* @brief LED fun pattern IOCTL parameter
*/
typedef struct {
t_funlight_bank bank; /*!< TCLED bank */
t_funlight_channel channel; /*!< TCLED channel */
t_fun_pattern pattern; /*!< Fun pattern */
} t_fun_param;
/*!
* @enum t_led_channel
* @brief LED channels including backlight and tri-color LEDs.
*/
typedef enum {
AUDIO_LED1, /*! < Backlight channel 1 */
AUDIO_LED2, /*! < Backlight channel 2 */
AUDIO_LEDR, /*! < Fun light channel 1 (Red) */
AUDIO_LEDG, /*! < Fun light channel 2 (Green) */
AUDIO_LEDB /*! < Fun light channel 3 (Blue) */
} t_led_channel;
/*!
* @enum t_aud_path
* @brief LED audio modulation in-out audio channels
*/
typedef enum {
MIXED_RX = 0, /*!< Mixed L & R Channel RX audio */
TX /*!< TX path */
} t_aud_path;
/*!
* @enum t_aud_gain
* @brief LED audio modulation in-out audio channels
*/
typedef enum {
GAIN_MINUS6DB = 0, /*!< -6 dB */
GAIN_0DB, /*!< 0 dB */
GAIN_6DB, /*!< 6 dB */
GAIN_12DB /*!< 12 dB */
} t_aud_gain;
/*!
* @struct t_tcled_ind_param
* @brief LED parameter
*/
typedef struct {
t_funlight_bank bank; /*! < tcled bank */
t_ind_channel channel; /*! < tcled channel */
t_tcled_cur_level level; /*! < tcled current level */
t_tcled_ind_blink_pattern pattern; /*! < tcled dutty cycle */
bool skip; /*! < tcled skip */
bool rampup; /*! < tcled rampup */
bool rampdown; /*! < tcled rampdown */
bool half_current; /*! < tcled half current */
} t_tcled_ind_param;
#if defined(CONFIG_MXC_PMIC_MC13892)
enum curr_level {
LIT_CURR_0 = 0,
LIT_CURR_3,
LIT_CURR_6,
LIT_CURR_9,
LIT_CURR_12,
LIT_CURR_15,
LIT_CURR_18,
LIT_CURR_21,
/* below setting only used for main/aux/keypad */
LIT_CURR_HI_0,
LIT_CURR_HI_6,
LIT_CURR_HI_12,
LIT_CURR_HI_18,
LIT_CURR_HI_24,
LIT_CURR_HI_30,
LIT_CURR_HI_36,
LIT_CURR_HI_42,
};
enum lit_channel {
LIT_MAIN = 0,
LIT_AUX,
LIT_KEY,
LIT_RED,
LIT_GREEN,
LIT_BLUE,
};
#endif
/* EXPORTED FUNCTIONS */
#ifdef __KERNEL__
/*!
* This function enables backlight & tcled.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_tcled_master_enable(void);
/*!
* This function disables backlight & tcled.
*
* @return This function returns PMIC_SUCCESS if successful
*/
PMIC_STATUS pmic_bklit_tcled_master_disable(void);
/*!
* This function enables backlight.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_master_enable(void);
/*!
* This function disables backlight.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_master_disable(void);
/*!
* This function sets backlight current level.
*
* @param channel Backlight channel
* @param level Backlight current level, as the following table.
* @verbatim
level current
------ -----------
0 0 mA
1 12 mA
2 24 mA
3 36 mA
4 48 mA
5 60 mA
6 72 mA
7 84 mA
@endverbatim
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_set_current(t_bklit_channel channel,
unsigned char level);
/*!
* This function retrives backlight current level.
*
* @param channel Backlight channel
* @param level Pointer to store backlight current level result.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_get_current(t_bklit_channel channel,
unsigned char *level);
/*!
* This function sets a backlight channel duty cycle.
* LED perceived brightness for each zone may be individually set by setting
* duty cycle. The default setting is for 0% duty cycle; this keeps all zone
* drivers turned off even after the master enable command. Each LED current
* sink can be turned on and adjusted for brightness with an independent 4 bit
* word for a duty cycle ranging from 0% to 100% in approximately 6.7% steps.
*
* @param channel Backlight channel.
* @param dc Backlight duty cycle, as the following table.
* @verbatim
dc Duty Cycle (% On-time over Cycle Time)
------ ---------------------------------------
0 0%
1 6.7%
2 13.3%
3 20%
4 26.7%
5 33.3%
6 40%
7 46.7%
8 53.3%
9 60%
10 66.7%
11 73.3%
12 80%
13 86.7%
14 93.3%
15 100%
@endverbatim
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_set_dutycycle(t_bklit_channel channel, unsigned char dc);
/*!
* This function retrives a backlight channel duty cycle.
*
* @param channel Backlight channel.
* @param cycle Pointer to backlight duty cycle.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_get_dutycycle(t_bklit_channel channel,
unsigned char *dc);
/*!
* This function sets a backlight channel cycle time.
* Cycle Time is defined as the period of a complete cycle of
* Time_on + Time_off. The default Cycle Time is set to 0.01 seconds such that
* the 100 Hz on-off cycling is averaged out by the eye to eliminate
* flickering. Additionally, the Cycle Time can be programmed to intentionally
* extend the period of on-off cycles for a visual pulsating or blinking effect.
*
* @param period Backlight cycle time, as the following table.
* @verbatim
period Cycle Time
-------- ------------
0 0.01 seconds
1 0.1 seconds
2 0.5 seconds
3 2 seconds
@endverbatim
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_set_cycle_time(unsigned char period);
/*!
* This function retrives a backlight channel cycle time setting.
*
* @param period Pointer to save backlight cycle time setting result.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_get_cycle_time(unsigned char *period);
/*!
* This function sets backlight operation mode. There are two modes of
* operations: current control and triode mode.
* The Duty Cycle/Cycle Time control is retained in Triode Mode. Audio
* coupling is not available in Triode Mode.
*
* @param channel Backlight channel.
* @param mode Backlight operation mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_set_mode(t_bklit_channel channel, t_bklit_mode mode);
/*!
* This function gets backlight operation mode. There are two modes of
* operations: current control and triode mode.
* The Duty Cycle/Cycle Time control is retained in Triode Mode. Audio
* coupling is not available in Triode Mode.
*
* @param channel Backlight channel.
* @param mode Backlight operation mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_get_mode(t_bklit_channel channel, t_bklit_mode * mode);
/*!
* This function starts backlight brightness ramp up function; ramp time is
* fixed at 0.5 seconds.
*
* @param channel Backlight channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_rampup(t_bklit_channel channel);
/*!
* This function stops backlight brightness ramp up function;
*
* @param channel Backlight channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_off_rampup(t_bklit_channel channel);
/*!
* This function starts backlight brightness ramp down function; ramp time is
* fixed at 0.5 seconds.
*
* @param channel Backlight channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_rampdown(t_bklit_channel channel);
/*!
* This function stops backlight brightness ramp down function.
*
* @param channel Backlight channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_off_rampdown(t_bklit_channel channel);
/*!
* This function enables backlight analog edge slowing mode. Analog Edge
* Slowing slows down the transient edges to reduce the chance of coupling LED
* modulation activity into other circuits. Rise and fall times will be targeted
* for approximately 50usec.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_enable_edge_slow(void);
/*!
* This function disables backlight analog edge slowing mode. The backlight
* drivers will default to an <20>Instant On<4F> mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_disable_edge_slow(void);
/*!
* This function gets backlight analog edge slowing mode. DThe backlight
*
* @param edge Edge slowing mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_get_edge_slow(bool * edge);
/*!
* This function sets backlight Strobe Light Pulsing mode.
*
* @param channel Backlight channel.
* @param mode Strobe Light Pulsing mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_bklit_set_strobemode(t_bklit_channel channel,
t_bklit_strobe_mode mode);
/*!
* This function enables tri-color LED.
*
* @param mode Tri-color LED operation mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_enable(t_tcled_mode mode, t_funlight_bank bank);
/*!
* This function disables tri-color LED.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_disable(t_funlight_bank bank);
/*!
* This function retrives tri-color LED operation mode.
*
* @param mode Pointer to Tri-color LED operation mode.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_get_mode(t_tcled_mode * mode, t_funlight_bank bank);
/*!
* This function sets a tri-color LED channel current level in indicator mode.
*
* @param channel Tri-color LED channel.
* @param level Current level.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_ind_set_current(t_ind_channel channel,
t_tcled_cur_level level,
t_funlight_bank bank);
/*!
* This function retrives a tri-color LED channel current level in indicator mode.
*
* @param channel Tri-color LED channel.
* @param level Pointer to current level.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_ind_get_current(t_ind_channel channel,
t_tcled_cur_level * level,
t_funlight_bank bank);
/*!
* This function sets a tri-color LED channel blinking pattern in indication
* mode.
*
* @param channel Tri-color LED channel.
* @param pattern Blinking pattern.
* @param skip If true, skip a cycle after each cycle.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_ind_set_blink_pattern(t_ind_channel channel,
t_tcled_ind_blink_pattern pattern,
bool skip, t_funlight_bank bank);
/*!
* This function retrives a tri-color LED channel blinking pattern in
* indication mode.
*
* @param channel Tri-color LED channel.
* @param pattern Pointer to Blinking pattern.
* @param skip Pointer to a boolean variable indicating if skip
* a cycle after each cycle.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_ind_get_blink_pattern(t_ind_channel channel,
t_tcled_ind_blink_pattern *
pattern, bool * skip,
t_funlight_bank bank);
/*!
* This function sets a tri-color LED channel current level in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param level Current level.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_set_current(t_funlight_bank bank,
t_funlight_channel channel,
t_tcled_cur_level level);
/*!
* This function retrives a tri-color LED channel current level
* in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param level Pointer to current level.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_get_current(t_funlight_bank bank,
t_funlight_channel channel,
t_tcled_cur_level * level);
/*!
* This function sets tri-color LED cycle time in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param ct Cycle time.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_set_cycletime(t_funlight_bank bank,
t_tcled_fun_cycle_time ct);
/*!
* This function retrives tri-color LED cycle time in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param ct Pointer to cycle time.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_get_cycletime(t_funlight_bank bank,
t_tcled_fun_cycle_time * ct);
/*!
* This function sets a tri-color LED channel duty cycle in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param dc Duty cycle.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_set_dutycycle(t_funlight_bank bank,
t_funlight_channel channel,
unsigned char dc);
/*!
* This function retrives a tri-color LED channel duty cycle in Fun Light mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param dc Pointer to duty cycle.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_get_dutycycle(t_funlight_bank bank,
t_funlight_channel channel,
unsigned char *dc);
/*!
* This function initiates Blended Ramp fun light pattern.
*
* @param bank Tri-color LED bank
* @param speed Speed of pattern.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_blendedramps(t_funlight_bank bank,
t_tcled_fun_speed speed);
/*!
* This function initiates Saw Ramp fun light pattern.
*
* @param bank Tri-color LED bank
* @param speed Speed of pattern.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_sawramps(t_funlight_bank bank,
t_tcled_fun_speed speed);
/*!
* This function initiates Blended Bowtie fun light pattern.
*
* @param bank Tri-color LED bank
* @param speed Speed of pattern.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_blendedbowtie(t_funlight_bank bank,
t_tcled_fun_speed speed);
/*!
* This function initiates Chasing Lights fun light pattern.
*
* @param bank Tri-color LED bank
* @param pattern Chasing light pattern mode.
* @param speed Speed of pattern.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_chasinglightspattern(t_funlight_bank bank,
t_chaselight_pattern pattern,
t_tcled_fun_speed speed);
/*!
* This function initiates Strobe Mode fun light pattern.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param speed Speed of pattern.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_strobe(t_funlight_bank bank,
t_funlight_channel channel,
t_tcled_fun_strobe_speed speed);
/*!
* This function initiates Tri-color LED brightness Ramp Up function; Ramp time
* is fixed at 1 second.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param rampup Ramp-up configuration.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_rampup(t_funlight_bank bank,
t_funlight_channel channel, bool rampup);
/*!
* This function gets Tri-color LED brightness Ramp Up function; Ramp time
* is fixed at 1 second.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param rampup Ramp-up configuration.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_get_fun_rampup(t_funlight_bank bank,
t_funlight_channel channel,
bool * rampup);
/*!
* This function initiates Tri-color LED brightness Ramp Down function; Ramp
* time is fixed at 1 second.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param rampdown Ramp-down configuration.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_rampdown(t_funlight_bank bank,
t_funlight_channel channel, bool rampdown);
/*!
* This function initiates Tri-color LED brightness Ramp Down function; Ramp
* time is fixed at 1 second.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
* @param rampdown Ramp-down configuration.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_get_fun_rampdown(t_funlight_bank bank,
t_funlight_channel channel,
bool * rampdown);
/*!
* This function enables a Tri-color channel triode mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_triode_on(t_funlight_bank bank,
t_funlight_channel channel);
/*!
* This function disables a Tri-color LED channel triode mode.
*
* @param bank Tri-color LED bank
* @param channel Tri-color LED channel.
*
* @return This function returns PMIC_SUCCESS if successful.
*/
PMIC_STATUS pmic_tcled_fun_triode_off(t_funlight_bank bank,
t_funlight_channel channel);
/*!
* This function enables Tri-color LED edge slowing.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_enable_edge_slow(void);
/*!
* This function disables Tri-color LED edge slowing.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_disable_edge_slow(void);
/*!
* This function enables Tri-color LED half current mode.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_enable_half_current(void);
/*!
* This function disables Tri-color LED half current mode.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_disable_half_current(void);
/*!
* This function enables backlight or Tri-color LED audio modulation.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_enable_audio_modulation(t_led_channel channel,
t_aud_path path,
t_aud_gain gain,
bool lpf_bypass);
/*!
* This function disables backlight or Tri-color LED audio modulation.
*
* @return This function returns PMIC_NOT_SUPPORTED.
*/
PMIC_STATUS pmic_tcled_disable_audio_modulation(void);
/*!
* This function enables the boost mode.
* Only on mc13783 2.0 or higher
*
* @param en_dis Enable or disable the boost mode
*
* @return This function returns 0 if successful.
*/
PMIC_STATUS pmic_bklit_set_boost_mode(bool en_dis);
/*!
* This function gets the boost mode.
* Only on mc13783 2.0 or higher
*
* @param en_dis Enable or disable the boost mode
*
* @return This function returns 0 if successful.
*/
PMIC_STATUS pmic_bklit_get_boost_mode(bool * en_dis);
/*!
* This function sets boost mode configuration
* Only on mc13783 2.0 or higher
*
* @param abms Define adaptive boost mode selection
* @param abr Define adaptive boost reference
*
* @return This function returns 0 if successful.
*/
PMIC_STATUS pmic_bklit_config_boost_mode(unsigned int abms, unsigned int abr);
/*!
* This function gets boost mode configuration
* Only on mc13783 2.0 or higher
*
* @param abms Define adaptive boost mode selection
* @param abr Define adaptive boost reference
*
* @return This function returns 0 if successful.
*/
PMIC_STATUS pmic_bklit_gets_boost_mode(unsigned int *abms, unsigned int *abr);
#if defined(CONFIG_MXC_PMIC_MC13892)
PMIC_STATUS mc13892_bklit_set_current(enum lit_channel channel,
unsigned char level);
PMIC_STATUS mc13892_bklit_get_current(enum lit_channel channel,
unsigned char *level);
PMIC_STATUS mc13892_bklit_set_dutycycle(enum lit_channel channel,
unsigned char dc);
PMIC_STATUS mc13892_bklit_get_dutycycle(enum lit_channel channel,
unsigned char *dc);
PMIC_STATUS mc13892_bklit_set_ramp(enum lit_channel channel, int flag);
PMIC_STATUS mc13892_bklit_get_ramp(enum lit_channel channel, int *flag);
PMIC_STATUS mc13892_bklit_set_blink_p(enum lit_channel channel, int period);
PMIC_STATUS mc13892_bklit_get_blink_p(enum lit_channel channel, int *period);
#endif
#endif /* __KERNEL__ */
#endif /* __ASM_ARCH_MXC_PMIC_LIGHT_H__ */