Re: [PATCH v5 2/3] drm/panel: Add Samsung S6D7AA0 panel controller driver

From: Artur Weber
Date: Tue May 23 2023 - 17:26:11 EST


Hi,

On 23/05/2023 20:02, Nathan Chancellor wrote:
> Hi Artur,
>
> On Fri, May 19, 2023 at 07:03:53PM +0200, Artur Weber wrote:
>> Initial driver for S6D7AA0-controlled panels. Currently, the following
>> panels are supported:
>>
>> - S6D7AA0-LSL080AL02 (Samsung Galaxy Tab 3 8.0)
>> - S6D7AA0-LSL080AL03 (Samsung Galaxy Tab A 8.0 2015)
>> - S6D7AA0-LTL101AT01 (Samsung Galaxy Tab A 9.7 2015)
>>
>> It should be possible to extend this driver to work with other panels
>> using this IC.
>>
>> Tested-by: Nikita Travkin <nikita@xxxxxxx> #ltl101at01
>> Signed-off-by: Artur Weber <aweber.kernel@xxxxxxxxx>
>
> <snip>
>
> This change as commit 6810bb390282 ("drm/panel: Add Samsung S6D7AA0
> panel controller driver") in -next causes the following build errors
> with clang and GCC older than 8.x (the kernel supports back to GCC 5.1).
>
> 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.
>
> 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')
>

I've submitted a patch, "drm/panel: samsung-s6d7aa0: use pointer for
drm_mode in panel desc struct"[1], which should fix this. I tested it
with GCC 13.1.1, GCC 6.4.0 and Clang 16.0.3, but I'd appreciate any
further testing and feedback.

Apologies for the error.

Best regards
Artur

[1] https://lore.kernel.org/all/20230523212050.9970-1-aweber.kernel@xxxxxxxxx/T/