x
Fork of FT810 by
Embed:
(wiki syntax)
Show/hide line numbers
FT_Gpu_Hal.h
00001 /*! 00002 * \file FT_GPU_HAL.h 00003 * 00004 00005 Curt added Load_raw 7/22/16 00006 00007 00008 00009 * \author FTDI 00010 * \date 2013.04.24 00011 * 00012 * Copyright 2013 Future Technology Devices International Limited 00013 * 00014 * Project: FT813 or EVE compatible silicon 00015 * File Description: 00016 * This file defines the generic APIs of host access layer for the FT813 or EVE compatible silicon. 00017 * Application shall access FT813 or EVE resources over these APIs. In addition, there are 00018 * some helper functions defined for FT813 coprocessor engine as well as host commands. 00019 * Rivision History: 00020 * ported to mbed by Peter Drescher, DC2PD 2014 00021 * 00022 */ 00023 00024 #ifndef FT_GPU_HAL_H 00025 #define FT_GPU_HAL_H 00026 00027 #include "mbed.h" 00028 #include "FT_DataTypes.h" 00029 00030 typedef enum { 00031 FT_GPU_I2C_MODE = 0, 00032 FT_GPU_SPI_MODE, 00033 00034 FT_GPU_MODE_COUNT, 00035 FT_GPU_MODE_UNKNOWN = FT_GPU_MODE_COUNT 00036 } FT_GPU_HAL_MODE_E; 00037 00038 typedef enum { 00039 OPENED, 00040 READING, 00041 WRITING, 00042 CLOSED, 00043 STATUS_COUNT, 00044 STATUS_ERROR = STATUS_COUNT 00045 } FT_GPU_HAL_STATUS_E; 00046 00047 typedef struct { 00048 ft_uint8_t reserved; 00049 } Ft_Gpu_App_Context_t; 00050 00051 typedef struct { 00052 /* Total number channels for libmpsse */ 00053 ft_uint32_t TotalChannelNum; 00054 } Ft_Gpu_HalInit_t; 00055 00056 typedef enum { 00057 FT_GPU_READ = 0, 00058 FT_GPU_WRITE, 00059 } FT_GPU_TRANSFERDIR_T; 00060 00061 00062 typedef struct { 00063 ft_uint32_t length; //IN and OUT 00064 ft_uint32_t address; 00065 ft_uint8_t *buffer; 00066 } Ft_Gpu_App_Transfer_t; 00067 00068 typedef struct { 00069 char name[50]; 00070 uint32_t addr; 00071 uint32_t size; 00072 uint16_t fmt; 00073 uint16_t w; 00074 uint16_t h; 00075 } Ft_Gpu_App_Bitmap_t; 00076 00077 class FT813 00078 { 00079 public: 00080 FT813(PinName mosi, 00081 PinName miso, 00082 PinName sck, 00083 PinName ss, 00084 PinName intr, 00085 PinName pd); 00086 00087 private: 00088 SPI _spi; 00089 DigitalOut _ss; 00090 DigitalOut _pd; 00091 InterruptIn _f800_isr; 00092 ft_uint16_t _count; 00093 ft_uint32_t _address; 00094 ft_uint32_t _addresses[64]; 00095 ft_uint16_t _bitmap_count; 00096 ft_uint32_t _orientation; 00097 ft_uint16_t _bitmapCount; 00098 ft_uint32_t _bitmapAddress; 00099 00100 Ft_Gpu_App_Bitmap_t _bitmaps[64]; 00101 00102 //uint32_t screenshot[800*480]; 00103 00104 00105 public: 00106 /* Global used for buffer optimization */ 00107 //Ft_Gpu_Hal_Context_t host,*phost; 00108 Ft_Gpu_App_Context_t app_header; 00109 ft_uint16_t cmd_fifo_wp; //coprocessor fifo write pointer 00110 ft_uint16_t dl_buff_wp; //display command memory write pointer 00111 FT_GPU_HAL_STATUS_E status; //OUT 00112 ft_void_t* hal_handle; //IN/OUT 00113 ft_uint32_t CmdBuffer_Index; 00114 ft_uint32_t DlBuffer_Index; 00115 ft_int16_t DispWidth; 00116 ft_int16_t DispHeight; 00117 ft_int16_t DispHCycle; 00118 ft_int16_t DispHOffset; 00119 ft_int16_t DispHSync0; 00120 ft_int16_t DispHSync1; 00121 ft_int16_t DispVCycle; 00122 ft_int16_t DispVOffset; 00123 ft_int16_t DispVSync0; 00124 ft_int16_t DispVSync1; 00125 ft_uint8_t DispPCLK; 00126 ft_char8_t DispSwizzle; 00127 ft_char8_t DispPCLKPol; 00128 00129 00130 ft_void_t BootupConfig(void); 00131 ft_bool_t Bootup(void); 00132 00133 00134 /*The basic APIs Level 1*/ 00135 ft_bool_t Init(); 00136 ft_bool_t Open(); 00137 00138 /*The APIs for reading/writing transfer continuously only with small buffer system*/ 00139 ft_void_t StartTransfer(FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00140 ft_uint8_t Transfer8(ft_uint8_t value); 00141 ft_uint16_t Transfer16(ft_uint16_t value); 00142 ft_uint32_t Transfer32(ft_uint32_t value); 00143 ft_void_t EndTransfer(); 00144 00145 /*Read & Write APIs for both burst and single transfer,depending on buffer size*/ 00146 ft_void_t Read(Ft_Gpu_App_Transfer_t *transfer); 00147 ft_void_t Write(Ft_Gpu_App_Transfer_t *transfer); 00148 00149 ft_void_t Close(); 00150 ft_void_t DeInit(); 00151 00152 /*Helper function APIs Read*/ 00153 ft_uint8_t Rd8(ft_uint32_t addr); 00154 ft_uint16_t Rd16(ft_uint32_t addr); 00155 ft_uint32_t Rd32(ft_uint32_t addr); 00156 00157 /*Helper function APIs Write*/ 00158 ft_void_t Wr8(ft_uint32_t addr, ft_uint8_t v); 00159 ft_void_t Wr16(ft_uint32_t addr, ft_uint16_t v); 00160 ft_void_t Wr32(ft_uint32_t addr, ft_uint32_t v); 00161 00162 /*******************************************************************************/ 00163 /*******************************************************************************/ 00164 /*APIs for coprocessor Fifo read/write and space management*/ 00165 ft_void_t Updatecmdfifo(ft_uint16_t count); 00166 ft_void_t WrCmd32(ft_uint32_t cmd); 00167 ft_void_t WrCmdBuf(ft_uint8_t *buffer,ft_uint16_t count); 00168 ft_void_t WaitCmdfifo_empty(); 00169 ft_void_t ResetCmdFifo(); 00170 ft_void_t CheckCmdBuffer(ft_uint16_t count); 00171 ft_void_t ResetDLBuffer(); 00172 00173 ft_void_t StartCmdTransfer(FT_GPU_TRANSFERDIR_T rw, ft_uint16_t count); 00174 ft_void_t Powercycle(ft_bool_t up); 00175 00176 00177 /*******************************************************************************/ 00178 /*******************************************************************************/ 00179 /*APIs for Host Commands*/ 00180 typedef enum { 00181 FT_GPU_INTERNAL_OSC = 0x48, //default 00182 FT_GPU_EXTERNAL_OSC = 0x44, 00183 } FT_GPU_PLL_SOURCE_T; 00184 typedef enum { 00185 FT_GPU_PLL_48M = 0x62, //default 00186 FT_GPU_PLL_36M = 0x61, 00187 FT_GPU_PLL_24M = 0x64, 00188 } FT_GPU_PLL_FREQ_T; 00189 00190 typedef enum { 00191 FT_GPU_ACTIVE_M = 0x00, 00192 FT_GPU_STANDBY_M = 0x41,//default 00193 FT_GPU_SLEEP_M = 0x42, 00194 FT_GPU_POWERDOWN_M = 0x50, 00195 } FT_GPU_POWER_MODE_T; 00196 00197 #define FT_GPU_CORE_RESET (0x68) 00198 00199 ft_int32_t hal_strlen(const ft_char8_t *s); 00200 ft_void_t Sleep(ft_uint16_t ms); 00201 ft_void_t ClockSelect(FT_GPU_PLL_SOURCE_T pllsource); 00202 ft_void_t PLL_FreqSelect(FT_GPU_PLL_FREQ_T freq); 00203 ft_void_t PowerModeSwitch(FT_GPU_POWER_MODE_T pwrmode); 00204 ft_void_t CoreReset(); 00205 //ft_void_t Ft_Gpu_Hal_StartTransfer( ,FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00206 ft_void_t WrMem(ft_uint32_t addr, const ft_uint8_t *buffer, ft_uint32_t length); 00207 ft_void_t WrMemFromFlash(ft_uint32_t addr,const ft_prog_uchar8_t *buffer, ft_uint32_t length); 00208 ft_void_t WrCmdBufFromFlash(FT_PROGMEM ft_prog_uchar8_t *buffer,ft_uint16_t count); 00209 ft_void_t RdMem(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint32_t length); 00210 ft_void_t WaitLogo_Finish(); 00211 ft_uint8_t TransferString(const ft_char8_t *string); 00212 ft_void_t HostCommand(ft_uint8_t cmd); 00213 ft_int32_t Dec2Ascii(ft_char8_t *pSrc,ft_int32_t value); 00214 00215 00216 ft_void_t DLstart(); 00217 ft_void_t Swap(); 00218 ft_void_t ColdStart(); 00219 ft_void_t Interrupt(ft_uint32_t ms); 00220 ft_void_t Append(ft_uint32_t ptr, ft_uint32_t num); 00221 ft_void_t RegRead(ft_uint32_t ptr, ft_uint32_t result); 00222 ft_void_t MemWrite(ft_uint32_t ptr, ft_uint32_t num); 00223 ft_void_t Inflate(ft_uint32_t ptr); 00224 ft_void_t LoadImage(ft_uint32_t ptr, ft_uint32_t options); 00225 ft_void_t MediaFifo(ft_uint32_t ptr, ft_uint32_t size); 00226 ft_void_t PlayVideo(ft_uint32_t opts); 00227 ft_void_t VideoStart(); 00228 ft_void_t VideoFrame(ft_uint32_t dst, ft_uint32_t ptr); 00229 ft_void_t Memcrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00230 ft_void_t MemZero(ft_uint32_t ptr, ft_uint32_t num); 00231 ft_void_t MemSet(ft_uint32_t ptr, ft_uint32_t value, ft_uint32_t num); 00232 ft_void_t Memcpy(ft_uint32_t dest, ft_uint32_t src, ft_uint32_t num); 00233 ft_void_t Button(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00234 ft_void_t Clock(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t h, ft_uint16_t m, ft_uint16_t s, ft_uint16_t ms); 00235 ft_void_t FgColor(ft_uint32_t c); 00236 ft_void_t BgColor(ft_uint32_t c); 00237 ft_void_t GradColor(ft_uint32_t c); 00238 ft_void_t Gauge(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t major, ft_uint16_t minor, ft_uint16_t val, ft_uint16_t range); 00239 ft_void_t Gradient(ft_int16_t x0, ft_int16_t y0, ft_uint32_t rgb0, ft_int16_t x1, ft_int16_t y1, ft_uint32_t rgb1); 00240 ft_void_t Keys(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00241 ft_void_t Progress(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00242 ft_void_t Scrollbar(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t size, ft_uint16_t range); 00243 ft_void_t Slider(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00244 ft_void_t Dial(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t val); 00245 ft_void_t Toggle(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t font, ft_uint16_t options, ft_uint16_t state, const ft_char8_t* s); 00246 ft_void_t Text(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00247 ft_void_t SetBase(ft_uint32_t base); 00248 ft_void_t Number(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, ft_int32_t n); 00249 ft_void_t LoadIdentity(); 00250 ft_void_t SetMatrix(); 00251 ft_void_t GetMatrix(ft_int32_t a, ft_int32_t b, ft_int32_t c, ft_int32_t d, ft_int32_t e, ft_int32_t f); 00252 ft_void_t GetPtr(ft_uint32_t result); 00253 ft_void_t GetProps(ft_uint32_t ptr, ft_uint32_t w, ft_uint32_t h); 00254 ft_void_t Scale(ft_int32_t sx, ft_int32_t sy); 00255 ft_void_t Rotate(ft_int32_t a); 00256 ft_void_t Translate(ft_int32_t tx, ft_int32_t ty); 00257 ft_void_t Calibrate(ft_uint32_t result); 00258 ft_void_t SetRotate(ft_uint32_t r); 00259 ft_void_t Spinner(ft_int16_t x, ft_int16_t y, ft_uint16_t style, ft_uint16_t scale); 00260 ft_void_t ScreenSaver(); 00261 ft_void_t Sketch(ft_int16_t x, ft_int16_t y, ft_uint16_t w, ft_uint16_t h, ft_uint32_t ptr, ft_uint16_t format); 00262 ft_void_t Stop(); 00263 ft_void_t SetFont(ft_uint32_t font, ft_uint32_t ptr); 00264 ft_void_t SetFont2(ft_uint32_t font, ft_uint32_t ptr, ft_uint32_t firstchar); 00265 ft_void_t SetScratch(ft_uint32_t handle); 00266 ft_void_t RomFont(ft_uint32_t font, ft_uint32_t rom_slot); 00267 ft_void_t Track(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t tag); 00268 ft_void_t Snapshot(ft_uint32_t ptr); 00269 ft_void_t Snapshot2(ft_uint32_t fmt, ft_uint32_t ptr, ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h); 00270 ft_void_t SetBitmap(ft_int32_t addr, ft_int16_t fmt, ft_uint16_t width, ft_uint16_t height); 00271 ft_void_t Logo(); 00272 00273 ft_void_t Bitmap_Transform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00274 00275 00276 ft_void_t SendCmd(ft_uint32_t cmd); 00277 ft_void_t SendStr(const ft_char8_t *s); 00278 ft_void_t StartFunc(ft_uint16_t count); 00279 // ft_void_t EndFunc(ft_uint16_t count); 00280 ft_void_t EndFunc(); 00281 00282 ft_void_t TouchTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00283 ft_void_t BitmapTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00284 ft_void_t MemCrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00285 00286 ft_uint16_t fifo_Freespace(); 00287 00288 ft_void_t DL(ft_uint32_t cmd); 00289 ft_void_t WrDlCmd_Buffer(ft_uint32_t cmd); 00290 ft_void_t Flush_DL_Buffer(); 00291 ft_void_t Flush_Co_Buffer(); 00292 ft_void_t fadeout(); 00293 ft_void_t fadein(); 00294 ft_void_t DLSwap(ft_uint8_t DL_Swap_Type); 00295 00296 ft_void_t Point(ft_int16_t x, ft_int16_t y, ft_uint16_t size); 00297 ft_void_t Line(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t width); 00298 ft_void_t Rect(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t corner); 00299 ft_void_t RectWH(ft_int16_t x0, ft_int16_t y0, ft_int16_t w, ft_int16_t h, ft_int16_t corner); 00300 ft_uint8_t LoadJpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00301 ft_uint8_t LoadPng(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00302 //Curt added Load_raw 7/22/16 00303 int LoadRaw(char* filename); 00304 int LoadRawFile(ft_uint32_t address, char* filename); 00305 00306 void FillBitmap(ft_int16_t bitmap_number); 00307 void ClearBitmapCount(void); 00308 ft_uint32_t ReadBigInt32(unsigned char* data, ft_uint32_t offset); 00309 00310 ft_uint8_t Jpg(char *jpg_filename, int x, int y); 00311 ft_uint8_t Png(char *png_filename, int x, int y); 00312 ft_uint8_t Png(char *png_filename, int x, int y, ft_int32_t address); 00313 00314 ft_uint8_t JpgSplash(char *jpg_filename, ft_uint8_t r, ft_uint8_t g, ft_uint8_t b); 00315 00316 ft_uint16_t CoProFIFO_FreeSpace(void); 00317 void Wait4CoProFIFO(ft_uint32_t room); 00318 void Wait4CoProFIFOEmpty(void); 00319 ft_uint8_t CheckIfCoProFIFOEmpty(void); 00320 ft_uint32_t WriteBlockRAM(ft_uint32_t Add, const ft_uint8_t *buff, ft_uint32_t count); 00321 00322 00323 ft_void_t Sound_ON(); 00324 ft_void_t Sound_OFF(); 00325 00326 // int Load_jpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size,ft_uint32_t address); 00327 00328 ft_void_t Calibrate(); 00329 ft_uint8_t read_calibrate_reg(ft_uint8_t i); 00330 ft_uint32_t read_calibrate_reg32(ft_uint8_t i); 00331 ft_void_t read_calibrate(ft_uint8_t data[24]); 00332 ft_void_t write_calibrate(ft_uint8_t data[24]); 00333 ft_void_t write_calibrate32(ft_uint32_t data[6]); 00334 00335 ft_uint32_t color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00336 ft_uint32_t clear_color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00337 00338 void SetBacklight(ft_uint16_t brightness); 00339 00340 void Tag(ft_uint8_t s); 00341 void ClearTag(ft_uint8_t s); 00342 void TagMask(ft_uint8_t mask); 00343 void BitmapLayoutH(ft_uint8_t linestride, ft_uint8_t height); 00344 void BitmapSizeH(ft_uint8_t width, ft_uint8_t height); 00345 00346 ft_void_t SetLoadAddress(ft_uint32_t address); 00347 ft_void_t SetBitmapCount(ft_uint8_t count); 00348 ft_uint32_t GetBitmapAddress(ft_uint8_t count); 00349 void SetThemeDefaultColor(void); 00350 void SetThemeColor(ft_uint32_t c); 00351 void ShowCalibrationInCode(void); 00352 void SetOrientation(ft_uint8_t orientation); 00353 void ShowBitmap(ft_uint8_t bitmap, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00354 void ShowBitmapAtAddress(ft_uint32_t addr, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00355 int GetImageIndexFromName(char *name); 00356 int ResetInflateFileBitmap(void); 00357 uint32_t GetRamUsage(void); 00358 uint16_t GetRamNoOfBitmaps(void); 00359 int LoadInflateFileBitmap(char *name, uint16_t fmt, uint16_t w, uint16_t h); 00360 int ShowBitmapByName(char *name, uint16_t w, uint16_t h); 00361 uint16_t GetTouchedTag(void); 00362 uint16_t GetTouchedTag(uint8_t point_number); 00363 uint8_t GetTag(void); 00364 uint16_t GetTagX(void); 00365 uint16_t GetTagY(void); 00366 uint8_t GetTouchTag(void); 00367 uint16_t GetTouchTagX(void); 00368 uint16_t GetTouchTagY(void); 00369 uint16_t GetTouchConfig(void); 00370 void SetTouchConfig(uint16_t TouchConfigVal); 00371 00372 void screenShot(void); 00373 00374 int LoadRawFile(ft_uint32_t address, const char *filename); 00375 int LoadInflateFile(ft_uint32_t address, const char *filename); 00376 int LoadImageFile(ft_uint32_t address, const char *filename); 00377 ft_void_t SetEndAddressForSize(ft_uint32_t addr); 00378 00379 ft_void_t Wr8s(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint8_t length); 00380 00381 }; // end of class 00382 00383 #endif /*FT_GPU_HAL_H*/
Generated on Tue Jul 19 2022 11:45:29 by
![doxygen](doxygen.png)