HPM SDK
HPMicro Software Development Kit
hpm_mipi_dsi_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_MIPI_DSI_DRV_H
9 #define HPM_MIPI_DSI_DRV_H
10 
18 #include "hpm_common.h"
19 #include "hpm_soc.h"
20 #include "hpm_mipi_dsi_regs.h"
21 
22 
23 /* MIPI DSI Processor-to-Peripheral transaction types */
24 typedef enum mipi_dsi_tx_cmd {
40 
41 /* MIPI DCS commands */
42 typedef enum mipi_dcs_cmd {
43  MIPI_DCS_NOP = 0x00,
83  MIPI_DCS_SET_DISPLAY_BRIGHTNESS = 0x51, /* MIPI DCS 1.3 */
84  MIPI_DCS_GET_DISPLAY_BRIGHTNESS = 0x52, /* MIPI DCS 1.3 */
85  MIPI_DCS_WRITE_CONTROL_DISPLAY = 0x53, /* MIPI DCS 1.3 */
86  MIPI_DCS_GET_CONTROL_DISPLAY = 0x54, /* MIPI DCS 1.3 */
87  MIPI_DCS_WRITE_POWER_SAVE = 0x55, /* MIPI DCS 1.3 */
88  MIPI_DCS_GET_POWER_SAVE = 0x56, /* MIPI DCS 1.3 */
89  MIPI_DCS_SET_CABC_MIN_BRIGHTNESS = 0x5E, /* MIPI DCS 1.3 */
90  MIPI_DCS_GET_CABC_MIN_BRIGHTNESS = 0x5F, /* MIPI DCS 1.3 */
94 
95 typedef enum mipi_dsi_pixel_format {
101 
102 typedef enum mipi_dsi_video_mode {
107 
111 typedef struct mipi_dsi_msg {
112  uint8_t channel;
113  uint8_t type;
114  uint16_t tx_len;
115  const void *tx_buf;
116  uint16_t rx_len;
117  void *rx_buf;
119 
120 typedef struct mipi_video_para {
121  uint32_t pixel_clock_khz;
122  uint32_t hactive;
123  uint32_t hfront_porch;
124  uint32_t hback_porch;
125  uint32_t hsync_len;
127  uint32_t vactive;
128  uint32_t vfront_porch;
129  uint32_t vback_porch;
130  uint32_t vsync_len;
132 
133 typedef struct mipi_dsi_config {
134  uint32_t lane_mbps;
135  uint8_t channel;
136  uint8_t lanes;
142 
143 
144 #ifdef __cplusplus
145 extern "C" {
146 #endif
147 
154 
162 
169 
176 
183 
190 
201 
213 int mipi_dsi_set_maximum_return_packet_size(MIPI_DSI_Type *ptr, uint8_t channel, uint16_t value);
214 
229 int mipi_dsi_generic_write(MIPI_DSI_Type *ptr, uint8_t channel, const void *payload,
230  uint16_t size);
231 
248 int mipi_dsi_generic_read(MIPI_DSI_Type *ptr, uint8_t channel, const void *params,
249  uint16_t num_params, void *data, uint16_t size);
250 
265 int mipi_dsi_dcs_write_buffer(MIPI_DSI_Type *ptr, uint8_t channel,
266  const void *data, uint16_t len);
267 
283 int mipi_dsi_dcs_write(MIPI_DSI_Type *ptr, uint8_t channel, uint8_t cmd,
284  const void *data, uint16_t len);
285 
297 int mipi_dsi_dcs_read(MIPI_DSI_Type *ptr, uint8_t channel, uint8_t cmd, void *data, uint16_t len);
298 
299 
300 #ifdef __cplusplus
301 }
302 #endif
303 
307 #endif /* HPM_MIPI_DSI_DRV_H */
int mipi_dsi_dcs_write_buffer(MIPI_DSI_Type *ptr, uint8_t channel, const void *data, uint16_t len)
transmit a DCS command with payload
Definition: hpm_mipi_dsi_drv.c:489
void mipi_dsi_phy_poweron(MIPI_DSI_Type *ptr)
MIPI_DSI phy interface power on.
Definition: hpm_mipi_dsi_drv.c:320
int mipi_dsi_generic_write(MIPI_DSI_Type *ptr, uint8_t channel, const void *payload, uint16_t size)
transmit data using a generic write packet
Definition: hpm_mipi_dsi_drv.c:432
mipi_dcs_cmd
Definition: hpm_mipi_dsi_drv.h:42
enum mipi_dsi_pixel_format mipi_dsi_pixel_format_t
int mipi_dsi_lp_cmd_transfer(MIPI_DSI_Type *ptr, const mipi_dsi_msg_t *msg)
transmit data using mipi dsi message in low power mode
Definition: hpm_mipi_dsi_drv.c:346
void mipi_dsi_video_mode_hs_transfer_enable(MIPI_DSI_Type *ptr)
MIPI_DSI hs transfer start.
Definition: hpm_mipi_dsi_drv.c:332
void mipi_dsi_get_defconfig_on_video(mipi_dsi_config_t *cfg)
get MIPI_DSI default config on video mode
Definition: hpm_mipi_dsi_drv.c:242
int mipi_dsi_set_maximum_return_packet_size(MIPI_DSI_Type *ptr, uint8_t channel, uint16_t value)
specify the maximum size of the the payload in a long packet transmitted from the peripheral back to ...
Definition: hpm_mipi_dsi_drv.c:417
mipi_dsi_pixel_format
Definition: hpm_mipi_dsi_drv.h:95
mipi_dsi_video_mode
Definition: hpm_mipi_dsi_drv.h:102
void mipi_dsi_phy_powerdown(MIPI_DSI_Type *ptr)
MIPI_DSI phy interface power down.
Definition: hpm_mipi_dsi_drv.c:326
void mipi_dsi_init(MIPI_DSI_Type *ptr, mipi_dsi_config_t *cfg)
MIPI_DSI init.
Definition: hpm_mipi_dsi_drv.c:265
int mipi_dsi_dcs_write(MIPI_DSI_Type *ptr, uint8_t channel, uint8_t cmd, const void *data, uint16_t len)
send DCS write command
Definition: hpm_mipi_dsi_drv.c:515
struct mipi_dsi_msg mipi_dsi_msg_t
mipi_dsi_tx_cmd
Definition: hpm_mipi_dsi_drv.h:24
enum mipi_dsi_video_mode mipi_dsi_video_mode_t
struct mipi_dsi_config mipi_dsi_config_t
int mipi_dsi_dcs_read(MIPI_DSI_Type *ptr, uint8_t channel, uint8_t cmd, void *data, uint16_t len)
send DCS read request command
Definition: hpm_mipi_dsi_drv.c:536
enum mipi_dsi_tx_cmd mipi_dsi_tx_cmd_t
void mipi_dsi_video_mode_hs_transfer_disable(MIPI_DSI_Type *ptr)
MIPI_DSI hs transfer stop.
Definition: hpm_mipi_dsi_drv.c:340
struct mipi_video_para mipi_video_para_t
int mipi_dsi_generic_read(MIPI_DSI_Type *ptr, uint8_t channel, const void *params, uint16_t num_params, void *data, uint16_t size)
receive data using a generic read packet
Definition: hpm_mipi_dsi_drv.c:460
enum mipi_dcs_cmd mipi_dcs_cmd_t
@ MIPI_DCS_GET_DISPLAY_MODE
Definition: hpm_mipi_dsi_drv.h:53
@ MIPI_DCS_GET_DISPLAY_STATUS
Definition: hpm_mipi_dsi_drv.h:49
@ MIPI_DCS_GET_BLUE_CHANNEL
Definition: hpm_mipi_dsi_drv.h:48
@ MIPI_DCS_WRITE_LUT
Definition: hpm_mipi_dsi_drv.h:68
@ MIPI_DCS_GET_CONTROL_DISPLAY
Definition: hpm_mipi_dsi_drv.h:86
@ MIPI_DCS_GET_CABC_MIN_BRIGHTNESS
Definition: hpm_mipi_dsi_drv.h:90
@ MIPI_DCS_WRITE_POWER_SAVE
Definition: hpm_mipi_dsi_drv.h:87
@ MIPI_DCS_SET_TEAR_OFF
Definition: hpm_mipi_dsi_drv.h:72
@ MIPI_DCS_SET_DISPLAY_ON
Definition: hpm_mipi_dsi_drv.h:64
@ MIPI_DCS_SET_PARTIAL_AREA
Definition: hpm_mipi_dsi_drv.h:70
@ MIPI_DCS_ENTER_SLEEP_MODE
Definition: hpm_mipi_dsi_drv.h:56
@ MIPI_DCS_READ_DDB_START
Definition: hpm_mipi_dsi_drv.h:91
@ MIPI_DCS_SOFT_RESET
Definition: hpm_mipi_dsi_drv.h:44
@ MIPI_DCS_GET_POWER_MODE
Definition: hpm_mipi_dsi_drv.h:50
@ MIPI_DCS_READ_DDB_CONTINUE
Definition: hpm_mipi_dsi_drv.h:92
@ MIPI_DCS_READ_MEMORY_CONTINUE
Definition: hpm_mipi_dsi_drv.h:80
@ MIPI_DCS_NOP
Definition: hpm_mipi_dsi_drv.h:43
@ MIPI_DCS_SET_GAMMA_CURVE
Definition: hpm_mipi_dsi_drv.h:62
@ MIPI_DCS_GET_ADDRESS_MODE
Definition: hpm_mipi_dsi_drv.h:51
@ MIPI_DCS_SET_COLUMN_ADDRESS
Definition: hpm_mipi_dsi_drv.h:65
@ MIPI_DCS_GET_RED_CHANNEL
Definition: hpm_mipi_dsi_drv.h:46
@ MIPI_DCS_WRITE_MEMORY_START
Definition: hpm_mipi_dsi_drv.h:67
@ MIPI_DCS_SET_PAGE_ADDRESS
Definition: hpm_mipi_dsi_drv.h:66
@ MIPI_DCS_GET_DISPLAY_BRIGHTNESS
Definition: hpm_mipi_dsi_drv.h:84
@ MIPI_DCS_ENTER_IDLE_MODE
Definition: hpm_mipi_dsi_drv.h:77
@ MIPI_DCS_EXIT_INVERT_MODE
Definition: hpm_mipi_dsi_drv.h:60
@ MIPI_DCS_GET_DISPLAY_ID
Definition: hpm_mipi_dsi_drv.h:45
@ MIPI_DCS_SET_DISPLAY_BRIGHTNESS
Definition: hpm_mipi_dsi_drv.h:83
@ MIPI_DCS_GET_PIXEL_FORMAT
Definition: hpm_mipi_dsi_drv.h:52
@ MIPI_DCS_SET_TEAR_SCANLINE
Definition: hpm_mipi_dsi_drv.h:81
@ MIPI_DCS_GET_GREEN_CHANNEL
Definition: hpm_mipi_dsi_drv.h:47
@ MIPI_DCS_GET_POWER_SAVE
Definition: hpm_mipi_dsi_drv.h:88
@ MIPI_DCS_SET_DISPLAY_OFF
Definition: hpm_mipi_dsi_drv.h:63
@ MIPI_DCS_WRITE_MEMORY_CONTINUE
Definition: hpm_mipi_dsi_drv.h:79
@ MIPI_DCS_SET_TEAR_ON
Definition: hpm_mipi_dsi_drv.h:73
@ MIPI_DCS_ENTER_INVERT_MODE
Definition: hpm_mipi_dsi_drv.h:61
@ MIPI_DCS_SET_PIXEL_FORMAT
Definition: hpm_mipi_dsi_drv.h:78
@ MIPI_DCS_GET_SIGNAL_MODE
Definition: hpm_mipi_dsi_drv.h:54
@ MIPI_DCS_ENTER_PARTIAL_MODE
Definition: hpm_mipi_dsi_drv.h:58
@ MIPI_DCS_GET_DIAGNOSTIC_RESULT
Definition: hpm_mipi_dsi_drv.h:55
@ MIPI_DCS_READ_MEMORY_START
Definition: hpm_mipi_dsi_drv.h:69
@ MIPI_DCS_SET_SCROLL_START
Definition: hpm_mipi_dsi_drv.h:75
@ MIPI_DCS_WRITE_CONTROL_DISPLAY
Definition: hpm_mipi_dsi_drv.h:85
@ MIPI_DCS_SET_ADDRESS_MODE
Definition: hpm_mipi_dsi_drv.h:74
@ MIPI_DCS_SET_CABC_MIN_BRIGHTNESS
Definition: hpm_mipi_dsi_drv.h:89
@ MIPI_DCS_ENTER_NORMAL_MODE
Definition: hpm_mipi_dsi_drv.h:59
@ MIPI_DCS_SET_SCROLL_AREA
Definition: hpm_mipi_dsi_drv.h:71
@ MIPI_DCS_EXIT_IDLE_MODE
Definition: hpm_mipi_dsi_drv.h:76
@ MIPI_DCS_GET_SCANLINE
Definition: hpm_mipi_dsi_drv.h:82
@ MIPI_DCS_EXIT_SLEEP_MODE
Definition: hpm_mipi_dsi_drv.h:57
@ MIPI_DSI_FMT_RGB565
Definition: hpm_mipi_dsi_drv.h:99
@ MIPI_DSI_FMT_RGB666
Definition: hpm_mipi_dsi_drv.h:97
@ MIPI_DSI_FMT_RGB666_PACKED
Definition: hpm_mipi_dsi_drv.h:98
@ MIPI_DSI_FMT_RGB888
Definition: hpm_mipi_dsi_drv.h:96
@ MIPI_DSI_VIDEO_MODE_BURST
Definition: hpm_mipi_dsi_drv.h:105
@ MIPI_DSI_VIDEO_MODE_SYNC_PULSE
Definition: hpm_mipi_dsi_drv.h:103
@ MIPI_DSI_VIDEO_MODE_SYNC_EVENT
Definition: hpm_mipi_dsi_drv.h:104
@ MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM
Definition: hpm_mipi_dsi_drv.h:28
@ MIPI_DSI_DCS_LONG_WRITE
Definition: hpm_mipi_dsi_drv.h:38
@ MIPI_DSI_TURN_ON_PERIPHERAL
Definition: hpm_mipi_dsi_drv.h:26
@ MIPI_DSI_DCS_SHORT_WRITE_PARAM
Definition: hpm_mipi_dsi_drv.h:34
@ MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE
Definition: hpm_mipi_dsi_drv.h:36
@ MIPI_DSI_GENERIC_READ_REQUEST_1_PARAM
Definition: hpm_mipi_dsi_drv.h:31
@ MIPI_DSI_GENERIC_LONG_WRITE
Definition: hpm_mipi_dsi_drv.h:37
@ MIPI_DSI_DCS_SHORT_WRITE
Definition: hpm_mipi_dsi_drv.h:33
@ MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM
Definition: hpm_mipi_dsi_drv.h:27
@ MIPI_DSI_SHUTDOWN_PERIPHERAL
Definition: hpm_mipi_dsi_drv.h:25
@ MIPI_DSI_DCS_READ
Definition: hpm_mipi_dsi_drv.h:35
@ MIPI_DSI_GENERIC_READ_REQUEST_0_PARAM
Definition: hpm_mipi_dsi_drv.h:30
@ MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM
Definition: hpm_mipi_dsi_drv.h:32
@ MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM
Definition: hpm_mipi_dsi_drv.h:29
static void size
Definition: hpm_math.h:6899
Definition: hpm_mipi_dsi_regs.h:12
Definition: hpm_mipi_dsi_drv.h:133
mipi_video_para_t video_para
Definition: hpm_mipi_dsi_drv.h:139
mipi_dsi_pixel_format_t pixel_format
Definition: hpm_mipi_dsi_drv.h:138
uint8_t channel
Definition: hpm_mipi_dsi_drv.h:135
bool disable_eotp
Definition: hpm_mipi_dsi_drv.h:137
uint32_t lane_mbps
Definition: hpm_mipi_dsi_drv.h:134
uint8_t lanes
Definition: hpm_mipi_dsi_drv.h:136
mipi_dsi_video_mode_t video_mode
Definition: hpm_mipi_dsi_drv.h:140
Definition: hpm_mipi_dsi_drv.h:111
uint8_t channel
Definition: hpm_mipi_dsi_drv.h:112
uint16_t tx_len
Definition: hpm_mipi_dsi_drv.h:114
const void * tx_buf
Definition: hpm_mipi_dsi_drv.h:115
uint16_t rx_len
Definition: hpm_mipi_dsi_drv.h:116
uint8_t type
Definition: hpm_mipi_dsi_drv.h:113
void * rx_buf
Definition: hpm_mipi_dsi_drv.h:117
Definition: hpm_mipi_dsi_drv.h:120
uint32_t hback_porch
Definition: hpm_mipi_dsi_drv.h:124
uint32_t pixel_clock_khz
Definition: hpm_mipi_dsi_drv.h:121
uint32_t vback_porch
Definition: hpm_mipi_dsi_drv.h:129
uint32_t hsync_len
Definition: hpm_mipi_dsi_drv.h:125
uint32_t vfront_porch
Definition: hpm_mipi_dsi_drv.h:128
uint32_t vactive
Definition: hpm_mipi_dsi_drv.h:127
uint32_t hfront_porch
Definition: hpm_mipi_dsi_drv.h:123
uint32_t vsync_len
Definition: hpm_mipi_dsi_drv.h:130
uint32_t hactive
Definition: hpm_mipi_dsi_drv.h:122