jgarff / rpi_ws281x

Userspace Raspberry Pi PWM library for WS281X LEDs
BSD 2-Clause "Simplified" License
1.78k stars 622 forks source link

Need to mask warranty bit when checking board revision for 64 bit as well #502

Open akumpf opened 2 years ago

akumpf commented 2 years ago

I upgraded the firmware on a Pi Zero 2 running 64-bit Bullseye, and somehow the "warranty voided" bit got flipped on. Not a big deal, except then my LED code broke because it couldn't find that board revision anymore when using this library.

For 64 bit, I believe the warranty bit is not being masked (via /proc/device-tree/system/linux,revision). Here'e the relevant 2 lines of code that handle that in the 32 bit check. https://github.com/jgarff/rpi_ws281x/blob/1ba8e385708fb7802b09c0177a7ea4293948e25c/rpihw.c#L576

And could be added here: https://github.com/jgarff/rpi_ws281x/blob/1ba8e385708fb7802b09c0177a7ea4293948e25c/rpihw.c#L536

Could this also be added to the 64 bit revision check as well? Thanks!

Gadgetoid commented 1 year ago

It's broadly my preference to just do away with this cursed hardware revision check nonsense once and for all.

I unfortunately don't have a lot of time to get lost in tweaking & testing the code- if you could figure out where this mask needs to be against your flipped board and raise a PR that would be very helpful.