From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Jung Daehwan <dh10.jung@samsung.com>
Cc: Mathias Nyman <mathias.nyman@intel.com>,
"open list:USB XHCI DRIVER" <linux-usb@vger.kernel.org>,
open list <linux-kernel@vger.kernel.org>,
Howard Yen <howardyen@google.com>,
Jack Pham <jackp@codeaurora.org>, Puma Hsu <pumahsu@google.com>,
"J . Avila" <elavila@google.com>,
sc.suh@samsung.com,
Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Subject: Re: [PATCH v4 2/5] usb: host: add xhci hooks for xhci-exynos
Date: Wed, 27 Apr 2022 11:19:25 +0200 [thread overview]
Message-ID: <YmkKnQEhJzk84fHj@kroah.com> (raw)
In-Reply-To: <20220427090617.GA145620@ubuntu>
On Wed, Apr 27, 2022 at 06:06:17PM +0900, Jung Daehwan wrote:
> On Tue, Apr 26, 2022 at 12:19:17PM +0200, Greg Kroah-Hartman wrote:
> > On Tue, Apr 26, 2022 at 06:18:45PM +0900, Daehwan Jung wrote:
> > > To enable supporting for USB offload, define "offload" in usb controller
> > > node of device tree. "offload" value can be used to determine which type
> > > of offload was been enabled in the SoC.
> > >
> > > For example:
> > >
> > > &usbdrd_dwc3 {
> > > ...
> > > /* support usb offloading, 0: disabled, 1: audio */
> > > offload = <1>;
> > > ...
> > > };
> > >
> > > There are several vendor_ops introduced by this patch:
> > >
> > > struct xhci_vendor_ops - function callbacks for vendor specific operations
> > > {
> > > @vendor_init:
> > > - called for vendor init process during xhci-plat-hcd
> > > probe.
> > > @vendor_cleanup:
> > > - called for vendor cleanup process during xhci-plat-hcd
> > > remove.
> > > @is_usb_offload_enabled:
> > > - called to check if usb offload enabled.
> > > @alloc_dcbaa:
> > > - called when allocating vendor specific dcbaa during
> > > memory initializtion.
> > > @free_dcbaa:
> > > - called to free vendor specific dcbaa when cleanup the
> > > memory.
> > > @alloc_transfer_ring:
> > > - called when vendor specific transfer ring allocation is required
> > > @free_transfer_ring:
> > > - called to free vendor specific transfer ring
> > > @sync_dev_ctx:
> > > - called when synchronization for device context is required
> > > }
> > >
> > > The xhci hooks with prefix "xhci_vendor_" on the ops in xhci_vendor_ops.
> > > For example, vendor_init ops will be invoked by xhci_vendor_init() hook,
> > > is_usb_offload_enabled ops will be invoked by
> > > xhci_vendor_is_usb_offload_enabled(), and so on.
> > >
> > > Signed-off-by: Daehwan Jung <dh10.jung@samsung.com>
> > > Signed-off-by: J. Avila <elavila@google.com>
> > > Signed-off-by: Puma Hsu <pumahsu@google.com>
> > > Signed-off-by: Howard Yen <howardyen@google.com>
> > > ---
> > > drivers/usb/host/xhci-hub.c | 5 ++
> > > drivers/usb/host/xhci-mem.c | 131 +++++++++++++++++++++++++++++++----
> > > drivers/usb/host/xhci-plat.c | 44 +++++++++++-
> > > drivers/usb/host/xhci-plat.h | 8 +++
> > > drivers/usb/host/xhci.c | 80 ++++++++++++++++++++-
> > > drivers/usb/host/xhci.h | 46 ++++++++++++
> > > 6 files changed, 296 insertions(+), 18 deletions(-)
> >
> > Why do you need to "override" anything? Why can't these just be added
> > to the current xhci_plat_priv structure and used that way like the
> > current xhci platform interface works?
> >
>
> "override" means above xhci hooks? Above hooks are for ring management.
> In fact, xhci platform doesn't care ring management. That's why I've added hooks
> not used xhci_plat_priv.
Why not add ring management ability to the platform interface instead?
That's what you want to control here, in your platform driver, right?
> > > diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
> > > index 841617952ac7..e07c9c132061 100644
> > > --- a/drivers/usb/host/xhci-hub.c
> > > +++ b/drivers/usb/host/xhci-hub.c
> > > @@ -535,8 +535,13 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
> > > cmd->status == COMP_COMMAND_RING_STOPPED) {
> > > xhci_warn(xhci, "Timeout while waiting for stop endpoint command\n");
> > > ret = -ETIME;
> > > + goto cmd_cleanup;
> > > }
> > >
> > > + ret = xhci_vendor_sync_dev_ctx(xhci, slot_id);
> > > + if (ret)
> > > + xhci_warn(xhci, "Sync device context failed, ret=%d\n", ret);
> >
> > Shouldn't the function have spit out an error if there was a problem?
>
> It just reads and sync information about device context. That's why I think
> it's not critical to go error routime. But it needs to discuss.
Ok, it looks like this follows the other ways this driver works, that's
fine.
> > And no documentiaon for these global function?
> >
>
> I thought there's no need to add documentation. They are just functions to call
> vendor ops and there's documentation of vendor ops above. I could add it if needed.
Always try to add documentation for when you want others to use the new
functions, as it helps explain how to use them.
thanks,
greg k-h
next prev parent reply other threads:[~2022-04-27 9:20 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220426092019epcas2p2ef5dfde273edaaadc2ff74414f1b2c7a@epcas2p2.samsung.com>
2022-04-26 9:18 ` [PATCH v4 0/5] add xhci-exynos driver Daehwan Jung
2022-04-26 9:18 ` [PATCH v4 1/5] usb: host: export symbols for xhci-exynos to use xhci hooks Daehwan Jung
2022-04-26 9:54 ` Greg Kroah-Hartman
2022-04-26 10:27 ` Jung Daehwan
2022-04-26 10:31 ` Greg Kroah-Hartman
2022-04-26 18:40 ` Greg Kroah-Hartman
2022-04-28 3:30 ` Jung Daehwan
2022-04-26 16:02 ` kernel test robot
2022-04-26 9:18 ` [PATCH v4 2/5] usb: host: add xhci hooks for xhci-exynos Daehwan Jung
2022-04-26 10:19 ` Greg Kroah-Hartman
2022-04-27 9:06 ` Jung Daehwan
2022-04-27 9:19 ` Greg Kroah-Hartman [this message]
2022-04-28 3:23 ` Jung Daehwan
2022-04-28 5:30 ` Greg Kroah-Hartman
2022-04-26 9:18 ` [PATCH v4 3/5] usb: host: xhci-plat: support override of hc driver Daehwan Jung
2022-04-26 10:20 ` Greg Kroah-Hartman
2022-04-27 9:07 ` Jung Daehwan
2022-04-26 9:18 ` [PATCH v4 4/5] usb: host: add some to xhci overrides for xhci-exynos Daehwan Jung
2022-04-26 10:23 ` Greg Kroah-Hartman
2022-04-27 9:19 ` Jung Daehwan
2022-04-27 9:37 ` Greg Kroah-Hartman
2022-04-26 9:18 ` [PATCH v4 5/5] usb: host: add xhci-exynos driver Daehwan Jung
2022-04-26 10:20 ` Greg Kroah-Hartman
2022-04-28 3:26 ` Jung Daehwan
2022-04-26 10:21 ` Greg Kroah-Hartman
2022-04-27 9:24 ` Jung Daehwan
2022-04-27 9:37 ` Greg Kroah-Hartman
2022-04-26 12:59 ` Krzysztof Kozlowski
2022-04-28 1:29 ` Jung Daehwan
2022-04-28 5:19 ` Krzysztof Kozlowski
2022-04-28 6:36 ` Jung Daehwan
2022-04-28 6:45 ` Greg Kroah-Hartman
2022-04-28 7:45 ` Jung Daehwan
2022-04-28 7:31 ` Krzysztof Kozlowski
2022-04-28 7:53 ` Jung Daehwan
2022-04-28 8:26 ` Krzysztof Kozlowski
2022-04-26 17:55 ` kernel test robot
2022-04-27 16:25 ` Mathias Nyman
2022-04-28 3:03 ` Jung Daehwan
2022-04-28 12:28 ` Mathias Nyman
2022-05-03 8:41 ` Jung Daehwan
2022-04-28 5:15 ` Jung Daehwan
2022-04-26 10:19 ` [PATCH v4 0/5] " Greg Kroah-Hartman
2022-04-26 12:46 ` Krzysztof Kozlowski
2022-04-27 9:49 ` Jung Daehwan
2022-04-27 18:24 ` Krzysztof Kozlowski
2022-04-28 3:19 ` Jung Daehwan
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=YmkKnQEhJzk84fHj@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=dh10.jung@samsung.com \
--cc=elavila@google.com \
--cc=howardyen@google.com \
--cc=jackp@codeaurora.org \
--cc=krzysztof.kozlowski@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=pumahsu@google.com \
--cc=sc.suh@samsung.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.