[PATCH AUTOSEL 7.0-6.19] drm/panel-edp: Add BOE NV153WUM-N42, CMN N153JCA-ELK, CSW MNF307QS3-2

Sasha Levin
2026-04-20T13:17:07Z

From: Alvin1 Chen <alvin1.chen@lcfc.corp-partner.google.com>

[ Upstream commit d51f217957ca1fa3a151000e86a192231284595b ]

The raw EDIDs for each panel:

BOE: NV153WUM-N42
00 ff ff ff ff ff ff 00 09 e5 b3 0d 00 00 00 00
11 23 01 04 a5 21 15 78 03 af e5 97 5e 58 92 28
1f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 9c 3e 80 c8 70 b0 3c 40 30 20
36 00 49 ce 10 00 00 1a 00 00 00 fd 00 28 3c 4c
4c 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 42
4f 45 20 43 51 0a 20 20 20 20 20 20 00 00 00 fc
00 4e 56 31 35 33 57 55 4d 2d 4e 34 32 0a 01 92

70 20 79 02 00 81 00 15 74 1a 00 00 03 01 28 3c
00 00 60 49 60 49 3c 00 00 00 00 80 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 cb 90

CMN: N153JCA-ELK
00 ff ff ff ff ff ff 00 0d ae 6b 15 00 00 00 00
16 23 01 04 a5 21 15 78 03 08 82 93 59 53 8e 27
1e 4f 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 42 3c 80 a0 70 b0 24 40 30 20
a6 00 49 cd 10 00 00 1a 00 00 00 fd 00 28 3c 4a
4a 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 43
4d 4e 0a 20 20 20 20 20 20 20 20 20 00 00 00 fc
00 4e 31 35 33 4a 43 41 2d 45 4c 4b 0a 20 01 d5

70 20 79 02 00 25 01 09 94 5a 02 94 5a 02 28 3c
80 81 00 13 72 1a 00 00 03 01 28 3c 00 00 00 00
00 00 3c 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 ae 90

CSW: MNF307QS3-2
00 ff ff ff ff ff ff 00 0e 77 29 15 00 00 00 00
13 23 01 04 a5 21 15 78 03 9c 81 96 5d 5a 94 28
1e 51 56 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 1a 3f 80 04 71 b0 23 40 30 20
36 00 49 cd 10 00 00 18 00 00 00 fd 00 28 3c 4a
4a 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 43
4f 53 54 20 54 39 0a 20 20 20 20 20 00 00 00 fc
00 4d 4e 46 33 30 37 51 53 33 2d 32 0a 20 01 5c

70 20 79 02 00 81 00 15 74 1a 00 00 03 01 28 3c
00 00 60 46 60 46 3c 00 00 00 00 8d 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 c4 90

Signed-off-by: Alvin1 Chen <alvin1.chen@lcfc.corp-partner.google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patch.msgid.link/20260319050938.556235-1-alvin1.chen@lcfc.corp-partner.google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

Now I have all the information needed for a complete analysis. Let me
compile the findings.

---

## PHASE 1: COMMIT MESSAGE FORENSICS

**Step 1.1: Subject Line**
- Subsystem: `drm/panel-edp`
- Action: "Add" (three new panel entries)
- Summary: Adding panel IDs for BOE NV153WUM-N42, CMN N153JCA-ELK, CSW
MNF307QS3-2
- Record: [drm/panel-edp] [Add] [Three new eDP panel ID entries to
existing driver table]

**Step 1.2: Tags**
- `Signed-off-by: Alvin1 Chen <alvin1.chen@lcfc.corp-
partner.google.com>` — author, Google Corp Partner (Lenovo/LCFC)
- `Reviewed-by: Douglas Anderson <dianders@chromium.org>` — the
drm/panel-edp subsystem maintainer reviewed it
- `Signed-off-by: Douglas Anderson <dianders@chromium.org>` — maintainer
applied/signed off on it
- `Link: https://patch.msgid.link/20260319050938.556235-1-
alvin1.chen@lcfc.corp-partner.google.com` — patch submission link
- No Fixes: tag (expected for device ID additions)
- No Cc: stable (expected)
- Record: Reviewed and signed off by subsystem maintainer Douglas
Anderson. Author is from LCFC/Google partnership (Chromebook
hardware).

**Step 1.3: Commit Body**
- Contains raw EDID hex dumps for all three panels as
documentation/proof
- No bug description (this is hardware enablement, not a fix per se)
- Record: Commit body is EDID data only — standard for panel-edp
additions.

**Step 1.4: Hidden Bug Fix Detection**
- This is not a disguised bug fix. It is a straightforward hardware
enablement (device ID addition) to an existing driver. Without the
entry, panels are unrecognized and may not work or use incorrect
timings.
- Record: Not a hidden bug fix; it's a device ID addition which is an
explicit exception category for stable.

## PHASE 2: DIFF ANALYSIS

**Step 2.1: Inventory**
- Files changed: 1 (`drivers/gpu/drm/panel/panel-edp.c`)
- Lines added: 3 (one `EDP_PANEL_ENTRY` line per panel)
- Lines removed: 0
- Functions modified: none (only data table entries)
- Record: Single file, +3 lines, static data table only. Ultra-minimal
scope.

**Step 2.2: Code Flow Change**
- Three new entries added to the `edp_panels[]` static const array:
1. `EDP_PANEL_ENTRY('B', 'O', 'E', 0x0db3, &delay_200_500_e80,
"NV153WUM-N42")` — inserted between 0x0d73 and 0x0ddf (sorted
order)
2. `EDP_PANEL_ENTRY('C', 'M', 'N', 0x156b, &delay_200_500_e80_d50,
"N153JCA-ELK")` — inserted between 0x1565 and 0x162b (sorted order)
3. `EDP_PANEL_ENTRY('C', 'S', 'W', 0x1529, &delay_200_500_e80_d50,
"MNF307QS3-2")` — inserted after 0x1519 (sorted order)
- Before: These three panels were unrecognized by the driver
- After: These panels are matched by their EDID panel ID and get proper
timing delays
- Record: Data-only additions in sorted order. No behavior change for
any existing panel.

**Step 2.3: Bug Mechanism**
- Category (h): Hardware workaround / device ID addition
- The delay structures referenced (`delay_200_500_e80` at line 1753 and
`delay_200_500_e80_d50` at line 1759) already exist in the file and
are used by dozens of other panels
- Record: Device ID addition to existing data table. Uses pre-existing
delay structures.

**Step 2.4: Fix Quality**
- Obviously correct: Each entry follows identical pattern to ~198
existing entries
- Minimal/surgical: 3 lines, data only
- Regression risk: Zero — entries only match specific panel IDs; no
existing panels are affected
- Record: Fix quality is perfect. No regression risk whatsoever.

## PHASE 3: GIT HISTORY INVESTIGATION

**Step 3.1: Blame**
- The surrounding entries were added by various contributors between
2024-2025
- The `edp_panels[]` table has been growing steadily; 68 commits to this
file since 2024-01-01
- Record: Table has existed for many kernel versions. This is a very
mature, well-maintained data structure.

**Step 3.2: Fixes Tag**
- No Fixes: tag (expected for device ID additions)
- Record: N/A

**Step 3.3: File History**
- This file receives frequent panel additions (68 commits in ~2 years)
- No prerequisite commits needed — the delay structures and macro
already exist
- Record: Standalone commit, no dependencies.

**Step 3.4: Author's Commits**
- Alvin1 Chen has no prior commits in this tree for panel-edp.c
- Author is from LCFC (Lenovo manufacturing partner, Google Chromebook
program)
- Douglas Anderson (reviewer/signer) is the drm/panel-edp maintainer
with 10+ commits here
- Record: Author is a hardware partner contributor. Maintainer reviewed
and applied.

**Step 3.5: Dependencies**
- No dependencies. The `EDP_PANEL_ENTRY` macro (line 1859),
`delay_200_500_e80` (line 1753), and `delay_200_500_e80_d50` (line
1759) all exist in the current stable tree.
- Record: Fully standalone. All referenced structures present.

## PHASE 4: MAILING LIST RESEARCH

