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) |
