* [PATCH v2 1/5] of/device: Add of_device_link_add function
2019-05-15 13:11 [PATCH v2 0/5] Add of_device_link_add() functions Benjamin Gaignard
@ 2019-05-15 13:11 ` Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 2/5] Input: edt-ft5x06: Document suspend-dependencies property Benjamin Gaignard
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Benjamin Gaignard @ 2019-05-15 13:11 UTC (permalink / raw)
To: rafael.j.wysocki, dmitry.torokhov, robh+dt, mark.rutland, hadess,
frowand.list, m.felsch, agx, arnd
Cc: linux-input, devicetree, linux-kernel, linux-stm32, broonie,
Benjamin Gaignard
Use 'suspend-dependencies' property from device node to ensure that
the listed devices will suspended after it and resumed before it.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
---
CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
version 2:
- only keep of_device_links_add() and use
DL_FLAG_PM_RUNTIME and DL_FLAG_AUTOREMOVE_CONSUMER flags to follow Rafael
advices
- reword function description
- try to use a more explicit property name
drivers/of/device.c | 37 +++++++++++++++++++++++++++++++++++++
include/linux/of_device.h | 7 +++++++
2 files changed, 44 insertions(+)
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 3717f2a20d0d..44ec84eee310 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -336,3 +336,40 @@ int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env)
return 0;
}
EXPORT_SYMBOL_GPL(of_device_uevent_modalias);
+
+/**
+ * of_device_links_add - Create links between a consumer device
+ * and it listed dependencies from device tree data
+ *
+ * @consumer: consumer device
+ *
+ * Ensure that consumer's dependencies will be suspended after it
+ * and resumed before it.
+ *
+ * Returns 0 on success, < 0 on failure.
+ */
+int of_device_links_add(struct device *consumer)
+{
+ struct device_node *np;
+ struct platform_device *pdev;
+ int i = 0;
+
+ np = of_parse_phandle(consumer->of_node, "suspend-dependencies", i++);
+ while (np) {
+ pdev = of_find_device_by_node(np);
+ of_node_put(np);
+ if (!pdev)
+ return -EINVAL;
+
+ device_link_add(consumer, &pdev->dev,
+ DL_FLAG_PM_RUNTIME |
+ DL_FLAG_AUTOREMOVE_CONSUMER);
+ platform_device_put(pdev);
+
+ np = of_parse_phandle(consumer->of_node, "suspend-dependencies",
+ i++);
+ }
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(of_device_links_add);
diff --git a/include/linux/of_device.h b/include/linux/of_device.h
index 8d31e39dd564..83f24c386d51 100644
--- a/include/linux/of_device.h
+++ b/include/linux/of_device.h
@@ -41,6 +41,8 @@ extern int of_device_request_module(struct device *dev);
extern void of_device_uevent(struct device *dev, struct kobj_uevent_env *env);
extern int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env);
+extern int of_device_links_add(struct device *consumer);
+
static inline void of_device_node_put(struct device *dev)
{
of_node_put(dev->of_node);
@@ -91,6 +93,11 @@ static inline int of_device_uevent_modalias(struct device *dev,
return -ENODEV;
}
+static int of_device_links_add(struct device *consumer)
+{
+ return 0;
+}
+
static inline void of_device_node_put(struct device *dev) { }
static inline const struct of_device_id *__of_match_device(
--
2.15.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 2/5] Input: edt-ft5x06: Document suspend-dependencies property
2019-05-15 13:11 [PATCH v2 0/5] Add of_device_link_add() functions Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 1/5] of/device: Add of_device_link_add function Benjamin Gaignard
@ 2019-05-15 13:11 ` Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 3/5] input: edt-ft5x06 - Call of_device_links_add() to create links Benjamin Gaignard
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Benjamin Gaignard @ 2019-05-15 13:11 UTC (permalink / raw)
To: rafael.j.wysocki, dmitry.torokhov, robh+dt, mark.rutland, hadess,
frowand.list, m.felsch, agx, arnd
Cc: linux-input, devicetree, linux-kernel, linux-stm32, broonie,
Benjamin Gaignard
Explain the purpose of suspend-dependencies property.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
---
Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
index 870b8c5cce9b..81e8eb44d720 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
@@ -60,6 +60,8 @@ Optional properties:
- touchscreen-inverted-x : See touchscreen.txt
- touchscreen-inverted-y : See touchscreen.txt
- touchscreen-swapped-x-y : See touchscreen.txt
+ - suspend-dependencies : Phandle list of devices which have to be suspended
+ after touchscreen device and resumed before it.
Example:
polytouch: edt-ft5x06@38 {
--
2.15.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 3/5] input: edt-ft5x06 - Call of_device_links_add() to create links
2019-05-15 13:11 [PATCH v2 0/5] Add of_device_link_add() functions Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 1/5] of/device: Add of_device_link_add function Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 2/5] Input: edt-ft5x06: Document suspend-dependencies property Benjamin Gaignard
@ 2019-05-15 13:11 ` Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 4/5] Input: goodix: Document suspend-dependencies property Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 5/5] input: goodix - Call of_device_links_add() to create links Benjamin Gaignard
4 siblings, 0 replies; 6+ messages in thread
From: Benjamin Gaignard @ 2019-05-15 13:11 UTC (permalink / raw)
To: rafael.j.wysocki, dmitry.torokhov, robh+dt, mark.rutland, hadess,
frowand.list, m.felsch, agx, arnd
Cc: linux-input, devicetree, linux-kernel, linux-stm32, broonie,
Benjamin Gaignard
Add a call to of_device_links_add() to create links with suspend
dependencies at probe time.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
---
drivers/input/touchscreen/edt-ft5x06.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 702bfda7ee77..65053be10d4e 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -1167,6 +1167,8 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
i2c_set_clientdata(client, tsdata);
+ of_device_links_add(&client->dev);
+
irq_flags = irq_get_trigger_type(client->irq);
if (irq_flags == IRQF_TRIGGER_NONE)
irq_flags = IRQF_TRIGGER_FALLING;
--
2.15.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 4/5] Input: goodix: Document suspend-dependencies property
2019-05-15 13:11 [PATCH v2 0/5] Add of_device_link_add() functions Benjamin Gaignard
` (2 preceding siblings ...)
2019-05-15 13:11 ` [PATCH v2 3/5] input: edt-ft5x06 - Call of_device_links_add() to create links Benjamin Gaignard
@ 2019-05-15 13:11 ` Benjamin Gaignard
2019-05-15 13:11 ` [PATCH v2 5/5] input: goodix - Call of_device_links_add() to create links Benjamin Gaignard
4 siblings, 0 replies; 6+ messages in thread
From: Benjamin Gaignard @ 2019-05-15 13:11 UTC (permalink / raw)
To: rafael.j.wysocki, dmitry.torokhov, robh+dt, mark.rutland, hadess,
frowand.list, m.felsch, agx, arnd
Cc: linux-input, devicetree, linux-kernel, linux-stm32, broonie,
Benjamin Gaignard
Explain the purpose of suspend-dependencies property.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
---
Documentation/devicetree/bindings/input/touchscreen/goodix.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
index 8cf0b4d38a7e..5527952054d2 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
@@ -24,6 +24,8 @@ Optional properties:
- touchscreen-size-x
- touchscreen-size-y
- touchscreen-swapped-x-y
+ - suspend-dependencies : Phandle list of devices which have to be suspended
+ after goodix device and resumed before it.
The touchscreen-* properties are documented in touchscreen.txt in this
directory.
--
2.15.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 5/5] input: goodix - Call of_device_links_add() to create links
2019-05-15 13:11 [PATCH v2 0/5] Add of_device_link_add() functions Benjamin Gaignard
` (3 preceding siblings ...)
2019-05-15 13:11 ` [PATCH v2 4/5] Input: goodix: Document suspend-dependencies property Benjamin Gaignard
@ 2019-05-15 13:11 ` Benjamin Gaignard
4 siblings, 0 replies; 6+ messages in thread
From: Benjamin Gaignard @ 2019-05-15 13:11 UTC (permalink / raw)
To: rafael.j.wysocki, dmitry.torokhov, robh+dt, mark.rutland, hadess,
frowand.list, m.felsch, agx, arnd
Cc: linux-input, devicetree, linux-kernel, linux-stm32, broonie,
Benjamin Gaignard
Add a call to of_device_links_add() to create links with
suspend dependencies at probe time.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
---
drivers/input/touchscreen/goodix.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index f57d82220a88..49fd4763f17b 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -30,6 +30,7 @@
#include <linux/slab.h>
#include <linux/acpi.h>
#include <linux/of.h>
+#include <linux/of_device.h>
#include <asm/unaligned.h>
struct goodix_ts_data;
@@ -812,6 +813,8 @@ static int goodix_ts_probe(struct i2c_client *client,
ts->chip = goodix_get_chip_data(ts->id);
+ of_device_links_add(&client->dev);
+
if (ts->gpiod_int && ts->gpiod_rst) {
/* update device config */
ts->cfg_name = devm_kasprintf(&client->dev, GFP_KERNEL,
--
2.15.0
^ permalink raw reply related [flat|nested] 6+ messages in thread