[Freedreno] [v5 2/5] drm/panel-simple: Support DP AUX backlight

kernel test robot lkp at intel.com
Sun May 30 19:25:29 UTC 2021


Hi Rajeev,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master v5.13-rc3 next-20210528]
[cannot apply to drm/drm-next]
[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/20210530-235810
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-a006-20210530 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project bc6799f2f79f0ae87e9f1ebf9d25ba799fbd25a9)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/fedf88beabe2c179d593bbb61ff5df62ac909fa1
        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/20210530-235810
        git checkout fedf88beabe2c179d593bbb61ff5df62ac909fa1
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/panel/panel-simple.c:796:39: error: no member named 'aux' in 'struct panel_simple'
           if (!panel->base.backlight && panel->aux) {
                                         ~~~~~  ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                      ^~~~
>> drivers/gpu/drm/panel/panel-simple.c:796:39: error: no member named 'aux' in 'struct panel_simple'
           if (!panel->base.backlight && panel->aux) {
                                         ~~~~~  ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                               ^~~~
>> drivers/gpu/drm/panel/panel-simple.c:796:39: error: no member named 'aux' in 'struct panel_simple'
           if (!panel->base.backlight && panel->aux) {
                                         ~~~~~  ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                                                        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/gpu/drm/panel/panel-simple.c:797:57: error: no member named 'aux' in 'struct panel_simple'
                   err = drm_panel_dp_aux_backlight(&panel->base, panel->aux);
                                                                  ~~~~~  ^
   4 errors generated.


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

   659	
   660	static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
   661	{
   662		struct panel_simple *panel;
   663		struct display_timing dt;
   664		struct device_node *ddc;
   665		int connector_type;
   666		u32 bus_flags;
   667		int err;
   668	
   669		panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL);
   670		if (!panel)
   671			return -ENOMEM;
   672	
   673		panel->enabled = false;
   674		panel->prepared_time = 0;
   675		panel->desc = desc;
   676	
   677		panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd");
   678		if (!panel->no_hpd) {
   679			err = panel_simple_get_hpd_gpio(dev, panel);
   680			if (err)
   681				return err;
   682		}
   683	
   684		panel->supply = devm_regulator_get(dev, "power");
   685		if (IS_ERR(panel->supply))
   686			return PTR_ERR(panel->supply);
   687	
   688		panel->enable_gpio = devm_gpiod_get_optional(dev, "enable",
   689							     GPIOD_OUT_LOW);
   690		if (IS_ERR(panel->enable_gpio)) {
   691			err = PTR_ERR(panel->enable_gpio);
   692			if (err != -EPROBE_DEFER)
   693				dev_err(dev, "failed to request GPIO: %d\n", err);
   694			return err;
   695		}
   696	
   697		err = of_drm_get_panel_orientation(dev->of_node, &panel->orientation);
   698		if (err) {
   699			dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err);
   700			return err;
   701		}
   702	
   703		ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0);
   704		if (ddc) {
   705			panel->ddc = of_find_i2c_adapter_by_node(ddc);
   706			of_node_put(ddc);
   707	
   708			if (!panel->ddc)
   709				return -EPROBE_DEFER;
   710		}
   711	
   712		if (desc == &panel_dpi) {
   713			/* Handle the generic panel-dpi binding */
   714			err = panel_dpi_probe(dev, panel);
   715			if (err)
   716				goto free_ddc;
   717		} else {
   718			if (!of_get_display_timing(dev->of_node, "panel-timing", &dt))
   719				panel_simple_parse_panel_timing_node(dev, panel, &dt);
   720		}
   721	
   722		connector_type = desc->connector_type;
   723		/* Catch common mistakes for panels. */
   724		switch (connector_type) {
   725		case 0:
   726			dev_warn(dev, "Specify missing connector_type\n");
   727			connector_type = DRM_MODE_CONNECTOR_DPI;
   728			break;
   729		case DRM_MODE_CONNECTOR_LVDS:
   730			WARN_ON(desc->bus_flags &
   731				~(DRM_BUS_FLAG_DE_LOW |
   732				  DRM_BUS_FLAG_DE_HIGH |
   733				  DRM_BUS_FLAG_DATA_MSB_TO_LSB |
   734				  DRM_BUS_FLAG_DATA_LSB_TO_MSB));
   735			WARN_ON(desc->bus_format != MEDIA_BUS_FMT_RGB666_1X7X3_SPWG &&
   736				desc->bus_format != MEDIA_BUS_FMT_RGB888_1X7X4_SPWG &&
   737				desc->bus_format != MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA);
   738			WARN_ON(desc->bus_format == MEDIA_BUS_FMT_RGB666_1X7X3_SPWG &&
   739				desc->bpc != 6);
   740			WARN_ON((desc->bus_format == MEDIA_BUS_FMT_RGB888_1X7X4_SPWG ||
   741				 desc->bus_format == MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA) &&
   742				desc->bpc != 8);
   743			break;
   744		case DRM_MODE_CONNECTOR_eDP:
   745			if (desc->bus_format == 0)
   746				dev_warn(dev, "Specify missing bus_format\n");
   747			if (desc->bpc != 6 && desc->bpc != 8)
   748				dev_warn(dev, "Expected bpc in {6,8} but got: %u\n", desc->bpc);
   749			break;
   750		case DRM_MODE_CONNECTOR_DSI:
   751			if (desc->bpc != 6 && desc->bpc != 8)
   752				dev_warn(dev, "Expected bpc in {6,8} but got: %u\n", desc->bpc);
   753			break;
   754		case DRM_MODE_CONNECTOR_DPI:
   755			bus_flags = DRM_BUS_FLAG_DE_LOW |
   756				    DRM_BUS_FLAG_DE_HIGH |
   757				    DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE |
   758				    DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE |
   759				    DRM_BUS_FLAG_DATA_MSB_TO_LSB |
   760				    DRM_BUS_FLAG_DATA_LSB_TO_MSB |
   761				    DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE |
   762				    DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE;
   763			if (desc->bus_flags & ~bus_flags)
   764				dev_warn(dev, "Unexpected bus_flags(%d)\n", desc->bus_flags & ~bus_flags);
   765			if (!(desc->bus_flags & bus_flags))
   766				dev_warn(dev, "Specify missing bus_flags\n");
   767			if (desc->bus_format == 0)
   768				dev_warn(dev, "Specify missing bus_format\n");
   769			if (desc->bpc != 6 && desc->bpc != 8)
   770				dev_warn(dev, "Expected bpc in {6,8} but got: %u\n", desc->bpc);
   771			break;
   772		default:
   773			dev_warn(dev, "Specify a valid connector_type: %d\n", desc->connector_type);
   774			connector_type = DRM_MODE_CONNECTOR_DPI;
   775			break;
   776		}
   777	
   778		dev_set_drvdata(dev, panel);
   779	
   780		/*
   781		 * We use runtime PM for prepare / unprepare since those power the panel
   782		 * on and off and those can be very slow operations. This is important
   783		 * to optimize powering the panel on briefly to read the EDID before
   784		 * fully enabling the panel.
   785		 */
   786		pm_runtime_enable(dev);
   787		pm_runtime_set_autosuspend_delay(dev, 1000);
   788		pm_runtime_use_autosuspend(dev);
   789	
   790		drm_panel_init(&panel->base, dev, &panel_simple_funcs, connector_type);
   791	
   792		err = drm_panel_of_backlight(&panel->base);
   793		if (err)
   794			goto disable_pm_runtime;
   795	
 > 796		if (!panel->base.backlight && panel->aux) {
   797			err = drm_panel_dp_aux_backlight(&panel->base, panel->aux);
   798			if (err)
   799				goto disable_pm_runtime;
   800		}
   801	
   802		drm_panel_add(&panel->base);
   803	
   804		return 0;
   805	
   806	disable_pm_runtime:
   807		pm_runtime_disable(dev);
   808	free_ddc:
   809		if (panel->ddc)
   810			put_device(&panel->ddc->dev);
   811	
   812		return err;
   813	}
   814	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 41588 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/freedreno/attachments/20210531/fedb8110/attachment-0001.gz>


More information about the Freedreno mailing list