gpio_keypad: program the correct row/col values into the pmic

Change-Id: I6c3cbf9b238399cdacee76001a0342eb0a332ee6
Signed-off-by: Dima Zavin <dima@android.com>
Signed-off-by: Ajay Dudani <adudani@codeaurora.org>
diff --git a/dev/keys/gpio_keypad.c b/dev/keys/gpio_keypad.c
index 86a31c7..0397689 100644
--- a/dev/keys/gpio_keypad.c
+++ b/dev/keys/gpio_keypad.c
@@ -503,11 +503,16 @@
 
 void ssbi_gpio_init(void)
 {
-    unsigned char kypd_cntl_init = 0x84;
+    unsigned char kypd_cntl_init;
     unsigned char kypd_scan_init = 0x20;
     int rows = (qwerty_keypad->keypad_info)->rows;
     int columns = (qwerty_keypad->keypad_info)->columns;
     write_func wr_function = (qwerty_keypad->keypad_info)->wr_func;
+    unsigned char drv_bits[] = {
+	    0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7 };
+    unsigned char sns_bits[] = { 0, 0, 0, 0, 0, 0, 1, 2, 3 };
+
+    kypd_cntl_init = ((drv_bits[rows] << 2) | (sns_bits[columns] << 5));
 
     if ((*wr_function)(&kypd_cntl_init, 1, SSBI_REG_KYPD_CNTL_ADDR))
       dprintf (CRITICAL, "Error in initializing SSBI_REG_KYPD_CNTL register\n");