Hi Rajeev,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on next-20210525]
[cannot apply to robh/for-next drm-intel/for-linux-next 
drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master 
drm/drm-next v5.13-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Rajeev-Nandan/drm-Support-basic-DPCD-backlight-in-panel-simple-and-add-a-new-panel-ATNA33XC20/20210525-153326
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm-randconfig-r025-20210525 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
99155e913e9bad5f7f8a247f8bb3a3ff3da74af1)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://github.com/0day-ci/linux/commit/24e7ccb98951b0b4c7ae8a367273f8e73c074804
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Rajeev-Nandan/drm-Support-basic-DPCD-backlight-in-panel-simple-and-add-a-new-panel-ATNA33XC20/20210525-153326
        git checkout 24e7ccb98951b0b4c7ae8a367273f8e73c074804
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/panel/panel-simple.c:185:32: error: field has incomplete 
>> type 'struct drm_edp_backlight_info'
           struct drm_edp_backlight_info info;
                                         ^
   drivers/gpu/drm/panel/panel-simple.c:185:9: note: forward declaration of 
'struct drm_edp_backlight_info'
           struct drm_edp_backlight_info info;
                  ^
>> drivers/gpu/drm/panel/panel-simple.c:352:3: error: implicit declaration of 
>> function 'drm_edp_backlight_disable' 
>> [-Werror,-Wimplicit-function-declaration]
                   drm_edp_backlight_disable(p->aux, &bl->info);
                   ^
   drivers/gpu/drm/panel/panel-simple.c:352:3: note: did you mean 
'backlight_disable'?
   include/linux/backlight.h:379:19: note: 'backlight_disable' declared here
   static inline int backlight_disable(struct backlight_device *bd)
                     ^
>> drivers/gpu/drm/panel/panel-simple.c:352:32: error: no member named 'aux' in 
>> 'struct panel_simple'
                   drm_edp_backlight_disable(p->aux, &bl->info);
                                             ~  ^
