Each flagged capture is a genuine flicker event (not an artifact) — the LP pass fires at
pipeline startup, so a missing or sub-50 ns LP-low plateau means the SN65DSI83 bridge
missed the SoT sequence and dropped a frame.
LP-low plateau < 50 ns means the LP-01/LP-00 SoT states are absent or too brief
for the SN65DSI83 bridge to detect start-of-transmission.
| Capture | Timestamp | Channel | LP-low plateau | LP exit→HS | LP-11 voltage |
|---|---|---|---|---|---|
| 0304 | 20260409_132523 | dat | 0.3 ns | 2.4 ns | 1.015 V |
| 0308 | 20260409_132650 | dat | 0.3 ns | 3.1 ns | 1.015 V |
| 0315 | 20260409_132922 | dat | 0.3 ns | 3.8 ns | 1.016 V |
| 0318 | 20260409_133028 | dat | 0.3 ns | 2.3 ns | 1.015 V |
| 0324 | 20260409_133238 | dat | 0.3 ns | 2.2 ns | 1.014 V |
| 0328 | 20260409_133406 | dat | None ns | None ns | 1.014 V |
| Capture | Timestamp | 0x32e100b4 DSIM_PHYTIMING | 0x32e100b8 DSIM_PHYTIMING1 | 0x32e100bc DSIM_PHYTIMING2 |
|---|---|---|---|---|
| 0303 | 20260409_132501 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0304 | 20260409_132523 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0305 | 20260409_132545 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0306 | 20260409_132607 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0307 | 20260409_132628 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0308 | 20260409_132650 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0309 | 20260409_132712 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0310 | 20260409_132733 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0311 | 20260409_132755 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0312 | 20260409_132817 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0313 | 20260409_132839 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0314 | 20260409_132901 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0315 | 20260409_132922 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0316 | 20260409_132944 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0317 | 20260409_133006 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0318 | 20260409_133028 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0319 | 20260409_133049 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0320 | 20260409_133111 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0321 | 20260409_133133 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0322 | 20260409_133155 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0323 | 20260409_133217 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0324 | 20260409_133238 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0325 | 20260409_133300 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0326 | 20260409_133322 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0327 | 20260409_133344 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0328 | 20260409_133406 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0329 | 20260409_133428 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0330 | 20260409_133449 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0331 | 20260409_133511 | 0x00000305 | 0x020e0a03 | 0x00030605 |
| 0332 | 20260409_133533 | 0x00000305 | 0x020e0a03 | 0x00030605 |
# MIPI D-PHY Signal Integrity Analysis — Captures 0303–0332
## 1. Root Cause Identification
### The Smoking Gun: Register Mismatch vs. Target
Every single capture shows the same wrong register values:
| Register | Target (compliant) | Actual (all captures) | Impact |
|---|---|---|---|
| PHYTIMING (0xb4) | `0x00000306` | `0x00000305` | THS_EXIT=5 → 92.6 ns (spec ≥100 ns) ✗ |
| PHYTIMING1 (0xb8) | `0x03110A04` | `0x020e0a03` | TCLK_PREPARE=2 → 37 ns (spec 38–95 ns) ✗; TCLK_ZERO=14 → 259 ns (spec ≥300 ns) ✗; TCLK_TRAIL=3 → 55.6 ns (spec ≥60 ns) ✗ |
| PHYTIMING2 (0xbc) | `0x00040A03` | `0x00030605` | THS_PREPARE=5 → 92.6 ns (spec 40+4×UI=49.3–85+6×UI=98.9 ns) — marginal high; THS_ZERO=6 → 111 ns (spec ≥145+10×UI=168.2 ns) ✗✗✗; THS_TRAIL=3 → 55.6 ns (spec max(8×UI,60ns+4×UI)=69.3 ns) ✗ |
The driver is programming the wrong timing values. The samsung-dsim driver's timing calculation algorithm is producing values that violate MIPI D-PHY v1.1 for this 432 Mbit/s bit rate. This is the primary root cause.
### Critical Violations Directly Causing Flicker
THS_ZERO = 6 (111 ns) vs. spec minimum 168 ns — This is the most severe violation. THS_ZERO defines the duration of the HS-0 state in the data lane SoT sequence (LP-11 → LP-01 → LP-00 → HS-0 → data). At 111 ns, it is 34% below the minimum. The SN65DSI83 bridge must detect this HS-0 period to synchronize its deserializer. When the PHY's internal timing jitter causes the HS-0 to be even shorter than the already-too-short programmed value, the bridge fails to lock — producing the observed bistable behavior.
TCLK_ZERO = 14 (259 ns) vs. spec minimum 300 ns — The clock lane's HS-0 initialization is also too short. The bridge may not have a stable clock reference established before data lane SoT arrives.
### Why It's Intermittent (20% Failure Rate)
The LP-low plateau measurement shows a trimodal distribution:
- ~343 ns — 14 captures (good sessions, bridge locks)
- ~108 ns — 9 captures (good sessions, bridge locks — barely)
- 0 ns — 5 captures (all confirmed flicker sessions: 0304, 0308, 0315, 0318, 0324)
- 1 capture (0328) — no measurable LP-low, split HS bursts, confirmed flicker
The correlation is perfect: every capture with LP-low = 0 ns produced flicker. The PHY's SoT state machine timing is racing against internal PLL lock and clock distribution. With THS_ZERO programmed 57 ns below spec minimum, there is zero margin. On ~20% of startups, internal timing variation causes the LP-00/HS-0 states to collapse entirely, producing a degenerate SoT that the SN65DSI83 cannot detect.
## 2. Trend Analysis Across All 30 Captures
### HS Signal Quality — Stable, No Degradation
| Parameter | Range | Trend |
|---|---|---|
| CLK Vdiff | 175.4–177.9 mV | Rock-steady, no drift |
| DAT Vdiff | 177.5–223.2 mV | Stable (222 mV outlier in 0322 likely capture artifact) |
| CLK jitter p-p | 94.8–149.6 ps | Random variation, no trend |
| CLK jitter RMS | 25.6–29.7 ps | Stable |
| Rise times | 133.8–153.4 ps | Stable, well within spec |
| Clock frequency | 215.82–216.12 MHz | ±0.1%, excellent |
HS signal quality is not the problem. Once HS mode is established, the link runs perfectly — consistent with the observed bistable behavior.
### LP-11 Voltage — Stable But Low
- Range: 1.014–1.016 V across all captures
- MIPI D-PHY spec: VIH(LP) > 880 mV at receiver; transmitter spec is VDDIO × 0.55 to VDDIO
- At VDDIO = 1.8 V: expected LP-high ≈ 1.08–1.2 V typical
- Measured 1.015 V is 56% of VDDIO — at the absolute floor of the transmitter output spec
- Not causing the flicker (SN65DSI83 VIH threshold is ~880 mV, so 1.015 V is detected), but indicates the LP driver is marginally biased, possibly related to the same timing register misconfiguration affecting LP driver enable timing.
### 1.8 V Supply — Healthy, Not Correlated
| Parameter | Range |
|---|---|
| Mean | 1.7631–1.7685 V |
| Min | 1.7480–1.7600 V |
| Droop | 7.1–16.2 mV |
| Ripple RMS | 4.89–5.70 mV |
No correlation between supply droop and flicker events:
- Flicker capture 0304: droop 8.0 mV (below average)
- Flicker capture 0324: droop 8.3 mV (average)
- Good capture 0321: droop 15.6 mV (worst in batch)
- Good capture 0330: droop 16.2 mV (worst in batch)
The supply is healthy and not a contributing factor.
## 3. Anomaly Flags
### A. LP-Low Plateau Absent on All Flicker Captures
| Capture | LP-low (ns) | Flicker? | LP exit→HS (ns) |
|---|---|---|---|
| 0304 | 0 | YES | 2 |
| 0308 | 0 | YES | 3 |
| 0315 | 0 | YES | 4 |
| 0318 | 0 | YES | 2 |
| 0324 | 0 | YES | 2 |
| 0328 | N/A | YES | N/A |
| 0303 | 343 | no | 3 |
| 0325 | 342 | no | 348 ✓ |
| 0331 | 343 | no | 348 ✓ |
Note: Captures 0325 and 0331 are the only two captures where `LP exit → HS` was measured at a spec-compliant 348 ns. These represent the PHY "getting lucky" with internal timing — the same registers produce wildly different observable timing on the wire.
### B. Capture 0328 — Severely Degenerate SoT
- Two HS bursts (avg 2508 ns each) instead of the normal single 5020 ns burst — the bridge attempted and failed to sync, causing the PHY to re-try
- HS amplitude 3 mV — essentially no HS signal detected on data lane
- sig/dat: 0 mV — DAT0 never entered HS properly
- This is the most severe flicker event: the SoT was so badly malformed that the data lane never achieved HS at all during the capture window
### C. Systematic "Only Negative Swings" on sig/dat
Approximately 70% of captures show only negative differential swings on the data lane high-res capture. This is a probe/trigger alignment artifact — the scope is capturing during blanking intervals where the data lane transmits a consistent pattern. Not a signal integrity concern.
### D. Samples Below 140 mV — Data Lane ISI
The proto/dat captures consistently show 82–10,171 samples below 140 mV minimum Vdiff. This is inter-symbol interference (ISI) during transitions between different bit patterns at 432 Mbit/s. The clock lane (which has a fixed 50/50 pattern) shows far fewer violations. This is a board-level impedance/termination concern but is not correlated with flicker — it affects eye margin during sustained HS, not SoT detection.
## 4. Supply Correlation Assessment
No correlation exists. Statistical analysis:
- Flicker events droop: 7.1, 8.0, 8.3, 8.4, 8.5, 9.0 mV (mean 8.4 mV)
- Good events droop: 7.5–16.2 mV (mean 8.8 mV)
- Ripple RMS is virtually identical across all captures (4.89–5.70 mV)
The 1.8 V supply is not the trigger. The root cause is entirely in the PHY timing registers.
## 5. Warning/Error Explanations
| Warning | Cause | Action |
|---|---|---|
| `LP exit duration X ns below spec min 50 ns` | THS_PREPARE + THS_ZERO too short in registers — PHY collapses LP→HS states | Fix PHYTIMING registers |
| `CLK lane in continuous HS mode` | Normal for Video Mode DSI — CLK runs HS continuously | None needed |
| `Only negative swings in capture window` | Scope triggered during blanking line with constant pattern | Benign — adjust trigger for mixed patterns if needed |
| `No HS signal detected` (sig/dat, captures 0311, 0315, 0323, 0328) | Scope captured during LP or V-blank gap | Benign for 0311/0323; for 0315/0328 (flicker), DAT never entered HS properly |
| `Settled samples below 140 mV` | ISI on data transitions; impedance mismatch on PCB | Review termination; not flicker root cause |
| `[lp_dat] ERROR: index out of bounds` (0312) | Processing script edge case — LP capture truncated | Improve script bounds checking |
## 6. Actionable Recommendations
### PRIORITY 1 — Fix PHY Timing Registers (Root Cause)
The samsung-dsim driver is computing wrong values for 432 Mbit/s. Apply the target values via one of:
Option A: Device Tree override (preferred, no kernel rebuild)
```dts
&mipi_dsi {
samsung,phy-timing = <0x00000306>;
samsung,phy-timing1 = <0x03110a04>;
samsung,phy-timing2 = <0x00040a03>;
};
```
Option B: Kernel driver patch — Fix the `samsung_dsim_set_phy_timing()` calculation in `drivers/gpu/drm/bridge/samsung-dsim.c`. The current algorithm underestimates multiple fields at this bit rate. Specific field corrections needed:
| Field | Current | Required | Byte-clock units |
|---|---|---|---|
| THS_EXIT | 5 | 6 | +1 |
| TCLK_PREPARE | 2 | 3 | +1 |
| TCLK_ZERO | 14 (0x0e) | 17 (0x11) | +3 |
| TCLK_TRAIL | 3 | 4 | +1 |
| THS_ZERO | 6 | 10 (0x0a) | +4 ← critical |
| THS_TRAIL | 3 | 4 | +1 |
| THS_PREPARE | 5 | 3 | −2 (currently over-counting) |
### PRIORITY 2 — Add Margin to THS_ZERO
Even the target value of THS_ZERO=10 (185 ns) provides only 10% margin over the 168 ns spec minimum. For a bridge chip with known sensitivity, consider:
```
THS_ZERO = 12 → 222 ns (32% margin)
```
This eliminates the intermittent SoT failure entirely at the cost of ~37 ns added latency per line — negligible.
### PRIORITY 3 — Investigate LP-11 Voltage
LP-11 at 1.015 V (56% of 1.8 V VDDIO) is lower than typical (~65–70%). Check:
- Series resistors on LP lines (some designs add 200–300 Ω for ESD; verify values)
- SN65DSI83 input termination bias — it may be loading the LP drivers
- VDDIO accuracy at the PHY pins (not just at the regulator output)
### PRIORITY 4 — PCB Signal Integrity for ISI
The persistent below-140 mV samples on the data lane suggest impedance mismatch. For future board revisions:
- Verify 100 Ω differential impedance on MIPI traces
- Check connector stub length if using FPC
- Add/verify 100 Ω differential termination at SN65DSI83 inputs
## 7. Overall Assessment
The flicker root cause is definitively identified: the samsung-dsim PHY timing registers are programmed with values that violate MIPI D-PHY v1.1 minimum timing on six of seven critical parameters, most severely THS_ZERO (111 ns vs. 168 ns minimum). This causes the data lane SoT sequence to be too short for the SN65DSI83 to reliably detect, producing a 20% failure rate at pipeline startup that manifests as the observed bistable flicker behavior. The 1.8 V supply, HS signal quality, and LP-11 voltage are not contributing factors.
Correcting the three PHYTIMING registers to their target values will eliminate the flicker. The fix is a single device-tree or driver change with no hardware modification required. Adding extra margin to THS_ZERO (value 12 instead of 10) is recommended given the bridge chip's sensitivity and the observed zero-margin failure mode.
Tokens: 33977 in / 3728 out