/* * 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 #include #include #include #include #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_ */