Re: [PATCH] lm3532: right registration to work with LED-backlight

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pavel,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.3 next-20190916]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Pavel-Machek/lm3532-right-registration-to-work-with-LED-backlight/20190917-205315
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=sparc64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

   drivers/leds/leds-lm3532.c: In function 'lm3532_parse_node':
>> drivers/leds/leds-lm3532.c:520:10: error: variable 'idata' has initializer but incomplete type
      struct led_init_data idata = {
             ^~~~~~~~~~~~~
>> drivers/leds/leds-lm3532.c:521:5: error: 'struct led_init_data' has no member named 'fwnode'
       .fwnode = child,
        ^~~~~~
>> drivers/leds/leds-lm3532.c:521:14: warning: excess elements in struct initializer
       .fwnode = child,
                 ^~~~~
   drivers/leds/leds-lm3532.c:521:14: note: (near initialization for 'idata')
>> drivers/leds/leds-lm3532.c:522:5: error: 'struct led_init_data' has no member named 'default_label'
       .default_label = ":",
        ^~~~~~~~~~~~~
   drivers/leds/leds-lm3532.c:522:21: warning: excess elements in struct initializer
       .default_label = ":",
                        ^~~
   drivers/leds/leds-lm3532.c:522:21: note: (near initialization for 'idata')
>> drivers/leds/leds-lm3532.c:523:5: error: 'struct led_init_data' has no member named 'devicename'
       .devicename = priv->client->name,
        ^~~~~~~~~~
   drivers/leds/leds-lm3532.c:523:18: warning: excess elements in struct initializer
       .devicename = priv->client->name,
                     ^~~~
   drivers/leds/leds-lm3532.c:523:18: note: (near initialization for 'idata')
>> drivers/leds/leds-lm3532.c:520:24: error: storage size of 'idata' isn't known
      struct led_init_data idata = {
                           ^~~~~
>> drivers/leds/leds-lm3532.c:591:9: error: implicit declaration of function 'devm_led_classdev_register_ext'; did you mean 'devm_led_classdev_register'? [-Werror=implicit-function-declaration]
      ret = devm_led_classdev_register_ext(priv->dev, &led->led_dev, &idata);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            devm_led_classdev_register
   drivers/leds/leds-lm3532.c:520:24: warning: unused variable 'idata' [-Wunused-variable]
      struct led_init_data idata = {
                           ^~~~~
   cc1: some warnings being treated as errors

vim +/idata +520 drivers/leds/leds-lm3532.c

   485	
   486	static int lm3532_parse_node(struct lm3532_data *priv)
   487	{
   488		struct fwnode_handle *child = NULL;
   489		struct lm3532_led *led;
   490		const char *name;
   491		int control_bank;
   492		u32 ramp_time;
   493		size_t i = 0;
   494		int ret;
   495	
   496		priv->enable_gpio = devm_gpiod_get_optional(&priv->client->dev,
   497							   "enable", GPIOD_OUT_LOW);
   498		if (IS_ERR(priv->enable_gpio))
   499			priv->enable_gpio = NULL;
   500	
   501		priv->regulator = devm_regulator_get(&priv->client->dev, "vin");
   502		if (IS_ERR(priv->regulator))
   503			priv->regulator = NULL;
   504	
   505		ret = device_property_read_u32(&priv->client->dev, "ramp-up-us",
   506					       &ramp_time);
   507		if (ret)
   508			dev_info(&priv->client->dev, "ramp-up-ms property missing\n");
   509		else
   510			priv->runtime_ramp_up = lm3532_get_ramp_index(ramp_time);
   511	
   512		ret = device_property_read_u32(&priv->client->dev, "ramp-down-us",
   513					       &ramp_time);
   514		if (ret)
   515			dev_info(&priv->client->dev, "ramp-down-ms property missing\n");
   516		else
   517			priv->runtime_ramp_down = lm3532_get_ramp_index(ramp_time);
   518	
   519		device_for_each_child_node(priv->dev, child) {
 > 520			struct led_init_data idata = {
 > 521				.fwnode = child,
 > 522				.default_label = ":",
 > 523				.devicename = priv->client->name,
   524			};
   525	
   526			led = &priv->leds[i];
   527	
   528			ret = fwnode_property_read_u32(child, "reg", &control_bank);
   529			if (ret) {
   530				dev_err(&priv->client->dev, "reg property missing\n");
   531				fwnode_handle_put(child);
   532				goto child_out;
   533			}
   534	
   535			if (control_bank > LM3532_CONTROL_C) {
   536				dev_err(&priv->client->dev, "Control bank invalid\n");
   537				continue;
   538			}
   539	
   540			led->control_bank = control_bank;
   541	
   542			ret = fwnode_property_read_u32(child, "ti,led-mode",
   543						       &led->mode);
   544			if (ret) {
   545				dev_err(&priv->client->dev, "ti,led-mode property missing\n");
   546				fwnode_handle_put(child);
   547				goto child_out;
   548			}
   549	
   550			if (led->mode == LM3532_BL_MODE_ALS) {
   551				ret = lm3532_parse_als(priv);
   552				if (ret)
   553					dev_err(&priv->client->dev, "Failed to parse als\n");
   554				else
   555					lm3532_als_configure(priv, led);
   556			}
   557	
   558			led->num_leds = fwnode_property_read_u32_array(child,
   559								       "led-sources",
   560								       NULL, 0);
   561	
   562			if (led->num_leds > LM3532_MAX_LED_STRINGS) {
   563				dev_err(&priv->client->dev, "To many LED string defined\n");
   564				continue;
   565			}
   566	
   567			ret = fwnode_property_read_u32_array(child, "led-sources",
   568							    led->led_strings,
   569							    led->num_leds);
   570			if (ret) {
   571				dev_err(&priv->client->dev, "led-sources property missing\n");
   572				fwnode_handle_put(child);
   573				goto child_out;
   574			}
   575	
   576			fwnode_property_read_string(child, "linux,default-trigger",
   577						    &led->led_dev.default_trigger);
   578	
   579			ret = fwnode_property_read_string(child, "label", &name);
   580			if (ret)
   581				snprintf(led->label, sizeof(led->label),
   582					"%s::", priv->client->name);
   583			else
   584				snprintf(led->label, sizeof(led->label),
   585					 "%s:%s", priv->client->name, name);
   586	
   587			led->priv = priv;
   588			led->led_dev.name = led->label;
   589			led->led_dev.brightness_set_blocking = lm3532_brightness_set;
   590	
 > 591			ret = devm_led_classdev_register_ext(priv->dev, &led->led_dev, &idata);
   592			if (ret) {
   593				dev_err(&priv->client->dev, "led register err: %d\n",
   594					ret);
   595				fwnode_handle_put(child);
   596				goto child_out;
   597			}
   598	
   599			lm3532_init_registers(led);
   600	
   601			i++;
   602		}
   603	
   604	child_out:
   605		return ret;
   606	}
   607	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux