[PATCH AUTOSEL 6.18-5.10] drm/panel: simple: Add AM-1280800W8TZQW-T00H
From: Sasha Levin
Date: Mon Aug 31 2026 - 10:45:39 EST
From: Dario Binacchi <dario.binacchi@xxxxxxxxxxxxxxxxxxxx>
[ Upstream commit 6acb810ebc5d8dea5c250326c14dc44e32dc8e92 ]
Add Ampire, AM-1280800W8TZQW-T00H 10.1" TFT LCD panel timings.
Co-developed-by: Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Dario Binacchi <dario.binacchi@xxxxxxxxxxxxxxxxxxxx>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
Link: https://patch.msgid.link/20260515082232.1766586-2-dario.binacchi@xxxxxxxxxxxxxxxxxxxx
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
LLM Generated explanations, may be completely bogus:
# Stable Backport Analysis: drm/panel: simple: Add AM-1280800W8TZQW-T00H
**Local tree:** Linux **6.18.44** (`v6.18.44`, `stable/linux-6.18.y`)
---
## PHASE 1: COMMIT MESSAGE FORENSICS
### Step 1.1: Subject line
**Record:** `[drm/panel: simple]` `[Add]` — Add Ampire
AM-1280800W8TZQW-T00H 10.1" TFT LCD panel timings to the existing
`panel-simple` driver.
### Step 1.2: Tags
**Record:**
- **Co-developed-by:** Michael Trimarchi
\<michael@xxxxxxxxxxxxxxxxxxxx\>
- **Signed-off-by:** Michael Trimarchi, Dario Binacchi
- **Reviewed-by:** Dmitry Baryshkov
\<dmitry.baryshkov@xxxxxxxxxxxxxxxx\> (DRM/panel reviewer)
- **Signed-off-by:** Neil Armstrong \<neil.armstrong@xxxxxxxxxx\>
(maintainer ack)
- **Link:** https://patch.msgid.link/20260515082232.1766586-2-
dario.binacchi@xxxxxxxxxxxxxxxxxxxx
- **No** Fixes:, Reported-by:, Tested-by:, Cc: stable@xxxxxxxxxxxxxxx,
or syzbot tags
- **Notable:** Part of a 2-patch v2 series (patch 2/2); patch 1/2 adds
the DT binding
### Step 1.3: Body analysis
**Record:**
- **Bug description:** None — this is hardware enablement, not a bug
fix.
- **Symptom without patch:** A device tree node with `compatible =
"ampire,am-1280800w8tzqw-t00h"` will not match `panel-simple`, so the
display will not probe and no framebuffer will come up.
- **Root cause:** Missing `panel_desc` / `drm_display_mode` entry and
missing OF compatible in `platform_of_match[]`.
- **Version info:** None in the message.
### Step 1.4: Hidden bug fix?
**Record:** No. This is a straightforward device-ID / panel-timing
addition. It does not fix leaks, races, crashes, or corruption in
existing code paths.
---
## PHASE 2: DIFF ANALYSIS
### Step 2.1: Inventory
**Record:**
- **File changed:** `drivers/gpu/drm/panel/panel-simple.c` only (+28
lines)
- **Functions modified:** None (only static data and one
`platform_of_match[]` entry)
- **Scope:** Single-file, surgical data addition
### Step 2.2: Code flow change
**Record:**
- **Hunk 1 (after `ampire_am_1280800n3tzqw_t00h`):** Adds
`ampire_am_1280800w8tzqw_t00h_mode` (1280×800, 72.4 MHz pixel clock,
different vsync from the N3 sibling) and
`ampire_am_1280800w8tzqw_t00h` descriptor (8 bpc, LVDS, RGB888 SPWG).
- Before: only the N3 variant is known.
- After: W8 variant is also known.
- **Hunk 2 (`platform_of_match[]`):** Adds `{ .compatible =
"ampire,am-1280800w8tzqw-t00h", .data = &ire_am_1280800w8tzqw_t00h
}`.
- Before: probe fails for W8 compatible strings.
- After: probe succeeds and uses W8-specific timings.
### Step 2.3: Bug mechanism
**Record:** **Category h) — hardware workarounds / device enablement.**
Not a software bug fix; adds OF compatible + timings for a new panel
variant on an existing driver.
### Step 2.4: Fix quality
**Record:**
- **Quality:** High — mirrors the existing `am-1280800n3tzqw-t00h`
pattern exactly.
- **Regression risk:** Very low — purely additive static data; no logic
or locking changes.
- **Minor note:** W8 mode struct omits `.flags = DRM_MODE_FLAG_PHSYNC |
DRM_MODE_FLAG_PVSYNC` present on the N3 sibling; this matches the
submitted upstream patch and was reviewed as-is.
---
## PHASE 3: GIT HISTORY INVESTIGATION
### Step 3.1: Blame
**Record:** On `origin/master`, the W8 panel code is present at lines
823–846 and in `platform_of_match`. In the local 6.18.44 tree, the
insertion point after `ampire_am_1280800n3tzqw_t00h` (lines 797–821) and
the matching `platform_of_match` entry (line 4966) already exist. The W8
entry is absent — this is new mainline content not yet in 6.18.y.
### Step 3.2: Fixes: tag
**Record:** Not applicable — no Fixes: tag.
### Step 3.3: Related file history
**Record:**
- Sibling panel `am-1280800n3tzqw-t00h` is already in this tree and used
by in-tree DTS files (`imx6q-icore-ofcap10.dts`, `px30-engicam-
px30-core-ctouch2-of10.dts`, `stm32mp157a-icore-
stm32mp1-ctouch2-of10.dts`).
- On `stable/linux-6.6.y`, the nearly identical sibling addition was
backported: `bca684e69c4ce` (+29 lines, same vendor/subject pattern).
- `w8tzqw` appears only in `panel-simple.c` and `panel-simple.yaml` on
mainline — no in-tree DTS references anywhere.
### Step 3.4: Author context
**Record:** Amarula Solutions (same vendor ecosystem as Engicam boards
using the N3 panel). Dmitry Baryshkov reviewed; Neil Armstrong signed
off. Same maintainer chain as prior Ampire panel additions.
### Step 3.5: Dependencies
**Record:** Part of a 2-patch series:
1. `dt-bindings: display: simple: Add AM-1280800W8TZQW-T00H` (Acked-by:
Conor Dooley)
2. `drm/panel: simple: Add AM-1280800W8TZQW-T00H` (this commit)
This driver patch is self-contained and applies cleanly to 6.18.44. The
binding patch is a companion but not a compile-time prerequisite for the
driver itself.
---
## PHASE 4: MAILING LIST AND EXTERNAL RESEARCH
### Step 4.1: Original discussion
**Record:**
- **b4 am** on msgid
`20260515082232.1766586-2-dario.binacchi@xxxxxxxxxxxxxxxxxxxx` found
the v2 series (2 patches).
- **Link:** https://patch.msgid.link/20260515082232.1766586-1-
dario.binacchi@xxxxxxxxxxxxxxxxxxxx
- **b4 dig -c** on merge commit `0fd8b67e27ff7` failed (merge commit,
not the original patch).
- **No Cc: stable** nominations found in the mbox thread.
- **No NAKs** found in the retrieved mbox.
### Step 4.2: Reviewers
**Record:** Dmitry Baryshkov (Reviewed-by), Conor Dooley (Acked-by on
bindings), Neil Armstrong (Signed-off-by). Appropriate DRM/DT reviewers
involved.
### Step 4.3: Bug report
**Record:** Not applicable — no bug report, syzbot link, or user crash
report.
### Step 4.4: Series context
**Record:** 2-patch v2 series. v2 changes were alphabetical ordering and
correcting WQVGA → WXGA in the binding comment. No board DTS included in
the series.
### Step 4.5: Stable list history
**Record:** No stable-list discussion found for this specific panel.
Sibling `AM-1280800N3TZQW-T00H` was previously backported to 6.6.y.
---
## PHASE 5: CODE SEMANTIC ANALYSIS
### Step 5.1: Key functions
**Record:** No functions modified. Data consumed by
`panel_simple_get_desc()` → `of_device_get_match_data()` via
`platform_of_match[]`.
### Step 5.2: Callers
**Record:** `panel_simple_platform_probe()` and DSI probe paths call
`panel_simple_probe()`, which calls `panel_simple_get_desc()`. Any
platform device with `compatible = "ampire,am-1280800w8tzqw-t00h"` would
use the new descriptor. Triggered at boot during DRM/display
initialization on affected embedded boards.
### Step 5.3: Callees
**Record:** Standard panel-simple probe path: mode/timing setup,
connector registration. No new allocation or locking paths introduced.
### Step 5.4: Reachability
**Record:** Reachable on any system with a DT node using this compatible
and `CONFIG_DRM_PANEL_SIMPLE`. Not userspace-triggered, but affects
display bring-up on boot for matching hardware.
### Step 5.5: Similar patterns
**Record:** Identical pattern to `ampire_am_1280800n3tzqw_t00h` already
in this tree (29-line sibling addition backported to 6.6.y as
`bca684e69c4ce`).
---
## PHASE 6: CROSS-REFERENCING AGAINST LOCAL TREE (6.18.44)
### Step 6.1: Does the “buggy” code exist?
**Record:** The `panel-simple` driver and the sibling N3 Ampire panel
entry exist in 6.18.44. The W8 compatible is **missing** — boards using
it cannot get display support. The gap was introduced when W8 support
landed in mainline after the 6.18 branch point.
### Step 6.2: Backport complications
**Record:** **Clean apply expected.** Insertion point (`after
ampire_am_1280800n3tzqw_t00h` and in `platform_of_match[]`) is present
and unchanged. `git diff HEAD origin/master` shows exactly this 28-line
addition among broader mainline drift.
### Step 6.3: Related fixes already present?
**Record:** No equivalent W8 entry in this tree. Sibling N3 panel is
present. No duplicate fix found.
---
## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT
### Step 7.1: Subsystem criticality
**Record:** **drivers/gpu/drm/panel** — IMPORTANT for embedded/display
platforms; not universal core kernel, but critical for affected
hardware.
### Step 7.2: Subsystem activity
**Record:** `panel-simple.c` is mature with extensive static panel
tables. This follows established conventions.
---
## PHASE 8: IMPACT AND RISK ASSESSMENT
### Step 8.1: Who is affected
**Record:** **Platform-specific** — embedded boards (Engicam/Amarula
ecosystem) using the Ampire AM-1280800W8TZQW-T00H 10.1" LVDS panel.
Requires `CONFIG_DRM_PANEL_SIMPLE`.
### Step 8.2: Trigger conditions
**Record:** Boot on hardware with DT `compatible =
"ampire,am-1280800w8tzqw-t00h"`. **No in-tree DTS currently uses this
compatible** on mainline or 6.18.44. Impact is for downstream/custom DTS
or future board additions.
### Step 8.3: Failure mode severity
**Record:** Without the patch: panel probe failure → **no display**
(MEDIUM functional impact for affected hardware; not a crash,
corruption, or security issue).
### Step 8.4: Risk-benefit
**Record:**
- **Benefit:** Enables display on W8-variant Ampire panels; follows
established stable exception for device-ID additions; direct precedent
from sibling N3 backport to 6.6.y.
- **Risk:** Very low — 28 lines of static data, no behavioral change for
existing panels.
- **Ratio:** Favorable for stable, under the explicit “add a device ID”
exception in `stable-kernel-rules.rst`.
---
## PHASE 9: FINAL SYNTHESIS
### Step 9.1: Evidence summary
**FOR backport:**
- Explicitly permitted by `Documentation/process/stable-kernel-
rules.rst`: *“It must either fix a real bug that bothers people or
just add a device ID.”*
- Falls under the device-ID / DT-binding exception category in the
evaluation guidelines.
- Small (28 lines), contained, obviously correct, reviewed.
- `panel-simple` driver and sibling N3 panel already exist in 6.18.44.
- Applies cleanly to this tree.
- Already in mainline (prerequisite met).
- Identical precedent: `bca684e69c4ce` backported the N3 sibling to
6.6.y (+29 lines).
**AGAINST backport:**
- Not a bug fix — pure hardware enablement.
- No in-tree DTS uses this compatible yet (no demonstrated user impact
in 6.18.44 today).
- Ideally paired with patch 1/2 (DT binding yaml update).
- No stable nomination or user bug report.
**Unresolved:** Whether a specific shipping board on 6.18.y already uses
this panel in downstream trees (not verifiable from this tree).
### Step 9.2: Stable rules checklist
1. Obviously correct and tested? **PASS** — reviewed by Dmitry
Baryshkov; mirrors existing N3 entry.
2. Fixes a real bug affecting users? **PASS (via device-ID exception)**
— not a software bug, but enables hardware that otherwise cannot
work.
3. Important issue? **PASS (moderate)** — display failure on affected
hardware; not crash/security.
4. Small and contained? **PASS** — 28 lines, one file.
5. No new features or APIs? **PASS** — new OF compatible on existing
driver; standard stable device-ID pattern.
6. Can apply to local tree? **PASS** — clean apply to existing `panel-
simple.c`.
### Step 9.3: Exception category
**Record:** **NEW DEVICE ID / DT binding addition** to an existing
driver (`panel-simple`). Same category as PCI/USB ID additions and prior
Ampire panel additions backported to stable.
### Step 9.4: Decision rationale
This commit does not fix a kernel bug, but it adds a device identifier
(OF compatible + panel timings) to an existing, in-tree driver. That is
explicitly allowed for stable trees per `stable-kernel-rules.rst` and
matches the established pattern of backporting Ampire `panel-simple`
additions (the N3 sibling was backported to 6.6.y in an essentially
identical 29-line patch). The change is low-risk, applies cleanly to
Linux 6.18.44, and is already in mainline. The companion DT binding
patch should ideally be backported alongside it, but this driver commit
alone is valid stable material.
---
## Verification
- **[Phase 1]** Parsed subject, tags, body from provided commit message
and mbox.
- **[Phase 1]** `b4 am
20260515082232.1766586-2-dario.binacchi@xxxxxxxxxxxxxxxxxxxx`:
confirmed v2 2-patch series; Reviewed-by Dmitry Baryshkov; Acked-by
Conor Dooley on patch 1/2.
- **[Phase 2]** Diff analysis: +28 lines in `panel-simple.c`; static
data + one `platform_of_match` entry.
- **[Phase 3]** `git describe HEAD`: v6.18.44 / 6.18.44 on
`stable/linux-6.18.y`.
- **[Phase 3]** `git grep "am-1280800w8tzqw-t00h" origin/master`: only
in `panel-simple.c` and `panel-simple.yaml` on mainline; absent from
HEAD.
- **[Phase 3]** `git show bca684e69c4ce --stat`: sibling N3 panel
backported to 6.6.y (+29 lines, same pattern).
- **[Phase 3]** `git log stable/linux-6.6.y --grep="1280800"`: N3 panel
+ binding + bpc fix backported to 6.6.y.
- **[Phase 4]** `b4 dig -c 0fd8b67e27ff7`: no match (merge commit).
- **[Phase 4]** Read mbox `v2_20260515_dario_binacchi_dt_bindings_displa
y_simple_add_am_1280800w8tzqw_t00h.mbx`: no Cc: stable; 2-patch series
confirmed.
- **[Phase 5]** `grep panel_simple_probe/panel_simple_get_desc` in
`panel-simple.c`: standard probe path via
`of_device_get_match_data()`.
- **[Phase 6]** `grep "am-1280800w8tzqw"`: zero matches in local tree.
- **[Phase 6]** `grep "am-1280800n3tzqw"`: present in `panel-simple.c`
and three in-tree DTS files.
- **[Phase 6]** `git diff HEAD origin/master --
drivers/gpu/drm/panel/panel-simple.c`: W8 addition is a clean 28-line
insert at expected location.
- **[Phase 6]** `git show origin/master:panel-simple.c | rg
"1280800w8"`: confirmed mainline has full W8 definition.
- **[Phase 7]** Read `Documentation/process/stable-kernel-rules.rst`:
confirms device-ID additions are valid stable material.
- **[Phase 8]** `git grep "am-1280800w8tzqw-t00h" origin/master`: no DTS
references — no in-tree board uses this panel yet.
**YES**The background lookups finished and line up with the earlier
analysis:
- **Pickaxe search** (`am-1280800w8tzqw-t00h` on `origin/master`): only
surfaced merge commit `0fd8b67e27ff7`, not the original panel patch —
the change is buried in a merge, which is why a direct subject/hash
search was needed.
- **Broader pickaxe search** (with `--all`): slow and similarly
unhelpful for finding the real introducing commit.
- **`b4 dig -c 0fd8b67e27ff7`**: no lore match on that RDMA merge
commit.
The useful trace came from **`b4 am`** on the patch msgid, which found
the v2 2-patch series (DT binding + driver). That supports the **YES**
verdict for 6.18.44: a small device-ID addition to an existing driver,
with the companion binding patch ideally backported alongside it.
drivers/gpu/drm/panel/panel-simple.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index ef1c4b9299ee4..878a5dc7748fb 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -820,6 +820,31 @@ static const struct panel_desc ampire_am_1280800n3tzqw_t00h = {
.connector_type = DRM_MODE_CONNECTOR_LVDS,
};
+static const struct drm_display_mode ampire_am_1280800w8tzqw_t00h_mode = {
+ .clock = 72400,
+ .hdisplay = 1280,
+ .hsync_start = 1280 + 40,
+ .hsync_end = 1280 + 40 + 80,
+ .htotal = 1280 + 40 + 80 + 40,
+ .vdisplay = 800,
+ .vsync_start = 800 + 10,
+ .vsync_end = 800 + 10 + 18,
+ .vtotal = 800 + 10 + 18 + 10,
+};
+
+static const struct panel_desc ampire_am_1280800w8tzqw_t00h = {
+ .modes = &ire_am_1280800w8tzqw_t00h_mode,
+ .num_modes = 1,
+ .bpc = 8,
+ .size = {
+ .width = 217,
+ .height = 136,
+ },
+ .bus_flags = DRM_BUS_FLAG_DE_HIGH,
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
+ .connector_type = DRM_MODE_CONNECTOR_LVDS,
+};
+
static const struct drm_display_mode ampire_am_480272h3tmqw_t01h_mode = {
.clock = 9000,
.hdisplay = 480,
@@ -4965,6 +4990,9 @@ static const struct of_device_id platform_of_match[] = {
{
.compatible = "ampire,am-1280800n3tzqw-t00h",
.data = &ire_am_1280800n3tzqw_t00h,
+ }, {
+ .compatible = "ampire,am-1280800w8tzqw-t00h",
+ .data = &ire_am_1280800w8tzqw_t00h,
}, {
.compatible = "ampire,am-480272h3tmqw-t01h",
.data = &ire_am_480272h3tmqw_t01h,
--
2.53.0