**Step 4.1: Original Discussion**
- b4 dig could not find the commit (it's not yet in this tree)
- Lore is protected by Anubis bot-filtering
- Link in commit message:
`patch.msgid.link/20260319050938.556235-1-alvin1.chen@lcfc.corp-
partner.google.com`
- Record: Could not fetch lore discussion due to anti-bot measures.
However, the patch is reviewed and signed-off by the subsystem
maintainer.

**Step 4.2: Reviewers**
- Douglas Anderson (dianders@chromium.org) is THE maintainer for
drm/panel-edp (verified by his 10+ commits to this file and his
reviewer/signer role)
- Record: Subsystem maintainer reviewed and applied the patch.

**Step 4.3-4.5: Bug Reports / Related Patches / Stable History**
- No bug report (this is hardware enablement, not a bug fix)
- This is a single standalone patch (not part of a series)
- Record: N/A for bug reports. Standalone single patch.

## PHASE 5: CODE SEMANTIC ANALYSIS

**Step 5.1-5.4: Functions and Call Chains**
- No functions are modified. The change is to a static const data table
`edp_panels[]`
- This table is looked up during panel probing when EDID is read from
the connected display
- If a panel ID matches, the associated delay timings are used; if no
match, generic/conservative timings are used
- Record: Data table lookup only. No code flow changes.

**Step 5.5: Similar Patterns**
- There are 198 existing `EDP_PANEL_ENTRY` entries in this file, all
following the identical pattern
- Record: Extremely well-established pattern.

## PHASE 6: STABLE TREE ANALYSIS

**Step 6.1: Code in Stable Trees**
- The `panel-edp.c` driver and `edp_panels[]` table exist in 7.0 and all
active stable trees
- The `EDP_PANEL_ENTRY` macro and both referenced delay structures exist
- Record: All infrastructure present in stable trees.

**Step 6.2: Backport Complications**
- The patch will apply cleanly to the 7.0 tree — the surrounding entries
(0x0d73, 0x0ddf, 0x1565, 0x162b, 0x1519) all exist at the expected
positions
- Older stable trees may need minor context adjustment if some
surrounding entries don't exist, but the additions are independent and
can be trivially placed
- Record: Clean apply expected for 7.0. Minor fuzz possible for older
trees.

**Step 6.3: Related Fixes Already in Stable**
- No related fixes — these are new panel IDs not previously added
- Record: No prior entries for these panels.

## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT

**Step 7.1: Subsystem**
- Subsystem: DRM panel (drivers/gpu/drm/panel/) — display panel driver
- Criticality: IMPORTANT — affects users with specific laptop panels
(likely Chromebooks)
- Record: Display driver, important for hardware enablement.

**Step 7.2: Activity**
- Very active: 68 commits since 2024, regular panel additions
- Record: Actively maintained, frequent contributions.

## PHASE 8: IMPACT AND RISK ASSESSMENT

**Step 8.1: Affected Users**
- Users with laptops containing BOE NV153WUM-N42, CMN N153JCA-ELK, or
CSW MNF307QS3-2 panels
- Likely Chromebook users (Google Corp Partner author, Chromium
reviewer)
- Record: Hardware-specific; affects users with these specific panels.

**Step 8.2: Trigger Conditions**
- Every boot on affected hardware — panel detection happens during
display initialization
- Without the entry, the panel may work with generic timings but could
have display issues
- Record: Triggered every boot on affected hardware.

**Step 8.3: Failure Mode**
- Without this fix: Panel uses generic/conservative timings; may result
in display flickering, incorrect initialization, or suboptimal
performance
- With this fix: Panel gets correct vendor-specified timing delays
- Record: Severity MEDIUM — hardware enablement for display panels.

**Step 8.4: Risk-Benefit**
- BENEFIT: Enables proper display support for real hardware
(laptops/Chromebooks)
- RISK: Virtually zero — 3 lines of static data, only matched by
specific panel IDs, no effect on any other hardware
- Record: Very high benefit-to-risk ratio.

## PHASE 9: FINAL SYNTHESIS

**Step 9.1: Evidence**
- FOR: Device ID addition to existing driver (explicit exception
category); 3 lines; zero regression risk; reviewed by subsystem
maintainer; uses existing infrastructure; standalone patch
- AGAINST: Nothing substantive
- UNRESOLVED: Could not access lore discussion (Anubis blocking)

**Step 9.2: Stable Rules Checklist**
1. Obviously correct and tested? YES — identical pattern to 198 existing
entries, reviewed by maintainer
2. Fixes a real bug that affects users? YES — enables hardware support
for real panels
3. Important issue? MEDIUM — hardware doesn't get optimal timings
without it
4. Small and contained? YES — 3 lines, single file, data only
5. No new features or APIs? YES — no new features, just device IDs
6. Can apply to stable trees? YES — all infrastructure exists

**Step 9.3: Exception Category**
- **NEW DEVICE IDs** — adding panel IDs to an existing driver. This is
an explicit YES exception category.

**Step 9.4: Decision**
This is a textbook device ID addition — the most common and safest type
of stable backport.

## Verification

- [Phase 1] Parsed tags: Reviewed-by and Signed-off-by from Douglas
Anderson (maintainer)
- [Phase 2] Diff analysis: +3 lines, all EDP_PANEL_ENTRY additions to
static const data table
- [Phase 2] Verified delay_200_500_e80 exists at line 1753,
delay_200_500_e80_d50 at line 1759
- [Phase 2] Verified EDP_PANEL_ENTRY macro defined at line 1859
- [Phase 2] Verified entries inserted in sorted order (0x0db3 between
0x0d73/0x0ddf, 0x156b between 0x1565/0x162b, 0x1529 after 0x1519)
- [Phase 3] git blame: surrounding entries present from various authors
(2024-2025)
- [Phase 3] git log: 68 commits to this file since 2024, very active
- [Phase 3] Verified author has no prior commits; maintainer Douglas
Anderson has 10+ commits here
- [Phase 4] b4 dig: could not find commit (not in tree). Lore blocked by
Anubis.
- [Phase 5] No functions modified; data table only
- [Phase 6] All referenced structures confirmed present in 7.0 tree;
patch applies cleanly
- [Phase 6] 198 existing EDP_PANEL_ENTRY entries confirm the
pattern/infrastructure is stable
- UNVERIFIED: Could not read lore discussion thread; however maintainer
sign-off provides sufficient confidence

**YES**

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

diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
index 260fa18b0f78a..c073ea87008de 100644
--- a/drivers/gpu/drm/panel/panel-edp.c
+++ b/drivers/gpu/drm/panel/panel-edp.c
@@ -1999,6 +1999,7 @@ static const struct edp_panel_entry edp_panels[] = {
EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cfa, &delay_200_500_e50, "NV116WHM-A4D"),
EDP_PANEL_ENTRY('B', 'O', 'E', 0x0d45, &delay_200_500_e80, "NV116WHM-N4B"),
EDP_PANEL_ENTRY('B', 'O', 'E', 0x0d73, &delay_200_500_e80, "NE140WUM-N6S"),
+ EDP_PANEL_ENTRY('B', 'O', 'E', 0x0db3, &delay_200_500_e80, "NV153WUM-N42"),
EDP_PANEL_ENTRY('B', 'O', 'E', 0x0ddf, &delay_200_500_e80, "NV116WHM-T01"),

EDP_PANEL_ENTRY('C', 'M', 'N', 0x1130, &delay_200_500_e50, "N116BGE-EB2"),
@@ -2035,6 +2036,7 @@ static const struct edp_panel_entry edp_panels[] = {
EDP_PANEL_ENTRY('C', 'M', 'N', 0x14d6, &delay_200_500_e80_d50, "N140BGA-EA4"),
EDP_PANEL_ENTRY('C', 'M', 'N', 0x14e5, &delay_200_500_e80_d50, "N140HGA-EA1"),
EDP_PANEL_ENTRY('C', 'M', 'N', 0x1565, &delay_200_500_e80, "N156HCA-EAB"),
+ EDP_PANEL_ENTRY('C', 'M', 'N', 0x156b, &delay_200_500_e80_d50, "N153JCA-ELK"),
EDP_PANEL_ENTRY('C', 'M', 'N', 0x162b, &delay_200_500_e80_d50, "N160JCE-ELL"),
EDP_PANEL_ENTRY('C', 'M', 'N', 0x7402, &delay_200_500_e200_d50, "N116BCA-EAK"),

@@ -2053,6 +2055,7 @@ static const struct edp_panel_entry edp_panels[] = {
EDP_PANEL_ENTRY('C', 'S', 'W', 0x146e, &delay_80_500_e50_d50, "MNE007QB3-1"),
EDP_PANEL_ENTRY('C', 'S', 'W', 0x147c, &delay_200_500_e50_d100, "MNE007QB3-1"),
EDP_PANEL_ENTRY('C', 'S', 'W', 0x1519, &delay_200_500_e80_d50, "MNF601BS1-3"),
+ EDP_PANEL_ENTRY('C', 'S', 'W', 0x1529, &delay_200_500_e80_d50, "MNF307QS3-2"),

EDP_PANEL_ENTRY('E', 'T', 'C', 0x0000, &delay_50_500_e200_d200_po2e335, "LP079QX1-SP0V"),

--
2.53.0