Thread (11 messages) 11 messages, 4 authors, 2016-08-08

[PATCH v4 0/6] power: add power sequence library

From: Peter Chen <hidden>
Date: 2016-08-08 02:06:40
Also in: linux-devicetree, linux-pm, lkml
Subsystem: the rest · Maintainer: Linus Torvalds

On Sat, Aug 06, 2016 at 02:00:08PM +0200, Oscar wrote:
El 2016-08-02 05:30, Peter Chen escribi?:
quoted
Hi all,

This is a follow-up for my last power sequence framework patch set
[1].
According to Rob Herring and Ulf Hansson's comments[2], I use a
generic
power sequence library for parsing the power sequence elements on DT,
and implement generic power sequence on library. The host driver
can allocate power sequence instance, and calls pwrseq APIs
accordingly.

In future, if there are special power sequence requirements, the
special
power sequence library can be created.

This patch set is tested on i.mx6 sabresx evk using a dts change,
I use
two hot-plug devices to simulate this use case, the related binding
change is updated at patch [1/6], The udoo board changes were tested
using my last power sequence patch set.[3]

Except for hard-wired MMC and USB devices, I find the USB ULPI PHY
also
need to power on itself before it can be found by ULPI bus.

[1] http://www.spinics.net/lists/linux-usb/msg142755.html
[2] http://www.spinics.net/lists/linux-usb/msg143106.html
[3] http://www.spinics.net/lists/linux-usb/msg142815.html

Changes for v4:
- Create the patch on next-20160722
- Fix the of_node is not NULL after chipidea driver is unbinded
[Patch 5/6]
- Using more friendly wait method for reset gpio [Patch 2/6]
- Support multiple input clocks [Patch 2/6]
- Add Rob Herring's ack for DT changes
- Add Joshua Clayton's Tested-by

Changes for v3:
- Delete "power-sequence" property at binding-doc, and change
related code
 at both library and user code.
- Change binding-doc example node name with Rob's comments
- of_get_named_gpio_flags only gets the gpio, but without setting
gpio flags,
 add additional code request gpio with proper gpio flags
- Add Philipp Zabel's Ack and MAINTAINER's entry

Changes for v2:
- Delete "pwrseq" prefix and clock-names for properties at dt binding
- Should use structure not but its pointer for kzalloc
- Since chipidea core has no of_node, let core's of_node equals glue
 layer's at core's probe

Peter Chen (6):
 binding-doc: power: pwrseq-generic: add binding doc for generic
power
   sequence library
 power: add power sequence library
 binding-doc: usb: usb-device: add optional properties for power
   sequence
 usb: core: add power sequence handling for USB devices
 usb: chipidea: let chipidea core device of_node equal's glue layer
   device of_node
 ARM: dts: imx6qdl-udoo.dtsi: fix onboard USB HUB property
Hi Peter,

I tried the last version on my udoo board but I got these compile
errors:

[21330s] ERROR: "pwrseq_get" [drivers/usb/core/usbcore.ko] undefined!
[21330s] ERROR: "pwrseq_free" [drivers/usb/core/usbcore.ko] undefined!
[21330s] ERROR: "pwrseq_put" [drivers/usb/core/usbcore.ko] undefined!
[21330s] ERROR: "pwrseq_off" [drivers/usb/core/usbcore.ko] undefined!
[21330s] ERROR: "pwrseq_on" [drivers/usb/core/usbcore.ko] undefined!

Will you do another version?
Thanks, I forgot to export above symbols, I will fix it at next
version. Below fix should work for you, I have tested.
diff --git a/drivers/power/pwrseq/core.c b/drivers/power/pwrseq/core.c
index 60f1e4e..6861a21 100644
--- a/drivers/power/pwrseq/core.c
+++ b/drivers/power/pwrseq/core.c
@@ -29,6 +29,7 @@ int pwrseq_get(struct device_node *np, struct pwrseq *p)
 
 	return -ENOTSUPP;
 }
+EXPORT_SYMBOL(pwrseq_get);
 
 int pwrseq_on(struct device_node *np, struct pwrseq *p)
 {
@@ -37,24 +38,28 @@ int pwrseq_on(struct device_node *np, struct pwrseq *p)
 
 	return -ENOTSUPP;
 }
+EXPORT_SYMBOL(pwrseq_on);
 
 void pwrseq_off(struct pwrseq *p)
 {
 	if (p && p->off)
 		p->off(p);
 }
+EXPORT_SYMBOL(pwrseq_off);
 
 void pwrseq_put(struct pwrseq *p)
 {
 	if (p && p->put)
 		p->put(p);
 }
+EXPORT_SYMBOL(pwrseq_put);
 
 void pwrseq_free(struct pwrseq *p)
 {
 	if (p && p->free)
 		p->free(p);
 }
+EXPORT_SYMBOL(pwrseq_free);
-- 

Best Regards,
Peter Chen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help