From patchwork Mon Aug 8 01:57:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Chen X-Patchwork-Id: 9266621 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0B7BE6075A for ; Mon, 8 Aug 2016 02:07:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ECF4126D17 for ; Mon, 8 Aug 2016 02:06:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DCFF927D64; Mon, 8 Aug 2016 02:06:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5B7C526D17 for ; Mon, 8 Aug 2016 02:06:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751989AbcHHCGj (ORCPT ); Sun, 7 Aug 2016 22:06:39 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36691 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751745AbcHHCGi (ORCPT ); Sun, 7 Aug 2016 22:06:38 -0400 Received: by mail-pf0-f193.google.com with SMTP id y134so24045175pfg.3; Sun, 07 Aug 2016 19:06:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=N7Ul69Bof33xuaiqWd4lj6Rlxah7uw0qgLQT9IEGRv8=; b=s9o6Viarol6QPHeHdldGrd0tLt+Nda1duNusF0Pf3Xn6Dtq/kaT01Vq8QDyGX7lDVD MYt23H08cJKFQm5njWlErtICFrU0v2OMo/t1fteKae1aug5uU5xeNGWkZQz8AO6KVrOi 5bXT+KIo7xEWTFjsV378RHsn/Pxy/B3r97JL5rOoFo3D7jBdNDFFWY7D1NiB4o+URpTD HKQNn8T7R8XPZJpyZ+kJoWFjAUqjkl5e/EpFjC9TjTJIyRdykLHNN5L1SmqxJECkZrq8 Tdq5WTaFVk8IC/i8qPaJ/LubuRD0DRWF4LeE1ntHBCtNrIaXx5E/Aq7OBCcpoUd+uHyk 1R9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=N7Ul69Bof33xuaiqWd4lj6Rlxah7uw0qgLQT9IEGRv8=; b=cC6Dyy8WAiEoqyAPY9r4DU/p3w8Dzcn+IRQvg7/u0+mzUGcnxMSLYH5mA0ZbzrBoYq QwWQC0IkNHcMLYP15ViFlv7DZ7M53yrztwx5m4PI/Um4xwqJ80tTPzHUnFqfy8nnY2G7 vMNlb/6xD6Qif0l8DPGRzsX99qAbOEUOhUjzWuD66uROloshGUzcbbqOY5JP+4vS4MSD X6T2j+n2Q7wvRLFqPt1CUgCkyxNYIkbUMy0gBHqwdqK5sE6i18IYPGRDpfLzQI3HCyY8 qg/zR80Nev9bEc1bZ6eeShllflVkzOTiOFaOW1F4BtIO7nz3YZsxOdr1CGh48s4g+hKS liAQ== X-Gm-Message-State: AEkoouvtRg+1jdp+NeaQhs5WtDK5k03LLc1+VGN30gBhhhD2lIVcJDxb0FwZWB0y43CkPw== X-Received: by 10.98.134.77 with SMTP id x74mr157786227pfd.21.1470621997091; Sun, 07 Aug 2016 19:06:37 -0700 (PDT) Received: from shlinux2 (gate-zmy3.freescale.com. [192.88.167.1]) by smtp.gmail.com with ESMTPSA id l191sm43186128pfc.91.2016.08.07.19.06.26 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Sun, 07 Aug 2016 19:06:36 -0700 (PDT) Date: Mon, 8 Aug 2016 09:57:22 +0800 From: Peter Chen To: Oscar Cc: Peter Chen , mark.rutland@arm.com, ulf.hansson@linaro.org, stephen.boyd@linaro.org, k.kozlowski@samsung.com, linux-kernel@vger.kernel.org, festevam@gmail.com, stillcompiling@gmail.com, pawel.moll@arm.com, dbaryshkov@gmail.com, mka@chromium.org, stern@rowland.harvard.edu, dwmw3@infradead.org, devicetree@vger.kernel.org, mail@maciej.szmigiero.name, arnd@arndb.de, linux-pm@vger.kernel.org, s.hauer@pengutronix.de, troy.kisky@boundarydevices.com, robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, sre@kernel.org, broonie@kernel.org, p.zabel@pengutronix.de, shawnguo@kernel.org Subject: Re: [PATCH v4 0/6] power: add power sequence library Message-ID: <20160808015722.GA17680@shlinux2> References: <1470108652-16812-1-git-send-email-peter.chen@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Sat, Aug 06, 2016 at 02:00:08PM +0200, Oscar wrote: > El 2016-08-02 05:30, Peter Chen escribió: > >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. Peter Chen --- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html 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,