cleaned up board file mess

ugfx_release_2.6
Joel Bodenmann 2013-07-21 17:42:25 +02:00
parent c29950c767
commit d98e6c5d0d
53 changed files with 1209 additions and 1920 deletions

View File

@ -40,15 +40,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_ST_STM32F4_DISCOVERY)
#include "gdisp_lld_board_st_stm32f4_discovery.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some common routines and macros
#define write_reg(reg, data) { write_index(reg); write_data(data); }

View File

@ -0,0 +1,120 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/HX8347D/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board SPI interface for the HX8347D display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
/**
* @brief Initialise the board for the display.
* @notes This board definition uses GPIO and assumes exclusive access to these GPIO pins
*
* @notapi
*/
static inline void init_board(void) {
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
}
/**
* @brief Take exclusive control of the bus
* @note Not needed, not implemented
*
* @notapi
*/
static inline void acquire_bus(void) {
}
/**
* @brief Release exclusive control of the bus
* @note Not needed, not implemented
*
* @notapi
*/
static inline void release_bus(void) {
}
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint8_t cmd) {
}
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint8_t data) {
}
static inline void write_ram8(uint8_t data1, uint8_t data2) {
}
static inline void write_ram16(uint16_t data) {
}
#if GDISP_HARDWARE_READPIXEL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) {
}
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -1,24 +0,0 @@
Description:
Driver for LCD with 4-wire serial interface (65k colors).
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_st_stm32f4_discovery.h file as a basis.
Currently known boards are:
BOARD_ST_STM32F4_DISCOVERY
Board configuration assume that you have STM32_PWM_USE_TIM4 set to TRUE in your mcuconf.h.
d) The following are optional - define them if you are not using the defaults below:
#define GDISP_SCREEN_WIDTH 240
#define GDISP_SCREEN_HEIGHT 320
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/HX8347D/gdisp_lld.mk

View File

@ -20,16 +20,7 @@
/* Include the emulation code for things we don't support */
#include "gdisp/lld/emulation.c"
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_OLIMEX_STM32_LCD)
#include "gdisp_lld_board_olimex_stm32_lcd.h"
#elif defined(BOARD_OLIMEX_PIC32MX_LCD)
#include "gdisp_lld_board_olimex_pic32mx_lcd.h"
#else
#include "gdisp_lld_board.h"
#endif
/*===========================================================================*/
/* Driver local definitions. */

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/ILI9320/gdisp_lld_board_example.h
* @file drivers/gdisp/ILI9320/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the ILI9320 display.
*
* @addtogroup GDISP
@ -17,36 +17,35 @@
#define GDISP_LLD_BOARD_H
static inline void gdisp_lld_init_board(void) {
#error "ILI9320: You must implement the init_board routine for your board"
}
static inline void gdisp_lld_reset_pin(bool_t state) {
#error "ILI9320: You must implement setpin_reset routine for your board"
}
static inline void acquire_bus(void) {
#error "ILI9320: You must implement setpin_reset routine for your board"
}
static inline void release_bus(void) {
#error "ILI9320: You must implement setpin_reset routine for your board"
}
static inline void gdisp_lld_write_index(uint16_t data) {
#error "ILI9320: You must implement write_index routine for your board"
}
static inline void gdisp_lld_write_data(uint16_t data) {
#error "ILI9320: You must implement write_data routine for your board"
}
static inline uint16_t gdisp_lld_read_data(void) {
#error "ILI9320: You must implement read_data routine for your board"
}
/* if not available, just ignore the argument and return */
static inline uint16_t gdisp_lld_backlight(uint8_t percentage) {
#error "ILI9320: You must implement set_backlight routine for your board"
}
#endif /* GDISP_LLD_BOARD_H */

View File

@ -1,15 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
d) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h file as a basis.
Currently known boards are:
Olimex STM32-LCD
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/ILI9320/gdisp_lld.mk

View File

@ -20,14 +20,7 @@
/* Include the emulation code for things we don't support */
#include "gdisp/lld/emulation.c"
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_HY_STM32_100P)
#include "gdisp_lld_board_hy_stm32_100p.h"
#else
#include "gdisp_lld_board.h"
#endif
/*===========================================================================*/
/* Driver local definitions. */

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/ILI9325/gdisp_lld_board_example.h
* @file drivers/gdisp/ILI9325/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the ILI9325 display.
*
* @addtogroup GDISP
@ -17,28 +17,27 @@
#define GDISP_LLD_BOARD_H
static inline void gdisp_lld_init_board(void) {
#error "ILI9325: You must implement the init_board routine for your board"
}
static inline void gdisp_lld_reset_pin(bool_t state) {
#error "ILI9325: You must implement setpin_reset routine for your board"
}
static inline void gdisp_lld_write_index(uint16_t data) {
#error "ILI9325: You must implement write_index routine for your board"
}
static inline void gdisp_lld_write_data(uint16_t data) {
#error "ILI9325: You must implement write_data routine for your board"
}
static inline uint16_t gdisp_lld_read_data(void) {
#error "ILI9325: You must implement read_data routine for your board"
}
/* if not available, just ignore the argument and return */
static inline uint16_t gdisp_lld_backlight(uint8_t percentage) {
#error "ILI9325: You must implement set_backlight routine for your board"
}
#endif /* GDISP_LLD_BOARD_H */

View File

@ -1,15 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
d) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h file as a basis.
Currently known boards are:
HY_STM32_100p
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/ILI9325/gdisp_lld.mk

View File

@ -44,15 +44,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_FIREBULL_STM32_F103)
#include "gdisp_lld_board_firebullstm32f103.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some common routines and macros
#define write_reg(reg, data) { write_index(reg); write_data(data); }

