9#ifndef __DRM_MIPI_DSI_H__
10#define __DRM_MIPI_DSI_H__
17struct drm_dsc_picture_parameter_set;
20#define MIPI_DSI_MSG_REQ_ACK BIT(0)
22#define MIPI_DSI_MSG_USE_LPM BIT(1)
118#define MIPI_DSI_MODE_VIDEO BIT(0)
120#define MIPI_DSI_MODE_VIDEO_BURST BIT(1)
122#define MIPI_DSI_MODE_VIDEO_SYNC_PULSE BIT(2)
124#define MIPI_DSI_MODE_VIDEO_AUTO_VERT BIT(3)
126#define MIPI_DSI_MODE_VIDEO_HSE BIT(4)
128#define MIPI_DSI_MODE_VIDEO_NO_HFP BIT(5)
130#define MIPI_DSI_MODE_VIDEO_NO_HBP BIT(6)
132#define MIPI_DSI_MODE_VIDEO_NO_HSA BIT(7)
134#define MIPI_DSI_MODE_NO_EOT_PACKET BIT(9)
136#define MIPI_DSI_CLOCK_NON_CONTINUOUS BIT(10)
138#define MIPI_DSI_MODE_LPM BIT(11)
140#define MIPI_DSI_HS_PKT_END_ALIGNED BIT(12)
150#define DSI_DEV_NAME_SIZE 20
197 struct drm_dsc_config *
dsc;
221#define MIPI_DSI_MODULE_PREFIX "mipi-dsi:"
223#define to_mipi_dsi_device(__dev) container_of_const(__dev, struct mipi_dsi_device, dev)
226#define dev_is_mipi_dsi(dev) ((dev)->bus == &mipi_dsi_bus_type)
280 unsigned int pps_selector);
282 const struct drm_dsc_picture_parameter_set *pps);
287 unsigned int pps_selector);
291 const struct drm_dsc_picture_parameter_set *pps);
296 const void *payload,
size_t size);
300 const void *payload,
size_t size);
302 size_t num_params,
void *
data,
size_t size);
305#define mipi_dsi_msleep(ctx, delay) \
307 if (!(ctx)->accum_err) \
311#define mipi_dsi_usleep_range(ctx, min, max) \
313 if (!(ctx)->accum_err) \
314 usleep_range(min, max); \
329#define MIPI_DSI_DCS_POWER_MODE_DISPLAY (1 << 2)
330#define MIPI_DSI_DCS_POWER_MODE_NORMAL (1 << 3)
331#define MIPI_DSI_DCS_POWER_MODE_SLEEP (1 << 4)
332#define MIPI_DSI_DCS_POWER_MODE_PARTIAL (1 << 5)
333#define MIPI_DSI_DCS_POWER_MODE_IDLE (1 << 6)
407#define mipi_dsi_generic_write_seq_multi(ctx, seq...) \
409 static const u8 d[] = { seq }; \
410 mipi_dsi_generic_write_multi(ctx, d, ARRAY_SIZE(d)); \
423#define mipi_dsi_generic_write_var_seq_multi(ctx, seq...) \
425 const u8 d[] = { seq }; \
426 mipi_dsi_generic_write_multi(ctx, d, ARRAY_SIZE(d)); \
439#define mipi_dsi_dcs_write_seq_multi(ctx, cmd, seq...) \
441 static const u8 d[] = { cmd, seq }; \
442 mipi_dsi_dcs_write_buffer_multi(ctx, d, ARRAY_SIZE(d)); \
456#define mipi_dsi_dcs_write_var_seq_multi(ctx, cmd, seq...) \
458 const u8 d[] = { cmd, seq }; \
459 mipi_dsi_dcs_write_buffer_multi(ctx, d, ARRAY_SIZE(d)); \
487#define mipi_dsi_dual(_func, _ctx, _dsi1, _dsi2, ...) \
489 struct mipi_dsi_multi_context *_ctxcpy = (_ctx); \
490 _ctxcpy->dsi = (_dsi1); \
491 (_func)(_ctxcpy, ##__VA_ARGS__); \
492 _ctxcpy->dsi = (_dsi2); \
493 (_func)(_ctxcpy, ##__VA_ARGS__); \
515#define mipi_dsi_dual_generic_write_seq_multi(_ctx, _dsi1, _dsi2, _seq...) \
517 static const u8 d[] = { _seq }; \
518 mipi_dsi_dual_generic_write_multi(_ctx, _dsi1, _dsi2, d, \
542#define mipi_dsi_dual_dcs_write_seq_multi(_ctx, _dsi1, _dsi2, _cmd, _seq...) \
544 static const u8 d[] = { _cmd, _seq }; \
545 mipi_dsi_dual_dcs_write_buffer_multi(_ctx, _dsi1, _dsi2, d, \
569static inline void *mipi_dsi_get_drvdata(
const struct mipi_dsi_device *dsi)
571 return dev_get_drvdata(&dsi->
dev);
576 dev_set_drvdata(&dsi->
dev,
data);
580 struct module *
owner);
583#define mipi_dsi_driver_register(driver) \
584 mipi_dsi_driver_register_full(driver, THIS_MODULE)
586#define module_mipi_dsi_driver(__mipi_dsi_driver) \
587 module_driver(__mipi_dsi_driver, mipi_dsi_driver_register, \
588 mipi_dsi_driver_unregister)
int64_t ssize_t
Definition stddef.h:38
#define EINVAL
Definition acclib.h:198
#define container_of(ptr, type, member)
Definition container_of.h:19
size_t size
Definition drm_bridge.h:1299
const char * fmt
Definition drm_file.h:466
void mipi_dsi_compression_mode_ext_multi(struct mipi_dsi_multi_context *ctx, bool enable, enum mipi_dsi_compression_algo algo, unsigned int pps_selector)
int mipi_dsi_dcs_set_display_brightness(struct mipi_dsi_device *dsi, u16 brightness)
void mipi_dsi_dcs_set_column_address_multi(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)
int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi)
int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi, enum mipi_dsi_dcs_tear_mode mode)
struct mipi_dsi_device * of_find_mipi_dsi_device_by_node(struct device_node *np)
u32 drm_mipi_dsi_get_input_bus_fmt(enum mipi_dsi_pixel_format dsi_format)
int mipi_dsi_dcs_nop(struct mipi_dsi_device *dsi)
int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi)
ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi, const void *data, size_t len)
bool mipi_dsi_packet_format_is_short(u8 type)
int devm_mipi_dsi_attach(struct device *dev, struct mipi_dsi_device *dsi)
mipi_dsi_pixel_format
Definition drm_mipi_dsi.h:142
@ MIPI_DSI_FMT_RGB565
Definition drm_mipi_dsi.h:146
@ MIPI_DSI_FMT_RGB666
Definition drm_mipi_dsi.h:144
@ MIPI_DSI_FMT_RGB101010
Definition drm_mipi_dsi.h:147
@ MIPI_DSI_FMT_RGB666_PACKED
Definition drm_mipi_dsi.h:145
@ MIPI_DSI_FMT_RGB888
Definition drm_mipi_dsi.h:143
int mipi_dsi_picture_parameter_set(struct mipi_dsi_device *dsi, const struct drm_dsc_picture_parameter_set *pps)
int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi)
int mipi_dsi_dcs_set_display_brightness_large(struct mipi_dsi_device *dsi, u16 brightness)
ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload, size_t size)
int mipi_dsi_compression_mode_ext(struct mipi_dsi_device *dsi, bool enable, enum mipi_dsi_compression_algo algo, unsigned int pps_selector)
void mipi_dsi_dcs_read_multi(struct mipi_dsi_multi_context *ctx, u8 cmd, void *data, size_t len)
void mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx, const void *data, size_t len)
void mipi_dsi_dcs_soft_reset_multi(struct mipi_dsi_multi_context *ctx)
void mipi_dsi_dcs_set_display_brightness_multi(struct mipi_dsi_multi_context *ctx, u16 brightness)
void mipi_dsi_dual_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx, struct mipi_dsi_device *dsi1, struct mipi_dsi_device *dsi2, const void *data, size_t len)
int mipi_dsi_dcs_set_page_address(struct mipi_dsi_device *dsi, u16 start, u16 end)
void mipi_dsi_dcs_set_pixel_format_multi(struct mipi_dsi_multi_context *ctx, u8 format)
void mipi_dsi_dcs_exit_sleep_mode_multi(struct mipi_dsi_multi_context *ctx)
#define DSI_DEV_NAME_SIZE
Definition drm_mipi_dsi.h:150
int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device *dsi)
void mipi_dsi_dcs_set_page_address_multi(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)
mipi_dsi_compression_algo
Definition drm_mipi_dsi.h:256
@ MIPI_DSI_COMPRESSION_VENDOR
Definition drm_mipi_dsi.h:258
@ MIPI_DSI_COMPRESSION_DSC
Definition drm_mipi_dsi.h:257
void mipi_dsi_dcs_set_display_off_multi(struct mipi_dsi_multi_context *ctx)
void mipi_dsi_dcs_set_display_on_multi(struct mipi_dsi_multi_context *ctx)
int mipi_dsi_dcs_get_power_mode(struct mipi_dsi_device *dsi, u8 *mode)
int mipi_dsi_set_maximum_return_packet_size(struct mipi_dsi_device *dsi, u16 value)
int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi, const void *data, size_t len)
int mipi_dsi_compression_mode(struct mipi_dsi_device *dsi, bool enable)
void mipi_dsi_generic_write_multi(struct mipi_dsi_multi_context *ctx, const void *payload, size_t size)
int mipi_dsi_host_register(struct mipi_dsi_host *host)
int mipi_dsi_dcs_get_pixel_format(struct mipi_dsi_device *dsi, u8 *format)
int mipi_dsi_driver_register_full(struct mipi_dsi_driver *driver, struct module *owner)
struct mipi_dsi_device * devm_mipi_dsi_device_register_full(struct device *dev, struct mipi_dsi_host *host, const struct mipi_dsi_device_info *info)
int mipi_dsi_detach(struct mipi_dsi_device *dsi)
void mipi_dsi_dcs_set_tear_on_multi(struct mipi_dsi_multi_context *ctx, enum mipi_dsi_dcs_tear_mode mode)
int mipi_dsi_dcs_set_tear_scanline(struct mipi_dsi_device *dsi, u16 scanline)
void mipi_dsi_dcs_enter_sleep_mode_multi(struct mipi_dsi_multi_context *ctx)
int mipi_dsi_dcs_set_pixel_format(struct mipi_dsi_device *dsi, u8 format)
void mipi_dsi_dcs_nop_multi(struct mipi_dsi_multi_context *ctx)
void mipi_dsi_shutdown_peripheral_multi(struct mipi_dsi_multi_context *ctx)
const struct bus_type mipi_dsi_bus_type
void mipi_dsi_turn_on_peripheral_multi(struct mipi_dsi_multi_context *ctx)
int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device *dsi)
void mipi_dsi_device_unregister(struct mipi_dsi_device *dsi)
ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data, size_t len)
void mipi_dsi_picture_parameter_set_multi(struct mipi_dsi_multi_context *ctx, const struct drm_dsc_picture_parameter_set *pps)
bool mipi_dsi_packet_format_is_long(u8 type)
struct mipi_dsi_device * mipi_dsi_device_register_full(struct mipi_dsi_host *host, const struct mipi_dsi_device_info *info)
int mipi_dsi_dcs_get_display_brightness_large(struct mipi_dsi_device *dsi, u16 *brightness)
int mipi_dsi_turn_on_peripheral(struct mipi_dsi_device *dsi)
void mipi_dsi_compression_mode_multi(struct mipi_dsi_multi_context *ctx, bool enable)
int mipi_dsi_attach(struct mipi_dsi_device *dsi)
struct mipi_dsi_host * of_find_mipi_dsi_host_by_node(struct device_node *node)
mipi_dsi_dcs_tear_mode
Definition drm_mipi_dsi.h:324
@ MIPI_DSI_DCS_TEAR_MODE_VHBLANK
Definition drm_mipi_dsi.h:326
@ MIPI_DSI_DCS_TEAR_MODE_VBLANK
Definition drm_mipi_dsi.h:325
int mipi_dsi_dcs_get_display_brightness(struct mipi_dsi_device *dsi, u16 *brightness)
void mipi_dsi_dcs_set_tear_scanline_multi(struct mipi_dsi_multi_context *ctx, u16 scanline)
ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params, size_t num_params, void *data, size_t size)
void mipi_dsi_driver_unregister(struct mipi_dsi_driver *driver)
void mipi_dsi_dual_generic_write_multi(struct mipi_dsi_multi_context *ctx, struct mipi_dsi_device *dsi1, struct mipi_dsi_device *dsi2, const void *payload, size_t size)
int mipi_dsi_create_packet(struct mipi_dsi_packet *packet, const struct mipi_dsi_msg *msg)
int mipi_dsi_shutdown_peripheral(struct mipi_dsi_device *dsi)
int mipi_dsi_dcs_set_column_address(struct mipi_dsi_device *dsi, u16 start, u16 end)
void mipi_dsi_host_unregister(struct mipi_dsi_host *host)
void mipi_dsi_dcs_set_tear_off_multi(struct mipi_dsi_multi_context *ctx)
ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd, const void *data, size_t len)
const struct device * dev
Definition drm_print.h:519
const char const char * format
Definition drm_print.h:516
size_t len
Definition initial.c:23
void * data
Definition kthread.h:30
void int node
Definition kthread.h:31
uint8_t u8
Definition kernel.h:14
uint16_t u16
Definition kernel.h:15
uint32_t u32
Definition kernel.h:16
AuProcess * owner
Definition netproxy.c:38
Definition drm_mipi_dsi.h:161
char type[DSI_DEV_NAME_SIZE]
Definition drm_mipi_dsi.h:162
struct device_node * node
Definition drm_mipi_dsi.h:164
u32 channel
Definition drm_mipi_dsi.h:163
Definition drm_mipi_dsi.h:185
enum mipi_dsi_pixel_format format
Definition drm_mipi_dsi.h:193
struct mipi_dsi_host * host
Definition drm_mipi_dsi.h:186
unsigned int channel
Definition drm_mipi_dsi.h:191
struct drm_dsc_config * dsc
Definition drm_mipi_dsi.h:197
unsigned long mode_flags
Definition drm_mipi_dsi.h:194
char name[DSI_DEV_NAME_SIZE]
Definition drm_mipi_dsi.h:190
unsigned long hs_rate
Definition drm_mipi_dsi.h:195
bool attached
Definition drm_mipi_dsi.h:188
unsigned int lanes
Definition drm_mipi_dsi.h:192
unsigned long lp_rate
Definition drm_mipi_dsi.h:196
struct device dev
Definition drm_mipi_dsi.h:187
Definition drm_mipi_dsi.h:556
void(* remove)(struct mipi_dsi_device *dsi)
Definition drm_mipi_dsi.h:559
void(* shutdown)(struct mipi_dsi_device *dsi)
Definition drm_mipi_dsi.h:560
struct device_driver driver
Definition drm_mipi_dsi.h:557
int(* probe)(struct mipi_dsi_device *dsi)
Definition drm_mipi_dsi.h:558
Definition drm_mipi_dsi.h:90
ssize_t(* transfer)(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg)
Definition drm_mipi_dsi.h:95
int(* detach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi)
Definition drm_mipi_dsi.h:93
int(* attach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi)
Definition drm_mipi_dsi.h:91
Definition drm_mipi_dsi.h:105
const struct mipi_dsi_host_ops * ops
Definition drm_mipi_dsi.h:107
struct list_head list
Definition drm_mipi_dsi.h:108
struct device * dev
Definition drm_mipi_dsi.h:106
Definition drm_mipi_dsi.h:34
u8 type
Definition drm_mipi_dsi.h:36
u16 flags
Definition drm_mipi_dsi.h:37
size_t tx_len
Definition drm_mipi_dsi.h:39
const void * tx_buf
Definition drm_mipi_dsi.h:40
void * rx_buf
Definition drm_mipi_dsi.h:43
size_t rx_len
Definition drm_mipi_dsi.h:42
u8 channel
Definition drm_mipi_dsi.h:35
Definition drm_mipi_dsi.h:203
struct mipi_dsi_device * dsi
Definition drm_mipi_dsi.h:207
int accum_err
Definition drm_mipi_dsi.h:218
Definition drm_mipi_dsi.h:57
size_t size
Definition drm_mipi_dsi.h:58
size_t payload_length
Definition drm_mipi_dsi.h:60
const u8 * payload
Definition drm_mipi_dsi.h:61
u8 header[4]
Definition drm_mipi_dsi.h:59