>> drivers/gpu/drm/panel/panel-simple.c:527:3: error: implicit declaration of 
>> function 'drm_edp_backlight_enable' [-Werror,-Wimplicit-function-declaration]
                   drm_edp_backlight_enable(p->aux, &bl->info,
                   ^
   drivers/gpu/drm/panel/panel-simple.c:527:3: note: did you mean 
'backlight_enable'?
   include/linux/backlight.h:363:19: note: 'backlight_enable' declared here
   static inline int backlight_enable(struct backlight_device *bd)
                     ^
   drivers/gpu/drm/panel/panel-simple.c:527:31: error: no member named 'aux' in 
'struct panel_simple'
                   drm_edp_backlight_enable(p->aux, &bl->info,
                                            ~  ^
>> drivers/gpu/drm/panel/panel-simple.c:598:9: error: implicit declaration of 
>> function 'drm_edp_backlight_set_level' 
>> [-Werror,-Wimplicit-function-declaration]
           return drm_edp_backlight_set_level(p->aux, &bl->info, 
bd->props.brightness);
                  ^
   drivers/gpu/drm/panel/panel-simple.c:598:40: error: no member named 'aux' in 
'struct panel_simple'
           return drm_edp_backlight_set_level(p->aux, &bl->info, 
bd->props.brightness);
                                              ~  ^
>> drivers/gpu/drm/panel/panel-simple.c:611:14: error: use of undeclared 
>> identifier 'EDP_DISPLAY_CTL_CAP_SIZE'
           u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE];
                       ^
>> drivers/gpu/drm/panel/panel-simple.c:618:8: error: implicit declaration of 
>> function 'drm_dp_dpcd_read' [-Werror,-Wimplicit-function-declaration]
           ret = drm_dp_dpcd_read(panel->aux, DP_EDP_DPCD_REV, edp_dpcd,
                 ^
   drivers/gpu/drm/panel/panel-simple.c:618:32: error: no member named 'aux' in 
'struct panel_simple'
           ret = drm_dp_dpcd_read(panel->aux, DP_EDP_DPCD_REV, edp_dpcd,
                                  ~~~~~  ^
>> drivers/gpu/drm/panel/panel-simple.c:618:37: error: use of undeclared 
>> identifier 'DP_EDP_DPCD_REV'
           ret = drm_dp_dpcd_read(panel->aux, DP_EDP_DPCD_REV, edp_dpcd,
                                              ^
   drivers/gpu/drm/panel/panel-simple.c:619:11: error: use of undeclared 
identifier 'EDP_DISPLAY_CTL_CAP_SIZE'
                                  EDP_DISPLAY_CTL_CAP_SIZE);
                                  ^
>> drivers/gpu/drm/panel/panel-simple.c:623:8: error: implicit declaration of 
>> function 'drm_edp_backlight_init' [-Werror,-Wimplicit-function-declaration]
           ret = drm_edp_backlight_init(panel->aux, &bl->info, 0, edp_dpcd,
                 ^
   drivers/gpu/drm/panel/panel-simple.c:623:38: error: no member named 'aux' in 
'struct panel_simple'
           ret = drm_edp_backlight_init(panel->aux, &bl->info, 0, edp_dpcd,
                                        ~~~~~  ^
   drivers/gpu/drm/panel/panel-simple.c:871:15: error: no member named 'aux' in 
'struct panel_simple'
                   if (!panel->aux) {
                        ~~~~~  ^
   15 errors generated.


vim +185 drivers/gpu/drm/panel/panel-simple.c

   182  
   183  struct edp_backlight {
   184          struct backlight_device *dev;
 > 185          struct drm_edp_backlight_info info;
   186  };
   187  
   188  struct panel_simple {
   189          struct drm_panel base;
   190          bool enabled;
   191          bool no_hpd;
   192  
   193          bool prepared;
   194  
   195          ktime_t prepared_time;
   196          ktime_t unprepared_time;
   197  
   198          const struct panel_desc *desc;
   199  
   200          struct regulator *supply;
   201          struct i2c_adapter *ddc;
   202  
   203          struct gpio_desc *enable_gpio;
   204          struct gpio_desc *hpd_gpio;
   205  
   206          struct edid *edid;
   207  
   208          struct edp_backlight *edp_bl;
   209  
   210          struct drm_display_mode override_mode;
   211  
   212          enum drm_panel_orientation orientation;
   213  };
   214  
   215  static inline struct panel_simple *to_panel_simple(struct drm_panel 
*panel)
   216  {
   217          return container_of(panel, struct panel_simple, base);
   218  }
   219  
   220  static unsigned int panel_simple_get_timings_modes(struct panel_simple 
*panel,
   221                                                     struct drm_connector 
*connector)
   222  {
   223          struct drm_display_mode *mode;
   224          unsigned int i, num = 0;
   225  
   226          for (i = 0; i < panel->desc->num_timings; i++) {
   227                  const struct display_timing *dt = 
&panel->desc->timings[i];
   228                  struct videomode vm;
   229  
   230                  videomode_from_timing(dt, &vm);
   231                  mode = drm_mode_create(connector->dev);
   232                  if (!mode) {
   233                          dev_err(panel->base.dev, "failed to add mode 
%ux%u\n",
   234                                  dt->hactive.typ, dt->vactive.typ);
   235                          continue;
   236                  }
   237  
   238                  drm_display_mode_from_videomode(&vm, mode);
   239  
   240                  mode->type |= DRM_MODE_TYPE_DRIVER;
   241  
   242                  if (panel->desc->num_timings == 1)
   243                          mode->type |= DRM_MODE_TYPE_PREFERRED;
   244  
   245                  drm_mode_probed_add(connector, mode);
   246                  num++;
   247          }
   248  
   249          return num;
   250  }
   251  
   252  static unsigned int panel_simple_get_display_modes(struct panel_simple 
*panel,
   253                                                     struct drm_connector 
*connector)
   254  {
   255          struct drm_display_mode *mode;
   256          unsigned int i, num = 0;
   257  
   258          for (i = 0; i < panel->desc->num_modes; i++) {
   259                  const struct drm_display_mode *m = 
&panel->desc->modes[i];
   260  
   261                  mode = drm_mode_duplicate(connector->dev, m);
   262                  if (!mode) {
   263                          dev_err(panel->base.dev, "failed to add mode 
%ux%u@%u\n",
   264                                  m->hdisplay, m->vdisplay,
   265                                  drm_mode_vrefresh(m));
   266                          continue;
   267                  }
   268  
   269                  mode->type |= DRM_MODE_TYPE_DRIVER;
   270  
   271                  if (panel->desc->num_modes == 1)
   272                          mode->type |= DRM_MODE_TYPE_PREFERRED;
   273  
   274                  drm_mode_set_name(mode);
   275  
   276                  drm_mode_probed_add(connector, mode);
   277                  num++;
   278          }
   279  
   280          return num;
   281  }
   282  
   283  static int panel_simple_get_non_edid_modes(struct panel_simple *panel,
   284                                             struct drm_connector 
*connector)
   285  {
   286          struct drm_display_mode *mode;
   287          bool has_override = panel->override_mode.type;
   288          unsigned int num = 0;
   289  
   290          if (!panel->desc)
   291                  return 0;
   292  
   293          if (has_override) {
   294                  mode = drm_mode_duplicate(connector->dev,
   295                                            &panel->override_mode);
   296                  if (mode) {
   297                          drm_mode_probed_add(connector, mode);
   298                          num = 1;
   299                  } else {
   300                          dev_err(panel->base.dev, "failed to add 
override mode\n");
   301                  }
   302          }
   303  
   304          /* Only add timings if override was not there or failed to 
validate */
   305          if (num == 0 && panel->desc->num_timings)
   306                  num = panel_simple_get_timings_modes(panel, connector);
   307  
   308          /*
   309           * Only add fixed modes if timings/override added no mode.
   310           *
   311           * We should only ever have either the display timings specified
   312           * or a fixed mode. Anything else is rather bogus.
   313           */
   314          WARN_ON(panel->desc->num_timings && panel->desc->num_modes);
   315          if (num == 0)
   316                  num = panel_simple_get_display_modes(panel, connector);
   317  
   318          connector->display_info.bpc = panel->desc->bpc;
   319          connector->display_info.width_mm = panel->desc->size.width;
   320          connector->display_info.height_mm = panel->desc->size.height;
   321          if (panel->desc->bus_format)
   322                  
drm_display_info_set_bus_formats(&connector->display_info,
   323                                                   
&panel->desc->bus_format, 1);
   324          connector->display_info.bus_flags = panel->desc->bus_flags;
   325  
   326          return num;
   327  }
   328  
   329  static void panel_simple_wait(ktime_t start_ktime, unsigned int min_ms)
   330  {
   331          ktime_t now_ktime, min_ktime;
   332  
   333          if (!min_ms)
   334                  return;
   335  
   336          min_ktime = ktime_add(start_ktime, ms_to_ktime(min_ms));
   337          now_ktime = ktime_get();
   338  
   339          if (ktime_before(now_ktime, min_ktime))
   340                  msleep(ktime_to_ms(ktime_sub(min_ktime, now_ktime)) + 
1);
   341  }
   342  
   343  static int panel_simple_disable(struct drm_panel *panel)
   344  {
   345          struct panel_simple *p = to_panel_simple(panel);
   346          struct edp_backlight *bl = p->edp_bl;
   347  
   348          if (!p->enabled)
   349                  return 0;
   350  
   351          if (p->desc->uses_dpcd_backlight && bl)
 > 352                  drm_edp_backlight_disable(p->aux, &bl->info);
   353  
   354          if (p->desc->delay.disable)
   355                  msleep(p->desc->delay.disable);
   356  
   357          p->enabled = false;
   358  
   359          return 0;
   360  }
   361  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

Reply via email to