Message ID | edb51336ad361f8dad6d9745e47823da6a94a204.1585837575.git.mirq-linux@rere.qmqm.pl (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | power: supply: core: extensions and fixes | expand |
Hi "Michał, I love your patch! Yet something to improve: [auto build test ERROR on power-supply/for-next] [also build test ERROR on hwmon/hwmon-next linus/master v5.6 next-20200403] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Micha-Miros-aw/power-supply-core-extensions-and-fixes/20200404-004822 base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next config: s390-randconfig-a001-20200403 (attached as .config) compiler: s390-linux-gcc (GCC) 9.3.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=9.3.0 make.cross ARCH=s390 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): drivers/power/supply/generic-adc-battery.c: In function 'gab_probe': >> drivers/power/supply/generic-adc-battery.c:280:17: warning: passing argument 1 of 'memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 280 | memcpy(psy_desc->properties, gab_props, sizeof(gab_props)); | ~~~~~~~~^~~~~~~~~~~~ In file included from include/linux/bitmap.h:9, from include/linux/cpumask.h:12, from include/linux/interrupt.h:8, from drivers/power/supply/generic-adc-battery.c:12: include/linux/string.h:369:37: note: expected 'void *' but argument is of type 'const enum power_supply_property *' 369 | __FORTIFY_INLINE void *memcpy(void *p, const void *q, __kernel_size_t size) | ~~~~~~^ >> drivers/power/supply/generic-adc-battery.c:302:35: error: assignment of read-only location '*(psy_desc->properties + (sizetype)((long unsigned int)index++ * 4))' 302 | psy_desc->properties[index++] = | ^ vim +302 drivers/power/supply/generic-adc-battery.c e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 237 c8afa6406e60ae drivers/power/generic-adc-battery.c Bill Pemberton 2012-11-19 238 static int gab_probe(struct platform_device *pdev) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 239 { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 240 struct gab *adc_bat; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 241 struct power_supply_desc *psy_desc; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 242 struct power_supply_config psy_cfg = {}; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 243 struct gab_platform_data *pdata = pdev->dev.platform_data; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 244 int ret = 0; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 245 int chan; 932d47448c3caa drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 246 int index = ARRAY_SIZE(gab_props); a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 247 bool any = false; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 248 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 249 adc_bat = devm_kzalloc(&pdev->dev, sizeof(*adc_bat), GFP_KERNEL); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 250 if (!adc_bat) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 251 dev_err(&pdev->dev, "failed to allocate memory\n"); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 252 return -ENOMEM; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 253 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 254 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 255 psy_cfg.drv_data = adc_bat; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 256 psy_desc = &adc_bat->psy_desc; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 257 psy_desc->name = pdata->battery_info.name; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 258 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 259 /* bootup default values for the battery */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 260 adc_bat->cable_plugged = false; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 261 adc_bat->status = POWER_SUPPLY_STATUS_DISCHARGING; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 262 psy_desc->type = POWER_SUPPLY_TYPE_BATTERY; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 263 psy_desc->get_property = gab_get_property; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 264 psy_desc->external_power_changed = gab_ext_power_changed; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 265 adc_bat->pdata = pdata; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 266 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 267 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 268 * copying the static properties and allocating extra memory for holding e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 269 * the extra configurable properties received from platform data. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 270 */ 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 271 psy_desc->properties = kcalloc(ARRAY_SIZE(gab_props) + e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 272 ARRAY_SIZE(gab_chan_name), 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 273 sizeof(*psy_desc->properties), 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 274 GFP_KERNEL); 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 275 if (!psy_desc->properties) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 276 ret = -ENOMEM; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 277 goto first_mem_fail; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 278 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 279 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 @280 memcpy(psy_desc->properties, gab_props, sizeof(gab_props)); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 281 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 282 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 283 * getting channel from iio and copying the battery properties e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 284 * based on the channel supported by consumer device. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 285 */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 286 for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { 5aa57f0a655276 drivers/power/generic-adc-battery.c Guenter Roeck 2013-02-04 287 adc_bat->channel[chan] = iio_channel_get(&pdev->dev, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 288 gab_chan_name[chan]); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 289 if (IS_ERR(adc_bat->channel[chan])) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 290 ret = PTR_ERR(adc_bat->channel[chan]); 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 291 adc_bat->channel[chan] = NULL; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 292 } else { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 293 /* copying properties for supported channels only */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 294 int index2; a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 295 a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 296 for (index2 = 0; index2 < index; index2++) { a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 297 if (psy_desc->properties[index2] == a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 298 gab_dyn_props[chan]) a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 299 break; /* already known */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 300 } a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 301 if (index2 == index) /* really new */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 @302 psy_desc->properties[index++] = a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 303 gab_dyn_props[chan]; a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 304 any = true; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 305 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 306 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 307 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 308 /* none of the channels are supported so let's bail out */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 309 if (!any) { d211c6e82435df drivers/power/generic-adc-battery.c Axel Lin 2013-05-25 310 ret = -ENODEV; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 311 goto second_mem_fail; d211c6e82435df drivers/power/generic-adc-battery.c Axel Lin 2013-05-25 312 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 313 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 314 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 315 * Total number of properties is equal to static properties e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 316 * plus the dynamic properties.Some properties may not be set e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 317 * as come channels may be not be supported by the device.So e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 318 * we need to take care of that. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 319 */ 932d47448c3caa drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 320 psy_desc->num_properties = index; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 321 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 322 adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg); 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 323 if (IS_ERR(adc_bat->psy)) { 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 324 ret = PTR_ERR(adc_bat->psy); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 325 goto err_reg_fail; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 326 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 327 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 328 INIT_DELAYED_WORK(&adc_bat->bat_work, gab_work); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 329 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 330 if (gpio_is_valid(pdata->gpio_charge_finished)) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 331 int irq; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 332 ret = gpio_request(pdata->gpio_charge_finished, "charged"); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 333 if (ret) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 334 goto gpio_req_fail; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 335 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 336 irq = gpio_to_irq(pdata->gpio_charge_finished); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 337 ret = request_any_context_irq(irq, gab_charged, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 338 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 339 "battery charged", adc_bat); a5af092245a339 drivers/power/generic-adc-battery.c Axel Lin 2012-11-16 340 if (ret < 0) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 341 goto err_gpio; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 342 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 343 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 344 platform_set_drvdata(pdev, adc_bat); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 345 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 346 /* Schedule timer to check current status */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 347 schedule_delayed_work(&adc_bat->bat_work, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 348 msecs_to_jiffies(0)); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 349 return 0; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 350 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 351 err_gpio: e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 352 gpio_free(pdata->gpio_charge_finished); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 353 gpio_req_fail: 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 354 power_supply_unregister(adc_bat->psy); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 355 err_reg_fail: 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 356 for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 357 if (adc_bat->channel[chan]) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 358 iio_channel_release(adc_bat->channel[chan]); 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 359 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 360 second_mem_fail: 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 361 kfree(psy_desc->properties); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 362 first_mem_fail: e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 363 return ret; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 364 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 365 :::::: The code at line 302 was first introduced by commit :::::: a427503edaaed9b75ed9746a654cece7e93e60a8 power: generic-adc-battery: check for duplicate properties copied from iio channels :::::: TO: H. Nikolaus Schaller <hns@goldelico.com> :::::: CC: Sebastian Reichel <sre@kernel.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi "Michał, I love your patch! Yet something to improve: [auto build test ERROR on power-supply/for-next] [also build test ERROR on hwmon/hwmon-next linus/master v5.6 next-20200403] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Micha-Miros-aw/power-supply-core-extensions-and-fixes/20200404-004822 base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gcc (GCC) 9.3.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=9.3.0 make.cross ARCH=sh If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): drivers/power/supply/generic-adc-battery.c: In function 'gab_probe': drivers/power/supply/generic-adc-battery.c:280:17: warning: passing argument 1 of 'memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 280 | memcpy(psy_desc->properties, gab_props, sizeof(gab_props)); | ~~~~~~~~^~~~~~~~~~~~ In file included from arch/sh/include/asm/string.h:3, from include/linux/string.h:20, from include/linux/bitmap.h:9, from include/linux/cpumask.h:12, from include/linux/interrupt.h:8, from drivers/power/supply/generic-adc-battery.c:12: arch/sh/include/asm/string_32.h:119:14: note: expected 'void *' but argument is of type 'const enum power_supply_property *' 119 | extern void *memcpy(void *__to, __const__ void *__from, size_t __n); | ^~~~~~ >> drivers/power/supply/generic-adc-battery.c:302:35: error: assignment of read-only location '*(psy_desc->properties + (sizetype)((unsigned int)index++ * 4))' 302 | psy_desc->properties[index++] = | ^ -- drivers/power/supply/charger-manager.c: In function 'cm_init_thermal_data': >> drivers/power/supply/charger-manager.c:1436:72: error: assignment of read-only location '*(cm->charger_psy_desc.properties + (sizetype)(cm->charger_psy_desc.num_properties * 4))' 1436 | cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] = | ^ drivers/power/supply/charger-manager.c:1449:72: error: assignment of read-only location '*(cm->charger_psy_desc.properties + (sizetype)(cm->charger_psy_desc.num_properties * 4))' 1449 | cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] = | ^ drivers/power/supply/charger-manager.c: In function 'charger_manager_probe': >> drivers/power/supply/charger-manager.c:1728:29: warning: passing argument 1 of 'memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 1728 | memcpy(cm->charger_psy_desc.properties, default_charger_props, | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~ In file included from arch/sh/include/asm/string.h:3, from include/linux/string.h:20, from include/linux/bitmap.h:9, from include/linux/cpumask.h:12, from include/linux/mm_types_task.h:14, from include/linux/mm_types.h:5, from include/asm-generic/fixmap.h:19, from arch/sh/include/asm/fixmap.h:96, from arch/sh/include/asm/pgtable.h:22, from arch/sh/include/asm/io.h:20, from include/linux/io.h:13, from drivers/power/supply/charger-manager.c:15: arch/sh/include/asm/string_32.h:119:14: note: expected 'void *' but argument is of type 'const enum power_supply_property *' 119 | extern void *memcpy(void *__to, __const__ void *__from, size_t __n); | ^~~~~~ drivers/power/supply/charger-manager.c:1742:72: error: assignment of read-only location '*(cm->charger_psy_desc.properties + (sizetype)(cm->charger_psy_desc.num_properties * 4))' 1742 | cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] = | ^ drivers/power/supply/charger-manager.c:1749:72: error: assignment of read-only location '*(cm->charger_psy_desc.properties + (sizetype)(cm->charger_psy_desc.num_properties * 4))' 1749 | cm->charger_psy_desc.properties[cm->charger_psy_desc.num_properties] = | ^ vim +302 drivers/power/supply/generic-adc-battery.c e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 237 c8afa6406e60ae drivers/power/generic-adc-battery.c Bill Pemberton 2012-11-19 238 static int gab_probe(struct platform_device *pdev) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 239 { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 240 struct gab *adc_bat; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 241 struct power_supply_desc *psy_desc; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 242 struct power_supply_config psy_cfg = {}; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 243 struct gab_platform_data *pdata = pdev->dev.platform_data; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 244 int ret = 0; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 245 int chan; 932d47448c3caa drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 246 int index = ARRAY_SIZE(gab_props); a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 247 bool any = false; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 248 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 249 adc_bat = devm_kzalloc(&pdev->dev, sizeof(*adc_bat), GFP_KERNEL); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 250 if (!adc_bat) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 251 dev_err(&pdev->dev, "failed to allocate memory\n"); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 252 return -ENOMEM; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 253 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 254 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 255 psy_cfg.drv_data = adc_bat; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 256 psy_desc = &adc_bat->psy_desc; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 257 psy_desc->name = pdata->battery_info.name; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 258 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 259 /* bootup default values for the battery */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 260 adc_bat->cable_plugged = false; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 261 adc_bat->status = POWER_SUPPLY_STATUS_DISCHARGING; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 262 psy_desc->type = POWER_SUPPLY_TYPE_BATTERY; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 263 psy_desc->get_property = gab_get_property; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 264 psy_desc->external_power_changed = gab_ext_power_changed; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 265 adc_bat->pdata = pdata; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 266 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 267 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 268 * copying the static properties and allocating extra memory for holding e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 269 * the extra configurable properties received from platform data. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 270 */ 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 271 psy_desc->properties = kcalloc(ARRAY_SIZE(gab_props) + e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 272 ARRAY_SIZE(gab_chan_name), 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 273 sizeof(*psy_desc->properties), 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 274 GFP_KERNEL); 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 275 if (!psy_desc->properties) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 276 ret = -ENOMEM; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 277 goto first_mem_fail; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 278 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 279 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 280 memcpy(psy_desc->properties, gab_props, sizeof(gab_props)); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 281 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 282 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 283 * getting channel from iio and copying the battery properties e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 284 * based on the channel supported by consumer device. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 285 */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 286 for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { 5aa57f0a655276 drivers/power/generic-adc-battery.c Guenter Roeck 2013-02-04 287 adc_bat->channel[chan] = iio_channel_get(&pdev->dev, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 288 gab_chan_name[chan]); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 289 if (IS_ERR(adc_bat->channel[chan])) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 290 ret = PTR_ERR(adc_bat->channel[chan]); 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 291 adc_bat->channel[chan] = NULL; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 292 } else { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 293 /* copying properties for supported channels only */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 294 int index2; a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 295 a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 296 for (index2 = 0; index2 < index; index2++) { a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 297 if (psy_desc->properties[index2] == a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 298 gab_dyn_props[chan]) a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 299 break; /* already known */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 300 } a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 301 if (index2 == index) /* really new */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 @302 psy_desc->properties[index++] = a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 303 gab_dyn_props[chan]; a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 304 any = true; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 305 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 306 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 307 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 308 /* none of the channels are supported so let's bail out */ a427503edaaed9 drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 309 if (!any) { d211c6e82435df drivers/power/generic-adc-battery.c Axel Lin 2013-05-25 310 ret = -ENODEV; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 311 goto second_mem_fail; d211c6e82435df drivers/power/generic-adc-battery.c Axel Lin 2013-05-25 312 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 313 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 314 /* e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 315 * Total number of properties is equal to static properties e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 316 * plus the dynamic properties.Some properties may not be set e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 317 * as come channels may be not be supported by the device.So e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 318 * we need to take care of that. e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 319 */ 932d47448c3caa drivers/power/supply/generic-adc-battery.c H. Nikolaus Schaller 2018-06-26 320 psy_desc->num_properties = index; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 321 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 322 adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg); 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 323 if (IS_ERR(adc_bat->psy)) { 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 324 ret = PTR_ERR(adc_bat->psy); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 325 goto err_reg_fail; 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 326 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 327 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 328 INIT_DELAYED_WORK(&adc_bat->bat_work, gab_work); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 329 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 330 if (gpio_is_valid(pdata->gpio_charge_finished)) { e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 331 int irq; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 332 ret = gpio_request(pdata->gpio_charge_finished, "charged"); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 333 if (ret) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 334 goto gpio_req_fail; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 335 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 336 irq = gpio_to_irq(pdata->gpio_charge_finished); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 337 ret = request_any_context_irq(irq, gab_charged, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 338 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 339 "battery charged", adc_bat); a5af092245a339 drivers/power/generic-adc-battery.c Axel Lin 2012-11-16 340 if (ret < 0) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 341 goto err_gpio; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 342 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 343 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 344 platform_set_drvdata(pdev, adc_bat); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 345 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 346 /* Schedule timer to check current status */ e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 347 schedule_delayed_work(&adc_bat->bat_work, e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 348 msecs_to_jiffies(0)); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 349 return 0; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 350 e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 351 err_gpio: e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 352 gpio_free(pdata->gpio_charge_finished); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 353 gpio_req_fail: 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 354 power_supply_unregister(adc_bat->psy); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 355 err_reg_fail: 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 356 for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 357 if (adc_bat->channel[chan]) e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 358 iio_channel_release(adc_bat->channel[chan]); 64d26f225fefe0 drivers/power/generic-adc-battery.c Dan Carpenter 2013-02-14 359 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 360 second_mem_fail: 297d716f6260cc drivers/power/generic-adc-battery.c Krzysztof Kozlowski 2015-03-12 361 kfree(psy_desc->properties); e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 362 first_mem_fail: e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 363 return ret; e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 364 } e60fea794e6ecb drivers/power/generic-adc-battery.c anish kumar 2012-09-21 365 :::::: The code at line 302 was first introduced by commit :::::: a427503edaaed9b75ed9746a654cece7e93e60a8 power: generic-adc-battery: check for duplicate properties copied from iio channels :::::: TO: H. Nikolaus Schaller <hns@goldelico.com> :::::: CC: Sebastian Reichel <sre@kernel.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index dcd5a71e6c67..6a34df65d4d1 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -223,9 +223,9 @@ struct power_supply_config { struct power_supply_desc { const char *name; enum power_supply_type type; - enum power_supply_usb_type *usb_types; + const enum power_supply_usb_type *usb_types; size_t num_usb_types; - enum power_supply_property *properties; + const enum power_supply_property *properties; size_t num_properties; /*
Since tables pointed to by power_supply_desc->properties and ->usb_types are not expected to change after registration, mark the pointers accordingly Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> --- include/linux/power_supply.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)