diff options
author | Lee Jones <lee.jones@linaro.org> | 2014-07-10 04:07:06 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2014-07-18 03:39:42 -0400 |
commit | 1e3b09701223afdff3b0353f87b566e7848bb24a (patch) | |
tree | b109b7a4bb551f914dd4e1fbd5978dac7560fc20 | |
parent | b3de3402e5ab8edfbbdbbb86393692431522f6d3 (diff) |
backlight: jornada720: Minimise code duplication and handle errors better
Rickard Strandqvi's ran a code analysis application which found that
jornada_lcd_get_contrast(() and jornada_lcd_set_contrast() contained
some code duplication (calling the same functions during various
code execution paths) and failed to return errors in a consistent
manner. This patch aims to simplify the code, coercing it into
behaving at a level expected of a driver in the Linux kernel.
Suggested-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Reviewed-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r-- | drivers/video/backlight/jornada720_lcd.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/drivers/video/backlight/jornada720_lcd.c b/drivers/video/backlight/jornada720_lcd.c index da3876c9b3ae..228bc319de19 100644 --- a/drivers/video/backlight/jornada720_lcd.c +++ b/drivers/video/backlight/jornada720_lcd.c | |||
@@ -43,37 +43,38 @@ static int jornada_lcd_get_contrast(struct lcd_device *ld) | |||
43 | 43 | ||
44 | jornada_ssp_start(); | 44 | jornada_ssp_start(); |
45 | 45 | ||
46 | if (jornada_ssp_byte(GETCONTRAST) != TXDUMMY) { | 46 | if (jornada_ssp_byte(GETCONTRAST) == TXDUMMY) { |
47 | dev_err(&ld->dev, "get contrast failed\n"); | ||
48 | jornada_ssp_end(); | ||
49 | return -ETIMEDOUT; | ||
50 | } else { | ||
51 | ret = jornada_ssp_byte(TXDUMMY); | 47 | ret = jornada_ssp_byte(TXDUMMY); |
52 | jornada_ssp_end(); | 48 | goto success; |
53 | return ret; | ||
54 | } | 49 | } |
50 | |||
51 | dev_err(&ld->dev, "failed to set contrast\n"); | ||
52 | ret = -ETIMEDOUT; | ||
53 | |||
54 | success: | ||
55 | jornada_ssp_end(); | ||
56 | return ret; | ||
55 | } | 57 | } |
56 | 58 | ||
57 | static int jornada_lcd_set_contrast(struct lcd_device *ld, int value) | 59 | static int jornada_lcd_set_contrast(struct lcd_device *ld, int value) |
58 | { | 60 | { |
59 | int ret; | 61 | int ret = 0; |
60 | 62 | ||
61 | jornada_ssp_start(); | 63 | jornada_ssp_start(); |
62 | 64 | ||
63 | /* start by sending our set contrast cmd to mcu */ | 65 | /* start by sending our set contrast cmd to mcu */ |
64 | ret = jornada_ssp_byte(SETCONTRAST); | 66 | if (jornada_ssp_byte(SETCONTRAST) == TXDUMMY) { |
65 | 67 | /* if successful push the new value */ | |
66 | /* push the new value */ | 68 | if (jornada_ssp_byte(value) == TXDUMMY) |
67 | if (jornada_ssp_byte(value) != TXDUMMY) { | 69 | goto success; |
68 | dev_err(&ld->dev, "set contrast failed\n"); | ||
69 | jornada_ssp_end(); | ||
70 | return -ETIMEDOUT; | ||
71 | } | 70 | } |
72 | 71 | ||
73 | /* if we get here we can assume everything went well */ | 72 | dev_err(&ld->dev, "failed to set contrast\n"); |
74 | jornada_ssp_end(); | 73 | ret = -ETIMEDOUT; |
75 | 74 | ||
76 | return 0; | 75 | success: |
76 | jornada_ssp_end(); | ||
77 | return ret; | ||
77 | } | 78 | } |
78 | 79 | ||
79 | static int jornada_lcd_set_power(struct lcd_device *ld, int power) | 80 | static int jornada_lcd_set_power(struct lcd_device *ld, int power) |