Cleanups and updates to the STM32F429i-Discovery gdisp driver

ugfx_release_2.6
inmarket 2014-11-07 12:04:03 +10:00
parent bd041926b4
commit d0f8c12a2d
3 changed files with 1 additions and 725 deletions

View File

@ -29,7 +29,7 @@ typedef struct ltdcLayerConfig {
LLDCOLOR_TYPE *frame; // Frame buffer address
coord_t width, height; // Frame size in pixels
coord_t pitch; // Line pitch, in bytes
ltdc_pixfmt_t fmt; // Pixel format in LTDC format
uint16_t fmt; // Pixel format in LTDC format
// window
coord_t x, y; // Start pixel position of the virtual layer

View File

@ -94,319 +94,4 @@
#define ILI9341_IM_4LSI_1 0x6 /**< 4-line serial, mode 1.*/
#define ILI9341_IM_4LSI_2 0xE /**< 4-line serial, mode 2.*/
// ILI9341 command params (little endian)
#pragma pack(push, 1)
typedef union {
struct ILI9341ParamBits_GET_ID_INFO {
uint8_t reserved_;
uint8_t ID1;
uint8_t ID2;
uint8_t ID3;
} bits;
uint8_t bytes[4];
} ILI9341Params_GET_ID_INFO;
typedef union {
struct ILI9341ParamBits_GET_STATUS {
unsigned _reserved_1 : 5; /* D[ 4: 0] */
unsigned tearing_mode : 1; /* D[ 5] */
unsigned gamma_curve : 3; /* D[ 8: 6] */
unsigned tearing : 1; /* D[ 9] */
unsigned display : 1; /* D[10] */
unsigned all_on : 1; /* D[11] */
unsigned all_off : 1; /* D[12] */
unsigned invert : 1; /* D[13] */
unsigned _reserved_2 : 1; /* D[14] */
unsigned vscroll : 1; /* D[15] */
unsigned normal : 1; /* D[16] */
unsigned sleep : 1; /* D[17] */
unsigned partial : 1; /* D[18] */
unsigned idle : 1; /* D[19] */
unsigned pixel_format : 3; /* D[22:20] */
unsigned _reserved_3 : 2; /* D[24:23] */
unsigned hrefr_rtl_nltr : 1; /* D[25] */
unsigned bgr_nrgb : 1; /* D[26] */
unsigned vrefr_btt_nttb : 1; /* D[27] */
unsigned transpose : 1; /* D[28] */
unsigned coladr_rtl_nltr : 1; /* D[29] */
unsigned rowadr_btt_nttb : 1; /* D[30] */
unsigned booster : 1; /* D[31] */
} bits;
uint8_t bytes[4];
} ILI9341Params_GET_STATUS;
typedef union {
struct ILI9341ParamBits_GET_PWR_MODE {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned display : 1; /* D[2] */
unsigned normal : 1; /* D[3] */
unsigned sleep : 1; /* D[4] */
unsigned partial : 1; /* D[5] */
unsigned idle : 1; /* D[6] */
unsigned booster : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_PWR_MODE;
typedef union {
struct ILI9341ParamBits_GET_MADCTL {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned refr_rtl_nltr : 1; /* D[2] */
unsigned bgr_nrgb : 1; /* D[3] */
unsigned refr_btt_nttb : 1; /* D[4] */
unsigned invert : 1; /* D[5] */
unsigned rtl_nltr : 1; /* D[6] */
unsigned btt_nttb : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_MADCTL;
typedef union {
struct ILI9341ParamBits_GET_PIX_FMT {
unsigned DBI : 3; /* D[2:0] */
unsigned _reserved_1 : 1; /* D[3] */
unsigned DPI : 3; /* D[6:4] */
unsigned RIM : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_PIX_FMT;
typedef union {
struct ILI9341ParamBits_GET_IMG_FMT {
unsigned gamma_curve : 3; /* D[2:0] */
unsigned _reserved_1 : 5; /* D[7:3] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_IMG_FMT;
typedef union {
struct ILI9341ParamBits_GET_SIG_MODE {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned data_enable : 1; /* D[2] */
unsigned pixel_clock : 1; /* D[3] */
unsigned vsync : 1; /* D[4] */
unsigned hsync : 1; /* D[5] */
unsigned tearing_mode : 1; /* D[6] */
unsigned tearing : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_SIG_MODE;
typedef union {
struct ILI9341ParamBits_GET_SELF_DIAG {
unsigned _reserved_1 : 6; /* D[5:0] */
unsigned func_err : 1; /* D[6] */
unsigned reg_err : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_SELF_DIAG;
typedef union {
struct ILI9341ParamBits_SET_GAMMA {
uint8_t gamma_curve; /* D[7:0] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_GAMMA;
typedef union {
struct ILI9341ParamBits_SET_COL_ADDR {
uint8_t SC_15_8; /* D[ 7: 0] */
uint8_t SC_7_0; /* D[15: 8] */
uint8_t EC_15_8; /* D[23:16] */
uint8_t EC_7_0; /* D[31:24] */
} bits;
uint8_t bytes[4];
} ILI9341Params_SET_COL_ADDR;
typedef union {
struct ILI9341ParamBits_SET_PAGE_ADDR {
uint8_t SP_15_8; /* D[ 7: 0] */
uint8_t SP_7_0; /* D[15: 8] */
uint8_t EP_15_8; /* D[23:16] */
uint8_t EP_7_0; /* D[31:24] */
} bits;
uint8_t bytes[4];
} ILI9341Params_SET_PAGE_ADDR;
typedef union {
struct ILI9341ParamBits_SET_PARTIAL_AREA {
uint8_t SR_15_8; /* D[ 7: 0] */
uint8_t SR_7_0; /* D[15: 8] */
uint8_t ER_15_8; /* D[23:16] */
uint8_t ER_7_0; /* D[31:24] */
} bits;
uint8_t bytes[4];
} ILI9341Params_SET_PARTIAL_AREA;
typedef union {
struct ILI9341ParamBits_SET_VSCROLL {
uint8_t TFA_15_8; /* D[ 7: 0] */
uint8_t TFA_7_0; /* D[15: 8] */
uint8_t VSA_15_8; /* D[23:16] */
uint8_t VSA_7_0; /* D[31:24] */
uint8_t BFA_15_8; /* D[39:32] */
uint8_t BFA_7_0; /* D[47:40] */
} bits;
uint8_t bytes[6];
} ILI9341Params_SET_VSCROLL;
typedef union {
struct ILI9341ParamBits_CMD_TEARING_ON {
unsigned M : 1; /* D[0] */
unsigned _reserved_1 : 7; /* D[7:1] */
} bits;
uint8_t bytes[1];
} ILI9341Params_CMD_TEARING_ON;
typedef union {
struct ILI9341ParamBits_SET_MEM_ACS_CTL {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned MH : 1; /* D[2] */
unsigned BGR : 1; /* D[3] */
unsigned ML : 1; /* D[4] */
unsigned MV : 1; /* D[5] */
unsigned MX : 1; /* D[6] */
unsigned MY : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_MEM_ACS_CTL;
typedef union {
struct ILI9341ParamBits_SET_VSCROLL_ADDR {
uint8_t VSP_15_8; /* D[ 7: 0] */
uint8_t VSP_7_0; /* D[15: 8] */
} bits;
uint8_t bytes[2];
} ILI9341Params_SET_VSCROLL_ADDR;
typedef union {
struct ILI9341ParamBits_SET_PIX_FMT {
unsigned DBI : 3; /* D[2:0] */
unsigned _reserved_1 : 1; /* D[3] */
unsigned DPI : 3; /* D[4:6] */
unsigned _reserved_2 : 1; /* D[7] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_PIX_FMT;
typedef union {
struct ILI9341ParamBits_SET_TEAR_SCANLINE {
uint8_t STS_8; /* D[ 7: 0] */
uint8_t STS_7_0; /* D[15: 8] */
} bits;
uint8_t bytes[4];
} ILI9341Params_SET_TEAR_SCANLINE;
typedef union {
struct ILI9341ParamBits_GET_TEAR_SCANLINE {
uint8_t GTS_9_8; /* D[ 7: 0] */
uint8_t GTS_7_0; /* D[15: 8] */
} bits;
uint8_t bytes[2];
} ILI9341Params_GET_TEAR_SCANLINE;
typedef union {
struct ILI9341ParamBits_SET_BRIGHTNESS {
uint8_t DBV; /* D[7:0] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_BRIGHTNESS;
typedef union {
struct ILI9341ParamBits_GET_BRIGHTNESS {
uint8_t DBV; /* D[7:0] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_BRIGHTNESS;
typedef union {
struct ILI9341ParamBits_SET_DISPLAY_CTL {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned BL : 1; /* D[2] */
unsigned DD : 1; /* D[3] */
unsigned _reserved_2 : 1; /* D[4] */
unsigned BCTRL : 1; /* D[5] */
unsigned _reserved_3 : 1; /* D[7:6] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_DISPLAY_CTL;
typedef union {
struct ILI9341ParamBits_GET_DISPLAY_CTL {
unsigned _reserved_1 : 2; /* D[1:0] */
unsigned BL : 1; /* D[2] */
unsigned DD : 1; /* D[3] */
unsigned _reserved_2 : 1; /* D[4] */
unsigned BCTRL : 1; /* D[5] */
unsigned _reserved_3 : 1; /* D[7:6] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_DISPLAY_CTL;
typedef union {
struct ILI9341ParamBits_SET_CABC {
unsigned C : 2; /* D[1:0] */
unsigned _reserved_1 : 6; /* D[7:2] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_CABC;
typedef union {
struct ILI9341ParamBits_GET_CABC {
unsigned C : 2; /* D[1:0] */
unsigned _reserved_1 : 6; /* D[7:2] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_CABC;
typedef union {
struct ILI9341ParamBits_SET_CABC_MIN {
uint8_t CMB; /* D[7:0] */
} bits;
uint8_t bytes[1];
} ILI9341Params_SET_CABC_MIN;
typedef union {
struct ILI9341ParamBits_GET_CABC_MIN {
uint8_t CMB; /* D[7:0] */
} bits;
uint8_t bytes[1];
} ILI9341Params_GET_CABC_MIN;
#if 0 /* TODO: Extended command structs.*/
typedef union {
struct ILI9341ParamBits {
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
} bits;
uint8_t bytes[1];
} ILI9341Params_;
typedef union {
struct ILI9341ParamBits {
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
unsigned : 1; /* D[] */
} bits;
uint8_t bytes[1];
} ILI9341Params_;
#endif /*0*/
#pragma pack(pop)
#endif /* ILI9341_H */

View File

@ -135,417 +135,8 @@
#define LTDC_COLOR_AQUA 0xFF00FFFF
#define LTDC_COLOR_WHITE 0xFFFFFFFF
/**/
#define STM32_LTDC_EV_HANDLER LTDC_EV_IRQHandler
#define STM32_LTDC_ER_HANDLER LTDC_ER_IRQHandler
#define STM32_LTDC_EV_NUMBER LTDC_IRQn
#define STM32_LTDC_ER_NUMBER LTDC_ER_IRQn
#define LTDC_EV_IRQHandler Vector1A0
#define LTDC_ER_IRQHandler Vector1A4
#define STM32_LTDC_EV_IRQ_PRIORITY 11
#define STM32_LTDC_ER_IRQ_PRIORITY 11
#define LTDC_USE_WAIT TRUE
#define LTDC_USE_SOFTWARE_CONVERSIONS TRUE
#ifndef STM32F429_439xx
#error "Currently only STM32F429xx and STM32F439xx are supported"
#endif
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/
/* Complex types forwarding.*/
typedef union ltdc_coloralias_t ltdc_coloralias_t;
typedef struct ltdc_window_t ltdc_window_t;
typedef struct ltdc_frame_t ltdc_frame_t;
typedef struct ltdc_laycfg_t ltdc_laycfg_t;
typedef struct LTDCConfig LTDCConfig;
typedef enum ltdc_state_t ltdc_state_t;
typedef struct LTDCDriver LTDCDriver;
/**
* @name LTDC Data types
* @{
*/
/**
* @brief LTDC generic color.
*/
typedef uint32_t ltdc_color_t;
/**
* @brief LTDC color aliases.
* @detail Mapped with ARGB-8888, except for luminance (L mapped onto B).
* Padding fields prefixed with <tt>'x'</tt>, which should be clear
* (all 0) before compression and set (all 1) after expansion.
*/
typedef union ltdc_coloralias_t {
struct {
unsigned b : 8;
unsigned g : 8;
unsigned r : 8;
unsigned a : 8;
} argb8888; /**< Mapped ARGB-8888 bits.*/
struct {
unsigned b : 8;
unsigned g : 8;
unsigned r : 8;
unsigned xa : 8;
} rgb888; /**< Mapped RGB-888 bits.*/
struct {
unsigned xb : 3;
unsigned b : 5;
unsigned xg : 2;
unsigned g : 6;
unsigned xr : 3;
unsigned r : 5;
unsigned xa : 8;
} rgb565; /**< Mapped RGB-565 bits.*/
struct {
unsigned xb : 3;
unsigned b : 5;
unsigned xg : 3;
unsigned g : 5;
unsigned xr : 3;
unsigned r : 5;
unsigned xa : 7;
unsigned a : 1;
} argb1555; /**< Mapped ARGB-1555 values.*/
struct {
unsigned xb : 4;
unsigned b : 4;
unsigned xg : 4;
unsigned g : 4;
unsigned xr : 4;
unsigned r : 4;
unsigned xa : 4;
unsigned a : 4;
} argb4444; /**< Mapped ARGB-4444 values.*/
struct {
unsigned l : 8;
unsigned x : 16;
unsigned xa : 8;
} l8; /**< Mapped L-8 bits.*/
struct {
unsigned xl : 4;
unsigned l : 4;
unsigned x : 16;
unsigned xa : 4;
unsigned a : 4;
} al44; /**< Mapped AL-44 bits.*/
struct {
unsigned l : 8;
unsigned x : 16;
unsigned a : 8;
} al88; /**< Mapped AL-88 bits.*/
ltdc_color_t aliased; /**< Aliased raw bits.*/
} ltdc_coloralias_t;
/**
* @brief LTDC layer identifier.
*/
typedef uint32_t ltdc_layerid_t;
/**
* @brief LTDC pixel format.
*/
typedef uint32_t ltdc_pixfmt_t;
/**
* @brief LTDC blending factor.
*/
typedef uint32_t ltdc_blendf_t;
/**
* @brief LTDC ISR callback.
*/
typedef void (*ltdc_isrcb_t)(LTDCDriver *ltdcp);
/**
* @brief LTDC window specifications.
*/
typedef struct ltdc_window_t {
uint16_t hstart; /**< Horizontal start pixel (left).*/
uint16_t hstop; /**< Horizontal stop pixel (right).*/
uint16_t vstart; /**< Vertical start pixel (top).*/
uint16_t vstop; /**< Vertical stop pixel (bottom).*/
} ltdc_window_t;
/**
* @brief LTDC frame specifications.
*/
typedef struct ltdc_frame_t {
void *bufferp; /**< Frame buffer address.*/
uint16_t width; /**< Frame width, in pixels.*/
uint16_t height; /**< Frame height, in pixels.*/
size_t pitch; /**< Line pitch, in bytes.*/
ltdc_pixfmt_t fmt; /**< Pixel format.*/
} ltdc_frame_t;
/**
* @brief LTDC configuration flags.
*/
typedef uint8_t ltdc_flags_t;
/**
* @brief LTDC startup layer configuration.
*/
typedef struct ltdc_laycfg_t {
const ltdc_frame_t *frame; /**< Frame buffer specifications.*/
const ltdc_window_t *window; /**< Window specifications.*/
ltdc_color_t def_color; /**< Default color, ARGB-8888.*/
uint8_t const_alpha; /**< Constant alpha factor.*/
ltdc_color_t key_color; /**< Color key.*/
const ltdc_color_t *pal_colors; /**< Palette colors, or @p NULL.*/
uint16_t pal_length; /**< Palette length, or @p 0.*/
ltdc_blendf_t blending; /**< Blending factors.*/
ltdc_flags_t flags; /**< Layer configuration flags.*/
} ltdc_laycfg_t;
/**
* @brief LTDC driver configuration.
*/
typedef struct LTDCConfig {
/* Display specifications.*/
uint16_t screen_width; /**< Screen pixel width.*/
uint16_t screen_height; /**< Screen pixel height.*/
uint16_t hsync_width; /**< Horizontal sync pixel width.*/
uint16_t vsync_height; /**< Vertical sync pixel height.*/
uint16_t hbp_width; /**< Horizontal back porch pixel width.*/
uint16_t vbp_height; /**< Vertical back porch pixel height.*/
uint16_t hfp_width; /**< Horizontal front porch pixel width.*/
uint16_t vfp_height; /**< Vertical front porch pixel height.*/
ltdc_flags_t flags; /**< Driver configuration flags.*/
/* ISR callbacks.*/
ltdc_isrcb_t line_isr; /**< Line Interrupt ISR, or @p NULL.*/
ltdc_isrcb_t rr_isr; /**< Register Reload ISR, or @p NULL.*/
ltdc_isrcb_t fuerr_isr; /**< FIFO Underrun ISR, or @p NULL.*/
ltdc_isrcb_t terr_isr; /**< Transfer Error ISR, or @p NULL.*/
/* Layer and color settings.*/
ltdc_color_t clear_color; /**< Clear screen color, RGB-888.*/
const ltdc_laycfg_t *bg_laycfg; /**< Background layer specs, or @p NULL.*/
const ltdc_laycfg_t *fg_laycfg; /**< Foreground layer specs, or @p NULL.*/
} LTDCConfig;
/*===========================================================================*/
/* Driver macros. */
/*===========================================================================*/
/**
* @brief Makes an ARGB-8888 value from byte components.
*
* @param[in] a alpha byte component
* @param[in] r red byte component
* @param[in] g green byte component
* @param[in] b blue byte component
*
* @return color in ARGB-8888 format
*
* @api
*/
#define ltdcMakeARGB8888(a, r, g, b) \
((((ltdc_color_t)(a) & 0xFF) << 24) | \
(((ltdc_color_t)(r) & 0xFF) << 16) | \
(((ltdc_color_t)(g) & 0xFF) << 8) | \
(((ltdc_color_t)(b) & 0xFF) << 0))
/**
* @brief Compute bytes per pixel.
* @details Computes the bytes per pixel for the specified pixel format.
* Rounds to the ceiling.
*
* @param[in] fmt pixel format
*
* @return bytes per pixel
*
* @api
*/
#define ltdcBytesPerPixel(fmt) \
((ltdcBitsPerPixel(fmt) + 7) >> 3)
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
/* Global methods.*/
ltdc_flags_t ltdcGetEnableFlagsI(LTDCDriver *ltdcp);
ltdc_flags_t ltdcGetEnableFlags(LTDCDriver *ltdcp);
void ltdcSetEnableFlagsI(LTDCDriver *ltdcp, ltdc_flags_t flags);
void ltdcSetEnableFlags(LTDCDriver *ltdcp, ltdc_flags_t flags);
bool_t ltdcIsReloadingI(LTDCDriver *ltdcp);
bool_t ltdcIsReloading(LTDCDriver *ltdcp);
void ltdcStartReloadI(LTDCDriver *ltdcp, bool_t immediately);
void ltdcStartReload(LTDCDriver *ltdcp, bool_t immediately);
void ltdcReloadS(LTDCDriver *ltdcp, bool_t immediately);
void ltdcReload(LTDCDriver *ltdcp, bool_t immediately);
bool_t ltdcIsDitheringEnabledI(LTDCDriver *ltdcp);
bool_t ltdcIsDitheringEnabled(LTDCDriver *ltdcp);
void ltdcEnableDitheringI(LTDCDriver *ltdcp);
void ltdcEnableDithering(LTDCDriver *ltdcp);
void ltdcDisableDitheringI(LTDCDriver *ltdcp);
void ltdcDisableDithering(LTDCDriver *ltdcp);
ltdc_color_t ltdcGetClearColorI(LTDCDriver *ltdcp);
ltdc_color_t ltdcGetClearColor(LTDCDriver *ltdcp);
void ltdcSetClearColorI(LTDCDriver *ltdcp, ltdc_color_t c);
void ltdcSetClearColor(LTDCDriver *ltdcp, ltdc_color_t c);
uint16_t ltdcGetLineInterruptPosI(LTDCDriver *ltdcp);
uint16_t ltdcGetLineInterruptPos(LTDCDriver *ltdcp);
void ltdcSetLineInterruptPosI(LTDCDriver *ltdcp, uint16_t line);
void ltdcSetLineInterruptPos(LTDCDriver *ltdcp, uint16_t line);
bool_t ltdcIsLineInterruptEnabledI(LTDCDriver *ltdcp);
bool_t ltdcIsLineInterruptEnabled(LTDCDriver *ltdcp);
void ltdcEnableLineInterruptI(LTDCDriver *ltdcp);
void ltdcEnableLineInterrupt(LTDCDriver *ltdcp);
void ltdcDisableLineInterruptI(LTDCDriver *ltdcp);
void ltdcDisableLineInterrupt(LTDCDriver *ltdcp);
void ltdcGetCurrentPosI(LTDCDriver *ltdcp, uint16_t *xp, uint16_t *yp);
void ltdcGetCurrentPos(LTDCDriver *ltdcp, uint16_t *xp, uint16_t *yp);
/* Background layer methods.*/
ltdc_flags_t ltdcBgGetEnableFlagsI(LTDCDriver *ltdcp);
ltdc_flags_t ltdcBgGetEnableFlags(LTDCDriver *ltdcp);
void ltdcBgSetEnableFlagsI(LTDCDriver *ltdcp, ltdc_flags_t flags);
void ltdcBgSetEnableFlags(LTDCDriver *ltdcp, ltdc_flags_t flags);
bool_t ltdcBgIsEnabledI(LTDCDriver *ltdcp);
bool_t ltdcBgIsEnabled(LTDCDriver *ltdcp);
void ltdcBgEnableI(LTDCDriver *ltdcp);
void ltdcBgEnable(LTDCDriver *ltdcp);
void ltdcBgDisableI(LTDCDriver *ltdcp);
void ltdcBgDisable(LTDCDriver *ltdcp);
bool_t ltdcBgIsPaletteEnabledI(LTDCDriver *ltdcp);
bool_t ltdcBgIsPaletteEnabled(LTDCDriver *ltdcp);
void ltdcBgEnablePaletteI(LTDCDriver *ltdcp);
void ltdcBgEnablePalette(LTDCDriver *ltdcp);
void ltdcBgDisablePaletteI(LTDCDriver *ltdcp);
void ltdcBgDisablePalette(LTDCDriver *ltdcp);
void ltdcBgSetPaletteColorI(LTDCDriver *ltdcp, uint8_t slot, ltdc_color_t c);
void ltdcBgSetPaletteColor(LTDCDriver *ltdcp, uint8_t slot, ltdc_color_t c);
void ltdcBgSetPaletteI(LTDCDriver *ltdcp, const ltdc_color_t colors[],
uint16_t length);
void ltdcBgSetPalette(LTDCDriver *ltdcp, const ltdc_color_t colors[],
uint16_t length);
ltdc_pixfmt_t ltdcBgGetPixelFormatI(LTDCDriver *ltdcp);
ltdc_pixfmt_t ltdcBgGetPixelFormat(LTDCDriver *ltdcp);
void ltdcBgSetPixelFormatI(LTDCDriver *ltdcp, ltdc_pixfmt_t fmt);
void ltdcBgSetPixelFormat(LTDCDriver *ltdcp, ltdc_pixfmt_t fmt);
bool_t ltdcBgIsKeyingEnabledI(LTDCDriver *ltdcp);
bool_t ltdcBgIsKeyingEnabled(LTDCDriver *ltdcp);
void ltdcBgEnableKeyingI(LTDCDriver *ltdcp);
void ltdcBgEnableKeying(LTDCDriver *ltdcp);
void ltdcBgDisableKeyingI(LTDCDriver *ltdcp);
void ltdcBgDisableKeying(LTDCDriver *ltdcp);
ltdc_color_t ltdcBgGetKeyingColorI(LTDCDriver *ltdcp);
ltdc_color_t ltdcBgGetKeyingColor(LTDCDriver *ltdcp);
void ltdcBgSetKeyingColorI(LTDCDriver *ltdcp, ltdc_color_t c);
void ltdcBgSetKeyingColor(LTDCDriver *ltdcp, ltdc_color_t c);
uint8_t ltdcBgGetConstantAlphaI(LTDCDriver *ltdcp);
uint8_t ltdcBgGetConstantAlpha(LTDCDriver *ltdcp);
void ltdcBgSetConstantAlphaI(LTDCDriver *ltdcp, uint8_t a);
void ltdcBgSetConstantAlpha(LTDCDriver *ltdcp, uint8_t a);
ltdc_color_t ltdcBgGetDefaultColorI(LTDCDriver *ltdcp);
ltdc_color_t ltdcBgGetDefaultColor(LTDCDriver *ltdcp);
void ltdcBgSetDefaultColorI(LTDCDriver *ltdcp, ltdc_color_t c);
void ltdcBgSetDefaultColor(LTDCDriver *ltdcp, ltdc_color_t c);
ltdc_blendf_t ltdcBgGetBlendingFactorsI(LTDCDriver *ltdcp);
ltdc_blendf_t ltdcBgGetBlendingFactors(LTDCDriver *ltdcp);
void ltdcBgSetBlendingFactorsI(LTDCDriver *ltdcp, ltdc_blendf_t bf);
void ltdcBgSetBlendingFactors(LTDCDriver *ltdcp, ltdc_blendf_t bf);
void ltdcBgGetWindowI(LTDCDriver *ltdcp, ltdc_window_t *windowp);
void ltdcBgGetWindow(LTDCDriver *ltdcp, ltdc_window_t *windowp);
void ltdcBgSetWindowI(LTDCDriver *ltdcp, const ltdc_window_t *windowp);
void ltdcBgSetWindow(LTDCDriver *ltdcp, const ltdc_window_t *windowp);
void ltdcBgSetInvalidWindowI(LTDCDriver *ltdcp);
void ltdcBgSetInvalidWindow(LTDCDriver *ltdcp);
void ltdcBgGetFrameI(LTDCDriver *ltdcp, ltdc_frame_t *framep);
void ltdcBgGetFrame(LTDCDriver *ltdcp, ltdc_frame_t *framep);
void ltdcBgSetFrameI(LTDCDriver *ltdcp, const ltdc_frame_t *framep);
void ltdcBgSetFrame(LTDCDriver *ltdcp, const ltdc_frame_t *framep);
void *ltdcBgGetFrameAddressI(LTDCDriver *ltdcp);
void *ltdcBgGetFrameAddress(LTDCDriver *ltdcp);
void ltdcBgSetFrameAddressI(LTDCDriver *ltdcp, void *bufferp);
void ltdcBgSetFrameAddress(LTDCDriver *ltdcp, void *bufferp);
void ltdcBgGetLayerI(LTDCDriver *ltdcp, ltdc_laycfg_t *cfgp);
void ltdcBgGetLayer(LTDCDriver *ltdcp, ltdc_laycfg_t *cfgp);
void ltdcBgSetConfigI(LTDCDriver *ltdcp, const ltdc_laycfg_t *cfgp);
void ltdcBgSetConfig(LTDCDriver *ltdcp, const ltdc_laycfg_t *cfgp);
/* Foreground layer methods.*/
ltdc_flags_t ltdcFgGetEnableFlagsI(LTDCDriver *ltdcp);
ltdc_flags_t ltdcFgGetEnableFlags(LTDCDriver *ltdcp);
void ltdcFgSetEnableFlagsI(LTDCDriver *ltdcp, ltdc_flags_t flags);
void ltdcFgSetEnableFlags(LTDCDriver *ltdcp, ltdc_flags_t flags);
bool_t ltdcFgIsEnabledI(LTDCDriver *ltdcp);
bool_t ltdcFgIsEnabled(LTDCDriver *ltdcp);
void ltdcFgEnableI(LTDCDriver *ltdcp);
void ltdcFgEnable(LTDCDriver *ltdcp);
void ltdcFgDisableI(LTDCDriver *ltdcp);
void ltdcFgDisable(LTDCDriver *ltdcp);
bool_t ltdcFgIsPaletteEnabledI(LTDCDriver *ltdcp);
bool_t ltdcFgIsPaletteEnabled(LTDCDriver *ltdcp);
void ltdcFgEnablePaletteI(LTDCDriver *ltdcp);
void ltdcFgEnablePalette(LTDCDriver *ltdcp);
void ltdcFgDisablePaletteI(LTDCDriver *ltdcp);
void ltdcFgDisablePalette(LTDCDriver *ltdcp);
void ltdcFgSetPaletteColorI(LTDCDriver *ltdcp, uint8_t slot, ltdc_color_t c);
void ltdcFgSetPaletteColor(LTDCDriver *ltdcp, uint8_t slot, ltdc_color_t c);
void ltdcFgSetPaletteI(LTDCDriver *ltdcp, const ltdc_color_t colors[],
uint16_t length);
void ltdcFgSetPalette(LTDCDriver *ltdcp, const ltdc_color_t colors[],
uint16_t length);
ltdc_pixfmt_t ltdcFgGetPixelFormatI(LTDCDriver *ltdcp);
ltdc_pixfmt_t ltdcFgGetPixelFormat(LTDCDriver *ltdcp);
void ltdcFgSetPixelFormatI(LTDCDriver *ltdcp, ltdc_pixfmt_t fmt);
void ltdcFgSetPixelFormat(LTDCDriver *ltdcp, ltdc_pixfmt_t fmt);
bool_t ltdcFgIsKeyingEnabledI(LTDCDriver *ltdcp);
bool_t ltdcFgIsKeyingEnabled(LTDCDriver *ltdcp);
void ltdcFgEnableKeyingI(LTDCDriver *ltdcp);
void ltdcFgEnableKeying(LTDCDriver *ltdcp);
void ltdcFgDisableKeyingI(LTDCDriver *ltdcp);
void ltdcFgDisableKeying(LTDCDriver *ltdcp);
ltdc_color_t ltdcFgGetKeyingColorI(LTDCDriver *ltdcp);
ltdc_color_t ltdcFgGetKeyingColor(LTDCDriver *ltdcp);
void ltdcFgSetKeyingColorI(LTDCDriver *ltdcp, ltdc_color_t c);
void ltdcFgSetKeyingColor(LTDCDriver *ltdcp, ltdc_color_t c);
uint8_t ltdcFgGetConstantAlphaI(LTDCDriver *ltdcp);
uint8_t ltdcFgGetConstantAlpha(LTDCDriver *ltdcp);
void ltdcFgSetConstantAlphaI(LTDCDriver *ltdcp, uint8_t a);
void ltdcFgSetConstantAlpha(LTDCDriver *ltdcp, uint8_t a);
ltdc_color_t ltdcFgGetDefaultColorI(LTDCDriver *ltdcp);
ltdc_color_t ltdcFgGetDefaultColor(LTDCDriver *ltdcp);
void ltdcFgSetDefaultColorI(LTDCDriver *ltdcp, ltdc_color_t c);
void ltdcFgSetDefaultColor(LTDCDriver *ltdcp, ltdc_color_t c);
ltdc_blendf_t ltdcFgGetBlendingFactorsI(LTDCDriver *ltdcp);
ltdc_blendf_t ltdcFgGetBlendingFactors(LTDCDriver *ltdcp);
void ltdcFgSetBlendingFactorsI(LTDCDriver *ltdcp, ltdc_blendf_t bf);
void ltdcFgSetBlendingFactors(LTDCDriver *ltdcp, ltdc_blendf_t bf);
void ltdcFgGetWindowI(LTDCDriver *ltdcp, ltdc_window_t *windowp);
void ltdcFgGetWindow(LTDCDriver *ltdcp, ltdc_window_t *windowp);
void ltdcFgSetWindowI(LTDCDriver *ltdcp, const ltdc_window_t *windowp);
void ltdcFgSetWindow(LTDCDriver *ltdcp, const ltdc_window_t *windowp);
void ltdcFgSetInvalidWindowI(LTDCDriver *ltdcp);
void ltdcFgSetInvalidWindow(LTDCDriver *ltdcp);
void ltdcFgGetFrameI(LTDCDriver *ltdcp, ltdc_frame_t *framep);
void ltdcFgGetFrame(LTDCDriver *ltdcp, ltdc_frame_t *framep);
void ltdcFgSetFrameI(LTDCDriver *ltdcp, const ltdc_frame_t *framep);
void ltdcFgSetFrame(LTDCDriver *ltdcp, const ltdc_frame_t *framep);
void *ltdcFgGetFrameAddressI(LTDCDriver *ltdcp);
void *ltdcFgGetFrameAddress(LTDCDriver *ltdcp);
void ltdcFgSetFrameAddressI(LTDCDriver *ltdcp, void *bufferp);
void ltdcFgSetFrameAddress(LTDCDriver *ltdcp, void *bufferp);
void ltdcFgGetLayerI(LTDCDriver *ltdcp, ltdc_laycfg_t *cfgp);
void ltdcFgGetLayer(LTDCDriver *ltdcp, ltdc_laycfg_t *cfgp);
void ltdcFgSetConfigI(LTDCDriver *ltdcp, const ltdc_laycfg_t *cfgp);
void ltdcFgSetConfig(LTDCDriver *ltdcp, const ltdc_laycfg_t *cfgp);
/* Helper functions.*/
size_t ltdcBitsPerPixel(ltdc_pixfmt_t fmt);
#if LTDC_USE_SOFTWARE_CONVERSIONS || defined(__DOXYGEN__)
ltdc_color_t ltdcFromARGB8888(ltdc_color_t c, ltdc_pixfmt_t fmt);
ltdc_color_t ltdcToARGB8888(ltdc_color_t c, ltdc_pixfmt_t fmt);
#endif /* LTDC_USE_SOFTWARE_CONVERSIONS */
#endif /* STM32_LTDC_H */