* [PATCH 0/3] drm/panel: visionox-rm69299: Add backlight support and small fixes @ 2025-09-01 14:22 Guido Günther 2025-09-01 14:22 ` [PATCH 1/3] drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq Guido Günther ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Guido Günther @ 2025-09-01 14:22 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel, Guido Günther This adds optional backlight support via DSI commands. If a max_brightness is set in the panel description the backlight is created. While at that we fold in the already sent out clock fix and a fix that prevents us from clearing all mode flags when we only want HS mode. Signed-off-by: Guido Günther <agx@sigxcpu.org> --- Guido Günther (3): drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq drm/panel: visionox-rm69299: Don't clear all mode flags drm/panel: visionox-rm69299: Add backlight support drivers/gpu/drm/panel/panel-visionox-rm69299.c | 71 +++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) --- base-commit: b320789d6883cc00ac78ce83bccbfe7ed58afcf0 change-id: 20250901-shift6mq-panel-959b3087ecd2 Best regards, -- Guido Günther <agx@sigxcpu.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq 2025-09-01 14:22 [PATCH 0/3] drm/panel: visionox-rm69299: Add backlight support and small fixes Guido Günther @ 2025-09-01 14:22 ` Guido Günther 2025-09-01 14:22 ` [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags Guido Günther 2025-09-01 14:22 ` [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support Guido Günther 2 siblings, 0 replies; 7+ messages in thread From: Guido Günther @ 2025-09-01 14:22 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel, Guido Günther Make the clock frequency match what the sdm845 downstream kernel uses. Otherwise the panel stays black. Signed-off-by: Guido Günther <agx@sigxcpu.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> --- drivers/gpu/drm/panel/panel-visionox-rm69299.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c index 909c280eab1fb408a713d84051a1afbb252c45e8..e65697ce6f51c7d64b786da18cf44b16de5d6919 100644 --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c @@ -247,7 +247,7 @@ static const struct drm_display_mode visionox_rm69299_1080x2248_60hz = { }; static const struct drm_display_mode visionox_rm69299_1080x2160_60hz = { - .clock = 158695, + .clock = 149360, .hdisplay = 1080, .hsync_start = 1080 + 26, .hsync_end = 1080 + 26 + 2, -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags 2025-09-01 14:22 [PATCH 0/3] drm/panel: visionox-rm69299: Add backlight support and small fixes Guido Günther 2025-09-01 14:22 ` [PATCH 1/3] drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq Guido Günther @ 2025-09-01 14:22 ` Guido Günther 2025-09-02 7:33 ` Neil Armstrong 2025-09-01 14:22 ` [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support Guido Günther 2 siblings, 1 reply; 7+ messages in thread From: Guido Günther @ 2025-09-01 14:22 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel, Guido Günther Don't clear all mode flags. We only want to maek sure we use HS mode during unprepare. Signed-off-by: Guido Günther <agx@sigxcpu.org> --- drivers/gpu/drm/panel/panel-visionox-rm69299.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c index e65697ce6f51c7d64b786da18cf44b16de5d6919..2216d38366ea37368d15480f9d8a8ccbfe77ba3b 100644 --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c @@ -192,7 +192,7 @@ static int visionox_rm69299_unprepare(struct drm_panel *panel) struct visionox_rm69299 *ctx = panel_to_ctx(panel); struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; - ctx->dsi->mode_flags = 0; + ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags 2025-09-01 14:22 ` [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags Guido Günther @ 2025-09-02 7:33 ` Neil Armstrong 0 siblings, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2025-09-02 7:33 UTC (permalink / raw) To: Guido Günther, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel On 01/09/2025 16:22, Guido Günther wrote: > Don't clear all mode flags. We only want to maek sure we use HS mode > during unprepare. > > Signed-off-by: Guido Günther <agx@sigxcpu.org> > --- > drivers/gpu/drm/panel/panel-visionox-rm69299.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c > index e65697ce6f51c7d64b786da18cf44b16de5d6919..2216d38366ea37368d15480f9d8a8ccbfe77ba3b 100644 > --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c > +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c > @@ -192,7 +192,7 @@ static int visionox_rm69299_unprepare(struct drm_panel *panel) > struct visionox_rm69299 *ctx = panel_to_ctx(panel); > struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi }; > > - ctx->dsi->mode_flags = 0; > + ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; > > mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); > > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support 2025-09-01 14:22 [PATCH 0/3] drm/panel: visionox-rm69299: Add backlight support and small fixes Guido Günther 2025-09-01 14:22 ` [PATCH 1/3] drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq Guido Günther 2025-09-01 14:22 ` [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags Guido Günther @ 2025-09-01 14:22 ` Guido Günther 2025-09-02 7:34 ` Neil Armstrong 2025-09-02 11:23 ` kernel test robot 2 siblings, 2 replies; 7+ messages in thread From: Guido Günther @ 2025-09-01 14:22 UTC (permalink / raw) To: Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel, Guido Günther The shift6mq's variant supports controlling the backlight via DSI commands. Use that if a max_brightness is set in the device specific data. Signed-off-by: Guido Günther <agx@sigxcpu.org> --- drivers/gpu/drm/panel/panel-visionox-rm69299.c | 67 ++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c index 2216d38366ea37368d15480f9d8a8ccbfe77ba3b..5e5ff6056c80e67a5bf8fe4911cdbc588db5d03b 100644 --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c @@ -3,6 +3,7 @@ * Copyright (c) 2019, The Linux Foundation. All rights reserved. */ +#include <linux/backlight.h> #include <linux/delay.h> #include <linux/module.h> #include <linux/property.h> @@ -20,6 +21,8 @@ struct visionox_rm69299_panel_desc { const struct drm_display_mode *mode; const u8 *init_seq; unsigned int init_seq_len; + int max_brightness; + int initial_brightness; }; struct visionox_rm69299 { @@ -285,6 +288,63 @@ static const struct drm_panel_funcs visionox_rm69299_drm_funcs = { .get_modes = visionox_rm69299_get_modes, }; +static int visionox_rm69299_bl_get_brightness(struct backlight_device *bl) +{ + struct mipi_dsi_device *dsi = bl_get_data(bl); + u16 brightness; + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_get_display_brightness(dsi, &brightness); + if (ret < 0) + return ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + return brightness; +} + +static int visionox_rm69299_bl_update_status(struct backlight_device *bl) +{ + struct mipi_dsi_device *dsi = bl_get_data(bl); + u16 brightness = backlight_get_brightness(bl); + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_set_display_brightness(dsi, brightness); + if (ret < 0) + return ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + return 0; +} + +static const struct backlight_ops visionox_rm69299_bl_ops = { + .update_status = visionox_rm69299_bl_update_status, + .get_brightness = visionox_rm69299_bl_get_brightness, +}; + +static struct backlight_device * +visionox_rm69299_create_backlight(struct visionox_rm69299 *ctx) +{ + struct device *dev = &ctx->dsi->dev; + const struct backlight_properties props = { + .type = BACKLIGHT_RAW, + .brightness = ctx->desc->initial_brightness, + .max_brightness = ctx->desc->max_brightness, + }; + + if (!ctx->desc->max_brightness) + return 0; + + return devm_backlight_device_register(dev, dev_name(dev), dev, ctx->dsi, + &visionox_rm69299_bl_ops, + &props); +} + static int visionox_rm69299_probe(struct mipi_dsi_device *dsi) { struct device *dev = &dsi->dev; @@ -316,6 +376,11 @@ static int visionox_rm69299_probe(struct mipi_dsi_device *dsi) return PTR_ERR(ctx->reset_gpio); } + ctx->panel.backlight = visionox_rm69299_create_backlight(ctx); + if (IS_ERR(ctx->panel.backlight)) + return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), + "Failed to create backlight\n"); + drm_panel_add(&ctx->panel); dsi->lanes = 4; @@ -353,6 +418,8 @@ const struct visionox_rm69299_panel_desc visionox_rm69299_shift_desc = { .mode = &visionox_rm69299_1080x2160_60hz, .init_seq = (const u8 *)visionox_rm69299_1080x2160_60hz_init_seq, .init_seq_len = ARRAY_SIZE(visionox_rm69299_1080x2160_60hz_init_seq), + .max_brightness = 255, + .initial_brightness = 50, }; static const struct of_device_id visionox_rm69299_of_match[] = { -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support 2025-09-01 14:22 ` [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support Guido Günther @ 2025-09-02 7:34 ` Neil Armstrong 2025-09-02 11:23 ` kernel test robot 1 sibling, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2025-09-02 7:34 UTC (permalink / raw) To: Guido Günther, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: dri-devel, linux-kernel, phone-devel On 01/09/2025 16:22, Guido Günther wrote: > The shift6mq's variant supports controlling the backlight via DSI > commands. Use that if a max_brightness is set in the device specific > data. > > Signed-off-by: Guido Günther <agx@sigxcpu.org> > --- > drivers/gpu/drm/panel/panel-visionox-rm69299.c | 67 ++++++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c > index 2216d38366ea37368d15480f9d8a8ccbfe77ba3b..5e5ff6056c80e67a5bf8fe4911cdbc588db5d03b 100644 > --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c > +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c > @@ -3,6 +3,7 @@ > * Copyright (c) 2019, The Linux Foundation. All rights reserved. > */ > > +#include <linux/backlight.h> > #include <linux/delay.h> > #include <linux/module.h> > #include <linux/property.h> > @@ -20,6 +21,8 @@ struct visionox_rm69299_panel_desc { > const struct drm_display_mode *mode; > const u8 *init_seq; > unsigned int init_seq_len; > + int max_brightness; > + int initial_brightness; > }; > > struct visionox_rm69299 { > @@ -285,6 +288,63 @@ static const struct drm_panel_funcs visionox_rm69299_drm_funcs = { > .get_modes = visionox_rm69299_get_modes, > }; > > +static int visionox_rm69299_bl_get_brightness(struct backlight_device *bl) > +{ > + struct mipi_dsi_device *dsi = bl_get_data(bl); > + u16 brightness; > + int ret; > + > + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; > + > + ret = mipi_dsi_dcs_get_display_brightness(dsi, &brightness); > + if (ret < 0) > + return ret; > + > + dsi->mode_flags |= MIPI_DSI_MODE_LPM; > + > + return brightness; > +} > + > +static int visionox_rm69299_bl_update_status(struct backlight_device *bl) > +{ > + struct mipi_dsi_device *dsi = bl_get_data(bl); > + u16 brightness = backlight_get_brightness(bl); > + int ret; > + > + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; > + > + ret = mipi_dsi_dcs_set_display_brightness(dsi, brightness); > + if (ret < 0) > + return ret; > + > + dsi->mode_flags |= MIPI_DSI_MODE_LPM; > + > + return 0; > +} > + > +static const struct backlight_ops visionox_rm69299_bl_ops = { > + .update_status = visionox_rm69299_bl_update_status, > + .get_brightness = visionox_rm69299_bl_get_brightness, > +}; > + > +static struct backlight_device * > +visionox_rm69299_create_backlight(struct visionox_rm69299 *ctx) > +{ > + struct device *dev = &ctx->dsi->dev; > + const struct backlight_properties props = { > + .type = BACKLIGHT_RAW, > + .brightness = ctx->desc->initial_brightness, > + .max_brightness = ctx->desc->max_brightness, > + }; > + > + if (!ctx->desc->max_brightness) > + return 0; > + > + return devm_backlight_device_register(dev, dev_name(dev), dev, ctx->dsi, > + &visionox_rm69299_bl_ops, > + &props); > +} > + > static int visionox_rm69299_probe(struct mipi_dsi_device *dsi) > { > struct device *dev = &dsi->dev; > @@ -316,6 +376,11 @@ static int visionox_rm69299_probe(struct mipi_dsi_device *dsi) > return PTR_ERR(ctx->reset_gpio); > } > > + ctx->panel.backlight = visionox_rm69299_create_backlight(ctx); > + if (IS_ERR(ctx->panel.backlight)) > + return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), > + "Failed to create backlight\n"); > + > drm_panel_add(&ctx->panel); > > dsi->lanes = 4; > @@ -353,6 +418,8 @@ const struct visionox_rm69299_panel_desc visionox_rm69299_shift_desc = { > .mode = &visionox_rm69299_1080x2160_60hz, > .init_seq = (const u8 *)visionox_rm69299_1080x2160_60hz_init_seq, > .init_seq_len = ARRAY_SIZE(visionox_rm69299_1080x2160_60hz_init_seq), > + .max_brightness = 255, > + .initial_brightness = 50, > }; > > static const struct of_device_id visionox_rm69299_of_match[] = { > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support 2025-09-01 14:22 ` [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support Guido Günther 2025-09-02 7:34 ` Neil Armstrong @ 2025-09-02 11:23 ` kernel test robot 1 sibling, 0 replies; 7+ messages in thread From: kernel test robot @ 2025-09-02 11:23 UTC (permalink / raw) To: Guido Günther, Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Cc: oe-kbuild-all, dri-devel, linux-kernel, phone-devel, Guido Günther Hi Guido, kernel test robot noticed the following build warnings: [auto build test WARNING on b320789d6883cc00ac78ce83bccbfe7ed58afcf0] url: https://github.com/intel-lab-lkp/linux/commits/Guido-G-nther/drm-panel-visionox-rm69299-Fix-clock-frequency-for-SHIFT6mq/20250901-222400 base: b320789d6883cc00ac78ce83bccbfe7ed58afcf0 patch link: https://lore.kernel.org/r/20250901-shift6mq-panel-v1-3-444b4abbfaea%40sigxcpu.org patch subject: [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support config: x86_64-randconfig-123-20250902 (https://download.01.org/0day-ci/archive/20250902/202509021907.mZZ38HtR-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250902/202509021907.mZZ38HtR-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202509021907.mZZ38HtR-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/panel/panel-visionox-rm69299.c:341:24: sparse: sparse: Using plain integer as NULL pointer drivers/gpu/drm/panel/panel-visionox-rm69299.c:411:42: sparse: sparse: symbol 'visionox_rm69299_1080p_display_desc' was not declared. Should it be static? drivers/gpu/drm/panel/panel-visionox-rm69299.c:417:42: sparse: sparse: symbol 'visionox_rm69299_shift_desc' was not declared. Should it be static? vim +341 drivers/gpu/drm/panel/panel-visionox-rm69299.c 329 330 static struct backlight_device * 331 visionox_rm69299_create_backlight(struct visionox_rm69299 *ctx) 332 { 333 struct device *dev = &ctx->dsi->dev; 334 const struct backlight_properties props = { 335 .type = BACKLIGHT_RAW, 336 .brightness = ctx->desc->initial_brightness, 337 .max_brightness = ctx->desc->max_brightness, 338 }; 339 340 if (!ctx->desc->max_brightness) > 341 return 0; 342 343 return devm_backlight_device_register(dev, dev_name(dev), dev, ctx->dsi, 344 &visionox_rm69299_bl_ops, 345 &props); 346 } 347 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-02 11:24 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-01 14:22 [PATCH 0/3] drm/panel: visionox-rm69299: Add backlight support and small fixes Guido Günther 2025-09-01 14:22 ` [PATCH 1/3] drm/panel: visionox-rm69299: Fix clock frequency for SHIFT6mq Guido Günther 2025-09-01 14:22 ` [PATCH 2/3] drm/panel: visionox-rm69299: Don't clear all mode flags Guido Günther 2025-09-02 7:33 ` Neil Armstrong 2025-09-01 14:22 ` [PATCH 3/3] drm/panel: visionox-rm69299: Add backlight support Guido Günther 2025-09-02 7:34 ` Neil Armstrong 2025-09-02 11:23 ` kernel test robot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).