8#ifndef __LINUX_MIPI_DBI_H
9#define __LINUX_MIPI_DBI_H
61 struct spi_device *
spi;
160 struct gpio_desc *dc);
172 u8 bpw,
const void *buf,
size_t len);
194#define mipi_dbi_command(dbi, cmd, seq...) \
196 const u8 d[] = { seq }; \
197 struct device *dev = &(dbi)->spi->dev; \
199 ret = mipi_dbi_command_stackbuf(dbi, cmd, d, ARRAY_SIZE(d)); \
201 dev_err_ratelimited(dev, "error %d when sending command %#02x\n", ret, cmd); \
209#define DRM_MIPI_DBI_PLANE_FORMATS \
213#define DRM_MIPI_DBI_PLANE_FORMAT_MODIFIERS \
214 DRM_FORMAT_MOD_LINEAR, \
215 DRM_FORMAT_MOD_INVALID
217#define DRM_MIPI_DBI_PLANE_FUNCS \
218 DRM_GEM_SHADOW_PLANE_FUNCS, \
219 .update_plane = drm_atomic_helper_update_plane, \
220 .disable_plane = drm_atomic_helper_disable_plane
227#define DRM_MIPI_DBI_PLANE_HELPER_FUNCS \
228 DRM_GEM_SHADOW_PLANE_HELPER_FUNCS, \
229 .atomic_check = drm_mipi_dbi_plane_helper_atomic_check, \
230 .atomic_update = drm_mipi_dbi_plane_helper_atomic_update
236#define DRM_MIPI_DBI_CRTC_FUNCS \
237 .reset = drm_atomic_helper_crtc_reset, \
238 .set_config = drm_atomic_helper_set_config, \
239 .page_flip = drm_atomic_helper_page_flip, \
240 .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, \
241 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state
250#define DRM_MIPI_DBI_CRTC_HELPER_FUNCS \
251 .mode_valid = drm_mipi_dbi_crtc_helper_mode_valid, \
252 .atomic_check = drm_mipi_dbi_crtc_helper_atomic_check, \
253 .atomic_disable = drm_mipi_dbi_crtc_helper_atomic_disable
259#define DRM_MIPI_DBI_CONNECTOR_FUNCS \
260 .reset = drm_atomic_helper_connector_reset, \
261 .fill_modes = drm_helper_probe_single_connector_modes, \
262 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, \
263 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state
267#define DRM_MIPI_DBI_CONNECTOR_HELPER_FUNCS \
268 .get_modes = drm_mipi_dbi_connector_helper_get_modes
274#define DRM_MIPI_DBI_MODE_CONFIG_FUNCS \
275 .fb_create = drm_gem_fb_create_with_dirty, \
276 .atomic_check = drm_atomic_helper_check, \
277 .atomic_commit = drm_atomic_helper_commit
279#define DRM_MIPI_DBI_MODE_CONFIG_HELPER_FUNCS \
280 .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm
286#ifdef CONFIG_DEBUG_FS
287void mipi_dbi_debugfs_init(
struct drm_minor *minor);
289static inline void mipi_dbi_debugfs_init(
struct drm_minor *minor) {}
#define container_of(ptr, type, member)
Definition container_of.h:19
struct drm_crtc * crtc
Definition drm_crtc.h:1238
int mipi_dbi_command_stackbuf(struct mipi_dbi *dbi, u8 cmd, const u8 *data, size_t len)
int mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi, struct gpio_desc *dc)
void drm_mipi_dbi_plane_helper_atomic_update(struct drm_plane *plane, struct drm_atomic_commit *state)
int mipi_dbi_command_buf(struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len)
int mipi_dbi_poweron_reset(struct mipi_dbi_dev *dbidev)
u32 mipi_dbi_spi_cmd_max_speed(struct spi_device *spi, size_t len)
int drm_mipi_dbi_connector_helper_get_modes(struct drm_connector *connector)
void mipi_dbi_hw_reset(struct mipi_dbi *dbi)
int drm_mipi_dbi_dev_init(struct mipi_dbi_dev *dbidev, const struct drm_display_mode *mode, u32 format, unsigned int rotation, size_t tx_buf_size)
int mipi_dbi_poweron_conditional_reset(struct mipi_dbi_dev *dbidev)
bool mipi_dbi_display_is_on(struct mipi_dbi *dbi)
void drm_mipi_dbi_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_commit *state)
enum drm_mode_status drm_mipi_dbi_crtc_helper_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode)
int mipi_dbi_command_read(struct mipi_dbi *dbi, u8 cmd, u8 *val)
int mipi_dbi_buf_copy(void *dst, struct iosys_map *src, struct drm_framebuffer *fb, struct drm_rect *clip, bool swap, struct drm_format_conv_state *fmtcnv_state)
int drm_mipi_dbi_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_atomic_commit *state)
int drm_mipi_dbi_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_commit *state)
int mipi_dbi_spi_transfer(struct spi_device *spi, u32 speed_hz, u8 bpw, const void *buf, size_t len)
drm_mode_status
Definition drm_modes.h:91
struct drm_plane * plane
Definition drm_plane.h:828
const char const char * format
Definition drm_print.h:516
i32 clip(i32 x, i32 y, i32 z)
size_t len
Definition initial.c:23
void * data
Definition kthread.h:30
uint8_t u8
Definition kernel.h:14
uint16_t u16
Definition kernel.h:15
uint32_t u32
Definition kernel.h:16
#define swap(a, b)
Definition minmax.h:73
Definition drm_atomic.h:480
Definition drm_connector.h:1998
Definition drm_crtc.h:955
Definition drm_device.h:75
Definition drm_modes.h:252
Definition drm_framebuffer.h:120
Definition drm_plane.h:641
Definition iosys-map.h:109
Definition drm_mipi_dbi.h:87
u32 pixel_format
Definition drm_mipi_dbi.h:101
struct backlight_device * backlight
Definition drm_mipi_dbi.h:128
struct drm_display_mode mode
Definition drm_mipi_dbi.h:96
u16 * tx_buf
Definition drm_mipi_dbi.h:106
void * driver_private
Definition drm_mipi_dbi.h:151
struct mipi_dbi dbi
Definition drm_mipi_dbi.h:143
unsigned int top_offset
Definition drm_mipi_dbi.h:123
unsigned int left_offset
Definition drm_mipi_dbi.h:117
struct regulator * io_regulator
Definition drm_mipi_dbi.h:138
unsigned int rotation
Definition drm_mipi_dbi.h:111
struct drm_device drm
Definition drm_mipi_dbi.h:91
struct regulator * regulator
Definition drm_mipi_dbi.h:133
Definition drm_mipi_dbi.h:29
unsigned int write_memory_bpw
Definition drm_mipi_dbi.h:66
void * tx_buf9
Definition drm_mipi_dbi.h:76
size_t tx_buf9_len
Definition drm_mipi_dbi.h:81
const u8 * read_commands
Definition drm_mipi_dbi.h:44
struct spi_device * spi
Definition drm_mipi_dbi.h:61
struct gpio_desc * dc
Definition drm_mipi_dbi.h:71
int(* command)(struct mipi_dbi *dbi, u8 *cmd, u8 *param, size_t num)
Definition drm_mipi_dbi.h:38
bool swap_bytes
Definition drm_mipi_dbi.h:49
struct gpio_desc * reset
Definition drm_mipi_dbi.h:54
struct mutex cmdlock
Definition drm_mipi_dbi.h:33