From 4d06ef9145a3d7cb7fca99cd4dd6a48a02689e81 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 23 May 2017 09:57:16 +0200 Subject: [PATCH] Adding RA6963 driver --- changelog.txt | 819 ++++++++++++------------ drivers/gdisp/RA6963/board_RA6963.h | 320 +++++++++ drivers/gdisp/RA6963/gdisp_lld_RA6963.c | 407 ++++++++++++ drivers/gdisp/RA6963/gdisp_lld_config.h | 25 + drivers/gdisp/readme.txt | 80 +-- 5 files changed, 1203 insertions(+), 448 deletions(-) create mode 100755 drivers/gdisp/RA6963/board_RA6963.h create mode 100755 drivers/gdisp/RA6963/gdisp_lld_RA6963.c create mode 100755 drivers/gdisp/RA6963/gdisp_lld_config.h diff --git a/changelog.txt b/changelog.txt index 9de5bdd7..88d9a5a5 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,409 +1,410 @@ -***************************************************************************** -*** Releases *** -***************************************************************************** - -*** Changes after 2.7 *** -FEATURE: Added support for 128x32 SSD1306 based displays -FIX: Fixed recursion bug in console history -FIX: Multithreading issue with slow window redraws and large images -FIX: Ensure valid thread stack sizes on platforms where it matters -FEATURE: Added support for a GFILE user provided file system -FEATURE: Added gwinListItemSetText() to replace text in a GWIN list item -FEATURE: Added GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE configuration option -FEATURE: Added GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE configuration option -FEATURE: Added GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option -FEATURE: Added GDISP_IMAGE_PNG_Z_BUFFER_SIZE configuration option -FEATURE: Added GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE configuration option -FIX: Fixed extra dots when drawing anti-aliased fonts with wordwrap -FEATURE: Increase non-UTF8 font support to 0 to 255 rather than just the true ascii set -FEATURE: Added Fb24bpp driver for RGB888 and BGR888 packed framebuffer displays -FEATURE: Added UC8173 driver -FEATURE: Added complete support for Altera Terasic MAX10 NEEK board -FEATURE: Significantly improved the FreeRTOS port -FEATURE: Added support for operating system initialisation in FreeRTOS -FEATURE: Added GFX_OS_CALL_UGFXMAIN configuration option to allow uGFXMain() to be automatically called -FEATURE: Added GFX_OS_UGFXMAIN_STACKSIZE configuration option to control uGFXMain() stack size -FIX: Fixed where a font with more than 255 glyphs could fail to display some glyphs -FIX: Fixed where a font with a large x baseline could be incorrectly clipped or word-wrapped -IMPROVE: Significantly decrease the stack usage required for word-wrapping -FEATURE: Added justifyTop, justifyMiddle & justifyBottom text justification to GDISP -FEATURE: Added justifyWordWrap, justifyNoWordWrap text justification to GDISP (requires GDISP_NEED_TEXT_WORDWRAP) -FEATURE: Added justifyPad, justifyNoPad text justification to GDISP -FEATURE: Added GDISP_NEED_TEXT_BOXPADLR and GDISP_NEED_TEXT_BOXPADTB configuration options -FIX: Fixed an issue on FreeRTOS where thread stacks were being created too large -FEATURE: Added UC1601s driver -FIX: Fixed issues with the STM746-Discovery board with ChibiOS -FEATURE: Added partial definition for the STM32F469i-Discovery board -FIX: Fixed issue where the variable type of the syncflags of the STM32LTDC driver was too small -FEATURE: Added KS0108 driver - - -*** Release 2.7 *** -FEATURE: Added EXC7200 driver -FEATURE: Added STM32F439i-EVAL board files -FIX: Fixed crash when passing NULL to gwinSetStyle() -FIX: Fixed potential crash when GDISP_NEED_TEXT_WORDWRAP is turned on -FEATURE: Added SDL driver -FEATURE: Added ILI9225 driver -FEATURE: Added ST7735 driver -FEATURE: Added Linux event input driver -FIX: Fixed an issue with color formats in Linux-Framebuffer board files -FIX: Fixed and improving arc rendering functions -FIX: Preventing possible crash when no valid GWIN default font has been set -FIX: Updating Windows binaries of the font encoder to improve compatibility -FIX: Fixed progressbar bounds checking and decrementing -FEATURE: Added gdispFillDualCircle() -FIX: Fixed an issue in the filled polygon drawing function which caused irregularities -FEATURE: Added high-level functions to modify image color palettes -FIX: Improving gdispDrawThickLine() -FEATURE: Added gdispAddFont() for adding a dynamic font to the permanent font list -FEATURE: Added gmiscHittestPoly() for checking whether a point is inside of a polygon -FIX: Fixed strange multi-thread issues in GEVENT -FEATURE: Added ILI9488 driver -FEATURE: Added the ability to display the detected compiler -FIX: Fixed an illegal instruction in the Cortex M0 task switcher -FEATURE: Added RAW32 task switching functions which work with ARMCC (the compiler used by Keil) for Cortex M0,M1,M3,M4 and M7 -FEATURE: Added gdispGDrawThickArc() -FIX: Fixed a memory merging issue with the RAW32 memory allocator -FIX: Update RAW32 libc threads support for more recent versions of the MinGW compiler - - -*** Release 2.6 *** -FIX: Fixed bug where the list item count wasn't decremented when an item was removed -FEATURE: Added options GFILE_FATFS_EXTERNAL_LIB and GFILE_PETITFSFS_EXTERNAL_LIB -FEATURE: Added FT6x06 driver -FIX: Fixed issue in STM32F746G-Discovery board file that resulted in bad color reproduction -FEATURE: Added gwinPrintg() -FIX: Fixed sprintg and related functions handling of NULL pointers. -FIX: Fixed width calculation of gdispGDrawString() and gdispGFillString(). -FEATURE: Added QImage display driver. -FEATURE: Added QWidget touch driver -FEATURE: Added support for Qt as a GOS platform -FEATURE: Added ability to set a parent for a win32 ugfx emulator window -FEATURE: Added ability to inject mouse events for a Win32 ugfx emulator window -FEATURE: Added ability to turn on and off mouse processing for a win32 ugfx emulator window -FEATURE: Added ability to capture mouse events on the win32 ugfx emaultor window -FIX: Fixed issue where children of (nested) containers were not properly handled when callin gwinRaise() -FEATURE: Automatically close all open files in gfileDeinit() -FEATURE: Added support for IAR and EDG compilers -FIX: Fixed crash when loading GIF image without enough memory available -FEATURE: Added games/minesweeper demo -FEATURE: Added games/justget10 demo - - -*** Release 2.5 *** -FEATURE: Added support for numerous compilers -FIX: Improving STM32LTDC driver -FEATURE: Added support for NIOS-II platform -FEATURE: Added Altera-MAX10-NEEK board support -FIX: Vastly improving keyboard widget default rendering -FEATURE: Added ILI9342 driver -FIX: Fixing issues where wrong 'progress' color from widget style palette was used -FEATURE: Added GWIN_FRAME_KEEPONCLOSE flag to prevent destruction of a frame on close -FEATURE: Added support for PNG images -FEATURE: Added new module 'GTRANS' which allows handling application translations -FEATURE: Added SSD1848 driver - - -*** Release 2.4 *** -FIX: Add missing stm32m3 cpu makefile option. Update doc to match. -FEATURE: Added ability to compile ugfx as a single file. Simply compile src/gfx_mk.c -FEATURE: Added GFXSINGLEMAKE=yes|no to the ugfx makefile to compile ugfx as a single file. -FEATURE: New board STM32F746G-Discovery -FEATURE: New gdisp driver STM32LTDC -FEATURE: Better support for Raw32 platforms -FEATURE: Renaming GFX_NO_OS_INIT to GFX_OS_NO_INIT -FEATURE: New demo applications/combo -FEATURE: Adding more font metrics (BaselineX and BaselineY) -FEATURE: Adding gdispGetStringWidthCount() -FEATURE: Implementing widget focusing. See gwinSetFocus() and gwinGetFocus() -FEATURE: Adding TextEdit widget -FEATURE: Added color to widget style for focused widgets -FEATURE: Added GWIN_FOCUS_HIGHLIGHT_WIDTH as an option in the configuration file -FEATURE: Added support for CMSIS RTOS -FEATURE: Added support for KEIL RTX -FEATURE: Replace all references to inline with a reference to GFXINLINE -FEATURE: Added config option GFX_NO_INLINE to run off inlining of ugfx functions. -FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStringBox() -FIX: Fixing issue in touchscreen calibration code -FEATURE: Added GFX_OS_PRE_INIT_FUNCTION for early hardware initialization -FEATURE: Added label rendering functions that allow to set text justification -FIX: Fixing GTIMER for high clock rate devices -FEATURE: Added GFX_COMPILER_KEIL and GFX_COMPILER_ARMCC macros - - -*** Release 2.3 *** -FEATURE: Added more events to the slider widget -FIX: Clean up visibility issues -FIX: Correct moving of containers -FIX: Fix GTIMER bug that could cause all timers to stop. -FIX: Various minor driver fixes -FEATURE: Add support for STM32 CCM memory with DMA in SSD1289 and SSD2119 -FEATURE: New Tabset GWIN widget -FEATURE: New keyboard driver interface with drivers for Win32 and X -FEATURE: Support for keyboard layouts for non-english keyboards -FEATURE: GDISP now supports pixmaps (in memory drawing) -FEATURE: Rename files to improve experience in certain brain-dead IDE's -FEATURE: Add a checkbox "Toggle Button" custom draw -FEATURE: Add Tetris as a game demo -FEATURE: Add HY-MiniSTM32V board support -FEATURE: Add GWIN feature to flash any window/widget -FIX: Lots of GDISP monochrome drivers fixed -FEATURE: Added TLS8204 GDISP driver -FIX: Fixes for the board files for Olimex SAM7EX256 -FEATURE: Add a number of UEXT connector board files for Olimex SAM7EX256 -FIX: Fix for error rounding in gdispFillConvexPoly() -FEATURE: Vastly improved gwin arrow button drawing -FIX: GINPUT toggle fixes -FIX: GFILE_ALLOW_FLOAT compile error fixed -FIX: GFILE_NEED_STDIO compile and emulation errors fixed -FEATURE: Added STMPE610 driver by lliypuk -FIX: Corrected self calibration code for driver STMPE811 -FEATURE: Added Mikromedia Plus STM32-M4 board based on work by lliypuk & inmarket -FIX: Work to improve the gdisp SSD1963 driver -FEATURE: Added SSD1351 gdisp driver -FEATURE: Added SSD1331 gdisp driver -FEATURE: Added arduino as a GOS supported operating system -FEATURE: Added additional pixel format's -FIX: Color components fixed for some strange compilers -FEATURE: Added GWIN virtual keyboard widget -FEATURE: Added gwinListSetSelected() -FEATURE: Added gwinListViewItem() -FIX: GDISP driver color conversion when GDISP_PIXEL_FORMAT != GDISP_LLD_PIXEL_FORMAT - - -*** Release 2.2 *** -FEATURE: Added nested containers demo -FEATURE: Revised GWIN redraw strategy -FEATURE: Added generic framebuffer driver -FEATURE: Added Linux-Framebuffer board definition -FEATURE: Added FatFS support for GFILE -FEATURE: Added gfileMount() and gfileUnmount() -FEATURE: Added gfileSync() -FEATURE: Added gwinDrawThickLine() -FEATURE: Added support for eCos -FEATURE: Added PCF8812 gdisp driver -FEATURE: Added PCD8544 gdisp driver -FEATURE: Added Raspberry Pi board support -FEATURE: Added R61505U gdisp driver -FIX: Fix threading issues in GEvent for callbacks -FEATURE: Added geventEventComplete() -FEATURE: Added support for the RawOS real time operating system -FEATURE: Operating System initialisation is now optional -FEATURE: Prevent mouse events going to obscured widgets -FEATURE: Add GFILE support for file lists -FEATURE: Add GFILE support for C strings as files -FEATURE: Add GFILE support for PetitFS -FEATURE: Added SPFD54124B GDISP driver by user shilow -FEATURE: Added GWIN GL3D window type -FEATURE: Generalised all GWIN events to use a common prefix structure. -FIX: Improve memory usage for the GWIN Frame widget. -FEATURE: Added transparent custom draws for GWIN containers and frame widgets -FEATURE: Added image custom draws for GWIN containers and frame widgets -FEATURE: Added GDRIVER infrastructure. Ported GDISP to use it. -FEATURE: Added gdispDrawArcSectors() and gdispFillArcSectors(). -FEATURE: Ported GINPUT MOUSE to GDRIVER infrastructure. -FEATURE: Mouse/Touch now support both pen and finger mode. -DEPRECATE: gwinAttachMouse() is now handled automaticly. -FEATURE: Added MAX11802 touch driver by user steved -FEATURE: Added STM32F429i-Discovery board support -FEATURE: Added DejaVuSans20 and DejaVuSans20_aa built-in fonts -FEATURE: Added MatrixFloat2D and MatrixFixed2D operations to GMISC -FEATURE: Added polygon drawing demo (with rotation, scaling and translation) - - -*** Release 2.1 *** -FIX: Significant improvements to the way the MCU touch driver works. -FEATURE: Add support for edge to edge touch calibration. -FEATURE: Added progressbar widget -FEATURE: Added gdispGDrawThickLine() by user jpa- -DEPRECATE: TDISP module removed -FIX: Console does not execute gwinPrintf() anymore if not visible -FEATURE: Added gwinGetColor() and gwinGetBgColor() -FEATURE: Console now has an optional backing store buffer (GWIN_CONSOLE_USE_HISTORY) -FEATURE: Added smooth scrolling to list widget -FEATURE: Increased performance of gwinListAddItem() -FEATURE: Added FreeRTOS port -FEATURE: Added gfxDeinit() -FEATURE: Allow touch screen calibration in any display orientation -FEATURE: New GFILE module to abstract File IO. -FEATURE: Image file handling changed to use new GFILE module. -DEPRECTATE: Old image opening functions deprecated. -FEATURE: Restructure and simplify the include path for GFX -FEATURE: Added LGDP4532 driver by user shilow -FIX: Updated board files to support api changes in ChibiOS/RT 2.6.4 -FEATURE: Support for ChibiOS/RT 3.x -FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() -FEATURE: Added generic ILI93xx driver by xlh1460 -FEATURE: Added gwinListEnableRender() -FEATURE: Added gwinLabelSetAttribute() -FEATURE: Complete restructure of the GAUDIN and GAUDOUT into a common GAUDIO module -FEATURE: Added a PWM audio play driver -FEATURE: Update GADC audio recording driver to new GAUDIO format -FEATURE: Added vs1053 audio play driver -FEATURE: Added GAUDIO wave-play demo -FEATURE: Added many GWIN simple demo's and updated the combined widget demo -FEATURE: Added gwinEnable() and gwinDisable() -FIX: Progressbar widget bug fix that could gwinProgressbarStop() to crash -FIX: Imagebox widget bug fix that could cause gwinImageOpenFile() to crash -FEATURE: GWIN containers such as "container" and "frame" which provides parent/children widget management -FEATURE: Added gdispContrastColor() -FEATURE: Added gwinShow() and gwinHide() -FEATURE: ChibiOS/RT 3.x support and example for the Mikromedia STM32-M4 board. - - -*** Release 2.0 *** -FEATURE: GDISP Streaming API and demos. -DEPRECATE: GDISP_NEED_ASYNC is now deprecated. -DEPRECATE: 3rd party boing demo is now deprecated (replaced by GDISP Streaming demo) -FIX: Remove GOS definitions from demo conf files so that it can be supplied by a makefile. -FEATURE: Repair GDISP low level driver interfaces so they can now be included in the doxygen documentation. -FEATURE: New driver interface for GDISP -FEATURE: Multiple display support -FEATURE: Multiple controller support -FEATURE: Application pixel format no longer has to match the low level driver pixel format. -FEATURE: Many more pixel formats are now supported. -FEATURE: Many performance optimisations -FEATURE: Vertical scrolling is now supported if the low level driver supports read_pixel. -FEATURE: Add gdispFlush() for those controllers that need it -FEATURE: Add GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH to automatically flush when required. -FEATURE: Add support for generic portrait and landscape orientation modes -FEATURE: Add macro GDISP_DEFAULT_ORIENTATION so an application can specify a default orientation. -FEATURE: Driver files renamed to allow compiles when all object files go in the same directory -FEATURE: New directory structure for board files. Predefined boards have all the hardware definitions predefined. -FEATURE: Board definotions, example projects and makefiles for Win32. -FEATURE: Board definitions, example projects and makefiles for X. -FEATURE: Board definitions, example projects and makefiles for the Olimex SAM7-EX256 board. -Feature: Board definitions, example projects and makefiles for the Olimex STM32-LCD board. -FEATURE: Board definitions, example projects and makefiles for the Mikromedia STM32-M4 board. -FEATURE: Board definitions, example projects and makefiles for the Marlin board. -FEATURE: New invsqrt() routine added to GMISC - - -*** Release 1.9 *** -FEATURE: GWIN list boxes. -FIX: POSIX port removed, now dedicated OS-X and Linux ports -FIX: Several bugfixes -FEATURE: mcufont integration -FEATURE: SSD1306 driver by user goeck -FEATURE: ST7565 driver by user sam0737 -FEATURE: ED060SC4 driver by user jpa- -FIX: SSD1289 area filling bug fix by user samofab -FEATURE: Added gwinListGetSelectedText() -FEATURE: Added gwinListSetScroll() -FEATURE: Added gwinLabelSetBorder() - - -*** Release 1.8 *** -FEATURE: Rename of the project from ChibiOS/GFX to uGFX -FEATURE: Moved from github.com to bitbucket.org -FEATURE: New website with a lot more of documentation -FEATURE: Introduced dedicated discussion forum -FEATURE: Complete rework of the widget manager (GWIN) -FEATURE: Added a lot of new widgets -FEATURE: Added gfxRealloc() to the GOS module -FIX: gfxHalt() fix for the Win32 port -FIX: Cleaned up board file mess - - -*** Release 1.7 *** -FEATURE: Added RA8875 GDISP driver -FEATURE: Added FT5x06 GINPUT/touch driver -FIX: Several bugfixes - - -*** Release 1.6 *** -FEATURE: Added ILI9325 driver - Thanks to Chris van Dongen aka _Sjaak -FEATURE: Added TDISP module -FIX: tdispGotoXY() renamed to tdispSetCursor() -FEATURE: Addition of GADC, GMISC, GAUDIN, GAUDOUT subsystems -FIX: Removal of the GDISP_LLD() macro -DEPRECATE: Removal of the GDISP VMT -FEATURE: Added SSD2119 GDISP driver -FEATURE: Added GWIN_BUTTON_LAZY_RELEASE macro to disable cancel feature of buttons -FEATURE: Implemented all four orientation modes for the ILI9320 GDISP driver -FIX: Renamed every '__inline' macro to 'inline' for compiler compatibilities -FEATURE: Supporting all standard functions in GDISP Nokia6610GE8 driver -FEATURE: Added STMPE811 GINPUT driver -FEATURE: Added gdispDrawPoly() and gdispFillConvexPoly() -FEATURE: Added arrow button style to GWIN buttons -FEATURE: Added the ability to specify a custom button drawing routine -FEATURE: SSD1963 rework by username 'fred' -FEATURE: Added Picture converter tool -FEATURE: Added slider widget -FEATURE: First MIPS32 (PIC32) board files contributed by user 'Dmytro' -FEATURE: Added gwinDraw() routine -FEATURE: Added GINPUT Dial support and driver using GADC -FEATURE: Simplified assigning inputs to buttons and sliders -FIX: Some fixes for the HD44780 TDISP driver by the user 'Frysk' -FEATURE: Added ILI9481 by user 'Abhishek' -FEATURE: Added enable/disable functions for widgets (Buttons) -FEATURE: Added HX8347D driver by user 'Eddie' -FEATURE: Added enhanced notepad demo by user 'Abhishek' -FEATURE: Added GOS module (including sub modules such as GQUEUE) -FEATURE: Added some functionalities to the TDISP module by user 'Frysk' - - -*** Release 1.5 *** -FEATURE: GEVENT - for passing event structures from Sources to Listeners -FEATURE: GTIMER - thread context based once-off and periodic timers. -FEATURE: GINPUT - extensible, multiple device-type, input sub-system. -FEATURE: GWIN - full button, console and graph support -FEATURE: Numerous touch calibration improvements -FEATURE: Win32 driver - now support gdisp & ginput mouse/touch/toggle -FEATURE: Win32 driver - full gdisp orientation support -FEATURE: ILI9320 GDISP driver -FEATURE: Nokia6610 GDISP driver split in to GE8 and GE12 variants -FEATURE: Many GDISP drivers changed to use a board interface definition -FEATURE: GFX source restructure with new gfx.h include file. -DEPRECATE: console deprecated - replaced with gwin functionality -DEPRECATE: graph deprecated - replaced with gwin functionality -DEPRECATE: touchscreen deprecated - replaced with ginput functionality -FEATURE: Numerous documentation improvements -FEATURE: Added a number of module demo and test programs -DEPRECATE: Remove of XPT2046 since full compatibility with ADS7843 - - -*** Release 1.4 *** -FIX: Nokia 6610 fix -FEATURE: New driver: Win32 -FEATURE: implementation of gdispFillArc() -FIX: Hardware accelerate Arc routines -FIX: Fix axis orientation for Arc routines -FEATURE: new gdisp rounded box routines -FEATURE: new gdispDrawStringBox() -FEATURE: GWIN infrastructure -FEATURE: now we fully support doxygen - - -*** Release 1.3 *** -FEATURE: added FSMC for SSD1289 / F4 -FEATURE: added calibration storage interface -FIX: bugfix in filling functions for SSD1289 -FEATURE: added point_t struct in gdisp.h -FEATURE: added graph module - - -*** Release 1.2 *** -FIX: orientation macros changed -FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek) -FEATURE: added TOUCHPAD_XY_INVERTED macro -FIX: struct cal renamed to struct cal_t -FIX: SCREEN_WIDTH and SCREEN_HEIGHT renamed to GDISP_SCREEN_WIDTH and GDISP_SCREEN_HEIGHT -FIX: struct TOUCHPAD_t renamed to struct TOUCHPADDriver_t -FIX: struct GConsole renamed to struct GConsole_t -FIX: lcdConsoleXXX() functions have been renamed to gfxConsoleXXX() -FEATURE: FSMC for SSD1289 F2/F4 - - -*** Release 1.1 *** -FIX: removed gdisp and touchpad prefix of driver directories -UPDATE: added SSD1963 driver -FIX: fixed Validation, VMT driver, console and BitBlit -FEATURE: added clipping support -FEATURE: addad gdispDrawArc() -FEATURE: added SSD1963 DMA support -FEATURE: added touchpad interface for storing calibration values (#define TOUCHPAD_STORE_CALIBRATION) -CHANGE: replaced every GDISP_XXX macro with GDISP_XXX -CHANGE: removed last digit of version number - +***************************************************************************** +*** Releases *** +***************************************************************************** + +*** Changes after 2.7 *** +FEATURE: Added support for 128x32 SSD1306 based displays +FIX: Fixed recursion bug in console history +FIX: Multithreading issue with slow window redraws and large images +FIX: Ensure valid thread stack sizes on platforms where it matters +FEATURE: Added support for a GFILE user provided file system +FEATURE: Added gwinListItemSetText() to replace text in a GWIN list item +FEATURE: Added GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE configuration option +FEATURE: Added GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE configuration option +FEATURE: Added GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option +FEATURE: Added GDISP_IMAGE_PNG_Z_BUFFER_SIZE configuration option +FEATURE: Added GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE configuration option +FIX: Fixed extra dots when drawing anti-aliased fonts with wordwrap +FEATURE: Increase non-UTF8 font support to 0 to 255 rather than just the true ascii set +FEATURE: Added Fb24bpp driver for RGB888 and BGR888 packed framebuffer displays +FEATURE: Added UC8173 driver +FEATURE: Added complete support for Altera Terasic MAX10 NEEK board +FEATURE: Significantly improved the FreeRTOS port +FEATURE: Added support for operating system initialisation in FreeRTOS +FEATURE: Added GFX_OS_CALL_UGFXMAIN configuration option to allow uGFXMain() to be automatically called +FEATURE: Added GFX_OS_UGFXMAIN_STACKSIZE configuration option to control uGFXMain() stack size +FIX: Fixed where a font with more than 255 glyphs could fail to display some glyphs +FIX: Fixed where a font with a large x baseline could be incorrectly clipped or word-wrapped +IMPROVE: Significantly decrease the stack usage required for word-wrapping +FEATURE: Added justifyTop, justifyMiddle & justifyBottom text justification to GDISP +FEATURE: Added justifyWordWrap, justifyNoWordWrap text justification to GDISP (requires GDISP_NEED_TEXT_WORDWRAP) +FEATURE: Added justifyPad, justifyNoPad text justification to GDISP +FEATURE: Added GDISP_NEED_TEXT_BOXPADLR and GDISP_NEED_TEXT_BOXPADTB configuration options +FIX: Fixed an issue on FreeRTOS where thread stacks were being created too large +FEATURE: Added UC1601s driver +FIX: Fixed issues with the STM746-Discovery board with ChibiOS +FEATURE: Added partial definition for the STM32F469i-Discovery board +FIX: Fixed issue where the variable type of the syncflags of the STM32LTDC driver was too small +FEATURE: Added KS0108 driver +FEATURE: Added RA6963 driver + + +*** Release 2.7 *** +FEATURE: Added EXC7200 driver +FEATURE: Added STM32F439i-EVAL board files +FIX: Fixed crash when passing NULL to gwinSetStyle() +FIX: Fixed potential crash when GDISP_NEED_TEXT_WORDWRAP is turned on +FEATURE: Added SDL driver +FEATURE: Added ILI9225 driver +FEATURE: Added ST7735 driver +FEATURE: Added Linux event input driver +FIX: Fixed an issue with color formats in Linux-Framebuffer board files +FIX: Fixed and improving arc rendering functions +FIX: Preventing possible crash when no valid GWIN default font has been set +FIX: Updating Windows binaries of the font encoder to improve compatibility +FIX: Fixed progressbar bounds checking and decrementing +FEATURE: Added gdispFillDualCircle() +FIX: Fixed an issue in the filled polygon drawing function which caused irregularities +FEATURE: Added high-level functions to modify image color palettes +FIX: Improving gdispDrawThickLine() +FEATURE: Added gdispAddFont() for adding a dynamic font to the permanent font list +FEATURE: Added gmiscHittestPoly() for checking whether a point is inside of a polygon +FIX: Fixed strange multi-thread issues in GEVENT +FEATURE: Added ILI9488 driver +FEATURE: Added the ability to display the detected compiler +FIX: Fixed an illegal instruction in the Cortex M0 task switcher +FEATURE: Added RAW32 task switching functions which work with ARMCC (the compiler used by Keil) for Cortex M0,M1,M3,M4 and M7 +FEATURE: Added gdispGDrawThickArc() +FIX: Fixed a memory merging issue with the RAW32 memory allocator +FIX: Update RAW32 libc threads support for more recent versions of the MinGW compiler + + +*** Release 2.6 *** +FIX: Fixed bug where the list item count wasn't decremented when an item was removed +FEATURE: Added options GFILE_FATFS_EXTERNAL_LIB and GFILE_PETITFSFS_EXTERNAL_LIB +FEATURE: Added FT6x06 driver +FIX: Fixed issue in STM32F746G-Discovery board file that resulted in bad color reproduction +FEATURE: Added gwinPrintg() +FIX: Fixed sprintg and related functions handling of NULL pointers. +FIX: Fixed width calculation of gdispGDrawString() and gdispGFillString(). +FEATURE: Added QImage display driver. +FEATURE: Added QWidget touch driver +FEATURE: Added support for Qt as a GOS platform +FEATURE: Added ability to set a parent for a win32 ugfx emulator window +FEATURE: Added ability to inject mouse events for a Win32 ugfx emulator window +FEATURE: Added ability to turn on and off mouse processing for a win32 ugfx emulator window +FEATURE: Added ability to capture mouse events on the win32 ugfx emaultor window +FIX: Fixed issue where children of (nested) containers were not properly handled when callin gwinRaise() +FEATURE: Automatically close all open files in gfileDeinit() +FEATURE: Added support for IAR and EDG compilers +FIX: Fixed crash when loading GIF image without enough memory available +FEATURE: Added games/minesweeper demo +FEATURE: Added games/justget10 demo + + +*** Release 2.5 *** +FEATURE: Added support for numerous compilers +FIX: Improving STM32LTDC driver +FEATURE: Added support for NIOS-II platform +FEATURE: Added Altera-MAX10-NEEK board support +FIX: Vastly improving keyboard widget default rendering +FEATURE: Added ILI9342 driver +FIX: Fixing issues where wrong 'progress' color from widget style palette was used +FEATURE: Added GWIN_FRAME_KEEPONCLOSE flag to prevent destruction of a frame on close +FEATURE: Added support for PNG images +FEATURE: Added new module 'GTRANS' which allows handling application translations +FEATURE: Added SSD1848 driver + + +*** Release 2.4 *** +FIX: Add missing stm32m3 cpu makefile option. Update doc to match. +FEATURE: Added ability to compile ugfx as a single file. Simply compile src/gfx_mk.c +FEATURE: Added GFXSINGLEMAKE=yes|no to the ugfx makefile to compile ugfx as a single file. +FEATURE: New board STM32F746G-Discovery +FEATURE: New gdisp driver STM32LTDC +FEATURE: Better support for Raw32 platforms +FEATURE: Renaming GFX_NO_OS_INIT to GFX_OS_NO_INIT +FEATURE: New demo applications/combo +FEATURE: Adding more font metrics (BaselineX and BaselineY) +FEATURE: Adding gdispGetStringWidthCount() +FEATURE: Implementing widget focusing. See gwinSetFocus() and gwinGetFocus() +FEATURE: Adding TextEdit widget +FEATURE: Added color to widget style for focused widgets +FEATURE: Added GWIN_FOCUS_HIGHLIGHT_WIDTH as an option in the configuration file +FEATURE: Added support for CMSIS RTOS +FEATURE: Added support for KEIL RTX +FEATURE: Replace all references to inline with a reference to GFXINLINE +FEATURE: Added config option GFX_NO_INLINE to run off inlining of ugfx functions. +FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStringBox() +FIX: Fixing issue in touchscreen calibration code +FEATURE: Added GFX_OS_PRE_INIT_FUNCTION for early hardware initialization +FEATURE: Added label rendering functions that allow to set text justification +FIX: Fixing GTIMER for high clock rate devices +FEATURE: Added GFX_COMPILER_KEIL and GFX_COMPILER_ARMCC macros + + +*** Release 2.3 *** +FEATURE: Added more events to the slider widget +FIX: Clean up visibility issues +FIX: Correct moving of containers +FIX: Fix GTIMER bug that could cause all timers to stop. +FIX: Various minor driver fixes +FEATURE: Add support for STM32 CCM memory with DMA in SSD1289 and SSD2119 +FEATURE: New Tabset GWIN widget +FEATURE: New keyboard driver interface with drivers for Win32 and X +FEATURE: Support for keyboard layouts for non-english keyboards +FEATURE: GDISP now supports pixmaps (in memory drawing) +FEATURE: Rename files to improve experience in certain brain-dead IDE's +FEATURE: Add a checkbox "Toggle Button" custom draw +FEATURE: Add Tetris as a game demo +FEATURE: Add HY-MiniSTM32V board support +FEATURE: Add GWIN feature to flash any window/widget +FIX: Lots of GDISP monochrome drivers fixed +FEATURE: Added TLS8204 GDISP driver +FIX: Fixes for the board files for Olimex SAM7EX256 +FEATURE: Add a number of UEXT connector board files for Olimex SAM7EX256 +FIX: Fix for error rounding in gdispFillConvexPoly() +FEATURE: Vastly improved gwin arrow button drawing +FIX: GINPUT toggle fixes +FIX: GFILE_ALLOW_FLOAT compile error fixed +FIX: GFILE_NEED_STDIO compile and emulation errors fixed +FEATURE: Added STMPE610 driver by lliypuk +FIX: Corrected self calibration code for driver STMPE811 +FEATURE: Added Mikromedia Plus STM32-M4 board based on work by lliypuk & inmarket +FIX: Work to improve the gdisp SSD1963 driver +FEATURE: Added SSD1351 gdisp driver +FEATURE: Added SSD1331 gdisp driver +FEATURE: Added arduino as a GOS supported operating system +FEATURE: Added additional pixel format's +FIX: Color components fixed for some strange compilers +FEATURE: Added GWIN virtual keyboard widget +FEATURE: Added gwinListSetSelected() +FEATURE: Added gwinListViewItem() +FIX: GDISP driver color conversion when GDISP_PIXEL_FORMAT != GDISP_LLD_PIXEL_FORMAT + + +*** Release 2.2 *** +FEATURE: Added nested containers demo +FEATURE: Revised GWIN redraw strategy +FEATURE: Added generic framebuffer driver +FEATURE: Added Linux-Framebuffer board definition +FEATURE: Added FatFS support for GFILE +FEATURE: Added gfileMount() and gfileUnmount() +FEATURE: Added gfileSync() +FEATURE: Added gwinDrawThickLine() +FEATURE: Added support for eCos +FEATURE: Added PCF8812 gdisp driver +FEATURE: Added PCD8544 gdisp driver +FEATURE: Added Raspberry Pi board support +FEATURE: Added R61505U gdisp driver +FIX: Fix threading issues in GEvent for callbacks +FEATURE: Added geventEventComplete() +FEATURE: Added support for the RawOS real time operating system +FEATURE: Operating System initialisation is now optional +FEATURE: Prevent mouse events going to obscured widgets +FEATURE: Add GFILE support for file lists +FEATURE: Add GFILE support for C strings as files +FEATURE: Add GFILE support for PetitFS +FEATURE: Added SPFD54124B GDISP driver by user shilow +FEATURE: Added GWIN GL3D window type +FEATURE: Generalised all GWIN events to use a common prefix structure. +FIX: Improve memory usage for the GWIN Frame widget. +FEATURE: Added transparent custom draws for GWIN containers and frame widgets +FEATURE: Added image custom draws for GWIN containers and frame widgets +FEATURE: Added GDRIVER infrastructure. Ported GDISP to use it. +FEATURE: Added gdispDrawArcSectors() and gdispFillArcSectors(). +FEATURE: Ported GINPUT MOUSE to GDRIVER infrastructure. +FEATURE: Mouse/Touch now support both pen and finger mode. +DEPRECATE: gwinAttachMouse() is now handled automaticly. +FEATURE: Added MAX11802 touch driver by user steved +FEATURE: Added STM32F429i-Discovery board support +FEATURE: Added DejaVuSans20 and DejaVuSans20_aa built-in fonts +FEATURE: Added MatrixFloat2D and MatrixFixed2D operations to GMISC +FEATURE: Added polygon drawing demo (with rotation, scaling and translation) + + +*** Release 2.1 *** +FIX: Significant improvements to the way the MCU touch driver works. +FEATURE: Add support for edge to edge touch calibration. +FEATURE: Added progressbar widget +FEATURE: Added gdispGDrawThickLine() by user jpa- +DEPRECATE: TDISP module removed +FIX: Console does not execute gwinPrintf() anymore if not visible +FEATURE: Added gwinGetColor() and gwinGetBgColor() +FEATURE: Console now has an optional backing store buffer (GWIN_CONSOLE_USE_HISTORY) +FEATURE: Added smooth scrolling to list widget +FEATURE: Increased performance of gwinListAddItem() +FEATURE: Added FreeRTOS port +FEATURE: Added gfxDeinit() +FEATURE: Allow touch screen calibration in any display orientation +FEATURE: New GFILE module to abstract File IO. +FEATURE: Image file handling changed to use new GFILE module. +DEPRECTATE: Old image opening functions deprecated. +FEATURE: Restructure and simplify the include path for GFX +FEATURE: Added LGDP4532 driver by user shilow +FIX: Updated board files to support api changes in ChibiOS/RT 2.6.4 +FEATURE: Support for ChibiOS/RT 3.x +FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() +FEATURE: Added generic ILI93xx driver by xlh1460 +FEATURE: Added gwinListEnableRender() +FEATURE: Added gwinLabelSetAttribute() +FEATURE: Complete restructure of the GAUDIN and GAUDOUT into a common GAUDIO module +FEATURE: Added a PWM audio play driver +FEATURE: Update GADC audio recording driver to new GAUDIO format +FEATURE: Added vs1053 audio play driver +FEATURE: Added GAUDIO wave-play demo +FEATURE: Added many GWIN simple demo's and updated the combined widget demo +FEATURE: Added gwinEnable() and gwinDisable() +FIX: Progressbar widget bug fix that could gwinProgressbarStop() to crash +FIX: Imagebox widget bug fix that could cause gwinImageOpenFile() to crash +FEATURE: GWIN containers such as "container" and "frame" which provides parent/children widget management +FEATURE: Added gdispContrastColor() +FEATURE: Added gwinShow() and gwinHide() +FEATURE: ChibiOS/RT 3.x support and example for the Mikromedia STM32-M4 board. + + +*** Release 2.0 *** +FEATURE: GDISP Streaming API and demos. +DEPRECATE: GDISP_NEED_ASYNC is now deprecated. +DEPRECATE: 3rd party boing demo is now deprecated (replaced by GDISP Streaming demo) +FIX: Remove GOS definitions from demo conf files so that it can be supplied by a makefile. +FEATURE: Repair GDISP low level driver interfaces so they can now be included in the doxygen documentation. +FEATURE: New driver interface for GDISP +FEATURE: Multiple display support +FEATURE: Multiple controller support +FEATURE: Application pixel format no longer has to match the low level driver pixel format. +FEATURE: Many more pixel formats are now supported. +FEATURE: Many performance optimisations +FEATURE: Vertical scrolling is now supported if the low level driver supports read_pixel. +FEATURE: Add gdispFlush() for those controllers that need it +FEATURE: Add GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH to automatically flush when required. +FEATURE: Add support for generic portrait and landscape orientation modes +FEATURE: Add macro GDISP_DEFAULT_ORIENTATION so an application can specify a default orientation. +FEATURE: Driver files renamed to allow compiles when all object files go in the same directory +FEATURE: New directory structure for board files. Predefined boards have all the hardware definitions predefined. +FEATURE: Board definotions, example projects and makefiles for Win32. +FEATURE: Board definitions, example projects and makefiles for X. +FEATURE: Board definitions, example projects and makefiles for the Olimex SAM7-EX256 board. +Feature: Board definitions, example projects and makefiles for the Olimex STM32-LCD board. +FEATURE: Board definitions, example projects and makefiles for the Mikromedia STM32-M4 board. +FEATURE: Board definitions, example projects and makefiles for the Marlin board. +FEATURE: New invsqrt() routine added to GMISC + + +*** Release 1.9 *** +FEATURE: GWIN list boxes. +FIX: POSIX port removed, now dedicated OS-X and Linux ports +FIX: Several bugfixes +FEATURE: mcufont integration +FEATURE: SSD1306 driver by user goeck +FEATURE: ST7565 driver by user sam0737 +FEATURE: ED060SC4 driver by user jpa- +FIX: SSD1289 area filling bug fix by user samofab +FEATURE: Added gwinListGetSelectedText() +FEATURE: Added gwinListSetScroll() +FEATURE: Added gwinLabelSetBorder() + + +*** Release 1.8 *** +FEATURE: Rename of the project from ChibiOS/GFX to uGFX +FEATURE: Moved from github.com to bitbucket.org +FEATURE: New website with a lot more of documentation +FEATURE: Introduced dedicated discussion forum +FEATURE: Complete rework of the widget manager (GWIN) +FEATURE: Added a lot of new widgets +FEATURE: Added gfxRealloc() to the GOS module +FIX: gfxHalt() fix for the Win32 port +FIX: Cleaned up board file mess + + +*** Release 1.7 *** +FEATURE: Added RA8875 GDISP driver +FEATURE: Added FT5x06 GINPUT/touch driver +FIX: Several bugfixes + + +*** Release 1.6 *** +FEATURE: Added ILI9325 driver - Thanks to Chris van Dongen aka _Sjaak +FEATURE: Added TDISP module +FIX: tdispGotoXY() renamed to tdispSetCursor() +FEATURE: Addition of GADC, GMISC, GAUDIN, GAUDOUT subsystems +FIX: Removal of the GDISP_LLD() macro +DEPRECATE: Removal of the GDISP VMT +FEATURE: Added SSD2119 GDISP driver +FEATURE: Added GWIN_BUTTON_LAZY_RELEASE macro to disable cancel feature of buttons +FEATURE: Implemented all four orientation modes for the ILI9320 GDISP driver +FIX: Renamed every '__inline' macro to 'inline' for compiler compatibilities +FEATURE: Supporting all standard functions in GDISP Nokia6610GE8 driver +FEATURE: Added STMPE811 GINPUT driver +FEATURE: Added gdispDrawPoly() and gdispFillConvexPoly() +FEATURE: Added arrow button style to GWIN buttons +FEATURE: Added the ability to specify a custom button drawing routine +FEATURE: SSD1963 rework by username 'fred' +FEATURE: Added Picture converter tool +FEATURE: Added slider widget +FEATURE: First MIPS32 (PIC32) board files contributed by user 'Dmytro' +FEATURE: Added gwinDraw() routine +FEATURE: Added GINPUT Dial support and driver using GADC +FEATURE: Simplified assigning inputs to buttons and sliders +FIX: Some fixes for the HD44780 TDISP driver by the user 'Frysk' +FEATURE: Added ILI9481 by user 'Abhishek' +FEATURE: Added enable/disable functions for widgets (Buttons) +FEATURE: Added HX8347D driver by user 'Eddie' +FEATURE: Added enhanced notepad demo by user 'Abhishek' +FEATURE: Added GOS module (including sub modules such as GQUEUE) +FEATURE: Added some functionalities to the TDISP module by user 'Frysk' + + +*** Release 1.5 *** +FEATURE: GEVENT - for passing event structures from Sources to Listeners +FEATURE: GTIMER - thread context based once-off and periodic timers. +FEATURE: GINPUT - extensible, multiple device-type, input sub-system. +FEATURE: GWIN - full button, console and graph support +FEATURE: Numerous touch calibration improvements +FEATURE: Win32 driver - now support gdisp & ginput mouse/touch/toggle +FEATURE: Win32 driver - full gdisp orientation support +FEATURE: ILI9320 GDISP driver +FEATURE: Nokia6610 GDISP driver split in to GE8 and GE12 variants +FEATURE: Many GDISP drivers changed to use a board interface definition +FEATURE: GFX source restructure with new gfx.h include file. +DEPRECATE: console deprecated - replaced with gwin functionality +DEPRECATE: graph deprecated - replaced with gwin functionality +DEPRECATE: touchscreen deprecated - replaced with ginput functionality +FEATURE: Numerous documentation improvements +FEATURE: Added a number of module demo and test programs +DEPRECATE: Remove of XPT2046 since full compatibility with ADS7843 + + +*** Release 1.4 *** +FIX: Nokia 6610 fix +FEATURE: New driver: Win32 +FEATURE: implementation of gdispFillArc() +FIX: Hardware accelerate Arc routines +FIX: Fix axis orientation for Arc routines +FEATURE: new gdisp rounded box routines +FEATURE: new gdispDrawStringBox() +FEATURE: GWIN infrastructure +FEATURE: now we fully support doxygen + + +*** Release 1.3 *** +FEATURE: added FSMC for SSD1289 / F4 +FEATURE: added calibration storage interface +FIX: bugfix in filling functions for SSD1289 +FEATURE: added point_t struct in gdisp.h +FEATURE: added graph module + + +*** Release 1.2 *** +FIX: orientation macros changed +FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek) +FEATURE: added TOUCHPAD_XY_INVERTED macro +FIX: struct cal renamed to struct cal_t +FIX: SCREEN_WIDTH and SCREEN_HEIGHT renamed to GDISP_SCREEN_WIDTH and GDISP_SCREEN_HEIGHT +FIX: struct TOUCHPAD_t renamed to struct TOUCHPADDriver_t +FIX: struct GConsole renamed to struct GConsole_t +FIX: lcdConsoleXXX() functions have been renamed to gfxConsoleXXX() +FEATURE: FSMC for SSD1289 F2/F4 + + +*** Release 1.1 *** +FIX: removed gdisp and touchpad prefix of driver directories +UPDATE: added SSD1963 driver +FIX: fixed Validation, VMT driver, console and BitBlit +FEATURE: added clipping support +FEATURE: addad gdispDrawArc() +FEATURE: added SSD1963 DMA support +FEATURE: added touchpad interface for storing calibration values (#define TOUCHPAD_STORE_CALIBRATION) +CHANGE: replaced every GDISP_XXX macro with GDISP_XXX +CHANGE: removed last digit of version number + diff --git a/drivers/gdisp/RA6963/board_RA6963.h b/drivers/gdisp/RA6963/board_RA6963.h new file mode 100755 index 00000000..a7e1426b --- /dev/null +++ b/drivers/gdisp/RA6963/board_RA6963.h @@ -0,0 +1,320 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/* RA6963 Driver + * Pinout: + * Version 1: + * 1 - Vee Negative Voltage Output + * 2 - GND GND + * 3 - +5V + * 4 - Vo LCD Driver Supply (10-20k Pot between +5V and Vee) + * 5 - /WR Write (Low active) + * 6 - /RD Read (Low active) + * 7 - /CE Chip Enable (Low active) + * 8 - C/D Command or Data + * 9 - /RST Reset (Low active) + * 10..17 - D0..7 + * 18 - FS Font Select + * 19 - A Backlight Anode (~4.3V) + * 20 - K Backlight Cathode (GND) + */ +#ifndef _GDISP_LLD_BOARD_H +#define _GDISP_LLD_BOARD_H + +// My Settings +#define RA6963_NEED_READ FALSE //works, but is very slow! +#define RA6963_HAS_RESET FALSE +#define RA6963_NEED_FONT_SELECT FALSE +#define RA6963_NEED_BACKLIGHT FALSE +#define RA6963_NEED_PWMBACKLIGHT FALSE +#define GDISP_SCREEN_HEIGHT 64 +#define GDISP_SCREEN_WIDTH 128 +#define GDISP_INITIAL_CONTRAST 50 +#define GDISP_INITIAL_BACKLIGHT 100 + +#define RA6963_delay(n) {asm("nop");asm("nop");asm("nop");asm("nop");} + +#define LINE_WR PAL_LINE(GPIOB, 8U) +#if RA6963_NEED_READ +#define LINE_RD PAL_LINE(GPIOB, 9U) +#endif +#define LINE_CE PAL_LINE(GPIOB, 10U) +#define LINE_CD PAL_LINE(GPIOB, 11U) +#if RA6963_HAS_RESET +#define LINE_RST PAL_LINE(GPIOB, 12U) +#endif +#define LINE_D0 PAL_LINE(GPIOB, 0U) +#define LINE_D1 PAL_LINE(GPIOB, 1U) +#define LINE_D2 PAL_LINE(GPIOB, 2U) +#define LINE_D3 PAL_LINE(GPIOB, 3U) +#define LINE_D4 PAL_LINE(GPIOB, 4U) +#define LINE_D5 PAL_LINE(GPIOB, 5U) +#define LINE_D6 PAL_LINE(GPIOB, 6U) +#define LINE_D7 PAL_LINE(GPIOB, 7U) +#if RA6963_NEED_FONT_SELECT +#define LINE_FS PAL_LINE(GPIOA, 13U) +#endif +#if RA6963_NEED_BACKLIGHT +#define LINE_BL PAL_LINE(GPIOA, 14U) +#endif + +typedef struct { + ioline_t WR; //Write PIN +#if RA6963_NEED_READ + ioline_t RD; //Read PIN (tie to +5V if not needed) +#endif + ioline_t CE; //Chip Enable PIN + ioline_t CD; //Command/Data Select PIN +#if RA6963_HAS_RESET + ioline_t RST; //Reset PIN (tie to +5V if not needed) +#endif + ioline_t D[8]; //Data PINs +#if RA6963_NEED_BACKLIGHT + ioline_t BL; //Backlight PIN +#endif +#if RA6963_NEED_FONT_SELECT + ioline_t FS; //Font Select PIN (tie to GND if not needed) +#endif +} lcd_pins_t; + +/*===========================================================================*/ +/* Driver local variables. */ +/*===========================================================================*/ +static const lcd_pins_t lcdpins = { + LINE_WR, +#if RA6963_NEED_READ + LINE_RD, +#endif + LINE_CE, + LINE_CD, +#if RA6963_HAS_RESET + LINE_RST, +#endif + { + LINE_D0, + LINE_D1, + LINE_D2, + LINE_D3, + LINE_D4, + LINE_D5, + LINE_D6, + LINE_D7 + }, +#if RA6963_NEED_BACKLIGHT + LINE_BL, +#endif +#if RA6963_NEED_FONT_SELECT + LINE_FS, +#endif +}; + +static GFXINLINE void init_board(GDisplay* g){ + (void) g; + g->board = 0; + int ii; +//################################DEBUG####################################### +#define DEB13_ON palClearLine(PAL_LINE(GPIOB, 13U)) +#define DEB13_OFF palSetLine(PAL_LINE(GPIOB, 13U)) +#define DEB14_ON palClearLine(PAL_LINE(GPIOB, 14U)) +#define DEB14_OFF palSetLine(PAL_LINE(GPIOB, 14U)) + + palSetLineMode(PAL_LINE(GPIOB, 13U), PAL_MODE_OUTPUT_PUSHPULL); + DEB13_OFF; + palSetLineMode(PAL_LINE(GPIOB, 14U), PAL_MODE_OUTPUT_PUSHPULL); + DEB14_OFF; + + //################################DEBUG####################################### + + palSetLineMode(lcdpins.WR, PAL_MODE_OUTPUT_PUSHPULL); + palSetLine(lcdpins.WR); +#if RA6963_NEED_READ + palSetLineMode(lcdpins.RD, PAL_MODE_OUTPUT_PUSHPULL); + palSetLine(lcdpins.RD); +#endif + palSetLineMode(lcdpins.CE, PAL_MODE_OUTPUT_PUSHPULL); + palSetLine(lcdpins.CE); + palSetLineMode(lcdpins.CD, PAL_MODE_OUTPUT_PUSHPULL); + palSetLine(lcdpins.CD); +#if RA6963_HAS_RESET + palSetLine(lcdpins.RST); + palSetLineMode(lcdpins.RST, PAL_MODE_OUTPUT_PUSHPULL); + +#endif + for(ii = 0; ii < 8; ii++) { + palSetLineMode(lcdpins.D[ii], PAL_MODE_OUTPUT_PUSHPULL); + palClearLine(lcdpins.D[ii]); + } +#if RA6963_NEED_BACKLIGHT +#if RA6963_NEED_PWMBACKLIGHT + palSetLineMode(lcdpins.BL, PAL_MODE_ALTERNATE(1)); +#else + palSetLineMode(lcdpins.BL, PAL_MODE_OUTPUT_PUSHPULL); +#endif +#endif +#if RA6963_NEED_FONT_SELECT + palSetLineMode(lcdpins.FS, PAL_MODE_OUTPUT_PUSHPULL); + palSetLine(lcdpins.FS); +#endif +} + +static GFXINLINE void post_init_board(GDisplay *g) { + (void) g; +} + +static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) { + (void) g; +#if RA6963_HAS_RESET //Make Hardware Reset + if (state) + palClearLine(lcdpins.RST); + else + palSetLine(lcdpins.RST); +#else + (void) state; +#endif +} + +static GFXINLINE void set_backlight(GDisplay *g, uint8_t percent) { + (void) g; + (void) percent; +#if RA6963_NEED_BACKLIGHT +#if RA6963_NEED_PWMBACKLIGHT + +#else + +#endif +#endif +} + +static GFXINLINE void acquire_bus(GDisplay *g) { + (void) g; +} + +static GFXINLINE void release_bus(GDisplay *g) { + (void) g; +} + + +#if RA6963_NEED_READ +static GFXINLINE uint8_t RA6963_busy_wait(uint8_t pattern, bool_t lh){ + + uint8_t data; + int ii; + + for(ii = 0; ii < 2; ii++) //Only interested in Bit 0 and 1 + palSetLineMode(lcdpins.D[ii], PAL_MODE_INPUT); //Set pads to input + + palClearLine(lcdpins.CE); + palClearLine(lcdpins.RD); + do{ + data = 0; + + for(ii = 0; ii < 2; ii++){ + if (palReadLine(lcdpins.D[ii]) == PAL_HIGH){ //Read output + data |= (1<priv) +#define POS (((g->p.x) / RA6963_FONT_WIDTH) + ((g->p.y) * RA6963_GRAPHIC_AREA)) +#endif +#ifndef GDISP_INITIAL_CONTRAST +#define GDISP_INITIAL_CONTRAST 50 +#endif +#ifndef GDISP_INITIAL_BACKLIGHT +#define GDISP_INITIAL_BACKLIGHT 100 +#endif + + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ +#ifndef write_data_repeat +#define write_data_repeat(g, data, count) { int i; for (i = 0; i < count; ++i) write_data (g, data); } +#endif + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { +#if (RA6963_NEED_READ == FALSE) + // The private area is the display surface. + g->priv = gfxAlloc(BUFFSZ); +#else + g->priv = 0; +#endif + // Initialise the board interface + init_board(g); + +#if RA6963_HAS_RESET //Make Hardware Reset + setpin_reset(g, TRUE); + gfxSleepMilliseconds(100); + setpin_reset(g, FALSE); +#endif + gfxSleepMilliseconds(50); + //RA6963 needs Data first THEN command! + + write_data(g, (uint8_t)RA6963_GRAPHIC_HOME); //0 + write_data(g, (uint8_t)(RA6963_GRAPHIC_HOME>>8)); //0 + write_cmd(g, RA6963_SET_GRAPHIC_HOME_ADDRESS); //0x42 + + write_data(g, (uint8_t)RA6963_GRAPHIC_AREA); //16 + write_data(g, 0); //0 + write_cmd(g, RA6963_SET_GRAPHIC_AREA); //0x43 + + write_data(g, (uint8_t)RA6963_TEXT_HOME); //0x00 + write_data(g, (uint8_t)(RA6963_TEXT_HOME>>8)); //0x04 = 0x400 + write_cmd(g, RA6963_SET_TEXT_HOME_ADDRESS); //0x40 + + write_data(g, (uint8_t)RA6963_TEXT_AREA); //16 + write_data(g, (uint8_t)(RA6963_TEXT_AREA>>8)); //0 + write_cmd(g, RA6963_SET_TEXT_AREA); //0x41 + +/* write_data(g, (uint8_t)RA6963_OFFSET_REGISTER); + write_data(g, 0); + write_cmd(g, RA6963_SET_OFFSET_REGISTER);*/ + + write_data(g, 0x00); + write_data(g, 0x00); + write_cmd(g, RA6963_SET_ADDRESS_POINTER); + + write_data(g, 0x00); + write_data(g, 0x00); + write_cmd(g, RA6963_SET_CURSOR_POINTER); + + + //write_cmd(g, RA6963_CURSOR_PATTERN_SELECT | RA6963_CURSOR_1_LINE); + write_cmd(g, RA6963_MODE_SET | RA6963_MODE_OR); + //write_cmd(g, RA6963_DISPLAY_MODE | RA6963_TEXT_DISPLAY_ON | RA6963_GRAPHIC_DISPLAY_ON); + write_cmd(g, RA6963_DISPLAY_MODE | RA6963_GRAPHIC_DISPLAY_ON); + + // Finish Init + post_init_board(g); +#if RA6963_NEED_BACKLIGHT + // Turn on the back-light + set_backlight(g, GDISP_INITIAL_BACKLIGHT); +#endif + // Initialise the GDISP structure + g->g.Width = GDISP_SCREEN_WIDTH; + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Orientation = GDISP_ROTATE_0; + g->g.Powermode = powerOn; + g->g.Backlight = GDISP_INITIAL_BACKLIGHT; + g->g.Contrast = GDISP_INITIAL_CONTRAST; + + return TRUE; +} + +static void set_viewport(GDisplay *g) { + if ((g->p.x >= GDISP_SCREEN_WIDTH) || (g->p.y >= GDISP_SCREEN_HEIGHT)) + return; // 0 + ( x / 8 ) + ( y * 16 ) + //uint16_t addr = (RA6963_GRAPHIC_HOME + ((g->p.x) / RA6963_FONT_WIDTH) + ((g->p.y) * RA6963_GRAPHIC_AREA)); + uint16_t addr = (RA6963_GRAPHIC_HOME + ((g->p.x >> 3) + (g->p.y << 4))); +#warning "check function set_viewport about the shift operations if you change the resolution!" + write_data(g, (uint8_t)addr); + write_data(g, (uint8_t)(addr>>8)); + write_cmd(g, RA6963_SET_ADDRESS_POINTER); +} + +LLDSPEC void gdisp_lld_write_color(GDisplay *g) { + uint8_t temp; + +#if (RA6963_NEED_READ == FALSE) + temp = RAM(g)[POS]; +#else + temp = read_data(g); +#endif + + if (g->p.color != White) { + temp |= (1 << (RA6963_FONT_WIDTH - 1 - ((g->p.x) % RA6963_FONT_WIDTH))); + } + else { + temp &= ~(1 << (RA6963_FONT_WIDTH - 1 - ((g->p.x) % RA6963_FONT_WIDTH))); + } + + write_data(g, temp); +#if (RA6963_NEED_READ == FALSE) + RAM(g)[POS] = temp; +#endif + //write_cmd(g, RA6963_DATA_WRITE_AND_INCREMENT); + write_cmd(g, RA6963_DATA_WRITE_AND_NONVARIALBE); + +} + +LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) { + set_viewport(g); + gdisp_lld_write_color(g); +} + +#if GDISP_HARDWARE_STREAM_WRITE +LLDSPEC void gdisp_lld_write_start(GDisplay *g) { + //acquire_bus(g); + set_viewport(g); +} + +LLDSPEC void gdisp_lld_write_stop(GDisplay *g) { + //release_bus(g); +} +#endif + +#if GDISP_HARDWARE_STREAM_READ +LLDSPEC void gdisp_lld_read_start(GDisplay *g) { + acquire_bus(g); + set_viewport(g); + setreadmode(g); + dummy_read(g); +} + +LLDSPEC color_t gdisp_lld_read_color(GDisplay *g) { + uint16_t data; + + data = read_data(g); + return gdispNative2Color(data); +} + +LLDSPEC void gdisp_lld_read_stop(GDisplay *g) { + setwritemode(g); + release_bus(g); +} +#endif + +#if GDISP_HARDWARE_FILLS +LLDSPEC void gdisp_lld_fill_area(GDisplay *g) { + uint8_t data, j; + set_viewport(g); + + if (g->p.color != White) { + data = 0xFF; // set dot + } + else { + data = 0; // clr dot + } + for (j=0; j < (g->p.cy)/8; j++) { + write_data_repeat(g, data, (g->p.cx)); + (g->p.cy) +=8; + set_viewport(g); + } + +} +#endif // GDISP_HARDWARE_FILLS + +#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL +LLDSPEC void gdisp_lld_control(GDisplay *g) { + switch(g->p.x) { + case GDISP_CONTROL_POWER: + if (g->g.Powermode == (powermode_t)g->p.ptr) + return; + + switch((powermode_t)g->p.ptr) { + case powerOff: + acquire_bus(g); + write_index(g, 0x28); + gfxSleepMilliseconds(10); + write_index(g, 0x10); + release_bus(g); + break; + + case powerOn: + acquire_bus(g); + write_index(g, 0x11); + gfxSleepMilliseconds(120); + write_index(g, 0x29); + release_bus(g); + if (g->g.Powermode != powerSleep) + gdisp_lld_init(g); + break; + + case powerSleep: + acquire_bus(g); + write_index(g, 0x28); + gfxSleepMilliseconds(10); + write_index(g, 0x10); + release_bus(g); + break; + + default: + return; + } + + g->g.Powermode = (powermode_t)g->p.ptr; + return; + + case GDISP_CONTROL_ORIENTATION: + if (g->g.Orientation == (orientation_t)g->p.ptr) + return; + + switch((orientation_t)g->p.ptr) { + case GDISP_ROTATE_0: + acquire_bus(g); + + write_index(g, 0x36); + write_data(g, 0x08); + + release_bus(g); + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + + case GDISP_ROTATE_90: + acquire_bus(g); + + write_index(g, 0x36); + write_data(g, 0x68); + + release_bus(g); + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + + case GDISP_ROTATE_180: + acquire_bus(g); + + write_index(g, 0x36); + write_data(g, 0xC8); + + release_bus(g); + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + + case GDISP_ROTATE_270: + acquire_bus(g); + + write_index(g, 0x36); + write_data(g, 0xA8); + + release_bus(g); + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + + default: + return; + } + + g->g.Orientation = (orientation_t)g->p.ptr; + return; + + default: + return; + } +} +#endif + +#endif /* GFX_USE_GDISP */ diff --git a/drivers/gdisp/RA6963/gdisp_lld_config.h b/drivers/gdisp/RA6963/gdisp_lld_config.h new file mode 100755 index 00000000..15c81d70 --- /dev/null +++ b/drivers/gdisp/RA6963/gdisp_lld_config.h @@ -0,0 +1,25 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +//#ifndef _GDISP_LLD_CONFIG_H +//#define _GDISP_LLD_CONFIG_H + +#if GFX_USE_GDISP +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +#define GDISP_HARDWARE_STREAM_WRITE FALSE +#define GDISP_HARDWARE_STREAM_READ FALSE +#define GDISP_HARDWARE_CONTROL FALSE +#define GDISP_HARDWARE_DRAWPIXEL TRUE +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO +#define GDISP_HARDWARE_FILLS FALSE + +#endif /* GFX_USE_GDISP */ + +//#endif /* _GDISP_LLD_CONFIG_H */ diff --git a/drivers/gdisp/readme.txt b/drivers/gdisp/readme.txt index 710288f6..c34363b9 100644 --- a/drivers/gdisp/readme.txt +++ b/drivers/gdisp/readme.txt @@ -1,39 +1,41 @@ -A list of current display drivers: - -AlteraFramereader - Support for the "Altera Frame Reader IP Core" -ED060SC4 - E-Ink display -framebuffer - Supports any non-palletized, non-bitpacked color display with a framebuffer -Fb24bpp - Same as 'framebuffer' driver but supports RGB888 and BGR888 packed framebuffer formats. -HX8347D - Mid-sized color LCD displays eg RGB565 320x240 -ILI9320 - Mid-sized color LCD displays eg RGB565 320x240 -ILI9325 - Mid-sized color LCD displays eg RGB565 320x240 -ILI9341 - Mid-sized color LCD displays eg RGB565 320x240 -ILI9342 - Mid-sized color LCD displays eg RGB565 320x240 -ILI93xx - Mid-sized color LCD displays eg RGB565 320x240 (attempt at a common driver) -ILI9481 - Mid-sized color LCD displays eg RGB565 320x240 -LGDP4532 - Mid-sized color LCD displays eg RGB565 320x240 -Nokia6610GE8 - Small (130x130) 12bit color LCD -Nokia6610GE12 - Small (130x130) 12bit color LCD (untested) -PCD8544 - Small monochrome LCD -PCF8812 - Small monochrome LCD -R61505U - Mid-sized color LCD displays eg RGB565 320x240 -RA8875 - Mid-sized color LCD displays eg RGB565 320x240 -S6D1121 - Mid-sized color LCD displays eg RGB565 320x240 -SPFD54124B - Mid-sized color LCD displays eg RGB565 320x240 -SSD1289 - Mid-sized color LCD displays eg RGB565 320x240 -SSD1306 - Small monochrome LCD -SSD1331 - Small hardware accelerated OLED display RGB565 96x64 -SSD1351 - Mid-sized color LCD displays eg RGB565 320x240 -SSD1848 - Small grayscale LCD eg 2-Bit 130x130 -SSD1963 - Mid-sized color LCD displays eg RGB565 320x240 -SSD2119 - Mid-sized color LCD displays eg RGB565 320x240 -ST7565 - Small monochrome LCD -STM32LTDC - STM32 ART graphics STM32F4 and STM32F7 series CPU's -TestStub - NULL driver just to test compile -TLS8204 - Small monochrome LCD -UC8173 - E-Ink display driver -UC1601s - Small (64x132) monochrome LCD -QImage - Driver that allows rendering into a QImage object (of the Qt framework) -uGFXnet - Remote Network display (in drivers/multiple/uGFXnet directory) -Win32 - Microsoft Windows (in drivers/multiple/Win32 directory) -X - X Windows (Xlib) (in drivers/multiple/X directory) +A list of current display drivers: + +AlteraFramereader - Support for the "Altera Frame Reader IP Core" +ED060SC4 - E-Ink display +framebuffer - Supports any non-palletized, non-bitpacked color display with a framebuffer +Fb24bpp - Same as 'framebuffer' driver but supports RGB888 and BGR888 packed framebuffer formats. +HX8347D - Mid-sized color LCD displays eg RGB565 320x240 +ILI9320 - Mid-sized color LCD displays eg RGB565 320x240 +ILI9325 - Mid-sized color LCD displays eg RGB565 320x240 +ILI9341 - Mid-sized color LCD displays eg RGB565 320x240 +ILI9342 - Mid-sized color LCD displays eg RGB565 320x240 +ILI93xx - Mid-sized color LCD displays eg RGB565 320x240 (attempt at a common driver) +ILI9481 - Mid-sized color LCD displays eg RGB565 320x240 +KS0108 - Small monochrome LCD +LGDP4532 - Mid-sized color LCD displays eg RGB565 320x240 +Nokia6610GE8 - Small (130x130) 12bit color LCD +Nokia6610GE12 - Small (130x130) 12bit color LCD (untested) +PCD8544 - Small monochrome LCD +PCF8812 - Small monochrome LCD +R61505U - Mid-sized color LCD displays eg RGB565 320x240 +RA6963 - Small monochrom LCD +RA8875 - Mid-sized color LCD displays eg RGB565 320x240 +S6D1121 - Mid-sized color LCD displays eg RGB565 320x240 +SPFD54124B - Mid-sized color LCD displays eg RGB565 320x240 +SSD1289 - Mid-sized color LCD displays eg RGB565 320x240 +SSD1306 - Small monochrome LCD +SSD1331 - Small hardware accelerated OLED display RGB565 96x64 +SSD1351 - Mid-sized color LCD displays eg RGB565 320x240 +SSD1848 - Small grayscale LCD eg 2-Bit 130x130 +SSD1963 - Mid-sized color LCD displays eg RGB565 320x240 +SSD2119 - Mid-sized color LCD displays eg RGB565 320x240 +ST7565 - Small monochrome LCD +STM32LTDC - STM32 ART graphics STM32F4 and STM32F7 series CPU's +TestStub - NULL driver just to test compile +TLS8204 - Small monochrome LCD +UC8173 - E-Ink display driver +UC1601s - Small (64x132) monochrome LCD +QImage - Driver that allows rendering into a QImage object (of the Qt framework) +uGFXnet - Remote Network display (in drivers/multiple/uGFXnet directory) +Win32 - Microsoft Windows (in drivers/multiple/Win32 directory) +X - X Windows (Xlib) (in drivers/multiple/X directory)