Difference between revisions of "Unit PlatformRPi2"

From Ultibo.org
Jump to: navigation, search
Line 12: Line 12:
 
----
 
----
  
''To be documented''
+
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 ARM physical to VC IO mapping constants''' <code> RPI2_VCIO_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_VCIO_ALIAS = BCM2836_VCIO_ALIAS;</code>
 +
| The VCIO Alias (For ARM Physcial to VC IO translation)
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 ARM physical to VC bus mapping constants''' <code> RPI2_VCBUS_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_VCBUS_ALIAS = BCM2836_VCBUS_C_ALIAS;</code>
 +
| The currently selected VCBUS Alias (For ARM Physcial to VC Bus translation)
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 secure world boot constants''' <code> RPI2_SECURE_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_SECURE_BOOT = $00000001;</code>
 +
| If 1 then startup will attempt to switch back to secure world during boot process
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 address of StartupHandler on reset constants''' <code> RPI2_STARTUP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_STARTUP_ADDRESS = $00008000;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 page table address and size constants''' <code> RPI2_PAGE_TABLE_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_PAGE_TABLE_BASE = $00004000;</code>
 +
| Place the first level Page Table after the interrupt vectors at 0x00001000 and before the code start at 0x00008000
 +
|-
 +
| <code>RPI2_PAGE_TABLE_SIZE = SIZE_16K;</code>
 +
| ARM Cortex A7 first level Page Table is exactly 16KB in size (4096 32 bit (4 byte) entries)
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 vector table address and size constants ''' <code> RPI2_VECTOR_TABLE_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_VECTOR_TABLE_BASE = $00001000;</code>
 +
| Place the Interrupt Vector Table at 0x00001000 before the code start at 0x00008000
 +
|-
 +
| <code>RPI2_VECTOR_TABLE_SIZE = SIZE_64;</code>
 +
| The Interrupt Vector Table is exactly 64 bytes (16 32 bit (4 byte) entries)
 +
|-
 +
| <code>RPI2_VECTOR_TABLE_COUNT = 8;</code>
 +
| The Interrupt Vector Table contains 8 entries on an ARMv7 device
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 CPU count constants''' <code> RPI2_CPU_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_CPU_COUNT = BCM2836_CPU_COUNT;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>RPI2_CPU_BOOT = CPU_ID_0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>RPI2_CPU_MASK = CPU_AFFINITY_0 or CPU_AFFINITY_1 or CPU_AFFINITY_2 or CPU_AFFINITY_3;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 IRQ/FIQ start/routing constants''' <code> RPI2_IRQ_*, RPI2_FIQ_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_IRQ_START = 0;</code>
 +
| System wide IRQs start at zero
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_IRQ_ROUTING = CPU_ID_0;</code>
 +
| Route system wide IRQs to CPU0
 +
|-
 +
| <code>RPI2_FIQ_ROUTING = CPU_ID_0;</code>
 +
| Route system wide FIQs to CPU0
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_IRQ_LOCAL_START = BCM2836_GPU_IRQ_COUNT + BCM2836_ARM_IRQ_COUNT;</code>
 +
| Local IRQs start after GPU and ARM IRQs
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 SWI constants''' <code> RPI2_SWI_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_SWI_COUNT = 256;</code>
 +
| Number of available SWI entries
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 core timer prescaler constants''' <code> RPI2_*_TIMER_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_CORE_TIMER_PRESCALER = $06AAAAAB;</code>
 +
| Divide the Crystal Clock by 19.2 to give a 1MHz Core Timer
 +
|-
 +
| <code>RPI2_CORE_TIMER_FREQUENCY = 1000000;</code>
 +
| The Core Timer frequency from the prescaler setting above
 +
|-
 +
| <code>RPI2_GENERIC_TIMER_FREQUENCY = 1000000;</code>
 +
| The ARM Generic Timer frequency from the prescaler setting above
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 kernel image name constants''' <code> RPI2_KERNEL_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_KERNEL_NAME = 'kernel7.img';</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>RPI2_KERNEL_CONFIG = 'config.txt';</code>
 +
| &nbsp;
 +
|-
 +
| <code>RPI2_KERNEL_COMMAND = 'cmdline.txt';</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 GPIO power LED constants''' <code> RPI2_GPIO_PWRLED_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|GPIO Pin 35
 +
|-
 +
