* [PATCH v1 1/5] drm/panel: r61307: align with schema property
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
@ 2026-02-15 8:51 ` Svyatoslav Ryhel
2026-02-15 10:24 ` Claude review: " Claude Code Review Bot
2026-02-15 8:51 ` [PATCH v1 2/5] drm/panel: r61307/r69328: convert to drm_connector_helper_get_modes_fixed Svyatoslav Ryhel
` (4 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Svyatoslav Ryhel @ 2026-02-15 8:51 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Svyatoslav Ryhel
Cc: dri-devel, linux-kernel
Rename renesas,inversion to renesas,column-inversion according to schema.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
drivers/gpu/drm/panel/panel-renesas-r61307.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-renesas-r61307.c b/drivers/gpu/drm/panel/panel-renesas-r61307.c
index 319415194839..873ef856184b 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r61307.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r61307.c
@@ -259,7 +259,7 @@ static int renesas_r61307_probe(struct mipi_dsi_device *dsi)
return dev_err_probe(dev, PTR_ERR(priv->reset_gpio),
"Failed to get reset gpios\n");
- if (device_property_read_bool(dev, "renesas,inversion"))
+ if (device_property_read_bool(dev, "renesas,column-inversion"))
priv->inversion = true;
if (device_property_read_bool(dev, "renesas,contrast"))
--
2.51.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Claude review: drm/panel: r61307: align with schema property
2026-02-15 8:51 ` [PATCH v1 1/5] drm/panel: r61307: align with schema property Svyatoslav Ryhel
@ 2026-02-15 10:24 ` Claude Code Review Bot
0 siblings, 0 replies; 12+ messages in thread
From: Claude Code Review Bot @ 2026-02-15 10:24 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
Single line change: renames `"renesas,inversion"` to `"renesas,column-inversion"` in `device_property_read_bool()`.
The DT binding schema (`Documentation/devicetree/bindings/display/panel/renesas,r61307.yaml` line 45) already specifies `renesas,column-inversion`. No in-tree DTS files use either property name (`grep` across `*.dts*` returns no matches). The rename aligns the driver with the documented binding.
No regressions.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v1 2/5] drm/panel: r61307/r69328: convert to drm_connector_helper_get_modes_fixed
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
2026-02-15 8:51 ` [PATCH v1 1/5] drm/panel: r61307: align with schema property Svyatoslav Ryhel
@ 2026-02-15 8:51 ` Svyatoslav Ryhel
2026-02-15 10:24 ` Claude review: " Claude Code Review Bot
2026-02-15 8:51 ` [PATCH v1 3/5] drm/panel: r61307/r69328: remove redundant checks Svyatoslav Ryhel
` (3 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Svyatoslav Ryhel @ 2026-02-15 8:51 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Svyatoslav Ryhel
Cc: dri-devel, linux-kernel
Switch to use of drm_connector_helper_get_modes_fixed helper for get_modes
operation.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
drivers/gpu/drm/panel/Kconfig | 2 ++
drivers/gpu/drm/panel/panel-renesas-r61307.c | 17 +++--------------
drivers/gpu/drm/panel/panel-renesas-r69328.c | 17 +++--------------
3 files changed, 8 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index 477c54c90b01..47de5f6a9143 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -700,6 +700,7 @@ config DRM_PANEL_RENESAS_R61307
depends on OF
depends on DRM_MIPI_DSI
depends on BACKLIGHT_CLASS_DEVICE
+ select VIDEOMODE_HELPERS
help
Say Y here if you want to enable support for KOE tx13d100vm0eaa
IPS-LCD module with Renesas R69328 IC. The panel has a 1024x768
@@ -713,6 +714,7 @@ config DRM_PANEL_RENESAS_R69328
depends on OF
depends on DRM_MIPI_DSI
depends on BACKLIGHT_CLASS_DEVICE
+ select VIDEOMODE_HELPERS
help
Say Y here if you want to enable support for JDI dx12d100vm0eaa
IPS-LCD module with Renesas R69328 IC. The panel has a 720x1280
diff --git a/drivers/gpu/drm/panel/panel-renesas-r61307.c b/drivers/gpu/drm/panel/panel-renesas-r61307.c
index 873ef856184b..45afa44af114 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r61307.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r61307.c
@@ -14,6 +14,7 @@
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
+#include <drm/drm_probe_helper.h>
#define R61307_MACP 0xb0 /* Manufacturer CMD Protect */
#define R61307_MACP_ON 0x03
@@ -202,25 +203,13 @@ static const struct drm_display_mode renesas_r61307_mode = {
.vtotal = 1024 + 24 + 8 + 2,
.width_mm = 76,
.height_mm = 101,
+ .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
};
static int renesas_r61307_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{
- struct drm_display_mode *mode;
-
- mode = drm_mode_duplicate(connector->dev, &renesas_r61307_mode);
- if (!mode)
- return -ENOMEM;
-
- drm_mode_set_name(mode);
-
- mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
- connector->display_info.width_mm = mode->width_mm;
- connector->display_info.height_mm = mode->height_mm;
- drm_mode_probed_add(connector, mode);
-
- return 1;
+ return drm_connector_helper_get_modes_fixed(connector, &renesas_r61307_mode);
}
static const struct drm_panel_funcs renesas_r61307_panel_funcs = {
diff --git a/drivers/gpu/drm/panel/panel-renesas-r69328.c b/drivers/gpu/drm/panel/panel-renesas-r69328.c
index 46287ab04c30..b40bfd702fac 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r69328.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r69328.c
@@ -14,6 +14,7 @@
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
+#include <drm/drm_probe_helper.h>
#define R69328_MACP 0xb0 /* Manufacturer Access CMD Protect */
#define R69328_MACP_ON 0x03
@@ -167,25 +168,13 @@ static const struct drm_display_mode renesas_r69328_mode = {
.vtotal = 1280 + 6 + 3 + 1,
.width_mm = 59,
.height_mm = 105,
+ .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
};
static int renesas_r69328_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{
- struct drm_display_mode *mode;
-
- mode = drm_mode_duplicate(connector->dev, &renesas_r69328_mode);
- if (!mode)
- return -ENOMEM;
-
- drm_mode_set_name(mode);
-
- mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
- connector->display_info.width_mm = mode->width_mm;
- connector->display_info.height_mm = mode->height_mm;
- drm_mode_probed_add(connector, mode);
-
- return 1;
+ return drm_connector_helper_get_modes_fixed(connector, &renesas_r69328_mode);
}
static const struct drm_panel_funcs renesas_r69328_panel_funcs = {
--
2.51.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Claude review: drm/panel: r61307/r69328: convert to drm_connector_helper_get_modes_fixed
2026-02-15 8:51 ` [PATCH v1 2/5] drm/panel: r61307/r69328: convert to drm_connector_helper_get_modes_fixed Svyatoslav Ryhel
@ 2026-02-15 10:24 ` Claude Code Review Bot
0 siblings, 0 replies; 12+ messages in thread
From: Claude Code Review Bot @ 2026-02-15 10:24 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
Replaces hand-rolled `get_modes` implementations with `drm_connector_helper_get_modes_fixed()`. Adds `select VIDEOMODE_HELPERS` to Kconfig and `#include <drm/drm_probe_helper.h>`.
The helper (`drm_probe_helper.c:1158`) performs the same operations:
- `drm_mode_duplicate()`
- `drm_mode_set_name()` (conditionally, if name is empty)
- ORs `DRM_MODE_TYPE_PREFERRED` onto `mode->type`
- Sets `display_info.width_mm/height_mm` from the mode
- `drm_mode_probed_add()`
The `.type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED` is moved into the static mode struct. The helper's `mode->type |= DRM_MODE_TYPE_PREFERRED` is idempotent since PREFERRED is already set. The helper returns 0 on failure instead of -ENOMEM, but `drm_panel_get_modes()` already clamps negative returns to 0.
No regressions.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v1 3/5] drm/panel: r61307/r69328: remove redundant checks
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
2026-02-15 8:51 ` [PATCH v1 1/5] drm/panel: r61307: align with schema property Svyatoslav Ryhel
2026-02-15 8:51 ` [PATCH v1 2/5] drm/panel: r61307/r69328: convert to drm_connector_helper_get_modes_fixed Svyatoslav Ryhel
@ 2026-02-15 8:51 ` Svyatoslav Ryhel
2026-02-15 10:24 ` Claude review: " Claude Code Review Bot
2026-02-15 8:51 ` [PATCH v1 4/5] drm/panel: r61307/r69328: return accumulated errors Svyatoslav Ryhel
` (2 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Svyatoslav Ryhel @ 2026-02-15 8:51 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Svyatoslav Ryhel
Cc: dri-devel, linux-kernel
This is now done by the DRM framework itself.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
drivers/gpu/drm/panel/panel-renesas-r61307.c | 10 ----------
drivers/gpu/drm/panel/panel-renesas-r69328.c | 10 ----------
2 files changed, 20 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-renesas-r61307.c b/drivers/gpu/drm/panel/panel-renesas-r61307.c
index 45afa44af114..2cc3bd66d6d4 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r61307.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r61307.c
@@ -35,8 +35,6 @@ struct renesas_r61307 {
struct gpio_desc *reset_gpio;
- bool prepared;
-
bool dig_cont_adj;
bool inversion;
u32 gamma;
@@ -92,9 +90,6 @@ static int renesas_r61307_prepare(struct drm_panel *panel)
struct device *dev = &priv->dsi->dev;
int ret;
- if (priv->prepared)
- return 0;
-
ret = regulator_enable(priv->vcc_supply);
if (ret) {
dev_err(dev, "failed to enable vcc power supply\n");
@@ -113,7 +108,6 @@ static int renesas_r61307_prepare(struct drm_panel *panel)
renesas_r61307_reset(priv);
- priv->prepared = true;
return 0;
}
@@ -175,9 +169,6 @@ static int renesas_r61307_unprepare(struct drm_panel *panel)
{
struct renesas_r61307 *priv = to_renesas_r61307(panel);
- if (!priv->prepared)
- return 0;
-
usleep_range(10000, 11000);
gpiod_set_value_cansleep(priv->reset_gpio, 1);
@@ -187,7 +178,6 @@ static int renesas_r61307_unprepare(struct drm_panel *panel)
usleep_range(2000, 3000);
regulator_disable(priv->vcc_supply);
- priv->prepared = false;
return 0;
}
diff --git a/drivers/gpu/drm/panel/panel-renesas-r69328.c b/drivers/gpu/drm/panel/panel-renesas-r69328.c
index b40bfd702fac..b5fe127634ae 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r69328.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r69328.c
@@ -33,8 +33,6 @@ struct renesas_r69328 {
struct regulator *vdd_supply;
struct regulator *vddio_supply;
struct gpio_desc *reset_gpio;
-
- bool prepared;
};
static inline struct renesas_r69328 *to_renesas_r69328(struct drm_panel *panel)
@@ -56,9 +54,6 @@ static int renesas_r69328_prepare(struct drm_panel *panel)
struct device *dev = &priv->dsi->dev;
int ret;
- if (priv->prepared)
- return 0;
-
ret = regulator_enable(priv->vdd_supply);
if (ret) {
dev_err(dev, "failed to enable vdd power supply\n");
@@ -77,7 +72,6 @@ static int renesas_r69328_prepare(struct drm_panel *panel)
renesas_r69328_reset(priv);
- priv->prepared = true;
return 0;
}
@@ -142,9 +136,6 @@ static int renesas_r69328_unprepare(struct drm_panel *panel)
{
struct renesas_r69328 *priv = to_renesas_r69328(panel);
- if (!priv->prepared)
- return 0;
-
gpiod_set_value_cansleep(priv->reset_gpio, 1);
usleep_range(5000, 6000);
@@ -152,7 +143,6 @@ static int renesas_r69328_unprepare(struct drm_panel *panel)
regulator_disable(priv->vddio_supply);
regulator_disable(priv->vdd_supply);
- priv->prepared = false;
return 0;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Claude review: drm/panel: r61307/r69328: remove redundant checks
2026-02-15 8:51 ` [PATCH v1 3/5] drm/panel: r61307/r69328: remove redundant checks Svyatoslav Ryhel
@ 2026-02-15 10:24 ` Claude Code Review Bot
0 siblings, 0 replies; 12+ messages in thread
From: Claude Code Review Bot @ 2026-02-15 10:24 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
Removes the `bool prepared` field and `if (priv->prepared)` / `if (!priv->prepared)` guards from prepare/unprepare. The commit message states "This is now done by the DRM framework itself."
Verified: `drm_panel_prepare()` (drm_panel.c:122) checks `panel->prepared` and skips if already true, sets it to true after the callback succeeds. `drm_panel_unprepare()` (drm_panel.c:177) checks `!panel->prepared` and skips if already false. The framework tracking is equivalent to the removed driver-level tracking.
No regressions.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v1 4/5] drm/panel: r61307/r69328: return accumulated errors
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
` (2 preceding siblings ...)
2026-02-15 8:51 ` [PATCH v1 3/5] drm/panel: r61307/r69328: remove redundant checks Svyatoslav Ryhel
@ 2026-02-15 8:51 ` Svyatoslav Ryhel
2026-02-15 10:24 ` Claude review: " Claude Code Review Bot
2026-02-15 8:51 ` [PATCH v1 5/5] drm/panel: r61307/r69328: convert to devm_mipi_dsi_attach Svyatoslav Ryhel
2026-02-15 9:01 ` Claude review: None Claude Code Review Bot
5 siblings, 1 reply; 12+ messages in thread
From: Svyatoslav Ryhel @ 2026-02-15 8:51 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Svyatoslav Ryhel
Cc: dri-devel, linux-kernel
Return accumulated errors from dsi function calls.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
drivers/gpu/drm/panel/panel-renesas-r61307.c | 4 ++--
drivers/gpu/drm/panel/panel-renesas-r69328.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-renesas-r61307.c b/drivers/gpu/drm/panel/panel-renesas-r61307.c
index 2cc3bd66d6d4..70bda074dd0d 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r61307.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r61307.c
@@ -150,7 +150,7 @@ static int renesas_r61307_enable(struct drm_panel *panel)
mipi_dsi_dcs_set_display_on_multi(&ctx);
mipi_dsi_msleep(&ctx, 50);
- return 0;
+ return ctx.accum_err;
}
static int renesas_r61307_disable(struct drm_panel *panel)
@@ -162,7 +162,7 @@ static int renesas_r61307_disable(struct drm_panel *panel)
mipi_dsi_msleep(&ctx, 100);
mipi_dsi_dcs_enter_sleep_mode_multi(&ctx);
- return 0;
+ return ctx.accum_err;
}
static int renesas_r61307_unprepare(struct drm_panel *panel)
diff --git a/drivers/gpu/drm/panel/panel-renesas-r69328.c b/drivers/gpu/drm/panel/panel-renesas-r69328.c
index b5fe127634ae..0ed143f77e50 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r69328.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r69328.c
@@ -117,7 +117,7 @@ static int renesas_r69328_enable(struct drm_panel *panel)
mipi_dsi_dcs_set_display_on_multi(&ctx);
mipi_dsi_msleep(&ctx, 50);
- return 0;
+ return ctx.accum_err;
}
static int renesas_r69328_disable(struct drm_panel *panel)
@@ -129,7 +129,7 @@ static int renesas_r69328_disable(struct drm_panel *panel)
mipi_dsi_msleep(&ctx, 60);
mipi_dsi_dcs_enter_sleep_mode_multi(&ctx);
- return 0;
+ return ctx.accum_err;
}
static int renesas_r69328_unprepare(struct drm_panel *panel)
--
2.51.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH v1 5/5] drm/panel: r61307/r69328: convert to devm_mipi_dsi_attach
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
` (3 preceding siblings ...)
2026-02-15 8:51 ` [PATCH v1 4/5] drm/panel: r61307/r69328: return accumulated errors Svyatoslav Ryhel
@ 2026-02-15 8:51 ` Svyatoslav Ryhel
2026-02-15 10:24 ` Claude review: " Claude Code Review Bot
2026-02-15 9:01 ` Claude review: None Claude Code Review Bot
5 siblings, 1 reply; 12+ messages in thread
From: Svyatoslav Ryhel @ 2026-02-15 8:51 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Svyatoslav Ryhel
Cc: dri-devel, linux-kernel
Switch to device managed version of mipi_dsi_attach.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
drivers/gpu/drm/panel/panel-renesas-r61307.c | 7 +------
drivers/gpu/drm/panel/panel-renesas-r69328.c | 7 +------
2 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-renesas-r61307.c b/drivers/gpu/drm/panel/panel-renesas-r61307.c
index 70bda074dd0d..d8185cc1b5d6 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r61307.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r61307.c
@@ -261,7 +261,7 @@ static int renesas_r61307_probe(struct mipi_dsi_device *dsi)
drm_panel_add(&priv->panel);
- ret = mipi_dsi_attach(dsi);
+ ret = devm_mipi_dsi_attach(dev, dsi);
if (ret) {
drm_panel_remove(&priv->panel);
return dev_err_probe(dev, ret, "Failed to attach to DSI host\n");
@@ -273,11 +273,6 @@ static int renesas_r61307_probe(struct mipi_dsi_device *dsi)
static void renesas_r61307_remove(struct mipi_dsi_device *dsi)
{
struct renesas_r61307 *priv = mipi_dsi_get_drvdata(dsi);
- int ret;
-
- ret = mipi_dsi_detach(dsi);
- if (ret)
- dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret);
drm_panel_remove(&priv->panel);
}
diff --git a/drivers/gpu/drm/panel/panel-renesas-r69328.c b/drivers/gpu/drm/panel/panel-renesas-r69328.c
index 0ed143f77e50..bfe2787f8f53 100644
--- a/drivers/gpu/drm/panel/panel-renesas-r69328.c
+++ b/drivers/gpu/drm/panel/panel-renesas-r69328.c
@@ -217,7 +217,7 @@ static int renesas_r69328_probe(struct mipi_dsi_device *dsi)
drm_panel_add(&priv->panel);
- ret = mipi_dsi_attach(dsi);
+ ret = devm_mipi_dsi_attach(dev, dsi);
if (ret) {
drm_panel_remove(&priv->panel);
return dev_err_probe(dev, ret, "Failed to attach to DSI host\n");
@@ -229,11 +229,6 @@ static int renesas_r69328_probe(struct mipi_dsi_device *dsi)
static void renesas_r69328_remove(struct mipi_dsi_device *dsi)
{
struct renesas_r69328 *priv = mipi_dsi_get_drvdata(dsi);
- int ret;
-
- ret = mipi_dsi_detach(dsi);
- if (ret)
- dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret);
drm_panel_remove(&priv->panel);
}
--
2.51.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Claude review: drm/panel: r61307/r69328: convert to devm_mipi_dsi_attach
2026-02-15 8:51 ` [PATCH v1 5/5] drm/panel: r61307/r69328: convert to devm_mipi_dsi_attach Svyatoslav Ryhel
@ 2026-02-15 10:24 ` Claude Code Review Bot
0 siblings, 0 replies; 12+ messages in thread
From: Claude Code Review Bot @ 2026-02-15 10:24 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
Replaces `mipi_dsi_attach()` / manual `mipi_dsi_detach()` with `devm_mipi_dsi_attach()`. The manual detach in `remove()` is deleted.
Ordering is correct: the `remove()` callback (which calls `drm_panel_remove()`) executes before devm cleanup (which calls `mipi_dsi_detach()`), maintaining the same order as the original code. This is the standard pattern used by many panel drivers (e.g., panel-samsung-ams581vf01, panel-magnachip-d53e6ea8966, panel-lg-ld070wx3).
No regressions.
---
FINAL REGRESSIONS FOUND: 0
False positives eliminated:
- `drm_connector_helper_get_modes_fixed` returning 0 vs -ENOMEM: framework clamps negative returns to 0 in `drm_panel_get_modes()`
- Double-OR of `DRM_MODE_TYPE_PREFERRED`: idempotent bit operation
- devm cleanup ordering: `remove()` runs before devm teardown, preserving correct order
- DT property rename breaking users: no in-tree DTS files use either name
---
`review-metadata.json` content (could not write due to permissions):
```json
{
"author": "Svyatoslav Ryhel <clamor95@gmail.com>",
"sha": "c0c75a7fd8740..5d718d96a1186",
"subject": "drm/panel: r61307/r69328: modernization series",
"AI-authorship-score": "low",
"AI-authorship-explanation": "Mechanical driver cleanup by a known panel driver contributor, following standard kernel modernization patterns with terse commit messages.",
"issues-found": 0,
"issue-severity-score": "low",
"issue-severity-explanation": "none"
}
```
FINAL TOKENS USED: ~45000 (estimated)
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 12+ messages in thread
* Claude review: None
2026-02-15 8:51 [PATCH v1 0/5] drm/panel: r61307/r69328: minor updates Svyatoslav Ryhel
` (4 preceding siblings ...)
2026-02-15 8:51 ` [PATCH v1 5/5] drm/panel: r61307/r69328: convert to devm_mipi_dsi_attach Svyatoslav Ryhel
@ 2026-02-15 9:01 ` Claude Code Review Bot
5 siblings, 0 replies; 12+ messages in thread
From: Claude Code Review Bot @ 2026-02-15 9:01 UTC (permalink / raw)
To: dri-devel-reviews
Overall Series Review
Subject: None
Author: None
Patches: 0
Reviewed: 2026-02-15T19:01:01.789602
---
This 8-patch series adds batch userptr allocation support to amdkfd, allowing multiple non-contiguous CPU virtual address ranges to be mapped to a single contiguous GPU virtual address space via the existing `AMDKFD_IOC_ALLOC_MEMORY_OF_GPU` ioctl. The design uses a single MMU interval notifier covering the VA span with an interval tree for efficient range lookup during invalidation callbacks, which is a sound architectural choice.
The series has several significant issues that need addressing before it can be merged. The most critical are: (1) missing upper bound on `num_ranges` from userspace, allowing excessive kernel memory allocation; (2) the return value of `set_user_pages_batch()` is silently ignored in `init_user_pages_batch()`, which could lead to `ttm_bo_validate` operating on a corrupt pages array; (3) the error paths in `amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu_batch()` leak the mem limit reservation when `drm_vma_node_allow()` or `drm_gem_handle_create()` fails; and (4) the `size` parameter of `init_user_pages_batch()` is `uint32_t` but receives a `uint64_t` value, silently truncating sizes above 4GB.
Additionally, the patch references functions (`amdgpu_ttm_tt_get_user_pages_done`, `amdgpu_ttm_tt_discard_user_pages`) and uses types (`struct hmm_range *` in `user_range_info`) that do not match the upstream kernel tree's API (`amdgpu_hmm_range_alloc`/`amdgpu_hmm_range_free`, `struct amdgpu_hmm_range *`). This suggests the series was developed against an AMD staging tree with a different internal API, and needs reconciliation for upstream submission.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 12+ messages in thread