FreeCalypso > hg > fc-magnetite
diff src/cs/drivers/drv_app/kpd/board/kpd_scan_functions.c @ 446:bed6d393f3e0
C1xx targets: sensible handling of Compal's power key wiring
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 28 Jan 2018 19:26:10 +0000 |
parents | 385841ccb7f8 |
children | 92dbfa906f66 |
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/kpd/board/kpd_scan_functions.c Mon Jan 22 05:45:26 2018 +0000 +++ b/src/cs/drivers/drv_app/kpd/board/kpd_scan_functions.c Sun Jan 28 19:26:10 2018 +0000 @@ -86,38 +86,41 @@ {KPD_PKEY_7, KPD_PKEY_8, KPD_PKEY_9, KPD_PKEY_NULL}, {KPD_PKEY_STAR, KPD_PKEY_0, KPD_PKEY_DIESE, KPD_PKEY_NULL}, }; -#elif ((BOARD == 40) || (BOARD == 41) || (BOARD == 42) || (BOARD == 43)) +#elif defined(CONFIG_TARGET_COMPAL) + #define KP_ROWS 5 + #define KP_COLS 4 + const T_KPD_PHYSICAL_KEY_ID keypad_layout[KP_ROWS][KP_COLS]= + { + /* Mot C1xx keypad */ + {KPD_PKEY_GREEN, KPD_PKEY_3, KPD_PKEY_2, KPD_PKEY_1}, + {KPD_PKEY_UP, KPD_PKEY_6, KPD_PKEY_5, KPD_PKEY_4}, + {KPD_PKEY_DOWN, KPD_PKEY_9, KPD_PKEY_8, KPD_PKEY_7}, + {KPD_PKEY_LEFT, KPD_PKEY_DIESE, KPD_PKEY_0, KPD_PKEY_STAR}, + {KPD_PKEY_RIGHT, KPD_PKEY_SOFT_RIGHT, KPD_PKEY_NAV_CENTER,KPD_PKEY_SOFT_LEFT}, + }; +#elif defined(CONFIG_TARGET_PIRELLI) #define KP_ROWS 5 #define KP_COLS 5 const T_KPD_PHYSICAL_KEY_ID keypad_layout[KP_ROWS][KP_COLS]= { -#ifdef CONFIG_TARGET_COMPAL - /* Mot C1xx keypad */ - {KPD_PKEY_GREEN, KPD_PKEY_3, KPD_PKEY_2, KPD_PKEY_1, - KPD_PKEY_NULL}, - {KPD_PKEY_UP, KPD_PKEY_6, KPD_PKEY_5, KPD_PKEY_4, - KPD_PKEY_NULL}, - {KPD_PKEY_DOWN, KPD_PKEY_9, KPD_PKEY_8, KPD_PKEY_7, - KPD_PKEY_NULL}, - {KPD_PKEY_LEFT, KPD_PKEY_DIESE, KPD_PKEY_0, KPD_PKEY_STAR, - KPD_PKEY_NULL}, - {KPD_PKEY_RIGHT, KPD_PKEY_SOFT_RIGHT, KPD_PKEY_NAV_CENTER,KPD_PKEY_SOFT_LEFT, - KPD_PKEY_NULL}, -#elif defined(CONFIG_TARGET_PIRELLI) /* Pirelli's keypad */ {KPD_PKEY_NAV_CENTER, KPD_PKEY_LEFT, KPD_PKEY_RIGHT, KPD_PKEY_UP, KPD_PKEY_NULL}, {KPD_PKEY_SOFT_LEFT, KPD_PKEY_SOFT_RIGHT, KPD_PKEY_GREEN, KPD_PKEY_DOWN, KPD_PKEY_VOL_UP}, {KPD_PKEY_3, KPD_PKEY_6, KPD_PKEY_9, KPD_PKEY_DIESE, KPD_PKEY_VOL_DOWN}, {KPD_PKEY_2, KPD_PKEY_5, KPD_PKEY_8, KPD_PKEY_0, KPD_PKEY_REC}, {KPD_PKEY_1, KPD_PKEY_4, KPD_PKEY_7, KPD_PKEY_STAR, KPD_PKEY_NULL}, -#else + }; +#elif ((BOARD == 40) || (BOARD == 41) || (BOARD == 42) || (BOARD == 43)) + #define KP_ROWS 5 + #define KP_COLS 5 + const T_KPD_PHYSICAL_KEY_ID keypad_layout[KP_ROWS][KP_COLS]= + { /* Layout of D-Sample and E-Sample */ {KPD_PKEY_GREEN, KPD_PKEY_VOL_DOWN, KPD_PKEY_VOL_UP,KPD_PKEY_SOFT_LEFT, KPD_PKEY_LEFT}, {KPD_PKEY_1, KPD_PKEY_2, KPD_PKEY_3, KPD_PKEY_REC, KPD_PKEY_RIGHT}, {KPD_PKEY_4, KPD_PKEY_5, KPD_PKEY_6, KPD_PKEY_SOFT_RIGHT, KPD_PKEY_UP}, {KPD_PKEY_7, KPD_PKEY_8, KPD_PKEY_9, KPD_PKEY_NULL, KPD_PKEY_DOWN}, {KPD_PKEY_STAR, KPD_PKEY_0, KPD_PKEY_DIESE, KPD_PKEY_NULL, KPD_PKEY_NAV_CENTER}, -#endif }; #endif @@ -361,6 +364,18 @@ /* Deactivate all columns */ *(volatile UINT16*) KP_COL_OUT = KP_ALL_OFF; +#ifdef CONFIG_TARGET_COMPAL + /* Compal's power key handling */ + delay(); + rows = (*(volatile UINT16*) KP_ROW_IN) & 0x1F; + if (KP_IS_ACTIVE(rows,4)) + { + /* Reactivate all columns */ + *(volatile UINT16*) KP_COL_OUT = KP_ALL_ON; + return KPD_PKEY_RED; + } +#endif + /* Activate 1 column at a time */ for (col = 0; col < KP_COLS; col++) {