Lines Matching +full:output +full:- +full:pixel +full:- +full:format

6  * SPDX-License-Identifier: Apache-2.0
11 #include <zephyr/dt-bindings/display/ili9xxx.h>
70 const struct ili9xxx_config *config = dev->config; in ili9xxx_transmit()
72 return mipi_dbi_command_write(config->mipi_dev, &config->dbi_config, in ili9xxx_transmit()
92 const struct ili9xxx_config *config = dev->config; in ili9xxx_hw_reset()
94 if (mipi_dbi_reset(config->mipi_dev, ILI9XXX_RESET_PULSE_TIME) < 0) { in ili9xxx_hw_reset()
108 spi_data[1] = sys_cpu_to_be16(x + w - 1U); in ili9xxx_set_mem_area()
115 spi_data[1] = sys_cpu_to_be16(y + h - 1U); in ili9xxx_set_mem_area()
129 const struct ili9xxx_config *config = dev->config; in ili9xxx_write()
130 struct ili9xxx_data *data = dev->data; in ili9xxx_write()
139 __ASSERT(desc->width <= desc->pitch, "Pitch is smaller than width"); in ili9xxx_write()
140 __ASSERT((desc->pitch * data->bytes_per_pixel * desc->height) <= in ili9xxx_write()
141 desc->buf_size, in ili9xxx_write()
144 LOG_DBG("Writing %dx%d (w,h) @ %dx%d (x,y)", desc->width, desc->height, in ili9xxx_write()
146 r = ili9xxx_set_mem_area(dev, x, y, desc->width, desc->height); in ili9xxx_write()
151 if (desc->pitch > desc->width) { in ili9xxx_write()
153 nbr_of_writes = desc->height; in ili9xxx_write()
155 mipi_desc.buf_size = desc->pitch * data->bytes_per_pixel; in ili9xxx_write()
157 write_h = desc->height; in ili9xxx_write()
158 mipi_desc.height = desc->height; in ili9xxx_write()
159 mipi_desc.buf_size = desc->width * data->bytes_per_pixel * write_h; in ili9xxx_write()
163 mipi_desc.width = desc->width; in ili9xxx_write()
165 mipi_desc.pitch = desc->width; in ili9xxx_write()
166 mipi_desc.frame_incomplete = desc->frame_incomplete; in ili9xxx_write()
174 r = mipi_dbi_write_display(config->mipi_dev, in ili9xxx_write()
175 &config->dbi_config, in ili9xxx_write()
178 data->pixel_format); in ili9xxx_write()
183 write_data_start += desc->pitch * data->bytes_per_pixel; in ili9xxx_write()
195 const struct ili9xxx_config *config = dev->config; in ili9xxx_read()
196 struct ili9xxx_data *data = dev->data; in ili9xxx_read()
202 if (data->pixel_format != PIXEL_FORMAT_RGB_565) { in ili9xxx_read()
204 return -ENOTSUP; in ili9xxx_read()
207 __ASSERT(desc->width <= desc->pitch, "Pitch is smaller than width"); in ili9xxx_read()
208 __ASSERT((desc->pitch * data->bytes_per_pixel * desc->height) <= in ili9xxx_read()
209 desc->buf_size, in ili9xxx_read()
210 "Output buffer too small"); in ili9xxx_read()
212 LOG_DBG("Reading %dx%d (w,h) @ %dx%d (x,y)", desc->width, desc->height, in ili9xxx_read()
215 r = ili9xxx_set_mem_area(dev, x, y, desc->width, desc->height); in ili9xxx_read()
221 * ILI9XXX stores all pixel data in graphics ram (GRAM) as 18 bit in ili9xxx_read()
222 * values. When using RGB565 pixel format, pixels are converted to in ili9xxx_read()
223 * 18 bit values via a lookup table. When using RGB888 format, the in ili9xxx_read()
224 * lower 2 bits of each pixel are simply dropped. When reading pixels, in ili9xxx_read()
225 * the response format will always look like so: in ili9xxx_read()
227 * Where x represents "don't care". The internal format of the in ili9xxx_read()
229 * - RGB888 mode can't be supported. in ili9xxx_read()
230 * - we can only read one pixel at once (since we need to do in ili9xxx_read()
231 * byte manipulation on the output) in ili9xxx_read()
234 /* Setup MIPI descriptor to read 3 bytes (one pixel in GRAM) */ in ili9xxx_read()
240 nbr_of_reads = desc->width * desc->height; in ili9xxx_read()
248 r = mipi_dbi_command_read(config->mipi_dev, in ili9xxx_read()
249 &config->dbi_config, in ili9xxx_read()
258 * see "Read data through 4-line SPI mode" diagram in ili9xxx_read()
292 struct ili9xxx_data *data = dev->data; in ili9xxx_set_pixel_format()
305 LOG_ERR("Unsupported pixel format"); in ili9xxx_set_pixel_format()
306 return -ENOTSUP; in ili9xxx_set_pixel_format()
314 data->pixel_format = pixel_format; in ili9xxx_set_pixel_format()
315 data->bytes_per_pixel = bytes_per_pixel; in ili9xxx_set_pixel_format()
323 const struct ili9xxx_config *config = dev->config; in ili9xxx_set_orientation()
324 struct ili9xxx_data *data = dev->data; in ili9xxx_set_orientation()
328 if (config->quirks->cmd_set == CMD_SET_1) { in ili9xxx_set_orientation()
339 } else if (config->quirks->cmd_set == CMD_SET_2) { in ili9xxx_set_orientation()
356 data->orientation = orientation; in ili9xxx_set_orientation()
364 struct ili9xxx_data *data = dev->data; in ili9xxx_get_capabilities()
365 const struct ili9xxx_config *config = dev->config; in ili9xxx_get_capabilities()
369 capabilities->supported_pixel_formats = in ili9xxx_get_capabilities()
371 capabilities->current_pixel_format = data->pixel_format; in ili9xxx_get_capabilities()
373 if (data->orientation == DISPLAY_ORIENTATION_NORMAL || in ili9xxx_get_capabilities()
374 data->orientation == DISPLAY_ORIENTATION_ROTATED_180) { in ili9xxx_get_capabilities()
375 capabilities->x_resolution = config->x_resolution; in ili9xxx_get_capabilities()
376 capabilities->y_resolution = config->y_resolution; in ili9xxx_get_capabilities()
378 capabilities->x_resolution = config->y_resolution; in ili9xxx_get_capabilities()
379 capabilities->y_resolution = config->x_resolution; in ili9xxx_get_capabilities()
382 capabilities->current_orientation = data->orientation; in ili9xxx_get_capabilities()
387 const struct ili9xxx_config *config = dev->config; in ili9xxx_configure()
393 /* pixel format */ in ili9xxx_configure()
394 if (config->pixel_format == ILI9XXX_PIXEL_FORMAT_RGB565) { in ili9xxx_configure()
406 if (config->rotation == 0U) { in ili9xxx_configure()
408 } else if (config->rotation == 90U) { in ili9xxx_configure()
410 } else if (config->rotation == 180U) { in ili9xxx_configure()
421 if (config->inversion) { in ili9xxx_configure()
428 r = config->regs_init_fn(dev); in ili9xxx_configure()
438 const struct ili9xxx_config *config = dev->config; in ili9xxx_init()
442 if (!device_is_ready(config->mipi_dev)) { in ili9xxx_init()
444 return -ENODEV; in ili9xxx_init()