Skip to content

Commit

Permalink
drm/panel: samsung-s6d7aa0: use pointer for drm_mode in panel desc st…
Browse files Browse the repository at this point in the history
…ruct

Fixes compilation issues with older GCC versions and Clang after
changes introduced in commit 6810bb3 ("drm/panel: Add Samsung
S6D7AA0 panel controller driver"). Tested with GCC 13.1.1, GCC 6.4.0
and Clang 16.0.3.

Fixes the following errors with Clang:

  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:312:14: error: initializer element is not a compile-time constant
          .drm_mode = s6d7aa0_lsl080al02_mode,
                      ^~~~~~~~~~~~~~~~~~~~~~~
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:415:14: error: initializer element is not a compile-time constant
          .drm_mode = s6d7aa0_lsl080al03_mode,
                      ^~~~~~~~~~~~~~~~~~~~~~~
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:443:14: error: initializer element is not a compile-time constant
          .drm_mode = s6d7aa0_ltl101at01_mode,
                      ^~~~~~~~~~~~~~~~~~~~~~~
  3 errors generated.

Fixes the following errors with GCC:

  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:312:14: error: initializer element is not constant
    .drm_mode = s6d7aa0_lsl080al02_mode,
                ^~~~~~~~~~~~~~~~~~~~~~~
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:312:14: note: (near initialization for 's6d7aa0_lsl080al02_desc.drm_mode')
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:415:14: error: initializer element is not constant
    .drm_mode = s6d7aa0_lsl080al03_mode,
                ^~~~~~~~~~~~~~~~~~~~~~~
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:415:14: note: (near initialization for 's6d7aa0_lsl080al03_desc.drm_mode')
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:443:14: error: initializer element is not constant
    .drm_mode = s6d7aa0_ltl101at01_mode,
                ^~~~~~~~~~~~~~~~~~~~~~~
  drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c:443:14: note: (near initialization for 's6d7aa0_ltl101at01_desc.drm_mode')

Reported-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/lkml/20230523180212.GA1401867@dev-arch.thelio-3990X
Reported-by: kernelci.org bot <bot@kernelci.org>
Link: https://lore.kernel.org/llvm/646c6def.a70a0220.58c1a.903d@mx.google.com
Fixes: 6810bb3 ("drm/panel: Add Samsung S6D7AA0 panel controller driver")
Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230524084324.11840-1-aweber.kernel@gmail.com
  • Loading branch information
Artur Weber authored and Neil Armstrong committed May 24, 2023
1 parent 37cee48 commit 6a038f0
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ struct s6d7aa0_panel_desc {
unsigned int panel_type;
int (*init_func)(struct s6d7aa0 *ctx);
int (*off_func)(struct s6d7aa0 *ctx);
const struct drm_display_mode drm_mode;
const struct drm_display_mode *drm_mode;
unsigned long mode_flags;
u32 bus_flags;
bool has_backlight;
Expand Down Expand Up @@ -309,7 +309,7 @@ static const struct s6d7aa0_panel_desc s6d7aa0_lsl080al02_desc = {
.panel_type = S6D7AA0_PANEL_LSL080AL02,
.init_func = s6d7aa0_lsl080al02_init,
.off_func = s6d7aa0_lsl080al02_off,
.drm_mode = s6d7aa0_lsl080al02_mode,
.drm_mode = &s6d7aa0_lsl080al02_mode,
.mode_flags = MIPI_DSI_MODE_VSYNC_FLUSH | MIPI_DSI_MODE_VIDEO_NO_HFP,
.bus_flags = DRM_BUS_FLAG_DE_HIGH,

Expand Down Expand Up @@ -412,7 +412,7 @@ static const struct s6d7aa0_panel_desc s6d7aa0_lsl080al03_desc = {
.panel_type = S6D7AA0_PANEL_LSL080AL03,
.init_func = s6d7aa0_lsl080al03_init,
.off_func = s6d7aa0_lsl080al03_off,
.drm_mode = s6d7aa0_lsl080al03_mode,
.drm_mode = &s6d7aa0_lsl080al03_mode,
.mode_flags = MIPI_DSI_MODE_NO_EOT_PACKET,
.bus_flags = 0,

Expand Down Expand Up @@ -440,7 +440,7 @@ static const struct s6d7aa0_panel_desc s6d7aa0_ltl101at01_desc = {
.panel_type = S6D7AA0_PANEL_LTL101AT01,
.init_func = s6d7aa0_lsl080al03_init, /* Similar init to LSL080AL03 */
.off_func = s6d7aa0_lsl080al03_off,
.drm_mode = s6d7aa0_ltl101at01_mode,
.drm_mode = &s6d7aa0_ltl101at01_mode,
.mode_flags = MIPI_DSI_MODE_NO_EOT_PACKET,
.bus_flags = 0,

Expand All @@ -458,7 +458,7 @@ static int s6d7aa0_get_modes(struct drm_panel *panel,
if (!ctx)
return -EINVAL;

mode = drm_mode_duplicate(connector->dev, &ctx->desc->drm_mode);
mode = drm_mode_duplicate(connector->dev, ctx->desc->drm_mode);
if (!mode)
return -ENOMEM;

Expand Down

0 comments on commit 6a038f0

Please sign in to comment.