Zephyr Project API 3.6.0
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 * Copyright 2024 TiaC Systems
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
23#ifndef ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_
24#define ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_
25
33#include <zephyr/device.h>
36#include <zephyr/drivers/spi.h>
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
58#define MIPI_DBI_MODE_SPI_3WIRE 0x1
79#define MIPI_DBI_MODE_SPI_4WIRE 0x2
101#define MIPI_DBI_MODE_SPI_4WIRE_16BIT 0x3
102
114#define MIPI_DBI_SPI_CONFIG_DT(node_id, operation_, delay_) \
115 { \
116 .frequency = DT_PROP(node_id, mipi_max_frequency), \
117 .operation = (operation_) | \
118 DT_PROP(node_id, duplex), \
119 COND_CODE_1(DT_PROP(node_id, mipi_cpol), SPI_MODE_CPOL, (0)) | \
120 COND_CODE_1(DT_PROP(node_id, mipi_cpha), SPI_MODE_CPHA, (0)) | \
121 COND_CODE_1(DT_PROP(node_id, mipi_hold_cs), SPI_HOLD_ON_CS, (0)), \
122 .slave = DT_REG_ADDR(node_id), \
123 .cs = { \
124 .gpio = GPIO_DT_SPEC_GET_BY_IDX_OR(DT_PHANDLE(DT_PARENT(node_id), \
125 spi_dev), cs_gpios, \
126 DT_REG_ADDR(node_id), \
127 {}), \
128 .delay = (delay_), \
129 }, \
130 }
131
143
144
146__subsystem struct mipi_dbi_driver_api {
147 int (*command_write)(const struct device *dev,
148 const struct mipi_dbi_config *config, uint8_t cmd,
149 const uint8_t *data, size_t len);
150 int (*command_read)(const struct device *dev,
151 const struct mipi_dbi_config *config, uint8_t *cmds,
152 size_t num_cmds, uint8_t *response, size_t len);
153 int (*write_display)(const struct device *dev,
154 const struct mipi_dbi_config *config,
155 const uint8_t *framebuf,
156 struct display_buffer_descriptor *desc,
157 enum display_pixel_format pixfmt);
158 int (*reset)(const struct device *dev, uint32_t delay);
159};
160
179static inline int mipi_dbi_command_write(const struct device *dev,
180 const struct mipi_dbi_config *config,
181 uint8_t cmd, const uint8_t *data,
182 size_t len)
183{
184 const struct mipi_dbi_driver_api *api =
185 (const struct mipi_dbi_driver_api *)dev->api;
186
187 if (api->command_write == NULL) {
188 return -ENOSYS;
189 }
190 return api->command_write(dev, config, cmd, data, len);
191}
192
210static inline int mipi_dbi_command_read(const struct device *dev,
211 const struct mipi_dbi_config *config,
212 uint8_t *cmds, size_t num_cmd,
213 uint8_t *response, size_t len)
214{
215 const struct mipi_dbi_driver_api *api =
216 (const struct mipi_dbi_driver_api *)dev->api;
217
218 if (api->command_read == NULL) {
219 return -ENOSYS;
220 }
221 return api->command_read(dev, config, cmds, num_cmd, response, len);
222}
223
243static inline int mipi_dbi_write_display(const struct device *dev,
244 const struct mipi_dbi_config *config,
245 const uint8_t *framebuf,
246 struct display_buffer_descriptor *desc,
247 enum display_pixel_format pixfmt)
248{
249 const struct mipi_dbi_driver_api *api =
250 (const struct mipi_dbi_driver_api *)dev->api;
251
252 if (api->write_display == NULL) {
253 return -ENOSYS;
254 }
255 return api->write_display(dev, config, framebuf, desc, pixfmt);
256}
257
269static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay)
270{
271 const struct mipi_dbi_driver_api *api =
272 (const struct mipi_dbi_driver_api *)dev->api;
273
274 if (api->reset == NULL) {
275 return -ENOSYS;
276 }
277 return api->reset(dev, delay);
278}
279
280#ifdef __cplusplus
281}
282#endif
283
288#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:40
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:269
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:243
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:179
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:210
#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:387
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:393
const void * config
Address of device instance config information.
Definition device.h:391
Structure to describe display data buffer layout.
Definition display.h:119
MIPI DBI controller configuration.
Definition mipi_dbi.h:137
uint8_t mode
MIPI DBI mode (SPI 3 wire or 4 wire)
Definition mipi_dbi.h:139
struct spi_config config
SPI configuration.
Definition mipi_dbi.h:141
MIPI-DBI host driver API.
Definition mipi_dbi.h:146
int(* reset)(const struct device *dev, uint32_t delay)
Definition mipi_dbi.h:158
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:150
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:147
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:153
SPI controller configuration structure.
Definition spi.h:299
static fdata_t data[2]
Definition test_fifo_contexts.c:15