View File

@ -1,152 +0,0 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/ILI9481/gdisp_lld_board_example_fsmc.h
* @brief GDISP Graphics Driver subsystem low level driver source for
* the ILI9481 and compatible HVGA display
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
#define GDISP_REG ((volatile uint16_t *) 0x60000000)[0] /* RS = 0 */
#define GDISP_RAM ((volatile uint16_t *) 0x60020000)[0] /* RS = 1 */
/**
* @brief Initialise the board for the display.
* @notes Performs the following functions:
* 1. initialise the io port used by your display
* 2. initialise the reset pin (initial state not-in-reset)
* 3. initialise the chip select pin (initial state not-active)
* 4. initialise the backlight pin (initial state back-light off)
*
* @notapi
*/
static inline void init_board(void) {
const unsigned char FSMC_Bank;
#if defined(STM32F1XX) || defined(STM32F3XX)
/* FSMC setup for F1/F3 */
rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
#error "DMA not implemented for F1/F3 Devices"
#endif
#elif defined(STM32F4XX) || defined(STM32F2XX)
/* STM32F2-F4 FSMC init */
rccEnableAHB3(RCC_AHB3ENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
if (dmaStreamAllocate(GDISP_DMA_STREAM, 0, NULL, NULL)) gfxExit();
dmaStreamSetMemory0(GDISP_DMA_STREAM, &GDISP_RAM);
dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M);
#endif
#else
#error "FSMC not implemented for this device"
#endif
/* set pins to FSMC mode */
IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 7) | (1 << 8) |
(1 << 9) | (1 << 10) | (1 << 11) | (1 << 14) | (1 << 15), 0};
IOBus busE = {GPIOE, (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) |
(1 << 13) | (1 << 14) | (1 << 15), 0};
palSetBusMode(&busD, PAL_MODE_ALTERNATE(12));
palSetBusMode(&busE, PAL_MODE_ALTERNATE(12));
FSMC_Bank = 0;
/* FSMC timing */
FSMC_Bank1->BTCR[FSMC_Bank+1] = (FSMC_BTR1_ADDSET_1 | FSMC_BTR1_ADDSET_3) \
| (FSMC_BTR1_DATAST_1 | FSMC_BTR1_DATAST_3) \
| (FSMC_BTR1_BUSTURN_1 | FSMC_BTR1_BUSTURN_3) ;
/* Bank1 NOR/SRAM control register configuration
* This is actually not needed as already set by default after reset */
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
(void) state;
/* Nothing to do here */
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
(void) percent;
/* Nothing to do here */
}
/**
* @brief Take exclusive control of the bus
*
* @notapi
*/
static inline void acquire_bus(void) {
/* Nothing to do here */
}
/**
* @brief Release exclusive control of the bus
*
* @notapi
*/
static inline void release_bus(void) {
/* Nothing to do here */
}
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) { GDISP_REG = index; }
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) { GDISP_RAM = data; }
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) { return GDISP_RAM; }
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/ILI9481/gdisp_lld_board_example.h
* @file drivers/gdisp/ILI9481/gdisp_lld_board_template.h
* @brief GDISP Graphics Driver subsystem low level driver source for
* the ILI9481 and compatible HVGA display
*
@ -23,8 +23,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "ILI9481: You must supply a definition for init_board for your board"
}
/**
@ -35,8 +34,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline void setpin_reset(bool_t state) {
/* Code here */
#error "ILI9481: You must supply a definition for setpin_reset for your board"
}
/**
@ -47,8 +45,7 @@ static inline void setpin_reset(bool_t state) {
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
/* Code here */
#error "ILI9481: You must supply a definition for set_backlight for your board"
}
/**
@ -57,7 +54,7 @@ static inline void set_backlight(uint8_t percent) {
* @notapi
*/
static inline void acquire_bus(void) {
#error "ILI9481: You must supply a definition for acquire_bus for your board"
}
/**
@ -66,7 +63,7 @@ static inline void acquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
#error "ILI9481: You must supply a definition for release_bus for your board"
}
/**
@ -77,8 +74,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline void write_index(uint16_t index) {
/* Code here */
#error "ILI9481: You must supply a definition for write_index for your board"
}
/**
@ -89,8 +85,7 @@ static inline void write_index(uint16_t index) {
* @notapi
*/
static inline void write_data(uint16_t data) {
/* Code here */
#error "ILI9481: You must supply a definition for write_data for your board"
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
@ -104,8 +99,7 @@ static inline void write_data(uint16_t data) {
* @notapi
*/
static inline uint16_t read_data(void) {
/* Code here */
#error "ILI9481: You must supply a definition for read_data for your board"
}
#endif

View File

@ -1,15 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h or gdisp_lld_board_fsmc.h file as a basis.
Currently known boards are:
BOARD_FIREBULL_STM32_F103 - GPIO interface: requires GDISP_CMD_PORT and GDISP_DATA_PORT to be defined
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/ILI9481/gdisp_lld.mk

View File

@ -54,15 +54,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_OLIMEX_SAM7_EX256)
#include "gdisp_lld_board_olimexsam7ex256.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some macros just to make reading the code easier
#define delayms(ms) gfxSleepMilliseconds(ms)

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/Nokia6610GE8/gdisp_lld_board_example.h
* @file drivers/gdisp/Nokia6610GE8/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the Nokia6610 GE8 display.
*
* @addtogroup GDISP
@ -27,8 +27,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for init_board for your board"
}
/**
@ -39,8 +38,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline void setpin_reset(bool_t state) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for setpin_reset for your board"
}
/**
@ -54,8 +52,7 @@ static inline void setpin_reset(bool_t state) {
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for set_backlight for your board"
}
/**
@ -64,8 +61,7 @@ static inline void set_backlight(uint8_t percent) {
* @notapi
*/
static inline void acquire_bus(void) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for acquire_bus for your board"
}
/**
@ -74,8 +70,7 @@ static inline void acquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for release_bus for your board"
}
/**
@ -86,8 +81,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline void write_cmd(uint16_t cmd) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for write_cmd for your board"
}
/**
@ -98,8 +92,7 @@ static inline void write_cmd(uint16_t cmd) {
* @notapi
*/
static inline void write_data(uint16_t data) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for write_data for your board"
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
@ -113,8 +106,7 @@ static inline void write_data(uint16_t data) {
* @notapi
*/
static inline uint16_t read_data(void) {
/* Code here */
#error "gdispNokia6610GE8: You must supply a definition for read_data for your board"
}
#endif

View File

@ -1,15 +0,0 @@
This driver is for the Nokia6610 Philips (GE12) controller
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h file as a basis.
Currently known boards are:
Olimex SAM7-EX256
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/Nokia6610GE12/gdisp_lld.mk

View File

@ -59,15 +59,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_OLIMEX_SAM7_EX256)
#include "gdisp_lld_board_olimexsam7ex256.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some macros just to make reading the code easier
#define delayms(ms) gfxSleepMilliseconds(ms)

View File

@ -6,8 +6,8 @@
*/
/**
* @file drivers/gdisp/Nokia6610GE12/gdisp_lld_board_example.h
* @brief GDISP Graphic Driver subsystem board interface for the Nokia6610 GE12 display.
* @file drivers/gdisp/Nokia6610GE8/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the Nokia6610 GE8 display.
*
* @addtogroup GDISP
* @{
@ -27,8 +27,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for init_board for your board"
}
/**
@ -39,8 +38,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline void setpin_reset(bool_t state) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for setpin_reset for your board"
}
/**
@ -54,8 +52,7 @@ static inline void setpin_reset(bool_t state) {
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for set_backlight for your board"
}
/**
@ -64,8 +61,7 @@ static inline void set_backlight(uint8_t percent) {
* @notapi
*/
static inline void acquire_bus(void) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for acquire_bus for your board"
}
/**
@ -74,8 +70,7 @@ static inline void acquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for release_bus for your board"
}
/**
@ -86,8 +81,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline void write_cmd(uint16_t cmd) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for write_cmd for your board"
}
/**
@ -98,8 +92,7 @@ static inline void write_cmd(uint16_t cmd) {
* @notapi
*/
static inline void write_data(uint16_t data) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for write_data for your board"
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
@ -113,8 +106,7 @@ static inline void write_data(uint16_t data) {
* @notapi
*/
static inline uint16_t read_data(void) {
/* Code here */
#error "gdispNokia6610GE12: You must supply a definition for read_data for your board"
}
#endif

View File

@ -1,15 +0,0 @@
This driver is for the Nokia6610 Epson (GE8) controller
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h file as a basis.
Currently known boards are:
Olimex SAM7-EX256
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/Nokia6610GE8/gdisp_lld.mk

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/SSD1963/gdisp_lld_board_example.h
* @file drivers/gdisp/SSD1963/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1963 display.
*
* @addtogroup GDISP

View File

@ -43,14 +43,7 @@
/* Driver local definitions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_OLIMEX_STM32_E407)
#include "gdisp_lld_board_olimex_e407.h"
#else
#include "gdisp_lld_board.h"
#endif
/* Some common routines and macros */
#define write_reg(reg, data) { write_index(reg); write_data(data); }

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/S6D1121/gdisp_lld_board_example.h
* @file drivers/gdisp/S6D1121/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the S6D1121 display.
*
* @addtogroup GDISP
@ -22,8 +22,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "SSD1289: You must supply a definition for init_board for your board"
}
/**
@ -34,8 +33,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline void setpin_reset(bool_t state) {
/* Code here */
#error "SSD1289: You must supply a definition for setpin_reset for your board"
}
/**
@ -46,8 +44,7 @@ static inline void setpin_reset(bool_t state) {
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
/* Code here */
#error "SSD1289: You must supply a definition for set_backlight for your board"
}
/**
@ -56,7 +53,7 @@ static inline void set_backlight(uint8_t percent) {
* @notapi
*/
static inline void acquire_bus(void) {
#error "SSD1289: You must supply a definition for acquire_bus for your board"
}
/**
@ -65,7 +62,7 @@ static inline void acquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
#error "SSD1289: You must supply a definition for release_bus for your board"
}
/**
@ -76,8 +73,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline void write_index(uint16_t index) {
/* Code here */
#error "SSD1289: You must supply a definition for write_index for your board"
}
/**
@ -88,8 +84,7 @@ static inline void write_index(uint16_t index) {
* @notapi
*/
static inline void write_data(uint16_t data) {
/* Code here */
#error "SSD1289: You must supply a definition for write_data for your board"
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
@ -103,8 +98,7 @@ static inline void write_data(uint16_t data) {
* @notapi
*/
static inline uint16_t read_data(void) {
/* Code here */
#error "SSD1289: You must supply a definition for read_data for your board"
}
#endif

View File

@ -1,8 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/S6D1121/gdisp_lld.mk

View File

@ -38,17 +38,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_FIREBULL_STM32_F103)
#include "gdisp_lld_board_firebullstm32f103.h"
#elif defined(BOARD_ST_STM32F4_DISCOVERY)
#include "gdisp_lld_board_st_stm32f4_discovery.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some common routines and macros
#define write_reg(reg, data) { write_index(reg); write_data(data); }

View File

@ -1,151 +0,0 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/SSD1289/gdisp_lld_board_example_fsmc.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1289 display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
#define GDISP_REG ((volatile uint16_t *) 0x60000000)[0] /* RS = 0 */
#define GDISP_RAM ((volatile uint16_t *) 0x60020000)[0] /* RS = 1 */
/**
* @brief Initialise the board for the display.
* @notes Performs the following functions:
* 1. initialise the io port used by your display
* 2. initialise the reset pin (initial state not-in-reset)
* 3. initialise the chip select pin (initial state not-active)
* 4. initialise the backlight pin (initial state back-light off)
*
* @notapi
*/
static inline void init_board(void) {
const unsigned char FSMC_Bank;
#if defined(STM32F1XX) || defined(STM32F3XX)
/* FSMC setup for F1/F3 */
rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
#error "DMA not implemented for F1/F3 Devices"
#endif
#elif defined(STM32F4XX) || defined(STM32F2XX)
/* STM32F2-F4 FSMC init */
rccEnableAHB3(RCC_AHB3ENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
if (dmaStreamAllocate(GDISP_DMA_STREAM, 0, NULL, NULL)) gfxExit();
dmaStreamSetMemory0(GDISP_DMA_STREAM, &GDISP_RAM);
dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M);
#endif
#else
#error "FSMC not implemented for this device"
#endif
/* set pins to FSMC mode */
IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 7) | (1 << 8) |
(1 << 9) | (1 << 10) | (1 << 11) | (1 << 14) | (1 << 15), 0};
IOBus busE = {GPIOE, (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) |
(1 << 13) | (1 << 14) | (1 << 15), 0};
palSetBusMode(&busD, PAL_MODE_ALTERNATE(12));
palSetBusMode(&busE, PAL_MODE_ALTERNATE(12));
FSMC_Bank = 0;
/* FSMC timing */
FSMC_Bank1->BTCR[FSMC_Bank+1] = (FSMC_BTR1_ADDSET_1 | FSMC_BTR1_ADDSET_3) \
| (FSMC_BTR1_DATAST_1 | FSMC_BTR1_DATAST_3) \
| (FSMC_BTR1_BUSTURN_1 | FSMC_BTR1_BUSTURN_3) ;
/* Bank1 NOR/SRAM control register configuration
* This is actually not needed as already set by default after reset */
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
(void) state;
/* Nothing to do here */
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
(void) percent;
/* Nothing to do here */
}
/**
* @brief Take exclusive control of the bus
*
* @notapi
*/
static inline void acquire_bus(void) {
/* Nothing to do here */
}
/**
* @brief Release exclusive control of the bus
*
* @notapi
*/
static inline void release_bus(void) {
/* Nothing to do here */
}
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) { GDISP_REG = index; }
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) { GDISP_RAM = data; }
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) { return GDISP_RAM; }
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/gdisp/SSD1289/gdisp_lld_board_example.h
* @file drivers/gdisp/SSD1289/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1289 display.
*
* @addtogroup GDISP
@ -22,8 +22,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "SSD1289: You must supply a definition for init_board for your board"
}
/**
@ -34,8 +33,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline void setpin_reset(bool_t state) {
/* Code here */
#error "SSD1289: You must supply a definition for setpin_reset for your board"
}
/**
@ -46,8 +44,7 @@ static inline void setpin_reset(bool_t state) {
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
/* Code here */
#error "SSD1289: You must supply a definition for set_backlight for your board"
}
/**
@ -56,7 +53,7 @@ static inline void set_backlight(uint8_t percent) {
* @notapi
*/
static inline void acquire_bus(void) {
#error "SSD1289: You must supply a definition for acquire_bus for your board"
}
/**
@ -65,7 +62,7 @@ static inline void acquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
#error "SSD1289: You must supply a definition for release_bus for your board"
}
/**
@ -76,8 +73,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline void write_index(uint16_t index) {
/* Code here */
#error "SSD1289: You must supply a definition for write_index for your board"
}
/**
@ -88,8 +84,7 @@ static inline void write_index(uint16_t index) {
* @notapi
*/
static inline void write_data(uint16_t data) {
/* Code here */
#error "SSD1289: You must supply a definition for write_data for your board"
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
@ -103,8 +98,7 @@ static inline void write_data(uint16_t data) {
* @notapi
*/
static inline uint16_t read_data(void) {
/* Code here */
#error "SSD1289: You must supply a definition for read_data for your board"
}
#endif

View File

@ -1,20 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path.
Use the gdisp_lld_board_example.h or gdisp_lld_board_fsmc.h file as a basis.
Currently known boards are:
BOARD_FIREBULL_STM32_F103 - GPIO interface: requires GDISP_CMD_PORT and GDISP_DATA_PORT to be defined
BOARD_ST_STM32F4_DISCOVERY - FSMC interface
d) The following are optional - define them if you are not using the defaults below:
#define GDISP_SCREEN_WIDTH 320
#define GDISP_SCREEN_HEIGHT 240
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/SSD1289/gdisp_lld.mk

View File

@ -25,12 +25,7 @@
/* All the board specific code should go in these include file so the driver
* can be ported to another board just by creating a suitable file.
*/
#if defined(BOARD_YOURBOARDNAME)
#include "gdisp_lld_board_yourboardname.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
/*===========================================================================*/
/* Driver interrupt handlers. */

View File

@ -1,180 +0,0 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/SSD1289/gdisp_lld_board_example_fsmc.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1289 display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
#if defined(GDISP_USE_GPIO)
#define Set_CS palSetPad(GDISP_CMD_PORT, GDISP_CS);
#define Clr_CS palClearPad(GDISP_CMD_PORT, GDISP_CS);
#define Set_RS palSetPad(GDISP_CMD_PORT, GDISP_RS);
#define Clr_RS palClearPad(GDISP_CMD_PORT, GDISP_RS);
#define Set_WR palSetPad(GDISP_CMD_PORT, GDISP_WR);
#define Clr_WR palClearPad(GDISP_CMD_PORT, GDISP_WR);
#define Set_RD palSetPad(GDISP_CMD_PORT, GDISP_RD);
#define Clr_RD palClearPad(GDISP_CMD_PORT, GDISP_RD);
#endif
#if defined(GDISP_USE_FSMC)
/* Using FSMC A16 as RS */
#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */
#define GDISP_RAM (*((volatile uint16_t *) 0x60020000)) /* RS = 1 */
#endif
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) { GDISP_REG = index; }
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) { GDISP_RAM = data; }
/**
* @brief Initialise the board for the display.
* @notes Performs the following functions:
* 1. initialise the io port used by your display
* 2. initialise the reset pin (initial state not-in-reset)
* 3. initialise the chip select pin (initial state not-active)
* 4. initialise the backlight pin (initial state back-light off)
*
* @notapi
*/
static inline void init_board(void) {
const unsigned char FSMC_Bank = 0;
#if defined(STM32F1XX) || defined(STM32F3XX)
/* FSMC setup for F1/F3 */
rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
#error "DMA not implemented for F1/F3 Devices"
#endif
#elif defined(STM32F4XX) || defined(STM32F2XX)
/* STM32F2-F4 FSMC init */
rccEnableAHB3(RCC_AHB3ENR_FSMCEN, 0);
#if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM)
if (dmaStreamAllocate(GDISP_DMA_STREAM, 0, NULL, NULL)) gfxExit();
dmaStreamSetMemory0(GDISP_DMA_STREAM, &GDISP_RAM);
dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M);
#endif
#else
#error "FSMC not implemented for this device"
#endif
/* set pins to FSMC mode */
IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 7) | (1 << 8) |
(1 << 9) | (1 << 10) | (1 << 11) | (1 << 14) | (1 << 15), 0};
IOBus busE = {GPIOE, (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) |
(1 << 13) | (1 << 14) | (1 << 15), 0};
palSetBusMode(&busD, PAL_MODE_ALTERNATE(12));
palSetBusMode(&busE, PAL_MODE_ALTERNATE(12));
/* FSMC timing */
FSMC_Bank1->BTCR[FSMC_Bank+1] = (FSMC_BTR1_ADDSET_1 | FSMC_BTR1_ADDSET_3) \
| (FSMC_BTR1_DATAST_1 | FSMC_BTR1_DATAST_3) \
| (FSMC_BTR1_BUSTURN_1 | FSMC_BTR1_BUSTURN_3) ;
/* Bank1 NOR/SRAM control register configuration
* This is actually not needed as already set by default after reset */
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
}
static inline void post_init_board(void) {
const unsigned char FSMC_Bank = 0;
/* FSMC delay reduced as the controller now runs at full speed */
FSMC_Bank1->BTCR[FSMC_Bank+1] = FSMC_BTR1_ADDSET_0 | FSMC_BTR1_DATAST_2 | FSMC_BTR1_BUSTURN_0 ;
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
(void) state;
/* Nothing to do here */
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
//duty_cycle is 00..FF
//Work in progress: the SSD1963 has a built-in PWM, its output can
//be used by a Dynamic Background Control or by a host (user)
//Check your LCD's hardware, the PWM connection is default left open and instead
//connected to a LED connection on the breakout board
write_index(SSD1963_SET_PWM_CONF);//set PWM for BackLight
write_data(0x0001);
write_data(percent & 0x00FF);
write_data(0x0001);//controlled by host (not DBC), enabled
write_data(0x00FF);
write_data(0x0060);//don't let it go too dark, avoid a useless LCD
write_data(0x000F);//prescaler ???
}
/**
* @brief Take exclusive control of the bus
*
* @notapi
*/
static inline void acquire_bus(void) {
/* Nothing to do here */
}
/**
* @brief Release exclusive control of the bus
*
* @notapi
*/
static inline void release_bus(void) {
/* Nothing to do here */
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) { return GDISP_RAM; }
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -1,170 +0,0 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/SSD1963/gdisp_lld_board_example_gpio.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1963 display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
#if defined(GDISP_USE_GPIO)
#define Set_CS palSetPad(GDISP_CMD_PORT, GDISP_CS);
#define Clr_CS palClearPad(GDISP_CMD_PORT, GDISP_CS);
#define Set_RS palSetPad(GDISP_CMD_PORT, GDISP_RS);
#define Clr_RS palClearPad(GDISP_CMD_PORT, GDISP_RS);
#define Set_WR palSetPad(GDISP_CMD_PORT, GDISP_WR);
#define Clr_WR palClearPad(GDISP_CMD_PORT, GDISP_WR);
#define Set_RD palSetPad(GDISP_CMD_PORT, GDISP_RD);
#define Clr_RD palClearPad(GDISP_CMD_PORT, GDISP_RD);
#endif
#if defined(GDISP_USE_FSMC)
/* Using FSMC A16 as RS */
#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */
#define GDISP_RAM (*((volatile uint16_t *) 0x60020000)) /* RS = 1 */
#endif
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) {
Set_CS; Set_RS; Set_WR; Clr_RD;
palWritePort(GDISP_DATA_PORT, index);
Clr_CS;
}
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) {
Set_CS; Clr_RS; Set_WR; Clr_RD;
palWritePort(GDISP_DATA_PORT, data);
Clr_CS;
}
/**
* @brief Initialise the board for the display.
*
* @notapi
*/
static inline void init_board(void) {
IOBus busCMD = {GDISP_CMD_PORT, (1 << GDISP_CS) | (1 << GDISP_RS) | (1 << GDISP_WR) | (1 << GDISP_RD), 0};
IOBus busDATA = {GDISP_CMD_PORT, 0xFFFFF, 0};
palSetBusMode(&busCMD, PAL_MODE_OUTPUT_PUSHPULL);
palSetBusMode(&busDATA, PAL_MODE_OUTPUT_PUSHPULL);
}
static inline void post_init_board(void) {
/* Nothing to do here */
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
//duty_cycle is 00..FF
//Work in progress: the SSD1963 has a built-in PWM, its output can
//be used by a Dynamic Background Control or by a host (user)
//Check your LCD's hardware, the PWM connection is default left open and instead
//connected to a LED connection on the breakout board
write_index(SSD1963_SET_PWM_CONF);//set PWM for BackLight
write_data(0x0001);
write_data(percent & 0x00FF);
write_data(0x0001);//controlled by host (not DBC), enabled
write_data(0x00FF);
write_data(0x0060);//don't let it go too dark, avoid a useless LCD
write_data(0x000F);//prescaler ???
}
/**
* @brief Take exclusive control of the bus
*
* @notapi
*/
static inline void acquire_bus(void) {
/* Nothing to do here */
}
/**
* @brief Release exclusive control of the bus
*
* @notapi
*/
static inline void release_bus(void) {
/* Nothing to do here */
}
__inline void write_stream(uint16_t *buffer, uint16_t size) {
uint16_t i;
Set_CS; Clr_RS; Set_WR; Clr_RD;
for(i = 0; i < size; i++) {
Set_WR;
palWritePort(GDISP_DATA_PORT, buffer[i]);
Clr_WR;
}
Clr_CS;
}
__inline void read_stream(uint16_t *buffer, size_t size) {
uint16_t i;
Set_CS; Clr_RS; Clr_WR; Set_RD;
for(i = 0; i < size; i++) {
Set_RD;
buffer[i] = palReadPort(GDISP_DATA_PORT);
Clr_RD;
}
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) {
Set_CS; Clr_RS; Clr_WR; Set_RD;
uint16_t data = palReadPort(GDISP_DATA_PORT);
Clr_CS;
return data;
}
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -0,0 +1,115 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/SSD1963/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1963 display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) {
}
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) {
}
/**
* @brief Initialise the board for the display.
* @notes Performs the following functions:
* 1. initialise the io port used by your display
* 2. initialise the reset pin (initial state not-in-reset)
* 3. initialise the chip select pin (initial state not-active)
* 4. initialise the backlight pin (initial state back-light off)
*
* @notapi
*/
static inline void init_board(void) {
}
static inline void post_init_board(void) {
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
}
/**
* @brief Take exclusive control of the bus
*
* @notapi
*/
static inline void acquire_bus(void) {
}
/**
* @brief Release exclusive control of the bus
*
* @notapi
*/
static inline void release_bus(void) {
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) {
}
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -1,38 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: #define GDISP_NEED_MULTITHREAD TRUE
c) One (only) of:
#define GDISP_USE_GPIO
#define GDISP_USE_FSMC
d) If you want to use DMA (only works with FSMC):
#define GDISP_USE_DMA
#define GDISP_DMA_STREAM STM32_DMA2_STREAM6 //You can change the DMA channel according to your needs
2. Edit gdisp_lld_panel.h with your panel properties
3. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/SSD1963/gdisp_lld.mk
Example FSMC config with DMA:
#define GDISP_SCREEN_WIDTH 480
#define GDISP_SCREEN_HEIGHT 272
#define GDISP_USE_FSMC
#define GDISP_USE_DMA
#define GDISP_DMA_STREAM STM32_DMA2_STREAM6
#if defined(GDISP_USE_GPIO)
#define GDISP_CMD_PORT GPIOC
#define GDISP_DATA_PORT GPIOD
#define GDISP_CS 0
#define GDISP_RS 1
#define GDISP_WR 2
#define GDISP_RD 3
#endif

