diff mbox series

usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186

Message ID 20191102172606.26934-1-pbrobinson@gmail.com
State Changes Requested
Headers show
Series usb: host: xhci-tegra: set MODULE_FIRMWARE for tegra186 | expand

Commit Message

Peter Robinson Nov. 2, 2019, 5:26 p.m. UTC
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(+)

Comments

Thierry Reding Nov. 2, 2019, 5:43 p.m. UTC | #1
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
>
Peter Robinson Nov. 2, 2019, 6:39 p.m. UTC | #2
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
> >
Thierry Reding Nov. 4, 2019, 9:06 a.m. UTC | #3
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
> > >
Greg Kroah-Hartman Nov. 4, 2019, 2:56 p.m. UTC | #4
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
Peter Robinson Nov. 4, 2019, 3:07 p.m. UTC | #5
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.
Greg Kroah-Hartman Nov. 4, 2019, 3:21 p.m. UTC | #6
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
diff mbox series

Patch

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 },