tree:   https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next
head:   948e195dfaa56e48eabda591f97630502ff7e27e
commit: 0ff223d991477fa4677dcb0f1fb00065847e2212 [5/25] drm/tilcdc: Convert 
legacy panel binding via DT overlay at boot time
config: arm-randconfig-r111-20260219 
(https://download.01.org/0day-ci/archive/20260220/[email protected]/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 
e86750b29fa0ff207cd43213d66dabe565417638)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20260220/[email protected]/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 <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:108:55: sparse: sparse: 
>> incorrect type in initializer (different base types) @@     expected 
>> unsigned int [usertype] @@     got restricted __be32 [usertype] @@
   drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:108:55: sparse:     expected 
unsigned int [usertype]
   drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:108:55: sparse:     got 
restricted __be32 [usertype]
   drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:115:55: sparse: sparse: 
incorrect type in initializer (different base types) @@     expected unsigned 
int [usertype] @@     got restricted __be32 [usertype] @@
   drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:115:55: sparse:     expected 
unsigned int [usertype]
   drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c:115:55: sparse:     got 
restricted __be32 [usertype]

vim +108 drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c

    41  
    42  static int __init tilcdc_panel_copy_props(struct device_node *old_panel,
    43                                            struct device_node *new_panel)
    44  {
    45          struct device_node *old_timing __free(device_node) = NULL;
    46          struct device_node *new_timing __free(device_node) = NULL;
    47          struct device_node *panel_info __free(device_node) = NULL;
    48          struct device_node *child __free(device_node) = NULL;
    49          u32 invert_pxl_clk = 0, sync_edge = 0;
    50          struct of_changeset ocs;
    51          struct property *prop;
    52          int ret;
    53  
    54          child = of_get_child_by_name(old_panel, "display-timings");
    55          if (!child)
    56                  return -EINVAL;
    57  
    58          /* The default display timing is the one specified as 
native-mode.
    59           * If no native-mode is specified then the first node is assumed
    60           * to be the native mode.
    61           */
    62          old_timing = of_parse_phandle(child, "native-mode", 0);
    63          if (!old_timing) {
    64                  old_timing = of_get_next_child(child, NULL);
    65                  if (!old_timing)
    66                          return -EINVAL;
    67          }
    68  
    69          panel_info = of_get_child_by_name(old_panel, "panel-info");
    70          if (!panel_info)
    71                  return -EINVAL;
    72  
    73          of_changeset_init(&ocs);
    74  
    75          /* Copy all panel properties to the new panel node */
    76          for_each_property_of_node(old_panel, prop) {
    77                  if (!strncmp(prop->name, "compatible", 
sizeof("compatible")))
    78                          continue;
    79  
    80                  ret = tilcdc_panel_update_prop(&ocs, new_panel, 
prop->name,
    81                                                 prop->value, 
prop->length);
    82                  if (ret)
    83                          goto destroy_ocs;
    84          }
    85  
    86          new_timing = of_changeset_create_node(&ocs, new_panel, 
"panel-timing");
    87          if (!new_timing) {
    88                  ret = -ENODEV;
    89                  goto destroy_ocs;
    90          }
    91  
    92          /* Copy all panel timing properties to the new panel node */
    93          for_each_property_of_node(old_timing, prop) {
    94                  ret = tilcdc_panel_update_prop(&ocs, new_timing, 
prop->name,
    95                                                 prop->value, 
prop->length);
    96                  if (ret)
    97                          goto destroy_ocs;
    98          }
    99  
   100          /* Looked only for these two parameter as all the other are 
always
   101           * set to default and not related to common DRM properties.
   102           */
   103          of_property_read_u32(panel_info, "invert-pxl-clk", 
&invert_pxl_clk);
   104          of_property_read_u32(panel_info, "sync-edge", &sync_edge);
   105  
   106          if (!invert_pxl_clk) {
   107                  ret = tilcdc_panel_update_prop(&ocs, new_timing, 
"pixelclk-active",
 > 108                                                 &(u32){cpu_to_be32(1)}, 
 > sizeof(u32));
   109                  if (ret)
   110                          goto destroy_ocs;
   111          }
   112  
   113          if (!sync_edge) {
   114                  ret = tilcdc_panel_update_prop(&ocs, new_timing, 
"syncclk-active",
   115                                                 &(u32){cpu_to_be32(1)}, 
sizeof(u32));
   116                  if (ret)
   117                          goto destroy_ocs;
   118          }
   119  
   120          /* Remove compatible property to avoid any driver compatible 
match */
   121          of_changeset_remove_property(&ocs, old_panel,
   122                                       of_find_property(old_panel, 
"compatible", NULL));
   123  
   124          of_changeset_apply(&ocs);
   125          return 0;
   126  
   127  destroy_ocs:
   128          of_changeset_destroy(&ocs);
   129          return ret;
   130  }
   131  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to