Skip to content

HDMI audio inop in rpi-5.10.y (et al)... plus patch that resolved it for me #4635

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
yetanotheraccount opened this issue Oct 17, 2021 · 18 comments

Comments

@yetanotheraccount
Copy link

firmware-Fix-merge-artifact-that-lost-one-hunk-of-e4a6adeb157e.txt

@popcornmix
Copy link
Collaborator

@pelwell

pelwell added a commit that referenced this issue Oct 18, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
@pelwell
Copy link
Contributor

pelwell commented Oct 18, 2021

The patch targets the problem, but it's a step back to the old way of doing things when we should be embracing the new. 214bf6b is the proper fix, and is now in rpi-5.10.y (with cherry-picks to rpi-5.14.y and rpi-5.15.y underway).

@popcornmix
Copy link
Collaborator

rpi-update kernel now includes this fix.

pelwell added a commit that referenced this issue Oct 18, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
pelwell added a commit that referenced this issue Oct 18, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
@yetanotheraccount
Copy link
Author

Saw those commits when I pulled a few minutes ago and thought they looked suspiciously like a proper fix. Thanks.

@yetanotheraccount
Copy link
Author

Well bugger, I just booted v5.15-rc5-564-g5f932e9e05e5 sans lost hunk patchlet, and have no HDMI audio. Push lost hunk patchlet and rebuild, and it's back. So proper fix ain't quite complete it seems.

@pelwell
Copy link
Contributor

pelwell commented Oct 18, 2021

It works for me. Are you sure you bumped the .dtbs as well? It would be easy to forget.

@yetanotheraccount
Copy link
Author

Hm, given I have not the foggiest clue what "bump the .dtbs" means, that's probably why it didn't work for me :) What I've been doing is sudo make modules_install dtbs_install install.

@pelwell
Copy link
Contributor

pelwell commented Oct 18, 2021

"make dtbs_install" should do the job, but you can confirm whether an updated dtb is running with:

pi@raspberrypi:~ $ od --endian=big -tu4 /proc/device-tree/soc/firmware/phandle
pi@raspberrypi:~ $ od --endian=big -tu4 /proc/device-tree/soc/mailbox@7e00b840/bcm2835_audio/brcm\,firmware

both of which should return the same answer (the phandle of the firmware node, which in my case was 6 but the precise value is unimportant).

@yetanotheraccount
Copy link
Author

Hm. I repeated the whack patchlet, rebuild and reinstall dance yet again. and... presto, HDMI audio is now there, and the two od incantations do say the same (0000000 and 0000004). That's kinda weird, but I'll take :) We're done I suppose, thanks again.

popcornmix pushed a commit that referenced this issue Oct 19, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Oct 19, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Oct 22, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Oct 27, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
limeng-linux pushed a commit to limeng-linux/linux-yocto-develop that referenced this issue Oct 29, 2021
commit  4332c30c7cbb2e4ff90af83d2d5e6d2950617ba2 from
https://github.com/raspberrypi/linux.git rpi-5.15.y

The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi/linux#4634
     raspberrypi/linux#4635

Signed-off-by: Phil Elwell <[email protected]>
Signed-off-by: Meng Li <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 1, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 8, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 8, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 15, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 15, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 22, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 22, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 25, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Nov 29, 2021
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
@pelwell
Copy link
Contributor

pelwell commented Jan 6, 2022

It looks OK to me - the fixing patch added on 18 Oct is still present.

  1. Where and how do you get your dtbs?
  2. What is the git hash or release tag for your current release?
  3. Which platform are you testing on?
  4. What is the md5sum for the base .dtb, e.g.: md5sum /boot/bcm2711-rpi-4-b.dtb?

@yetanotheraccount
Copy link
Author

  1. Where and how do you get your dtbs?
    make modules_install dtbs_install install

  2. What is the git hash or release tag for your current release?
    Current release?
    hash of 5.16.y branch is currently at v5.16-rc8-619-gb2818e05874d
    (or b2818e0)

  3. Which platform are you testing on?
    rpi4b

  4. What is the md5sum for the base .dtb, e.g.: md5sum /boot/bcm2711-rpi-4-b.dtb?
    pi@rpi4:~ $ md5sum /boot/bcm2711-rpi-4-b.dtb
    2f29c47b7a9cf7979bca2f9a2d4aa5a1 /boot/bcm2711-rpi-4-b.dtb

@yetanotheraccount
Copy link
Author

Ok, seems /boot/bcm2711-rpi-4-b.dtb is the problem. make modules_install dtbs_install install does not install arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb. Making a backup copy of /boot/bcm2711-rpi-4-b.dtb then replacing it with the one from the built source fixes the problem. However, that also broke the distribution kernel, but...

