1 /*
2 * Copyright (c) 2021 Hubert Miś
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 /**
8 * @file
9 * @brief FT8XX reference API
10 */
11
12 #ifndef ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_
13 #define ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_
14
15 #include <stdint.h>
16
17 #include <zephyr/drivers/misc/ft8xx/ft8xx_copro.h>
18 #include <zephyr/drivers/misc/ft8xx/ft8xx_common.h>
19 #include <zephyr/drivers/misc/ft8xx/ft8xx_dl.h>
20 #include <zephyr/drivers/misc/ft8xx/ft8xx_memory.h>
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 /**
27 * @brief FT8xx reference API
28 *
29 * API defined according to FT800 Programmers Guide API reference definition.
30 *
31 * @note Function names defined in this header may easily collide with names
32 * provided by other modules. Include this header with caution. If naming
33 * conflict occurs instead of including this header, use @c ft8xx_
34 * prefixed names.
35 *
36 * @defgroup ft8xx_reference_api FT8xx reference API
37 * @ingroup ft8xx_interface
38 * @{
39 */
40
41 /**
42 * @brief Write 1 byte (8 bits) to FT8xx memory
43 *
44 * @param address Memory address to write to
45 * @param data Byte to write
46 */
wr8(uint32_t address,uint8_t data)47 static inline void wr8(uint32_t address, uint8_t data)
48 {
49 ft8xx_wr8(address, data);
50 }
51
52 /**
53 * @brief Write 2 bytes (16 bits) to FT8xx memory
54 *
55 * @param address Memory address to write to
56 * @param data Value to write
57 */
wr16(uint32_t address,uint16_t data)58 static inline void wr16(uint32_t address, uint16_t data)
59 {
60 ft8xx_wr16(address, data);
61 }
62
63 /**
64 * @brief Write 4 bytes (32 bits) to FT8xx memory
65 *
66 * @param address Memory address to write to
67 * @param data Value to write
68 */
wr32(uint32_t address,uint32_t data)69 static inline void wr32(uint32_t address, uint32_t data)
70 {
71 ft8xx_wr32(address, data);
72 }
73
74 /**
75 * @brief Read 1 byte (8 bits) from FT8xx memory
76 *
77 * @param address Memory address to read from
78 *
79 * @return Value read from memory
80 */
rd8(uint32_t address)81 static inline uint8_t rd8(uint32_t address)
82 {
83 return ft8xx_rd8(address);
84 }
85
86 /**
87 * @brief Read 2 bytes (16 bits) from FT8xx memory
88 *
89 * @param address Memory address to read from
90 *
91 * @return Value read from memory
92 */
rd16(uint32_t address)93 static inline uint16_t rd16(uint32_t address)
94 {
95 return ft8xx_rd16(address);
96 }
97
98 /**
99 * @brief Read 4 bytes (32 bits) from FT8xx memory
100 *
101 * @param address Memory address to read from
102 *
103 * @return Value read from memory
104 */
rd32(uint32_t address)105 static inline uint32_t rd32(uint32_t address)
106 {
107 return ft8xx_rd32(address);
108 }
109
110
111 /** Co-processor widget is drawn in 3D effect */
112 #define OPT_3D FT8XX_OPT_3D
113 /** Co-processor option to decode the JPEG image to RGB565 format */
114 #define OPT_RGB565 FT8XX_OPT_RGB565
115 /** Co-processor option to decode the JPEG image to L8 format, i.e., monochrome */
116 #define OPT_MONO FT8XX_OPT_MONO
117 /** No display list commands generated for bitmap decoded from JPEG image */
118 #define OPT_NODL FT8XX_OPT_NODL
119 /** Co-processor widget is drawn without 3D effect */
120 #define OPT_FLAT FT8XX_OPT_FLAT
121 /** The number is treated as 32 bit signed integer */
122 #define OPT_SIGNED FT8XX_OPT_SIGNED
123 /** Co-processor widget centers horizontally */
124 #define OPT_CENTERX FT8XX_OPT_CENTERX
125 /** Co-processor widget centers vertically */
126 #define OPT_CENTERY FT8XX_OPT_CENTERY
127 /** Co-processor widget centers horizontally and vertically */
128 #define OPT_CENTER FT8XX_OPT_CENTER
129 /** The label on the Coprocessor widget is right justified */
130 #define OPT_RIGHTX FT8XX_OPT_RIGHTX
131 /** Co-processor widget has no background drawn */
132 #define OPT_NOBACK FT8XX_OPT_NOBACK
133 /** Co-processor clock widget is drawn without hour ticks.
134 * Gauge widget is drawn without major and minor ticks.
135 */
136 #define OPT_NOTICKS FT8XX_OPT_NOTICKS
137 /** Co-processor clock widget is drawn without hour and minutes hands,
138 * only seconds hand is drawn
139 */
140 #define OPT_NOHM FT8XX_OPT_NOHM
141 /** The Co-processor gauge has no pointer */
142 #define OPT_NOPOINTER FT8XX_OPT_NOPOINTER
143 /** Co-processor clock widget is drawn without seconds hand */
144 #define OPT_NOSECS FT8XX_OPT_NOSECS
145 /** Co-processor clock widget is drawn without hour, minutes and seconds hands */
146 #define OPT_NOHANDS FT8XX_OPT_NOHANDS
147
148 /**
149 * @brief Execute a display list command by co-processor engine
150 *
151 * @param command Display list command to execute
152 */
cmd(uint32_t command)153 static inline void cmd(uint32_t command)
154 {
155 ft8xx_copro_cmd(command);
156 }
157
158 /**
159 * @brief Start a new display list
160 */
cmd_dlstart(void)161 static inline void cmd_dlstart(void)
162 {
163 ft8xx_copro_cmd_dlstart();
164 }
165
166 /**
167 * @brief Swap the current display list
168 */
cmd_swap(void)169 static inline void cmd_swap(void)
170 {
171 ft8xx_copro_cmd_swap();
172 }
173
174 /**
175 * @brief Draw text
176 *
177 * By default (x,y) is the top-left pixel of the text and the value of
178 * @p options is zero. OPT_CENTERX centers the text horizontally, OPT_CENTERY
179 * centers it vertically. OPT_CENTER centers the text in both directions.
180 * OPT_RIGHTX right-justifies the text, so that the x is the rightmost pixel.
181 *
182 * @param x x-coordinate of text base, in pixels
183 * @param y y-coordinate of text base, in pixels
184 * @param font Font to use for text, 0-31. 16-31 are ROM fonts
185 * @param options Options to apply
186 * @param s Character string to display, terminated with a null character
187 */
cmd_text(int16_t x,int16_t y,int16_t font,uint16_t options,const char * s)188 static inline void cmd_text(int16_t x,
189 int16_t y,
190 int16_t font,
191 uint16_t options,
192 const char *s)
193 {
194 ft8xx_copro_cmd_text(x, y, font, options, s);
195 }
196
197 /**
198 * @brief Draw a decimal number
199 *
200 * By default (@p x, @p y) is the top-left pixel of the text. OPT_CENTERX
201 * centers the text horizontally, OPT_CENTERY centers it vertically. OPT_CENTER
202 * centers the text in both directions. OPT_RIGHTX right-justifies the text, so
203 * that the @p x is the rightmost pixel. By default the number is displayed
204 * with no leading zeroes, but if a width 1-9 is specified in the @p options,
205 * then the number is padded if necessary with leading zeroes so that it has
206 * the given width. If OPT_SIGNED is given, the number is treated as signed,
207 * and prefixed by a minus sign if negative.
208 *
209 * @param x x-coordinate of text base, in pixels
210 * @param y y-coordinate of text base, in pixels
211 * @param font Font to use for text, 0-31. 16-31 are ROM fonts
212 * @param options Options to apply
213 * @param n The number to display.
214 */
cmd_number(int16_t x,int16_t y,int16_t font,uint16_t options,int32_t n)215 static inline void cmd_number(int16_t x,
216 int16_t y,
217 int16_t font,
218 uint16_t options,
219 int32_t n)
220 {
221 ft8xx_copro_cmd_number(x, y, font, options, n);
222 }
223
224 /**
225 * @brief Execute the touch screen calibration routine
226 *
227 * The calibration procedure collects three touches from the touch screen, then
228 * computes and loads an appropriate matrix into REG_TOUCH_TRANSFORM_A-F. To
229 * use it, create a display list and then use CMD_CALIBRATE. The co-processor
230 * engine overlays the touch targets on the current display list, gathers the
231 * calibration input and updates REG_TOUCH_TRANSFORM_A-F.
232 *
233 * @param result Calibration result, written with 0 on failure of calibration
234 */
cmd_calibrate(uint32_t * result)235 static inline void cmd_calibrate(uint32_t *result)
236 {
237 ft8xx_copro_cmd_calibrate(result);
238 }
239
240
241 /** Rectangular pixel arrays, in various color formats */
242 #define BITMAPS FT8XX_BITMAPS
243 /** Anti-aliased points, point radius is 1-256 pixels */
244 #define POINTS FT8XX_POINTS
245 /**
246 * Anti-aliased lines, with width from 0 to 4095 1/16th of pixel units.
247 * (width is from center of the line to boundary)
248 */
249 #define LINES FT8XX_LINES
250 /** Anti-aliased lines, connected head-to-tail */
251 #define LINE_STRIP FT8XX_LINE_STRIP
252 /** Edge strips for right */
253 #define EDGE_STRIP_R FT8XX_EDGE_STRIP_R
254 /** Edge strips for left */
255 #define EDGE_STRIP_L FT8XX_EDGE_STRIP_L
256 /** Edge strips for above */
257 #define EDGE_STRIP_A FT8XX_EDGE_STRIP_A
258 /** Edge strips for below */
259 #define EDGE_STRIP_B FT8XX_EDGE_STRIP_B
260 /**
261 * Round-cornered rectangles, curvature of the corners can be adjusted using
262 * LINE_WIDTH
263 */
264 #define RECTS FT8XX_RECTS
265
266 /**
267 * @brief Begin drawing a graphics primitive
268 *
269 * The valid primitives are defined as:
270 * - @ref BITMAPS
271 * - @ref POINTS
272 * - @ref LINES
273 * - @ref LINE_STRIP
274 * - @ref EDGE_STRIP_R
275 * - @ref EDGE_STRIP_L
276 * - @ref EDGE_STRIP_A
277 * - @ref EDGE_STRIP_B
278 * - @ref RECTS
279 *
280 * The primitive to be drawn is selected by the @ref BEGIN command. Once the
281 * primitive is selected, it will be valid till the new primitive is selected
282 * by the @ref BEGIN command.
283 *
284 * @note The primitive drawing operation will not be performed until
285 * @ref VERTEX2II or @ref VERTEX2F is executed.
286 *
287 * @param prim Graphics primitive
288 */
289 #define BEGIN(prim) FT8XX_BEGIN(prim)
290
291 /**
292 * @brief Clear buffers to preset values
293 *
294 * Setting @p c to true will clear the color buffer of the FT8xx to the preset
295 * value. Setting this bit to false will maintain the color buffer of the FT8xx
296 * with an unchanged value. The preset value is defined in command
297 * @ref CLEAR_COLOR_RGB for RGB channel and CLEAR_COLOR_A for alpha channel.
298 *
299 * Setting @p s to true will clear the stencil buffer of the FT8xx to the preset
300 * value. Setting this bit to false will maintain the stencil buffer of the
301 * FT8xx with an unchanged value. The preset value is defined in command
302 * CLEAR_STENCIL.
303 *
304 * Setting @p t to true will clear the tag buffer of the FT8xx to the preset
305 * value. Setting this bit to false will maintain the tag buffer of the FT8xx
306 * with an unchanged value. The preset value is defined in command CLEAR_TAG.
307 *
308 * @param c Clear color buffer
309 * @param s Clear stencil buffer
310 * @param t Clear tag buffer
311 */
312 #define CLEAR(c, s, t) FT8XX_CLEAR(c, s, t)
313
314 /**
315 * @brief Specify clear values for red, green and blue channels
316 *
317 * Sets the color values used by a following @ref CLEAR.
318 *
319 * @param red Red value used when the color buffer is cleared
320 * @param green Green value used when the color buffer is cleared
321 * @param blue Blue value used when the color buffer is cleared
322 */
323 #define CLEAR_COLOR_RGB(red, green, blue) FT8XX_CLEAR_COLOR_RGB(red, green, blue)
324
325 /**
326 * @brief Set the current color red, green and blue
327 *
328 * Sets red, green and blue values of the FT8xx color buffer which will be
329 * applied to the following draw operation.
330 *
331 * @param red Red value for the current color
332 * @param green Green value for the current color
333 * @param blue Blue value for the current color
334 */
335 #define COLOR_RGB(red, green, blue) FT8XX_COLOR_RGB(red, green, blue)
336
337 /**
338 * @brief End the display list
339 *
340 * FT8xx will ignore all the commands following this command.
341 */
342 #define DISPLAY() FT8XX_DISPLAY()
343
344 /**
345 * @brief End drawing a graphics primitive
346 *
347 * It is recommended to have an @ref END for each @ref BEGIN. Whereas advanced
348 * users can avoid the usage of @ref END in order to save extra graphics
349 * instructions in the display list RAM.
350 */
351 #define END() FT8XX_END()
352
353 /**
354 * @brief Specify the width of lines to be drawn with primitive @ref LINES
355 *
356 * Sets the width of drawn lines. The width is the distance from the center of
357 * the line to the outermost drawn pixel, in units of 1/16 pixel. The valid
358 * range is from 16 to 4095 in terms of 1/16th pixel units.
359 *
360 * @note The @ref LINE_WIDTH command will affect the @ref LINES,
361 * @ref LINE_STRIP, @ref RECTS, @ref EDGE_STRIP_A /B/R/L primitives.
362 *
363 * @param width Line width in 1/16 pixel
364 */
365 #define LINE_WIDTH(width) FT8XX_LINE_WIDTH(width)
366
367 /**
368 * @brief Attach the tag value for the following graphics objects.
369 *
370 * The initial value of the tag buffer of the FT8xx is specified by command
371 * CLEAR_TAG and taken effect by command @ref CLEAR. @ref TAG command can
372 * specify the value of the tag buffer of the FT8xx that applies to the graphics
373 * objects when they are drawn on the screen. This @ref TAG value will be
374 * assigned to all the following objects, unless the TAG_MASK command is used to
375 * disable it. Once the following graphics objects are drawn, they are attached
376 * with the tag value successfully. When the graphics objects attached with the
377 * tag value are touched, the register @ref REG_TOUCH_TAG will be updated with
378 * the tag value of the graphics object being touched. If there is no @ref TAG
379 * commands in one display list, all the graphics objects rendered by the
380 * display list will report tag value as 255 in @ref REG_TOUCH_TAG when they
381 * were touched.
382 *
383 * @param s Tag value 1-255
384 */
385 #define TAG(s) FT8XX_TAG(s)
386
387 /**
388 * @brief Start the operation of graphics primitives at the specified coordinate
389 *
390 * The range of coordinates is from -16384 to +16383 in terms of 1/16th pixel
391 * units. The negative x coordinate value means the coordinate in the left
392 * virtual screen from (0, 0), while the negative y coordinate value means the
393 * coordinate in the upper virtual screen from (0, 0). If drawing on the
394 * negative coordinate position, the drawing operation will not be visible.
395 *
396 * @param x Signed x-coordinate in 1/16 pixel precision
397 * @param y Signed y-coordinate in 1/16 pixel precision
398 */
399 #define VERTEX2F(x, y) FT8XX_VERTEX2F(x, y)
400
401 /**
402 * @brief Start the operation of graphics primitive at the specified coordinates
403 *
404 * The valid range of @p handle is from 0 to 31. From 16 to 31 the bitmap handle
405 * is dedicated to the FT8xx built-in font.
406 *
407 * Cell number is the index of bitmap with same bitmap layout and format.
408 * For example, for handle 31, the cell 65 means the character "A" in the
409 * largest built in font.
410 *
411 * @param x x-coordinate in pixels, from 0 to 511
412 * @param y y-coordinate in pixels, from 0 to 511
413 * @param handle Bitmap handle
414 * @param cell Cell number
415 */
416 #define VERTEX2II(x, y, handle, cell) FT8XX_VERTEX2II(x, y, handle, cell)
417
418
419 #if defined(CONFIG_FT800)
420 /** Main parts of FT800 memory map */
421 enum ft8xx_memory_map_t {
422 RAM_G = FT800_RAM_G,
423 ROM_CHIPID = FT800_ROM_CHIPID,
424 ROM_FONT = FT800_ROM_FONT,
425 ROM_FONT_ADDR = FT800_ROM_FONT_ADDR,
426 RAM_DL = FT800_RAM_DL,
427 RAM_PAL = FT800_RAM_PAL,
428 REG_ = FT800_REG_,
429 RAM_CMD = FT800_RAM_CMD
430 };
431 #else /* Definition of FT810 memory map */
432 /** Main parts of FT810 memory map */
433 enum ft8xx_memory_map_t {
434 RAM_G = FT810_RAM_G,
435 RAM_DL = FT810_RAM_DL,
436 REG_ = FT810_REG_,
437 RAM_CMD = FT810_RAM_CMD
438 };
439 #endif
440
441 #if defined(CONFIG_FT800)
442 /** FT800 register addresses */
443 enum ft8xx_register_address_t {
444 REG_ID = FT800_REG_ID,
445 REG_FRAMES = FT800_REG_FRAMES,
446 REG_CLOCK = FT800_REG_CLOCK,
447 REG_FREQUENCY = FT800_REG_FREQUENCY,
448 REG_RENDERMODE = FT800_REG_RENDERMODE,
449 REG_SNAPY = FT800_REG_SNAPY,
450 REG_SNAPSHOT = FT800_REG_SNAPSHOT,
451 REG_CPURESET = FT800_REG_CPURESET,
452 REG_TAP_CRC = FT800_REG_TAP_CRC,
453 REG_TAP_MASK = FT800_REG_TAP_MASK,
454 REG_HCYCLE = FT800_REG_HCYCLE,
455 REG_HOFFSET = FT800_REG_HOFFSET,
456 REG_HSIZE = FT800_REG_HSIZE,
457 REG_HSYNC0 = FT800_REG_HSYNC0,
458 REG_HSYNC1 = FT800_REG_HSYNC1,
459 REG_VCYCLE = FT800_REG_VCYCLE,
460 REG_VOFFSET = FT800_REG_VOFFSET,
461 REG_VSIZE = FT800_REG_VSIZE,
462 REG_VSYNC0 = FT800_REG_VSYNC0,
463 REG_VSYNC1 = FT800_REG_VSYNC1,
464 REG_DLSWAP = FT800_REG_DLSWAP,
465 REG_ROTATE = FT800_REG_ROTATE,
466 REG_OUTBITS = FT800_REG_OUTBITS,
467 REG_DITHER = FT800_REG_DITHER,
468 REG_SWIZZLE = FT800_REG_SWIZZLE,
469 REG_CSPREAD = FT800_REG_CSPREAD,
470 REG_PCLK_POL = FT800_REG_PCLK_POL,
471 REG_PCLK = FT800_REG_PCLK,
472 REG_TAG_X = FT800_REG_TAG_X,
473 REG_TAG_Y = FT800_REG_TAG_Y,
474 REG_TAG = FT800_REG_TAG,
475 REG_VOL_PB = FT800_REG_VOL_PB,
476 REG_VOL_SOUND = FT800_REG_VOL_SOUND,
477 REG_SOUND = FT800_REG_SOUND,
478 REG_PLAY = FT800_REG_PLAY,
479 REG_GPIO_DIR = FT800_REG_GPIO_DIR,
480 REG_GPIO = FT800_REG_GPIO,
481
482 REG_INT_FLAGS = FT800_REG_INT_FLAGS,
483 REG_INT_EN = FT800_REG_INT_EN,
484 REG_INT_MASK = FT800_REG_INT_MASK,
485 REG_PLAYBACK_START = FT800_REG_PLAYBACK_START,
486 REG_PLAYBACK_LENGTH = FT800_REG_PLAYBACK_LENGTH,
487 REG_PLAYBACK_READPTR = FT800_REG_PLAYBACK_READPTR,
488 REG_PLAYBACK_FREQ = FT800_REG_PLAYBACK_FREQ,
489 REG_PLAYBACK_FORMAT = FT800_REG_PLAYBACK_FORMAT,
490 REG_PLAYBACK_LOOP = FT800_REG_PLAYBACK_LOOP,
491 REG_PLAYBACK_PLAY = FT800_REG_PLAYBACK_PLAY,
492 REG_PWM_HZ = FT800_REG_PWM_HZ,
493 REG_PWM_DUTY = FT800_REG_PWM_DUTY,
494 REG_MACRO_0 = FT800_REG_MACRO_0,
495 REG_MACRO_1 = FT800_REG_MACRO_1,
496
497 REG_CMD_READ = FT800_REG_CMD_READ,
498 REG_CMD_WRITE = FT800_REG_CMD_WRITE,
499 REG_CMD_DL = FT800_REG_CMD_DL,
500 REG_TOUCH_MODE = FT800_REG_TOUCH_MODE,
501 REG_TOUCH_ADC_MODE = FT800_REG_TOUCH_ADC_MODE,
502 REG_TOUCH_CHARGE = FT800_REG_TOUCH_CHARGE,
503 REG_TOUCH_SETTLE = FT800_REG_TOUCH_SETTLE,
504 REG_TOUCH_OVERSAMPLE = FT800_REG_TOUCH_OVERSAMPLE,
505 REG_TOUCH_RZTHRESH = FT800_REG_TOUCH_RZTHRESH,
506 REG_TOUCH_RAW_XY = FT800_REG_TOUCH_RAW_XY,
507 REG_TOUCH_RZ = FT800_REG_TOUCH_RZ,
508 REG_TOUCH_SCREEN_XY = FT800_REG_TOUCH_SCREEN_XY,
509 REG_TOUCH_TAG_XY = FT800_REG_TOUCH_TAG_XY,
510 REG_TOUCH_TAG = FT800_REG_TOUCH_TAG,
511 REG_TOUCH_TRANSFORM_A = FT800_REG_TOUCH_TRANSFORM_A,
512 REG_TOUCH_TRANSFORM_B = FT800_REG_TOUCH_TRANSFORM_B,
513 REG_TOUCH_TRANSFORM_C = FT800_REG_TOUCH_TRANSFORM_C,
514 REG_TOUCH_TRANSFORM_D = FT800_REG_TOUCH_TRANSFORM_D,
515 REG_TOUCH_TRANSFORM_E = FT800_REG_TOUCH_TRANSFORM_E,
516 REG_TOUCH_TRANSFORM_F = FT800_REG_TOUCH_TRANSFORM_F,
517
518 REG_TOUCH_DIRECT_XY = FT800_REG_TOUCH_DIRECT_XY,
519 REG_TOUCH_DIRECT_Z1Z2 = FT800_REG_TOUCH_DIRECT_Z1Z2,
520
521 REG_TRACKER = FT800_REG_TRACKER
522 };
523 #else /* Definition of FT810 registers */
524 /** FT810 register addresses */
525 enum ft8xx_register_address_t {
526 REG_TRIM = FT810_REG_TRIM,
527
528 REG_ID = FT810_REG_ID,
529 REG_FRAMES = FT810_REG_FRAMES,
530 REG_CLOCK = FT810_REG_CLOCK,
531 REG_FREQUENCY = FT810_REG_FREQUENCY,
532 REG_RENDERMODE = FT810_REG_RENDERMODE,
533 REG_SNAPY = FT810_REG_SNAPY,
534 REG_SNAPSHOT = FT810_REG_SNAPSHOT,
535 REG_CPURESET = FT810_REG_CPURESET,
536 REG_TAP_CRC = FT810_REG_TAP_CRC,
537 REG_TAP_MASK = FT810_REG_TAP_MASK,
538 REG_HCYCLE = FT810_REG_HCYCLE,
539 REG_HOFFSET = FT810_REG_HOFFSET,
540 REG_HSIZE = FT810_REG_HSIZE,
541 REG_HSYNC0 = FT810_REG_HSYNC0,
542 REG_HSYNC1 = FT810_REG_HSYNC1,
543 REG_VCYCLE = FT810_REG_VCYCLE,
544 REG_VOFFSET = FT810_REG_VOFFSET,
545 REG_VSIZE = FT810_REG_VSIZE,
546 REG_VSYNC0 = FT810_REG_VSYNC0,
547 REG_VSYNC1 = FT810_REG_VSYNC1,
548 REG_DLSWAP = FT810_REG_DLSWAP,
549 REG_ROTATE = FT810_REG_ROTATE,
550 REG_OUTBITS = FT810_REG_OUTBITS,
551 REG_DITHER = FT810_REG_DITHER,
552 REG_SWIZZLE = FT810_REG_SWIZZLE,
553 REG_CSPREAD = FT810_REG_CSPREAD,
554 REG_PCLK_POL = FT810_REG_PCLK_POL,
555 REG_PCLK = FT810_REG_PCLK,
556 REG_TAG_X = FT810_REG_TAG_X,
557 REG_TAG_Y = FT810_REG_TAG_Y,
558 REG_TAG = FT810_REG_TAG,
559 REG_VOL_PB = FT810_REG_VOL_PB,
560 REG_VOL_SOUND = FT810_REG_VOL_SOUND,
561 REG_SOUND = FT810_REG_SOUND,
562 REG_PLAY = FT810_REG_PLAY,
563 REG_GPIO_DIR = FT810_REG_GPIO_DIR,
564 REG_GPIO = FT810_REG_GPIO,
565 REG_GPIOX_DIR = FT810_REG_GPIOX_DIR,
566 REG_GPIOX = FT810_REG_GPIOX,
567
568 REG_INT_FLAGS = FT810_REG_INT_FLAGS,
569 REG_INT_EN = FT810_REG_INT_EN,
570 REG_INT_MASK = FT810_REG_INT_MASK,
571 REG_PLAYBACK_START = FT810_REG_PLAYBACK_START,
572 REG_PLAYBACK_LENGTH = FT810_REG_PLAYBACK_LENGTH,
573 REG_PLAYBACK_READPTR = FT810_REG_PLAYBACK_READPTR,
574 REG_PLAYBACK_FREQ = FT810_REG_PLAYBACK_FREQ,
575 REG_PLAYBACK_FORMAT = FT810_REG_PLAYBACK_FORMAT,
576 REG_PLAYBACK_LOOP = FT810_REG_PLAYBACK_LOOP,
577 REG_PLAYBACK_PLAY = FT810_REG_PLAYBACK_PLAY,
578 REG_PWM_HZ = FT810_REG_PWM_HZ,
579 REG_PWM_DUTY = FT810_REG_PWM_DUTY,
580
581 REG_CMD_READ = FT810_REG_CMD_READ,
582 REG_CMD_WRITE = FT810_REG_CMD_WRITE,
583 REG_CMD_DL = FT810_REG_CMD_DL,
584 REG_TOUCH_MODE = FT810_REG_TOUCH_MODE,
585 REG_TOUCH_ADC_MODE = FT810_REG_TOUCH_ADC_MODE,
586 REG_TOUCH_CHARGE = FT810_REG_TOUCH_CHARGE,
587 REG_TOUCH_SETTLE = FT810_REG_TOUCH_SETTLE,
588 REG_TOUCH_OVERSAMPLE = FT810_REG_TOUCH_OVERSAMPLE,
589 REG_TOUCH_RZTHRESH = FT810_REG_TOUCH_RZTHRESH,
590 REG_TOUCH_RAW_XY = FT810_REG_TOUCH_RAW_XY,
591 REG_TOUCH_RZ = FT810_REG_TOUCH_RZ,
592 REG_TOUCH_SCREEN_XY = FT810_REG_TOUCH_SCREEN_XY,
593 REG_TOUCH_TAG_XY = FT810_REG_TOUCH_TAG_XY,
594 REG_TOUCH_TAG = FT810_REG_TOUCH_TAG,
595 REG_TOUCH_TRANSFORM_A = FT810_REG_TOUCH_TRANSFORM_A,
596 REG_TOUCH_TRANSFORM_B = FT810_REG_TOUCH_TRANSFORM_B,
597 REG_TOUCH_TRANSFORM_C = FT810_REG_TOUCH_TRANSFORM_C,
598 REG_TOUCH_TRANSFORM_D = FT810_REG_TOUCH_TRANSFORM_D,
599 REG_TOUCH_TRANSFORM_E = FT810_REG_TOUCH_TRANSFORM_E,
600 REG_TOUCH_TRANSFORM_F = FT810_REG_TOUCH_TRANSFORM_F,
601 REG_TOUCH_CONFIG = FT810_REG_TOUCH_CONFIG,
602
603 REG_SPI_WIDTH = FT810_REG_SPI_WIDTH,
604
605 REG_TOUCH_DIRECT_XY = FT810_REG_TOUCH_DIRECT_XY,
606 REG_TOUCH_DIRECT_Z1Z2 = FT810_REG_TOUCH_DIRECT_Z1Z2,
607
608 REG_CMDB_SPACE = FT810_REG_CMDB_SPACE,
609 REG_CMDB_WRITE = FT810_REG_CMDB_WRITE,
610
611 REG_TRACKER = FT810_REG_TRACKER,
612 REG_TRACKER1 = FT810_REG_TRACKER1,
613 REG_TRACKER2 = FT810_REG_TRACKER2,
614 REG_TRACKER3 = FT810_REG_TRACKER3,
615 REG_TRACKER4 = FT810_REG_TRACKER4,
616 REG_MEDIAFIFO_READ = FT810_REG_MEDIAFIFO_READ,
617 REG_MEDIAFIFO_WRITE = FT810_REG_MEDIAFIFO_WRITE,
618 };
619 #endif
620
621 /**
622 * @}
623 */
624
625 #ifdef __cplusplus
626 }
627 #endif
628
629 #endif /* ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_REFERENCE_API_H_ */
630