diff mbox series

package/freescale-imx/firmware-imx: install the VPU firmware into a valid location

Message ID 20210113120822.327-1-festevam@gmail.com
State Superseded
Headers show
Series package/freescale-imx/firmware-imx: install the VPU firmware into a valid location | expand

Commit Message

Fabio Estevam Jan. 13, 2021, 12:08 p.m. UTC
The mainline kernel searches the coda VPU firmware inside the following
locations [1]:

/lib/firmware/
/lib/firmware/vpu/

Currently Buildroot installs the coda firmware into /lib/firmware/imx/vpu,
which is not a valid location.

Fix it to install the coda firmwares into /lib/firmware/vpu/ which
is a valid path for both mainline and NXP vendor kernels. 

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8af7779f3cbc1f6720d15f00abc797493710d1ab

Reported-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 package/freescale-imx/firmware-imx/firmware-imx.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Romain Naour Jan. 13, 2021, 1:20 p.m. UTC | #1
Hi Fabio,

Le 13/01/2021 à 13:08, Fabio Estevam a écrit :
> The mainline kernel searches the coda VPU firmware inside the following
> locations [1]:
> 
> /lib/firmware/
> /lib/firmware/vpu/
> 
> Currently Buildroot installs the coda firmware into /lib/firmware/imx/vpu,
> which is not a valid location.
> 
> Fix it to install the coda firmwares into /lib/firmware/vpu/ which
> is a valid path for both mainline and NXP vendor kernels. 

Ok but it add a 60sec delay when we use the mainline kernel.

Best regards,
Romain

> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8af7779f3cbc1f6720d15f00abc797493710d1ab
> 
> Reported-by: Romain Naour <romain.naour@gmail.com>
> Signed-off-by: Fabio Estevam <festevam@gmail.com>
> ---
>  package/freescale-imx/firmware-imx/firmware-imx.mk | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
> index 7d1f42f1d87b..f65614c9a79c 100644
> --- a/package/freescale-imx/firmware-imx/firmware-imx.mk
> +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
> @@ -116,9 +116,9 @@ endif
>  FIRMWARE_IMX_VPU_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME))
>  ifneq ($(FIRMWARE_IMX_VPU_FW_NAME),)
>  define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW
> -	mkdir -p $(TARGET_DIR)/lib/firmware/imx/vpu
> +	mkdir -p $(TARGET_DIR)/lib/firmware/vpu
>  	cp $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin \
> -		$(TARGET_DIR)/lib/firmware/imx/vpu/
> +		$(TARGET_DIR)/lib/firmware/vpu/
>  endef
>  endif
>  
>
Fabio Estevam Jan. 13, 2021, 1:29 p.m. UTC | #2
Hi Romain,

On Wed, Jan 13, 2021 at 10:20 AM Romain Naour <romain.naour@smile.fr> wrote:

> Ok but it add a 60sec delay when we use the mainline kernel.

Yes, not a pleasant experience.

What if we copy the VPU firmware to both locations?

/lib/firmware/
/lib/firmware/vpu/

This way mainline kernel will fetch the VPU firmware faster and NXP
vendor can also work.
Romain Naour Jan. 13, 2021, 7:11 p.m. UTC | #3
Hi Fabio,

Le 13/01/2021 à 14:29, Fabio Estevam a écrit :
> Hi Romain,
> 
> On Wed, Jan 13, 2021 at 10:20 AM Romain Naour <romain.naour@smile.fr> wrote:
> 
>> Ok but it add a 60sec delay when we use the mainline kernel.
> 
> Yes, not a pleasant experience.
> 
> What if we copy the VPU firmware to both locations?
> 
> /lib/firmware/
> /lib/firmware/vpu/
> 
> This way mainline kernel will fetch the VPU firmware faster and NXP
> vendor can also work.
> 

I don't see any difference between NXP vendor and mainline kernel.

See:
https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/media/platform/coda/coda-common.c?h=imx_5.4.70_2.3.0#n2889

Can you check if there is any local change applied to your kernel or a specific
configuration ?

Best regards,
Romain
Fabio Estevam Jan. 13, 2021, 7:21 p.m. UTC | #4
Hi Romain,

