Comments (9)
Can you check #47
from firmware.
I can't find the reference to the issue related to this, but in the Linux driver I send a message with just the MSB set to get the current state (which happens to turn everything off). There's also a hack in the latest kernel to send 0x0 on startup to do the same thing.
from firmware.
popcornmix, #47 looks very interesting, but I'd argue that this particular issue could be considered a bug in the existing power mailbox channel, rather than needing a new mailbox API.
lp0, yes, I did wonder about doing something like that to work around the issue, but unless it's documented as a legitimate usage of the mailbox API, I'm slightly hesitant to do that, since I have no idea what setting that MSB might mean to the VC. If BCM says it'll be fine though, it seems a reasonable enough workaround.
from firmware.
The API is working as designed, and changing this would break firmware/kernel compatibilty.
I'll make sure the desired API is supported in #47.
Sending bit 30 (not MSB) set is supported and will return current state.
from firmware.
I don't believe that fixing this would actually cause any compatibility issues.
All current drivers take explicit action to avoid sending a message requesting the same state as the current state, so that they don't hang up waiting for a response that won't come. As such, the scenario whose behavior would change isn't happening, so the change in behaviour wouldn't be noticed.
But that said, it setting bit 30 is a supported workaround to guarantee a response, that's fine too.
from firmware.
If the existing driver sent a device off message followed by a device on message, it could immediately read the response to the device off message by mistake.
from firmware.
I can't really see any problem here.
- Old FW, old kernel: No change.
- New FW, old kernel: FW supports new usage, but the kernel doesn't change so only sends commands and waits for responses it would have got anyway (i.e. as described above, avoids the problematic cases that'd change in the new FW, or it couldn't work with the old FW), so no change.
- New FW, new kernel: Works as expected.
- Old FW, new kernel: Admittedly doesn't work. But, if it's mandatory to support all new kernels on old FW, then we can't implement any new FW feature (e.g. issue #47) since any new kernel that uses the new FW feature would not work on an old FW.
from firmware.
Old kernel, new FW:
- Send power off
- Recv status (ignored, but stored by the driver)
- Send power on
- Read old status (as it was stored already)
- Recv new status
The mbox code in my branch will clear unread messages but there could still be an issue if you turn the power on for a device immediately after turning it off.
from firmware.
That seems like a bug; any time a message is sent, the driver should wait for the response. Otherwise even in normal operation irrespective of any FW change, you're going to get out-of-sync.
from firmware.
Related Issues (20)
- unable to find the correct System.map in agree with published kernel HOT 1
- disable genet receiver when disabling dma in firmware instead of linux genet reset
- can VCHI frame timestamp values be made opaque? (not usec) HOT 14
- Sound distorted of audioinjector-octo soc:soundcard since kernel version 6 HOT 1
- bcm2835-codec: Wrong colors on encoding BGR24 to H.264 HOT 7
- Feature request: Verbose output from `start*.elf` HOT 4
- RPi3b+ GPU ROM issue, which makes ANY OS in Extended partition unbootable HOT 3
- Raspberry pi 0W v1.1 randomly crashes after a few minutes HOT 6
- Possible to turn on LED on camera module v1.3 using code rather then GPIO HOT 4
- Raspberry Pi 5 not booting at all HOT 1
- Raspberry Pi 5 crashes if I plug the HDMI cable from the monitor HOT 1
- Boot firmware modifies/writes to FAT filesystem on SD card, breaking dm-integrity HOT 6
- Unexpected behavior of mailbox property "set power/domain state" HOT 12
- 'error -84 whilst initialising SD Card' when attempting to use SDHCI controller on microSD card slot on Raspberry Pi 4B HOT 2
- Raspberry Pi 5 (8GB) Cannot startup: kernel or device tree not found HOT 7
- Raspberry5 mailformed TFTP ACK packets HOT 1
- MAC_ADDRESS_OTP behavior HOT 1
- fatal firmware crash on attempt to play video on chromium-browser which leads to complete system freeze after some time HOT 5
- UE200 USB to Ethernet Adapter not initializing in boot HOT 7
- Raspberry Pi 5 firmware ignores and responds with incorrect frame buffer pixel depth information HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from firmware.