The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH v2] drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.)
       [not found] <20260731115127.15140-1-info@humanlearning.ch>
@ 2026-08-02 13:50 ` François Roux
  2026-08-03 20:02   ` Doug Anderson
  0 siblings, 1 reply; 2+ messages in thread
From: François Roux @ 2026-08-02 13:50 UTC (permalink / raw)
  To: Douglas Anderson, Neil Armstrong
  Cc: Jessica Zhang, Maxime Ripard, Thomas Zimmermann, dri-devel,
	linux-kernel, François Roux

The internal eDP panel of the Microsoft Surface Pro 12in 1st Edition
(Snapdragon X Plus, X1P42100) is not in edp_panels[], so every boot
produces the deliberate WARN_ON splat in panel_edp_probe() and the panel
falls back to conservative timings:

  WARNING: drivers/gpu/drm/panel/panel-edp.c:814 panel_edp_probe+0x53c/0x56c
  panel-simple-dp-aux aux-aea0000.displayport-controller:
      Unknown panel SHP 0x15a7, using conservative timings

EDID, read over the panel's DP AUX DDC bus:

  00 ff ff ff ff ff ff 00 4d 10 a7 15 a0 00 00 1f
  31 22 01 04 a5 19 11 78 07 ee 91 a3 54 4c 99 26
  0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
  01 01 01 01 01 01 62 53 94 a0 80 b8 2e 50 18 10
  3a 00 fe a9 00 00 00 18 13 7d 94 a0 80 b8 2e 50
  18 10 3a 00 fe a9 00 00 00 18 00 00 00 fd 00 18
  5a 88 88 21 01 00 00 00 00 00 00 00 00 00 00 fc
  00 4c 51 31 32 30 50 31 4a 58 35 31 0a 20 00 69

  Manufacturer: SHP
  Model: 0x15a7
  Made in: week 49 of 2024
  Display Product Name: 'LQ120P1JX51'
  DTD 1: 2196x1464 60.001799 Hz 3:2 (254 mm x 169 mm)
  DTD 2: 2196x1464 90.002698 Hz 3:2 (254 mm x 169 mm)

Timings are deliberately cautious rather than datasheet-derived. The
conservative fallback sets unprepare=2000 and enable=200; unprepare=2000
is a safety margin for unknown panels only and is the single occurrence
of that value in the file -- no real panel entry uses it.
delay_200_500_e200 keeps the same generous 200 ms enable delay while
using the 500 ms unprepare shared by every actual panel in the table. A
shorter enable delay may well be fine, but has not been validated here.

Signed-off-by: François Roux <info@humanlearning.ch>
---
Changes in v2:
- Read the EDID over the panel's DP AUX DDC bus and included it in the
  commit message, as requested. My v1 claim that the EDID was not
  obtainable was wrong: the connector does not export it
  (/sys/class/drm/card0-eDP-1/edid is 0 bytes) and
  CONFIG_DRM_DP_AUX_CHARDEV no longer exists, but the AUX bus is
  registered as an i2c adapter, so a plain DDC read works:
      i2ctransfer -y <bus> w1@0x50 0x00 r128
  (i2cdump in byte mode does not: it drops a header byte and yields a
  block with a bad checksum.)
- The EDID carries a Display Product Name, so the entry is now
  "LQ120P1JX51" instead of "Unknown".
- Timings unchanged (delay_200_500_e200).
- Now sent under my real name, as you asked. v1 went out as
  "franzelverbier"; same person, same address.

 drivers/gpu/drm/panel/panel-edp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
index 13ce277d7..4defef820 100644
--- a/drivers/gpu/drm/panel/panel-edp.c
+++ b/drivers/gpu/drm/panel/panel-edp.c
@@ -2145,6 +2145,7 @@ static const struct edp_panel_entry edp_panels[] = {
 	EDP_PANEL_ENTRY('S', 'H', 'P', 0x154c, &delay_200_500_p2e100, "LQ116M1JW10"),
 	EDP_PANEL_ENTRY('S', 'H', 'P', 0x158f, &delay_200_500_p2e100, "LQ134Z1"),
 	EDP_PANEL_ENTRY('S', 'H', 'P', 0x1593, &delay_200_500_p2e100, "LQ134N1"),
+	EDP_PANEL_ENTRY('S', 'H', 'P', 0x15a7, &delay_200_500_e200, "LQ120P1JX51"),
 
 	EDP_PANEL_ENTRY('S', 'T', 'A', 0x0004, &delay_200_500_e200, "116KHD024006"),
 	EDP_PANEL_ENTRY('S', 'T', 'A', 0x0009, &delay_200_500_e250, "116QHD024002"),

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.)
  2026-08-02 13:50 ` [PATCH v2] drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.) François Roux
@ 2026-08-03 20:02   ` Doug Anderson
  0 siblings, 0 replies; 2+ messages in thread
