From: Claude Code Review Bot <claude-review@example.com>
To: dri-devel-reviews@example.com
Subject: Claude review: drm/panel: Add Ilitek ILI9488 controller driver
Date: Thu, 28 May 2026 12:40:41 +1000 [thread overview]
Message-ID: <review-patch2-20260527062300.88928-3-igor@reznichenko.net> (raw)
In-Reply-To: <20260527062300.88928-3-igor@reznichenko.net>
Patch Review
**Structure and patterns — good:**
- Uses `devm_drm_panel_alloc()` (modern pattern, matches ILI9805).
- Uses `mipi_dsi_multi_context` for the init sequence (correct modern approach).
- Uses `drm_connector_helper_get_modes_fixed()` instead of manual `drm_mode_duplicate` + `drm_mode_probed_add` (cleaner than ILI9805).
- Panel descriptor pattern allows future ILI9488-based panels with different timings to be added easily.
**Mode timing — correct:**
```c
.clock = 14400,
.htotal = 320 + 60 + 20 + 42, /* = 442 */
.vtotal = 480 + 20 + 10 + 33, /* = 543 */
```
14400000 / (442 × 543) = ~59.97 Hz. Sensible for a 60 Hz panel.
**Init sequence — minor observation on command 0x21:**
```c
mipi_dsi_dcs_write_seq_multi(ctx, 0x21, 0x00);
```
DCS command 0x21 (`set_display_inversion_on`) is defined as a no-parameter command per the MIPI DCS spec. The extra `0x00` data byte is likely harmless (the panel probably ignores it), but could be simplified to just the command byte. This is likely copied from the vendor's reference init code, so it's fine to leave as-is.
**Reset sequence — correct:**
```c
gpiod_set_value_cansleep(ili->reset, 0); /* deassert */
usleep_range(1000, 5000);
gpiod_set_value_cansleep(ili->reset, 1); /* assert reset */
usleep_range(1000, 5000);
gpiod_set_value_cansleep(ili->reset, 0); /* deassert */
usleep_range(5000, 10000);
```
Standard reset pulse pattern — deassert, pulse assert, deassert. Uses `_cansleep` variant which is safer than the ILI9805's non-cansleep version (since the GPIO controller might be on an I2C/SPI bus).
**Unprepare — deactivate error ignored:**
```c
static int ili9488_unprepare(struct drm_panel *panel)
{
struct ili9488 *ili = panel_to_ili9488(panel);
struct mipi_dsi_device *dsi = ili->dsi;
int ret;
ili9488_deactivate(ili);
ret = ili9488_power_off(ili);
```
The return value from `ili9488_deactivate()` is silently discarded. This is reasonable — you still want to power off even if the display-off/sleep-in commands fail — but a `dev_warn` on failure would be helpful for debugging. Not a blocking issue.
**Probe ordering — correct:**
```c
ili->panel.prepare_prev_first = true;
drm_panel_add(&ili->panel);
ret = mipi_dsi_attach(dsi);
if (ret < 0) {
dev_err_probe(dev, ret, "failed to attach to DSI host\n");
drm_panel_remove(&ili->panel);
return ret;
}
```
The `drm_panel_add` before `mipi_dsi_attach` with rollback on failure is the correct ordering.
**MAINTAINERS entry — correct:**
```
+DRM DRIVER FOR ILITEK ILI9488 PANELS
+M: Igor Reznichenko <igor@reznichenko.net>
+S: Maintained
+F: Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml
+F: drivers/gpu/drm/panel/panel-ilitek-ili9488.c
```
Missing a `T:` (git tree) line, but this is common for new drivers that go through drm-misc. Not required.
**Overall for patch 2:** Clean driver, no correctness bugs found. Ready for merge with the minor nits above optionally addressed.
---
Generated by Claude Code Patch Reviewer
next prev parent reply other threads:[~2026-05-28 2:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-27 6:22 [PATCH v4 0/2] drm/panel: Add support for the FocusLCDs E35GH-I-MW800CB Igor Reznichenko
2026-05-27 6:22 ` [PATCH v4 1/2] dt-bindings: display: panel: Add Ilitek ILI9488 panel controller Igor Reznichenko
2026-05-28 2:40 ` Claude review: " Claude Code Review Bot
2026-05-27 6:23 ` [PATCH v4 2/2] drm/panel: Add Ilitek ILI9488 controller driver Igor Reznichenko
2026-05-28 2:40 ` Claude Code Review Bot [this message]
2026-05-28 2:40 ` Claude review: drm/panel: Add support for the FocusLCDs E35GH-I-MW800CB Claude Code Review Bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=review-patch2-20260527062300.88928-3-igor@reznichenko.net \
--to=claude-review@example.com \
--cc=dri-devel-reviews@example.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox