diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-04 11:47:04 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-04 11:47:04 -0500 |
commit | adac0753c25217a2365b132c87cb2540b51fa89b (patch) | |
tree | 2669ae53f59597392ddd0ba960502179c799cad9 | |
parent | 0072a0c14d5b7cb72c611d396f143f5dcd73ebe2 (diff) | |
parent | 6c3516fed7b61a3527459ccfa67fab130d910610 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov:
"Mostly new IDs for Elan/Synaptics touchpads, plus a few small fixups"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: omap-keypad - fix keyboard debounce configuration
Input: xpad - quirk all PDP Xbox One gamepads
Input: synaptics - enable SMBus for HP 15-ay000
Input: synaptics - add PNP ID for ThinkPad P50 to SMBus
Input: elan_i2c - add ACPI ID for Lenovo IdeaPad 330-15ARR
Input: elan_i2c - add support for ELAN0621 touchpad
Input: hyper-v - fix wakeup from suspend-to-idle
Input: atkbd - clean up indentation issue
Input: st1232 - convert to SPDX identifiers
Input: migor_ts - convert to SPDX identifiers
Input: dt-bindings - fix a typo in file input-reset.txt
Input: cros_ec_keyb - fix button/switch capability reports
Input: elan_i2c - add ELAN0620 to the ACPI table
Input: matrix_keypad - check for errors from of_get_named_gpio()
-rw-r--r-- | Documentation/devicetree/bindings/input/input-reset.txt | 2 | ||||
-rw-r--r-- | drivers/hid/hid-hyperv.c | 2 | ||||
-rw-r--r-- | drivers/input/joystick/xpad.c | 16 | ||||
-rw-r--r-- | drivers/input/keyboard/atkbd.c | 2 | ||||
-rw-r--r-- | drivers/input/keyboard/cros_ec_keyb.c | 3 | ||||
-rw-r--r-- | drivers/input/keyboard/matrix_keypad.c | 23 | ||||
-rw-r--r-- | drivers/input/keyboard/omap4-keypad.c | 18 | ||||
-rw-r--r-- | drivers/input/mouse/elan_i2c_core.c | 3 | ||||
-rw-r--r-- | drivers/input/mouse/synaptics.c | 2 | ||||
-rw-r--r-- | drivers/input/serio/hyperv-keyboard.c | 2 | ||||
-rw-r--r-- | drivers/input/touchscreen/migor_ts.c | 15 | ||||
-rw-r--r-- | drivers/input/touchscreen/st1232.c | 12 |
12 files changed, 48 insertions, 52 deletions
diff --git a/Documentation/devicetree/bindings/input/input-reset.txt b/Documentation/devicetree/bindings/input/input-reset.txt index 2bb2626fdb78..1ca6cc5ebf8e 100644 --- a/Documentation/devicetree/bindings/input/input-reset.txt +++ b/Documentation/devicetree/bindings/input/input-reset.txt | |||
@@ -12,7 +12,7 @@ The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define | |||
12 | a set of keys. | 12 | a set of keys. |
13 | 13 | ||
14 | Required property: | 14 | Required property: |
15 | sysrq-reset-seq: array of Linux keycodes, one keycode per cell. | 15 | keyset: array of Linux keycodes, one keycode per cell. |
16 | 16 | ||
17 | Optional property: | 17 | Optional property: |
18 | timeout-ms: duration keys must be pressed together in milliseconds before | 18 | timeout-ms: duration keys must be pressed together in milliseconds before |
diff --git a/drivers/hid/hid-hyperv.c b/drivers/hid/hid-hyperv.c index b372854cf38d..704049e62d58 100644 --- a/drivers/hid/hid-hyperv.c +++ b/drivers/hid/hid-hyperv.c | |||
@@ -309,7 +309,7 @@ static void mousevsc_on_receive(struct hv_device *device, | |||
309 | hid_input_report(input_dev->hid_device, HID_INPUT_REPORT, | 309 | hid_input_report(input_dev->hid_device, HID_INPUT_REPORT, |
310 | input_dev->input_buf, len, 1); | 310 | input_dev->input_buf, len, 1); |
311 | 311 | ||
312 | pm_wakeup_event(&input_dev->device->device, 0); | 312 | pm_wakeup_hard_event(&input_dev->device->device); |
313 | 313 | ||
314 | break; | 314 | break; |
315 | default: | 315 | default: |
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index d4b9db487b16..cfc8b94527b9 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c | |||
@@ -480,18 +480,18 @@ static const u8 xboxone_hori_init[] = { | |||
480 | }; | 480 | }; |
481 | 481 | ||
482 | /* | 482 | /* |
483 | * This packet is required for some of the PDP pads to start | 483 | * This packet is required for most (all?) of the PDP pads to start |
484 | * sending input reports. These pads include: (0x0e6f:0x02ab), | 484 | * sending input reports. These pads include: (0x0e6f:0x02ab), |
485 | * (0x0e6f:0x02a4). | 485 | * (0x0e6f:0x02a4), (0x0e6f:0x02a6). |
486 | */ | 486 | */ |
487 | static const u8 xboxone_pdp_init1[] = { | 487 | static const u8 xboxone_pdp_init1[] = { |
488 | 0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14 | 488 | 0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14 |
489 | }; | 489 | }; |
490 | 490 | ||
491 | /* | 491 | /* |
492 | * This packet is required for some of the PDP pads to start | 492 | * This packet is required for most (all?) of the PDP pads to start |
493 | * sending input reports. These pads include: (0x0e6f:0x02ab), | 493 | * sending input reports. These pads include: (0x0e6f:0x02ab), |
494 | * (0x0e6f:0x02a4). | 494 | * (0x0e6f:0x02a4), (0x0e6f:0x02a6). |
495 | */ | 495 | */ |
496 | static const u8 xboxone_pdp_init2[] = { | 496 | static const u8 xboxone_pdp_init2[] = { |
497 | 0x06, 0x20, 0x00, 0x02, 0x01, 0x00 | 497 | 0x06, 0x20, 0x00, 0x02, 0x01, 0x00 |
@@ -527,12 +527,8 @@ static const struct xboxone_init_packet xboxone_init_packets[] = { | |||
527 | XBOXONE_INIT_PKT(0x0e6f, 0x0165, xboxone_hori_init), | 527 | XBOXONE_INIT_PKT(0x0e6f, 0x0165, xboxone_hori_init), |
528 | XBOXONE_INIT_PKT(0x0f0d, 0x0067, xboxone_hori_init), | 528 | XBOXONE_INIT_PKT(0x0f0d, 0x0067, xboxone_hori_init), |
529 | XBOXONE_INIT_PKT(0x0000, 0x0000, xboxone_fw2015_init), | 529 | XBOXONE_INIT_PKT(0x0000, 0x0000, xboxone_fw2015_init), |
530 | XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init1), | 530 | XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_init1), |
531 | XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init2), | 531 | XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_init2), |
532 | XBOXONE_INIT_PKT(0x0e6f, 0x02a4, xboxone_pdp_init1), | ||
533 | XBOXONE_INIT_PKT(0x0e6f, 0x02a4, xboxone_pdp_init2), | ||
534 | XBOXONE_INIT_PKT(0x0e6f, 0x02a6, xboxone_pdp_init1), | ||
535 | XBOXONE_INIT_PKT(0x0e6f, 0x02a6, xboxone_pdp_init2), | ||
536 | XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init), | 532 | XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init), |
537 | XBOXONE_INIT_PKT(0x24c6, 0x542a, xboxone_rumblebegin_init), | 533 | XBOXONE_INIT_PKT(0x24c6, 0x542a, xboxone_rumblebegin_init), |
538 | XBOXONE_INIT_PKT(0x24c6, 0x543a, xboxone_rumblebegin_init), | 534 | XBOXONE_INIT_PKT(0x24c6, 0x543a, xboxone_rumblebegin_init), |
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 7e75835e220f..850bb259c20e 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c | |||
@@ -841,7 +841,7 @@ static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra | |||
841 | if (param[0] != 3) { | 841 | if (param[0] != 3) { |
842 | param[0] = 2; | 842 | param[0] = 2; |
843 | if (ps2_command(ps2dev, param, ATKBD_CMD_SSCANSET)) | 843 | if (ps2_command(ps2dev, param, ATKBD_CMD_SSCANSET)) |
844 | return 2; | 844 | return 2; |
845 | } | 845 | } |
846 | 846 | ||
847 | ps2_command(ps2dev, param, ATKBD_CMD_SETALL_MBR); | 847 | ps2_command(ps2dev, param, ATKBD_CMD_SETALL_MBR); |
diff --git a/drivers/input/keyboard/cros_ec_keyb.c b/drivers/input/keyboard/cros_ec_keyb.c index 81be6f781f0b..d56001181598 100644 --- a/drivers/input/keyboard/cros_ec_keyb.c +++ b/drivers/input/keyboard/cros_ec_keyb.c | |||
@@ -493,7 +493,8 @@ static int cros_ec_keyb_register_bs(struct cros_ec_keyb *ckdev) | |||
493 | for (i = 0; i < ARRAY_SIZE(cros_ec_keyb_bs); i++) { | 493 | for (i = 0; i < ARRAY_SIZE(cros_ec_keyb_bs); i++) { |
494 | const struct cros_ec_bs_map *map = &cros_ec_keyb_bs[i]; | 494 | const struct cros_ec_bs_map *map = &cros_ec_keyb_bs[i]; |
495 | 495 | ||
496 | if (buttons & BIT(map->bit)) | 496 | if ((map->ev_type == EV_KEY && (buttons & BIT(map->bit))) || |
497 | (map->ev_type == EV_SW && (switches & BIT(map->bit)))) | ||
497 | input_set_capability(idev, map->ev_type, map->code); | 498 | input_set_capability(idev, map->ev_type, map->code); |
498 | } | 499 | } |
499 | 500 | ||
diff --git a/drivers/input/keyboard/matrix_keypad.c b/drivers/input/keyboard/matrix_keypad.c index f51ae09596ef..403452ef00e6 100644 --- a/drivers/input/keyboard/matrix_keypad.c +++ b/drivers/input/keyboard/matrix_keypad.c | |||
@@ -407,7 +407,7 @@ matrix_keypad_parse_dt(struct device *dev) | |||
407 | struct matrix_keypad_platform_data *pdata; | 407 | struct matrix_keypad_platform_data *pdata; |
408 | struct device_node *np = dev->of_node; | 408 | struct device_node *np = dev->of_node; |
409 | unsigned int *gpios; | 409 | unsigned int *gpios; |
410 | int i, nrow, ncol; | 410 | int ret, i, nrow, ncol; |
411 | 411 | ||
412 | if (!np) { | 412 | if (!np) { |
413 | dev_err(dev, "device lacks DT data\n"); | 413 | dev_err(dev, "device lacks DT data\n"); |
@@ -452,12 +452,19 @@ matrix_keypad_parse_dt(struct device *dev) | |||
452 | return ERR_PTR(-ENOMEM); | 452 | return ERR_PTR(-ENOMEM); |
453 | } | 453 | } |
454 | 454 | ||
455 | for (i = 0; i < pdata->num_row_gpios; i++) | 455 | for (i = 0; i < nrow; i++) { |
456 | gpios[i] = of_get_named_gpio(np, "row-gpios", i); | 456 | ret = of_get_named_gpio(np, "row-gpios", i); |
457 | if (ret < 0) | ||
458 | return ERR_PTR(ret); | ||
459 | gpios[i] = ret; | ||
460 | } | ||
457 | 461 | ||
458 | for (i = 0; i < pdata->num_col_gpios; i++) | 462 | for (i = 0; i < ncol; i++) { |
459 | gpios[pdata->num_row_gpios + i] = | 463 | ret = of_get_named_gpio(np, "col-gpios", i); |
460 | of_get_named_gpio(np, "col-gpios", i); | 464 | if (ret < 0) |
465 | return ERR_PTR(ret); | ||
466 | gpios[nrow + i] = ret; | ||
467 | } | ||
461 | 468 | ||
462 | pdata->row_gpios = gpios; | 469 | pdata->row_gpios = gpios; |
463 | pdata->col_gpios = &gpios[pdata->num_row_gpios]; | 470 | pdata->col_gpios = &gpios[pdata->num_row_gpios]; |
@@ -484,10 +491,8 @@ static int matrix_keypad_probe(struct platform_device *pdev) | |||
484 | pdata = dev_get_platdata(&pdev->dev); | 491 | pdata = dev_get_platdata(&pdev->dev); |
485 | if (!pdata) { | 492 | if (!pdata) { |
486 | pdata = matrix_keypad_parse_dt(&pdev->dev); | 493 | pdata = matrix_keypad_parse_dt(&pdev->dev); |
487 | if (IS_ERR(pdata)) { | 494 | if (IS_ERR(pdata)) |
488 | dev_err(&pdev->dev, "no platform data defined\n"); | ||
489 | return PTR_ERR(pdata); | 495 | return PTR_ERR(pdata); |
490 | } | ||
491 | } else if (!pdata->keymap_data) { | 496 | } else if (!pdata->keymap_data) { |
492 | dev_err(&pdev->dev, "no keymap data defined\n"); | 497 | dev_err(&pdev->dev, "no keymap data defined\n"); |
493 | return -EINVAL; | 498 | return -EINVAL; |
diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c index 46406345742b..a7dc286f406c 100644 --- a/drivers/input/keyboard/omap4-keypad.c +++ b/drivers/input/keyboard/omap4-keypad.c | |||
@@ -60,8 +60,18 @@ | |||
60 | 60 | ||
61 | /* OMAP4 values */ | 61 | /* OMAP4 values */ |
62 | #define OMAP4_VAL_IRQDISABLE 0x0 | 62 | #define OMAP4_VAL_IRQDISABLE 0x0 |
63 | #define OMAP4_VAL_DEBOUNCINGTIME 0x7 | 63 | |
64 | #define OMAP4_VAL_PVT 0x7 | 64 | /* |
65 | * Errata i689: If a key is released for a time shorter than debounce time, | ||
66 | * the keyboard will idle and never detect the key release. The workaround | ||
67 | * is to use at least a 12ms debounce time. See omap5432 TRM chapter | ||
68 | * "26.4.6.2 Keyboard Controller Timer" for more information. | ||
69 | */ | ||
70 | #define OMAP4_KEYPAD_PTV_DIV_128 0x6 | ||
71 | #define OMAP4_KEYPAD_DEBOUNCINGTIME_MS(dbms, ptv) \ | ||
72 | ((((dbms) * 1000) / ((1 << ((ptv) + 1)) * (1000000 / 32768))) - 1) | ||
73 | #define OMAP4_VAL_DEBOUNCINGTIME_16MS \ | ||
74 | OMAP4_KEYPAD_DEBOUNCINGTIME_MS(16, OMAP4_KEYPAD_PTV_DIV_128) | ||
65 | 75 | ||
66 | enum { | 76 | enum { |
67 | KBD_REVISION_OMAP4 = 0, | 77 | KBD_REVISION_OMAP4 = 0, |
@@ -181,9 +191,9 @@ static int omap4_keypad_open(struct input_dev *input) | |||
181 | 191 | ||
182 | kbd_writel(keypad_data, OMAP4_KBD_CTRL, | 192 | kbd_writel(keypad_data, OMAP4_KBD_CTRL, |
183 | OMAP4_DEF_CTRL_NOSOFTMODE | | 193 | OMAP4_DEF_CTRL_NOSOFTMODE | |
184 | (OMAP4_VAL_PVT << OMAP4_DEF_CTRL_PTV_SHIFT)); | 194 | (OMAP4_KEYPAD_PTV_DIV_128 << OMAP4_DEF_CTRL_PTV_SHIFT)); |
185 | kbd_writel(keypad_data, OMAP4_KBD_DEBOUNCINGTIME, | 195 | kbd_writel(keypad_data, OMAP4_KBD_DEBOUNCINGTIME, |
186 | OMAP4_VAL_DEBOUNCINGTIME); | 196 | OMAP4_VAL_DEBOUNCINGTIME_16MS); |
187 | /* clear pending interrupts */ | 197 | /* clear pending interrupts */ |
188 | kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS, | 198 | kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS, |
189 | kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS)); | 199 | kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS)); |
diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c index b0f9d19b3410..a94b6494e71a 100644 --- a/drivers/input/mouse/elan_i2c_core.c +++ b/drivers/input/mouse/elan_i2c_core.c | |||
@@ -1348,6 +1348,9 @@ static const struct acpi_device_id elan_acpi_id[] = { | |||
1348 | { "ELAN0618", 0 }, | 1348 | { "ELAN0618", 0 }, |
1349 | { "ELAN061C", 0 }, | 1349 | { "ELAN061C", 0 }, |
1350 | { "ELAN061D", 0 }, | 1350 | { "ELAN061D", 0 }, |
1351 | { "ELAN061E", 0 }, | ||
1352 | { "ELAN0620", 0 }, | ||
1353 | { "ELAN0621", 0 }, | ||
1351 | { "ELAN0622", 0 }, | 1354 | { "ELAN0622", 0 }, |
1352 | { "ELAN1000", 0 }, | 1355 | { "ELAN1000", 0 }, |
1353 | { } | 1356 | { } |
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 5e85f3cca867..2bd5bb11c8ba 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c | |||
@@ -170,6 +170,7 @@ static const char * const smbus_pnp_ids[] = { | |||
170 | "LEN0048", /* X1 Carbon 3 */ | 170 | "LEN0048", /* X1 Carbon 3 */ |
171 | "LEN0046", /* X250 */ | 171 | "LEN0046", /* X250 */ |
172 | "LEN004a", /* W541 */ | 172 | "LEN004a", /* W541 */ |
173 | "LEN005b", /* P50 */ | ||
173 | "LEN0071", /* T480 */ | 174 | "LEN0071", /* T480 */ |
174 | "LEN0072", /* X1 Carbon Gen 5 (2017) - Elan/ALPS trackpoint */ | 175 | "LEN0072", /* X1 Carbon Gen 5 (2017) - Elan/ALPS trackpoint */ |
175 | "LEN0073", /* X1 Carbon G5 (Elantech) */ | 176 | "LEN0073", /* X1 Carbon G5 (Elantech) */ |
@@ -177,6 +178,7 @@ static const char * const smbus_pnp_ids[] = { | |||
177 | "LEN0096", /* X280 */ | 178 | "LEN0096", /* X280 */ |
178 | "LEN0097", /* X280 -> ALPS trackpoint */ | 179 | "LEN0097", /* X280 -> ALPS trackpoint */ |
179 | "LEN200f", /* T450s */ | 180 | "LEN200f", /* T450s */ |
181 | "SYN3221", /* HP 15-ay000 */ | ||
180 | NULL | 182 | NULL |
181 | }; | 183 | }; |
182 | 184 | ||
diff --git a/drivers/input/serio/hyperv-keyboard.c b/drivers/input/serio/hyperv-keyboard.c index 47a0e81a2989..a8b9be3e28db 100644 --- a/drivers/input/serio/hyperv-keyboard.c +++ b/drivers/input/serio/hyperv-keyboard.c | |||
@@ -177,7 +177,7 @@ static void hv_kbd_on_receive(struct hv_device *hv_dev, | |||
177 | * state because the Enter-UP can trigger a wakeup at once. | 177 | * state because the Enter-UP can trigger a wakeup at once. |
178 | */ | 178 | */ |
179 | if (!(info & IS_BREAK)) | 179 | if (!(info & IS_BREAK)) |
180 | pm_wakeup_event(&hv_dev->device, 0); | 180 | pm_wakeup_hard_event(&hv_dev->device); |
181 | 181 | ||
182 | break; | 182 | break; |
183 | 183 | ||
diff --git a/drivers/input/touchscreen/migor_ts.c b/drivers/input/touchscreen/migor_ts.c index 02fb11985819..42d3fd7e04d7 100644 --- a/drivers/input/touchscreen/migor_ts.c +++ b/drivers/input/touchscreen/migor_ts.c | |||
@@ -1,23 +1,10 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0+ | ||
1 | /* | 2 | /* |
2 | * Touch Screen driver for Renesas MIGO-R Platform | 3 | * Touch Screen driver for Renesas MIGO-R Platform |
3 | * | 4 | * |
4 | * Copyright (c) 2008 Magnus Damm | 5 | * Copyright (c) 2008 Magnus Damm |
5 | * Copyright (c) 2007 Ujjwal Pande <ujjwal@kenati.com>, | 6 | * Copyright (c) 2007 Ujjwal Pande <ujjwal@kenati.com>, |
6 | * Kenati Technologies Pvt Ltd. | 7 | * Kenati Technologies Pvt Ltd. |
7 | * | ||
8 | * This file is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public | ||
10 | * License as published by the Free Software Foundation; either | ||
11 | * version 2 of the License, or (at your option) any later version. | ||
12 | * | ||
13 | * This file is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public | ||
19 | * License along with this library; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | 8 | */ |
22 | #include <linux/module.h> | 9 | #include <linux/module.h> |
23 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
diff --git a/drivers/input/touchscreen/st1232.c b/drivers/input/touchscreen/st1232.c index b71673911aac..11ff32c68025 100644 --- a/drivers/input/touchscreen/st1232.c +++ b/drivers/input/touchscreen/st1232.c | |||
@@ -1,3 +1,4 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
1 | /* | 2 | /* |
2 | * ST1232 Touchscreen Controller Driver | 3 | * ST1232 Touchscreen Controller Driver |
3 | * | 4 | * |
@@ -7,15 +8,6 @@ | |||
7 | * Using code from: | 8 | * Using code from: |
8 | * - android.git.kernel.org: projects/kernel/common.git: synaptics_i2c_rmi.c | 9 | * - android.git.kernel.org: projects/kernel/common.git: synaptics_i2c_rmi.c |
9 | * Copyright (C) 2007 Google, Inc. | 10 | * Copyright (C) 2007 Google, Inc. |
10 | * | ||
11 | * This software is licensed under the terms of the GNU General Public | ||
12 | * License version 2, as published by the Free Software Foundation, and | ||
13 | * may be copied, distributed, and modified under those terms. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | */ | 11 | */ |
20 | 12 | ||
21 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
@@ -295,4 +287,4 @@ module_i2c_driver(st1232_ts_driver); | |||
295 | 287 | ||
296 | MODULE_AUTHOR("Tony SIM <chinyeow.sim.xt@renesas.com>"); | 288 | MODULE_AUTHOR("Tony SIM <chinyeow.sim.xt@renesas.com>"); |
297 | MODULE_DESCRIPTION("SITRONIX ST1232 Touchscreen Controller Driver"); | 289 | MODULE_DESCRIPTION("SITRONIX ST1232 Touchscreen Controller Driver"); |
298 | MODULE_LICENSE("GPL"); | 290 | MODULE_LICENSE("GPL v2"); |