From: Gireesh Hiremath <Gireesh.Hiremath@xxxxxxxxxxxx> The existing matric_keypad.c use different gpio line for row and colunm, where in mt_matrix_kepad.c use same gpio line for row as well as column. a key can be placed at each intersection of a unique row number not equal to a unique column and they are diagonally symmetric. Advantage of this is with existed gpio line we can get more keys example: in matrix_keypad.c for 5 gpio line possible matrix is 2X3 or 3X2 and maximum possible keys are 6 but in mt_matrix_kepad.c for same 5 gpio line possible matrix is 5X5 and maximum possible buttons are 10, below table will discribe that ------------------------------------------------------ |Row\Col |GPIO 0 | GPIO 1 | GPIO 2 | GPIO 3 | GPIO 4 | ------------------------------------------------------ | GPIO 0 | X | KEY_9 | KEY_2 | KEY_3 | KEY_1 | ------------------------------------------------------ | GPIO 1 | KEY_9 | X | KEY_6 | KEY_5 | KEY_0 | ------------------------------------------------------ | GPIO 2 | KEY_2 | KEY_6 | X | KEY_4 | KEY_7 | ------------------------------------------------------ | GPIO 3 | KEY_3 | KEY_5 | KEY_4 | X | KEY_8 | ------------------------------------------------------ | GPIO 4 | KEY_1 | KEY_0 | KEY_7 | KEY_8 | X | ------------------------------------------------------ X - invalid key KEY_x - preferred key code both matric_keypad.c and mt_matrix_kepad.c logically operate differently, my openion is not to merge both.