Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: synaptics - relax capability ID checks on newer hardware
Input: twl40300-keypad - fix handling of "all ground" rows
Input: gamecon - reference correct pad in gc_psx_command()
Input: gamecon - reference correct input device in NES mode
Input: w90p910_keypad - change platfrom driver name to 'nuc900-kpi'
Input: i8042 - add Gigabyte Spring Peak to dmi_noloop_table
Input: qt2160 - rename kconfig symbol name

+44 -16
+14 -3
arch/arm/mach-omap2/board-rx51-peripherals.c
··· 175 175 #endif /* CONFIG_KEYBOARD_GPIO || CONFIG_KEYBOARD_GPIO_MODULE */ 176 176 177 177 static int board_keymap[] = { 178 + /* 179 + * Note that KEY(x, 8, KEY_XXX) entries represent "entrire row 180 + * connected to the ground" matrix state. 181 + */ 178 182 KEY(0, 0, KEY_Q), 179 183 KEY(0, 1, KEY_O), 180 184 KEY(0, 2, KEY_P), ··· 186 182 KEY(0, 4, KEY_BACKSPACE), 187 183 KEY(0, 6, KEY_A), 188 184 KEY(0, 7, KEY_S), 185 + 189 186 KEY(1, 0, KEY_W), 190 187 KEY(1, 1, KEY_D), 191 188 KEY(1, 2, KEY_F), ··· 195 190 KEY(1, 5, KEY_J), 196 191 KEY(1, 6, KEY_K), 197 192 KEY(1, 7, KEY_L), 193 + 198 194 KEY(2, 0, KEY_E), 199 195 KEY(2, 1, KEY_DOT), 200 196 KEY(2, 2, KEY_UP), ··· 203 197 KEY(2, 5, KEY_Z), 204 198 KEY(2, 6, KEY_X), 205 199 KEY(2, 7, KEY_C), 200 + KEY(2, 8, KEY_F9), 201 + 206 202 KEY(3, 0, KEY_R), 207 203 KEY(3, 1, KEY_V), 208 204 KEY(3, 2, KEY_B), ··· 213 205 KEY(3, 5, KEY_SPACE), 214 206 KEY(3, 6, KEY_SPACE), 215 207 KEY(3, 7, KEY_LEFT), 208 + 216 209 KEY(4, 0, KEY_T), 217 210 KEY(4, 1, KEY_DOWN), 218 211 KEY(4, 2, KEY_RIGHT), 219 212 KEY(4, 4, KEY_LEFTCTRL), 220 213 KEY(4, 5, KEY_RIGHTALT), 221 214 KEY(4, 6, KEY_LEFTSHIFT), 215 + KEY(4, 8, KEY_10), 216 + 222 217 KEY(5, 0, KEY_Y), 218 + KEY(5, 8, KEY_11), 219 + 223 220 KEY(6, 0, KEY_U), 221 + 224 222 KEY(7, 0, KEY_I), 225 223 KEY(7, 1, KEY_F7), 226 224 KEY(7, 2, KEY_F8), 227 - KEY(0xff, 2, KEY_F9), 228 - KEY(0xff, 4, KEY_F10), 229 - KEY(0xff, 5, KEY_F11), 230 225 }; 231 226 232 227 static struct matrix_keymap_data board_map_data = {
+2 -3
drivers/input/joystick/gamecon.c
··· 89 89 struct gc { 90 90 struct pardevice *pd; 91 91 struct gc_pad pads[GC_MAX_DEVICES]; 92 - struct input_dev *dev[GC_MAX_DEVICES]; 93 92 struct timer_list timer; 94 93 int pad_count[GC_MAX]; 95 94 int used; ··· 386 387 for (i = 0; i < GC_MAX_DEVICES; i++) { 387 388 388 389 pad = &gc->pads[i]; 389 - dev = gc->dev[i]; 390 + dev = pad->dev; 390 391 s = gc_status_bit[i]; 391 392 392 393 switch (pad->type) { ··· 578 579 read = parport_read_status(port) ^ 0x80; 579 580 580 581 for (j = 0; j < GC_MAX_DEVICES; j++) { 581 - struct gc_pad *pad = &gc->pads[i]; 582 + struct gc_pad *pad = &gc->pads[j]; 582 583 583 584 if (pad->type == GC_PSX || pad->type == GC_DDR) 584 585 data[j] |= (read & gc_status_bit[j]) ? (1 << i) : 0;
+1 -1
drivers/input/keyboard/Kconfig
··· 124 124 right-hand column will be interpreted as the key shown in the 125 125 left-hand column. 126 126 127 - config QT2160 127 + config KEYBOARD_QT2160 128 128 tristate "Atmel AT42QT2160 Touch Sensor Chip" 129 129 depends on I2C && EXPERIMENTAL 130 130 help
+11 -6
drivers/input/keyboard/twl4030_keypad.c
··· 51 51 */ 52 52 #define TWL4030_MAX_ROWS 8 /* TWL4030 hard limit */ 53 53 #define TWL4030_MAX_COLS 8 54 - #define TWL4030_ROW_SHIFT 3 55 - #define TWL4030_KEYMAP_SIZE (TWL4030_MAX_ROWS * TWL4030_MAX_COLS) 54 + /* 55 + * Note that we add space for an extra column so that we can handle 56 + * row lines connected to the gnd (see twl4030_col_xlate()). 57 + */ 58 + #define TWL4030_ROW_SHIFT 4 59 + #define TWL4030_KEYMAP_SIZE (TWL4030_MAX_ROWS << TWL4030_ROW_SHIFT) 56 60 57 61 struct twl4030_keypad { 58 62 unsigned short keymap[TWL4030_KEYMAP_SIZE]; ··· 186 182 return ret; 187 183 } 188 184 189 - static int twl4030_is_in_ghost_state(struct twl4030_keypad *kp, u16 *key_state) 185 + static bool twl4030_is_in_ghost_state(struct twl4030_keypad *kp, u16 *key_state) 190 186 { 191 187 int i; 192 188 u16 check = 0; ··· 195 191 u16 col = key_state[i]; 196 192 197 193 if ((col & check) && hweight16(col) > 1) 198 - return 1; 194 + return true; 199 195 200 196 check |= col; 201 197 } 202 198 203 - return 0; 199 + return false; 204 200 } 205 201 206 202 static void twl4030_kp_scan(struct twl4030_keypad *kp, bool release_all) ··· 229 225 if (!changed) 230 226 continue; 231 227 232 - for (col = 0; col < kp->n_cols; col++) { 228 + /* Extra column handles "all gnd" rows */ 229 + for (col = 0; col < kp->n_cols + 1; col++) { 233 230 int code; 234 231 235 232 if (!(changed & (1 << col)))
+1 -1
drivers/input/keyboard/w90p910_keypad.c
··· 258 258 .probe = w90p910_keypad_probe, 259 259 .remove = __devexit_p(w90p910_keypad_remove), 260 260 .driver = { 261 - .name = "nuc900-keypad", 261 + .name = "nuc900-kpi", 262 262 .owner = THIS_MODULE, 263 263 }, 264 264 };
+6 -1
drivers/input/mouse/synaptics.c
··· 141 141 priv->capabilities = (cap[0] << 16) | (cap[1] << 8) | cap[2]; 142 142 priv->ext_cap = priv->ext_cap_0c = 0; 143 143 144 - if (!SYN_CAP_VALID(priv->capabilities)) 144 + /* 145 + * Older firmwares had submodel ID fixed to 0x47 146 + */ 147 + if (SYN_ID_FULL(priv->identity) < 0x705 && 148 + SYN_CAP_SUBMODEL_ID(priv->capabilities) != 0x47) { 145 149 return -1; 150 + } 146 151 147 152 /* 148 153 * Unless capExtended is set the rest of the flags should be ignored
+2 -1
drivers/input/mouse/synaptics.h
··· 47 47 #define SYN_CAP_FOUR_BUTTON(c) ((c) & (1 << 3)) 48 48 #define SYN_CAP_MULTIFINGER(c) ((c) & (1 << 1)) 49 49 #define SYN_CAP_PALMDETECT(c) ((c) & (1 << 0)) 50 - #define SYN_CAP_VALID(c) ((((c) & 0x00ff00) >> 8) == 0x47) 50 + #define SYN_CAP_SUBMODEL_ID(c) (((c) & 0x00ff00) >> 8) 51 51 #define SYN_EXT_CAP_REQUESTS(c) (((c) & 0x700000) >> 20) 52 52 #define SYN_CAP_MULTI_BUTTON_NO(ec) (((ec) & 0x00f000) >> 12) 53 53 #define SYN_CAP_PRODUCT_ID(ec) (((ec) & 0xff0000) >> 16) ··· 66 66 #define SYN_ID_MODEL(i) (((i) >> 4) & 0x0f) 67 67 #define SYN_ID_MAJOR(i) ((i) & 0x0f) 68 68 #define SYN_ID_MINOR(i) (((i) >> 16) & 0xff) 69 + #define SYN_ID_FULL(i) ((SYN_ID_MAJOR(i) << 8) | SYN_ID_MINOR(i)) 69 70 #define SYN_ID_IS_SYNAPTICS(i) ((((i) >> 8) & 0xff) == 0x47) 70 71 71 72 /* synaptics special commands */
+7
drivers/input/serio/i8042-x86ia64io.h
··· 170 170 }, 171 171 }, 172 172 { 173 + /* Gigabyte Spring Peak - defines wrong chassis type */ 174 + .matches = { 175 + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), 176 + DMI_MATCH(DMI_PRODUCT_NAME, "Spring Peak"), 177 + }, 178 + }, 179 + { 173 180 .matches = { 174 181 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 175 182 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"),