aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2014-07-10 04:07:06 -0400
committerLee Jones <lee.jones@linaro.org>2014-07-18 03:39:42 -0400
commit1e3b09701223afdff3b0353f87b566e7848bb24a (patch)
treeb109b7a4bb551f914dd4e1fbd5978dac7560fc20
parentb3de3402e5ab8edfbbdbbb86393692431522f6d3 (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.c37
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
54success:
55 jornada_ssp_end();
56 return ret;
55} 57}
56 58
57static int jornada_lcd_set_contrast(struct lcd_device *ld, int value) 59static 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; 75success:
76 jornada_ssp_end();
77 return ret;
77} 78}
78 79
79static int jornada_lcd_set_power(struct lcd_device *ld, int power) 80static int jornada_lcd_set_power(struct lcd_device *ld, int power)