linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
@ 2019-11-02 17:26 Peter Robinson
  2019-11-02 17:43 ` Thierry Reding
  2019-11-04 14:56 ` Greg Kroah-Hartman
  0 siblings, 2 replies; 7+ messages in thread
From: Peter Robinson @ 2019-11-02 17:26 UTC (permalink / raw)
  To: Mathias Nyman, Greg Kroah-Hartman, Thierry Reding,
	Jonathan Hunter, linux-usb, linux-tegra
  Cc: Peter Robinson

Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
ensures the firmware is available at the appropriate time such as in
the initrd, else if the firmware is unavailable the driver fails with
the following errors:

tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
tegra-xusb 3530000.usb: failed to request firmware: -2
tegra-xusb 3530000.usb: failed to load firmware: -2
tegra-xusb: probe of 3530000.usb failed with error -2

Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
 drivers/usb/host/xhci-tegra.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
index 2ff7c911fbd0..d25aba8fa219 100644
--- a/drivers/usb/host/xhci-tegra.c
+++ b/drivers/usb/host/xhci-tegra.c
@@ -1433,6 +1433,7 @@ static const struct tegra_xusb_soc tegra186_soc = {
 	.scale_ss_clock = false,
 	.has_ipfs = false,
 };
+MODULE_FIRMWARE("nvidia/tegra186/xusb.bin");
 
 static const struct of_device_id tegra_xusb_of_match[] = {
 	{ .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-02 17:26 [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186 Peter Robinson
@ 2019-11-02 17:43 ` Thierry Reding
  2019-11-02 18:39   ` Peter Robinson
  2019-11-04 14:56 ` Greg Kroah-Hartman
  1 sibling, 1 reply; 7+ messages in thread
From: Thierry Reding @ 2019-11-02 17:43 UTC (permalink / raw)
  To: Peter Robinson
  Cc: Mathias Nyman, Greg Kroah-Hartman, Jonathan Hunter, linux-usb,
	linux-tegra

[-- Attachment #1: Type: text/plain, Size: 1951 bytes --]

On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> ensures the firmware is available at the appropriate time such as in
> the initrd, else if the firmware is unavailable the driver fails with
> the following errors:

So the MODULE_FIRMWARE macro alone does not ensure that the firmware is
in the correct location, right? Rather, it's the tools that construct
the initial ramdisk that make use of the information added by the
MODULE_FIRMWARE macro to determine whether or not the firmware needs to
be included in the initial ramdisk or not.

> tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> tegra-xusb 3530000.usb: failed to request firmware: -2
> tegra-xusb 3530000.usb: failed to load firmware: -2
> tegra-xusb: probe of 3530000.usb failed with error -2
> 
> Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
> Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
> ---
>  drivers/usb/host/xhci-tegra.c | 1 +
>  1 file changed, 1 insertion(+)

The commit message is slightly misleading, but I guess it's ultimately
correct if you run standard tools to generate the initial ramdisk, so:

Acked-by: Thierry Reding <treding@nvidia.com>

> diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
> index 2ff7c911fbd0..d25aba8fa219 100644
> --- a/drivers/usb/host/xhci-tegra.c
> +++ b/drivers/usb/host/xhci-tegra.c
> @@ -1433,6 +1433,7 @@ static const struct tegra_xusb_soc tegra186_soc = {
>  	.scale_ss_clock = false,
>  	.has_ipfs = false,
>  };
> +MODULE_FIRMWARE("nvidia/tegra186/xusb.bin");
>  
>  static const struct of_device_id tegra_xusb_of_match[] = {
>  	{ .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
> -- 
> 2.23.0
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-02 17:43 ` Thierry Reding
@ 2019-11-02 18:39   ` Peter Robinson
  2019-11-04  9:06     ` Thierry Reding
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Robinson @ 2019-11-02 18:39 UTC (permalink / raw)
  To: Thierry Reding
  Cc: Mathias Nyman, Greg Kroah-Hartman, Jonathan Hunter, linux-usb,
	linux-tegra

On Sat, Nov 2, 2019 at 5:43 PM Thierry Reding <thierry.reding@gmail.com> wrote:
>
> On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> > Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> > ensures the firmware is available at the appropriate time such as in
> > the initrd, else if the firmware is unavailable the driver fails with
> > the following errors:
>
> So the MODULE_FIRMWARE macro alone does not ensure that the firmware is
> in the correct location, right? Rather, it's the tools that construct
> the initial ramdisk that make use of the information added by the
> MODULE_FIRMWARE macro to determine whether or not the firmware needs to
> be included in the initial ramdisk or not.

It works for tegra124 and tegra210, the patches for tegra194 have it
as well, I have no idea why it was left out for the tegra186. On
Fedora the 124/210 firmwares get pulled into the initrd when the
xhci_tegra and deps do but the 186 doesn't, if you "rmmod xhci_tegra;
modprobe xhci_tegra" once booted it works fine.

> > tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> > tegra-xusb 3530000.usb: failed to request firmware: -2
> > tegra-xusb 3530000.usb: failed to load firmware: -2
> > tegra-xusb: probe of 3530000.usb failed with error -2
> >
> > Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> > Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
> > Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
> > ---
> >  drivers/usb/host/xhci-tegra.c | 1 +
> >  1 file changed, 1 insertion(+)
>
> The commit message is slightly misleading, but I guess it's ultimately
> correct if you run standard tools to generate the initial ramdisk, so:
>
> Acked-by: Thierry Reding <treding@nvidia.com>
>
> > diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
> > index 2ff7c911fbd0..d25aba8fa219 100644
> > --- a/drivers/usb/host/xhci-tegra.c
> > +++ b/drivers/usb/host/xhci-tegra.c
> > @@ -1433,6 +1433,7 @@ static const struct tegra_xusb_soc tegra186_soc = {
> >       .scale_ss_clock = false,
> >       .has_ipfs = false,
> >  };
> > +MODULE_FIRMWARE("nvidia/tegra186/xusb.bin");
> >
> >  static const struct of_device_id tegra_xusb_of_match[] = {
> >       { .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
> > --
> > 2.23.0
> >

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-02 18:39   ` Peter Robinson
@ 2019-11-04  9:06     ` Thierry Reding
  0 siblings, 0 replies; 7+ messages in thread
From: Thierry Reding @ 2019-11-04  9:06 UTC (permalink / raw)
  To: Peter Robinson
  Cc: Mathias Nyman, Greg Kroah-Hartman, Jonathan Hunter, linux-usb,
	linux-tegra

[-- Attachment #1: Type: text/plain, Size: 3196 bytes --]

On Sat, Nov 02, 2019 at 06:39:45PM +0000, Peter Robinson wrote:
> On Sat, Nov 2, 2019 at 5:43 PM Thierry Reding <thierry.reding@gmail.com> wrote:
> >
> > On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> > > Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> > > ensures the firmware is available at the appropriate time such as in
> > > the initrd, else if the firmware is unavailable the driver fails with
> > > the following errors:
> >
> > So the MODULE_FIRMWARE macro alone does not ensure that the firmware is
> > in the correct location, right? Rather, it's the tools that construct
> > the initial ramdisk that make use of the information added by the
> > MODULE_FIRMWARE macro to determine whether or not the firmware needs to
> > be included in the initial ramdisk or not.
> 
> It works for tegra124 and tegra210, the patches for tegra194 have it
> as well, I have no idea why it was left out for the tegra186. On
> Fedora the 124/210 firmwares get pulled into the initrd when the
> xhci_tegra and deps do but the 186 doesn't, if you "rmmod xhci_tegra;
> modprobe xhci_tegra" once booted it works fine.

Sorry if I wasn't being clear. I'm not debating the correctness of the
patch, it obviously was just left out and probably not noticed because
nobody that tested this either wasn't building this into the kernel or
manually added the firmware to the initial ramdisk.

I was just trying to point out that merely adding MODULE_FIRMWARE does
not cause the firmware to be installed in the initial ramdisk. You still
need some tool looking at the information added by MODULE_FIRMWARE and
then copying the corresponding image to the initial ramdisk at its
creation.

Thierry

> > > tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> > > tegra-xusb 3530000.usb: failed to request firmware: -2
> > > tegra-xusb 3530000.usb: failed to load firmware: -2
> > > tegra-xusb: probe of 3530000.usb failed with error -2
> > >
> > > Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> > > Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
> > > Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
> > > ---
> > >  drivers/usb/host/xhci-tegra.c | 1 +
> > >  1 file changed, 1 insertion(+)
> >
> > The commit message is slightly misleading, but I guess it's ultimately
> > correct if you run standard tools to generate the initial ramdisk, so:
> >
> > Acked-by: Thierry Reding <treding@nvidia.com>
> >
> > > diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
> > > index 2ff7c911fbd0..d25aba8fa219 100644
> > > --- a/drivers/usb/host/xhci-tegra.c
> > > +++ b/drivers/usb/host/xhci-tegra.c
> > > @@ -1433,6 +1433,7 @@ static const struct tegra_xusb_soc tegra186_soc = {
> > >       .scale_ss_clock = false,
> > >       .has_ipfs = false,
> > >  };
> > > +MODULE_FIRMWARE("nvidia/tegra186/xusb.bin");
> > >
> > >  static const struct of_device_id tegra_xusb_of_match[] = {
> > >       { .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
> > > --
> > > 2.23.0
> > >

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-02 17:26 [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186 Peter Robinson
  2019-11-02 17:43 ` Thierry Reding
@ 2019-11-04 14:56 ` Greg Kroah-Hartman
  2019-11-04 15:07   ` Peter Robinson
  1 sibling, 1 reply; 7+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-04 14:56 UTC (permalink / raw)
  To: Peter Robinson
  Cc: Mathias Nyman, Thierry Reding, Jonathan Hunter, linux-usb, linux-tegra

On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> ensures the firmware is available at the appropriate time such as in
> the initrd, else if the firmware is unavailable the driver fails with
> the following errors:
> 
> tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> tegra-xusb 3530000.usb: failed to request firmware: -2
> tegra-xusb 3530000.usb: failed to load firmware: -2
> tegra-xusb: probe of 3530000.usb failed with error -2
> 
> Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")

There is no such git id in Linus's tree :(

This also doesn't apply cleanly to the usb tree, so I don't know where
you want it to go, sorry.

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-04 14:56 ` Greg Kroah-Hartman
@ 2019-11-04 15:07   ` Peter Robinson
  2019-11-04 15:21     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Robinson @ 2019-11-04 15:07 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Mathias Nyman, Thierry Reding, Jonathan Hunter, linux-usb, linux-tegra

On Mon, Nov 4, 2019 at 2:57 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> > Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> > ensures the firmware is available at the appropriate time such as in
> > the initrd, else if the firmware is unavailable the driver fails with
> > the following errors:
> >
> > tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> > tegra-xusb 3530000.usb: failed to request firmware: -2
> > tegra-xusb 3530000.usb: failed to load firmware: -2
> > tegra-xusb: probe of 3530000.usb failed with error -2
> >
> > Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> > Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
>
> There is no such git id in Linus's tree :(

Tha'ts in the tegra tree for 5.5.

> This also doesn't apply cleanly to the usb tree, so I don't know where
> you want it to go, sorry.

Where is that? I can rebase against it, I'm guessing the tegra194 bits landed.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186
  2019-11-04 15:07   ` Peter Robinson
@ 2019-11-04 15:21     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-04 15:21 UTC (permalink / raw)
  To: Peter Robinson
  Cc: Mathias Nyman, Thierry Reding, Jonathan Hunter, linux-usb, linux-tegra

On Mon, Nov 04, 2019 at 03:07:48PM +0000, Peter Robinson wrote:
> On Mon, Nov 4, 2019 at 2:57 PM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Sat, Nov 02, 2019 at 05:26:06PM +0000, Peter Robinson wrote:
> > > Set the MODULE_FIRMWARE for tegra186, it's registered for 124/210 and
> > > ensures the firmware is available at the appropriate time such as in
> > > the initrd, else if the firmware is unavailable the driver fails with
> > > the following errors:
> > >
> > > tegra-xusb 3530000.usb: Direct firmware load for nvidia/tegra186/xusb.bin failed with error -2
> > > tegra-xusb 3530000.usb: failed to request firmware: -2
> > > tegra-xusb 3530000.usb: failed to load firmware: -2
> > > tegra-xusb: probe of 3530000.usb failed with error -2
> > >
> > > Fixes: 5f9be5f3f899 ("usb: host: xhci-tegra: Add Tegra186 XUSB support")
> > > Fixes: 488a04d4bb2f ("arm64: tegra: Enable XUSB host controller on Jetson TX2")
> >
> > There is no such git id in Linus's tree :(
> 
> Tha'ts in the tegra tree for 5.5.
> 
> > This also doesn't apply cleanly to the usb tree, so I don't know where
> > you want it to go, sorry.
> 
> Where is that? I can rebase against it, I'm guessing the tegra194 bits landed.

usb.git on git.kernel.org.

And yes, it did.  But when I applied the above patch, my checks for
valid fixes: ids failed so I can't take this as-is.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-11-04 15:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-02 17:26 [PATCH] usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186 Peter Robinson
2019-11-02 17:43 ` Thierry Reding
2019-11-02 18:39   ` Peter Robinson
2019-11-04  9:06     ` Thierry Reding
2019-11-04 14:56 ` Greg Kroah-Hartman
2019-11-04 15:07   ` Peter Robinson
2019-11-04 15:21     ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).