950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. From ca58a9eacc862c84c9caf066aaa32ea16195d2c2 Mon Sep 17 00:00:00 2001
  2. From: Phil Elwell <[email protected]>
  3. Date: Mon, 19 Dec 2022 16:32:33 +0000
  4. Subject: [PATCH] drm/panel: simple: Add Innolux AT056tN53V1 5.6" VGA
  5. Add support for the Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD
  6. panel.
  7. Signed-off-by: Joerg Quinten <[email protected]>
  8. Signed-off-by: Phil Elwell <[email protected]>
  9. ---
  10. .../bindings/display/panel/panel-simple.yaml | 2 +
  11. .../media/v4l/subdev-formats.rst | 76 ++++++++++++++++++-
  12. drivers/gpu/drm/panel/panel-simple.c | 35 +++++++++
  13. 3 files changed, 112 insertions(+), 1 deletion(-)
  14. --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
  15. +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
  16. @@ -174,6 +174,8 @@ properties:
  17. - ivo,m133nwf4-r0
  18. # Innolux AT043TN24 4.3" WQVGA TFT LCD panel
  19. - innolux,at043tn24
  20. + # Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD panel
  21. + - innolux,at056tn53v1
  22. # Innolux AT070TN92 7.0" WQVGA TFT LCD panel
  23. - innolux,at070tn92
  24. # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel
  25. --- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
  26. +++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
  27. @@ -627,7 +627,7 @@ The following tables list existing packe
  28. * .. _MEDIA_BUS_FMT_RGB565_1X24_CPADHI:
  29. - MEDIA_BUS_FMT_RGB565_1X24_CPADHI
  30. - - 0x1020
  31. + - 0x1022
  32. -
  33. -
  34. -
  35. @@ -949,6 +949,43 @@ The following tables list existing packe
  36. - g\ :sub:`5`
  37. - g\ :sub:`4`
  38. - g\ :sub:`3`
  39. + * .. _MEDIA-BUS-FMT-BGR666-1X18:
  40. +
  41. + - MEDIA_BUS_FMT-BGR666_1X18
  42. + - 0x1023
  43. + -
  44. + -
  45. + -
  46. + -
  47. + -
  48. + -
  49. + -
  50. + -
  51. + -
  52. + -
  53. + -
  54. + -
  55. + -
  56. + -
  57. + -
  58. + - b\ :sub:`5`
  59. + - b\ :sub:`4`
  60. + - b\ :sub:`3`
  61. + - b\ :sub:`2`
  62. + - b\ :sub:`1`
  63. + - b\ :sub:`0`
  64. + - g\ :sub:`5`
  65. + - g\ :sub:`4`
  66. + - g\ :sub:`3`
  67. + - g\ :sub:`2`
  68. + - g\ :sub:`1`
  69. + - g\ :sub:`0`
  70. + - r\ :sub:`5`
  71. + - r\ :sub:`4`
  72. + - r\ :sub:`3`
  73. + - r\ :sub:`2`
  74. + - r\ :sub:`1`
  75. + - r\ :sub:`0`
  76. * .. _MEDIA-BUS-FMT-RGB666-1X18:
  77. - MEDIA_BUS_FMT_RGB666_1X18
  78. @@ -1023,6 +1060,43 @@ The following tables list existing packe
  79. - g\ :sub:`2`
  80. - g\ :sub:`1`
  81. - g\ :sub:`0`
  82. + * .. _MEDIA-BUS-FMT-BGR666-1X24_CPADHI:
  83. +
  84. + - MEDIA_BUS_FMT_BGR666_1X24_CPADHI
  85. + - 0x1024
  86. + -
  87. + -
  88. + -
  89. + -
  90. + -
  91. + -
  92. + -
  93. + -
  94. + -
  95. + - 0
  96. + - 0
  97. + - b\ :sub:`5`
  98. + - b\ :sub:`4`
  99. + - b\ :sub:`3`
  100. + - b\ :sub:`2`
  101. + - b\ :sub:`1`
  102. + - b\ :sub:`0`
  103. + - 0
  104. + - 0
  105. + - g\ :sub:`5`
  106. + - g\ :sub:`4`
  107. + - g\ :sub:`3`
  108. + - g\ :sub:`2`
  109. + - g\ :sub:`1`
  110. + - g\ :sub:`0`
  111. + - 0
  112. + - 0
  113. + - r\ :sub:`5`
  114. + - r\ :sub:`4`
  115. + - r\ :sub:`3`
  116. + - r\ :sub:`2`
  117. + - r\ :sub:`1`
  118. + - r\ :sub:`0`
  119. * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
  120. - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
  121. --- a/drivers/gpu/drm/panel/panel-simple.c
  122. +++ b/drivers/gpu/drm/panel/panel-simple.c
  123. @@ -2138,6 +2138,38 @@ static const struct panel_desc innolux_a
  124. .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
  125. };
  126. +static const struct display_timing innolux_at056tn53v1_timing = {
  127. + .pixelclock = { 39700000, 39700000, 39700000},
  128. + .hactive = { 640, 640, 640 },
  129. + .hfront_porch = { 16, 16, 16 },
  130. + .hback_porch = { 134, 134, 134 },
  131. + .hsync_len = { 10, 10, 10},
  132. + .vactive = { 480, 480, 480 },
  133. + .vfront_porch = { 32, 32, 32},
  134. + .vback_porch = { 11, 11, 11 },
  135. + .vsync_len = { 2, 2, 2 },
  136. + .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PHSYNC,
  137. +};
  138. +
  139. +static const struct panel_desc innolux_at056tn53v1 = {
  140. + .timings = &innolux_at056tn53v1_timing,
  141. + .num_timings = 1,
  142. + .bpc = 6,
  143. + .size = {
  144. + .width = 112,
  145. + .height = 84,
  146. + },
  147. + .delay = {
  148. + .prepare = 50,
  149. + .enable = 200,
  150. + .disable = 110,
  151. + .unprepare = 200,
  152. + },
  153. + .bus_format = MEDIA_BUS_FMT_BGR666_1X24_CPADHI,
  154. + .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
  155. + .connector_type = DRM_MODE_CONNECTOR_DPI,
  156. +};
  157. +
  158. static const struct drm_display_mode innolux_at070tn92_mode = {
  159. .clock = 33333,
  160. .hdisplay = 800,
  161. @@ -4144,6 +4176,9 @@ static const struct of_device_id platfor
  162. .compatible = "innolux,at043tn24",
  163. .data = &innolux_at043tn24,
  164. }, {
  165. + .compatible = "innolux,at056tn53v1",
  166. + .data = &innolux_at056tn53v1,
  167. + }, {
  168. .compatible = "innolux,at070tn92",
  169. .data = &innolux_at070tn92,
  170. }, {