View File

@ -40,15 +40,7 @@
/* Driver local functions. */
/*===========================================================================*/
#if defined(GDISP_USE_CUSTOM_BOARD) && GDISP_USE_CUSTOM_BOARD
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#elif defined(BOARD_EMBEST_DMSTF4BB)
#include "gdisp_lld_board_embest_dmstf4bb.h"
#else
/* Include the user supplied board definitions */
#include "gdisp_lld_board.h"
#endif
// Some common routines and macros
#define write_reg(reg, data) { write_index(reg); write_data(data); }

View File

@ -0,0 +1,109 @@
/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file drivers/gdisp/SSD2119/gdisp_lld_board_template.h
* @brief GDISP Graphic Driver subsystem board template for the SSD2119 display.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_BOARD_H
#define _GDISP_LLD_BOARD_H
/**
* @brief Initialise the board for the display.
* @notes This board definition uses GPIO and assumes exclusive access to these GPIO pins
*
* @notapi
*/
static inline void init_board(void) {
}
/**
* @brief Set or clear the lcd reset pin.
*
* @param[in] state TRUE = lcd in reset, FALSE = normal operation
*
* @notapi
*/
static inline void setpin_reset(bool_t state) {
}
/**
* @brief Set the lcd back-light level.
*
* @param[in] percent 0 to 100%
*
* @notapi
*/
static inline void set_backlight(uint8_t percent) {
}
/**
* @brief Take exclusive control of the bus
* @note Not needed, not implemented
*
* @notapi
*/
static inline void acquire_bus(void) {
/* Nothing to do here since LCD is the only device on that bus */
}
/**
* @brief Release exclusive control of the bus
* @note Not needed, not implemented
*
* @notapi
*/
static inline void release_bus(void) {
/* Nothing to do here since LCD is the only device on that bus */
}
/**
* @brief Send data to the index register.
*
* @param[in] index The index register to set
*
* @notapi
*/
static inline void write_index(uint16_t index) {
}
/**
* @brief Send data to the lcd.
*
* @param[in] data The data to send
*
* @notapi
*/
static inline void write_data(uint16_t data) {
}
#if GDISP_HARDWARE_READPIXEL || GDISP_HARDWARE_SCROLL || defined(__DOXYGEN__)
/**
* @brief Read data from the lcd.
*
* @return The data from the lcd
* @note The chip select may need to be asserted/de-asserted
* around the actual spi read
*
* @notapi
*/
static inline uint16_t read_data(void) {
}
#endif
#endif /* _GDISP_LLD_BOARD_H */
/** @} */