On Wed, Jan 13, 2021 at 4:11 PM Romain Naour <romain.naour@gmail.com> wrote:

> I don't see any difference between NXP vendor and mainline kernel.
>
> See:
> https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/media/platform/coda/coda-common.c?h=imx_5.4.70_2.3.0#n2889
>
> Can you check if there is any local change applied to your kernel or a specific
> configuration ?

The NXP kernel does not use the coda driver. It uses
drivers/mxc/vpu/mxc_vpu.c instead.

Regards,

Fabio Estevam
Romain Naour Jan. 13, 2021, 8:02 p.m. UTC | #5
Hi Fabio,

Le 13/01/2021 à 14:29, Fabio Estevam a écrit :
> Hi Romain,
> 
> On Wed, Jan 13, 2021 at 10:20 AM Romain Naour <romain.naour@smile.fr> wrote:
> 
>> Ok but it add a 60sec delay when we use the mainline kernel.
> 
> Yes, not a pleasant experience.
> 
> What if we copy the VPU firmware to both locations?
> 
> /lib/firmware/
> /lib/firmware/vpu/
> 
> This way mainline kernel will fetch the VPU firmware faster and NXP
> vendor can also work.
> 

What about a simlink ?

Best regards,
Romain
Fabio Estevam Jan. 13, 2021, 8:16 p.m. UTC | #6
On Wed, Jan 13, 2021 at 5:02 PM Romain Naour <romain.naour@gmail.com> wrote:

> What about a simlink ?

Yes, that would work.

Actually, I tried it here, but it ended up with a symlink to the host
PC Buildroot path.

If you could give me a suggestion on how to properly implement the
symlink in firmware-imx.mk, I would appreciate it.

Thanks
Romain Naour Jan. 13, 2021, 9:01 p.m. UTC | #7
Le 13/01/2021 à 21:16, Fabio Estevam a écrit :
> On Wed, Jan 13, 2021 at 5:02 PM Romain Naour <romain.naour@gmail.com> wrote:
> 
>> What about a simlink ?
> 
> Yes, that would work.
> 
> Actually, I tried it here, but it ended up with a symlink to the host
> PC Buildroot path.
> 
> If you could give me a suggestion on how to properly implement the
> symlink in firmware-imx.mk, I would appreciate it.

Something like this ?

define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW
	mkdir -p $(TARGET_DIR)/lib/firmware/vpu
	for i in $$(find $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin); do \
		cp $$i $(TARGET_DIR)/lib/firmware/vpu/ ; \
		ln -sf vpu/$$(basename $$i) $(TARGET_DIR)/lib/firmware/$$(basename $$i) ; \
	done
endef

Best regards,
Romain


> 
> Thanks
>
Fabio Estevam Jan. 13, 2021, 10:28 p.m. UTC | #8
On Wed, Jan 13, 2021 at 6:01 PM Romain Naour <romain.naour@gmail.com> wrote:

> Something like this ?
>
> define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW
>         mkdir -p $(TARGET_DIR)/lib/firmware/vpu
>         for i in $$(find $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin); do \
>                 cp $$i $(TARGET_DIR)/lib/firmware/vpu/ ; \
>                 ln -sf vpu/$$(basename $$i) $(TARGET_DIR)/lib/firmware/$$(basename $$i) ; \
>         done
> endef

This works for me. I will send a v2 with your suggestion.

Thanks!
diff mbox series

Patch

diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
index 7d1f42f1d87b..f65614c9a79c 100644
--- a/package/freescale-imx/firmware-imx/firmware-imx.mk
+++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
@@ -116,9 +116,9 @@  endif
 FIRMWARE_IMX_VPU_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME))
 ifneq ($(FIRMWARE_IMX_VPU_FW_NAME),)
 define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW
-	mkdir -p $(TARGET_DIR)/lib/firmware/imx/vpu
+	mkdir -p $(TARGET_DIR)/lib/firmware/vpu
 	cp $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin \
-		$(TARGET_DIR)/lib/firmware/imx/vpu/
+		$(TARGET_DIR)/lib/firmware/vpu/
 endef
 endif