Lines Matching +full:sf +full:- +full:tc240t +full:- +full:9370 +full:- +full:t

1 // SPDX-License-Identifier: GPL-2.0-only
6 * - 16-bit parallel RGB interface
7 * - 18-bit parallel RGB interface
8 * - 4-line serial spi interface
13 * Derived from drivers/drm/gpu/panel/panel-ilitek-ili9322.c
114 /* struct ili9341_config - the system specific ILI9341 configuration */
186 * The Stm32f429-disco board has a panel ili9341 connected to ltdc controller
216 * 0xa2 Normally white, G1 -> G320, S720 -> S1,
222 /* 0x10 AVDD=vci*2, VGH=vci*7, VGL=-vci*4 */
224 /* 0x45 VCOMH 4.425v, 0x15 VCOML -1.975*/
226 /* 0x90 offset voltage, VMH-48, VML-48 */
245 * Gate outputs in non-display area: Interval scan
246 * Determine source/VCOM output in a non-display area in the partial
253 * Gate Output Scan Direction: G1 -> G320
254 * Source Output Scan Direction: S720 -> S1
271 * (EC-SC+1)*(EP-SP+1), the column and page number will be
276 * 16- bit RGB interface (1 transfer/pixel)
299 struct device *dev = (&ili->panel)->dev;
300 struct mipi_dbi *dbi = ili->dbi;
301 struct ili9341_config *cfg = (struct ili9341_config *)ili->conf;
304 mipi_dbi_command_stackbuf(dbi, 0xca, cfg->ca, ILI9341_CA_LEN);
305 mipi_dbi_command_stackbuf(dbi, ILI9341_POWERB, cfg->power_b,
307 mipi_dbi_command_stackbuf(dbi, ILI9341_POWER_SEQ, cfg->power_seq,
309 mipi_dbi_command_stackbuf(dbi, ILI9341_DTCA, cfg->dtca,
311 mipi_dbi_command_stackbuf(dbi, ILI9341_POWERA, cfg->power_a,
313 mipi_dbi_command(ili->dbi, ILI9341_PRC, cfg->prc);
314 mipi_dbi_command_stackbuf(dbi, ILI9341_DTCB, cfg->dtcb,
316 mipi_dbi_command_stackbuf(dbi, ILI9341_FRC, cfg->frc, ILI9341_FRC_LEN);
317 mipi_dbi_command_stackbuf(dbi, ILI9341_DFC, cfg->dfc_1,
319 mipi_dbi_command(dbi, ILI9341_POWER1, cfg->power_1);
320 mipi_dbi_command(dbi, ILI9341_POWER2, cfg->power_2);
323 mipi_dbi_command_stackbuf(dbi, ILI9341_VCOM1, cfg->vcom_1,
325 mipi_dbi_command(dbi, ILI9341_VCOM2, cfg->vcom_2);
326 mipi_dbi_command(dbi, MIPI_DCS_SET_ADDRESS_MODE, cfg->address_mode);
329 mipi_dbi_command(dbi, ILI9341_3GAMMA_EN, cfg->g3amma_en);
330 mipi_dbi_command(dbi, ILI9341_RGB_INTERFACE, cfg->rgb_interface);
331 mipi_dbi_command_stackbuf(dbi, ILI9341_DFC, cfg->dfc_2,
336 cfg->column_addr, ILI9341_COLUMN_ADDR_LEN);
340 cfg->page_addr, ILI9341_PAGE_ADDR_LEN);
341 mipi_dbi_command_stackbuf(dbi, ILI9341_INTERFACE, cfg->interface,
345 mipi_dbi_command(dbi, MIPI_DCS_SET_PIXEL_FORMAT, cfg->pixel_format);
348 mipi_dbi_command(dbi, MIPI_DCS_SET_GAMMA_CURVE, cfg->gamma_curve);
349 mipi_dbi_command_stackbuf(dbi, ILI9341_PGAMMA, cfg->pgamma,
351 mipi_dbi_command_stackbuf(dbi, ILI9341_NGAMMA, cfg->ngamma,
363 struct device *dev = (&ili->panel)->dev;
367 gpiod_set_value(ili->reset_gpio, 1);
370 ret = regulator_bulk_enable(ARRAY_SIZE(ili->supplies),
371 ili->supplies);
378 /* De-assert RESET */
379 gpiod_set_value(ili->reset_gpio, 0);
388 gpiod_set_value(ili->reset_gpio, 1);
391 return regulator_bulk_disable(ARRAY_SIZE(ili->supplies),
392 ili->supplies);
399 mipi_dbi_command(ili->dbi, MIPI_DCS_SET_DISPLAY_OFF);
428 mipi_dbi_command(ili->dbi, MIPI_DCS_SET_DISPLAY_ON);
436 struct drm_device *drm = connector->dev;
440 info = &connector->display_info;
441 info->width_mm = ili->conf->mode.width_mm;
442 info->height_mm = ili->conf->mode.height_mm;
444 if (ili->conf->rgb_interface & ILI9341_RGB_DPL)
445 info->bus_flags |= DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE;
447 info->bus_flags |= DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE;
449 if (ili->conf->rgb_interface & ILI9341_RGB_EPL)
450 info->bus_flags |= DRM_BUS_FLAG_DE_LOW;
452 info->bus_flags |= DRM_BUS_FLAG_DE_HIGH;
454 mode = drm_mode_duplicate(drm, &ili->conf->mode);
457 return -EINVAL;
462 if (ili->conf->rgb_interface & ILI9341_RGB_HSPL)
463 mode->flags |= DRM_MODE_FLAG_PHSYNC;
465 mode->flags |= DRM_MODE_FLAG_NHSYNC;
467 if (ili->conf->rgb_interface & ILI9341_RGB_VSPL)
468 mode->flags |= DRM_MODE_FLAG_PVSYNC;
470 mode->flags |= DRM_MODE_FLAG_NVSYNC;
488 struct device *dev = &spi->dev;
498 ili->dbi = devm_kzalloc(dev, sizeof(struct mipi_dbi),
500 if (!ili->dbi)
501 return -ENOMEM;
503 ili->supplies[0].supply = "vci";
504 ili->supplies[1].supply = "vddi";
505 ili->supplies[2].supply = "vddi-led";
506 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ili->supplies),
507 ili->supplies);
513 ret = mipi_dbi_spi_init(spi, ili->dbi, dc);
518 ili->reset_gpio = reset;
523 ili->conf = device_get_match_data(dev);
524 if (!ili->conf) {
526 return -ENODEV;
529 ili->max_spi_speed = ili->conf->max_spi_speed;
530 drm_panel_add(&ili->panel);
537 struct device *dev = &spi->dev;
557 drm_panel_remove(&ili->panel);
562 .compatible = "st,sf-tc240t-9370-t",
570 { "sf-tc240t-9370-t", 0 },
580 .name = "panel-ilitek-ili9341",