diff options
author | Laura Abbott <labbott@fedoraproject.org> | 2016-01-07 13:23:19 -0800 |
---|---|---|
committer | Laura Abbott <labbott@fedoraproject.org> | 2016-01-07 13:32:04 -0800 |
commit | 7ef4087f99e34130a22c816b5262754be5486507 (patch) | |
tree | 282c266e57161650663f11ff35556f573b2e63f4 /0010-driver-core-platform-Add-support-for-built-in-device.patch | |
parent | 44916c7492c59a62a42b81bfcafa4719c90f9d77 (diff) | |
download | kernel-7ef4087f99e34130a22c816b5262754be5486507.tar.gz kernel-7ef4087f99e34130a22c816b5262754be5486507.tar.xz kernel-7ef4087f99e34130a22c816b5262754be5486507.zip |
Bring back patches for Lenovo Yoga touchpad (rhbz 1275718)
We have a better idea why the Yoga patches are affecting one
touchpad. Bring them back so everyone can benefit from Yoga.
Diffstat (limited to '0010-driver-core-platform-Add-support-for-built-in-device.patch')
-rw-r--r-- | 0010-driver-core-platform-Add-support-for-built-in-device.patch | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/0010-driver-core-platform-Add-support-for-built-in-device.patch b/0010-driver-core-platform-Add-support-for-built-in-device.patch new file mode 100644 index 000000000..823198ef4 --- /dev/null +++ b/0010-driver-core-platform-Add-support-for-built-in-device.patch @@ -0,0 +1,112 @@ +From 00bbc1d8e46a92ce7bd80622cf4b09c3b727a741 Mon Sep 17 00:00:00 2001 +From: Mika Westerberg <mika.westerberg@linux.intel.com> +Date: Mon, 30 Nov 2015 17:11:38 +0200 +Subject: [PATCH 10/16] driver core: platform: Add support for built-in device + properties + +Make it possible to pass built-in device properties to platform device +drivers. This is useful if the system does not have any firmware interface +like Device Tree or ACPI which provides these. + +Properties associated with the platform device will be automatically +released when the corresponding device is removed. + +Suggested-by: Arnd Bergmann <arnd@arndb.de> +Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> +Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> +Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> +--- + drivers/base/platform.c | 25 +++++++++++++++++++++++++ + include/linux/platform_device.h | 5 +++++ + 2 files changed, 30 insertions(+) + +diff --git a/drivers/base/platform.c b/drivers/base/platform.c +index 1dd6d3b..d77ed0c 100644 +--- a/drivers/base/platform.c ++++ b/drivers/base/platform.c +@@ -26,6 +26,7 @@ + #include <linux/acpi.h> + #include <linux/clk/clk-conf.h> + #include <linux/limits.h> ++#include <linux/property.h> + + #include "base.h" + #include "power/power.h" +@@ -299,6 +300,22 @@ int platform_device_add_data(struct platform_device *pdev, const void *data, + EXPORT_SYMBOL_GPL(platform_device_add_data); + + /** ++ * platform_device_add_properties - add built-in properties to a platform device ++ * @pdev: platform device to add properties to ++ * @pset: properties to add ++ * ++ * The function will take deep copy of the properties in @pset and attach ++ * the copy to the platform device. The memory associated with properties ++ * will be freed when the platform device is released. ++ */ ++int platform_device_add_properties(struct platform_device *pdev, ++ const struct property_set *pset) ++{ ++ return device_add_property_set(&pdev->dev, pset); ++} ++EXPORT_SYMBOL_GPL(platform_device_add_properties); ++ ++/** + * platform_device_add - add a platform device to device hierarchy + * @pdev: platform device we're adding + * +@@ -409,6 +426,8 @@ void platform_device_del(struct platform_device *pdev) + if (r->parent) + release_resource(r); + } ++ ++ device_remove_property_set(&pdev->dev); + } + } + EXPORT_SYMBOL_GPL(platform_device_del); +@@ -487,6 +506,12 @@ struct platform_device *platform_device_register_full( + if (ret) + goto err; + ++ if (pdevinfo->pset) { ++ ret = platform_device_add_properties(pdev, pdevinfo->pset); ++ if (ret) ++ goto err; ++ } ++ + ret = platform_device_add(pdev); + if (ret) { + err: +diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h +index dc777be..dba40b1 100644 +--- a/include/linux/platform_device.h ++++ b/include/linux/platform_device.h +@@ -18,6 +18,7 @@ + #define PLATFORM_DEVID_AUTO (-2) + + struct mfd_cell; ++struct property_set; + + struct platform_device { + const char *name; +@@ -70,6 +71,8 @@ struct platform_device_info { + const void *data; + size_t size_data; + u64 dma_mask; ++ ++ const struct property_set *pset; + }; + extern struct platform_device *platform_device_register_full( + const struct platform_device_info *pdevinfo); +@@ -167,6 +170,8 @@ extern int platform_device_add_resources(struct platform_device *pdev, + unsigned int num); + extern int platform_device_add_data(struct platform_device *pdev, + const void *data, size_t size); ++extern int platform_device_add_properties(struct platform_device *pdev, ++ const struct property_set *pset); + extern int platform_device_add(struct platform_device *pdev); + extern void platform_device_del(struct platform_device *pdev); + extern void platform_device_put(struct platform_device *pdev); +-- +2.5.0 + |