summaryrefslogtreecommitdiffstats
path: root/0010-driver-core-platform-Add-support-for-built-in-device.patch
diff options
context:
space:
mode:
authorLaura Abbott <labbott@fedoraproject.org>2015-12-15 12:17:16 -0800
committerLaura Abbott <labbott@fedoraproject.org>2015-12-15 12:17:16 -0800
commitd2ede0b2227fc00e3c80bdd4043245332c3047a8 (patch)
treec7d1d9108030fdee96a2cef401d49b401278ca03 /0010-driver-core-platform-Add-support-for-built-in-device.patch
parentc3ab74ee6c843b8938850b66b7fd17d215078c81 (diff)
downloadkernel-d2ede0b2227fc00e3c80bdd4043245332c3047a8.tar.gz
kernel-d2ede0b2227fc00e3c80bdd4043245332c3047a8.tar.xz
kernel-d2ede0b2227fc00e3c80bdd4043245332c3047a8.zip
Add support for Yoga touch input (rhbz 1275718)
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.patch112
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
+