import PULS_20180308
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / ttab / leds / mt65xx / cust_leds.c
CommitLineData
6fa3eb70
S
1#include <cust_leds.h>
2#include <cust_leds_def.h>
3#include <mach/mt_pwm.h>
4
5#include <linux/kernel.h>
6#include <mach/pmic_mt6329_hw_bank1.h>
7#include <mach/pmic_mt6329_sw_bank1.h>
8#include <mach/pmic_mt6329_hw.h>
9#include <mach/pmic_mt6329_sw.h>
10#include <mach/upmu_common_sw.h>
11#include <mach/upmu_hw.h>
12
13extern int disp_bls_set_backlight(unsigned int level);
14
15// Only support 64 levels of backlight (when lcd-backlight = MT65XX_LED_MODE_PWM)
16#define BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT 64
17// Support 256 levels of backlight (when lcd-backlight = MT65XX_LED_MODE_PWM)
18#define BACKLIGHT_LEVEL_PWM_256_SUPPORT 256
19
20// Configure the support type "BACKLIGHT_LEVEL_PWM_256_SUPPORT" or "BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT" !!
21#define BACKLIGHT_LEVEL_PWM_MODE_CONFIG BACKLIGHT_LEVEL_PWM_256_SUPPORT
22
23unsigned int Cust_GetBacklightLevelSupport_byPWM(void)
24{
25 return BACKLIGHT_LEVEL_PWM_MODE_CONFIG;
26}
27
28unsigned int brightness_mapping(unsigned int level)
29{
30 unsigned int mapped_level;
4b9e9796
S
31/* [FEATURE]-Mod-BEGIN by TCTSZ.yaohui.zeng, 2015/04/20,set BL min level to 8(PWM 3.14%)*/
32 if((level <= 32)&&(level > 0))
33 mapped_level = 32;
34 else
35 mapped_level = level;
36/* [FEATURE]-Mod-END by TCTSZ.yaohui.zeng, 2015/04/20*/
6fa3eb70
S
37 return mapped_level;
38}
39/*
40unsigned int Cust_SetBacklight(int level, int div)
41{
42 kal_uint32 ret=0;
43// mtkfb_set_backlight_pwm(div);
44// mtkfb_set_backlight_level(brightness_mapping(level));
45
46
47 * To explain How to set these para for cust_led_list[] of led/backlight
48 * "name" para: led or backlight
49 * "mode" para:which mode for led/backlight
50 * such as:
51 * MT65XX_LED_MODE_NONE,
52 * MT65XX_LED_MODE_PWM,
53 * MT65XX_LED_MODE_GPIO,
54 * MT65XX_LED_MODE_PMIC,
55 * MT65XX_LED_MODE_CUST_LCM,
56 * MT65XX_LED_MODE_CUST_BLS_PWM
57 *
58 *"data" para: control methord for led/backlight
59 * such as:
60 * MT65XX_LED_PMIC_LCD_ISINK=0,
61 * MT65XX_LED_PMIC_NLED_ISINK0,
62 * MT65XX_LED_PMIC_NLED_ISINK1,
63 * MT65XX_LED_PMIC_NLED_ISINK2,
64 * MT65XX_LED_PMIC_NLED_ISINK3
65 *
66 *"PWM_config" para:PWM(AP side Or BLS module), by default setting{0,0,0,0,0} Or {0}
67 *struct PWM_config {
68 * int clock_source;
69 * int div;
70 * int low_duration;
71 * int High_duration;
72 * BOOL pmic_pad;//AP side PWM pin in PMIC chip (only 89 needs confirm); 1:yes 0:no(default)
73 *};
74 *-------------------------------------------------------------------------------------------
75 * for AP PWM setting as follow:
76 *1. PWM config data
77 * clock_source: clock source frequency, can be 0/1
78 * div: clock division, can be any value within 0~7 (i.e. 1/2^(div) = /1, /2, /4, /8, /16, /32, /64, /128)
79 * low_duration: only for BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT
80 * High_duration: only for BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT
81 *
82 *2. PWM freq.
83 * If BACKLIGHT_LEVEL_PWM_MODE_CONFIG = BACKLIGHT_LEVEL_PWM_256_SUPPORT,
84 * PWM freq. = clock source / 2^(div) / 256
85 *
86 * If BACKLIGHT_LEVEL_PWM_MODE_CONFIG = BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT,
87 * PWM freq. = clock source / 2^(div) / [(High_duration+1)(Level')+(low_duration+1)(64 - Level')]
88 * = clock source / 2^(div) / [(High_duration+1)*64] (when low_duration = High_duration)
89 *Clock source:
90 * 0: block clock/1625 = 26M/1625 = 16K (MT6571)
91 * 1: block clock = 26M (MT6571)
92 *Div: 0~7
93 *
94 *For example, in MT6571, PWM_config = {1,1,0,0,0}
95 * ==> PWM freq. = 26M/2^1/256 = 50.78 KHz ( when BACKLIGHT_LEVEL_PWM_256_SUPPORT )
96 * ==> PWM freq. = 26M/2^1/(0+1)*64 = 203.13 KHz ( when BACKLIGHT_LEVEL_PWM_64_FIFO_MODE_SUPPORT )
97 *-------------------------------------------------------------------------------------------
98 * for BLS PWM setting as follow:
99 *1. PWM config data
100 * clock_source: clock source frequency, can be 0/1/2/3
101 * div: clock division, can be any value within 0~1023
102 * low_duration: non-use
103 * High_duration: non-use
104 * pmic_pad: non-use
105 *
106 *2. PWM freq.= clock source / (div + 1) /1024
107 *Clock source:
108 * 0: 26 MHz
109 * 1: 104 MHz
110 * 2: 124.8 MHz
111 * 3: 156 MHz
112 *Div: 0~1023
113 *
114 *By default, clock_source = 0 and div = 0 => PWM freq. = 26 KHz
115 *-------------------------------------------------------------------------------------------
116 */
117static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
118 {"red", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK2,{0}},
119 {"green", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK1,{0}},
120 {"blue", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK0,{0}},
121 {"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0}},
122 {"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0}},
123 {"button-backlight", MT65XX_LED_MODE_NONE, -1,{0}},
124 {"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0,0,0,0,0}},
125};
126
127struct cust_mt65xx_led *get_cust_led_list(void)
128{
129 return cust_led_list;
130}
131