
Added initial support Xilinx Embedded Software. Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
229 lines
8.9 KiB
C
Executable file
229 lines
8.9 KiB
C
Executable file
/******************************************************************************
|
|
*
|
|
* Copyright (C) 2008 - 2014 Xilinx, Inc. All rights reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* Use of the Software is limited solely to applications:
|
|
* (a) running on a Xilinx device, or
|
|
* (b) that interact with a Xilinx device through a bus or interconnect.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* XILINX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
|
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*
|
|
* Except as contained in this notice, the name of the Xilinx shall not be used
|
|
* in advertising or otherwise to promote the sale, use or other dealings in
|
|
* this Software without prior written authorization from Xilinx.
|
|
*
|
|
******************************************************************************/
|
|
/***************************************************************************/
|
|
/**
|
|
*
|
|
* @file xtft.h
|
|
*
|
|
* This header file contains the definitions and declarations for the
|
|
* high level driver to access the Xilinx TFT Controller Device.
|
|
*
|
|
* The device has the capability of displaying data onto a 640*480 VGA TFT
|
|
* screen. It can take up to 256K colors. There is no interrupt mode.
|
|
*
|
|
* The functions XTft_Setpixel and XTft_Getpixel are provided in the driver
|
|
* to write to and read from the individual pixels, the color values.
|
|
*
|
|
* These are generally stored in the assigned 2MB Video Memory which is
|
|
* configurable.
|
|
*
|
|
* Video Memory stores each pixel value in 32bits. Out of this 2MB memory which
|
|
* can hold 1024 pixels per line and 512 lines per frame data, only 640 pixels
|
|
* per line and 480 lines per frame are used.
|
|
*
|
|
* Each base color Red, Green, Blue is encoded using 6 bits which sums up to
|
|
* 18bits which is stored in the Dual port BRAM.
|
|
*
|
|
*
|
|
* <b>Initialization & Configuration</b>
|
|
*
|
|
* The XTft_Config structure is used by the driver to configure itself. This
|
|
* configuration structure is typically created by the tool-chain based on HW
|
|
* build properties.
|
|
*
|
|
* To support multiple runtime loading and initialization strategies employed
|
|
* by various operating systems, the driver instance can be initialized as
|
|
* follows:
|
|
*
|
|
* - XTft_CfgInitialize(InstancePtr, CfgPtr, BaseAddress) - Uses a
|
|
* configuration structure provided by the caller. If running in a system
|
|
* with address translation, the provided virtual memory base address
|
|
* replaces the physical address present in the configuration structure.
|
|
*
|
|
* <b>Interrupts</b>
|
|
*
|
|
* The TFT device supports a single interrupt which is generated for a Vsync
|
|
* pulse.
|
|
*
|
|
* This driver does not provide a Interrupt Service Routine (ISR) for the device.
|
|
* It is the responsibility of the application to provide one if needed.
|
|
*
|
|
* <b>RTOS Independence</b>
|
|
*
|
|
* This driver is intended to be RTOS and processor independent. It works
|
|
* with physical addresses only. Any needs for dynamic memory management,
|
|
* threads or thread mutual exclusion, virtual memory, or cache control must
|
|
* be satisfied by the layer above this driver.
|
|
*
|
|
*
|
|
* <pre>
|
|
* MODIFICATION HISTORY:
|
|
*
|
|
* Ver Who Date Changes
|
|
* ----- ---- -------- -----------------------------------------------
|
|
* 1.00a sg 03/24/08 First release
|
|
* 2.00a ktn 07/06/09 Added XTft_IntrEnable(), XTft_IntrDisable()and,
|
|
* XTft_GetVsyncStatus() functions to access newly added
|
|
* Interrupt Enable and Status Register.
|
|
* 3.00a ktn 10/22/09 Updated driver to use the HAL APIs/macros.
|
|
* Removed the macros XTft_mSetPixel and XTft_mGetPixel.
|
|
* 3.00a bss 01/16/12 Updated driver to remove warnings from asserts.
|
|
* 3.01a sg 05/30/12 Corrected the brace error introduced in
|
|
* XTft_GetPixel while changing it from macro to
|
|
* function for CR 647750.
|
|
* 3.02a bss 11/30/12 CR 690338 - Corrected the brace error introduced in
|
|
* XTft_GetPixel for CR 647750.
|
|
* 4.00a bss 01/25/13 Added support for AXI TFT controller, this driver
|
|
* can only be used for AXI TFT controller
|
|
* XTft_WriteReg and XTft_ReadReg functions are updated
|
|
* Removed all functionality associated with DCR access
|
|
* PlbAccess and DcrBaseAddr are removed from the
|
|
* XTft_Config config structure
|
|
* 4.01a bss 11/01/13 Modified driver tcl to retrieve C_BASEADDR/C_HIGHADDR
|
|
* CR#757359.
|
|
* 5.0 adk 19/12/13 Updated as per the New Tcl API's
|
|
*</pre>
|
|
*
|
|
****************************************************************************/
|
|
#ifndef XTFT_H /* prevent circular inclusions */
|
|
#define XTFT_H /* by using protection macros */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/***************************** Include Files *******************************/
|
|
#include "xstatus.h"
|
|
#include "xtft_hw.h"
|
|
|
|
/************************** Constant Definitions ***************************/
|
|
/**
|
|
* As the first bitmap available in the Character Bitmap array is "space"
|
|
* whose value is 32 in the ASCII character table, this offset enables us to
|
|
* move to this first character in the array. To achieve this we subtract
|
|
* this offset from the char value actually received to the XTft_WriteChar
|
|
* function. Similarly to move to any other character this offset must be
|
|
* subtracted.
|
|
*/
|
|
#define XTFT_ASCIICHAR_OFFSET 32
|
|
|
|
/**
|
|
* The default color is white for foreground and black for background.
|
|
* These values can range from 0 to 0xFFFFFFFF as each color is ranging
|
|
* from 0 to 3F. The default value for column and row is 0.
|
|
*/
|
|
#define XTFT_DEF_FGCOLOR 0x00FFFFFF /**< Foreground Color - White */
|
|
#define XTFT_DEF_BGCOLOR 0x0 /**< Background Color - Black */
|
|
#define XTFT_DEF_COLVAL 0x0 /**< Default Column Value */
|
|
#define XTFT_DEF_ROWVAL 0x0 /**< Default Row Value */
|
|
|
|
/**************************** Type Definitions *****************************/
|
|
|
|
/**
|
|
* This structure holds the Device base address, video memory base address
|
|
* and Unique identifier of the device.
|
|
*/
|
|
typedef struct {
|
|
|
|
u16 DeviceId; /**< Unique ID of device */
|
|
u32 BaseAddress; /**< Base address of device */
|
|
u32 VideoMemBaseAddr; /**< Video Memory Base address */
|
|
} XTft_Config;
|
|
|
|
|
|
/**
|
|
* This structure is the base for whole of the operations that are to be
|
|
* performed on the TFT screen. With this we will get a handle to the driver
|
|
* through which we access different members like base address, deviceID
|
|
* and using them we navigate, fill colors etc.
|
|
*/
|
|
typedef struct {
|
|
|
|
XTft_Config TftConfig; /**< Instance of Config Structure */
|
|
u32 IsReady; /**< Status of Instance */
|
|
u32 ColVal; /**< Column position */
|
|
u32 RowVal; /**< Row position */
|
|
u32 FgColor; /**< Foreground Color */
|
|
u32 BgColor; /**< Background Color */
|
|
|
|
} XTft;
|
|
|
|
/***************** Macros (Inline Functions) Definitions *******************/
|
|
|
|
/************************** Function Prototypes ****************************/
|
|
|
|
/*
|
|
* Initialization function in xtft_sinit.c.
|
|
*/
|
|
XTft_Config *XTft_LookupConfig(u16 DeviceId);
|
|
|
|
/*
|
|
* Functions for basic driver operations in xtft.c.
|
|
*/
|
|
int XTft_CfgInitialize(XTft *InstancePtr, XTft_Config *ConfigPtr,
|
|
u32 EffectiveAddr);
|
|
|
|
void XTft_SetPos(XTft *InstancePtr, u32 ColVal, u32 RowVal);
|
|
void XTft_SetPosChar(XTft *InstancePtr, u32 ColVal, u32 RowVal);
|
|
void XTft_SetColor(XTft *InstancePtr, u32 FgColor, u32 BgColor);
|
|
void XTft_SetPixel(XTft *InstancePtr, u32 ColVal, u32 RowVal, u32 PixelVal);
|
|
void XTft_GetPixel(XTft *InstancePtr, u32 ColVal, u32 RowVal, u32* PixelVal);
|
|
|
|
void XTft_Write(XTft *InstancePtr, u8 CharValue);
|
|
|
|
void XTft_Scroll(XTft *InstancePtr);
|
|
void XTft_ClearScreen(XTft *InstancePtr);
|
|
void XTft_FillScreen(XTft* InstancePtr, u32 ColStartVal,
|
|
u32 RowStartVal,u32 ColEndVal, u32 RowEndVal,
|
|
u32 PixelVal);
|
|
|
|
void XTft_EnableDisplay(XTft *InstancePtr);
|
|
void XTft_DisableDisplay(XTft *InstancePtr);
|
|
void XTft_ScanReverse(XTft* InstancePtr);
|
|
void XTft_ScanNormal(XTft* InstancePtr);
|
|
void XTft_SetFrameBaseAddr(XTft *InstancePtr, u32 NewFrameBaseAddr);
|
|
void XTft_WriteReg(XTft* InstancePtr, u32 RegOffset, u32 Data);
|
|
u32 XTft_ReadReg(XTft* InstancePtr, u32 RegOffset);
|
|
void XTft_IntrEnable(XTft* InstancePtr);
|
|
void XTft_IntrDisable(XTft* InstancePtr);
|
|
int XTft_GetVsyncStatus(XTft* InstancePtr);
|
|
|
|
/************************** Variable Definitions ***************************/
|
|
|
|
/************************** Function Definitions ***************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* XTFT_H */
|
|
|