mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
backlight: ldim: optimize get config flow [2/3]
PD#166898: backlight: ldim: optimize get config flow also correct local dimming spelling mistake Change-Id: Iea2c7802e9fa55ad2e587126e1281ec9b34113e2 Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
This commit is contained in:
@@ -629,7 +629,7 @@
|
||||
};
|
||||
backlight_4{
|
||||
index = <4>;
|
||||
bl_name = "backlight_4";
|
||||
bl_name = "ldim_iw7027";
|
||||
bl_level_default_uboot_kernel = <100 100>;
|
||||
bl_level_attr = <255 10 /*max, min*/
|
||||
128 128>; /*mid, mid_mapping*/
|
||||
@@ -642,12 +642,11 @@
|
||||
* (top, bottom, left or right),
|
||||
*2=uniform(top/bottom, left/right)
|
||||
*/
|
||||
bl_ldim_mapping = <0 1 2 3 4 5 6 7 8 9>;
|
||||
ldim_dev_index = <2>;
|
||||
};
|
||||
backlight_5{
|
||||
index = <5>;
|
||||
bl_name = "backlight_5";
|
||||
bl_name = "ldim_global";
|
||||
bl_level_default_uboot_kernel = <100 100>;
|
||||
bl_level_attr = <255 10 /*max, min*/
|
||||
128 128>; /*mid, mid_mapping*/
|
||||
@@ -675,7 +674,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
local_diming_device {
|
||||
local_dimming_device {
|
||||
compatible = "amlogic, ldim_dev";
|
||||
dev_name = "ldim_dev";
|
||||
status = "okay";
|
||||
@@ -685,9 +684,9 @@
|
||||
pinctrl_version = <1>; /* for uboot */
|
||||
|
||||
/* pwm port: PWM_A, PWM_B, PWM_C, PWM_D, PWM_E, PWM_F, PWM_VS*/
|
||||
ldim_dev-gpios = <&gpio GPIOZ_12 1
|
||||
&gpio GPIOZ_6 1
|
||||
&gpio GPIOZ_7 1>;
|
||||
ldim_dev-gpios = <&gpio GPIOZ_12 GPIO_ACTIVE_HIGH
|
||||
&gpio GPIOZ_6 GPIO_ACTIVE_HIGH
|
||||
&gpio GPIOZ_7 GPIO_ACTIVE_HIGH>;
|
||||
ldim_dev_gpio_names = "GPIOZ_12","GPIOZ_6","GPIOZ_7";
|
||||
|
||||
ldim_dev_0 {
|
||||
@@ -709,15 +708,15 @@
|
||||
ldim_dev_name = "global";
|
||||
ldim_pwm_pinmux_sel = "ldim_pwm";
|
||||
ldim_pwm_port = "PWM_B";
|
||||
ldim_pwm_attr = <0 /* pol */
|
||||
200 /*freq(pwm:Hz, pwm_vs:multiple of vs)*/
|
||||
ldim_pwm_attr = <1 /* pol */
|
||||
180 /*freq(pwm:Hz, pwm_vs:multiple of vs)*/
|
||||
50>;/*duty(%)*/
|
||||
dim_max_min = <100 20>; /*dim_max, dim_min*/
|
||||
en_gpio_on_off = <2 /*ldim_dev-gpios index*/
|
||||
1 0>; /*on_level, off_level*/
|
||||
};
|
||||
ldim_dev_2 {
|
||||
index = <1>;
|
||||
index = <2>;
|
||||
type = <1>; /* 0=normal,1=spi,2=i2c */
|
||||
ldim_dev_name = "iw7027";
|
||||
ldim_pwm_pinmux_sel = "ldim_pwm_vs";
|
||||
@@ -737,7 +736,10 @@
|
||||
lamp_err_gpio = <0xff>;
|
||||
/* ldim_dev-gpios index, 0xff=invalid */
|
||||
spi_write_check = <0>; /* 0=disable, 1=enable */
|
||||
|
||||
dim_max_min = <0xfff 0x7f>; /* dim_max, dim_min */
|
||||
ldim_region_mapping = <0 1 2 3 4 5 6 7 8 9>;
|
||||
|
||||
cmd_size = <4>;
|
||||
/* init: (type, data..., delay),
|
||||
* must match cmd_size for every group
|
||||
@@ -753,7 +755,7 @@
|
||||
0x00 0x27 0x60 0x00
|
||||
0x00 0x29 0x00 0x00
|
||||
0x00 0x2a 0x00 0x00
|
||||
/*0x00 0x2b 0x7f 0x00*/
|
||||
0x00 0x2b 0x00 0x00
|
||||
0x00 0x2c 0x73 0x00
|
||||
0x00 0x2d 0x37 0x00
|
||||
0x00 0x31 0x93 0x00
|
||||
|
||||
@@ -121,12 +121,12 @@ struct bl_method_match_s {
|
||||
};
|
||||
|
||||
static struct bl_method_match_s bl_method_match_table[] = {
|
||||
{"gpio", BL_CTRL_GPIO},
|
||||
{"pwm", BL_CTRL_PWM},
|
||||
{"pwm_combo", BL_CTRL_PWM_COMBO},
|
||||
{"local_diming", BL_CTRL_LOCAL_DIMING},
|
||||
{"extern", BL_CTRL_EXTERN},
|
||||
{"invalid", BL_CTRL_MAX},
|
||||
{"gpio", BL_CTRL_GPIO},
|
||||
{"pwm", BL_CTRL_PWM},
|
||||
{"pwm_combo", BL_CTRL_PWM_COMBO},
|
||||
{"local_dimming", BL_CTRL_LOCAL_DIMMING},
|
||||
{"extern", BL_CTRL_EXTERN},
|
||||
{"invalid", BL_CTRL_MAX},
|
||||
};
|
||||
|
||||
static char *bl_method_type_to_str(int type)
|
||||
@@ -661,7 +661,7 @@ static void bl_power_on(void)
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
break;
|
||||
case BL_CTRL_PWM:
|
||||
if (bconf->pwm_en_sequence_reverse) {
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
if (bconf->pwm_on_delay > 0)
|
||||
@@ -678,7 +678,7 @@ static void bl_power_on(void)
|
||||
}
|
||||
break;
|
||||
case BL_CTRL_PWM_COMBO:
|
||||
if (bconf->pwm_en_sequence_reverse) {
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
if (bconf->pwm_on_delay > 0)
|
||||
@@ -697,44 +697,66 @@ static void bl_power_on(void)
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
/* step 2: power on ldim */
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
ldim_drv = aml_ldim_get_driver();
|
||||
if (ldim_drv == NULL) {
|
||||
BLERR("no ldim driver\n");
|
||||
} else {
|
||||
goto exit_power_on_bl;
|
||||
}
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
/* step 2: power on ldim */
|
||||
if (ldim_drv->power_on) {
|
||||
ret = ldim_drv->power_on();
|
||||
if (ret) {
|
||||
if (ret)
|
||||
BLERR("ldim: power on error\n");
|
||||
goto exit_power_on_bl;
|
||||
}
|
||||
} else {
|
||||
BLPR("ldim: power on is null\n");
|
||||
}
|
||||
} else {
|
||||
/* step 1: power on ldim */
|
||||
if (ldim_drv->power_on) {
|
||||
ret = ldim_drv->power_on();
|
||||
if (ret)
|
||||
BLERR("ldim: power on error\n");
|
||||
} else {
|
||||
BLPR("ldim: power on is null\n");
|
||||
}
|
||||
/* step 2: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_AMLOGIC_BL_EXTERN
|
||||
case BL_CTRL_EXTERN:
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
/* step 2: power on bl_extern */
|
||||
bl_ext = aml_bl_extern_get_driver();
|
||||
if (bl_ext == NULL) {
|
||||
BLERR("no bl_extern driver\n");
|
||||
} else {
|
||||
goto exit_power_on_bl;
|
||||
}
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
/* step 2: power on bl_extern */
|
||||
if (bl_ext->power_on) {
|
||||
ret = bl_ext->power_on();
|
||||
if (ret) {
|
||||
if (ret)
|
||||
BLERR("bl_extern: power on error\n");
|
||||
goto exit_power_on_bl;
|
||||
}
|
||||
} else {
|
||||
BLERR("bl_extern: power on is null\n");
|
||||
}
|
||||
} else {
|
||||
/* step 1: power on bl_extern */
|
||||
if (bl_ext->power_on) {
|
||||
ret = bl_ext->power_on();
|
||||
if (ret)
|
||||
BLERR("bl_extern: power on error\n");
|
||||
} else {
|
||||
BLERR("bl_extern: power on is null\n");
|
||||
}
|
||||
/* step 2: power on enable */
|
||||
bl_power_en_ctrl(bconf, 1);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@@ -775,7 +797,7 @@ static void bl_power_off(void)
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
break;
|
||||
case BL_CTRL_PWM:
|
||||
if (bconf->pwm_en_sequence_reverse) {
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power off pwm */
|
||||
bl_pwm_ctrl(bconf->bl_pwm, 0);
|
||||
if (bconf->pwm_off_delay > 0)
|
||||
@@ -792,7 +814,7 @@ static void bl_power_off(void)
|
||||
}
|
||||
break;
|
||||
case BL_CTRL_PWM_COMBO:
|
||||
if (bconf->pwm_en_sequence_reverse) {
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power off pwm_combo */
|
||||
bl_pwm_ctrl(bconf->bl_pwm_combo0, 0);
|
||||
bl_pwm_ctrl(bconf->bl_pwm_combo1, 0);
|
||||
@@ -811,12 +833,27 @@ static void bl_power_off(void)
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
/* step 1: power off ldim */
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
ldim_drv = aml_ldim_get_driver();
|
||||
if (ldim_drv == NULL) {
|
||||
BLERR("no ldim driver\n");
|
||||
goto exit_power_off_bl;
|
||||
}
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power off ldim */
|
||||
if (ldim_drv->power_off) {
|
||||
ret = ldim_drv->power_off();
|
||||
if (ret)
|
||||
BLERR("ldim: power off error\n");
|
||||
} else {
|
||||
BLERR("ldim: power off is null\n");
|
||||
}
|
||||
/* step 2: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
} else {
|
||||
/* step 1: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
/* step 2: power off ldim */
|
||||
if (ldim_drv->power_off) {
|
||||
ret = ldim_drv->power_off();
|
||||
if (ret)
|
||||
@@ -825,17 +862,30 @@ static void bl_power_off(void)
|
||||
BLERR("ldim: power off is null\n");
|
||||
}
|
||||
}
|
||||
/* step 2: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_AMLOGIC_BL_EXTERN
|
||||
case BL_CTRL_EXTERN:
|
||||
/* step 1: power off bl_extern */
|
||||
bl_ext = aml_bl_extern_get_driver();
|
||||
if (bl_ext == NULL) {
|
||||
BLERR("no bl_extern driver\n");
|
||||
goto exit_power_off_bl;
|
||||
}
|
||||
if (bconf->en_sequence_reverse) {
|
||||
/* step 1: power off bl_extern */
|
||||
if (bl_ext->power_off) {
|
||||
ret = bl_ext->power_off();
|
||||
if (ret)
|
||||
BLERR("bl_extern: power off error\n");
|
||||
} else {
|
||||
BLERR("bl_extern: power off is null\n");
|
||||
}
|
||||
/* step 2: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
} else {
|
||||
/* step 1: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
/* step 2: power off bl_extern */
|
||||
if (bl_ext->power_off) {
|
||||
ret = bl_ext->power_off();
|
||||
if (ret)
|
||||
@@ -844,8 +894,6 @@ static void bl_power_off(void)
|
||||
BLERR("bl_extern: power off is null\n");
|
||||
}
|
||||
}
|
||||
/* step 2: power off enable */
|
||||
bl_power_en_ctrl(bconf, 0);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@@ -857,6 +905,8 @@ static void bl_power_off(void)
|
||||
|
||||
bl_drv->state &= ~BL_STATE_BL_ON;
|
||||
BLPR("backlight power off\n");
|
||||
|
||||
exit_power_off_bl:
|
||||
mutex_unlock(&bl_power_mutex);
|
||||
}
|
||||
|
||||
@@ -1048,7 +1098,7 @@ static void aml_bl_set_level(unsigned int level)
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
bl_set_level_ldim(level);
|
||||
break;
|
||||
#endif
|
||||
@@ -1204,8 +1254,8 @@ static void aml_bl_config_print(struct bl_config_s *bconf)
|
||||
case BL_CTRL_PWM:
|
||||
BLPR("pwm_on_delay = %dms\n", bconf->pwm_on_delay);
|
||||
BLPR("pwm_off_delay = %dms\n", bconf->pwm_off_delay);
|
||||
BLPR("pwm_en_sequence_reverse = %d\n",
|
||||
bconf->pwm_en_sequence_reverse);
|
||||
BLPR("en_sequence_reverse = %d\n",
|
||||
bconf->en_sequence_reverse);
|
||||
if (bconf->bl_pwm) {
|
||||
bl_pwm = bconf->bl_pwm;
|
||||
BLPR("pwm_index = %d\n", bl_pwm->index);
|
||||
@@ -1233,8 +1283,8 @@ static void aml_bl_config_print(struct bl_config_s *bconf)
|
||||
case BL_CTRL_PWM_COMBO:
|
||||
BLPR("pwm_on_delay = %dms\n", bconf->pwm_on_delay);
|
||||
BLPR("pwm_off_delay = %dms\n", bconf->pwm_off_delay);
|
||||
BLPR("pwm_en_sequence_reverse = %d\n",
|
||||
bconf->pwm_en_sequence_reverse);
|
||||
BLPR("en_sequence_reverse = %d\n",
|
||||
bconf->en_sequence_reverse);
|
||||
/* pwm_combo_0 */
|
||||
if (bconf->bl_pwm_combo0) {
|
||||
bl_pwm = bconf->bl_pwm_combo0;
|
||||
@@ -1464,9 +1514,9 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
|
||||
"bl_pwm_en_sequence_reverse", &val);
|
||||
if (ret) {
|
||||
BLPR("don't find bl_pwm_en_sequence_reverse\n");
|
||||
bconf->pwm_en_sequence_reverse = 0;
|
||||
bconf->en_sequence_reverse = 0;
|
||||
} else
|
||||
bconf->pwm_en_sequence_reverse = val;
|
||||
bconf->en_sequence_reverse = val;
|
||||
|
||||
bl_pwm->pwm_duty = bl_pwm->pwm_duty_min;
|
||||
/* init pwm config */
|
||||
@@ -1591,9 +1641,9 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
|
||||
"bl_pwm_en_sequence_reverse", &val);
|
||||
if (ret) {
|
||||
BLPR("don't find bl_pwm_en_sequence_reverse\n");
|
||||
bconf->pwm_en_sequence_reverse = 0;
|
||||
bconf->en_sequence_reverse = 0;
|
||||
} else
|
||||
bconf->pwm_en_sequence_reverse = val;
|
||||
bconf->en_sequence_reverse = val;
|
||||
|
||||
pwm_combo0->pwm_duty = pwm_combo0->pwm_duty_min;
|
||||
pwm_combo1->pwm_duty = pwm_combo1->pwm_duty_min;
|
||||
@@ -1602,19 +1652,21 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
|
||||
bl_pwm_config_init(pwm_combo1);
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
bconf->ldim_flag = 1;
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_AMLOGIC_BL_EXTERN
|
||||
case BL_CTRL_EXTERN:
|
||||
/* get bl_extern_index from dts */
|
||||
ret = of_property_read_u32(child, "bl_extern_index", &bl_para[0]);
|
||||
if (ret)
|
||||
BLERR("failed to get bl_extern_index\n");
|
||||
else {
|
||||
bconf->bl_extern_index = bl_para[0];
|
||||
BLPR("get bl_extern_index = %d\n", bconf->bl_extern_index);
|
||||
/* get bl_extern_index from dts */
|
||||
ret = of_property_read_u32(child, "bl_extern_index",
|
||||
&bl_para[0]);
|
||||
if (ret) {
|
||||
BLERR("failed to get bl_extern_index\n");
|
||||
} else {
|
||||
bconf->bl_extern_index = bl_para[0];
|
||||
BLPR("get bl_extern_index = %d\n",
|
||||
bconf->bl_extern_index);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@@ -1622,6 +1674,14 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
if (bconf->ldim_flag) {
|
||||
ret = aml_ldim_get_config_dts(child);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@@ -1770,11 +1830,11 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
|
||||
bl_pwm->pwm_duty_min = *(p + LCD_UKEY_BL_PWM_DUTY_MIN);
|
||||
|
||||
if (bl_header.version == 2)
|
||||
bconf->pwm_en_sequence_reverse =
|
||||
bconf->en_sequence_reverse =
|
||||
(*(p + LCD_UKEY_BL_CUST_VAL_0) |
|
||||
((*(p + LCD_UKEY_BL_CUST_VAL_0 + 1)) << 8));
|
||||
else
|
||||
bconf->pwm_en_sequence_reverse = 0;
|
||||
bconf->en_sequence_reverse = 0;
|
||||
|
||||
bl_pwm->pwm_duty = bl_pwm->pwm_duty_min;
|
||||
bl_pwm_config_init(bl_pwm);
|
||||
@@ -1852,11 +1912,11 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
|
||||
((*(p + LCD_UKEY_BL_PWM2_LEVEL_MIN + 1)) << 8));
|
||||
|
||||
if (bl_header.version == 2)
|
||||
bconf->pwm_en_sequence_reverse = (*(p +
|
||||
bconf->en_sequence_reverse = (*(p +
|
||||
LCD_UKEY_BL_CUST_VAL_0) |
|
||||
((*(p + LCD_UKEY_BL_CUST_VAL_0 + 1)) << 8));
|
||||
else
|
||||
bconf->pwm_en_sequence_reverse = 0;
|
||||
bconf->en_sequence_reverse = 0;
|
||||
|
||||
pwm_combo0->pwm_duty = pwm_combo0->pwm_duty_min;
|
||||
pwm_combo1->pwm_duty = pwm_combo1->pwm_duty_min;
|
||||
@@ -1864,7 +1924,7 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
|
||||
bl_pwm_config_init(pwm_combo1);
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
bconf->ldim_flag = 1;
|
||||
break;
|
||||
#endif
|
||||
@@ -1872,6 +1932,16 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
if (bconf->ldim_flag) {
|
||||
ret = aml_ldim_get_config_unifykey(para);
|
||||
if (ret < 0) {
|
||||
kfree(para);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
kfree(para);
|
||||
return 0;
|
||||
}
|
||||
@@ -2003,7 +2073,7 @@ static int aml_bl_config_load(struct bl_config_s *bconf,
|
||||
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
if (bconf->ldim_flag)
|
||||
aml_ldim_probe(pdev, load_id);
|
||||
aml_ldim_probe(pdev);
|
||||
#endif
|
||||
|
||||
switch (bconf->method) {
|
||||
@@ -2157,7 +2227,7 @@ static int aml_bl_lcd_update_notifier(struct notifier_block *nb,
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
if (ldim_drv->pwm_vs_update)
|
||||
ldim_drv->pwm_vs_update();
|
||||
break;
|
||||
@@ -2194,7 +2264,7 @@ static int aml_bl_lcd_test_notifier(struct notifier_block *nb,
|
||||
flag = (int *)data;
|
||||
switch (bl_drv->bconf->method) {
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
if (ldim_drv->test_ctrl)
|
||||
ldim_drv->test_ctrl(*flag);
|
||||
break;
|
||||
@@ -2295,11 +2365,11 @@ static ssize_t bl_status_read(struct class *class,
|
||||
"pwm_duty_min: %d\n"
|
||||
"pwm_on_delay: %d\n"
|
||||
"pwm_off_delay: %d\n"
|
||||
"pwm_en_sequence_reverse: %d\n\n",
|
||||
"en_sequence_reverse: %d\n\n",
|
||||
bl_pwm->pwm_method, bl_pwm->pwm_port, bl_pwm->pwm_freq,
|
||||
bl_pwm->pwm_duty_max, bl_pwm->pwm_duty_min,
|
||||
bconf->pwm_on_delay, bconf->pwm_off_delay,
|
||||
bconf->pwm_en_sequence_reverse);
|
||||
bconf->en_sequence_reverse);
|
||||
break;
|
||||
case BL_CTRL_PWM_COMBO:
|
||||
pwm_combo0 = bconf->bl_pwm_combo0;
|
||||
@@ -2321,7 +2391,7 @@ static ssize_t bl_status_read(struct class *class,
|
||||
"pwm_1_duty_min: %d\n"
|
||||
"pwm_on_delay: %d\n"
|
||||
"pwm_off_delay: %d\n"
|
||||
"pwm_en_sequence_reverse: %d\n\n",
|
||||
"en_sequence_reverse: %d\n\n",
|
||||
pwm_combo0->level_max, pwm_combo0->level_min,
|
||||
pwm_combo0->pwm_method, pwm_combo0->pwm_port,
|
||||
pwm_combo0->pwm_freq,
|
||||
@@ -2331,10 +2401,10 @@ static ssize_t bl_status_read(struct class *class,
|
||||
pwm_combo1->pwm_freq,
|
||||
pwm_combo1->pwm_duty_max, pwm_combo1->pwm_duty_min,
|
||||
bconf->pwm_on_delay, bconf->pwm_off_delay,
|
||||
bconf->pwm_en_sequence_reverse);
|
||||
bconf->en_sequence_reverse);
|
||||
break;
|
||||
#ifdef CONFIG_AMLOGIC_LOCAL_DIMMING
|
||||
case BL_CTRL_LOCAL_DIMING:
|
||||
case BL_CTRL_LOCAL_DIMMING:
|
||||
if (ldim_drv->config_print)
|
||||
ldim_drv->config_print();
|
||||
break;
|
||||
@@ -2397,12 +2467,11 @@ static ssize_t bl_debug_pwm_show(struct class *class,
|
||||
}
|
||||
pwm_get_state(bl_pwm->pwm_data.pwm, &pstate);
|
||||
len += sprintf(buf+len,
|
||||
"\n"
|
||||
"pwm state:\n"
|
||||
"period: %d\n"
|
||||
"duty_cycle: %d\n"
|
||||
"polarity: %d\n"
|
||||
"enabled: %d\n",
|
||||
" period: %d\n"
|
||||
" duty_cycle: %d\n"
|
||||
" polarity: %d\n"
|
||||
" enabled: %d\n",
|
||||
pstate.period, pstate.duty_cycle,
|
||||
pstate.polarity, pstate.enabled);
|
||||
value = bl_cbus_read(bl_drv->data->pwm_reg[
|
||||
@@ -2461,12 +2530,11 @@ static ssize_t bl_debug_pwm_show(struct class *class,
|
||||
}
|
||||
pwm_get_state(bl_pwm->pwm_data.pwm, &pstate);
|
||||
len += sprintf(buf+len,
|
||||
"\n"
|
||||
"pwm state:\n"
|
||||
"period: %d\n"
|
||||
"duty_cycle: %d\n"
|
||||
"polarity: %d\n"
|
||||
"enabled: %d\n",
|
||||
" period: %d\n"
|
||||
" duty_cycle: %d\n"
|
||||
" polarity: %d\n"
|
||||
" enabled: %d\n",
|
||||
pstate.period, pstate.duty_cycle,
|
||||
pstate.polarity, pstate.enabled);
|
||||
value = bl_cbus_read(bl_drv->data->pwm_reg[
|
||||
@@ -2493,6 +2561,7 @@ static ssize_t bl_debug_pwm_show(struct class *class,
|
||||
if (bconf->bl_pwm_combo1) {
|
||||
bl_pwm = bconf->bl_pwm_combo1;
|
||||
len += sprintf(buf+len,
|
||||
"\n"
|
||||
"pwm_1_index: %d\n"
|
||||
"pwm_1_method: %d\n"
|
||||
"pwm_1_port: %d\n"
|
||||
@@ -2519,12 +2588,11 @@ static ssize_t bl_debug_pwm_show(struct class *class,
|
||||
}
|
||||
pwm_get_state(bl_pwm->pwm_data.pwm, &pstate);
|
||||
len += sprintf(buf+len,
|
||||
"\n"
|
||||
"pwm state:\n"
|
||||
"period: %d\n"
|
||||
"duty_cycle: %d\n"
|
||||
"polarity: %d\n"
|
||||
"enabled: %d\n",
|
||||
" period: %d\n"
|
||||
" duty_cycle: %d\n"
|
||||
" polarity: %d\n"
|
||||
" enabled: %d\n",
|
||||
pstate.period, pstate.duty_cycle,
|
||||
pstate.polarity, pstate.enabled);
|
||||
value = bl_cbus_read(bl_drv->data->pwm_reg[
|
||||
|
||||
@@ -44,11 +44,11 @@ static int global_hw_init_on(void)
|
||||
{
|
||||
struct aml_ldim_driver_s *ldim_drv = aml_ldim_get_driver();
|
||||
|
||||
ldim_gpio_set(ldim_drv->ldev_conf->en_gpio,
|
||||
ldim_drv->ldev_conf->en_gpio_on);
|
||||
mdelay(2);
|
||||
ldim_set_duty_pwm(&(ldim_drv->ldev_conf->pwm_config));
|
||||
ldim_drv->pinmux_ctrl(ldim_drv->ldev_conf->pinmux_name);
|
||||
mdelay(2);
|
||||
ldim_gpio_set(ldim_drv->ldev_conf->en_gpio,
|
||||
ldim_drv->ldev_conf->en_gpio_on);
|
||||
mdelay(20);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -330,14 +330,10 @@ static int iw7027_spi_dump_dim(char *buf)
|
||||
return len;
|
||||
}
|
||||
|
||||
static unsigned int iw7027_get_value(unsigned int level)
|
||||
static unsigned int dim_max, dim_min;
|
||||
static inline unsigned int iw7027_get_value(unsigned int level)
|
||||
{
|
||||
struct aml_ldim_driver_s *ldim_drv = aml_ldim_get_driver();
|
||||
unsigned int val;
|
||||
unsigned int dim_max, dim_min;
|
||||
|
||||
dim_max = ldim_drv->ldev_conf->dim_max;
|
||||
dim_min = ldim_drv->ldev_conf->dim_min;
|
||||
|
||||
val = dim_min + ((level * (dim_max - dim_min)) / LD_DATA_MAX);
|
||||
|
||||
@@ -349,6 +345,8 @@ static int iw7027_smr(unsigned short *buf, unsigned char len)
|
||||
int i, j;
|
||||
unsigned int value_flag = 0;
|
||||
unsigned char val[20];
|
||||
unsigned short *mapping;
|
||||
struct aml_ldim_driver_s *ldim_drv = aml_ldim_get_driver();
|
||||
|
||||
if (iw7027_on_flag == 0) {
|
||||
if (ldim_debug_print)
|
||||
@@ -369,63 +367,65 @@ static int iw7027_smr(unsigned short *buf, unsigned char len)
|
||||
|
||||
iw7027_spi_op_flag = 1;
|
||||
|
||||
mapping = &ldim_drv->ldev_conf->bl_mapping[0];
|
||||
dim_max = ldim_drv->ldev_conf->dim_max;
|
||||
dim_min = ldim_drv->ldev_conf->dim_min;
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
value_flag = value_flag || buf[i];
|
||||
|
||||
if (value_flag) {
|
||||
if (bl_iw7027->test_mode) {
|
||||
val[0] = (test_brightness[0] & 0xf00) >> 8;
|
||||
val[1] = test_brightness[0] & 0xff;
|
||||
val[2] = (test_brightness[1] & 0xf00) >> 8;
|
||||
val[3] = test_brightness[1] & 0xff;
|
||||
val[4] = (test_brightness[2] & 0xf00) >> 8;
|
||||
val[5] = test_brightness[2] & 0xff;
|
||||
val[6] = (test_brightness[3] & 0xf00) >> 8;
|
||||
val[7] = test_brightness[3] & 0xff;
|
||||
val[8] = (test_brightness[4] & 0xf00) >> 8;
|
||||
val[9] = test_brightness[4] & 0xff;
|
||||
val[10] = (test_brightness[5] & 0xf00) >> 8;
|
||||
val[11] = test_brightness[5] & 0xff;
|
||||
val[12] = (test_brightness[6] & 0xf00) >> 8;
|
||||
val[13] = test_brightness[6] & 0xff;
|
||||
val[14] = (test_brightness[7] & 0xf00) >> 8;
|
||||
val[15] = test_brightness[7] & 0xff;
|
||||
val[16] = (test_brightness[8] & 0xf00) >> 8;
|
||||
val[17] = test_brightness[8] & 0xff;
|
||||
val[18] = (test_brightness[9] & 0xf00) >> 8;
|
||||
val[19] = test_brightness[9] & 0xff;
|
||||
|
||||
iw7027_wregs(bl_iw7027->spi, 0x40, val, 20);
|
||||
} else {
|
||||
val[0] = ((iw7027_get_value(buf[0])) & 0xf00) >> 8;
|
||||
val[1] = (iw7027_get_value(buf[0])) & 0xff;
|
||||
val[2] = ((iw7027_get_value(buf[1])) & 0xf00) >> 8;
|
||||
val[3] = (iw7027_get_value(buf[1])) & 0xff;
|
||||
val[4] = ((iw7027_get_value(buf[2])) & 0xf00) >> 8;
|
||||
val[5] = (iw7027_get_value(buf[2])) & 0xff;
|
||||
val[6] = ((iw7027_get_value(buf[3])) & 0xf00) >> 8;
|
||||
val[7] = (iw7027_get_value(buf[3])) & 0xff;
|
||||
val[8] = ((iw7027_get_value(buf[4])) & 0xf00) >> 8;
|
||||
val[9] = (iw7027_get_value(buf[4])) & 0xff;
|
||||
val[10] = ((iw7027_get_value(buf[5])) & 0xf00) >> 8;
|
||||
val[11] = (iw7027_get_value(buf[5])) & 0xff;
|
||||
val[12] = ((iw7027_get_value(buf[6])) & 0xf00) >> 8;
|
||||
val[13] = (iw7027_get_value(buf[6])) & 0xff;
|
||||
val[14] = ((iw7027_get_value(buf[7])) & 0xf00) >> 8;
|
||||
val[15] = (iw7027_get_value(buf[7])) & 0xff;
|
||||
val[16] = ((iw7027_get_value(buf[8])) & 0xf00) >> 8;
|
||||
val[17] = (iw7027_get_value(buf[8])) & 0xff;
|
||||
val[18] = ((iw7027_get_value(buf[9])) & 0xf00) >> 8;
|
||||
val[19] = (iw7027_get_value(buf[9])) & 0xff;
|
||||
|
||||
iw7027_wregs(bl_iw7027->spi, 0x40, val, 20);
|
||||
}
|
||||
} else {
|
||||
if (value_flag == 0) {
|
||||
for (j = 0; j < 20; j++)
|
||||
val[j] = 0;
|
||||
iw7027_wregs(bl_iw7027->spi, 0x40, val, 20);
|
||||
goto iw7027_smr_end;
|
||||
}
|
||||
|
||||
if (bl_iw7027->test_mode) {
|
||||
val[0] = (test_brightness[0] & 0xf00) >> 8;
|
||||
val[1] = test_brightness[0] & 0xff;
|
||||
val[2] = (test_brightness[1] & 0xf00) >> 8;
|
||||
val[3] = test_brightness[1] & 0xff;
|
||||
val[4] = (test_brightness[2] & 0xf00) >> 8;
|
||||
val[5] = test_brightness[2] & 0xff;
|
||||
val[6] = (test_brightness[3] & 0xf00) >> 8;
|
||||
val[7] = test_brightness[3] & 0xff;
|
||||
val[8] = (test_brightness[4] & 0xf00) >> 8;
|
||||
val[9] = test_brightness[4] & 0xff;
|
||||
val[10] = (test_brightness[5] & 0xf00) >> 8;
|
||||
val[11] = test_brightness[5] & 0xff;
|
||||
val[12] = (test_brightness[6] & 0xf00) >> 8;
|
||||
val[13] = test_brightness[6] & 0xff;
|
||||
val[14] = (test_brightness[7] & 0xf00) >> 8;
|
||||
val[15] = test_brightness[7] & 0xff;
|
||||
val[16] = (test_brightness[8] & 0xf00) >> 8;
|
||||
val[17] = test_brightness[8] & 0xff;
|
||||
val[18] = (test_brightness[9] & 0xf00) >> 8;
|
||||
val[19] = test_brightness[9] & 0xff;
|
||||
} else {
|
||||
val[0] = ((iw7027_get_value(buf[mapping[0]])) & 0xf00) >> 8;
|
||||
val[1] = (iw7027_get_value(buf[mapping[0]])) & 0xff;
|
||||
val[2] = ((iw7027_get_value(buf[mapping[1]])) & 0xf00) >> 8;
|
||||
val[3] = (iw7027_get_value(buf[mapping[1]])) & 0xff;
|
||||
val[4] = ((iw7027_get_value(buf[mapping[2]])) & 0xf00) >> 8;
|
||||
val[5] = (iw7027_get_value(buf[mapping[2]])) & 0xff;
|
||||
val[6] = ((iw7027_get_value(buf[mapping[3]])) & 0xf00) >> 8;
|
||||
val[7] = (iw7027_get_value(buf[mapping[3]])) & 0xff;
|
||||
val[8] = ((iw7027_get_value(buf[mapping[4]])) & 0xf00) >> 8;
|
||||
val[9] = (iw7027_get_value(buf[mapping[4]])) & 0xff;
|
||||
val[10] = ((iw7027_get_value(buf[mapping[5]])) & 0xf00) >> 8;
|
||||
val[11] = (iw7027_get_value(buf[mapping[5]])) & 0xff;
|
||||
val[12] = ((iw7027_get_value(buf[mapping[6]])) & 0xf00) >> 8;
|
||||
val[13] = (iw7027_get_value(buf[mapping[6]])) & 0xff;
|
||||
val[14] = ((iw7027_get_value(buf[mapping[7]])) & 0xf00) >> 8;
|
||||
val[15] = (iw7027_get_value(buf[mapping[7]])) & 0xff;
|
||||
val[16] = ((iw7027_get_value(buf[mapping[8]])) & 0xf00) >> 8;
|
||||
val[17] = (iw7027_get_value(buf[mapping[8]])) & 0xff;
|
||||
val[18] = ((iw7027_get_value(buf[mapping[9]])) & 0xf00) >> 8;
|
||||
val[19] = (iw7027_get_value(buf[mapping[9]])) & 0xff;
|
||||
}
|
||||
|
||||
iw7027_smr_end:
|
||||
iw7027_wregs(bl_iw7027->spi, 0x40, val, 20);
|
||||
|
||||
iw7027_spi_op_flag = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -432,8 +432,11 @@ static void ldim_config_print(void)
|
||||
{
|
||||
struct aml_ldim_driver_s *ldim_drv = aml_ldim_get_driver();
|
||||
struct bl_pwm_config_s *ld_pwm;
|
||||
int i, n, len = 0;
|
||||
char *str = NULL;
|
||||
|
||||
LDIMPR("%s:\n", __func__);
|
||||
|
||||
pr_info("valid_flag = %d\n"
|
||||
"dev_index = %d\n",
|
||||
ldim_drv->valid_flag,
|
||||
@@ -446,7 +449,7 @@ static void ldim_config_print(void)
|
||||
"en_gpio_on = %d\n"
|
||||
"en_gpio_off = %d\n"
|
||||
"dim_min = 0x%03x\n"
|
||||
"dim_max = 0x%03x\n\n",
|
||||
"dim_max = 0x%03x\n",
|
||||
ldim_drv->ldev_conf->name,
|
||||
ldim_drv->ldev_conf->type,
|
||||
ldim_drv->ldev_conf->en_gpio,
|
||||
@@ -454,6 +457,21 @@ static void ldim_config_print(void)
|
||||
ldim_drv->ldev_conf->en_gpio_off,
|
||||
ldim_drv->ldev_conf->dim_min,
|
||||
ldim_drv->ldev_conf->dim_max);
|
||||
n = ldim_drv->ldim_conf->row * ldim_drv->ldim_conf->col;
|
||||
len = (n * 4) + 50;
|
||||
str = kcalloc(len, sizeof(char), GFP_KERNEL);
|
||||
if (str == NULL) {
|
||||
pr_info("%s: buf malloc error\n", __func__);
|
||||
} else {
|
||||
len = sprintf(str, "region_mapping:\n ");
|
||||
for (i = 0; i < n; i++) {
|
||||
len += sprintf(str+len, "%d,",
|
||||
ldim_dev_config.bl_mapping[i]);
|
||||
}
|
||||
pr_info("%s\n\n", str);
|
||||
kfree(str);
|
||||
}
|
||||
|
||||
switch (ldim_drv->ldev_conf->type) {
|
||||
case LDIM_DEV_TYPE_SPI:
|
||||
pr_info("spi_modalias = %s\n"
|
||||
@@ -490,9 +508,11 @@ static void ldim_config_print(void)
|
||||
pr_info("pwm_port = %d\n"
|
||||
"pwm_pol = %d\n"
|
||||
"pwm_freq = %d\n"
|
||||
"pwm_duty = %d%%\n",
|
||||
"pwm_duty = %d%%\n"
|
||||
"pwm_pointer = %p\n",
|
||||
ld_pwm->pwm_port, ld_pwm->pwm_method,
|
||||
ld_pwm->pwm_freq, ld_pwm->pwm_duty);
|
||||
ld_pwm->pwm_freq, ld_pwm->pwm_duty,
|
||||
ld_pwm->pwm_data.pwm);
|
||||
}
|
||||
} else {
|
||||
pr_info("device config is null\n");
|
||||
@@ -504,11 +524,17 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
char ld_propname[20];
|
||||
struct device_node *child;
|
||||
const char *str;
|
||||
unsigned int temp[5], val;
|
||||
unsigned int *temp, val;
|
||||
int i, j;
|
||||
int ret = 0;
|
||||
struct aml_ldim_driver_s *ldim_drv = aml_ldim_get_driver();
|
||||
|
||||
temp = kcalloc(LD_BLKREGNUM, sizeof(unsigned int), GFP_KERNEL);
|
||||
if (temp == NULL) {
|
||||
LDIMERR("%s: buf malloc error\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(ldim_dev_config.init_on, 0, LDIM_SPI_INIT_ON_SIZE);
|
||||
memset(ldim_dev_config.init_off, 0, LDIM_SPI_INIT_OFF_SIZE);
|
||||
ldim_dev_config.init_on[0] = 0xff;
|
||||
@@ -520,7 +546,7 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
child = of_get_child_by_name(np, ld_propname);
|
||||
if (child == NULL) {
|
||||
LDIMERR("failed to get %s\n", ld_propname);
|
||||
return -1;
|
||||
goto ldim_get_config_err;
|
||||
}
|
||||
|
||||
ret = of_property_read_string(child, "ldim_dev_name", &str);
|
||||
@@ -570,16 +596,6 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
bl_pwm_config_init(&ldim_dev_config.pwm_config);
|
||||
}
|
||||
|
||||
ret = of_property_read_u32_array(child, "dim_max_min", &temp[0], 2);
|
||||
if (ret) {
|
||||
LDIMERR("failed to get dim_max_min\n");
|
||||
ldim_dev_config.dim_max = 0xfff;
|
||||
ldim_dev_config.dim_min = 0x7f;
|
||||
} else {
|
||||
ldim_dev_config.dim_max = temp[0];
|
||||
ldim_dev_config.dim_min = temp[1];
|
||||
}
|
||||
|
||||
ret = of_property_read_u32_array(child, "en_gpio_on_off", temp, 3);
|
||||
if (ret) {
|
||||
LDIMERR("failed to get en_gpio_on_off\n");
|
||||
@@ -597,17 +613,40 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
ldim_dev_config.en_gpio_off = temp[2];
|
||||
}
|
||||
|
||||
ret = of_property_read_u32_array(child, "dim_max_min", &temp[0], 2);
|
||||
if (ret) {
|
||||
LDIMERR("failed to get dim_max_min\n");
|
||||
ldim_dev_config.dim_max = 0xfff;
|
||||
ldim_dev_config.dim_min = 0x7f;
|
||||
} else {
|
||||
ldim_dev_config.dim_max = temp[0];
|
||||
ldim_dev_config.dim_min = temp[1];
|
||||
}
|
||||
|
||||
val = ldim_drv->ldim_conf->row * ldim_drv->ldim_conf->col;
|
||||
ret = of_property_read_u32_array(child, "ldim_region_mapping",
|
||||
&temp[0], val);
|
||||
if (ret) {
|
||||
LDIMERR("failed to get ldim_region_mapping\n");
|
||||
for (i = 0; i < LD_BLKREGNUM; i++)
|
||||
ldim_dev_config.bl_mapping[i] = (unsigned short)i;
|
||||
} else {
|
||||
for (i = 0; i < val; i++)
|
||||
ldim_dev_config.bl_mapping[i] = (unsigned short)temp[i];
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(child, "type", &val);
|
||||
if (ret) {
|
||||
LDIMERR("failed to get type\n");
|
||||
ldim_dev_config.type = LDIM_DEV_TYPE_NORMAL;
|
||||
} else {
|
||||
ldim_dev_config.type = val;
|
||||
LDIMPR("type: %d\n", ldim_dev_config.type);
|
||||
if (ldim_debug_print)
|
||||
LDIMPR("type: %d\n", ldim_dev_config.type);
|
||||
}
|
||||
if (ldim_dev_config.type >= LDIM_DEV_TYPE_MAX) {
|
||||
LDIMERR("type num is out of support\n");
|
||||
return -1;
|
||||
goto ldim_get_config_err;
|
||||
}
|
||||
|
||||
switch (ldim_dev_config.type) {
|
||||
@@ -620,7 +659,10 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
LDIMERR("failed to get spi_bus_num\n");
|
||||
} else {
|
||||
ldim_spi_dev.bus_num = val;
|
||||
LDIMPR("bus_num: %d\n", ldim_spi_dev.bus_num);
|
||||
if (ldim_debug_print) {
|
||||
LDIMPR("spi bus_num: %d\n",
|
||||
ldim_spi_dev.bus_num);
|
||||
}
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(child, "spi_chip_select", &val);
|
||||
@@ -628,7 +670,10 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
LDIMERR("failed to get spi_chip_select\n");
|
||||
} else {
|
||||
ldim_spi_dev.chip_select = val;
|
||||
LDIMPR("chip_select: %d\n", ldim_spi_dev.chip_select);
|
||||
if (ldim_debug_print) {
|
||||
LDIMPR("spi chip_select: %d\n",
|
||||
ldim_spi_dev.chip_select);
|
||||
}
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(child, "spi_max_frequency", &val);
|
||||
@@ -636,7 +681,10 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
LDIMERR("failed to get spi_chip_select\n");
|
||||
} else {
|
||||
ldim_spi_dev.max_speed_hz = val;
|
||||
LDIMPR("max_speed_hz: %d\n", ldim_spi_dev.max_speed_hz);
|
||||
if (ldim_debug_print) {
|
||||
LDIMPR("spi max_speed_hz: %d\n",
|
||||
ldim_spi_dev.max_speed_hz);
|
||||
}
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(child, "spi_mode", &val);
|
||||
@@ -644,7 +692,8 @@ static int ldim_dev_get_config_from_dts(struct device_node *np, int index)
|
||||
LDIMERR("failed to get spi_mode\n");
|
||||
} else {
|
||||
ldim_spi_dev.mode = val;
|
||||
LDIMPR("mode: %d\n", ldim_spi_dev.mode);
|
||||
if (ldim_debug_print)
|
||||
LDIMPR("spi mode: %d\n", ldim_spi_dev.mode);
|
||||
}
|
||||
|
||||
ret = of_property_read_u32_array(child, "spi_cs_delay",
|
||||
@@ -756,7 +805,13 @@ ldim_get_config_end:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
kfree(temp);
|
||||
return 0;
|
||||
|
||||
ldim_get_config_err:
|
||||
kfree(temp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int ldim_dev_add_driver(struct ldim_dev_config_s *ldev_conf, int index)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,7 @@
|
||||
#ifndef _AML_LDIM_DRV_H_
|
||||
#define _AML_LDIM_DRV_H_
|
||||
#include <linux/cdev.h>
|
||||
#include <linux/amlogic/media/vout/lcd/aml_ldim.h>
|
||||
|
||||
#define AML_LDIM_MODULE_NAME "aml_ldim"
|
||||
#define AML_LDIM_DRIVER_NAME "aml_ldim"
|
||||
@@ -29,7 +30,7 @@
|
||||
|
||||
/*#define LDIM_EXT_DEBUG_INFO*/
|
||||
#define LDIMPR(fmt, args...) pr_info("ldim: "fmt"", ## args)
|
||||
#define LDIMERR(fmt, args...) pr_info("ldim: error: "fmt"", ## args)
|
||||
#define LDIMERR(fmt, args...) pr_err("ldim: error: "fmt"", ## args)
|
||||
|
||||
extern unsigned int ldim_debug_print;
|
||||
|
||||
@@ -106,18 +107,11 @@ extern unsigned int ldim_debug_print;
|
||||
#define LD_LUT_LEN 32
|
||||
#define LD_BLKHMAX 32
|
||||
#define LD_BLKVMAX 32
|
||||
#define LD_BLKREGNUM 384 /* maximum support 24*16*/
|
||||
|
||||
|
||||
#define LD_DATA_DEPTH 12
|
||||
#define LD_DATA_MAX 0xfff
|
||||
|
||||
struct ldim_config_s {
|
||||
unsigned short hsize;
|
||||
unsigned short vsize;
|
||||
unsigned char bl_mode;
|
||||
unsigned short bl_mapping[LD_BLKREGNUM];
|
||||
};
|
||||
|
||||
struct LDReg {
|
||||
int reg_LD_pic_RowMax; /*u13*/
|
||||
int reg_LD_pic_ColMax; /*u13*/
|
||||
|
||||
@@ -659,7 +659,7 @@ void ldim_read_region(unsigned int nrow, unsigned int ncol)
|
||||
*/
|
||||
void ldim_set_matrix_ycbcr2rgb(void)
|
||||
{
|
||||
Wr_reg_bits(LDIM_STTS_CTRL0, 0, 2, 1);
|
||||
Wr_reg_bits(LDIM_STTS_CTRL0, 1, 2, 1); /* enable matrix */
|
||||
|
||||
Wr(LDIM_STTS_MATRIX_PRE_OFFSET0_1, 0x07c00600);
|
||||
Wr(LDIM_STTS_MATRIX_PRE_OFFSET2, 0x00000600);
|
||||
@@ -681,18 +681,15 @@ void ldim_set_matrix_rgb2ycbcr(int mode)
|
||||
/* 0.257 0.504 0.098 */
|
||||
/* -0.148 -0.291 0.439 */
|
||||
/* 0.439 -0.368 -0.071 */
|
||||
Wr(LDIM_STTS_MATRIX_COEF00_01, (0x107 << 16) |
|
||||
0x204);
|
||||
Wr(LDIM_STTS_MATRIX_COEF02_10, (0x64 << 16) |
|
||||
0x1f68);
|
||||
Wr(LDIM_STTS_MATRIX_COEF11_12, (0x1ed6 << 16) |
|
||||
0x1c2);
|
||||
Wr(LDIM_STTS_MATRIX_COEF20_21, (0x1c2 << 16) |
|
||||
0x1e87);
|
||||
Wr(LDIM_STTS_MATRIX_COEF00_01, (0x107 << 16) | 0x204);
|
||||
Wr(LDIM_STTS_MATRIX_COEF02_10, (0x64 << 16) | 0x1f68);
|
||||
Wr(LDIM_STTS_MATRIX_COEF11_12, (0x1ed6 << 16) | 0x1c2);
|
||||
Wr(LDIM_STTS_MATRIX_COEF20_21, (0x1c2 << 16) | 0x1e87);
|
||||
Wr(LDIM_STTS_MATRIX_COEF22, 0x1fb7);
|
||||
|
||||
Wr(LDIM_STTS_MATRIX_OFFSET2, 0x0200);
|
||||
} else if (mode == 1) {/*ycbcr full range, 601 conversion*/
|
||||
/* todo */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,86 +759,102 @@ void LD_MtxInv(int *oDat, int *iDat, int nRow, int nCol)
|
||||
}
|
||||
|
||||
static int Remap_lut[16][32] = {
|
||||
{ 128, 258, 387, 517, 646, 776, 905, 1034,
|
||||
1163, 1291, 1420, 1548, 1676, 1804, 1932, 2059,
|
||||
2187, 2314, 2441, 2569, 2696, 2823, 2950, 3077,
|
||||
3204, 3331, 3458, 3586, 3713, 3840, 3968, 4095,
|
||||
},
|
||||
{ 114, 230, 345, 461, 577, 693, 808, 923,
|
||||
1038, 1153, 1267, 1382, 1496, 1610, 1724, 1844,
|
||||
1987, 2130, 2272, 2415, 2557, 2700, 2842, 2985,
|
||||
3127, 3270, 3412, 3555, 3697, 3840, 3981, 4095,
|
||||
},
|
||||
{ 114, 230, 345, 461, 577, 692, 808, 923,
|
||||
1038, 1152, 1267, 1381, 1496, 1610, 1731, 1874,
|
||||
2017, 2160, 2303, 2445, 2588, 2731, 2873, 3015,
|
||||
3158, 3300, 3443, 3585, 3728, 3868, 3981, 4095,
|
||||
},
|
||||
{ 115, 230, 346, 462, 579, 694, 810, 926,
|
||||
1041, 1155, 1270, 1384, 1499, 1637, 1781, 1923,
|
||||
2066, 2209, 2351, 2494, 2636, 2778, 2921, 3063,
|
||||
3205, 3347, 3490, 3632, 3754, 3868, 3982, 4095,
|
||||
},
|
||||
{ 119, 243, 367, 493, 620, 744, 867, 988,
|
||||
1106, 1224, 1340, 1456, 1596, 1739, 1881, 2021,
|
||||
2161, 2300, 2438, 2576, 2713, 2850, 2987, 3124,
|
||||
3261, 3399, 3536, 3652, 3761, 3871, 3982, 4095,
|
||||
},
|
||||
{ 116, 240, 364, 490, 619, 742, 863, 982,
|
||||
1096, 1208, 1319, 1469, 1620, 1769, 1917, 2063,
|
||||
2208, 2352, 2494, 2636, 2777, 2918, 3059, 3200,
|
||||
3341, 3482, 3589, 3687, 3786, 3887, 3990, 4095,
|
||||
},
|
||||
{ 114, 237, 361, 487, 615, 737, 857, 973,
|
||||
1085, 1221, 1380, 1536, 1691, 1844, 1994, 2144,
|
||||
2291, 2438, 2583, 2727, 2870, 3014, 3157, 3300,
|
||||
3424, 3518, 3610, 3704, 3798, 3894, 3994, 4095,
|
||||
},
|
||||
{ 113, 238, 363, 490, 620, 744, 863, 978,
|
||||
1091, 1256, 1419, 1579, 1737, 1893, 2046, 2198,
|
||||
2348, 2496, 2642, 2788, 2933, 3077, 3222, 3366,
|
||||
3459, 3547, 3633, 3722, 3811, 3903, 3997, 4095,
|
||||
},
|
||||
{ 120, 255, 390, 528, 669, 801, 928, 1050,
|
||||
1194, 1356, 1515, 1671, 1825, 1975, 2123, 2268,
|
||||
2412, 2553, 2693, 2832, 2970, 3107, 3244, 3361,
|
||||
3448, 3536, 3623, 3713, 3804, 3897, 3994, 4095,
|
||||
},
|
||||
{ 134, 292, 449, 611, 775, 924, 1063, 1193,
|
||||
1340, 1503, 1661, 1814, 1963, 2108, 2249, 2387,
|
||||
2522, 2654, 2785, 2914, 3042, 3169, 3297, 3405,
|
||||
3484, 3565, 3644, 3727, 3813, 3901, 3996, 4095,
|
||||
},
|
||||
{ 160, 358, 550, 746, 943, 1113, 1266, 1406,
|
||||
1552, 1708, 1858, 2000, 2138, 2269, 2397, 2520,
|
||||
2640, 2757, 2872, 2985, 3098, 3211, 3325, 3422,
|
||||
3496, 3572, 3647, 3727, 3811, 3898, 3993, 4095,
|
||||
},
|
||||
{ 201, 456, 693, 929, 1162, 1354, 1520, 1671,
|
||||
1822, 1963, 2095, 2220, 2339, 2451, 2559, 2662,
|
||||
2762, 2859, 2955, 3049, 3143, 3239, 3335, 3407,
|
||||
3479, 3556, 3630, 3712, 3797, 3887, 3987, 4095,
|
||||
},
|
||||
{ 243, 546, 815, 1079, 1334, 1536, 1707, 1857,
|
||||
1996, 2125, 2245, 2357, 2462, 2561, 2655, 2746,
|
||||
2833, 2917, 3000, 3083, 3166, 3250, 3336, 3405,
|
||||
3476, 3551, 3624, 3706, 3791, 3882, 3984, 4095,
|
||||
},
|
||||
{ 280, 622, 914, 1195, 1465, 1672, 1844, 1993,
|
||||
2122, 2240, 2349, 2450, 2545, 2634, 2718, 2798,
|
||||
2875, 2950, 3023, 3097, 3171, 3247, 3325, 3393,
|
||||
3464, 3540, 3614, 3697, 3784, 3876, 3981, 4095,
|
||||
},
|
||||
{ 308, 675, 979, 1268, 1544, 1752, 1922, 2067,
|
||||
2191, 2304, 2408, 2505, 2595, 2679, 2758, 2834,
|
||||
2907, 2978, 3048, 3118, 3189, 3262, 3338, 3404,
|
||||
3473, 3546, 3618, 3700, 3785, 3877, 3981, 4095,
|
||||
},
|
||||
{ 342, 738, 1058, 1360, 1648, 1862, 2037, 2184,
|
||||
2295, 2396, 2488, 2573, 2651, 2724, 2792, 2857,
|
||||
2919, 2979, 3038, 3098, 3158, 3221, 3287, 3357,
|
||||
3431, 3510, 3588, 3674, 3766, 3864, 3975, 4095,
|
||||
},
|
||||
{
|
||||
128, 258, 387, 517, 646, 776, 905, 1034,
|
||||
1163, 1291, 1420, 1548, 1676, 1804, 1932, 2059,
|
||||
2187, 2314, 2441, 2569, 2696, 2823, 2950, 3077,
|
||||
3204, 3331, 3458, 3586, 3713, 3840, 3968, 4095,
|
||||
},
|
||||
{
|
||||
114, 230, 345, 461, 577, 693, 808, 923,
|
||||
1038, 1153, 1267, 1382, 1496, 1610, 1724, 1844,
|
||||
1987, 2130, 2272, 2415, 2557, 2700, 2842, 2985,
|
||||
3127, 3270, 3412, 3555, 3697, 3840, 3981, 4095,
|
||||
},
|
||||
{
|
||||
114, 230, 345, 461, 577, 692, 808, 923,
|
||||
1038, 1152, 1267, 1381, 1496, 1610, 1731, 1874,
|
||||
2017, 2160, 2303, 2445, 2588, 2731, 2873, 3015,
|
||||
3158, 3300, 3443, 3585, 3728, 3868, 3981, 4095,
|
||||
},
|
||||
{
|
||||
115, 230, 346, 462, 579, 694, 810, 926,
|
||||
1041, 1155, 1270, 1384, 1499, 1637, 1781, 1923,
|
||||
2066, 2209, 2351, 2494, 2636, 2778, 2921, 3063,
|
||||
3205, 3347, 3490, 3632, 3754, 3868, 3982, 4095,
|
||||
},
|
||||
{
|
||||
119, 243, 367, 493, 620, 744, 867, 988,
|
||||
1106, 1224, 1340, 1456, 1596, 1739, 1881, 2021,
|
||||
2161, 2300, 2438, 2576, 2713, 2850, 2987, 3124,
|
||||
3261, 3399, 3536, 3652, 3761, 3871, 3982, 4095,
|
||||
},
|
||||
{
|
||||
116, 240, 364, 490, 619, 742, 863, 982,
|
||||
1096, 1208, 1319, 1469, 1620, 1769, 1917, 2063,
|
||||
2208, 2352, 2494, 2636, 2777, 2918, 3059, 3200,
|
||||
3341, 3482, 3589, 3687, 3786, 3887, 3990, 4095,
|
||||
},
|
||||
{
|
||||
114, 237, 361, 487, 615, 737, 857, 973,
|
||||
1085, 1221, 1380, 1536, 1691, 1844, 1994, 2144,
|
||||
2291, 2438, 2583, 2727, 2870, 3014, 3157, 3300,
|
||||
3424, 3518, 3610, 3704, 3798, 3894, 3994, 4095,
|
||||
},
|
||||
{
|
||||
113, 238, 363, 490, 620, 744, 863, 978,
|
||||
1091, 1256, 1419, 1579, 1737, 1893, 2046, 2198,
|
||||
2348, 2496, 2642, 2788, 2933, 3077, 3222, 3366,
|
||||
3459, 3547, 3633, 3722, 3811, 3903, 3997, 4095,
|
||||
},
|
||||
{
|
||||
120, 255, 390, 528, 669, 801, 928, 1050,
|
||||
1194, 1356, 1515, 1671, 1825, 1975, 2123, 2268,
|
||||
2412, 2553, 2693, 2832, 2970, 3107, 3244, 3361,
|
||||
3448, 3536, 3623, 3713, 3804, 3897, 3994, 4095,
|
||||
},
|
||||
{
|
||||
134, 292, 449, 611, 775, 924, 1063, 1193,
|
||||
1340, 1503, 1661, 1814, 1963, 2108, 2249, 2387,
|
||||
2522, 2654, 2785, 2914, 3042, 3169, 3297, 3405,
|
||||
3484, 3565, 3644, 3727, 3813, 3901, 3996, 4095,
|
||||
},
|
||||
{
|
||||
160, 358, 550, 746, 943, 1113, 1266, 1406,
|
||||
1552, 1708, 1858, 2000, 2138, 2269, 2397, 2520,
|
||||
2640, 2757, 2872, 2985, 3098, 3211, 3325, 3422,
|
||||
3496, 3572, 3647, 3727, 3811, 3898, 3993, 4095,
|
||||
},
|
||||
{
|
||||
201, 456, 693, 929, 1162, 1354, 1520, 1671,
|
||||
1822, 1963, 2095, 2220, 2339, 2451, 2559, 2662,
|
||||
2762, 2859, 2955, 3049, 3143, 3239, 3335, 3407,
|
||||
3479, 3556, 3630, 3712, 3797, 3887, 3987, 4095,
|
||||
},
|
||||
{
|
||||
243, 546, 815, 1079, 1334, 1536, 1707, 1857,
|
||||
1996, 2125, 2245, 2357, 2462, 2561, 2655, 2746,
|
||||
2833, 2917, 3000, 3083, 3166, 3250, 3336, 3405,
|
||||
3476, 3551, 3624, 3706, 3791, 3882, 3984, 4095,
|
||||
},
|
||||
{
|
||||
280, 622, 914, 1195, 1465, 1672, 1844, 1993,
|
||||
2122, 2240, 2349, 2450, 2545, 2634, 2718, 2798,
|
||||
2875, 2950, 3023, 3097, 3171, 3247, 3325, 3393,
|
||||
3464, 3540, 3614, 3697, 3784, 3876, 3981, 4095,
|
||||
},
|
||||
{
|
||||
308, 675, 979, 1268, 1544, 1752, 1922, 2067,
|
||||
2191, 2304, 2408, 2505, 2595, 2679, 2758, 2834,
|
||||
2907, 2978, 3048, 3118, 3189, 3262, 3338, 3404,
|
||||
3473, 3546, 3618, 3700, 3785, 3877, 3981, 4095,
|
||||
},
|
||||
{
|
||||
342, 738, 1058, 1360, 1648, 1862, 2037, 2184,
|
||||
2295, 2396, 2488, 2573, 2651, 2724, 2792, 2857,
|
||||
2919, 2979, 3038, 3098, 3158, 3221, 3287, 3357,
|
||||
3431, 3510, 3588, 3674, 3766, 3864, 3975, 4095,
|
||||
},
|
||||
};
|
||||
|
||||
static int Remap_lut2[16][16] = {};
|
||||
@@ -867,8 +880,8 @@ void LD_LUTInit(struct LDReg *Reg)
|
||||
Reg->X_lut2[0][k][t] = Remap_lut2[k][t];
|
||||
Reg->X_lut2[1][k][t] = Remap_lut2[k][t];
|
||||
Reg->X_lut2[2][k][t] = Remap_lut2[k][t];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BL_CHIP_GXTVBB:
|
||||
/* Emulate the FW to set the LUTs */
|
||||
@@ -881,8 +894,8 @@ void LD_LUTInit(struct LDReg *Reg)
|
||||
Reg->X_lut[0][k][t] = Remap_lut[k][t];
|
||||
Reg->X_lut[1][k][t] = Remap_lut[k][t];
|
||||
Reg->X_lut[2][k][t] = Remap_lut[k][t];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -979,7 +979,7 @@ static char *lcd_enc_tst_str[] = {
|
||||
"8-Black", /* 8 */
|
||||
};
|
||||
|
||||
static unsigned int lcd_enc_tst[][8] = {
|
||||
static unsigned int lcd_enc_tst[][7] = {
|
||||
/*tst_mode, Y, Cb, Cr, tst_en, vfifo_en rgbin*/
|
||||
{0, 0x200, 0x200, 0x200, 0, 1, 3}, /* 0 */
|
||||
{1, 0x200, 0x200, 0x200, 1, 0, 1}, /* 1 */
|
||||
|
||||
@@ -62,7 +62,7 @@ enum bl_ctrl_method_e {
|
||||
BL_CTRL_GPIO = 0,
|
||||
BL_CTRL_PWM,
|
||||
BL_CTRL_PWM_COMBO,
|
||||
BL_CTRL_LOCAL_DIMING,
|
||||
BL_CTRL_LOCAL_DIMMING,
|
||||
BL_CTRL_EXTERN,
|
||||
BL_CTRL_MAX,
|
||||
};
|
||||
@@ -148,13 +148,13 @@ struct bl_config_s {
|
||||
unsigned int power_off_delay;
|
||||
unsigned int dim_max;
|
||||
unsigned int dim_min;
|
||||
unsigned int en_sequence_reverse;
|
||||
|
||||
struct bl_pwm_config_s *bl_pwm;
|
||||
struct bl_pwm_config_s *bl_pwm_combo0;
|
||||
struct bl_pwm_config_s *bl_pwm_combo1;
|
||||
unsigned int pwm_on_delay;
|
||||
unsigned int pwm_off_delay;
|
||||
unsigned int pwm_en_sequence_reverse;
|
||||
|
||||
struct bl_gpio_s bl_gpio[BL_GPIO_NUM_MAX];
|
||||
struct pinctrl *pin;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define _VE_LDIM 'C'
|
||||
|
||||
/* VPP.ldim IOCTL command list */
|
||||
#define LDIM_IOC_PARA _IOW(_VE_LDIM, 0x50, struct vpu_ldim_param_s)
|
||||
#define LDIM_IOC_PARA _IOW(_VE_LDIM, 0x50, struct ldim_param_s)
|
||||
|
||||
enum ldim_dev_type_e {
|
||||
LDIM_DEV_TYPE_NORMAL = 0,
|
||||
@@ -36,6 +36,16 @@ enum ldim_dev_type_e {
|
||||
LDIM_DEV_TYPE_MAX,
|
||||
};
|
||||
|
||||
#define LD_BLKREGNUM 384 /* maximum support 24*16*/
|
||||
|
||||
struct ldim_config_s {
|
||||
unsigned short hsize;
|
||||
unsigned short vsize;
|
||||
unsigned char row;
|
||||
unsigned char col;
|
||||
unsigned char bl_mode;
|
||||
};
|
||||
|
||||
#define LDIM_SPI_INIT_ON_SIZE 300
|
||||
#define LDIM_SPI_INIT_OFF_SIZE 20
|
||||
struct ldim_dev_config_s {
|
||||
@@ -58,6 +68,8 @@ struct ldim_dev_config_s {
|
||||
unsigned char *init_off;
|
||||
|
||||
struct bl_pwm_config_s pwm_config;
|
||||
|
||||
unsigned short bl_mapping[LD_BLKREGNUM];
|
||||
};
|
||||
|
||||
/*******global API******/
|
||||
@@ -65,6 +77,8 @@ struct aml_ldim_driver_s {
|
||||
int valid_flag;
|
||||
int dev_index;
|
||||
int static_pic_flag;
|
||||
|
||||
struct ldim_config_s *ldim_conf;
|
||||
struct ldim_dev_config_s *ldev_conf;
|
||||
unsigned short *ldim_matrix_buf;
|
||||
unsigned int *hist_matrix;
|
||||
@@ -89,7 +103,7 @@ struct aml_ldim_driver_s {
|
||||
struct spi_board_info *spi_dev;
|
||||
};
|
||||
|
||||
struct vpu_ldim_param_s {
|
||||
struct ldim_param_s {
|
||||
/* beam model */
|
||||
int rgb_base;
|
||||
int boost_gain;
|
||||
@@ -117,7 +131,10 @@ struct vpu_ldim_param_s {
|
||||
};
|
||||
|
||||
extern struct aml_ldim_driver_s *aml_ldim_get_driver(void);
|
||||
extern int aml_ldim_probe(struct platform_device *pdev, int load_id);
|
||||
|
||||
extern int aml_ldim_get_config_dts(struct device_node *child);
|
||||
extern int aml_ldim_get_config_unifykey(unsigned char *buf);
|
||||
extern int aml_ldim_probe(struct platform_device *pdev);
|
||||
extern int aml_ldim_remove(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -179,8 +179,8 @@ struct aml_lcd_unifykey_header_s {
|
||||
* *********************************
|
||||
*/
|
||||
/* V1: 92 */
|
||||
/* V2: 102 */
|
||||
#define LCD_UKEY_BL_SIZE 102
|
||||
/* V2: 118 */
|
||||
#define LCD_UKEY_BL_SIZE 118
|
||||
|
||||
/* header (10Byte) */
|
||||
/* LCD_UKEY_HEAD_SIZE */
|
||||
@@ -221,12 +221,23 @@ struct aml_lcd_unifykey_header_s {
|
||||
#define LCD_UKEY_BL_PWM_LEVEL_MIN (LCD_UKEY_BL_NAME + 76)
|
||||
#define LCD_UKEY_BL_PWM2_LEVEL_MAX (LCD_UKEY_BL_NAME + 78)
|
||||
#define LCD_UKEY_BL_PWM2_LEVEL_MIN (LCD_UKEY_BL_NAME + 80)
|
||||
/* local dimming (16Byte) */ /* V2 */
|
||||
#define LCD_UKEY_BL_LDIM_ROW (LCD_UKEY_BL_NAME + 82)
|
||||
#define LCD_UKEY_BL_LDIM_COL (LCD_UKEY_BL_NAME + 83)
|
||||
#define LCD_UKEY_BL_LDIM_MODE (LCD_UKEY_BL_NAME + 84)
|
||||
#define LCD_UKEY_BL_LDIM_DEV_INDEX (LCD_UKEY_BL_NAME + 85)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_4 (LCD_UKEY_BL_NAME + 86)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_5 (LCD_UKEY_BL_NAME + 88)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_6 (LCD_UKEY_BL_NAME + 90)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_7 (LCD_UKEY_BL_NAME + 92)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_8 (LCD_UKEY_BL_NAME + 94)
|
||||
#define LCD_UKEY_BL_LDIM_ATTR_9 (LCD_UKEY_BL_NAME + 96)
|
||||
/* customer(10Byte) */ /* V2 */
|
||||
#define LCD_UKEY_BL_CUST_VAL_0 (LCD_UKEY_BL_NAME + 82)
|
||||
#define LCD_UKEY_BL_CUST_VAL_1 (LCD_UKEY_BL_NAME + 84)
|
||||
#define LCD_UKEY_BL_CUST_VAL_2 (LCD_UKEY_BL_NAME + 86)
|
||||
#define LCD_UKEY_BL_CUST_VAL_3 (LCD_UKEY_BL_NAME + 88)
|
||||
#define LCD_UKEY_BL_CUST_VAL_4 (LCD_UKEY_BL_NAME + 90)
|
||||
#define LCD_UKEY_BL_CUST_VAL_0 (LCD_UKEY_BL_NAME + 98)
|
||||
#define LCD_UKEY_BL_CUST_VAL_1 (LCD_UKEY_BL_NAME + 100)
|
||||
#define LCD_UKEY_BL_CUST_VAL_2 (LCD_UKEY_BL_NAME + 102)
|
||||
#define LCD_UKEY_BL_CUST_VAL_3 (LCD_UKEY_BL_NAME + 104)
|
||||
#define LCD_UKEY_BL_CUST_VAL_4 (LCD_UKEY_BL_NAME + 106)
|
||||
|
||||
/* ********************************
|
||||
* API
|
||||
|
||||
Reference in New Issue
Block a user