Lines Matching full:mipi
6 * Some code copied from mipi-dbi.c
25 #include <drm/tinydrm/mipi-dbi.h>
68 static inline int ili9225_command(struct mipi_dbi *mipi, u8 cmd, u16 data) in ili9225_command() argument
72 return mipi_dbi_command_buf(mipi, cmd, par, 2); in ili9225_command()
82 struct mipi_dbi *mipi = mipi_dbi_from_tinydrm(tdev); in ili9225_fb_dirty() local
83 bool swap = mipi->swap_bytes; in ili9225_fb_dirty()
91 if (!mipi->enabled) in ili9225_fb_dirty()
100 if (!mipi->dc || !full || swap || in ili9225_fb_dirty()
102 tr = mipi->tx_buf; in ili9225_fb_dirty()
103 ret = mipi_dbi_buf_copy(mipi->tx_buf, fb, &clip, swap); in ili9225_fb_dirty()
110 switch (mipi->rotation) { in ili9225_fb_dirty()
145 ili9225_command(mipi, ILI9225_HORIZ_WINDOW_ADDR_1, x2); in ili9225_fb_dirty()
146 ili9225_command(mipi, ILI9225_HORIZ_WINDOW_ADDR_2, x1); in ili9225_fb_dirty()
147 ili9225_command(mipi, ILI9225_VERT_WINDOW_ADDR_1, y2); in ili9225_fb_dirty()
148 ili9225_command(mipi, ILI9225_VERT_WINDOW_ADDR_2, y1); in ili9225_fb_dirty()
150 ili9225_command(mipi, ILI9225_RAM_ADDRESS_SET_1, x_start); in ili9225_fb_dirty()
151 ili9225_command(mipi, ILI9225_RAM_ADDRESS_SET_2, y_start); in ili9225_fb_dirty()
153 ret = mipi_dbi_command_buf(mipi, ILI9225_WRITE_DATA_TO_GRAM, tr, in ili9225_fb_dirty()
170 struct mipi_dbi *mipi = mipi_dbi_from_tinydrm(tdev); in ili9225_pipe_enable() local
177 mipi_dbi_hw_reset(mipi); in ili9225_pipe_enable()
185 ret = ili9225_command(mipi, ILI9225_POWER_CONTROL_1, 0x0000); in ili9225_pipe_enable()
190 ili9225_command(mipi, ILI9225_POWER_CONTROL_2, 0x0000); in ili9225_pipe_enable()
191 ili9225_command(mipi, ILI9225_POWER_CONTROL_3, 0x0000); in ili9225_pipe_enable()
192 ili9225_command(mipi, ILI9225_POWER_CONTROL_4, 0x0000); in ili9225_pipe_enable()
193 ili9225_command(mipi, ILI9225_POWER_CONTROL_5, 0x0000); in ili9225_pipe_enable()
197 ili9225_command(mipi, ILI9225_POWER_CONTROL_2, 0x0018); in ili9225_pipe_enable()
198 ili9225_command(mipi, ILI9225_POWER_CONTROL_3, 0x6121); in ili9225_pipe_enable()
199 ili9225_command(mipi, ILI9225_POWER_CONTROL_4, 0x006f); in ili9225_pipe_enable()
200 ili9225_command(mipi, ILI9225_POWER_CONTROL_5, 0x495f); in ili9225_pipe_enable()
201 ili9225_command(mipi, ILI9225_POWER_CONTROL_1, 0x0800); in ili9225_pipe_enable()
205 ili9225_command(mipi, ILI9225_POWER_CONTROL_2, 0x103b); in ili9225_pipe_enable()
209 switch (mipi->rotation) { in ili9225_pipe_enable()
223 ili9225_command(mipi, ILI9225_DRIVER_OUTPUT_CONTROL, 0x011c); in ili9225_pipe_enable()
224 ili9225_command(mipi, ILI9225_LCD_AC_DRIVING_CONTROL, 0x0100); in ili9225_pipe_enable()
225 ili9225_command(mipi, ILI9225_ENTRY_MODE, 0x1000 | am_id); in ili9225_pipe_enable()
226 ili9225_command(mipi, ILI9225_DISPLAY_CONTROL_1, 0x0000); in ili9225_pipe_enable()
227 ili9225_command(mipi, ILI9225_BLANK_PERIOD_CONTROL_1, 0x0808); in ili9225_pipe_enable()
228 ili9225_command(mipi, ILI9225_FRAME_CYCLE_CONTROL, 0x1100); in ili9225_pipe_enable()
229 ili9225_command(mipi, ILI9225_INTERFACE_CONTROL, 0x0000); in ili9225_pipe_enable()
230 ili9225_command(mipi, ILI9225_OSCILLATION_CONTROL, 0x0d01); in ili9225_pipe_enable()
231 ili9225_command(mipi, ILI9225_VCI_RECYCLING, 0x0020); in ili9225_pipe_enable()
232 ili9225_command(mipi, ILI9225_RAM_ADDRESS_SET_1, 0x0000); in ili9225_pipe_enable()
233 ili9225_command(mipi, ILI9225_RAM_ADDRESS_SET_2, 0x0000); in ili9225_pipe_enable()
235 ili9225_command(mipi, ILI9225_GATE_SCAN_CONTROL, 0x0000); in ili9225_pipe_enable()
236 ili9225_command(mipi, ILI9225_VERTICAL_SCROLL_1, 0x00db); in ili9225_pipe_enable()
237 ili9225_command(mipi, ILI9225_VERTICAL_SCROLL_2, 0x0000); in ili9225_pipe_enable()
238 ili9225_command(mipi, ILI9225_VERTICAL_SCROLL_3, 0x0000); in ili9225_pipe_enable()
239 ili9225_command(mipi, ILI9225_PARTIAL_DRIVING_POS_1, 0x00db); in ili9225_pipe_enable()
240 ili9225_command(mipi, ILI9225_PARTIAL_DRIVING_POS_2, 0x0000); in ili9225_pipe_enable()
242 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_1, 0x0000); in ili9225_pipe_enable()
243 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_2, 0x0808); in ili9225_pipe_enable()
244 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_3, 0x080a); in ili9225_pipe_enable()
245 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_4, 0x000a); in ili9225_pipe_enable()
246 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_5, 0x0a08); in ili9225_pipe_enable()
247 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_6, 0x0808); in ili9225_pipe_enable()
248 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_7, 0x0000); in ili9225_pipe_enable()
249 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_8, 0x0a00); in ili9225_pipe_enable()
250 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_9, 0x0710); in ili9225_pipe_enable()
251 ili9225_command(mipi, ILI9225_GAMMA_CONTROL_10, 0x0710); in ili9225_pipe_enable()
253 ili9225_command(mipi, ILI9225_DISPLAY_CONTROL_1, 0x0012); in ili9225_pipe_enable()
257 ili9225_command(mipi, ILI9225_DISPLAY_CONTROL_1, 0x1017); in ili9225_pipe_enable()
259 mipi_dbi_enable_flush(mipi, crtc_state, plane_state); in ili9225_pipe_enable()
265 struct mipi_dbi *mipi = mipi_dbi_from_tinydrm(tdev); in ili9225_pipe_disable() local
269 if (!mipi->enabled) in ili9225_pipe_disable()
272 ili9225_command(mipi, ILI9225_DISPLAY_CONTROL_1, 0x0000); in ili9225_pipe_disable()
274 ili9225_command(mipi, ILI9225_POWER_CONTROL_2, 0x0007); in ili9225_pipe_disable()
276 ili9225_command(mipi, ILI9225_POWER_CONTROL_1, 0x0a02); in ili9225_pipe_disable()
278 mipi->enabled = false; in ili9225_pipe_disable()
281 static int ili9225_dbi_command(struct mipi_dbi *mipi, u8 *cmd, u8 *par, in ili9225_dbi_command() argument
284 struct spi_device *spi = mipi->spi; in ili9225_dbi_command()
289 gpiod_set_value_cansleep(mipi->dc, 0); in ili9225_dbi_command()
295 if (*cmd == ILI9225_WRITE_DATA_TO_GRAM && !mipi->swap_bytes) in ili9225_dbi_command()
298 gpiod_set_value_cansleep(mipi->dc, 1); in ili9225_dbi_command()
309 static int ili9225_init(struct device *dev, struct mipi_dbi *mipi, in ili9225_init() argument
316 struct tinydrm_device *tdev = &mipi->tinydrm; in ili9225_init()
319 if (!mipi->command) in ili9225_init()
322 mutex_init(&mipi->cmdlock); in ili9225_init()
324 mipi->tx_buf = devm_kmalloc(dev, bufsize, GFP_KERNEL); in ili9225_init()
325 if (!mipi->tx_buf) in ili9225_init()
343 mipi->rotation = rotation; in ili9225_init()
393 struct mipi_dbi *mipi; in ili9225_probe() local
398 mipi = devm_kzalloc(dev, sizeof(*mipi), GFP_KERNEL); in ili9225_probe()
399 if (!mipi) in ili9225_probe()
402 mipi->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in ili9225_probe()
403 if (IS_ERR(mipi->reset)) { in ili9225_probe()
405 return PTR_ERR(mipi->reset); in ili9225_probe()
416 ret = mipi_dbi_spi_init(spi, mipi, rs); in ili9225_probe()
421 mipi->command = ili9225_dbi_command; in ili9225_probe()
423 ret = ili9225_init(&spi->dev, mipi, &ili9225_pipe_funcs, in ili9225_probe()
428 spi_set_drvdata(spi, mipi); in ili9225_probe()
430 return devm_tinydrm_register(&mipi->tinydrm); in ili9225_probe()
435 struct mipi_dbi *mipi = spi_get_drvdata(spi); in ili9225_shutdown() local
437 tinydrm_shutdown(&mipi->tinydrm); in ili9225_shutdown()