Hohum, this is looking rather a lot like an "x86 guy has a sh*tload to learn about cute little arm64 gizmos" thing to me :)

@pelwell
Copy link
Contributor

pelwell commented Jan 6, 2022

You may find it has installed /boot/broadcom/bcm2711-rpi-4-b.dtb instead.

The 64-bit DTBs are the same as the 32-bit ones, to the extent that you may find it easier to build and install them from a 32-bit configuration - there will just be the bcm2* dtbs, not those for the entire range of 64-bit ARM devices.

@pelwell
Copy link
Contributor

pelwell commented Jan 6, 2022

FYI the correct md5sums for a Pi 4 dtb in 32-bit and 64-bit builds of b2818e0 (and current rpi-5.16.y head d09973c) are:

1c9b38da0a3bece74abb36894b68cd29  arch/arm/boot/dts/bcm2711-rpi-4-b.dtb
1c9b38da0a3bece74abb36894b68cd29  arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb

@yetanotheraccount
Copy link
Author

FYI the correct md5sums for a Pi 4 dtb in 32-bit and 64-bit builds of b2818e0 (and current rpi-5.16.y head d09973c) are:

1c9b38da0a3bece74abb36894b68cd29  arch/arm/boot/dts/bcm2711-rpi-4-b.dtb
1c9b38da0a3bece74abb36894b68cd29  arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb

That hash is the one I manually installed, and both 5.10.y and 5.16.y HEAD work fine with it. It's too bad the distributed kernel (5.10.63) does NOT, but no big deal, looks like that should eventually self-correct.

@pelwell
Copy link
Contributor

pelwell commented Jan 6, 2022

/proc/device-tree/soc/mailbox@7e00b840/bcm2835_audio/brcm,firmware I was directed to above seems to no longer exist btw, not even in the working delivered 5.10.63-v8+ kernel.

Our 5.10.63 build dates from 8 Sep - over a month before the patch went in - and unfortunately our time machine is down for scheduled maintenance.

@yetanotheraccount
Copy link
Author

Our 5.10.63 build dates from 8 Sep - over a month before the patch went in - and unfortunately our time machine is down for scheduled maintenance.

:)

Ok, so looks like I can close this thing.. again.. any maybe even keep it that way.

popcornmix pushed a commit that referenced this issue Jan 11, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 11, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 17, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 24, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 25, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 28, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Jan 31, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Feb 7, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Feb 16, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Feb 18, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Feb 28, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Mar 4, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Mar 9, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
limeng-linux pushed a commit to limeng-linux/linux-yocto-5.15 that referenced this issue Mar 11, 2022
commit  526e02760deca2d46a90d7471804f1edf232e21a from
https://github.com/raspberrypi/linux.git rpi-5.15.y

The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi/linux#4634
     raspberrypi/linux#4635

Signed-off-by: Phil Elwell <[email protected]>
Signed-off-by: Meng Li <[email protected]>
limeng-linux pushed a commit to limeng-linux/linux-yocto-5.15 that referenced this issue Mar 11, 2022
commit  526e02760deca2d46a90d7471804f1edf232e21a from
https://github.com/raspberrypi/linux.git rpi-5.15.y

The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi/linux#4634
     raspberrypi/linux#4635

Signed-off-by: Phil Elwell <[email protected]>
Signed-off-by: Meng Li <[email protected]>
popcornmix pushed a commit that referenced this issue Mar 15, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Mar 21, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
popcornmix pushed a commit that referenced this issue Mar 21, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: #4634
     #4635

Signed-off-by: Phil Elwell <[email protected]>
Noltari pushed a commit to Noltari/rpi-linux that referenced this issue May 17, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi#4634
     raspberrypi#4635

Signed-off-by: Phil Elwell <[email protected]>
asheplyakov pushed a commit to asheplyakov/linux that referenced this issue May 24, 2022
The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi/linux#4634
     raspberrypi/linux#4635

Signed-off-by: Phil Elwell <[email protected]>
papamoose pushed a commit to papamoose/ubuntu-kernel-raspi-jammy that referenced this issue Sep 3, 2022
BugLink: https://bugs.launchpad.net/bugs/1958146

The firmware driver has been changed to count its clients. An earlier
commit removed the downstream patch permitting the hacky technique of
passing NULL to rpi_firmware_get to pick up the last instace, but
failed to add the necessary "firmware" property to the bcm2835_audio
node. Correct that omission.

See: raspberrypi/linux#4634
     raspberrypi/linux#4635

Signed-off-by: Phil Elwell <[email protected]>

(cherry picked from commit f46dcb9ec472aa0860213141cba7f0e57a267fe0 rpi-5.15.y)
Signed-off-by: Juerg Haefliger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants