Lines Matching refs:dbi
104 static bool mipi_dbi_command_is_read(struct mipi_dbi *dbi, u8 cmd)
108 if (!dbi->read_commands)
112 if (!dbi->read_commands[i])
114 if (cmd == dbi->read_commands[i])
123 * @dbi: MIPI DBI structure
132 int mipi_dbi_command_read(struct mipi_dbi *dbi, u8 cmd, u8 *val)
134 if (!dbi->read_commands)
137 if (!mipi_dbi_command_is_read(dbi, cmd))
140 return mipi_dbi_command_buf(dbi, cmd, val, 1);
146 * @dbi: MIPI DBI structure
154 int mipi_dbi_command_buf(struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len)
164 mutex_lock(&dbi->cmdlock);
165 ret = dbi->command(dbi, cmdbuf, data, len);
166 mutex_unlock(&dbi->cmdlock);
175 int mipi_dbi_command_stackbuf(struct mipi_dbi *dbi, u8 cmd, const u8 *data,
185 ret = mipi_dbi_command_buf(dbi, cmd, buf, len);
241 struct mipi_dbi *dbi = &dbidev->dbi;
248 mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS, (xs >> 8) & 0xff,
250 mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS, (ys >> 8) & 0xff,
260 struct mipi_dbi *dbi = &dbidev->dbi;
261 bool swap = dbi->swap_bytes;
270 if (!dbi->dc || !full || swap ||
283 ret = mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, tr,
383 struct mipi_dbi *dbi = &dbidev->dbi;
393 mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START,
592 if (!dbidev->dbi.command)
669 * @dbi: MIPI DBI structure
673 void mipi_dbi_hw_reset(struct mipi_dbi *dbi)
675 if (!dbi->reset)
678 gpiod_set_value_cansleep(dbi->reset, 0);
680 gpiod_set_value_cansleep(dbi->reset, 1);
687 * @dbi: MIPI DBI structure
697 bool mipi_dbi_display_is_on(struct mipi_dbi *dbi)
701 if (mipi_dbi_command_read(dbi, MIPI_DCS_GET_POWER_MODE, &val))
720 struct mipi_dbi *dbi = &dbidev->dbi;
741 if (cond && mipi_dbi_display_is_on(dbi))
744 mipi_dbi_hw_reset(dbi);
745 ret = mipi_dbi_command(dbi, MIPI_DCS_SOFT_RESET);
760 if (dbi->reset)
849 static int mipi_dbi_spi1e_transfer(struct mipi_dbi *dbi, int dc,
854 size_t chunk, max_chunk = dbi->tx_buf9_len;
855 struct spi_device *spi = dbi->spi;
857 .tx_buf = dbi->tx_buf9,
877 dst = dbi->tx_buf9;
897 dst = dbi->tx_buf9;
967 static int mipi_dbi_spi1_transfer(struct mipi_dbi *dbi, int dc,
971 struct spi_device *spi = dbi->spi;
983 return mipi_dbi_spi1e_transfer(dbi, dc, buf, len, bpw);
986 max_chunk = dbi->tx_buf9_len;
987 dst16 = dbi->tx_buf9;
1030 static int mipi_dbi_typec1_command_read(struct mipi_dbi *dbi, u8 *cmd,
1033 struct spi_device *spi = dbi->spi;
1040 .tx_buf = dbi->tx_buf9,
1071 dst16 = dbi->tx_buf9;
1083 static int mipi_dbi_typec1_command(struct mipi_dbi *dbi, u8 *cmd,
1089 if (mipi_dbi_command_is_read(dbi, *cmd))
1090 return mipi_dbi_typec1_command_read(dbi, cmd, parameters, num);
1094 ret = mipi_dbi_spi1_transfer(dbi, 0, cmd, 1, 8);
1098 return mipi_dbi_spi1_transfer(dbi, 1, parameters, num, bpw);
1103 static int mipi_dbi_typec3_command_read(struct mipi_dbi *dbi, u8 *cmd,
1106 struct spi_device *spi = dbi->spi;
1145 gpiod_set_value_cansleep(dbi->dc, 0);
1170 static int mipi_dbi_typec3_command(struct mipi_dbi *dbi, u8 *cmd,
1173 struct spi_device *spi = dbi->spi;
1178 if (mipi_dbi_command_is_read(dbi, *cmd))
1179 return mipi_dbi_typec3_command_read(dbi, cmd, par, num);
1184 gpiod_set_value_cansleep(dbi->dc, 0);
1191 if (*cmd == MIPI_DCS_WRITE_MEMORY_START && !dbi->swap_bytes)
1195 gpiod_set_value_cansleep(dbi->dc, 1);
1206 * @dbi: MIPI DBI structure to initialize
1225 int mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi,
1249 dbi->spi = spi;
1250 dbi->read_commands = mipi_dbi_dcs_read_commands;
1253 dbi->command = mipi_dbi_typec3_command;
1254 dbi->dc = dc;
1256 dbi->swap_bytes = true;
1258 dbi->command = mipi_dbi_typec1_command;
1259 dbi->tx_buf9_len = SZ_16K;
1260 dbi->tx_buf9 = devm_kmalloc(dev, dbi->tx_buf9_len, GFP_KERNEL);
1261 if (!dbi->tx_buf9)
1265 mutex_init(&dbi->cmdlock);
1379 ret = mipi_dbi_command_buf(&dbidev->dbi, cmd, parameters, i);
1392 struct mipi_dbi *dbi = &dbidev->dbi;
1401 if (!mipi_dbi_command_is_read(dbi, cmd))
1421 ret = mipi_dbi_command_buf(dbi, cmd, val, len);
1464 if (dbidev->dbi.read_commands)