Skip to content

Commit 225647f

Browse files
Evoke Zhangakiernan
Evoke Zhang
authored andcommitted
backlight: driver defect clean up
driver defect clean up: torvalds#40 torvalds#41 torvalds#99 torvalds#100 torvalds#395 torvalds#396 torvalds#475 torvalds#614 torvalds#669 Change-Id: I581aaa8a1b950278bbf74d0c94aa647de89e07a9 Signed-off-by: Evoke Zhang <[email protected]>
1 parent 2386245 commit 225647f

File tree

2 files changed

+58
-27
lines changed
  • drivers/amlogic/media/vout/backlight
  • include/linux/amlogic/media/vout/lcd

2 files changed

+58
-27
lines changed

drivers/amlogic/media/vout/backlight/aml_bl.c

+56-26
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ static char *bl_pinmux_str[] = {
328328
"pwm_combo_0_1_on", /* 2 */
329329
"pwm_combo_0_vs_1_on", /* 3 */
330330
"pwm_combo_0_1_vs_on", /* 4 */
331+
"none",
331332
};
332333

333334
static void bl_pwm_pinmux_set(struct bl_config_s *bconf)
@@ -1070,6 +1071,7 @@ static char *bl_pwm_name[] = {
10701071
"PWM_E",
10711072
"PWM_F",
10721073
"PWM_VS",
1074+
"invalid",
10731075
};
10741076

10751077
enum bl_pwm_port_e bl_pwm_str_to_pwm(const char *str)
@@ -1271,7 +1273,9 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
12711273
BLERR("failed to get bl_name\n");
12721274
str = "backlight";
12731275
}
1274-
strcpy(bconf->name, str);
1276+
strncpy(bconf->name, str, BL_NAME_MAX);
1277+
/* ensure string ending */
1278+
bconf->name[BL_NAME_MAX-1] = '\0';
12751279

12761280
ret = of_property_read_u32_array(child, "bl_level_default_uboot_kernel",
12771281
&bl_para[0], 2);
@@ -1591,9 +1595,10 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
15911595

15921596
/* basic: 30byte */
15931597
p = para + LCD_UKEY_HEAD_SIZE;
1594-
*(p + LCD_UKEY_BL_NAME - 1) = '\0'; /* ensure string ending */
15951598
str = (const char *)p;
1596-
strcpy(bconf->name, str);
1599+
strncpy(bconf->name, str, BL_NAME_MAX);
1600+
/* ensure string ending */
1601+
bconf->name[BL_NAME_MAX-1] = '\0';
15971602
p += LCD_UKEY_BL_NAME;
15981603

