Message ID | 20241015212915.1206789-2-quic_wcheng@quicinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Introduce QC USB SND audio offloading support | expand |
On Tue, Oct 15, 2024 at 02:28:43PM -0700, Wesley Cheng wrote: > From: Mathias Nyman <mathias.nyman@linux.intel.com> > > Allow creators of xHCI secondary interrupters to specify the interrupt > moderation interval value in nanoseconds when creating the interrupter. > > If not sure what value to use then use the xhci driver default > xhci->imod_interval > > Suggested-by: Wesley Cheng <quic_wcheng@quicinc.com> > Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> > Link: https://lore.kernel.org/r/20240905143300.1959279-13-mathias.nyman@linux.intel.com > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > drivers/usb/host/xhci-mem.c | 8 +++++++- > drivers/usb/host/xhci.c | 4 ++-- > drivers/usb/host/xhci.h | 5 ++++- > 3 files changed, 13 insertions(+), 4 deletions(-) This is already in 6.12-rc1, which makes me confused as to what tree you made this series against. thanks, greg k-h
Hi Greg, On 10/16/2024 11:40 PM, Greg KH wrote: > On Tue, Oct 15, 2024 at 02:28:43PM -0700, Wesley Cheng wrote: >> From: Mathias Nyman <mathias.nyman@linux.intel.com> >> >> Allow creators of xHCI secondary interrupters to specify the interrupt >> moderation interval value in nanoseconds when creating the interrupter. >> >> If not sure what value to use then use the xhci driver default >> xhci->imod_interval >> >> Suggested-by: Wesley Cheng <quic_wcheng@quicinc.com> >> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> >> Link: https://lore.kernel.org/r/20240905143300.1959279-13-mathias.nyman@linux.intel.com >> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> --- >> drivers/usb/host/xhci-mem.c | 8 +++++++- >> drivers/usb/host/xhci.c | 4 ++-- >> drivers/usb/host/xhci.h | 5 ++++- >> 3 files changed, 13 insertions(+), 4 deletions(-) > This is already in 6.12-rc1, which makes me confused as to what tree you > made this series against. Sorry, I didn't fetch the latest changes from usb-next. In this case, should I rebase and resbumit? Thanks Wesley Cheng > thanks, > > greg k-h
On Thu, Oct 17, 2024 at 05:07:12PM -0700, Wesley Cheng wrote: > Hi Greg, > > On 10/16/2024 11:40 PM, Greg KH wrote: > > On Tue, Oct 15, 2024 at 02:28:43PM -0700, Wesley Cheng wrote: > >> From: Mathias Nyman <mathias.nyman@linux.intel.com> > >> > >> Allow creators of xHCI secondary interrupters to specify the interrupt > >> moderation interval value in nanoseconds when creating the interrupter. > >> > >> If not sure what value to use then use the xhci driver default > >> xhci->imod_interval > >> > >> Suggested-by: Wesley Cheng <quic_wcheng@quicinc.com> > >> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> > >> Link: https://lore.kernel.org/r/20240905143300.1959279-13-mathias.nyman@linux.intel.com > >> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >> --- > >> drivers/usb/host/xhci-mem.c | 8 +++++++- > >> drivers/usb/host/xhci.c | 4 ++-- > >> drivers/usb/host/xhci.h | 5 ++++- > >> 3 files changed, 13 insertions(+), 4 deletions(-) > > This is already in 6.12-rc1, which makes me confused as to what tree you > > made this series against. > > Sorry, I didn't fetch the latest changes from usb-next. It wasn't even usb-next, it was 6.12-rc1, so I don't know what tree you based this on :( > In this case, should I rebase and resbumit? As the series can't be applied as-is, probably. But I think you might want to collect some acks from the sound people and xhci developers, as I can't do anything with this until they look at the changes. thanks, greg k-h
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 3100219d6496..a25576f27e66 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -2334,7 +2334,8 @@ xhci_add_interrupter(struct xhci_hcd *xhci, struct xhci_interrupter *ir, } struct xhci_interrupter * -xhci_create_secondary_interrupter(struct usb_hcd *hcd, unsigned int segs) +xhci_create_secondary_interrupter(struct usb_hcd *hcd, unsigned int segs, + u32 imod_interval) { struct xhci_hcd *xhci = hcd_to_xhci(hcd); struct xhci_interrupter *ir; @@ -2367,6 +2368,11 @@ xhci_create_secondary_interrupter(struct usb_hcd *hcd, unsigned int segs) return NULL; } + err = xhci_set_interrupter_moderation(ir, imod_interval); + if (err) + xhci_warn(xhci, "Failed to set interrupter %d moderation to %uns\n", + i, imod_interval); + xhci_dbg(xhci, "Add secondary interrupter %d, max interrupters %d\n", i, xhci->max_interrupters); diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 37eb37b0affa..ed1bb7ed44b0 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -347,8 +347,8 @@ static int xhci_disable_interrupter(struct xhci_interrupter *ir) } /* interrupt moderation interval imod_interval in nanoseconds */ -static int xhci_set_interrupter_moderation(struct xhci_interrupter *ir, - u32 imod_interval) +int xhci_set_interrupter_moderation(struct xhci_interrupter *ir, + u32 imod_interval) { u32 imod; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 30415158ed3c..324644165d93 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1827,7 +1827,8 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci, void xhci_free_container_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx); struct xhci_interrupter * -xhci_create_secondary_interrupter(struct usb_hcd *hcd, unsigned int segs); +xhci_create_secondary_interrupter(struct usb_hcd *hcd, unsigned int segs, + u32 imod_interval); void xhci_remove_secondary_interrupter(struct usb_hcd *hcd, struct xhci_interrupter *ir); @@ -1867,6 +1868,8 @@ int xhci_alloc_tt_info(struct xhci_hcd *xhci, struct xhci_virt_device *virt_dev, struct usb_device *hdev, struct usb_tt *tt, gfp_t mem_flags); +int xhci_set_interrupter_moderation(struct xhci_interrupter *ir, + u32 imod_interval); /* xHCI ring, segment, TRB, and TD functions */ dma_addr_t xhci_trb_virt_to_dma(struct xhci_segment *seg, union xhci_trb *trb);