summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChethan Krishna N <chethan.krishna@stericsson.com>2011-07-29 18:51:57 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:03:34 +0200
commit92899a5d795c61d5381dbdd835978bb53fb575b1 (patch)
treec76b69948a972c6cbaded2606635cd55a8189664
parenteb43e3a25be22cfbc89e46fa09b75b4b4fd1ceb8 (diff)
db5500_keypad: check return value of request_gpio
check return value everytime request_gpio() is called ST-Ericsson ID: 353939 ST-Ericsson FOSS-OUT ID: NA ST-Ericsson Linux next: NA Change-Id: Idb7c1be6a278e72ee96d4e69b595abb104dfd5a2 Signed-off-by: Chethan Krishna N <chethan.krishna@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/27989 Reviewed-by: QATOOLS Reviewed-by: QATEST Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/29726 Reviewed-by: Naga RADHESH Y <naga.radheshy@stericsson.com> Tested-by: Naga RADHESH Y <naga.radheshy@stericsson.com>
-rw-r--r--drivers/input/keyboard/db5500_keypad.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/drivers/input/keyboard/db5500_keypad.c b/drivers/input/keyboard/db5500_keypad.c
index b1f069ea825..45d2f652d60 100644
--- a/drivers/input/keyboard/db5500_keypad.c
+++ b/drivers/input/keyboard/db5500_keypad.c
@@ -341,19 +341,25 @@ static int db5500_read_get_gpio_row(struct db5500_keypad *keypad)
static void db5500_set_cols(struct db5500_keypad *keypad, int col)
{
- int i ;
+ int i, ret;
int value;
/*
* Set all columns except the requested column
* output pin as high
*/
- for (i = 0; i < KEYPAD_MAX_COLS; i++) {
+ for (i = 0; i < keypad->board->kcol; i++) {
if (i == col)
value = 0;
else
value = 1;
- gpio_request(keypad->db5500_cols[i], "db5500-kpd");
+ ret = gpio_request(keypad->db5500_cols[i], "db5500-kpd");
+
+ if (ret < 0) {
+ pr_err("db5500_set_cols: gpio request failed\n");
+ continue;
+ }
+
gpio_direction_output(keypad->db5500_cols[i], value);
gpio_free(keypad->db5500_cols[i]);
}
@@ -361,10 +367,16 @@ static void db5500_set_cols(struct db5500_keypad *keypad, int col)
static void db5500_free_cols(struct db5500_keypad *keypad)
{
- int i ;
+ int i, ret;
for (i = 0; i < keypad->board->kcol; i++) {
- gpio_request(keypad->db5500_cols[i], "db5500-kpd");
+ ret = gpio_request(keypad->db5500_cols[i], "db5500-kpd");
+
+ if (ret < 0) {
+ pr_err("db5500_free_cols: gpio request failed\n");
+ continue;
+ }
+
gpio_direction_output(keypad->db5500_cols[i], 0);
gpio_free(keypad->db5500_cols[i]);
}