|colspan="2"|Note: GPIO Pin 35 on the RPi2 is set on boot to Pull Up/Down Enable which must be cleared before using the pin
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPFSEL = BCM2836_GPFSEL3;</code>
 +
| GPFSEL register for PWR LED
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPSET = BCM2836_GPSET1;</code>
 +
| GPSET register for PWR LED
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPCLR = BCM2836_GPCLR1;</code>
 +
| GPCLR register for PWR LED
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPFSHIFT = 15;</code>
 +
| GPFSEL register shift for PWR LED
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPFMASK = BCM2836_GPFSEL_MASK;</code>
 +
| GPFSEL register mask for PWR LED
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPSHIFT = (35 - 32);</code>
 +
| GPSET/GPCLR register shift for PWR LED
 +
|-
 +
| <code>RPI2_GPIO_PWRLED_GPMASK = BCM2836_GPSET_MASK;</code>
 +
| GPSET/GPCLR register mask for PWR LED
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|GPIO Pin 35 on RPi2
 +
|-
 +
|colspan="2"|See: http://www.raspberrypi.org/forums/viewtopic.php?t=72260
 +
|-
 +
|colspan="2"|See also for how to control GPPUD etc: http://wiki.osdev.org/Raspberry_Pi_Bare_Bones
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 GPIO activity LED constants ''' <code> RPI2_GPIO_ACTLED_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|GPIO Pin 47
 +
|-
 +
|colspan="2"|Note: GPIO Pin 47 on the RPi2 is Pull High instead of Pull Low, to turn on the LED use RPI2_GPIO_ACTLED_GPSET instead of RPI2_GPIO_ACTLED_GPCLR
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPFSEL = BCM2836_GPFSEL4;</code>
 +
| GPFSEL register for ACT LED
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPSET = BCM2836_GPSET1;</code>
 +
| GPSET register for ACT LED
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPCLR = BCM2836_GPCLR1;</code>
 +
| GPCLR register for ACT LED
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPFSHIFT = 21;</code>
 +
| GPFSEL register shift for ACT LED
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPFMASK = BCM2836_GPFSEL_MASK;</code>
 +
| GPFSEL register mask for ACT LED
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPSHIFT = (47 - 32);</code>
 +
| GPSET/GPCLR register shift for ACT LED
 +
|-
 +
| <code>RPI2_GPIO_ACTLED_GPMASK = BCM2836_GPSET_MASK;</code>
 +
| GPSET/GPCLR register mask for ACT LED
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 mailbox constants''' <code> RPI2_MAILBOX_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_MAILBOX_TIMEOUT = 100;</code>
 +
| Default timeout to wait for mailbox calls to complete (Milliseconds)
 +
|-
 +
| <code>RPI2_MAILBOX_TIMEOUT_EX = 1000;</code>
 +
