This patch includes initial support for FT800 display driver. It includes basic features. It can be easily extended with more FT800 display list and co-processor features. Signed-off-by: Hubert Miś <hubert.mis@gmail.com>
630 lines
20 KiB
C
630 lines
20 KiB
C
/*
|
|
* Copyright (c) 2021 Hubert Miś
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief FT8XX reference API
|
|
*/
|
|
|
|
#ifndef ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_
|
|
#define ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <drivers/misc/ft8xx/ft8xx_copro.h>
|
|
#include <drivers/misc/ft8xx/ft8xx_common.h>
|
|
#include <drivers/misc/ft8xx/ft8xx_dl.h>
|
|
#include <drivers/misc/ft8xx/ft8xx_memory.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief FT8xx reference API
|
|
*
|
|
* API defined according to FT800 Programmers Guide API reference definition.
|
|
*
|
|
* @note Function names defined in this header may easily collide with names
|
|
* provided by other modules. Include this header with caution. If naming
|
|
* conflict occurs instead of including this header, use @c ft8xx_
|
|
* prefixed names.
|
|
*
|
|
* @defgroup ft8xx_reference_api FT8xx reference API
|
|
* @ingroup ft8xx_interface
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Write 1 byte (8 bits) to FT8xx memory
|
|
*
|
|
* @param address Memory address to write to
|
|
* @param data Byte to write
|
|
*/
|
|
static inline void wr8(uint32_t address, uint8_t data)
|
|
{
|
|
ft8xx_wr8(address, data);
|
|
}
|
|
|
|
/**
|
|
* @brief Write 2 bytes (16 bits) to FT8xx memory
|
|
*
|
|
* @param address Memory address to write to
|
|
* @param data Value to write
|
|
*/
|
|
static inline void wr16(uint32_t address, uint16_t data)
|
|
{
|
|
ft8xx_wr16(address, data);
|
|
}
|
|
|
|
/**
|
|
* @brief Write 4 bytes (32 bits) to FT8xx memory
|
|
*
|
|
* @param address Memory address to write to
|
|
* @param data Value to write
|
|
*/
|
|
static inline void wr32(uint32_t address, uint32_t data)
|
|
{
|
|
ft8xx_wr32(address, data);
|
|
}
|
|
|
|
/**
|
|
* @brief Read 1 byte (8 bits) from FT8xx memory
|
|
*
|
|
* @param address Memory address to read from
|
|
*
|
|
* @return Value read from memory
|
|
*/
|
|
static inline uint8_t rd8(uint32_t address)
|
|
{
|
|
return ft8xx_rd8(address);
|
|
}
|
|
|
|
/**
|
|
* @brief Read 2 bytes (16 bits) from FT8xx memory
|
|
*
|
|
* @param address Memory address to read from
|
|
*
|
|
* @return Value read from memory
|
|
*/
|
|
static inline uint16_t rd16(uint32_t address)
|
|
{
|
|
return ft8xx_rd16(address);
|
|
}
|
|
|
|
/**
|
|
* @brief Read 4 bytes (32 bits) from FT8xx memory
|
|
*
|
|
* @param address Memory address to read from
|
|
*
|
|
* @return Value read from memory
|
|
*/
|
|
static inline uint32_t rd32(uint32_t address)
|
|
{
|
|
return ft8xx_rd32(address);
|
|
}
|
|
|
|
|
|
/** Co-processor widget is drawn in 3D effect */
|
|
#define OPT_3D FT8XX_OPT_3D
|
|
/** Co-processor option to decode the JPEG image to RGB565 format */
|
|
#define OPT_RGB565 FT8XX_OPT_RGB565
|
|
/** Co-processor option to decode the JPEG image to L8 format, i.e., monochrome */
|
|
#define OPT_MONO FT8XX_OPT_MONO
|
|
/** No display list commands generated for bitmap decoded from JPEG image */
|
|
#define OPT_NODL FT8XX_OPT_NODL
|
|
/** Co-processor widget is drawn without 3D effect */
|
|
#define OPT_FLAT FT8XX_OPT_FLAT
|
|
/** The number is treated as 32 bit signed integer */
|
|
#define OPT_SIGNED FT8XX_OPT_SIGNED
|
|
/** Co-processor widget centers horizontally */
|
|
#define OPT_CENTERX FT8XX_OPT_CENTERX
|
|
/** Co-processor widget centers vertically */
|
|
#define OPT_CENTERY FT8XX_OPT_CENTERY
|
|
/** Co-processor widget centers horizontally and vertically */
|
|
#define OPT_CENTER FT8XX_OPT_CENTER
|
|
/** The label on the Coprocessor widget is right justified */
|
|
#define OPT_RIGHTX FT8XX_OPT_RIGHTX
|
|
/** Co-processor widget has no background drawn */
|
|
#define OPT_NOBACK FT8XX_OPT_NOBACK
|
|
/** Co-processor clock widget is drawn without hour ticks.
|
|
* Gauge widget is drawn without major and minor ticks.
|
|
*/
|
|
#define OPT_NOTICKS FT8XX_OPT_NOTICKS
|
|
/** Co-processor clock widget is drawn without hour and minutes hands,
|
|
* only seconds hand is drawn
|
|
*/
|
|
#define OPT_NOHM FT8XX_OPT_NOHM
|
|
/** The Co-processor gauge has no pointer */
|
|
#define OPT_NOPOINTER FT8XX_OPT_NOPOINTER
|
|
/** Co-processor clock widget is drawn without seconds hand */
|
|
#define OPT_NOSECS FT8XX_OPT_NOSECS
|
|
/** Co-processor clock widget is drawn without hour, minutes and seconds hands */
|
|
#define OPT_NOHANDS FT8XX_OPT_NOHANDS
|
|
|
|
/**
|
|
* @brief Execute a display list command by co-processor engine
|
|
*
|
|
* @param command Display list command to execute
|
|
*/
|
|
static inline void cmd(uint32_t command)
|
|
{
|
|
ft8xx_copro_cmd(command);
|
|
}
|
|
|
|
/**
|
|
* @brief Start a new display list
|
|
*/
|
|
static inline void cmd_dlstart(void)
|
|
{
|
|
ft8xx_copro_cmd_dlstart();
|
|
}
|
|
|
|
/**
|
|
* @brief Swap the current display list
|
|
*/
|
|
static inline void cmd_swap(void)
|
|
{
|
|
ft8xx_copro_cmd_swap();
|
|
}
|
|
|
|
/**
|
|
* @brief Draw text
|
|
*
|
|
* By default (x,y) is the top-left pixel of the text and the value of
|
|
* @p options is zero. OPT_CENTERX centers the text horizontally, OPT_CENTERY
|
|
* centers it vertically. OPT_CENTER centers the text in both directions.
|
|
* OPT_RIGHTX right-justifies the text, so that the x is the rightmost pixel.
|
|
*
|
|
* @param x x-coordinate of text base, in pixels
|
|
* @param y y-coordinate of text base, in pixels
|
|
* @param font Font to use for text, 0-31. 16-31 are ROM fonts
|
|
* @param options Options to apply
|
|
* @param s Character string to display, terminated with a null character
|
|
*/
|
|
static inline void cmd_text(int16_t x,
|
|
int16_t y,
|
|
int16_t font,
|
|
uint16_t options,
|
|
const char *s)
|
|
{
|
|
ft8xx_copro_cmd_text(x, y, font, options, s);
|
|
}
|
|
|
|
/**
|
|
* @brief Draw a decimal number
|
|
*
|
|
* By default (@p x, @p y) is the top-left pixel of the text. OPT_CENTERX
|
|
* centers the text horizontally, OPT_CENTERY centers it vertically. OPT_CENTER
|
|
* centers the text in both directions. OPT_RIGHTX right-justifies the text, so
|
|
* that the @p x is the rightmost pixel. By default the number is displayed
|
|
* with no leading zeroes, but if a width 1-9 is specified in the @p options,
|
|
* then the number is padded if necessary with leading zeroes so that it has
|
|
* the given width. If OPT_SIGNED is given, the number is treated as signed,
|
|
* and prefixed by a minus sign if negative.
|
|
*
|
|
* @param x x-coordinate of text base, in pixels
|
|
* @param y y-coordinate of text base, in pixels
|
|
* @param font Font to use for text, 0-31. 16-31 are ROM fonts
|
|
* @param options Options to apply
|
|
* @param n The number to display.
|
|
*/
|
|
static inline void cmd_number(int16_t x,
|
|
int16_t y,
|
|
int16_t font,
|
|
uint16_t options,
|
|
int32_t n)
|
|
{
|
|
ft8xx_copro_cmd_number(x, y, font, options, n);
|
|
}
|
|
|
|
/**
|
|
* @brief Execute the touch screen calibration routine
|
|
*
|
|
* The calibration procedure collects three touches from the touch screen, then
|
|
* computes and loads an appropriate matrix into REG_TOUCH_TRANSFORM_A-F. To
|
|
* use it, create a display list and then use CMD_CALIBRATE. The co-processor
|
|
* engine overlays the touch targets on the current display list, gathers the
|
|
* calibration input and updates REG_TOUCH_TRANSFORM_A-F.
|
|
*
|
|
* @param result Calibration result, written with 0 on failure of calibration
|
|
*/
|
|
static inline void cmd_calibrate(uint32_t *result)
|
|
{
|
|
ft8xx_copro_cmd_calibrate(result);
|
|
}
|
|
|
|
|
|
/** Rectangular pixel arrays, in various color formats */
|
|
#define BITMAPS FT8XX_BITMAPS
|
|
/** Anti-aliased points, point radius is 1-256 pixels */
|
|
#define POINTS FT8XX_POINTS
|
|
/**
|
|
* Anti-aliased lines, with width from 0 to 4095 1/16th of pixel units.
|
|
* (width is from center of the line to boundary)
|
|
*/
|
|
#define LINES FT8XX_LINES
|
|
/** Anti-aliased lines, connected head-to-tail */
|
|
#define LINE_STRIP FT8XX_LINE_STRIP
|
|
/** Edge strips for right */
|
|
#define EDGE_STRIP_R FT8XX_EDGE_STRIP_R
|
|
/** Edge strips for left */
|
|
#define EDGE_STRIP_L FT8XX_EDGE_STRIP_L
|
|
/** Edge strips for above */
|
|
#define EDGE_STRIP_A FT8XX_EDGE_STRIP_A
|
|
/** Edge strips for below */
|
|
#define EDGE_STRIP_B FT8XX_EDGE_STRIP_B
|
|
/**
|
|
* Round-cornered rectangles, curvature of the corners can be adjusted using
|
|
* LINE_WIDTH
|
|
*/
|
|
#define RECTS FT8XX_RECTS
|
|
|
|
/**
|
|
* @brief Begin drawing a graphics primitive
|
|
*
|
|
* The valid primitives are defined as:
|
|
* - @ref BITMAPS
|
|
* - @ref POINTS
|
|
* - @ref LINES
|
|
* - @ref LINE_STRIP
|
|
* - @ref EDGE_STRIP_R
|
|
* - @ref EDGE_STRIP_L
|
|
* - @ref EDGE_STRIP_A
|
|
* - @ref EDGE_STRIP_B
|
|
* - @ref RECTS
|
|
*
|
|
* The primitive to be drawn is selected by the @ref BEGIN command. Once the
|
|
* primitive is selected, it will be valid till the new primitive is selected
|
|
* by the @ref BEGIN command.
|
|
*
|
|
* @note The primitive drawing operation will not be performed until
|
|
* @ref VERTEX2II or @ref VERTEX2F is executed.
|
|
*
|
|
* @param prim Graphics primitive
|
|
*/
|
|
#define BEGIN(prim) FT8XX_BEGIN(prim)
|
|
|
|
/**
|
|
* @brief Clear buffers to preset values
|
|
*
|
|
* Setting @p c to true will clear the color buffer of the FT8xx to the preset
|
|
* value. Setting this bit to false will maintain the color buffer of the FT8xx
|
|
* with an unchanged value. The preset value is defined in command
|
|
* @ref CLEAR_COLOR_RGB for RGB channel and CLEAR_COLOR_A for alpha channel.
|
|
*
|
|
* Setting @p s to true will clear the stencil buffer of the FT8xx to the preset
|
|
* value. Setting this bit to false will maintain the stencil buffer of the
|
|
* FT8xx with an unchanged value. The preset value is defined in command
|
|
* CLEAR_STENCIL.
|
|
*
|
|
* Setting @p t to true will clear the tag buffer of the FT8xx to the preset
|
|
* value. Setting this bit to false will maintain the tag buffer of the FT8xx
|
|
* with an unchanged value. The preset value is defined in command CLEAR_TAG.
|
|
*
|
|
* @param c Clear color buffer
|
|
* @param s Clear stencil buffer
|
|
* @param t Clear tag buffer
|
|
*/
|
|
#define CLEAR(c, s, t) FT8XX_CLEAR(c, s, t)
|
|
|
|
/**
|
|
* @brief Specify clear values for red, green and blue channels
|
|
*
|
|
* Sets the color values used by a following @ref CLEAR.
|
|
*
|
|
* @param red Red value used when the color buffer is cleared
|
|
* @param green Green value used when the color buffer is cleared
|
|
* @param blue Blue value used when the color buffer is cleared
|
|
*/
|
|
#define CLEAR_COLOR_RGB(red, green, blue) FT8XX_CLEAR_COLOR_RGB(red, green, blue)
|
|
|
|
/**
|
|
* @brief Set the current color red, green and blue
|
|
*
|
|
* Sets red, green and blue values of the FT8xx color buffer which will be
|
|
* applied to the following draw operation.
|
|
*
|
|
* @param red Red value for the current color
|
|
* @param green Green value for the current color
|
|
* @param blue Blue value for the current color
|
|
*/
|
|
#define COLOR_RGB(red, green, blue) FT8XX_COLOR_RGB(red, green, blue)
|
|
|
|
/**
|
|
* @brief End the display list
|
|
*
|
|
* FT8xx will ignore all the commands following this command.
|
|
*/
|
|
#define DISPLAY() FT8XX_DISPLAY()
|
|
|
|
/**
|
|
* @brief End drawing a graphics primitive
|
|
*
|
|
* It is recommended to have an @ref END for each @ref BEGIN. Whereas advanced
|
|
* users can avoid the usage of @ref END in order to save extra graphics
|
|
* instructions in the display list RAM.
|
|
*/
|
|
#define END() FT8XX_END()
|
|
|
|
/**
|
|
* @brief Specify the width of lines to be drawn with primitive @ref LINES
|
|
*
|
|
* Sets the width of drawn lines. The width is the distance from the center of
|
|
* the line to the outermost drawn pixel, in units of 1/16 pixel. The valid
|
|
* range is from 16 to 4095 in terms of 1/16th pixel units.
|
|
*
|
|
* @note The @ref LINE_WIDTH command will affect the @ref LINES,
|
|
* @ref LINE_STRIP, @ref RECTS, @ref EDGE_STRIP_A /B/R/L primitives.
|
|
*
|
|
* @param width Line width in 1/16 pixel
|
|
*/
|
|
#define LINE_WIDTH(width) FT8XX_LINE_WIDTH(width)
|
|
|
|
/**
|
|
* @brief Attach the tag value for the following graphics objects.
|
|
*
|
|
* The initial value of the tag buffer of the FT8xx is specified by command
|
|
* CLEAR_TAG and taken effect by command @ref CLEAR. @ref TAG command can
|
|
* specify the value of the tag buffer of the FT8xx that applies to the graphics
|
|
* objects when they are drawn on the screen. This @ref TAG value will be
|
|
* assigned to all the following objects, unless the TAG_MASK command is used to
|
|
* disable it. Once the following graphics objects are drawn, they are attached
|
|
* with the tag value successfully. When the graphics objects attached with the
|
|
* tag value are touched, the register @ref REG_TOUCH_TAG will be updated with
|
|
* the tag value of the graphics object being touched. If there is no @ref TAG
|
|
* commands in one display list, all the graphics objects rendered by the
|
|
* display list will report tag value as 255 in @ref REG_TOUCH_TAG when they
|
|
* were touched.
|
|
*
|
|
* @param s Tag value 1-255
|
|
*/
|
|
#define TAG(s) FT8XX_TAG(s)
|
|
|
|
/**
|
|
* @brief Start the operation of graphics primitives at the specified coordinate
|
|
*
|
|
* The range of coordinates is from -16384 to +16383 in terms of 1/16th pixel
|
|
* units. The negative x coordinate value means the coordinate in the left
|
|
* virtual screen from (0, 0), while the negative y coordinate value means the
|
|
* coordinate in the upper virtual screen from (0, 0). If drawing on the
|
|
* negative coordinate position, the drawing operation will not be visible.
|
|
*
|
|
* @param x Signed x-coordinate in 1/16 pixel precision
|
|
* @param y Signed y-coordinate in 1/16 pixel precision
|
|
*/
|
|
#define VERTEX2F(x, y) FT8XX_VERTEX2F(x, y)
|
|
|
|
/**
|
|
* @brief Start the operation of graphics primitive at the specified coordinates
|
|
*
|
|
* The valid range of @p handle is from 0 to 31. From 16 to 31 the bitmap handle
|
|
* is dedicated to the FT8xx built-in font.
|
|
*
|
|
* Cell number is the index of bitmap with same bitmap layout and format.
|
|
* For example, for handle 31, the cell 65 means the character "A" in the
|
|
* largest built in font.
|
|
*
|
|
* @param x x-coordinate in pixels, from 0 to 511
|
|
* @param y y-coordinate in pixels, from 0 to 511
|
|
* @param handle Bitmap handle
|
|
* @param cell Cell number
|
|
*/
|
|
#define VERTEX2II(x, y, handle, cell) FT8XX_VERTEX2II(x, y, handle, cell)
|
|
|
|
|
|
#if defined(CONFIG_FT800)
|
|
/** Main parts of FT800 memory map */
|
|
enum ft8xx_memory_map_t {
|
|
RAM_G = FT800_RAM_G,
|
|
ROM_CHIPID = FT800_ROM_CHIPID,
|
|
ROM_FONT = FT800_ROM_FONT,
|
|
ROM_FONT_ADDR = FT800_ROM_FONT_ADDR,
|
|
RAM_DL = FT800_RAM_DL,
|
|
RAM_PAL = FT800_RAM_PAL,
|
|
REG_ = FT800_REG_,
|
|
RAM_CMD = FT800_RAM_CMD
|
|
};
|
|
#else /* Definition of FT810 memory map */
|
|
/** Main parts of FT810 memory map */
|
|
enum ft8xx_memory_map_t {
|
|
RAM_G = FT810_RAM_G,
|
|
RAM_DL = FT810_RAM_DL,
|
|
REG_ = FT810_REG_,
|
|
RAM_CMD = FT810_RAM_CMD
|
|
};
|
|
#endif
|
|
|
|
#if defined(CONFIG_FT800)
|
|
/** FT800 register addresses */
|
|
enum ft8xx_register_address_t {
|
|
REG_ID = FT800_REG_ID,
|
|
REG_FRAMES = FT800_REG_FRAMES,
|
|
REG_CLOCK = FT800_REG_CLOCK,
|
|
REG_FREQUENCY = FT800_REG_FREQUENCY,
|
|
REG_RENDERMODE = FT800_REG_RENDERMODE,
|
|
REG_SNAPY = FT800_REG_SNAPY,
|
|
REG_SNAPSHOT = FT800_REG_SNAPSHOT,
|
|
REG_CPURESET = FT800_REG_CPURESET,
|
|
REG_TAP_CRC = FT800_REG_TAP_CRC,
|
|
REG_TAP_MASK = FT800_REG_TAP_MASK,
|
|
REG_HCYCLE = FT800_REG_HCYCLE,
|
|
REG_HOFFSET = FT800_REG_HOFFSET,
|
|
REG_HSIZE = FT800_REG_HSIZE,
|
|
REG_HSYNC0 = FT800_REG_HSYNC0,
|
|
REG_HSYNC1 = FT800_REG_HSYNC1,
|
|
REG_VCYCLE = FT800_REG_VCYCLE,
|
|
REG_VOFFSET = FT800_REG_VOFFSET,
|
|
REG_VSIZE = FT800_REG_VSIZE,
|
|
REG_VSYNC0 = FT800_REG_VSYNC0,
|
|
REG_VSYNC1 = FT800_REG_VSYNC1,
|
|
REG_DLSWAP = FT800_REG_DLSWAP,
|
|
REG_ROTATE = FT800_REG_ROTATE,
|
|
REG_OUTBITS = FT800_REG_OUTBITS,
|
|
REG_DITHER = FT800_REG_DITHER,
|
|
REG_SWIZZLE = FT800_REG_SWIZZLE,
|
|
REG_CSPREAD = FT800_REG_CSPREAD,
|
|
REG_PCLK_POL = FT800_REG_PCLK_POL,
|
|
REG_PCLK = FT800_REG_PCLK,
|
|
REG_TAG_X = FT800_REG_TAG_X,
|
|
REG_TAG_Y = FT800_REG_TAG_Y,
|
|
REG_TAG = FT800_REG_TAG,
|
|
REG_VOL_PB = FT800_REG_VOL_PB,
|
|
REG_VOL_SOUND = FT800_REG_VOL_SOUND,
|
|
REG_SOUND = FT800_REG_SOUND,
|
|
REG_PLAY = FT800_REG_PLAY,
|
|
REG_GPIO_DIR = FT800_REG_GPIO_DIR,
|
|
REG_GPIO = FT800_REG_GPIO,
|
|
|
|
REG_INT_FLAGS = FT800_REG_INT_FLAGS,
|
|
REG_INT_EN = FT800_REG_INT_EN,
|
|
REG_INT_MASK = FT800_REG_INT_MASK,
|
|
REG_PLAYBACK_START = FT800_REG_PLAYBACK_START,
|
|
REG_PLAYBACK_LENGTH = FT800_REG_PLAYBACK_LENGTH,
|
|
REG_PLAYBACK_READPTR = FT800_REG_PLAYBACK_READPTR,
|
|
REG_PLAYBACK_FREQ = FT800_REG_PLAYBACK_FREQ,
|
|
REG_PLAYBACK_FORMAT = FT800_REG_PLAYBACK_FORMAT,
|
|
REG_PLAYBACK_LOOP = FT800_REG_PLAYBACK_LOOP,
|
|
REG_PLAYBACK_PLAY = FT800_REG_PLAYBACK_PLAY,
|
|
REG_PWM_HZ = FT800_REG_PWM_HZ,
|
|
REG_PWM_DUTY = FT800_REG_PWM_DUTY,
|
|
REG_MACRO_0 = FT800_REG_MACRO_0,
|
|
REG_MACRO_1 = FT800_REG_MACRO_1,
|
|
|
|
REG_CMD_READ = FT800_REG_CMD_READ,
|
|
REG_CMD_WRITE = FT800_REG_CMD_WRITE,
|
|
REG_CMD_DL = FT800_REG_CMD_DL,
|
|
REG_TOUCH_MODE = FT800_REG_TOUCH_MODE,
|
|
REG_TOUCH_ADC_MODE = FT800_REG_TOUCH_ADC_MODE,
|
|
REG_TOUCH_CHARGE = FT800_REG_TOUCH_CHARGE,
|
|
REG_TOUCH_SETTLE = FT800_REG_TOUCH_SETTLE,
|
|
REG_TOUCH_OVERSAMPLE = FT800_REG_TOUCH_OVERSAMPLE,
|
|
REG_TOUCH_RZTHRESH = FT800_REG_TOUCH_RZTHRESH,
|
|
REG_TOUCH_RAW_XY = FT800_REG_TOUCH_RAW_XY,
|
|
REG_TOUCH_RZ = FT800_REG_TOUCH_RZ,
|
|
REG_TOUCH_SCREEN_XY = FT800_REG_TOUCH_SCREEN_XY,
|
|
REG_TOUCH_TAG_XY = FT800_REG_TOUCH_TAG_XY,
|
|
REG_TOUCH_TAG = FT800_REG_TOUCH_TAG,
|
|
REG_TOUCH_TRANSFORM_A = FT800_REG_TOUCH_TRANSFORM_A,
|
|
REG_TOUCH_TRANSFORM_B = FT800_REG_TOUCH_TRANSFORM_B,
|
|
REG_TOUCH_TRANSFORM_C = FT800_REG_TOUCH_TRANSFORM_C,
|
|
REG_TOUCH_TRANSFORM_D = FT800_REG_TOUCH_TRANSFORM_D,
|
|
REG_TOUCH_TRANSFORM_E = FT800_REG_TOUCH_TRANSFORM_E,
|
|
REG_TOUCH_TRANSFORM_F = FT800_REG_TOUCH_TRANSFORM_F,
|
|
|
|
REG_TOUCH_DIRECT_XY = FT800_REG_TOUCH_DIRECT_XY,
|
|
REG_TOUCH_DIRECT_Z1Z2 = FT800_REG_TOUCH_DIRECT_Z1Z2,
|
|
|
|
REG_TRACKER = FT800_REG_TRACKER
|
|
};
|
|
#else /* Definition of FT810 registers */
|
|
/** FT810 register addresses */
|
|
enum ft8xx_register_address_t {
|
|
REG_TRIM = FT810_REG_TRIM,
|
|
|
|
REG_ID = FT810_REG_ID,
|
|
REG_FRAMES = FT810_REG_FRAMES,
|
|
REG_CLOCK = FT810_REG_CLOCK,
|
|
REG_FREQUENCY = FT810_REG_FREQUENCY,
|
|
REG_RENDERMODE = FT810_REG_RENDERMODE,
|
|
REG_SNAPY = FT810_REG_SNAPY,
|
|
REG_SNAPSHOT = FT810_REG_SNAPSHOT,
|
|
REG_CPURESET = FT810_REG_CPURESET,
|
|
REG_TAP_CRC = FT810_REG_TAP_CRC,
|
|
REG_TAP_MASK = FT810_REG_TAP_MASK,
|
|
REG_HCYCLE = FT810_REG_HCYCLE,
|
|
REG_HOFFSET = FT810_REG_HOFFSET,
|
|
REG_HSIZE = FT810_REG_HSIZE,
|
|
REG_HSYNC0 = FT810_REG_HSYNC0,
|
|
REG_HSYNC1 = FT810_REG_HSYNC1,
|
|
REG_VCYCLE = FT810_REG_VCYCLE,
|
|
REG_VOFFSET = FT810_REG_VOFFSET,
|
|
REG_VSIZE = FT810_REG_VSIZE,
|
|
REG_VSYNC0 = FT810_REG_VSYNC0,
|
|
REG_VSYNC1 = FT810_REG_VSYNC1,
|
|
REG_DLSWAP = FT810_REG_DLSWAP,
|
|
REG_ROTATE = FT810_REG_ROTATE,
|
|
REG_OUTBITS = FT810_REG_OUTBITS,
|
|
REG_DITHER = FT810_REG_DITHER,
|
|
REG_SWIZZLE = FT810_REG_SWIZZLE,
|
|
REG_CSPREAD = FT810_REG_CSPREAD,
|
|
REG_PCLK_POL = FT810_REG_PCLK_POL,
|
|
REG_PCLK = FT810_REG_PCLK,
|
|
REG_TAG_X = FT810_REG_TAG_X,
|
|
REG_TAG_Y = FT810_REG_TAG_Y,
|
|
REG_TAG = FT810_REG_TAG,
|
|
REG_VOL_PB = FT810_REG_VOL_PB,
|
|
REG_VOL_SOUND = FT810_REG_VOL_SOUND,
|
|
REG_SOUND = FT810_REG_SOUND,
|
|
REG_PLAY = FT810_REG_PLAY,
|
|
REG_GPIO_DIR = FT810_REG_GPIO_DIR,
|
|
REG_GPIO = FT810_REG_GPIO,
|
|
REG_GPIOX_DIR = FT810_REG_GPIOX_DIR,
|
|
REG_GPIOX = FT810_REG_GPIOX,
|
|
|
|
REG_INT_FLAGS = FT810_REG_INT_FLAGS,
|
|
REG_INT_EN = FT810_REG_INT_EN,
|
|
REG_INT_MASK = FT810_REG_INT_MASK,
|
|
REG_PLAYBACK_START = FT810_REG_PLAYBACK_START,
|
|
REG_PLAYBACK_LENGTH = FT810_REG_PLAYBACK_LENGTH,
|
|
REG_PLAYBACK_READPTR = FT810_REG_PLAYBACK_READPTR,
|
|
REG_PLAYBACK_FREQ = FT810_REG_PLAYBACK_FREQ,
|
|
REG_PLAYBACK_FORMAT = FT810_REG_PLAYBACK_FORMAT,
|
|
REG_PLAYBACK_LOOP = FT810_REG_PLAYBACK_LOOP,
|
|
REG_PLAYBACK_PLAY = FT810_REG_PLAYBACK_PLAY,
|
|
REG_PWM_HZ = FT810_REG_PWM_HZ,
|
|
REG_PWM_DUTY = FT810_REG_PWM_DUTY,
|
|
|
|
REG_CMD_READ = FT810_REG_CMD_READ,
|
|
REG_CMD_WRITE = FT810_REG_CMD_WRITE,
|
|
REG_CMD_DL = FT810_REG_CMD_DL,
|
|
REG_TOUCH_MODE = FT810_REG_TOUCH_MODE,
|
|
REG_TOUCH_ADC_MODE = FT810_REG_TOUCH_ADC_MODE,
|
|
REG_TOUCH_CHARGE = FT810_REG_TOUCH_CHARGE,
|
|
REG_TOUCH_SETTLE = FT810_REG_TOUCH_SETTLE,
|
|
REG_TOUCH_OVERSAMPLE = FT810_REG_TOUCH_OVERSAMPLE,
|
|
REG_TOUCH_RZTHRESH = FT810_REG_TOUCH_RZTHRESH,
|
|
REG_TOUCH_RAW_XY = FT810_REG_TOUCH_RAW_XY,
|
|
REG_TOUCH_RZ = FT810_REG_TOUCH_RZ,
|
|
REG_TOUCH_SCREEN_XY = FT810_REG_TOUCH_SCREEN_XY,
|
|
REG_TOUCH_TAG_XY = FT810_REG_TOUCH_TAG_XY,
|
|
REG_TOUCH_TAG = FT810_REG_TOUCH_TAG,
|
|
REG_TOUCH_TRANSFORM_A = FT810_REG_TOUCH_TRANSFORM_A,
|
|
REG_TOUCH_TRANSFORM_B = FT810_REG_TOUCH_TRANSFORM_B,
|
|
REG_TOUCH_TRANSFORM_C = FT810_REG_TOUCH_TRANSFORM_C,
|
|
REG_TOUCH_TRANSFORM_D = FT810_REG_TOUCH_TRANSFORM_D,
|
|
REG_TOUCH_TRANSFORM_E = FT810_REG_TOUCH_TRANSFORM_E,
|
|
REG_TOUCH_TRANSFORM_F = FT810_REG_TOUCH_TRANSFORM_F,
|
|
REG_TOUCH_CONFIG = FT810_REG_TOUCH_CONFIG,
|
|
|
|
REG_SPI_WIDTH = FT810_REG_SPI_WIDTH,
|
|
|
|
REG_TOUCH_DIRECT_XY = FT810_REG_TOUCH_DIRECT_XY,
|
|
REG_TOUCH_DIRECT_Z1Z2 = FT810_REG_TOUCH_DIRECT_Z1Z2,
|
|
|
|
REG_CMDB_SPACE = FT810_REG_CMDB_SPACE,
|
|
REG_CMDB_WRITE = FT810_REG_CMDB_WRITE,
|
|
|
|
REG_TRACKER = FT810_REG_TRACKER,
|
|
REG_TRACKER1 = FT810_REG_TRACKER1,
|
|
REG_TRACKER2 = FT810_REG_TRACKER2,
|
|
REG_TRACKER3 = FT810_REG_TRACKER3,
|
|
REG_TRACKER4 = FT810_REG_TRACKER4,
|
|
REG_MEDIAFIFO_READ = FT810_REG_MEDIAFIFO_READ,
|
|
REG_MEDIAFIFO_WRITE = FT810_REG_MEDIAFIFO_WRITE,
|
|
};
|
|
#endif
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_ */
|