Commit 7ba76a9
committed
drm/panel: waveshare-dsi: Add I2C retry logic for cold boot reliability
The Waveshare DSI panel driver can fail to initialize on cold boot with
"I2C write failed: -5" (EIO) errors. This occurs because the panel
controller requires time to stabilize after power-up, but the driver
attempts I2C communication immediately after obtaining the handle.
Warm boots succeed because residual controller state keeps it responsive.
Cold boots after extended power-off periods fail intermittently depending
on timing conditions (ambient temperature, power supply characteristics).
Add defensive initialization:
- 100ms stabilization delay before first I2C write in probe
- Retry logic (3 attempts, 50ms between retries) for I2C writes
- Return value propagation from ws_panel_i2c_write
These patterns follow established practice in production embedded panel
drivers and resolve the cold boot initialization race.
Signed-off-by: Andrew Seredyn <[email protected]>1 parent a107374 commit 7ba76a9
File tree
1 file changed
+18
-5
lines changed- drivers/gpu/drm/panel
1 file changed
+18
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
27 | 31 | | |
28 | 32 | | |
29 | 33 | | |
| |||
329 | 333 | | |
330 | 334 | | |
331 | 335 | | |
332 | | - | |
| 336 | + | |
333 | 337 | | |
334 | | - | |
| 338 | + | |
335 | 339 | | |
336 | | - | |
337 | | - | |
338 | | - | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
339 | 349 | | |
340 | 350 | | |
341 | 351 | | |
| |||
479 | 489 | | |
480 | 490 | | |
481 | 491 | | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
482 | 495 | | |
483 | 496 | | |
484 | 497 | | |
| |||
0 commit comments