| Extended timeout to wait for mailbox calls to complete (Milliseconds)
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''RPi2 local mailbox constants''' <code> RPI2_LOCAL_MAILBOX_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>RPI2_LOCAL_MAILBOX_TIMEOUT = 100;</code>
 +
| Default timeout to wait for local mailbox calls to complete (Milliseconds)
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Type definitions ===
 
=== Type definitions ===

Revision as of 03:57, 19 December 2016

Return to Unit Reference


Description


The RPi2 B has the Power LED connected to GPIO Pin 35 (Activity LED is now on GPIO Pin 47).

The RPi3 B has the Activity LED connected to the GPU, access is via a Virtual GPIO (Power LED appears to be unavailable).

Constants



[Expand]
RPi2 ARM physical to VC IO mapping constants RPI2_VCIO_*


[Expand]
RPi2 ARM physical to VC bus mapping constants RPI2_VCBUS_*


[Expand]
RPi2 secure world boot constants RPI2_SECURE_*


[Expand]
RPi2 address of StartupHandler on reset constants RPI2_STARTUP_*


[Expand]
RPi2 page table address and size constants RPI2_PAGE_TABLE_*


[Expand]
RPi2 vector table address and size constants RPI2_VECTOR_TABLE_*


[Expand]
RPi2 CPU count constants RPI2_CPU_*


[Expand]
RPi2 IRQ/FIQ start/routing constants RPI2_IRQ_*, RPI2_FIQ_*


[Expand]
RPi2 SWI constants RPI2_SWI_*


[Expand]
RPi2 core timer prescaler constants RPI2_*_TIMER_*


[Expand]
RPi2 kernel image name constants RPI2_KERNEL_*


[Expand]
RPi2 GPIO power LED constants RPI2_GPIO_PWRLED_*


[Expand]
RPi2 GPIO activity LED constants RPI2_GPIO_ACTLED_*


[Expand]
RPi2 mailbox constants RPI2_MAILBOX_*


[Expand]
RPi2 local mailbox constants RPI2_LOCAL_MAILBOX_*


Type definitions


None defined

Public variables


To be documented

Function declarations



Initialization functions

[Expand]
procedure RPi2Init;
Description: To be documented


[Expand]
procedure RPi2SecondarySwitch; assembler; nostackframe;
Description: Secondary CPU switch from HYP mode handler


[Expand]
procedure RPi2SecondarySecure; assembler; nostackframe;
Description: Secondary CPU switch to secure mode handler


[Expand]
procedure RPi2SecondaryHandler; assembler; nostackframe;
Description: Secondary CPU startup handler routine


RPi2 platform functions

[Expand]
procedure RPi2SMPInit;
Description: To be documented


[Expand]
procedure RPi2BoardInit;
Description: To be documented


[Expand]
procedure RPi2MemoryInit;
Description: To be documented


[Expand]
procedure RPi2ClockInit;
Description: To be documented


[Expand]
procedure RPi2PowerInit;
Description: To be documented


[Expand]
procedure RPi2MailboxInit;
Description: To be documented


[Expand]
procedure RPi2InterruptInit;
Description: To be documented


[Expand]
procedure RPi2PeripheralInit;
Description: To be documented


[Expand]
procedure RPi2FramebufferInit;
Description: To be documented


[Expand]
procedure RPi2PageTableInit;
Description: Initialize the Hardware Page Tables before enabling the MMU


[Expand]
procedure RPi2PowerLEDEnable;
Description: To be documented


[Expand]
procedure RPi2PowerLEDOn;
Description: To be documented


[Expand]
procedure RPi2PowerLEDOff;
Description: To be documented


[Expand]
procedure RPi2ActivityLEDEnable;
Description: To be documented


[Expand]
procedure RPi2ActivityLEDOn;
Description: To be documented


[Expand]
procedure RPi2ActivityLEDOff;
Description: To be documented


[Expand]
function RPi2MailboxReceive(Mailbox,Channel:LongWord):LongWord;
Description: Receive from specified mailbox on specified channel


[Expand]
procedure RPi2MailboxSend(Mailbox,Channel,Data:LongWord);
Description: Send to specified mailbox on specified channel


[Expand]
function RPi2MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function RPi2MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function RPi2MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function RPi2MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel


[Expand]
function RPi2RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request registration of the supplied handler to the specified IRQ number


[Expand]
function RPi2ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request deregistration of the supplied handler from the specified IRQ number


[Expand]
function RPi2RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request registration of the supplied handler to the specified FIQ number


[Expand]
function RPi2ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
Description: Request deregistration of the supplied handler from the specified FIQ number


[Expand]
function RPi2RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
Description: Request registration of the supplied extended handler to the specified System Call number


[Expand]
function RPi2DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
Description: Request deregistration of the supplied extended handler from the specified System Call number


[Expand]
function RPi2GetInterruptEntry(Number:LongWord):TInterruptEntry;
Description: Get the interrupt entry for the specified interrupt number


[Expand]
function RPi2GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry;
Description: Get the local interrupt entry for the specified interrupt number


[Expand]
function RPi2GetSystemCallEntry(Number:LongWord):TSystemCallEntry;
Description: Get the system call entry for the specified system call number


[Expand]
function RPi2SystemRestart(Delay:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2SystemShutdown(Delay:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2SystemGetCommandLine:String;
Description: Get the Command Line from the Mailbox property tags channel


[Expand]
function RPi2CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord;
Description: Get the CPU Memory from the Mailbox property tags channel


[Expand]
function RPi2GPUGetState:LongWord;
Description: To be documented


[Expand]
function RPi2GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord;
Description: Get the GPU Memory from the Mailbox property tags channel


[Expand]
function RPi2BoardGetModel:LongWord;
Description: Get the Board Model from the Mailbox property tags channel


[Expand]
function RPi2BoardGetSerial:Int64;
Description: Get the Board Serial from the Mailbox property tags channel


[Expand]
function RPi2BoardGetRevision:LongWord;
Description: Get the Board Revision from the Mailbox property tags channel


[Expand]
function RPi2BoardGetMACAddress:String;
Description: Get the Board MAC Address from the Mailbox property tags channel


[Expand]
function RPi2FirmwareGetRevision:LongWord;
Description: Get the Firmware Revision from the Mailbox property tags channel


[Expand]
function RPi2PowerGetWait(PowerId:LongWord):LongWord;
Description: Get the Power Wait from the Mailbox property tags channel


[Expand]
function RPi2PowerGetState(PowerId:LongWord):LongWord;
Description: Get the Power State from the Mailbox property tags channel


[Expand]
function RPi2PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord;
Description: Set the Power State in the Mailbox property tags channel


[Expand]
function RPi2ClockGetCount:LongWord;
Description: Gets the current system clock count (32 least significant bits of total)


[Expand]
function RPi2ClockGetTotal:Int64;
Description: Gets the total system clock count


[Expand]
function RPi2ClockGetRate(ClockId:LongWord):LongWord;
Description: Get the Clock Rate from the Mailbox property tags channel


[Expand]
function RPi2ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;
Description: Set the Clock Rate in the Mailbox property tags channel


[Expand]
function RPi2ClockGetState(ClockId:LongWord):LongWord;
Description: Get the Clock State from the Mailbox property tags channel


[Expand]
function RPi2ClockSetState(ClockId,State:LongWord):LongWord;
Description: Set the Clock State in the Mailbox property tags channel


[Expand]
function RPi2ClockGetMinRate(ClockId:LongWord):LongWord;
Description: Get the Clock Min Rate from the Mailbox property tags channel


[Expand]
function RPi2ClockGetMaxRate(ClockId:LongWord):LongWord;
Description: Get the Clock Max Rate from the Mailbox property tags channel


[Expand]
function RPi2TurboGetState(TurboId:LongWord):LongWord;
Description: Get the Turbo State from the Mailbox property tags channel


[Expand]
function RPi2TurboSetState(TurboId,State:LongWord):LongWord;
Description: Set the Turbo State in the Mailbox property tags channel


[Expand]
function RPi2VoltageGetValue(VoltageId:LongWord):LongWord;
Description: Get the Voltage Value from the Mailbox property tags channel


[Expand]
function RPi2VoltageSetValue(VoltageId,Value:LongWord):LongWord;
Description: Set the Voltage Value in the Mailbox property tags channel


[Expand]
function RPi2VoltageGetMinValue(VoltageId:LongWord):LongWord;
Description: Get the Voltage Min Value from the Mailbox property tags channel


[Expand]
function RPi2VoltageGetMaxValue(VoltageId:LongWord):LongWord;
Description: Get the Voltage Max Value from the Mailbox property tags channel


[Expand]
function RPi2TemperatureGetCurrent(TemperatureId:LongWord):LongWord;
Description: Get the Temperature Current from the Mailbox property tags channel


[Expand]
function RPi2TemperatureGetMaximum(TemperatureId:LongWord):LongWord;
Description: Get the Temperature Maximum Model from the Mailbox property tags channel


[Expand]
function RPi2GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle;
Description: Allocate GPU Memory from the Mailbox property tags channel


[Expand]
function RPi2GPUMemoryRelease(Handle:THandle):LongWord;
Description: Release GPU Memory from the Mailbox property tags channel


[Expand]
function RPi2GPUMemoryLock(Handle:THandle):LongWord;
Description: Lock GPU Memory from the Mailbox property tags channel


[Expand]
function RPi2GPUMemoryUnlock(Handle:THandle):LongWord;
Description: Unlock GPU Memory from the Mailbox property tags channel


[Expand]
function RPi2GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;
Description: Execute GPU Code from the Mailbox property tags channel


[Expand]
function RPi2DispmanxHandleGet(Resource:THandle):THandle;
Description: Get Dispmanx Memory Handle from the Mailbox property tags channel


[Expand]
function RPi2EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Description: Get EDID Block from the Mailbox property tags channel


[Expand]
function RPi2FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord;
Description: Allocate Framebuffer from the Mailbox property tags channel


[Expand]
function RPi2FramebufferRelease:LongWord;
Description: Release Framebuffer from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetState(State:LongWord):LongWord;
Description: Set Framebuffer State (Blank Screen) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;
Description: Get Framebuffer Dimensions from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetPhysical(var Width,Height:LongWord):LongWord;
Description: Get Framebuffer Physical size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetPhysical(var Width,Height:LongWord):LongWord;
Description: Set Framebuffer Physical size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestPhysical(var Width,Height:LongWord):LongWord;
Description: Test Framebuffer Physical size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetVirtual(var Width,Height:LongWord):LongWord;
Description: Get Framebuffer Virtual size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetVirtual(var Width,Height:LongWord):LongWord;
Description: Set Framebuffer Virtual size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestVirtual(var Width,Height:LongWord):LongWord;
Description: Test Framebuffer Virtual size from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetDepth(var Depth:LongWord):LongWord;
Description: Get Framebuffer Depth (Bits per pixel) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetDepth(var Depth:LongWord):LongWord;
Description: Set Framebuffer Depth (Bits per pixel) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestDepth(var Depth:LongWord):LongWord;
Description: Test Framebuffer Depth (Bits per pixel) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetPixelOrder(var Order:LongWord):LongWord;
Description: Get Framebuffer Pixel Order (RGB) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetPixelOrder(var Order:LongWord):LongWord;
Description: Set Framebuffer Pixel Order (RGB) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestPixelOrder(var Order:LongWord):LongWord;
Description: Test Framebuffer Pixel Order (RGB) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetAlphaMode(var Mode:LongWord):LongWord;
Description: Get Framebuffer Alpha Mode from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetAlphaMode(var Mode:LongWord):LongWord;
Description: Set Framebuffer Alpha Mode from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestAlphaMode(var Mode:LongWord):LongWord;
Description: Test Framebuffer Alpha Mode from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetPitch:LongWord;
Description: Get Framebuffer Pitch (Bytes per line) from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetOffset(var X,Y:LongWord):LongWord;
Description: Get Framebuffer Virtual Offset from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetOffset(var X,Y:LongWord):LongWord;
Description: Set Framebuffer Virtual Offset from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestOffset(var X,Y:LongWord):LongWord;
Description: Test Framebuffer Virtual Offset from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Description: Get Framebuffer Overscan from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Description: Set Framebuffer Overscan from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Description: Test Framebuffer Overscan from the Mailbox property tags channel


[Expand]
function RPi2FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord;
Description: Get Framebuffer Palette from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Description: Set Framebuffer Palette from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Description: Test Framebuffer Palette from the Mailbox property tags channel


[Expand]
function RPi2FramebufferTestVsync:LongWord;
Description: Test Framebuffer Vertical Sync from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetVsync:LongWord;
Description: Set Framebuffer Vertical Sync from the Mailbox property tags channel


[Expand]
function RPi2FramebufferSetBacklight(Brightness:LongWord):LongWord;
Description: Set Framebuffer Backlight Brightness from the Mailbox property tags channel


[Expand]
function RPi2TouchGetBuffer(var Address:LongWord):LongWord;
Description: Get the Touchscreen buffer from the Mailbox property tags channel


[Expand]
function RPi2VirtualGPIOGetBuffer(var Address:LongWord):LongWord;
Description: Get the Virtual GPIO buffer from the Mailbox property tags channel


[Expand]
function RPi2CursorSetDefault:LongWord;
Description: Set Cursor Default (Pixels) from the Mailbox property tags channel


[Expand]
function RPi2CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;
Description: Set Cursor Info (Pixels) from the Mailbox property tags channel


[Expand]
function RPi2CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;
Description: Set Cursor State (Enable, X, Y) from the Mailbox property tags channel


[Expand]
function RPi2DMAGetChannels:LongWord;
Description: Get the available DMA Channels from the Mailbox property tags channel


[Expand]
function RPi2VirtualGPIOInputGet(Pin:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2VirtualGPIOOutputSet(Pin,Level:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2VirtualGPIOFunctionSelect(Pin,Mode:LongWord):LongWord;
Description: To be documented


RPi2 thread functions

[Expand]
procedure RPi2SchedulerInit;
Description: Initialize the scheduler interrupt on the boot CPU


[Expand]
procedure RPi2SchedulerStart(CPUID:LongWord);
Description: Initialize the scheduler interrupt on the specified secondary CPU


[Expand]
procedure RPi2SecondaryBoot(CPUID:LongWord);
Description: To be documented


RPi2 IRQ functions

[Expand]
function RPi2DispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Process any pending IRQ requests


[Expand]
function RPi2HandleIRQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Call the handler function for an IRQ that was received, or halt if it doesn't exist


RPi2 FIQ functions

[Expand]
function RPi2DispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Process any pending FIQ requests


[Expand]
function RPi2HandleFIQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Description: Call the handler function for an FIQ that was received, or halt if it doesn't exist


RPi2 SWI functions

[Expand]
function RPi2DispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
Description: Process an SWI request


RPi2 clock functions

[Expand]
procedure RPi2ClockInterrupt(Parameter:Pointer);
Description: Interrupt handler function for the clock interrupt


[Expand]
procedure RPi2ClockUpdate(Cycles:LongWord; var Last:LongWord);
Description: Setup a clock interrupt to trigger after the specified number of clock cycles


RPi2 scheduler functions

[Expand]
function RPi2SchedulerInterrupt(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;
Description: Interrupt handler function for the scheduler interrupt


[Expand]
procedure RPi2SchedulerUpdate(Cycles:LongWord; var Last:LongWord);
Description: Setup a scheduler interrupt to trigger after the specified number of clock cycles


[Expand]
procedure RPi2SchedulerSystemCall(Request:PSystemCallRequest);
Description: System Call handler for the scheduler


RPi2 framebuffer functions

[Expand]
function RPi2FramebufferDeviceAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: Allocate a framebuffer using the Mailbox Property Tags


[Expand]
function RPi2FramebufferDeviceAllocateAlt(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: Allocate a framebuffer using a simple Mailbox Call


[Expand]
function RPi2FramebufferDeviceRelease(Framebuffer:PFramebufferDevice):LongWord;
Description: To be documented


[Expand]
function RPi2FramebufferDeviceBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
Description: To be documented


[Expand]
function RPi2FramebufferDeviceCommit(Framebuffer:PFramebufferDevice; Address,Size,Flags:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2FramebufferDeviceSetBacklight(Framebuffer:PFramebufferDevice; Brightness:LongWord):LongWord;
Description: To be documented


[Expand]
function RPi2FramebufferDeviceSetProperties(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: To be documented


RPi2 helper functions

[Expand]
procedure RPi2Wait; assembler; nostackframe;
Description: To be documented


[Expand]
procedure RPi2LongWait; assembler; nostackframe;
Description: To be documented


[Expand]
procedure RPi2ShortWait; assembler; nostackframe;
Description: To be documented


[Expand]
procedure RPi2SlowBlink; assembler; nostackframe;
Description: To be documented


[Expand]
procedure RPi2FastBlink; assembler; nostackframe;
Description: To be documented


[Expand]
procedure RPi2BootBlink; assembler; nostackframe;
Description: Blink the Activity LED without dependency on any other RTL setup


[Expand]
function RPi2ConvertPowerIdRequest(PowerId:LongWord):LongWord;
Description: Convert Ultibo Power Id to BCM2836 Power Id


[Expand]
function RPi2ConvertPowerStateRequest(PowerState:LongWord):LongWord;
Description: Convert Ultibo Power State to BCM2836 Power State


[Expand]
function RPi2ConvertPowerStateResponse(PowerState:LongWord):LongWord;
Description: Convert BCM2836 Power State to Ultibo Power State


[Expand]
function RPi2ConvertClockIdRequest(ClockId:LongWord):LongWord;
Description: Convert Ultibo Clock Id to BCM2836 Clock Id


[Expand]
function RPi2ConvertClockStateRequest(ClockState:LongWord):LongWord;
Description: Convert Ultibo Clock State to BCM2836 Clock State


[Expand]
function RPi2ConvertClockStateResponse(ClockState:LongWord):LongWord;
Description: Convert BCM2836 Clock State to Ultibo Clock State


[Expand]
function RPi2ConvertVoltageIdRequest(VoltageId:LongWord):LongWord;
Description: Convert Ultibo Voltage Id to BCM2836 Voltage Id


[Expand]
function RPi2ConvertTemperatureIdRequest(TemperatureId:LongWord):LongWord;
Description: Convert Ultibo Temperature Id to BCM2836 Temperature Id


Return to Unit Reference