diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2015-04-22 10:16:54 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2015-04-22 10:16:54 -0400 |
commit | 2bfd285dcd565cac5479de29495459b6b55627b6 (patch) | |
tree | ea0017aba3b7906c17330dc658579d46b1baae7f | |
parent | 3c73a9603098f94dec8ee49d25a22f3b0d946d3a (diff) | |
download | kernel-2bfd285dcd565cac5479de29495459b6b55627b6.tar.gz kernel-2bfd285dcd565cac5479de29495459b6b55627b6.tar.xz kernel-2bfd285dcd565cac5479de29495459b6b55627b6.zip |
Linux v4.0-9804-gdb4fd9c5d072
-rw-r--r-- | Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch | 223 | ||||
-rw-r--r-- | config-generic | 4 | ||||
-rw-r--r-- | kernel.spec | 11 |
3 files changed, 8 insertions, 230 deletions
diff --git a/Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch b/Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch deleted file mode 100644 index 2e8af3375..000000000 --- a/Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch +++ /dev/null @@ -1,223 +0,0 @@ -From: Dmitry Torokhov <dmitry.torokhov@gmail.com> -Date: Tue, 7 Apr 2015 16:30:01 -0700 -Subject: [PATCH] Input: atmel_mxt_ts - add support for Google Pixel 2 - -This change allows atmel_mxt_ts to bind to ACPI-enumerated devices in -Google Pixel 2 (2015). - -While newer version of ACPI standard allow use of device-tree-like -properties in device descriptions, the version of ACPI implemented in -Google BIOS does not support them, and we have to resort to DMI data to -specify exact characteristics of the devices (touchpad vs. touchscreen, -GPIO to button mapping, etc). - -Pixel 1 continues to use i2c devices and platform data created by -chromeos-laptop driver, since ACPI does not enumerate them. - -Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk> -Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk> -Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> ---- - drivers/input/touchscreen/atmel_mxt_ts.c | 141 ++++++++++++++++++++++++++++--- - 1 file changed, 130 insertions(+), 11 deletions(-) - -diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c -index 2875ddf37289..40b98dda8f38 100644 ---- a/drivers/input/touchscreen/atmel_mxt_ts.c -+++ b/drivers/input/touchscreen/atmel_mxt_ts.c -@@ -14,6 +14,8 @@ - * - */ - -+#include <linux/acpi.h> -+#include <linux/dmi.h> - #include <linux/module.h> - #include <linux/init.h> - #include <linux/completion.h> -@@ -2371,7 +2373,7 @@ static void mxt_input_close(struct input_dev *dev) - } - - #ifdef CONFIG_OF --static struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) -+static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) - { - struct mxt_platform_data *pdata; - u32 *keymap; -@@ -2379,7 +2381,7 @@ static struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) - int proplen, i, ret; - - if (!client->dev.of_node) -- return ERR_PTR(-ENODEV); -+ return ERR_PTR(-ENOENT); - - pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); - if (!pdata) -@@ -2410,25 +2412,132 @@ static struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) - return pdata; - } - #else --static struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) -+static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) - { -- dev_dbg(&client->dev, "No platform data specified\n"); -- return ERR_PTR(-EINVAL); -+ return ERR_PTR(-ENOENT); -+} -+#endif -+ -+#ifdef CONFIG_ACPI -+ -+struct mxt_acpi_platform_data { -+ const char *hid; -+ struct mxt_platform_data pdata; -+}; -+ -+static unsigned int samus_touchpad_buttons[] = { -+ KEY_RESERVED, -+ KEY_RESERVED, -+ KEY_RESERVED, -+ BTN_LEFT -+}; -+ -+static struct mxt_acpi_platform_data samus_platform_data[] = { -+ { -+ /* Touchpad */ -+ .hid = "ATML0000", -+ .pdata = { -+ .t19_num_keys = ARRAY_SIZE(samus_touchpad_buttons), -+ .t19_keymap = samus_touchpad_buttons, -+ }, -+ }, -+ { -+ /* Touchscreen */ -+ .hid = "ATML0001", -+ }, -+ { } -+}; -+ -+static const struct dmi_system_id mxt_dmi_table[] = { -+ { -+ /* 2015 Google Pixel */ -+ .ident = "Chromebook Pixel 2", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "Samus"), -+ }, -+ .driver_data = samus_platform_data, -+ }, -+ { } -+}; -+ -+static const struct mxt_platform_data *mxt_parse_acpi(struct i2c_client *client) -+{ -+ struct acpi_device *adev; -+ const struct dmi_system_id *system_id; -+ const struct mxt_acpi_platform_data *acpi_pdata; -+ -+ /* -+ * Ignore ACPI devices representing bootloader mode. -+ * -+ * This is a bit of a hack: Google Chromebook BIOS creates ACPI -+ * devices for both application and bootloader modes, but we are -+ * interested in application mode only (if device is in bootloader -+ * mode we'll end up switching into application anyway). So far -+ * application mode addresses were all above 0x40, so we'll use it -+ * as a threshold. -+ */ -+ if (client->addr < 0x40) -+ return ERR_PTR(-ENXIO); -+ -+ adev = ACPI_COMPANION(&client->dev); -+ if (!adev) -+ return ERR_PTR(-ENOENT); -+ -+ system_id = dmi_first_match(mxt_dmi_table); -+ if (!system_id) -+ return ERR_PTR(-ENOENT); -+ -+ acpi_pdata = system_id->driver_data; -+ if (!acpi_pdata) -+ return ERR_PTR(-ENOENT); -+ -+ while (acpi_pdata->hid) { -+ if (!strcmp(acpi_device_hid(adev), acpi_pdata->hid)) -+ return &acpi_pdata->pdata; -+ -+ acpi_pdata++; -+ } -+ -+ return ERR_PTR(-ENOENT); -+} -+#else -+static const struct mxt_platform_data *mxt_parse_acpi(struct i2c_client *client) -+{ -+ return ERR_PTR(-ENOENT); - } - #endif - -+static const struct mxt_platform_data * -+mxt_get_platform_data(struct i2c_client *client) -+{ -+ const struct mxt_platform_data *pdata; -+ -+ pdata = dev_get_platdata(&client->dev); -+ if (pdata) -+ return pdata; -+ -+ pdata = mxt_parse_dt(client); -+ if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) -+ return pdata; -+ -+ pdata = mxt_parse_acpi(client); -+ if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) -+ return pdata; -+ -+ dev_err(&client->dev, "No platform data specified\n"); -+ return ERR_PTR(-EINVAL); -+} -+ - static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id) - { - struct mxt_data *data; - const struct mxt_platform_data *pdata; - int error; - -- pdata = dev_get_platdata(&client->dev); -- if (!pdata) { -- pdata = mxt_parse_dt(client); -- if (IS_ERR(pdata)) -- return PTR_ERR(pdata); -- } -+ pdata = mxt_get_platform_data(client); -+ if (IS_ERR(pdata)) -+ return PTR_ERR(pdata); - - data = kzalloc(sizeof(struct mxt_data), GFP_KERNEL); - if (!data) { -@@ -2536,6 +2645,15 @@ static const struct of_device_id mxt_of_match[] = { - }; - MODULE_DEVICE_TABLE(of, mxt_of_match); - -+#ifdef CONFIG_ACPI -+static const struct acpi_device_id mxt_acpi_id[] = { -+ { "ATML0000", 0 }, /* Touchpad */ -+ { "ATML0001", 0 }, /* Touchscreen */ -+ { } -+}; -+MODULE_DEVICE_TABLE(acpi, mxt_acpi_id); -+#endif -+ - static const struct i2c_device_id mxt_id[] = { - { "qt602240_ts", 0 }, - { "atmel_mxt_ts", 0 }, -@@ -2550,6 +2668,7 @@ static struct i2c_driver mxt_driver = { - .name = "atmel_mxt_ts", - .owner = THIS_MODULE, - .of_match_table = of_match_ptr(mxt_of_match), -+ .acpi_match_table = ACPI_PTR(mxt_acpi_id), - .pm = &mxt_pm_ops, - }, - .probe = mxt_probe, --- -2.1.0 - diff --git a/config-generic b/config-generic index 9e7439894..d14208325 100644 --- a/config-generic +++ b/config-generic @@ -2246,6 +2246,8 @@ CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_PS2_TOUCHKIT is not set CONFIG_MOUSE_PS2_ELANTECH=y CONFIG_MOUSE_PS2_SENTELIC=y +# Fedora 22 and 23 don't have a new enough xorg-x11-drv-vmmouse. Revisit +# CONFIG_MOUSE_PS2_VMMOUSE is not set CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_VSXXXAA=m CONFIG_MOUSE_APPLETOUCH=m @@ -3101,12 +3103,14 @@ CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y CONFIG_MEDIA_RADIO_SUPPORT=y CONFIG_MEDIA_RC_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y +# CONFIG_MEDIA_CONTROLLER_DVB is not set # CONFIG_MEDIA_SDR_SUPPORT is not set CONFIG_VIDEO_DEV=m # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_XILINX is not set # CONFIG_USB_SI4713 is not set # CONFIG_PLATFORM_SI4713 is not set # CONFIG_I2C_SI4713 is not set diff --git a/kernel.spec b/kernel.spec index 6438ab74a..8adb7c25c 100644 --- a/kernel.spec +++ b/kernel.spec @@ -67,7 +67,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 0 # The git snapshot level -%define gitrev 11 +%define gitrev 12 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -611,9 +611,6 @@ Patch26175: xen-pciback-Don-t-disable-PCI_COMMAND-on-PCI-device-.patch #rhbz 1212230 Patch26176: Input-synaptics-pin-3-touches-when-the-firmware-repo.patch -#rhbz 1209088 -Patch26177: Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch - # END OF PATCH DEFINITIONS %endif @@ -1340,9 +1337,6 @@ ApplyPatch xen-pciback-Don-t-disable-PCI_COMMAND-on-PCI-device-.patch #rhbz 1212230 ApplyPatch Input-synaptics-pin-3-touches-when-the-firmware-repo.patch -#rhbz 1209088 -ApplyPatch Input-atmel_mxt_ts-add-support-for-Google-Pixel-2.patch - # END OF PATCH APPLICATIONS %endif @@ -2193,6 +2187,9 @@ fi # # %changelog +* Wed Apr 22 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.1.0-0.rc0.git12.1 +- Linux v4.0-9804-gdb4fd9c5d072 + * Tue Apr 21 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.1.0-0.rc0.git11.1 - Linux v4.0-9362-g1fc149933fd4 |