Difference between revisions of "Unit PL110"
(6 intermediate revisions by the same user not shown) | |||
Line 26: | Line 26: | ||
| <code>PL110_FRAMEBUFFER_DESCRIPTION = 'ARM PrimeCell PL110 Color LCD';</code> | | <code>PL110_FRAMEBUFFER_DESCRIPTION = 'ARM PrimeCell PL110 Color LCD';</code> | ||
| Description of PL110 device | | Description of PL110 device | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>PL110_MAX_PHYSICALWIDTH = 1024;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PL110_MAX_PHYSICALHEIGHT = 1024;</code> | ||
+ | | | ||
|- | |- | ||
|} | |} | ||
Line 264: | Line 272: | ||
|- | |- | ||
| <code>PL110_CLCD_CONTROL_BGR = (1 shl 8);</code> | | <code>PL110_CLCD_CONTROL_BGR = (1 shl 8);</code> | ||
− | | RGB | + | | RGB or BGR format selection (0 = RGB normal output/1 = BGR red and blue swapped.) |
|- | |- | ||
| <code>PL110_CLCD_CONTROL_BEBO = (1 shl 9);</code> | | <code>PL110_CLCD_CONTROL_BEBO = (1 shl 9);</code> | ||
Line 366: | Line 374: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | |colspan="2"|Note: Layout of the PL110 registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0161e/ | + | |colspan="2"|Note: Layout of the PL110 registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0161e/I904421.html) |
|- | |- | ||
| <code>TIMING0:LongWord;</code> | | <code>TIMING0:LongWord;</code> | ||
Line 474: | Line 482: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCreateVGA(Address: | + | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCreateVGA(Address:PtrUInt; const Name:String; Rotation,Width,Height,Depth:LongWord):PFramebufferDevice;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create, register and allocate a new PL110 Framebuffer device which can be accessed using the framebuffer API</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create, register and allocate a new PL110 Framebuffer device which can be accessed using the framebuffer API</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Address |
| The address of the PL110 registers | | The address of the PL110 registers | ||
|- | |- | ||
− | ! | + | ! Name |
| The text description of this device which will show in the device list (Optional) | | The text description of this device which will show in the device list (Optional) | ||
|- | |- | ||
− | ! | + | ! Rotation |
| The rotation value for the framebuffer device (eg FRAMEBUFFER_ROTATION_180) | | The rotation value for the framebuffer device (eg FRAMEBUFFER_ROTATION_180) | ||
|- | |- | ||
− | ! | + | ! Width |
| The width of the framebuffer in pixels | | The width of the framebuffer in pixels | ||
|- | |- | ||
− | ! | + | ! Height |
| The height of the framebuffer in pixels | | The height of the framebuffer in pixels | ||
|- | |- | ||
− | ! | + | ! Depth |
| The color depth (bits per pixel) for the framebuffer (eg FRAMEBUFFER_DEPTH_16) | | The color depth (bits per pixel) for the framebuffer (eg FRAMEBUFFER_DEPTH_16) | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to the new Framebuffer device or nil if the framebuffer device could not be created | | Pointer to the new Framebuffer device or nil if the framebuffer device could not be created | ||
|- | |- | ||
Line 504: | Line 512: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCreateSVGA(Address: | + | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCreateSVGA(Address:PtrUInt; const Name:String; Rotation,Width,Height,Depth:LongWord):PFramebufferDevice;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create, register and allocate a new PL110 Framebuffer device which can be accessed using the framebuffer API</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create, register and allocate a new PL110 Framebuffer device which can be accessed using the framebuffer API</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Address |
| The address of the PL110 registers | | The address of the PL110 registers | ||
|- | |- | ||
− | ! | + | ! Name |
| The text description of this device which will show in the device list (Optional) | | The text description of this device which will show in the device list (Optional) | ||
|- | |- | ||
− | ! | + | ! Rotation |
| The rotation value for the framebuffer device (eg FRAMEBUFFER_ROTATION_180) | | The rotation value for the framebuffer device (eg FRAMEBUFFER_ROTATION_180) | ||
|- | |- | ||
− | ! | + | ! Width |
| The width of the framebuffer in pixels | | The width of the framebuffer in pixels | ||
|- | |- | ||
− | ! | + | ! Height |
| The height of the framebuffer in pixels | | The height of the framebuffer in pixels | ||
|- | |- | ||
− | ! | + | ! Depth |
| The color depth (bits per pixel) for the framebuffer (eg FRAMEBUFFER_DEPTH_16) | | The color depth (bits per pixel) for the framebuffer (eg FRAMEBUFFER_DEPTH_16) | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to the new Framebuffer device or nil if the framebuffer device could not be created | | Pointer to the new Framebuffer device or nil if the framebuffer device could not be created | ||
|- | |- | ||
Line 539: | Line 547: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Framebuffer |
| The Framebuffer device to destroy | | The Framebuffer device to destroy | ||
|- | |- | ||
− | ! | + | ! Return |
| ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
|- | |- | ||
Line 557: | Line 565: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use FramebufferDeviceAllocate instead | + | | Not intended to be called directly by applications, use FramebufferDeviceAllocate instead. |
|- | |- | ||
|} | |} | ||
Line 569: | Line 577: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use FramebufferDeviceRelease instead | + | | Not intended to be called directly by applications, use FramebufferDeviceRelease instead. |
|- | |- | ||
|} | |} | ||
Line 581: | Line 589: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use FramebufferDevicBlank instead | + | | Not intended to be called directly by applications, use FramebufferDevicBlank instead. |
|- | |- | ||
|} | |} | ||
Line 588: | Line 596: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCommit(Framebuffer:PFramebufferDevice; Address | + | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferCommit(Framebuffer:PFramebufferDevice; Address:PtrUInt; Size,Flags:LongWord):LongWord;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of FramebufferDeviceCommit API for PL110 Framebuffer</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of FramebufferDeviceCommit API for PL110 Framebuffer</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use FramebufferDeviceCommit instead | + | | Not intended to be called directly by applications, use FramebufferDeviceCommit instead. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
Line 612: | Line 608: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function | + | <pre style="border: 0; padding-bottom:0px;">function PL110FramebufferSetOffsetEx(Framebuffer:PFramebufferDevice; X,Y:LongWord; Pan,Switch:Boolean):LongWord;</pre> |
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Implementation of FramebufferDeviceSetOffsetEx API for PL110 Framebuffer</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use | + | | Not intended to be called directly by applications, use FramebufferDeviceSetOffsetEx instead. |
|- | |- | ||
|} | |} |
Latest revision as of 03:45, 5 September 2023
Return to Unit Reference
Contents
[hide]Description
ARM PrimeCell PL110 Color LCD Controller Driver unit
The ARM PrimeCell PL110 Color LCD Controller is an AMBA compliant module that provides LCD display support for both TFT and STN displays in a variety of configurations.
While the controller supports TFT displays it differs from other TFT display controllers because it has a DMA interface to system memory rather than using SPI or other serial transfer protocols.
Currently this driver only supports the setup required for the QEMU VersatilePB target however it is possible to support additional configurations by adding more variations of the PL110FramebufferCreate functions (eg PL110FramebufferCreateSTN etc).
Note: The driver does not include support for FRAMEBUFFER_FLAG_SYNC as the QEMU emulation of the device does not provide interrupt support at present.
Constants
PL110_*
PL110_MODE_*
PL110_CLCD_*
PL110_CLCD_TIMING0_*
PL110_CLCD_TIMING1_*
PL110_CLCD_TIMING2_*
PL110_CLCD_TIMING3_*
PL110_CLCD_CONTROL_*
PL110_CONTROL_*
PL110_TIMING0_*
PL110_TIMING1_*
PL110_TIMING2_*
Type definitions
PL110 CLCD registers
PL110 framebuffer properties
Public variables
None defined
Function declarations
PL110 functions
function PL110FramebufferCreateVGA(Address:PtrUInt; const Name:String; Rotation,Width,Height,Depth:LongWord):PFramebufferDevice;
function PL110FramebufferCreateSVGA(Address:PtrUInt; const Name:String; Rotation,Width,Height,Depth:LongWord):PFramebufferDevice;
function PL110FramebufferDestroy(Framebuffer:PFramebufferDevice):LongWord;
PL110 framebuffer functions
function PL110FramebufferAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
function PL110FramebufferRelease(Framebuffer:PFramebufferDevice):LongWord;
function PL110FramebufferBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
function PL110FramebufferCommit(Framebuffer:PFramebufferDevice; Address:PtrUInt; Size,Flags:LongWord):LongWord;
function PL110FramebufferSetOffsetEx(Framebuffer:PFramebufferDevice; X,Y:LongWord; Pan,Switch:Boolean):LongWord;
Return to Unit Reference