15991604
/* level: 6byte */
@@ -2531,33 +2536,61 @@ static ssize_t bl_debug_pwm_store(struct class *class,
25312536
case 'f':
25322537
if (buf[3] == 'q') { /* frequency */
25332538
ret = sscanf(buf, "freq %d %d", &index, &val);
2534-
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_FREQ);
2539+
if (ret == 2)
2540+
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_FREQ);
2541+
else
2542+
BLERR("invalid parameters\n");
25352543
} else if (buf[3] == 'e') { /* duty free */
25362544
ret = sscanf(buf, "free %d", &val);
2537-
bl_pwm_duty_free = (unsigned char)val;
2538-
BLPR("set bl_pwm_duty_free: %d\n", bl_pwm_duty_free);
2545+
if (ret == 1) {
2546+
bl_pwm_duty_free = (unsigned char)val;
2547+
BLPR("set bl_pwm_duty_free: %d\n",
2548+
bl_pwm_duty_free);
2549+
} else {
2550+
BLERR("invalid parameters\n");
2551+
}
25392552
}
25402553
break;
25412554
case 'd': /* duty */
25422555
ret = sscanf(buf, "duty %d %d", &index, &val);
2543-
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_DUTY);
2556+
if (ret == 2)
2557+
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_DUTY);
2558+
else
2559+
BLERR("invalid parameters\n");
25442560
break;
25452561
case 'p': /* polarity */
25462562
ret = sscanf(buf, "pol %d %d", &index, &val);
2547-
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_POL);
2563+
if (ret == 2)
2564+
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_POL);
2565+
else
2566+
BLERR("invalid parameters\n");
25482567
break;
25492568
case 'b': /* bypass */
25502569
ret = sscanf(buf, "bypass %d", &val);
2551-
bl_pwm_bypass = (unsigned char)val;
2552-
BLPR("set bl_pwm_bypass: %d\n", bl_pwm_bypass);
2570+
if (ret == 1) {
2571+
bl_pwm_bypass = (unsigned char)val;
2572+
BLPR("set bl_pwm_bypass: %d\n", bl_pwm_bypass);
2573+
} else {
2574+
BLERR("invalid parameters\n");
2575+
}
25532576
break;
25542577
case 'm':
25552578
if (buf[1] == 'a') { /* max */
25562579
ret = sscanf(buf, "max %d %d", &index, &val);
2557-
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_DUTY_MAX);
2580+
if (ret == 2) {
2581+
bl_debug_pwm_set(index, val,
2582+
BL_DEBUG_PWM_DUTY_MAX);
2583+
} else {
2584+
BLERR("invalid parameters\n");
2585+
}
25582586
} else if (buf[1] == 'i') { /* min */
25592587
ret = sscanf(buf, "min %d %d", &index, &val);
2560-
bl_debug_pwm_set(index, val, BL_DEBUG_PWM_DUTY_MIN);
2588+
if (ret == 2) {
2589+
bl_debug_pwm_set(index, val,
2590+
BL_DEBUG_PWM_DUTY_MIN);
2591+
} else {
2592+
BLERR("invalid parameters\n");
2593+
}
25612594
}
25622595
break;
25632596
default:
@@ -2591,8 +2624,10 @@ static ssize_t bl_debug_power_store(struct class *class,
25912624
unsigned int temp = 0;
25922625

25932626
ret = kstrtouint(buf, 10, &temp);
2594-
if (ret != 0)
2627+
if (ret != 0) {
2628+
BLERR("invalid data\n");
25952629
return -EINVAL;
2630+
}
25962631

25972632
BLPR("power control: %u\n", temp);
25982633
if ((bl_drv->state & BL_STATE_LCD_ON) == 0) {
@@ -2680,19 +2715,14 @@ static ssize_t bl_debug_print_store(struct class *class,
26802715
}
26812716

26822717
static struct class_attribute bl_debug_class_attrs[] = {
2683-
__ATTR(help, 0644, bl_debug_help, NULL),
2684-
__ATTR(status, 0644, bl_status_read, NULL),
2685-
__ATTR(pwm, 0644, bl_debug_pwm_show,
2686-
bl_debug_pwm_store),
2687-
__ATTR(power, 0644, bl_debug_power_show,
2688-
bl_debug_power_store),
2689-
__ATTR(delay, 0644, bl_debug_delay_show,
2690-
bl_debug_delay_store),
2691-
__ATTR(key_valid, 0644, bl_debug_key_valid_show, NULL),
2692-
__ATTR(config_load, 0644,
2693-
bl_debug_config_load_show, NULL),
2694-
__ATTR(print, 0644, bl_debug_print_show,
2695-
bl_debug_print_store),
2718+
__ATTR(help, 0444, bl_debug_help, NULL),
2719+
__ATTR(status, 0444, bl_status_read, NULL),
2720+
__ATTR(pwm, 0644, bl_debug_pwm_show, bl_debug_pwm_store),
2721+
__ATTR(power, 0644, bl_debug_power_show, bl_debug_power_store),
2722+
__ATTR(delay, 0644, bl_debug_delay_show, bl_debug_delay_store),
2723+
__ATTR(key_valid, 0444, bl_debug_key_valid_show, NULL),
2724+
__ATTR(config_load, 0444, bl_debug_config_load_show, NULL),
2725+
__ATTR(print, 0644, bl_debug_print_show, bl_debug_print_store),
26962726
};
26972727

26982728
static int aml_bl_creat_class(void)

include/linux/amlogic/media/vout/lcd/aml_bl.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,9 @@ struct bl_pwm_config_s {
123123
unsigned int pwm_level; /* internal used for pwm control */
124124
};
125125

126+
#define BL_NAME_MAX 30
126127
struct bl_config_s {
127-
char name[30];
128+
char name[BL_NAME_MAX];
128129
unsigned int level_default;
129130
unsigned int level_min;
130131
unsigned int level_max;

0 commit comments

Comments
 (0)