Unit BCM2710

From Ultibo.org
Jump to: navigation, search

Return to Unit Reference


Description


Ultibo BCM2710 Interface unit

This unit provides the BCM2710 specific implementations of the following devices:

  • SPI0
  • I2C0
  • I2C1
  • I2C2
  • SPI1
  • SPI2
  • I2C Slave
  • SPI Slave
  • DMA
  • PWM0
  • PWM1
  • PCM
  • GPIO
  • UART0
  • UART1
  • SDHCI (eMMC)
  • Clock
  • ARM Timer
  • Local Timer
  • Random
  • Mailbox
  • Watchdog
  • Framebuffer
  • MIPI CSI-2 (Camera Serial Interface)
  • DSI (Display Serial Interface)

BCM2710 SPI0 Device

The BCM2710 has a single master mode SPI controller that supports 3 wire, 2 wire and LoSSI modes of operation. It also has 2 auxiliary SPI masters which do not support DMA mode (see SPI1/2 below).

The main SPI0 controller supports polled, interrupt and DMA modes and includes 3 chip selects although only CS0 and 1 are available on the 26 or 40 pin header.

By default SPI0 can appear on GPIO pins 7 to 11 (CS1, CS0, MISO, MOSI, SCLK) using alternate function 0 or on GPIO pins 35 to 39 (CS1, CS0, MISO, MOSI, SCLK) using alternate function 0, only pins 7 to 11 are available on the header.

BCM2710 I2C0/1/2 Device

The BCM2710 has 3 Broadcom Serial Controller (BSC) devices which are fast mode (400Kz) masters numbered BSC0, BSC1 and BSC2.

Device BSC2 is dedicated to the HDMI interface but can be accessed by the ARM processor for controlling some HDMI functionality. All BSC devices contain a 16 byte FIFO, support 7 bit and 10 bit addressing and have software configurable clock timing.

By default BSC0 can appear on GPIO pins 0 and 1 (Alternate function 0), 28 and 29 (Alternate function 0) or 44 and 45 (Alternate function 1). Unfortunately on all except the Revision 1 models none of these pins are available on the 26 or 40 pin header.

Note: On the Raspberry Pi A+/B+/Zero/2B/3B the ID EEPROM pins on the 40 pin header are actually connected to GPIO 0 and 1 (BSC0)

Device BSC1 can appear on GPIO pins 2 and 3 (Alternate function 0) or 44 and 45 (Alternate function 2) but only pins 2 and 3 are exposed on the 26 or 40 pin header.

BCM2710 SPI1/2 Device

The BCM2710 has 2 additional SPI universal masters available as part of the AUX device which support interrupt mode but not DMA and therefore only allow limited bandwidth transfers due to the CPU overhead required to sustain high data rates.

Both devices support 3 chip selects, by default SPI1 is available on GPIO pins 16 to 21 (CS2, CS1, CS0, MISO, MOSI, SCLK) using alternate function 4 and SPI2 is available on GPIO pins 40 to 45 (MISO, MOSI, SCLK, CS0, CS1, CS2) using alternate function 4. Only pins 16 to 21 are available on the header and only on the 40 pin header of the Raspberry Pi A+/B+/Zero/2B/3B.

BCM2710 SPI/I2C Slave Device

The slave device can be used as either an I2C or an SPI interface, the I2C slave supports 400KHz fast mode operation. Only 7 bit addressing is supported, DMA is not supported and neither is clock stretching.

Note: On the Raspberry Pi A+/B+/Zero/2B/3B the SPI slave device is apparently faulty and cannot be used.

The I2C Slave device can only appear on GPIO pins 18 (SDA) and 19 (SCL) (Alternate function 3).

BCM2710 DMA Device

The DMA controller has 16 channels in total although not all are available for software to use as some are already used by the GPU.

The firmware will pass the value dma.dmachans on the command line which will indicate which channels are available for our use.

Channels 0 to 6 are normal channels which support 2D stride and transfers up to 1GB per control block

Channels 7 to 14 are Lite channels which do not support stride and only allow transfers up to 64KB per control block

Channel 15 is not mentioned in most documentation and is shown as not available in the mask passed in dma.dmachans

Channel 0 and 15 are Bulk channels which have an additional FIFO for faster transfers (8 beat burst per read)

BCM2710 PWM0/1 Device

The BCM2710 has a single PWM controller with 2 independent output bit streams with multiple algorithms for generating the output pulse. The PWM controller supports either a single data register (independent per channel) or a 16 x 32 FIFO which also supports DMA mode transmission.

On the Raspberry Pi PWM0 and PWM1 are also connected via GPIO pins 40 and 45 (40 and 41 on the Raspberry Pi 3B) to the audio circuit and allow playback of digital audio signals via the 3 or 4 pole line jack (depending on model).

PWM0 is available on GPIO pins 12 (function 0), 18 (function 5), 40 (function 0) and 52 (function 1).

PWM1 is available on GPIO pins 13 (function 0), 19 (function 5), 41, 45 (function 0) and 53 (function 1).

On the Raspberry Pi A and B only pin 18 is exposed on the 26 pin header.

On the Raspberry Pi A+/B+/Zero/2B/3B pins 12, 13, 18 and 19 are exposed on the 40 pin header.

BCM2710 GPIO Device

The GPIO has 54 pins available each with multiple alternate functions. All pins can be configured as input or output and all can have pull up or down applied.

Not all pins are exposed on the 26 or 40 pin header of the Raspberry Pi, for details of which pins are available see:

Raspberry Pi A and B - https://www.raspberrypi.org/documentation/usage/gpio/README.md

Raspberry Pi A+/B+/2B/3B/Zero - https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md

Some of the 54 pins are used for peripheral communication (such as the SD card) and are not available for general use, take care when changing function selects on pins to avoid disabling certain system peripherals.

Event detection can be enabled for both high and low levels as well as rising and falling edges, there is also an asynchronous rising or falling edge detection which can detect edges of very short duration.

BCM2710 UART0 Device

The UART0 device is an ARM PL011 UART which supports programmable baud rates, start, stop and parity bits and hardware flow control and many others. The UART0 is similar to the industry standard 16C650 but with a number of differences, the PL011 has some optional features such as IrDA, Serial InfraRed and DMA which are not supported by the Broadcom implementation. In the standard configuration the UART0 TX and RX lines are connected to GPIO pins 14 and 15 respectively (Alternate function 0) but they can be remapped via GPIO function selects to a number of other locations. On the Raspberry Pi (all models) none of these alternate pin mappings are exposed via the 26 or 40 pin header and therefore cannot be used easily. This means that UART0 and UART1 cannot be used at the same time.

On the Raspberry Pi 3B the UART0 can be mapped to GPIO pins 32 and 33 (Alternate function 3) to communicate with the built in Bluetooth module.

BCM2710 UART1 Device

The UART1 device is a Broadcom implementation that is part of the AUX device which also includes the SPI1 and SPI2 devices. This device is termed a Mini UART and has a smaller feature set than the PL011 UART but still supports a fairly standard communication protocol with programmable baud rate and hardware flow control.

The Mini UART is similar to the standard 16550 device but is missing some of the features, the device also has no DMA support so high speed transfers will produce a higher CPU load. In the standard configuration the UART1 TX and RX lines are connected to GPIO pins 14 and 15 respectively (Alternate function 5) but they can be remapped via GPIO function selects to a number of other locations. On the Raspberry Pi (all models) none of these alternate pin mappings are exposed via the 26 or 40 pin header and therefore cannot be used easily. This means that UART0 and UART1 cannot be used at the same time.

On the Raspberry Pi 3B the UART1 can be mapped to GPIO pins 32 and 33 (Alternate function 5) to communicate with the built in Bluetooth module.

BCM2710 SDHCI Device

The SDHCI controller on the BCM2710 is an Arasan SD Host controller.

The Card Detect pin is not connected.

The Write Protect pin is not connected.

The device can be routed to GPIO pins 22 to 27 (ALT3) or 48 to 53 (ALT3), it can also be routed to GPIO pins 34 to 39 (ALT3) to provide an SDIO controller for the on board WiFi.

BCM2710 SDHOST Device

The SDHOST controller on the BCM2710 is a non SDHCI-compliant device which requires a specific driver.

It can be routed to GPIO pins 22 to 27 (ALT0) or 48 to 53 (ALT0) in order to control the SD card slot when the SDHCI device is being used for the on board WiFi.

Note: The actual driver is implemented in the BCMSDHOST unit

BCM2710 Clock (System Timer) Device

The clock device in the BCM2710 is based on the System Timer which is a 64 bit free running counter that runs at 1MHz regardless of core or CPU clock speeds.

The System Timer includes 4 compare registers which can each generate an interrupt when the compare value is matched, however 2 of the 4 are consumed by the GPU and on the Raspberry Pi A/B/A+/B+/Zero the other 2 are used for the scheduler and clock interrupts in Ultibo.

This device simply exposes the free running counter as a clock value and does not provide access to the timer compare functionality or to interrupt based events, for those see the timer devices below.

BCM2710 ARM Timer Device

The ARM Timer device in the BCM2710 is based on the ARM SP804 timer with some modifications and additions. In the Raspberry Pi it is connected to the core clock which by default is 250MHz but was increased to 400MHz on the Raspberry Pi 3B.

The divider is 10 bits wide which means that the ARM Timer can be set to clock rates of between 250KHz and 250MHz (or 400KHz to 400MHz on the Raspberry Pi 3B). Both the counter and the load/reload value are 32 bits wide by default giving a wide range of tick intervals.

The ARM Timer features a free running counter which is not enabled or used by this driver and a down counter which operates in wrapping mode so that each time it reaches 0 it triggers an interrupt and reloads the value from a load or reload register to begin counting again.

Constants



[Expand]
BCM2710 SPI0 BCM2710_SPI0_*


[Expand]
BCM2710 BSCI2C (BSC0/1/2) BCM2710_BSCI2C_*


[Expand]
BCM2710 I2C0 (BSC0) BCM2710_I2C0_*


[Expand]
BCM2710 I2C1 (BSC1) BCM2710_I2C1_*


[Expand]
BCM2710 I2C2 (BSC2) BCM2710_I2C2_*


[Expand]
BCM2710 SPI1 BCM2710_SPI1_*


[Expand]
BCM2710 SPI2 BCM2710_SPI2_*


[Expand]
BCM2710 I2C slave BCM2710_I2CSLAVE_*


[Expand]
BCM2710 SPI slave BCM2710_SPISLAVE_*


[Expand]
BCM2710 DMA BCM2710_DMA_*


[Expand]
BCM2710 PWM BCM2710_PWM_*


[Expand]
BCM2710 PWM0 BCM2710_PWM0_*


[Expand]
BCM2710 PWM1 BCM2710_PWM1_*


[Expand]
BCM2710 GPIO BCM2710_GPIO_*


[Expand]
BCM2710 UART0 (PL011) BCM2710_UART0_*


[Expand]
BCM2710 UART1 (AUX) BCM2710_UART1_*


[Expand]
BCM2710 SDHCI BCM2710_EMMC_*


[Expand]
BCM2710 SDHOST BCM2710_SDHOST_*


[Expand]
BCM2710 clock (system timer) BCM2710_SYS_CLOCK_*


[Expand]
BCM2710 clock (ARM timer) BCM2710_ARM_CLOCK_*


[Expand]
BCM2710 clock (local timer) BCM2710_LOCAL_CLOCK_*


[Expand]
BCM2710 ARM timer BCM2710_ARM_TIMER_*


[Expand]
BCM2710 local timer BCM2710_LOCAL_TIMER_*


[Expand]
BCM2710 random BCM2710_RANDOM_*


[Expand]
BCM2710 mailbox BCM2710_MAILBOX_*


[Expand]
BCM2710 watchdog BCM2710_WATCHDOG_*


[Expand]
BCM2710 framebuffer BCM2710_FRAMEBUFFER_*


Type definitions



BCM2710 SPI0

[Expand]

PBCM2710SPI0Device = ^TBCM2710SPI0Device;

TBCM2710SPI0Device = record

BCM2710 BSCI2C (I2C0/1/2)

[Expand]

PBCM2710BSCI2CDevice = ^TBCM2710BSCI2CDevice;

TBCM2710BSCI2CDevice = record

BCM2710 BSCI2C (I2C0/1) IRQ data

[Expand]

PBCM2710BSCI2CIRQData = ^TBCM2710BSCI2CIRQData;

TBCM2710BSCI2CIRQData = record

BCM2710 SPI AUX (SPI1/2)

[Expand]

PBCM2710SPIAUXDevice = ^TBCM2710SPIAUXDevice;

TBCM2710SPIAUXDevice = record

BCM2710 I2C slave buffer

[Expand]

PBCM2710I2CSlaveBuffer = ^TBCM2710I2CSlaveBuffer;

TBCM2710I2CSlaveBuffer = record

BCM2710 I2C slave

[Expand]

PBCM2710I2CSlave = ^TBCM2710I2CSlave;

TBCM2710I2CSlave = record

BCM2710 DMA channel

[Expand]

PBCM2710DMAChannel = ^TBCM2710DMAChannel;

TBCM2710DMAChannel = record

BCM2710 DMA

[Expand]

PBCM2710DMAHost = ^TBCM2710DMAHost;

TBCM2710DMAHost = record

BCM2710 PWM device

[Expand]

PBCM2710PWMDevice = ^TBCM2710PWMDevice;

TBCM2710PWMDevice = record

BCM2710 PWM audio

[Expand]

PBCM2710PWMAudio = ^TBCM2710PWMAudio;

TBCM2710PWMAudio = record

BCM2710 GPIO

[Expand]

PBCM2710GPIOBank = ^TBCM2710GPIOBank;

TBCM2710GPIOBank = record

BCM2710 GPIO device

[Expand]

PBCM2710GPIODevice = ^TBCM2710GPIODevice;

TBCM2710GPIODevice = record

BCM2710 UART0

[Expand]

PBCM2710UART0Device = ^TBCM2710UART0Device;

TBCM2710UART0Device = record

BCM2710 SDHCI

[Expand]

PBCM2710SDHCIHost = ^TBCM2710SDHCIHost;

TBCM2710SDHCIHost = record

BCM2710 system clock

[Expand]

PBCM2710SystemClock = ^TBCM2710SystemClock;

TBCM2710SystemClock = record

BCM2710 ARM clock

[Expand]

PBCM2710ARMClock = ^TBCM2710ARMClock;

TBCM2710ARMClock = record

BCM2710 ARM timer

[Expand]

PBCM2710ARMTimer = ^TBCM2710ARMTimer;

TBCM2710ARMTimer = record

BCM2710 local timer

[Expand]

PBCM2710LocalTimer = ^TBCM2710LocalTimer;

TBCM2710LocalTimer = record

BCM2710 random

[Expand]

PBCM2710Random = ^TBCM2710Random;

TBCM2710Random = record

BCM2710 mailbox

[Expand]

PBCM2710Mailbox = ^TBCM2710Mailbox;

TBCM2710Mailbox = record

BCM2710 watchdog

[Expand]

PBCM2710Watchdog = ^TBCM2710Watchdog;

TBCM2710Watchdog = record

BCM2710 framebuffer

[Expand]

PBCM2710Framebuffer = ^TBCM2710Framebuffer;

TBCM2710Framebuffer = record


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure BCM2710Init;
Description: To be documented


BCM2710 SPI0 functions

[Expand]
function BCM2710SPI0Start(SPI:PSPIDevice; Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0Stop(SPI:PSPIDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0WriteRead(SPI:PSPIDevice; ChipSelect:Word; Source,Dest:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0SetMode(SPI:PSPIDevice; Mode:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0SetClockRate(SPI:PSPIDevice; ChipSelect:Word; ClockRate:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0SetClockPhase(SPI:PSPIDevice; ClockPhase:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0SetClockPolarity(SPI:PSPIDevice; ClockPolarity:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710SPI0SetSelectPolarity(SPI:PSPIDevice; ChipSelect:Word; SelectPolarity:LongWord):LongWord;
Description: To be documented


[Expand]
procedure BCM2710SPI0ReadFIFO(SPI:PBCM2710SPI0Device);
Description: Caller will hold the SPI device lock


[Expand]
procedure BCM2710SPI0WriteFIFO(SPI:PBCM2710SPI0Device);
Description: Caller will hold the SPI device lock


[Expand]
procedure BCM2710SPI0InterruptHandler(SPI:PBCM2710SPI0Device);
Description: To be documented


[Expand]
procedure BCM2710SPI0DMARequestCompleted(Request:PDMARequest);
Description: DMA Request completion callback for SPI0


BCM2710 BSCI2C (I2C0/1/2) functions

[Expand]
function BCM2710BSCI2CStart(I2C:PI2CDevice; Rate:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CStop(I2C:PI2CDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CRead(I2C:PI2CDevice; Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CWrite(I2C:PI2CDevice; Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CWriteRead(I2C:PI2CDevice; Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CWriteWrite(I2C:PI2CDevice; Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CSetRate(I2C:PI2CDevice; Rate:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710BSCI2CSetAddress(I2C:PI2CDevice; Address:Word):LongWord;
Description: To be documented


[Expand]
procedure BCM2710BSCI2CFillFIFO(I2C:PBCM2710BSCI2CDevice);
Description: Caller will hold the I2C device lock


[Expand]
procedure BCM2710BSCI2CDrainFIFO(I2C:PBCM2710BSCI2CDevice);
Description: Caller will hold the I2C device lock


[Expand]
procedure BCM2710BSCI2CInterruptHandler(IRQData:PBCM2710BSCI2CIRQData);
Description: To be documented


BCM2710 SPI/I2C slave functions

[Expand]
function BCM2710I2CSlaveStart(I2C:PI2CDevice; Rate:LongWord):LongWord;
Description: Implementation of I2CSlaveStart API for BCM2710 I2C slave


[Expand]
function BCM2710I2CSlaveStop(I2C:PI2CDevice):LongWord;
Description: Implementation of I2CSlaveStop API for BCM2710 I2C slave


[Expand]
function BCM2710I2CSlaveRead(I2C:PI2CDevice; Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Implementation of I2CSlaveRead API for BCM2710 I2C slave


[Expand]
function BCM2710I2CSlaveWrite(I2C:PI2CDevice; Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Implementation of I2CSlaveWrite API for BCM2710 I2C slave


[Expand]
function BCM2710I2CSlaveSetAddress(I2C:PI2CDevice; Address:Word):LongWord;
Description: Implementation of I2CSlaveSetAddress API for BCM2710 I2C slave


BCM2710 DMA functions

[Expand]
function BCM2710DMAHostStart(DMA:PDMAHost):LongWord;
Description: To be documented


[Expand]
function BCM2710DMAHostStop(DMA:PDMAHost):LongWord;
Description: To be documented


[Expand]
function BCM2710DMAHostSubmit(DMA:PDMAHost;Request:PDMARequest):LongWord;
Description: To be documented


[Expand]
function BCM2710DMAHostCancel(DMA:PDMAHost;Request:PDMARequest):LongWord;
Description: To be documented


[Expand]
procedure BCM2710DMAInterruptHandler(Channel:PBCM2710DMAChannel);
Description: DMA Channels 0 to 10 each have a dedicated interrupt, this handler simply clears the interrupt and sends a completion on the associated channel


[Expand]
procedure BCM2710DMASharedInterruptHandler(DMA:PBCM2710DMAHost);
Description: DMA Channels 11 to 14 share a common interrupt, this alternate handler determines which ones triggered the current interrupt and sends a completion on that channel


[Expand]
procedure BCM2710DMARequestComplete(Channel:PBCM2710DMAChannel);
Description: To be documented


[Expand]
function BCM2710DMAPeripheralToDREQ(Peripheral:LongWord):LongWord;
Description: To be documented


[Expand]
procedure BCM2710DMADataToControlBlock(Request:PDMARequest; Data:PDMAData; Block:PBCM2837DMAControlBlock; Bulk,Lite:Boolean);
Description: To be documented


BCM2710 PWM0/1 functions

[Expand]
function BCM2710PWMStart(PWM:PPWMDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMStop(PWM:PPWMDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMWrite(PWM:PPWMDevice; Value:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMSetGPIO(PWM:PPWMDevice; GPIO:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMResetGPIO(PWM:PPWMDevice; GPIO:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMSetMode(PWM:PPWMDevice; Mode:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMSetRange(PWM:PPWMDevice; Range:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMSetFrequency(PWM:PPWMDevice;Frequency:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMSetPolarity(PWM:PPWMDevice; Polarity:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMConfigure(PWM:PPWMDevice; DutyNS,PeriodNS:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMClockStart(PWM:PPWMDevice; Frequency:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMClockStop(PWM:PPWMDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710PWMClockEnabled(PWM:PPWMDevice):Boolean;
Description: To be documented


BCM2710 GPIO functions

[Expand]
function BCM2710GPIOStart(GPIO:PGPIODevice):LongWord;
Description: To be documented


[Expand]
function BCM2710GPIOStop(GPIO:PGPIODevice):LongWord;
Description: To be documented


[Expand]
function BCM2710GPIORead(GPIO:PGPIODevice; Reg:LongWord):LongWord;
Description: To be documented


[Expand]
procedure BCM2710GPIOWrite(GPIO:PGPIODevice; Reg,Value:LongWord);
Description: To be documented


[Expand]
function BCM2710GPIOInputGet(GPIO:PGPIODevice; Pin:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710GPIOInputWait(GPIO:PGPIODevice; Pin,Trigger,Timeout:LongWord):LongWord;
Description: To be documented


[Expand]
function BCM2710GPIOInputEvent(GPIO:PGPIODevice; Pin,Trigger,Flags,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;
Description: To be documented


[Expand]
function BCM2710GPIOInputCancel(GPIO:PGPIODevice; Pin:LongWord):LongWord;
Description: To be documented


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


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


[Expand]
function BCM2710GPIOFunctionGet(GPIO:PGPIODevice; Pin:LongWord):LongWord;
Description: To be documented


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


[Expand]
procedure BCM2710GPIOInterruptHandler(Bank:PBCM2710GPIOBank);
Description: To be documented


[Expand]
procedure BCM2710GPIOEventTrigger(Pin:PGPIOPin);
Description: To be documented


[Expand]
procedure BCM2710GPIOEventTimeout(Event:PGPIOEvent);
Description: To be documented


BCM2710 UART0 functions

[Expand]
function BCM2710UART0Open(UART:PUARTDevice; BaudRate,DataBits,StopBits,Parity,FlowControl:LongWord):LongWord;
Description: Implementation of UARTDeviceOpen API for BCM2710 UART0


[Expand]
function BCM2710UART0Close(UART:PUARTDevice):LongWord;
Description: Implementation of UARTDeviceClose API for BCM2710 UART0


[Expand]
function BCM2710UART0Read(UART:PUARTDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: Implementation of UARTDeviceRead API for BCM2710 UART0


[Expand]
function BCM2710UART0PushRX(UART:PUARTDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710UART0Write(UART:PUARTDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: Implementation of UARTDeviceWrite API for BCM2710 UART0


[Expand]
function BCM2710UART0GetStatus(UART:PUARTDevice):LongWord;
Description: Implementation of UARTDeviceGetStatus API for BCM2710 UART0


[Expand]
function BCM2710UART0SetStatus(UART:PUARTDevice; Status:LongWord):LongWord;
Description: Implementation of UARTDeviceSetStatus API for BCM2710 UART0


[Expand]
procedure BCM2710UART0InterruptHandler(UART:PUARTDevice);
Description: Interrupt handler for the BCM2710 UART0 device


[Expand]
procedure BCM2710UART0Receive(UART:PUARTDevice);
Description: Receive handler for the BCM2710 UART0 device


[Expand]
procedure BCM2710UART0Transmit(UART:PUARTDevice);
Description: Transmit handler for the BCM2710 UART0 device


[Expand]
procedure BCM2710UART0EnableInterrupt(UART:PBCM2710UART0Device; Interrupt:LongWord);
Description: Enable the specified interrupt in the interrupt mask register of a BCM2710 UART0 device


[Expand]
procedure BCM2710UART0DisableInterrupt(UART:PBCM2710UART0Device; Interrupt:LongWord);
Description: Disable the specified interrupt in the interrupt mask register of a BCM2710 UART0 device


BCM2710 SDHCI functions

[Expand]
function BCM2710SDHCIHostStart(SDHCI:PSDHCIHost):LongWord;
Description: Implementation of SDHCIHostStart API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostStop(SDHCI:PSDHCIHost):LongWord;
Description: Implementation of SDHCIHostStop API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostLock(SDHCI:PSDHCIHost):LongWord;
Description: Implementation of SDHCIHostLock API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostUnlock(SDHCI:PSDHCIHost):LongWord;
Description: Implementation of SDHCIHostUnlock API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostSignal(SDHCI:PSDHCIHost; Semaphore:TSemaphoreHandle):LongWord;
Description: Implementation of SDHCIHostSignal API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostReadByte(SDHCI:PSDHCIHost; Reg:LongWord):Byte;
Description: Implementation of SDHCIHostReadByte API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostReadWord(SDHCI:PSDHCIHost; Reg:LongWord):Word;
Description: Implementation of SDHCIHostReadWord API for BCM2710 SDHCI


[Expand]
function BCM2710SDHCIHostReadLong(SDHCI:PSDHCIHost; Reg:LongWord):LongWord;
Description: Implementation of SDHCIHostReadLong API for BCM2710 SDHCI


[Expand]
procedure BCM2710SDHCIHostWriteByte(SDHCI:PSDHCIHost; Reg:LongWord; Value:Byte);
Description: Implementation of SDHCIHostWriteByte API for BCM2710 SDHCI


[Expand]
procedure BCM2710SDHCIHostWriteWord(SDHCI:PSDHCIHost; Reg:LongWord; Value:Word);
Description: Implementation of SDHCIHostWriteWord API for BCM2710 SDHCI


[Expand]
procedure BCM2710SDHCIHostWriteLong(SDHCI:PSDHCIHost; Reg:LongWord; Value:LongWord);
Description: Implementation of SDHCIHostWriteLong API for BCM2710 SDHCI


[Expand]
procedure BCM2710SDHCIInterruptHandler(SDHCI:PSDHCIHost);
Description: Interrupt handler for the BCM2710 SDHCI host controller


[Expand]
function BCM2710SDHCISetupInterrupts(SDHCI:PSDHCIHost):LongWord;
Description: Configure and enable interrupt handling for the BCM2710 SDHCI


[Expand]
function BCM2710MMCDeviceGetCardDetect(MMC:PMMCDevice):LongWord;
Description: Implementation of MMC GetCardDetect for the BCM2710 which does not update the bits in the SDHCI_PRESENT_STATE register to reflect card insertion or removal


BCM2710 system clock functions

[Expand]
function BCM2710SystemClockRead(Clock:PClockDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710SystemClockRead64(Clock:PClockDevice):Int64;
Description: To be documented


BCM2710 ARM clock functions

[Expand]
function BCM2710ARMClockStart(Clock:PClockDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710ARMClockStop(Clock:PClockDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710ARMClockRead(Clock:PClockDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710ARMClockRead64(Clock:PClockDevice):Int64;
Description: To be documented


[Expand]
function BCM2710ARMClockSetRate(Clock:PClockDevice; Rate:LongWord):LongWord;
Description: To be documented


BCM2710 ARM timer functions

[Expand]
function BCM2710ARMTimerStart(Timer:PTimerDevice):LongWord;
Description: Implementation of TimerDeviceStart API for ARM Timer


[Expand]
function BCM2710ARMTimerStop(Timer:PTimerDevice):LongWord;
Description: Implementation of TimerDeviceStop API for ARM Timer


[Expand]
function BCM2710ARMTimerRead64(Timer:PTimerDevice):Int64;
Description: Implementation of TimerDeviceRead64 API for ARM Timer


[Expand]
function BCM2710ARMTimerWait(Timer:PTimerDevice):LongWord;
Description: Implementation of TimerDeviceWait API for ARM Timer


[Expand]
function BCM2710ARMTimerEvent(Timer:PTimerDevice; Flags:LongWord; Callback:TTimerCallback; Data:Pointer):LongWord;
Description: Implementation of TimerDeviceEvent API for ARM Timer


[Expand]
function BCM2710ARMTimerCancel(Timer:PTimerDevice):LongWord;
Description: Implementation of TimerDeviceCancel API for ARM Timer


[Expand]
function BCM2710ARMTimerSetRate(Timer:PTimerDevice; Rate:LongWord):LongWord;
Description: Implementation of TimerDeviceSetRate API for ARM Timer


[Expand]
function BCM2710ARMTimerSetInterval(Timer:PTimerDevice; Interval:LongWord):LongWord;
Description: Implementation of TimerDeviceSetInterval API for ARM Timer


[Expand]
procedure BCM2710ARMTimerInterruptHandler(Timer:PTimerDevice);
Description: Interrupt handler for ARM Timer


[Expand]
procedure BCM2710ARMTimerEventTrigger(Timer:PTimerDevice);
Description: Event handler for ARM Timer


BCM2710 random functions

[Expand]
function BCM2710RandomStart(Random:PRandomDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710RandomStop(Random:PRandomDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710RandomReadLongWord(Random:PRandomDevice):LongWord;
Description: To be documented


BCM2710 watchdog functions

[Expand]
function BCM2710WatchdogStart(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710WatchdogStop(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710WatchdogRefresh(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


[Expand]
function BCM2710WatchdogGetRemain(Watchdog:PWatchdogDevice):LongWord;
Description: To be documented


BCM2710 framebuffer functions

[Expand]
function BCM2710FramebufferAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Description: Implementation of FramebufferDeviceAllocate API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferRelease(Framebuffer:PFramebufferDevice):LongWord;
Description: Implementation of FramebufferDeviceRelease API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
Description: Implementation of FramebufferDeviceBlank API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferCommit(Framebuffer:PFramebufferDevice;Address:PtrUInt;Size,Flags:LongWord):LongWord;
Description: Implementation of FramebufferDeviceCommit API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferWaitSync(Framebuffer:PFramebufferDevice):LongWord;
Description: Implementation of FramebufferDeviceWaitSync API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferSetOffsetEx(Framebuffer:PFramebufferDevice; X,Y:LongWord; Pan,Switch:Boolean):LongWord;
Description: Implementation of FramebufferDeviceSetOffsetEx API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferGetPalette(Framebuffer:PFramebufferDevice; Palette:PFramebufferPalette):LongWord;
Description: Implementation of FramebufferDeviceGetPalette API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferSetPalette(Framebuffer:PFramebufferDevice; Palette:PFramebufferPalette):LongWord;
Description: Implementation of FramebufferDeviceSetPalette API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferSetBacklight(Framebuffer:PFramebufferDevice; Brightness:LongWord):LongWord;
Description: Implementation of FramebufferDeviceSetBacklight API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferSetCursor(Framebuffer:PFramebufferDevice; Width,Height,HotspotX,HotspotY:LongWord; Image:Pointer; Len:LongWord):LongWord;
Description: Implementation of FramebufferDeviceSetCursor API for BCM2710 Framebuffer


[Expand]
function BCM2710FramebufferUpdateCursor(Framebuffer:PFramebufferDevice; Enabled:Boolean; X,Y:LongInt; Relative:Boolean):LongWord;
Description: Implementation of FramebufferDeviceUpdateCursor API for BCM2710 Framebuffer


BCM2710 helper functions

[Expand]
function BCM2710SPIGetDescription(Id:LongWord):String;
Description: Get the device description of an SPI device


[Expand]
function BCM2710I2CGetDescription(Id:LongWord):String;
Description: Get the device description of an I2C device


[Expand]
function BCM2710I2CSlaveGetDescription(Id:LongWord):String;
Description: Get the device description of an I2C slave device


[Expand]
function BCM2710PWMGetDescription(Id,Channel:LongWord):String;
Description: Get the device description of a PWM device


[Expand]
function BCM2710UARTGetDescription(Id:LongWord):String;
Description: Get the device description of a UART device


Return to Unit Reference