From: "Lothar Waßmann" <LW@KARO-electronics.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v7 06/10] usb: host: ehci-generic: add error path and .remove callback
Date: Tue, 20 Jun 2017 13:26:37 +0200 [thread overview]
Message-ID: <20170620132637.4aefebc1@karo-electronics.de> (raw)
In-Reply-To: <bc345cea-7044-f34c-cc05-be65b94d5115@denx.de>
Hi,
On Tue, 20 Jun 2017 12:09:22 +0200 Marek Vasut wrote:
> On 06/20/2017 11:59 AM, patrice.chotard at st.com wrote:
> > From: Patrice Chotard <patrice.chotard@st.com>
> >
> > Use an array to save enabled clocks reference and deasserted resets
> > in order to respectively disabled and asserted them in case of error
> > during probe() or during driver removal.
> >
> > Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
>
> Nitpicks below
>
> > ---
> >
> > v7: _ replace clk_count() and reset_count() by ofnode_count_phandle_with_args()
> >
> > v6: _ none
> >
> > v5: _ none
> >
> > v4: _ update the memory allocation for deasserted resets and enabled
> > clocks reference list. Replace lists by arrays.
> > _ usage of new RESET and CLOCK methods clk_count(), reset_count(),
> > reset_assert_all() and clk_disable_all().
> >
> > v3: _ keep enabled clocks and deasserted resets reference in list in order to
> > disable clock or assert resets in error path or in .remove callback
> > _ use struct generic_ehci * instead of struct udevice * as parameter for
> > ehci_release_resets() and ehci_release_clocks()
> >
> > drivers/usb/host/ehci-generic.c | 125 ++++++++++++++++++++++++++++++++--------
> > 1 file changed, 101 insertions(+), 24 deletions(-)
> >
> > diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c
> > index 2116ae1..388b242 100644
> > --- a/drivers/usb/host/ehci-generic.c
> > +++ b/drivers/usb/host/ehci-generic.c
> > @@ -11,6 +11,8 @@
> > #include <dm.h>
> > #include "ehci.h"
> >
> > +#include <dm/ofnode.h>
> > +
> > /*
> > * Even though here we don't explicitly use "struct ehci_ctrl"
> > * ehci_register() expects it to be the first thing that resides in
> > @@ -18,43 +20,119 @@
> > */
> > struct generic_ehci {
> > struct ehci_ctrl ctrl;
> > + struct clk *clocks;
> > + struct reset_ctl *resets;
> > + int clock_count;
> > + int reset_count;
> > };
> >
> > static int ehci_usb_probe(struct udevice *dev)
> > {
> > + struct generic_ehci *priv = dev_get_priv(dev);
> > struct ehci_hccr *hccr;
> > struct ehci_hcor *hcor;
> > - int i;
> > -
> > - for (i = 0; ; i++) {
> > - struct clk clk;
> > - int ret;
> > -
> > - ret = clk_get_by_index(dev, i, &clk);
> > - if (ret < 0)
> > - break;
> > - if (clk_enable(&clk))
> > - error("failed to enable clock %d\n", i);
> > - clk_free(&clk);
> > - }
> > + int i, err, ret, clock_nb, reset_nb;
> > +
> > + err = 0;
> > + priv->clock_count = 0;
> > + clock_nb = ofnode_count_phandle_with_args(dev_ofnode(dev), "clocks",
> > + "#clock-cells");
> > + if (clock_nb > 0) {
> > + priv->clocks = devm_kmalloc(dev, sizeof(struct clk) * clock_nb,
> > + GFP_KERNEL);
>
> devm_kzalloc()
>
devm_kcalloc(dev, clock_nb, sizeof()...)
Lothar Waßmann
next prev parent reply other threads:[~2017-06-20 11:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-20 9:59 [U-Boot] [PATCH v7 00/10] usb: Extend ehci and ohci generic drivers patrice.chotard at st.com
2017-06-20 9:59 ` [U-Boot] [PATCH v7 01/10] reset: add reset_request() patrice.chotard at st.com
2017-06-20 9:59 ` [U-Boot] [PATCH v7 02/10] reset: add reset_assert_all() patrice.chotard at st.com
2017-06-20 9:59 ` [U-Boot] [PATCH v7 03/10] clk: add clk_disable_all() patrice.chotard at st.com
2017-06-20 12:11 ` Lothar Waßmann
2017-06-20 12:40 ` Patrice CHOTARD
2017-06-20 9:59 ` [U-Boot] [PATCH v7 04/10] dm: core: add ofnode_count_phandle_with_args() patrice.chotard at st.com
2017-06-20 18:26 ` Simon Glass
2017-06-20 9:59 ` [U-Boot] [PATCH v7 05/10] usb: host: ehci-generic: replace printf() by error() patrice.chotard at st.com
2017-06-20 9:59 ` [U-Boot] [PATCH v7 06/10] usb: host: ehci-generic: add error path and .remove callback patrice.chotard at st.com
2017-06-20 10:09 ` Marek Vasut
2017-06-20 11:26 ` Lothar Waßmann [this message]
2017-06-20 12:22 ` Patrice CHOTARD
2017-06-20 11:32 ` Lothar Waßmann
2017-06-20 12:28 ` Patrice CHOTARD
2017-06-20 9:59 ` [U-Boot] [PATCH v7 07/10] usb: host: ehci-generic: add generic PHY support patrice.chotard at st.com
2017-06-20 9:59 ` [U-Boot] [PATCH v7 08/10] usb: host: ohci-generic: add CLOCK support patrice.chotard at st.com
2017-06-20 12:06 ` Lothar Waßmann
2017-06-20 12:56 ` Patrice CHOTARD
2017-06-21 7:56 ` Lothar Waßmann
2017-06-21 8:36 ` Patrice CHOTARD
2017-06-20 9:59 ` [U-Boot] [PATCH v7 09/10] usb: host: ohci-generic: add RESET support patrice.chotard at st.com
2017-06-20 18:26 ` Simon Glass
2017-06-20 9:59 ` [U-Boot] [PATCH v7 10/10] usb: host: ohci-generic: add generic PHY support patrice.chotard at st.com
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170620132637.4aefebc1@karo-electronics.de \
--to=lw@karo-electronics.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox