Zephyr API Documentation  3.6.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
mipi_dbi.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
21#ifndef ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_
22#define ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_
23
33#include <zephyr/device.h>
36#include <zephyr/drivers/spi.h>
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
59#define MIPI_DBI_MODE_SPI_3WIRE 0x1
80#define MIPI_DBI_MODE_SPI_4WIRE 0x2
81
93#define MIPI_DBI_SPI_CONFIG_DT(node_id, operation_, delay_) \
94 { \
95 .frequency = DT_PROP(node_id, mipi_max_frequency), \
96 .operation = (operation_) | \
97 DT_PROP(node_id, duplex) | \
98 COND_CODE_1(DT_PROP(node_id, mipi_cpol), SPI_MODE_CPOL, (0)) | \
99 COND_CODE_1(DT_PROP(node_id, mipi_cpha), SPI_MODE_CPHA, (0)) | \
100 COND_CODE_1(DT_PROP(node_id, mipi_hold_cs), SPI_HOLD_ON_CS, (0)), \
101 .slave = DT_REG_ADDR(node_id), \
102 .cs = { \
103 .gpio = GPIO_DT_SPEC_GET_BY_IDX_OR(DT_PHANDLE(DT_PARENT(node_id), \
104 spi_dev), cs_gpios, \
105 DT_REG_ADDR(node_id), \
106 {}), \
107 .delay = (delay_), \
108 }, \
109 }
110
121};
122
123
125__subsystem struct mipi_dbi_driver_api {
126 int (*command_write)(const struct device *dev,
127 const struct mipi_dbi_config *config, uint8_t cmd,
128 const uint8_t *data, size_t len);
129 int (*command_read)(const struct device *dev,
130 const struct mipi_dbi_config *config, uint8_t *cmds,
131 size_t num_cmds, uint8_t *response, size_t len);
132 int (*write_display)(const struct device *dev,
133 const struct mipi_dbi_config *config,
134 const uint8_t *framebuf,
135 struct display_buffer_descriptor *desc,
136 enum display_pixel_format pixfmt);
137 int (*reset)(const struct device *dev, uint32_t delay);
138};
139
158static inline int mipi_dbi_command_write(const struct device *dev,
159 const struct mipi_dbi_config *config,
160 uint8_t cmd, const uint8_t *data,
161 size_t len)
162{
163 const struct mipi_dbi_driver_api *api =
164 (const struct mipi_dbi_driver_api *)dev->api;
165
166 if (api->command_write == NULL) {
167 return -ENOSYS;
168 }
169 return api->command_write(dev, config, cmd, data, len);
170}
171
189static inline int mipi_dbi_command_read(const struct device *dev,
190 const struct mipi_dbi_config *config,
191 uint8_t *cmds, size_t num_cmd,
192 uint8_t *response, size_t len)
193{
194 const struct mipi_dbi_driver_api *api =
195 (const struct mipi_dbi_driver_api *)dev->api;
196
197 if (api->command_read == NULL) {
198 return -ENOSYS;
199 }
200 return api->command_read(dev, config, cmds, num_cmd, response, len);
201}
202
222static inline int mipi_dbi_write_display(const struct device *dev,
223 const struct mipi_dbi_config *config,
224 const uint8_t *framebuf,
225 struct display_buffer_descriptor *desc,
226 enum display_pixel_format pixfmt)
227{
228 const struct mipi_dbi_driver_api *api =
229 (const struct mipi_dbi_driver_api *)dev->api;
230
231 if (api->write_display == NULL) {
232 return -ENOSYS;
233 }
234 return api->write_display(dev, config, framebuf, desc, pixfmt);
235}
236
248static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay)
249{
250 const struct mipi_dbi_driver_api *api =
251 (const struct mipi_dbi_driver_api *)dev->api;
252
253 if (api->reset == NULL) {
254 return -ENOSYS;
255 }
256 return api->reset(dev, delay);
257}
258
259#ifdef __cplusplus
260}
261#endif
262
267#endif /* ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_ */
Public API for display drivers and applications.
Public API for SPI drivers and applications.
display_pixel_format
Display pixel formats.
Definition: display.h:42
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition: ft8xx_reference_api.h:153
static int mipi_dbi_reset(const struct device *dev, uint32_t delay)
Resets attached display controller.
Definition: mipi_dbi.h:248
static int mipi_dbi_write_display(const struct device *dev, const struct mipi_dbi_config *config, const uint8_t *framebuf, struct display_buffer_descriptor *desc, enum display_pixel_format pixfmt)
Write a display buffer to the display controller.
Definition: mipi_dbi.h:222
static int mipi_dbi_command_write(const struct device *dev, const struct mipi_dbi_config *config, uint8_t cmd, const uint8_t *data, size_t len)
Write a command to the display controller.
Definition: mipi_dbi.h:158
static int mipi_dbi_command_read(const struct device *dev, const struct mipi_dbi_config *config, uint8_t *cmds, size_t num_cmd, uint8_t *response, size_t len)
Read a command response from the display controller.
Definition: mipi_dbi.h:189
#define ENOSYS
Function not implemented.
Definition: errno.h:83
Display definitions for MIPI devices.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition: device.h:399
void * data
Address of the device instance private data.
Definition: device.h:409
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:405
const void * config
Address of device instance config information.
Definition: device.h:403
Structure to describe display data buffer layout.
Definition: display.h:121
MIPI DBI controller configuration.
Definition: mipi_dbi.h:116
uint8_t mode
MIPI DBI mode (SPI 3 wire or 4 wire)
Definition: mipi_dbi.h:118
struct spi_config config
SPI configuration.
Definition: mipi_dbi.h:120
MIPI-DBI host driver API.
Definition: mipi_dbi.h:125
int(* reset)(const struct device *dev, uint32_t delay)
Definition: mipi_dbi.h:137
int(* command_read)(const struct device *dev, const struct mipi_dbi_config *config, uint8_t *cmds, size_t num_cmds, uint8_t *response, size_t len)
Definition: mipi_dbi.h:129
int(* command_write)(const struct device *dev, const struct mipi_dbi_config *config, uint8_t cmd, const uint8_t *data, size_t len)
Definition: mipi_dbi.h:126
int(* write_display)(const struct device *dev, const struct mipi_dbi_config *config, const uint8_t *framebuf, struct display_buffer_descriptor *desc, enum display_pixel_format pixfmt)
Definition: mipi_dbi.h:132
SPI controller configuration structure.
Definition: spi.h:301