View File

@ -1,27 +0,0 @@
Description:
Driver for LCD with 16-bit 8080 interface (65k colors).
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h) eg: GDISP_NEED_MULTITHREAD
c) If you are not using a known board then create a gdisp_lld_board.h file
and ensure it is on your include path. Use the gdisp_lld_board_embest_dmstf4bb.h
file as a basis.
Currently known boards are:
BOARD_EMBEST_DMSTF4BB - FSMC interface
This board configuration assumes that you have PWM driver enabled
and STM32_PWM_USE_TIM4 set to TRUE in your mcuconf.h.
If you use FSMC, define in your board file GDISP_USE_FSMC. If you use DMA,
define GDISP_USE_DMA.
d) The following are optional - define them if you are not using the defaults below:
#define GDISP_SCREEN_WIDTH 320
#define GDISP_SCREEN_HEIGHT 240
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/SSD2119/gdisp_lld.mk

View File

@ -1,16 +0,0 @@
This low level driver is a test stub that doesn't talk to any
real hardware. It is included to allow testing of the compilation
process.
Do not use this driver as a template for new drivers. Use the
templates/gdispXXXXX directory for that.
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GDISP TRUE
b) Any optional high level driver defines (see gdisp.h)
you want to compile test eg: GDISP_NEED_MULTITHREAD
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/gdisp/TestStub/gdisp_lld.mk

