1 /*
2  * Copyright (c) 2022 Andreas Sandberg
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DISPLAY_SSD16XX_H_
8 #define ZEPHYR_INCLUDE_DISPLAY_SSD16XX_H_
9 
10 #include <zephyr/drivers/display.h>
11 
12 /**
13  * SSD16xx RAM type for direct RAM access
14  */
15 enum ssd16xx_ram {
16 	/** The black RAM buffer. This is typically the buffer used to
17 	 * compose the contents that will be displayed after the next
18 	 * refresh.
19 	 */
20 	SSD16XX_RAM_BLACK = 0,
21 	/* The red RAM buffer. This is typically the old frame buffer
22 	 * when performing partial refreshes or an additional color
23 	 * channel.
24 	 */
25 	SSD16XX_RAM_RED,
26 };
27 
28 /**
29  * @brief Read data directly from the display controller's internal
30  * RAM.
31  *
32  * @param dev Pointer to device structure
33  * @param ram_type Type of RAM to read from
34  * @param x Coordinate relative to the upper left corner
35  * @param y Coordinate relative to the upper left corner
36  * @param desc Structure describing the buffer layout
37  * @param buf Output buffer
38  *
39  * @retval 0 on success, negative errno on failure.
40  */
41 int ssd16xx_read_ram(const struct device *dev, enum ssd16xx_ram ram_type,
42 		     const uint16_t x, const uint16_t y,
43 		     const struct display_buffer_descriptor *desc,
44 		     void *buf);
45 
46 #endif /* ZEPHYR_INCLUDE_DISPLAY_SSD16XX_H_ */
47