Lines Matching full:dbi

3  * MIPI Display Bus Interface (DBI) LCD controller support
44 * This library provides helpers for MIPI Display Bus Interface (DBI)
54 * There are 3 MIPI DBI implementation types:
104 static bool mipi_dbi_command_is_read(struct mipi_dbi *dbi, u8 cmd) in mipi_dbi_command_is_read() argument
108 if (!dbi->read_commands) in mipi_dbi_command_is_read()
112 if (!dbi->read_commands[i]) in mipi_dbi_command_is_read()
114 if (cmd == dbi->read_commands[i]) in mipi_dbi_command_is_read()
123 * @dbi: MIPI DBI structure
132 int mipi_dbi_command_read(struct mipi_dbi *dbi, u8 cmd, u8 *val) in mipi_dbi_command_read() argument
134 if (!dbi->read_commands) in mipi_dbi_command_read()
137 if (!mipi_dbi_command_is_read(dbi, cmd)) in mipi_dbi_command_read()
140 return mipi_dbi_command_buf(dbi, cmd, val, 1); in mipi_dbi_command_read()
146 * @dbi: MIPI DBI structure
154 int mipi_dbi_command_buf(struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len) in mipi_dbi_command_buf() argument
164 mutex_lock(&dbi->cmdlock); in mipi_dbi_command_buf()
165 ret = dbi->command(dbi, cmdbuf, data, len); in mipi_dbi_command_buf()
166 mutex_unlock(&dbi->cmdlock); in mipi_dbi_command_buf()
175 int mipi_dbi_command_stackbuf(struct mipi_dbi *dbi, u8 cmd, const u8 *data, in mipi_dbi_command_stackbuf() argument
185 ret = mipi_dbi_command_buf(dbi, cmd, buf, len); in mipi_dbi_command_stackbuf()
255 struct mipi_dbi *dbi = &dbidev->dbi; in mipi_dbi_set_window_address() local
262 mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS, (xs >> 8) & 0xff, in mipi_dbi_set_window_address()
264 mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS, (ys >> 8) & 0xff, in mipi_dbi_set_window_address()
275 struct mipi_dbi *dbi = &dbidev->dbi; in mipi_dbi_fb_dirty() local
276 bool swap = dbi->swap_bytes; in mipi_dbi_fb_dirty()
286 if (!dbi->dc || !full || swap || in mipi_dbi_fb_dirty()
305 ret = mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, tr, len); in mipi_dbi_fb_dirty()
312 * mipi_dbi_pipe_mode_valid - MIPI DBI mode-valid helper
316 * This function validates a given display mode against the MIPI DBI's hardware
364 * mipi_dbi_enable_flush - MIPI DBI enable helper
365 * @dbidev: MIPI DBI device structure
406 struct mipi_dbi *dbi = &dbidev->dbi; in mipi_dbi_blank() local
420 mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, in mipi_dbi_blank()
427 * mipi_dbi_pipe_disable - MIPI DBI pipe disable helper
453 * mipi_dbi_pipe_begin_fb_access - MIPI DBI pipe begin-access helper
473 * mipi_dbi_pipe_end_fb_access - MIPI DBI pipe end-access helper
489 * mipi_dbi_pipe_reset_plane - MIPI DBI plane-reset helper
493 * for MIPI DBI planes.
502 * mipi_dbi_pipe_duplicate_plane_state - duplicates MIPI DBI plane state
506 * for MIPI DBI planes.
520 * mipi_dbi_pipe_destroy_plane_state - cleans up MIPI DBI plane state
525 * for MIPI DBI planes.
584 * mipi_dbi_dev_init_with_formats - MIPI DBI device initialization with custom formats
585 * @dbidev: MIPI DBI device structure to initialize
619 if (!dbidev->dbi.command) in mipi_dbi_dev_init_with_formats()
658 dbidev->dbi.write_memory_bpw = 8; in mipi_dbi_dev_init_with_formats()
667 * mipi_dbi_dev_init - MIPI DBI device initialization
668 * @dbidev: MIPI DBI device structure to initialize
699 * @dbi: MIPI DBI structure
703 void mipi_dbi_hw_reset(struct mipi_dbi *dbi) in mipi_dbi_hw_reset() argument
705 if (!dbi->reset) in mipi_dbi_hw_reset()
708 gpiod_set_value_cansleep(dbi->reset, 0); in mipi_dbi_hw_reset()
710 gpiod_set_value_cansleep(dbi->reset, 1); in mipi_dbi_hw_reset()
717 * @dbi: MIPI DBI structure
727 bool mipi_dbi_display_is_on(struct mipi_dbi *dbi) in mipi_dbi_display_is_on() argument
731 if (mipi_dbi_command_read(dbi, MIPI_DCS_GET_POWER_MODE, &val)) in mipi_dbi_display_is_on()
750 struct mipi_dbi *dbi = &dbidev->dbi; in mipi_dbi_poweron_reset_conditional() local
771 if (cond && mipi_dbi_display_is_on(dbi)) in mipi_dbi_poweron_reset_conditional()
774 mipi_dbi_hw_reset(dbi); in mipi_dbi_poweron_reset_conditional()
775 ret = mipi_dbi_command(dbi, MIPI_DCS_SOFT_RESET); in mipi_dbi_poweron_reset_conditional()
790 if (dbi->reset) in mipi_dbi_poweron_reset_conditional()
799 * mipi_dbi_poweron_reset - MIPI DBI poweron and reset
800 * @dbidev: MIPI DBI device structure
815 * mipi_dbi_poweron_conditional_reset - MIPI DBI poweron and conditional reset
816 * @dbidev: MIPI DBI device structure
853 * MIPI DBI Type C Option 1
870 static int mipi_dbi_spi1e_transfer(struct mipi_dbi *dbi, int dc, in mipi_dbi_spi1e_transfer() argument
875 size_t chunk, max_chunk = dbi->tx_buf9_len; in mipi_dbi_spi1e_transfer()
876 struct spi_device *spi = dbi->spi; in mipi_dbi_spi1e_transfer()
878 .tx_buf = dbi->tx_buf9, in mipi_dbi_spi1e_transfer()
898 dst = dbi->tx_buf9; in mipi_dbi_spi1e_transfer()
918 dst = dbi->tx_buf9; in mipi_dbi_spi1e_transfer()
988 static int mipi_dbi_spi1_transfer(struct mipi_dbi *dbi, int dc, in mipi_dbi_spi1_transfer() argument
992 struct spi_device *spi = dbi->spi; in mipi_dbi_spi1_transfer()
1004 return mipi_dbi_spi1e_transfer(dbi, dc, buf, len, bpw); in mipi_dbi_spi1_transfer()
1007 max_chunk = dbi->tx_buf9_len; in mipi_dbi_spi1_transfer()
1008 dst16 = dbi->tx_buf9; in mipi_dbi_spi1_transfer()
1051 static int mipi_dbi_typec1_command_read(struct mipi_dbi *dbi, u8 *cmd, in mipi_dbi_typec1_command_read() argument
1054 struct spi_device *spi = dbi->spi; in mipi_dbi_typec1_command_read()
1061 .tx_buf = dbi->tx_buf9, in mipi_dbi_typec1_command_read()
1092 dst16 = dbi->tx_buf9; in mipi_dbi_typec1_command_read()
1104 static int mipi_dbi_typec1_command(struct mipi_dbi *dbi, u8 *cmd, in mipi_dbi_typec1_command() argument
1110 if (mipi_dbi_command_is_read(dbi, *cmd)) in mipi_dbi_typec1_command()
1111 return mipi_dbi_typec1_command_read(dbi, cmd, parameters, num); in mipi_dbi_typec1_command()
1115 ret = mipi_dbi_spi1_transfer(dbi, 0, cmd, 1, 8); in mipi_dbi_typec1_command()
1120 bpw = dbi->write_memory_bpw; in mipi_dbi_typec1_command()
1122 return mipi_dbi_spi1_transfer(dbi, 1, parameters, num, bpw); in mipi_dbi_typec1_command()
1125 /* MIPI DBI Type C Option 3 */
1127 static int mipi_dbi_typec3_command_read(struct mipi_dbi *dbi, u8 *cmd, in mipi_dbi_typec3_command_read() argument
1130 struct spi_device *spi = dbi->spi; in mipi_dbi_typec3_command_read()
1169 gpiod_set_value_cansleep(dbi->dc, 0); in mipi_dbi_typec3_command_read()
1194 static int mipi_dbi_typec3_command(struct mipi_dbi *dbi, u8 *cmd, in mipi_dbi_typec3_command() argument
1197 struct spi_device *spi = dbi->spi; in mipi_dbi_typec3_command()
1202 if (mipi_dbi_command_is_read(dbi, *cmd)) in mipi_dbi_typec3_command()
1203 return mipi_dbi_typec3_command_read(dbi, cmd, par, num); in mipi_dbi_typec3_command()
1208 gpiod_set_value_cansleep(dbi->dc, 0); in mipi_dbi_typec3_command()
1216 bpw = dbi->write_memory_bpw; in mipi_dbi_typec3_command()
1219 gpiod_set_value_cansleep(dbi->dc, 1); in mipi_dbi_typec3_command()
1228 * mipi_dbi_spi_init - Initialize MIPI DBI SPI interface
1230 * @dbi: MIPI DBI structure to initialize
1241 * to be taken into account. The MIPI DBI serial interface is big endian and framebuffers are
1261 int mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi, in mipi_dbi_spi_init() argument
1285 dbi->spi = spi; in mipi_dbi_spi_init()
1286 dbi->read_commands = mipi_dbi_dcs_read_commands; in mipi_dbi_spi_init()
1287 dbi->write_memory_bpw = 16; in mipi_dbi_spi_init()
1290 dbi->command = mipi_dbi_typec3_command; in mipi_dbi_spi_init()
1291 dbi->dc = dc; in mipi_dbi_spi_init()
1293 dbi->write_memory_bpw = 8; in mipi_dbi_spi_init()
1294 dbi->swap_bytes = true; in mipi_dbi_spi_init()
1297 dbi->command = mipi_dbi_typec1_command; in mipi_dbi_spi_init()
1298 dbi->tx_buf9_len = SZ_16K; in mipi_dbi_spi_init()
1299 dbi->tx_buf9 = devm_kmalloc(dev, dbi->tx_buf9_len, GFP_KERNEL); in mipi_dbi_spi_init()
1300 if (!dbi->tx_buf9) in mipi_dbi_spi_init()
1304 mutex_init(&dbi->cmdlock); in mipi_dbi_spi_init()
1418 ret = mipi_dbi_command_buf(&dbidev->dbi, cmd, parameters, i); in mipi_dbi_debugfs_command_write()
1431 struct mipi_dbi *dbi = &dbidev->dbi; in mipi_dbi_debugfs_command_show() local
1440 if (!mipi_dbi_command_is_read(dbi, cmd)) in mipi_dbi_debugfs_command_show()
1460 ret = mipi_dbi_command_buf(dbi, cmd, val, len); in mipi_dbi_debugfs_command_show()
1503 if (dbidev->dbi.read_commands) in mipi_dbi_debugfs_init()
1512 MODULE_DESCRIPTION("MIPI Display Bus Interface (DBI) LCD controller support");