View File

@ -20,17 +20,7 @@
#include "ginput/lld/mouse.h"
#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD
#include "ginput_lld_mouse_board.h"
#elif defined(BOARD_FIREBULL_STM32_F103)
#include "ginput_lld_mouse_board_firebull_stm32f103.h"
#elif defined(BOARD_OLIMEX_STM32_E407)
#include "ginput_lld_mouse_board_olimex_stm32_e407.h"
#elif defined(BOARD_ST_STM32F4_DISCOVERY)
#include "ginput_lld_mouse_board_st_stm32f4_discovery.h"
#else
#include "ginput_lld_mouse_board_example.h"
#endif
#if defined(GINPUT_MOUSE_YX_INVERTED) && GINPUT_MOUSE_YX_INVERTED
#define CMD_X 0x91

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_example.h
* @file drivers/ginput/touch/ADS7843/ginput_lld_mouse_board_template.h
* @brief GINPUT Touch low level driver source for the ADS7843 on the example board.
*
* @defgroup Mouse Mouse
@ -23,8 +23,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "ginputADS7843: You must supply a definition for init_board for your board"
}
/**
@ -34,8 +33,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline bool_t getpin_pressed(void) {
/* Code here */
#error "ginputADS7843: You must supply a definition for getpin_pressed for your board"
}
/**
@ -44,8 +42,7 @@ static inline bool_t getpin_pressed(void) {
* @notapi
*/
static inline void aquire_bus(void) {
/* Code here */
#error "ginputADS7843: You must supply a definition for aquire_bus for your board"
}
/**
@ -54,8 +51,7 @@ static inline void aquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
/* Code here */
#error "ginputADS7843: You must supply a definition for release_bus for your board"
}
/**
@ -67,9 +63,9 @@ static inline void release_bus(void) {
* @notapi
*/
static inline uint16_t read_value(uint16_t port) {
/* Code here */
#error "ginputADS7843: You must supply a definition for read_value for your board"
}
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
/** @} */