From: Doug Anderson @ 2026-08-03 20:02 UTC (permalink / raw)
  To: François Roux
  Cc: Neil Armstrong, Jessica Zhang, Maxime Ripard, Thomas Zimmermann,
	dri-devel, linux-kernel

Hi,

On Sun, Aug 2, 2026 at 6:51 AM François Roux <info@humanlearning.ch> wrote:
>
> The internal eDP panel of the Microsoft Surface Pro 12in 1st Edition
> (Snapdragon X Plus, X1P42100) is not in edp_panels[], so every boot
> produces the deliberate WARN_ON splat in panel_edp_probe() and the panel
> falls back to conservative timings:
>
>   WARNING: drivers/gpu/drm/panel/panel-edp.c:814 panel_edp_probe+0x53c/0x56c
>   panel-simple-dp-aux aux-aea0000.displayport-controller:
>       Unknown panel SHP 0x15a7, using conservative timings
>
> EDID, read over the panel's DP AUX DDC bus:
>
>   00 ff ff ff ff ff ff 00 4d 10 a7 15 a0 00 00 1f
>   31 22 01 04 a5 19 11 78 07 ee 91 a3 54 4c 99 26
>   0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
>   01 01 01 01 01 01 62 53 94 a0 80 b8 2e 50 18 10
>   3a 00 fe a9 00 00 00 18 13 7d 94 a0 80 b8 2e 50
>   18 10 3a 00 fe a9 00 00 00 18 00 00 00 fd 00 18
>   5a 88 88 21 01 00 00 00 00 00 00 00 00 00 00 fc
>   00 4c 51 31 32 30 50 31 4a 58 35 31 0a 20 00 69
>
>   Manufacturer: SHP
>   Model: 0x15a7
>   Made in: week 49 of 2024
>   Display Product Name: 'LQ120P1JX51'
>   DTD 1: 2196x1464 60.001799 Hz 3:2 (254 mm x 169 mm)
>   DTD 2: 2196x1464 90.002698 Hz 3:2 (254 mm x 169 mm)
>
> Timings are deliberately cautious rather than datasheet-derived. The
> conservative fallback sets unprepare=2000 and enable=200; unprepare=2000
> is a safety margin for unknown panels only and is the single occurrence
> of that value in the file -- no real panel entry uses it.
> delay_200_500_e200 keeps the same generous 200 ms enable delay while
> using the 500 ms unprepare shared by every actual panel in the table. A
> shorter enable delay may well be fine, but has not been validated here.
>
> Signed-off-by: François Roux <info@humanlearning.ch>
> ---
> Changes in v2:
> - Read the EDID over the panel's DP AUX DDC bus and included it in the
>   commit message, as requested. My v1 claim that the EDID was not
>   obtainable was wrong: the connector does not export it
>   (/sys/class/drm/card0-eDP-1/edid is 0 bytes) and
>   CONFIG_DRM_DP_AUX_CHARDEV no longer exists, but the AUX bus is
>   registered as an i2c adapter, so a plain DDC read works:
>       i2ctransfer -y <bus> w1@0x50 0x00 r128
>   (i2cdump in byte mode does not: it drops a header byte and yields a
>   block with a bad checksum.)
> - The EDID carries a Display Product Name, so the entry is now
>   "LQ120P1JX51" instead of "Unknown".
> - Timings unchanged (delay_200_500_e200).
> - Now sent under my real name, as you asked. v1 went out as
>   "franzelverbier"; same person, same address.
>
>  drivers/gpu/drm/panel/panel-edp.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
> index 13ce277d7..4defef820 100644
> --- a/drivers/gpu/drm/panel/panel-edp.c
> +++ b/drivers/gpu/drm/panel/panel-edp.c
> @@ -2145,6 +2145,7 @@ static const struct edp_panel_entry edp_panels[] = {
>         EDP_PANEL_ENTRY('S', 'H', 'P', 0x154c, &delay_200_500_p2e100, "LQ116M1JW10"),
>         EDP_PANEL_ENTRY('S', 'H', 'P', 0x158f, &delay_200_500_p2e100, "LQ134Z1"),
>         EDP_PANEL_ENTRY('S', 'H', 'P', 0x1593, &delay_200_500_p2e100, "LQ134N1"),
> +       EDP_PANEL_ENTRY('S', 'H', 'P', 0x15a7, &delay_200_500_e200, "LQ120P1JX51"),

Reviewed-by: Douglas Anderson <dianders@chromium.org>

Pushed to drm-misc-next:

[1/1] drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.)
      commit: 6ed8d820cea9cae226f500d3af86e156eede27f6

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-08-03 20:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260731115127.15140-1-info@humanlearning.ch>
2026-08-02 13:50 ` [PATCH v2] drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.) François Roux
2026-08-03 20:02   ` Doug Anderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox