Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm/panel/for-4.10-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next

drm/panel: Changes for v4.10-rc1

This adds support for a couple more panels to the simple-panel driver.
There is also a fix for a long-standing bug, but it's not critical since
no code will currently trigger it.

* tag 'drm/panel/for-4.10-rc1' of git://anongit.freedesktop.org/tegra/linux:
drm/panel: simple: Add support for AUO G185HAN01
drm/panel: simple: Add support for AUO G133HAN01
drm/panel: simple: Add more properties to Innolux G121I1-L01
drm/panel: simple: Add bits-per-component for Sharp LQ123P1JX31
drm/panel: simple: Check against num_timings when setting preferred for timing
drm/panel: Add support for Chunghwa CLAA070WP03XG panel
drm/panel: simple: Add NVD9128 as a simple panel
drm/panel: simple: Add support for AUO T215HVN01
drm/panel: simple: Add support for Sharp LQ150X1LG11 panels
dt-bindings: display: Add Sharp LQ150X1LG11 panel binding

+265 -14
+7
Documentation/devicetree/bindings/display/panel/auo,g133han01.txt
··· 1 + AU Optronics Corporation 13.3" FHD (1920x1080) TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "auo,g133han01" 5 + 6 + This binding is compatible with the simple-panel binding, which is specified 7 + in simple-panel.txt in this directory.
+7
Documentation/devicetree/bindings/display/panel/auo,g185han01.txt
··· 1 + AU Optronics Corporation 18.5" FHD (1920x1080) TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "auo,g185han01" 5 + 6 + This binding is compatible with the simple-panel binding, which is specified 7 + in simple-panel.txt in this directory.
+7
Documentation/devicetree/bindings/display/panel/auo,t215hvn01.txt
··· 1 + AU Optronics Corporation 21.5" FHD (1920x1080) color TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "auo,t215hvn01" 5 + 6 + This binding is compatible with the simple-panel binding, which is specified 7 + in simple-panel.txt in this directory.
+7
Documentation/devicetree/bindings/display/panel/chunghwa,claa070wp03xg.txt
··· 1 + Chunghwa Picture Tubes Ltd. 7" WXGA TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "chunghwa,claa070wp03xg" 5 + 6 + This binding is compatible with the simple-panel binding, which is specified 7 + in simple-panel.txt in this directory.
+7
Documentation/devicetree/bindings/display/panel/nvd,9128.txt
··· 1 + New Vision Display 7.0" 800 RGB x 480 TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "nvd,9128" 5 + 6 + This binding is compatible with the simple-panel binding, which is specified 7 + in simple-panel.txt in this directory.
+36
Documentation/devicetree/bindings/display/panel/sharp,lq150x1lg11.txt
··· 1 + Sharp 15" LQ150X1LG11 XGA TFT LCD panel 2 + 3 + Required properties: 4 + - compatible: should be "sharp,lq150x1lg11" 5 + - power-supply: regulator to provide the VCC supply voltage (3.3 volts) 6 + 7 + Optional properties: 8 + - backlight: phandle of the backlight device 9 + - rlud-gpios: a single GPIO for the RL/UD (rotate 180 degrees) pin. 10 + - sellvds-gpios: a single GPIO for the SELLVDS pin. 11 + 12 + If rlud-gpios and/or sellvds-gpios are not specified, the RL/UD and/or SELLVDS 13 + pins are assumed to be handled appropriately by the hardware. 14 + 15 + Example: 16 + 17 + backlight: backlight { 18 + compatible = "pwm-backlight"; 19 + pwms = <&pwm 0 100000>; /* VBR */ 20 + 21 + brightness-levels = <0 20 40 60 80 100>; 22 + default-brightness-level = <2>; 23 + 24 + power-supply = <&vdd_12v_reg>; /* VDD */ 25 + enable-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; /* XSTABY */ 26 + }; 27 + 28 + panel { 29 + compatible = "sharp,lq150x1lg11"; 30 + 31 + power-supply = <&vcc_3v3_reg>; /* VCC */ 32 + 33 + backlight = <&backlight>; 34 + rlud-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; /* RL/UD */ 35 + sellvds-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>; /* SELLVDS */ 36 + };
+1
Documentation/devicetree/bindings/vendor-prefixes.txt
··· 187 187 netlogic Broadcom Corporation (formerly NetLogic Microsystems) 188 188 netxeon Shenzhen Netxeon Technology CO., LTD 189 189 newhaven Newhaven Display International 190 + nvd New Vision Display 190 191 nintendo Nintendo 191 192 nokia Nokia 192 193 nuvoton Nuvoton Technology Corporation
+193 -14
drivers/gpu/drm/panel/panel-simple.c
··· 120 120 121 121 mode->type |= DRM_MODE_TYPE_DRIVER; 122 122 123 - if (panel->desc->num_modes == 1) 123 + if (panel->desc->num_timings == 1) 124 124 mode->type |= DRM_MODE_TYPE_PREFERRED; 125 125 126 126 drm_mode_probed_add(connector, mode); ··· 555 555 }, 556 556 }; 557 557 558 + static const struct display_timing auo_g133han01_timings = { 559 + .pixelclock = { 134000000, 141200000, 149000000 }, 560 + .hactive = { 1920, 1920, 1920 }, 561 + .hfront_porch = { 39, 58, 77 }, 562 + .hback_porch = { 59, 88, 117 }, 563 + .hsync_len = { 28, 42, 56 }, 564 + .vactive = { 1080, 1080, 1080 }, 565 + .vfront_porch = { 3, 8, 11 }, 566 + .vback_porch = { 5, 14, 19 }, 567 + .vsync_len = { 4, 14, 19 }, 568 + }; 569 + 570 + static const struct panel_desc auo_g133han01 = { 571 + .timings = &auo_g133han01_timings, 572 + .num_timings = 1, 573 + .bpc = 8, 574 + .size = { 575 + .width = 293, 576 + .height = 165, 577 + }, 578 + .delay = { 579 + .prepare = 200, 580 + .enable = 50, 581 + .disable = 50, 582 + .unprepare = 1000, 583 + }, 584 + .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, 585 + }; 586 + 587 + static const struct display_timing auo_g185han01_timings = { 588 + .pixelclock = { 120000000, 144000000, 175000000 }, 589 + .hactive = { 1920, 1920, 1920 }, 590 + .hfront_porch = { 18, 60, 74 }, 591 + .hback_porch = { 12, 44, 54 }, 592 + .hsync_len = { 10, 24, 32 }, 593 + .vactive = { 1080, 1080, 1080 }, 594 + .vfront_porch = { 6, 10, 40 }, 595 + .vback_porch = { 2, 5, 20 }, 596 + .vsync_len = { 2, 5, 20 }, 597 + }; 598 + 599 + static const struct panel_desc auo_g185han01 = { 600 + .timings = &auo_g185han01_timings, 601 + .num_timings = 1, 602 + .bpc = 8, 603 + .size = { 604 + .width = 409, 605 + .height = 230, 606 + }, 607 + .delay = { 608 + .prepare = 50, 609 + .enable = 200, 610 + .disable = 110, 611 + .unprepare = 1000, 612 + }, 613 + .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, 614 + }; 615 + 616 + static const struct drm_display_mode auo_t215hvn01_mode = { 617 + .clock = 148800, 618 + .hdisplay = 1920, 619 + .hsync_start = 1920 + 88, 620 + .hsync_end = 1920 + 88 + 44, 621 + .htotal = 1920 + 88 + 44 + 148, 622 + .vdisplay = 1080, 623 + .vsync_start = 1080 + 4, 624 + .vsync_end = 1080 + 4 + 5, 625 + .vtotal = 1080 + 4 + 5 + 36, 626 + .vrefresh = 60, 627 + }; 628 + 629 + static const struct panel_desc auo_t215hvn01 = { 630 + .modes = &auo_t215hvn01_mode, 631 + .num_modes = 1, 632 + .bpc = 8, 633 + .size = { 634 + .width = 430, 635 + .height = 270, 636 + }, 637 + .delay = { 638 + .disable = 5, 639 + .unprepare = 1000, 640 + } 641 + }; 642 + 558 643 static const struct drm_display_mode avic_tm070ddh03_mode = { 559 644 .clock = 51200, 560 645 .hdisplay = 1024, ··· 665 580 .prepare = 20, 666 581 .enable = 200, 667 582 .disable = 200, 583 + }, 584 + }; 585 + 586 + static const struct drm_display_mode chunghwa_claa070wp03xg_mode = { 587 + .clock = 66770, 588 + .hdisplay = 800, 589 + .hsync_start = 800 + 49, 590 + .hsync_end = 800 + 49 + 33, 591 + .htotal = 800 + 49 + 33 + 17, 592 + .vdisplay = 1280, 593 + .vsync_start = 1280 + 1, 594 + .vsync_end = 1280 + 1 + 7, 595 + .vtotal = 1280 + 1 + 7 + 15, 596 + .vrefresh = 60, 597 + .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, 598 + }; 599 + 600 + static const struct panel_desc chunghwa_claa070wp03xg = { 601 + .modes = &chunghwa_claa070wp03xg_mode, 602 + .num_modes = 1, 603 + .bpc = 6, 604 + .size = { 605 + .width = 94, 606 + .height = 150, 668 607 }, 669 608 }; 670 609 ··· 986 877 .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, 987 878 }; 988 879 989 - static const struct drm_display_mode innolux_g121i1_l01_mode = { 990 - .clock = 71000, 991 - .hdisplay = 1280, 992 - .hsync_start = 1280 + 64, 993 - .hsync_end = 1280 + 64 + 32, 994 - .htotal = 1280 + 64 + 32 + 64, 995 - .vdisplay = 800, 996 - .vsync_start = 800 + 9, 997 - .vsync_end = 800 + 9 + 6, 998 - .vtotal = 800 + 9 + 6 + 9, 999 - .vrefresh = 60, 880 + static const struct display_timing innolux_g121i1_l01_timing = { 881 + .pixelclock = { 67450000, 71000000, 74550000 }, 882 + .hactive = { 1280, 1280, 1280 }, 883 + .hfront_porch = { 40, 80, 160 }, 884 + .hback_porch = { 39, 79, 159 }, 885 + .hsync_len = { 1, 1, 1 }, 886 + .vactive = { 800, 800, 800 }, 887 + .vfront_porch = { 5, 11, 100 }, 888 + .vback_porch = { 4, 11, 99 }, 889 + .vsync_len = { 1, 1, 1 }, 1000 890 }; 1001 891 1002 892 static const struct panel_desc innolux_g121i1_l01 = { 1003 - .modes = &innolux_g121i1_l01_mode, 1004 - .num_modes = 1, 893 + .timings = &innolux_g121i1_l01_timing, 894 + .num_timings = 1, 1005 895 .bpc = 6, 1006 896 .size = { 1007 897 .width = 261, 1008 898 .height = 163, 1009 899 }, 900 + .delay = { 901 + .enable = 200, 902 + .disable = 20, 903 + }, 904 + .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, 1010 905 }; 1011 906 1012 907 static const struct drm_display_mode innolux_g121x1_l03_mode = { ··· 1277 1164 .bus_flags = DRM_BUS_FLAG_PIXDATA_POSEDGE, 1278 1165 }; 1279 1166 1167 + static const struct drm_display_mode nvd_9128_mode = { 1168 + .clock = 29500, 1169 + .hdisplay = 800, 1170 + .hsync_start = 800 + 130, 1171 + .hsync_end = 800 + 130 + 98, 1172 + .htotal = 800 + 0 + 130 + 98, 1173 + .vdisplay = 480, 1174 + .vsync_start = 480 + 10, 1175 + .vsync_end = 480 + 10 + 50, 1176 + .vtotal = 480 + 0 + 10 + 50, 1177 + }; 1178 + 1179 + static const struct panel_desc nvd_9128 = { 1180 + .modes = &nvd_9128_mode, 1181 + .num_modes = 1, 1182 + .bpc = 8, 1183 + .size = { 1184 + .width = 156, 1185 + .height = 88, 1186 + }, 1187 + .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, 1188 + }; 1189 + 1280 1190 static const struct display_timing okaya_rs800480t_7x0gp_timing = { 1281 1191 .pixelclock = { 30000000, 30000000, 40000000 }, 1282 1192 .hactive = { 800, 800, 800 }, ··· 1545 1409 static const struct panel_desc sharp_lq123p1jx31 = { 1546 1410 .modes = &sharp_lq123p1jx31_mode, 1547 1411 .num_modes = 1, 1412 + .bpc = 8, 1548 1413 .size = { 1549 1414 .width = 259, 1550 1415 .height = 173, ··· 1555 1418 .enable = 50, 1556 1419 .unprepare = 550, 1557 1420 }, 1421 + }; 1422 + 1423 + static const struct drm_display_mode sharp_lq150x1lg11_mode = { 1424 + .clock = 71100, 1425 + .hdisplay = 1024, 1426 + .hsync_start = 1024 + 168, 1427 + .hsync_end = 1024 + 168 + 64, 1428 + .htotal = 1024 + 168 + 64 + 88, 1429 + .vdisplay = 768, 1430 + .vsync_start = 768 + 37, 1431 + .vsync_end = 768 + 37 + 2, 1432 + .vtotal = 768 + 37 + 2 + 8, 1433 + .vrefresh = 60, 1434 + }; 1435 + 1436 + static const struct panel_desc sharp_lq150x1lg11 = { 1437 + .modes = &sharp_lq150x1lg11_mode, 1438 + .num_modes = 1, 1439 + .bpc = 6, 1440 + .size = { 1441 + .width = 304, 1442 + .height = 228, 1443 + }, 1444 + .bus_format = MEDIA_BUS_FMT_RGB565_1X16, 1558 1445 }; 1559 1446 1560 1447 static const struct drm_display_mode shelly_sca07010_bfn_lnn_mode = { ··· 1736 1575 .compatible = "auo,b133xtn01", 1737 1576 .data = &auo_b133xtn01, 1738 1577 }, { 1578 + .compatible = "auo,g133han01", 1579 + .data = &auo_g133han01, 1580 + }, { 1581 + .compatible = "auo,g185han01", 1582 + .data = &auo_g185han01, 1583 + }, { 1584 + .compatible = "auo,t215hvn01", 1585 + .data = &auo_t215hvn01, 1586 + }, { 1739 1587 .compatible = "avic,tm070ddh03", 1740 1588 .data = &avic_tm070ddh03, 1589 + }, { 1590 + .compatible = "chunghwa,claa070wp03xg", 1591 + .data = &chunghwa_claa070wp03xg, 1741 1592 }, { 1742 1593 .compatible = "chunghwa,claa101wa01a", 1743 1594 .data = &chunghwa_claa101wa01a ··· 1826 1653 .compatible = "nec,nl4827hc19-05b", 1827 1654 .data = &nec_nl4827hc19_05b, 1828 1655 }, { 1656 + .compatible = "nvd,9128", 1657 + .data = &nvd_9128, 1658 + }, { 1829 1659 .compatible = "okaya,rs800480t-7x0gp", 1830 1660 .data = &okaya_rs800480t_7x0gp, 1831 1661 }, { ··· 1858 1682 }, { 1859 1683 .compatible = "sharp,lq123p1jx31", 1860 1684 .data = &sharp_lq123p1jx31, 1685 + }, { 1686 + .compatible = "sharp,lq150x1lg11", 1687 + .data = &sharp_lq150x1lg11, 1861 1688 }, { 1862 1689 .compatible = "shelly,sca07010-bfn-lnn", 1863 1690 .data = &shelly_sca07010_bfn_lnn,