|
FreeNOS
|
Broadcom System-on-Chip Mailbox interface. More...
#include <BroadcomMailbox.h>
Public Types | |
| enum | Result { Success , IOError } |
| Result codes. More... | |
| enum | Channel { PowerManagement = 0 , FrameBuffer = 1 , VirtualUART = 2 , VCHIQ = 3 , LED = 4 , Button = 5 , TouchScreen = 6 , VCProperty = 8 , ARMProperty = 9 } |
| Mailbox channels. More... | |
Public Member Functions | |
| BroadcomMailbox () | |
| Constructor. | |
| Result | initialize () |
| Initialize the Mailbox. | |
| Result | read (Channel channel, u32 *message) const |
| Read 28-bit message. | |
| Result | write (Channel channel, u32 message) |
| Write 28-bit message. | |
Private Types | |
| enum | Register { Read = 0x0880 , Status = 0x0898 , Config = 0x089c , Write = 0x08a0 } |
| Hardware registers. More... | |
| enum | StatusFlags { Full = 0x80000000 , Empty = 0x40000000 } |
| Status register flags. More... | |
Private Attributes | |
| ARMIO | m_io |
| I/O object. | |
Static Private Attributes | |
| static const Address | Base = 0xb000 |
| Register base offset for the Mailbox. | |
| static const uint | ChannelMask = 0xf |
| Channel Mask when reading or writing (lowest 4-bits). | |
Broadcom System-on-Chip Mailbox interface.
The Mailbox on the BCM2835 is a message-based interface between the ARM and the GPU. It provides channels for sending and receiving messages.
Definition at line 47 of file BroadcomMailbox.h.
Mailbox channels.
| Enumerator | |
|---|---|
| PowerManagement | |
| FrameBuffer | |
| VirtualUART | |
| VCHIQ | |
| LED | |
| Button | |
| TouchScreen | |
| VCProperty | |
| ARMProperty | |
Definition at line 91 of file BroadcomMailbox.h.
|
private |
Hardware registers.
| Enumerator | |
|---|---|
| Read | |
| Status | |
| Config | |
| Write | |
Definition at line 60 of file BroadcomMailbox.h.
|
private |
| BroadcomMailbox::BroadcomMailbox | ( | ) |
Constructor.
Definition at line 21 of file BroadcomMailbox.cpp.
| BroadcomMailbox::Result BroadcomMailbox::initialize | ( | ) |
Initialize the Mailbox.
Definition at line 25 of file BroadcomMailbox.cpp.
References Base, Config, Memory::Device, IOError, m_io, IO::map(), PAGESIZE, Memory::Readable, Success, IO::Success, Memory::User, Memory::Writable, and ARMIO::write().
Referenced by BroadcomPower::initialize().
| BroadcomMailbox::Result BroadcomMailbox::read | ( | Channel | channel, |
| u32 * | message | ||
| ) | const |
Read 28-bit message.
| channel | |
| message | 28-bit message on output |
Definition at line 37 of file BroadcomMailbox.cpp.
References ChannelMask, Empty, m_io, ARMIO::read(), Read, Status, and Success.
Referenced by BroadcomPower::enable().
| BroadcomMailbox::Result BroadcomMailbox::write | ( | Channel | channel, |
| u32 | message | ||
| ) |
Write 28-bit message.
| channel | Channel to write to. |
| message | 28-bit message to write. |
Definition at line 54 of file BroadcomMailbox.cpp.
References Full, m_io, ARMIO::read(), Status, Success, ARMIO::write(), and Write.
Referenced by BroadcomPower::enable(), and BroadcomPower::initialize().
|
staticprivate |
Register base offset for the Mailbox.
Definition at line 52 of file BroadcomMailbox.h.
Referenced by initialize().
|
staticprivate |
Channel Mask when reading or writing (lowest 4-bits).
Definition at line 55 of file BroadcomMailbox.h.
Referenced by read().
|
private |
I/O object.
Definition at line 141 of file BroadcomMailbox.h.
Referenced by initialize(), read(), and write().