| .. | .. |
|---|
| 160 | 160 | enum drm_panel_orientation orientation; |
|---|
| 161 | 161 | }; |
|---|
| 162 | 162 | |
|---|
| 163 | +static inline void panel_simple_msleep(unsigned int msecs) |
|---|
| 164 | +{ |
|---|
| 165 | + usleep_range(msecs * 1000, msecs * 1000 + 100); |
|---|
| 166 | +} |
|---|
| 167 | + |
|---|
| 163 | 168 | static inline struct panel_simple *to_panel_simple(struct drm_panel *panel) |
|---|
| 164 | 169 | { |
|---|
| 165 | 170 | return container_of(panel, struct panel_simple, base); |
|---|
| .. | .. |
|---|
| 277 | 282 | dev_err(dev, "failed to write dcs cmd: %d\n", err); |
|---|
| 278 | 283 | |
|---|
| 279 | 284 | if (cmd->header.delay) |
|---|
| 280 | | - usleep_range(cmd->header.delay * 1000, cmd->header.delay * 1000 + 100); |
|---|
| 285 | + panel_simple_msleep(cmd->header.delay); |
|---|
| 281 | 286 | } |
|---|
| 282 | 287 | |
|---|
| 283 | 288 | return 0; |
|---|
| .. | .. |
|---|
| 300 | 305 | return ret; |
|---|
| 301 | 306 | |
|---|
| 302 | 307 | if (cmd->header.delay) |
|---|
| 303 | | - usleep_range(cmd->header.delay * 1000, cmd->header.delay * 1000 + 100); |
|---|
| 308 | + panel_simple_msleep(cmd->header.delay); |
|---|
| 304 | 309 | } |
|---|
| 305 | 310 | |
|---|
| 306 | 311 | return 0; |
|---|
| .. | .. |
|---|
| 478 | 483 | return 0; |
|---|
| 479 | 484 | |
|---|
| 480 | 485 | if (p->desc->delay.disable) |
|---|
| 481 | | - usleep_range(p->desc->delay.disable * 1000, p->desc->delay.disable * 1000 + 100); |
|---|
| 486 | + panel_simple_msleep(p->desc->delay.disable); |
|---|
| 482 | 487 | |
|---|
| 483 | 488 | p->enabled = false; |
|---|
| 484 | 489 | |
|---|
| .. | .. |
|---|
| 510 | 515 | panel_simple_regulator_disable(p); |
|---|
| 511 | 516 | |
|---|
| 512 | 517 | if (p->desc->delay.unprepare) |
|---|
| 513 | | - usleep_range(p->desc->delay.unprepare * 1000, p->desc->delay.unprepare * 1000 + 100); |
|---|
| 518 | + panel_simple_msleep(p->desc->delay.unprepare); |
|---|
| 514 | 519 | |
|---|
| 515 | 520 | p->prepared = false; |
|---|
| 516 | 521 | |
|---|
| .. | .. |
|---|
| 564 | 569 | if (p->no_hpd) |
|---|
| 565 | 570 | delay += p->desc->delay.hpd_absent_delay; |
|---|
| 566 | 571 | if (delay) |
|---|
| 567 | | - usleep_range(delay * 1000, delay * 1000 + 100); |
|---|
| 572 | + panel_simple_msleep(delay); |
|---|
| 568 | 573 | |
|---|
| 569 | 574 | if (p->hpd_gpio) { |
|---|
| 570 | 575 | if (IS_ERR(p->hpd_gpio)) { |
|---|
| .. | .. |
|---|
| 589 | 594 | gpiod_direction_output(p->reset_gpio, 1); |
|---|
| 590 | 595 | |
|---|
| 591 | 596 | if (p->desc->delay.reset) |
|---|
| 592 | | - usleep_range(p->desc->delay.reset * 1000, p->desc->delay.reset * 1000 + 100); |
|---|
| 597 | + panel_simple_msleep(p->desc->delay.reset); |
|---|
| 593 | 598 | |
|---|
| 594 | 599 | gpiod_direction_output(p->reset_gpio, 0); |
|---|
| 595 | 600 | |
|---|
| 596 | 601 | if (p->desc->delay.init) |
|---|
| 597 | | - usleep_range(p->desc->delay.init * 1000, p->desc->delay.init * 1000 + 100); |
|---|
| 602 | + panel_simple_msleep(p->desc->delay.init); |
|---|
| 598 | 603 | |
|---|
| 599 | 604 | if (p->desc->init_seq) { |
|---|
| 600 | 605 | if (p->desc->cmd_type == CMD_TYPE_SPI) { |
|---|
| .. | .. |
|---|
| 621 | 626 | return 0; |
|---|
| 622 | 627 | |
|---|
| 623 | 628 | if (p->desc->delay.enable) |
|---|
| 624 | | - usleep_range(p->desc->delay.enable * 1000, p->desc->delay.enable * 1000 + 100); |
|---|
| 629 | + panel_simple_msleep(p->desc->delay.enable); |
|---|
| 625 | 630 | |
|---|
| 626 | 631 | p->enabled = true; |
|---|
| 627 | 632 | |
|---|
| .. | .. |
|---|
| 1042 | 1047 | .num_modes = 1, |
|---|
| 1043 | 1048 | .bpc = 8, |
|---|
| 1044 | 1049 | .size = { |
|---|
| 1045 | | - .width = 105, |
|---|
| 1046 | | - .height = 67, |
|---|
| 1050 | + .width = 99, |
|---|
| 1051 | + .height = 58, |
|---|
| 1047 | 1052 | }, |
|---|
| 1048 | 1053 | .bus_format = MEDIA_BUS_FMT_RGB888_1X24, |
|---|
| 1049 | 1054 | }; |
|---|
| .. | .. |
|---|
| 1348 | 1353 | }, |
|---|
| 1349 | 1354 | }; |
|---|
| 1350 | 1355 | |
|---|
| 1351 | | -static const struct drm_display_mode auo_g121ean01_mode = { |
|---|
| 1352 | | - .clock = 66700, |
|---|
| 1353 | | - .hdisplay = 1280, |
|---|
| 1354 | | - .hsync_start = 1280 + 58, |
|---|
| 1355 | | - .hsync_end = 1280 + 58 + 8, |
|---|
| 1356 | | - .htotal = 1280 + 58 + 8 + 70, |
|---|
| 1357 | | - .vdisplay = 800, |
|---|
| 1358 | | - .vsync_start = 800 + 6, |
|---|
| 1359 | | - .vsync_end = 800 + 6 + 4, |
|---|
| 1360 | | - .vtotal = 800 + 6 + 4 + 10, |
|---|
| 1356 | +static const struct display_timing auo_g121ean01_timing = { |
|---|
| 1357 | + .pixelclock = { 60000000, 74400000, 90000000 }, |
|---|
| 1358 | + .hactive = { 1280, 1280, 1280 }, |
|---|
| 1359 | + .hfront_porch = { 20, 50, 100 }, |
|---|
| 1360 | + .hback_porch = { 20, 50, 100 }, |
|---|
| 1361 | + .hsync_len = { 30, 100, 200 }, |
|---|
| 1362 | + .vactive = { 800, 800, 800 }, |
|---|
| 1363 | + .vfront_porch = { 2, 10, 25 }, |
|---|
| 1364 | + .vback_porch = { 2, 10, 25 }, |
|---|
| 1365 | + .vsync_len = { 4, 18, 50 }, |
|---|
| 1361 | 1366 | }; |
|---|
| 1362 | 1367 | |
|---|
| 1363 | 1368 | static const struct panel_desc auo_g121ean01 = { |
|---|
| 1364 | | - .modes = &auo_g121ean01_mode, |
|---|
| 1365 | | - .num_modes = 1, |
|---|
| 1369 | + .timings = &auo_g121ean01_timing, |
|---|
| 1370 | + .num_timings = 1, |
|---|
| 1366 | 1371 | .bpc = 8, |
|---|
| 1367 | 1372 | .size = { |
|---|
| 1368 | 1373 | .width = 261, |
|---|
| .. | .. |
|---|
| 1538 | 1543 | .delay = { |
|---|
| 1539 | 1544 | .disable = 5, |
|---|
| 1540 | 1545 | .unprepare = 1000, |
|---|
| 1541 | | - } |
|---|
| 1546 | + }, |
|---|
| 1547 | + .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, |
|---|
| 1548 | + .connector_type = DRM_MODE_CONNECTOR_LVDS, |
|---|
| 1542 | 1549 | }; |
|---|
| 1543 | 1550 | |
|---|
| 1544 | 1551 | static const struct drm_display_mode avic_tm070ddh03_mode = { |
|---|
| .. | .. |
|---|
| 2429 | 2436 | .height = 54, |
|---|
| 2430 | 2437 | }, |
|---|
| 2431 | 2438 | .bus_format = MEDIA_BUS_FMT_RGB888_1X24, |
|---|
| 2439 | + .connector_type = DRM_MODE_CONNECTOR_DPI, |
|---|
| 2432 | 2440 | .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, |
|---|
| 2433 | 2441 | }; |
|---|
| 2434 | 2442 | |
|---|
| .. | .. |
|---|
| 3490 | 3498 | .vsync_start = 480 + 49, |
|---|
| 3491 | 3499 | .vsync_end = 480 + 49 + 2, |
|---|
| 3492 | 3500 | .vtotal = 480 + 49 + 2 + 22, |
|---|
| 3501 | + .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, |
|---|
| 3493 | 3502 | }; |
|---|
| 3494 | 3503 | |
|---|
| 3495 | 3504 | static const struct panel_desc powertip_ph800480t013_idf02 = { |
|---|