Zephyr API Documentation  3.6.0
A Scalable Open Source RTOS
3.6.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mipi_dsi.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Teslabs Engineering S.L.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef ZEPHYR_INCLUDE_DRIVERS_MIPI_DSI_H_
13#define ZEPHYR_INCLUDE_DRIVERS_MIPI_DSI_H_
14
21#include <errno.h>
22#include <sys/types.h>
23#include <zephyr/device.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
49};
50
57#define MIPI_DSI_MODE_VIDEO BIT(0)
59#define MIPI_DSI_MODE_VIDEO_BURST BIT(1)
61#define MIPI_DSI_MODE_VIDEO_SYNC_PULSE BIT(2)
63#define MIPI_DSI_MODE_VIDEO_AUTO_VERT BIT(3)
65#define MIPI_DSI_MODE_VIDEO_HSE BIT(4)
67#define MIPI_DSI_MODE_VIDEO_HFP BIT(5)
69#define MIPI_DSI_MODE_VIDEO_HBP BIT(6)
71#define MIPI_DSI_MODE_VIDEO_HSA BIT(7)
73#define MIPI_DSI_MODE_VSYNC_FLUSH BIT(8)
75#define MIPI_DSI_MODE_EOT_PACKET BIT(9)
77#define MIPI_DSI_CLOCK_NON_CONTINUOUS BIT(10)
79#define MIPI_DSI_MODE_LPM BIT(11)
80
93};
94
95/*
96 * Per message flag to indicate the message must be sent
97 * using Low Power Mode instead of controller default.
98 */
99#define MIPI_DSI_MSG_USE_LPM BIT(0x0)
100
110 size_t tx_len;
112 const void *tx_buf;
114 size_t rx_len;
116 void *rx_buf;
117};
118
120__subsystem struct mipi_dsi_driver_api {
121 int (*attach)(const struct device *dev, uint8_t channel,
122 const struct mipi_dsi_device *mdev);
123 ssize_t (*transfer)(const struct device *dev, uint8_t channel,
124 struct mipi_dsi_msg *msg);
125 int (*detach)(const struct device *dev, uint8_t channel,
126 const struct mipi_dsi_device *mdev);
127};
128
138static inline int mipi_dsi_attach(const struct device *dev,
139 uint8_t channel,
140 const struct mipi_dsi_device *mdev)
141{
142 const struct mipi_dsi_driver_api *api = (const struct mipi_dsi_driver_api *)dev->api;
143
144 return api->attach(dev, channel, mdev);
145}
146
156static inline ssize_t mipi_dsi_transfer(const struct device *dev,
157 uint8_t channel,
158 struct mipi_dsi_msg *msg)
159{
160 const struct mipi_dsi_driver_api *api = (const struct mipi_dsi_driver_api *)dev->api;
161
162 return api->transfer(dev, channel, msg);
163}
164
177ssize_t mipi_dsi_generic_read(const struct device *dev, uint8_t channel,
178 const void *params, size_t nparams,
179 void *buf, size_t len);
180
191ssize_t mipi_dsi_generic_write(const struct device *dev, uint8_t channel,
192 const void *buf, size_t len);
193
205ssize_t mipi_dsi_dcs_read(const struct device *dev, uint8_t channel,
206 uint8_t cmd, void *buf, size_t len);
207
219ssize_t mipi_dsi_dcs_write(const struct device *dev, uint8_t channel,
220 uint8_t cmd, const void *buf, size_t len);
221
222
232static inline int mipi_dsi_detach(const struct device *dev,
233 uint8_t channel,
234 const struct mipi_dsi_device *mdev)
235{
236 const struct mipi_dsi_driver_api *api = (const struct mipi_dsi_driver_api *)dev->api;
237
238 if (api->detach == NULL) {
239 return -ENOSYS;
240 }
241
242 return api->detach(dev, channel, mdev);
243}
244
245#ifdef __cplusplus
246}
247#endif
248
253#endif /* ZEPHYR_INCLUDE_DRIVERS_MIPI_DSI_H_ */
System error numbers.
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition: ft8xx_reference_api.h:153
ssize_t mipi_dsi_generic_read(const struct device *dev, uint8_t channel, const void *params, size_t nparams, void *buf, size_t len)
MIPI-DSI generic read.
static int mipi_dsi_attach(const struct device *dev, uint8_t channel, const struct mipi_dsi_device *mdev)
Attach a new device to the MIPI-DSI bus.
Definition: mipi_dsi.h:138
ssize_t mipi_dsi_generic_write(const struct device *dev, uint8_t channel, const void *buf, size_t len)
MIPI-DSI generic write.
ssize_t mipi_dsi_dcs_read(const struct device *dev, uint8_t channel, uint8_t cmd, void *buf, size_t len)
MIPI-DSI DCS read.
static ssize_t mipi_dsi_transfer(const struct device *dev, uint8_t channel, struct mipi_dsi_msg *msg)
Transfer data to/from a device attached to the MIPI-DSI bus.
Definition: mipi_dsi.h:156
static int mipi_dsi_detach(const struct device *dev, uint8_t channel, const struct mipi_dsi_device *mdev)
Detach a device from the MIPI-DSI bus.
Definition: mipi_dsi.h:232
ssize_t mipi_dsi_dcs_write(const struct device *dev, uint8_t channel, uint8_t cmd, const void *buf, size_t len)
MIPI-DSI DCS write.
#define ENOSYS
Function not implemented.
Definition: errno.h:83
__SIZE_TYPE__ ssize_t
Definition: types.h:28
Display definitions for MIPI devices.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
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
MIPI-DSI device.
Definition: mipi_dsi.h:84
uint32_t pixfmt
Pixel format.
Definition: mipi_dsi.h:90
uint8_t data_lanes
Number of data lanes.
Definition: mipi_dsi.h:86
uint32_t mode_flags
Mode flags.
Definition: mipi_dsi.h:92
struct mipi_dsi_timings timings
Display timings.
Definition: mipi_dsi.h:88
MIPI-DSI host driver API.
Definition: mipi_dsi.h:120
int(* attach)(const struct device *dev, uint8_t channel, const struct mipi_dsi_device *mdev)
Definition: mipi_dsi.h:121
int(* detach)(const struct device *dev, uint8_t channel, const struct mipi_dsi_device *mdev)
Definition: mipi_dsi.h:125
ssize_t(* transfer)(const struct device *dev, uint8_t channel, struct mipi_dsi_msg *msg)
Definition: mipi_dsi.h:123
MIPI-DSI read/write message.
Definition: mipi_dsi.h:102
uint8_t cmd
Command (only for DCS)
Definition: mipi_dsi.h:108
size_t tx_len
Transmission buffer length.
Definition: mipi_dsi.h:110
const void * tx_buf
Transmission buffer.
Definition: mipi_dsi.h:112
uint8_t type
Payload data type.
Definition: mipi_dsi.h:104
void * rx_buf
Reception buffer.
Definition: mipi_dsi.h:116
size_t rx_len
Reception buffer length.
Definition: mipi_dsi.h:114
uint16_t flags
Flags controlling message transmission.
Definition: mipi_dsi.h:106
MIPI-DSI display timings.
Definition: mipi_dsi.h:32
uint32_t hactive
Horizontal active video.
Definition: mipi_dsi.h:34
uint32_t vsync
Vertical sync length.
Definition: mipi_dsi.h:48
uint32_t hsync
Horizontal sync length.
Definition: mipi_dsi.h:40
uint32_t vfp
Vertical front porch.
Definition: mipi_dsi.h:44
uint32_t vactive
Vertical active video.
Definition: mipi_dsi.h:42
uint32_t hfp
Horizontal front porch.
Definition: mipi_dsi.h:36
uint32_t hbp
Horizontal back porch.
Definition: mipi_dsi.h:38
uint32_t vbp
Vertical back porch.
Definition: mipi_dsi.h:46