View File

@ -1,8 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GINPUT TRUE
b) #define GINPUT_NEED_MOUSE TRUE
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/ginput/touch/ADS7843/ginput_lld.mk

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/ginput/touch/FT5x06/ginput_lld_mouse_board_example.h
* @file drivers/ginput/touch/FT5x06/ginput_lld_mouse_board_template.h
* @brief GINPUT Touch low level driver source for the FT5x06 on the example board.
*
* @defgroup Mouse Mouse
@ -23,8 +23,7 @@
* @notapi
*/
static void init_board(void) {
/* Code here */
#error "ginputFT5x06: You must supply a definition for init_board for your board"
}
/**
@ -34,8 +33,7 @@ static void init_board(void) {
* @notapi
*/
static inline bool_t getpin_irq(void) {
/* Code here */
#error "ginputFT5x06: You must supply a definition for getpin_irq for your board"
}
/**
@ -48,8 +46,7 @@ static inline bool_t getpin_irq(void) {
* @notapi
*/
static void write_reg(uint8_t reg, uint8_t n, uint16_t val) {
/* Code here */
#error "ginputFT5x06: You must supply a definition for write_reg for your board"
}
/**
@ -63,8 +60,7 @@ static void write_reg(uint8_t reg, uint8_t n, uint16_t val) {
* @notapi
*/
static uint16_t read_reg(uint8_t reg, uint8_t n) {
/* Code here */
#error "ginputFT5x06: You must supply a definition for read_reg for your board"
}
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */

View File

@ -1,8 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GINPUT TRUE
b) #define GINPUT_NEED_MOUSE TRUE
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/ginput/touch/FT5x06/ginput_lld.mk

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_example.h
* @file drivers/ginput/touch/MCU/ginput_lld_mouse_board_template.h
* @brief GINPUT Touch low level driver source for the MCU on the example board.
*
* @defgroup Mouse Mouse
@ -24,8 +24,7 @@
* @notapi
*/
static inline void init_board(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for init_board for your board"
}
/**
@ -35,8 +34,7 @@ static inline void init_board(void) {
* @notapi
*/
static inline bool_t getpin_pressed(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for getpin_pressed for your board"
}
/**
@ -45,8 +43,7 @@ static inline bool_t getpin_pressed(void) {
* @notapi
*/
static inline void aquire_bus(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for aquire_bus for your board"
}
/**
@ -55,8 +52,7 @@ static inline void aquire_bus(void) {
* @notapi
*/
static inline void release_bus(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for release_bus for your board"
}
/**
@ -66,8 +62,7 @@ static inline void release_bus(void) {
* @notapi
*/
static inline uint16_t read_x_value(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for read_x_value for your board"
}
/**
@ -77,9 +72,9 @@ static inline uint16_t read_x_value(void) {
* @notapi
*/
static inline uint16_t read_y_value(void) {
/* Code here */
#error "ginputMCU: You must supply a definition for read_y_value for your board"
}
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
/** @} */

View File

@ -1,8 +0,0 @@
To use this driver:
1. Add in your gfxconf.h:
a) #define GFX_USE_GINPUT TRUE
b) #define GINPUT_NEED_MOUSE TRUE
2. To your makefile add the following lines:
include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk

View File

@ -22,13 +22,7 @@
#include "ginput/lld/mouse.h"
#if defined(GINPUT_MOUSE_USE_CUSTOM_BOARD) && GINPUT_MOUSE_USE_CUSTOM_BOARD
#include "ginput_lld_mouse_board.h"
#elif defined(BOARD_EMBEST_DMSTF4BB)
#include "ginput_lld_mouse_board_embest_dmstf4bb.h"
#else
#include "ginput_lld_mouse_board_example.h"
#endif
#ifndef STMP811_NO_GPIO_IRQPIN
#define STMP811_NO_GPIO_IRQPIN FALSE

View File

@ -6,7 +6,7 @@
*/
/**
* @file drivers/ginput/touch/STMPE811/ginput_lld_mouse_board_example.h
* @file drivers/ginput/touch/STMPE811/ginput_lld_mouse_board_template.h
* @brief GINPUT Touch low level driver source for the STMPE811 on the example board.
*
* @defgroup Mouse Mouse
@ -22,10 +22,8 @@
*
* @notapi
*/
static void init_board(void)
{
/* Code here */
#error "ginputSTMPE811: You must supply a definition for init_board for your board"
static void init_board(void) {
}
/**
@ -34,10 +32,8 @@ static void init_board(void)
*
* @notapi
*/
static inline bool_t getpin_irq(void)
{
/* Code here */
#error "ginputSTMPE811: You must supply a definition for getpin_irq for your board"
static inline bool_t getpin_irq(void) {
}
/**
@ -49,10 +45,8 @@ static inline bool_t getpin_irq(void)
*
* @notapi
*/
static void write_reg(uint8_t reg, uint8_t n, uint16_t val)
{
/* Code here */
#error "ginputSTMPE811: You must supply a definition for write_reg for your board"
static void write_reg(uint8_t reg, uint8_t n, uint16_t val) {
}
/**
@ -65,11 +59,10 @@ static void write_reg(uint8_t reg, uint8_t n, uint16_t val)
*
* @notapi
*/
static uint16_t read_reg(uint8_t reg, uint8_t n)
{
/* Code here */
#error "ginputSTMPE811: You must supply a definition for read_reg for your board"
static uint16_t read_reg(uint8_t reg, uint8_t n) {
}
#endif /* _GINPUT_LLD_MOUSE_BOARD_H */
/** @} */

View File

@ -1,20 +0,0 @@
The STMPE811 driver comes with two different #defines to perfectly fit
your application:
STMPE811_NO_GPIO_IRQPIN
This Macro is meant to be set in your board file. When you set this macro to
TRUE, the GINPUT module will not use the IRQ lane which might be connected
to a GPIO pin to recognize interrupts by the STMPE811 controller. This
costs a few more I2C calls.
When the interrupt IRQ pin is connected to a GPIO of your MCU, set this
macro to FALSE.
STMP811_SLOW_CPU
If you have a slow CPU and you need to take care of your resources, you can
set this macro TRUE. This will save some IRQs and therefore a few I2C calls.
The disadvantage is a little higher response time.
If you don't want to draw continious lines on your display, it's recommended
to set this to TRUE anyways.