Re: [RESEND PATCH v27 11/15] leds: lp55xx: Add multicolor framework support to lp55xx
by Dan Murphy
Jacek
On 6/18/20 6:26 PM, Jacek Anaszewski wrote:
> On 6/19/20 12:09 AM, Jacek Anaszewski wrote:
>> Dan,
>>
>> On 6/18/20 11:44 PM, Dan Murphy wrote:
>>> Jacek
>>>
>>> On 6/18/20 4:21 PM, Jacek Anaszewski wrote:
>>>> Dan,
>>>>
>>>> On 6/18/20 12:33 AM, Dan Murphy wrote:
>>>>> Jacek
>>>>>
>>>>> On 6/17/20 4:41 PM, Jacek Anaszewski wrote:
>>>>>> Dan,
>>>>>>
>>>>>> On 6/17/20 9:22 PM, Dan Murphy wrote:
>>>>>>> Pavel/Jacek
>>>>>>>
>>>>>>> On 6/17/20 11:28 AM, kernel test robot wrote:
>>>>>>>> Hi Dan,
>>>>>>>>
>>>>>>>> I love your patch! Yet something to improve:
>>>>>>>>
>>>>>>>> [auto build test ERROR on pavel-linux-leds/for-next]
>>>>>>>> [cannot apply to j.anaszewski-leds/for-next]
>>>>>>>> [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/Dan-Murphy/Multicolor-Framework-...
>>>>>>>>
>>>>>>>> base:
>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
>>>>>>>> for-next
>>>>>>>> config: ia64-randconfig-r015-20200617 (attached as .config)
>>>>>>>> compiler: ia64-linux-gcc (GCC) 9.3.0
>>>>>>>> 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
>>>>>>>> # save the attached .config to linux build tree
>>>>>>>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0
>>>>>>>> make.cross ARCH=ia64
>>>>>>>>
>>>>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>>>>> Reported-by: kernel test robot <lkp(a)intel.com>
>>>>>>>>
>>>>>>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>>>>>>
>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in function
>>>>>>>> `lp55xx_set_mc_brightness':
>>>>>>>>>> drivers/leds/leds-lp55xx-common.c:146: undefined reference to
>>>>>>>>>> `led_mc_calc_color_components'
>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in function
>>>>>>>> `devm_led_classdev_multicolor_register':
>>>>>>>>>> include/linux/led-class-multicolor.h:74: undefined reference
>>>>>>>>>> to `devm_led_classdev_multicolor_register_ext'
>>>>>>>> vim +146 drivers/leds/leds-lp55xx-common.c
>>>>>>>>
>>>>>>>> 138
>>>>>>>> 139 static int lp55xx_set_mc_brightness(struct
>>>>>>>> led_classdev *cdev,
>>>>>>>> 140 enum led_brightness brightness)
>>>>>>>> 141 {
>>>>>>>> 142 struct led_classdev_mc *mc_dev =
>>>>>>>> lcdev_to_mccdev(cdev);
>>>>>>>> 143 struct lp55xx_led *led = mcled_cdev_to_led(mc_dev);
>>>>>>>> 144 struct lp55xx_device_config *cfg = led->chip->cfg;
>>>>>>>> 145
>>>>>>>> > 146 led_mc_calc_color_components(&led->mc_cdev, brightness);
>>>>>>>> 147 return cfg->multicolor_brightness_fn(led);
>>>>>>>> 148
>>>>>>>
>>>>>>> Well this was a mess to figure out.
>>>>>>>
>>>>>>> The only fix I can figure out here is to remove the
>>>>>>>
>>>>>>> depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR
>>>>>>>
>>>>>>> from each child device and add
>>>>>>>
>>>>>>> select LEDS_CLASS_MULTI_COLOR
>>>>>>>
>>>>>>> to the LP55XX_COMMON
>>>>>>>
>>>>>>> This way the Multi color framework will inherit the symbol that
>>>>>>> was set by the COMMON flag which is inherited by majority from
>>>>>>> the child flags.
>>>>>>
>>>>>> Did you try this?
>>>>>>
>>>>>> --- a/drivers/leds/Kconfig
>>>>>> +++ b/drivers/leds/Kconfig
>>>>>> @@ -398,6 +398,7 @@ config LEDS_LP50XX
>>>>>> config LEDS_LP55XX_COMMON
>>>>>> tristate "Common Driver for TI/National
>>>>>> LP5521/5523/55231/5562/8501"
>>>>>> depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 ||
>>>>>> LEDS_LP8501
>>>>>> + depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR
>>>>>> depends on OF
>>>>>> select FW_LOADER
>>>>>> select FW_LOADER_USER_HELPER
>>>>>>
>>>>>>
>>>>> Yes I did
>>>>>
>>>>> That gave unmet dependencies.
>>>>>
>>>>> WARNING: unmet direct dependencies detected for LEDS_LP55XX_COMMON
>>>>> Depends on [m]: NEW_LEDS [=y] && (LEDS_LP5521 [=n] ||
>>>>> LEDS_LP5523 [=m] || LEDS_LP5562 [=y] || LEDS_LP8501 [=y]) &&
>>>>> (LEDS_CLASS_MULTI_COLOR [=m] || !LEDS_CLASS_MULTI_COLOR [=m]) &&
>>>>> OF [=y]
>>>>> Selected by [y]:
>>>>> - LEDS_LP5562 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] && I2C [=y]
>>>>> - LEDS_LP8501 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] && I2C [=y]
>>>>> Selected by [m]:
>>>>> - LEDS_LP5523 [=m] && NEW_LEDS [=y] && LEDS_CLASS [=y] && I2C
>>>>> [=y] && (LEDS_CLASS_MULTI_COLOR [=m] || !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>
>>>>
>>>> When I was testing that yesterday I also had the same warning at some
>>>> point of testing different Kconfig setups, but with what I showed
>>>> above
>>>> it ceased to appear. Now every time I am doing "make oldconfig" the
>>>> CONFIG_LEDS_LP55XX_COMMON=y entry gets changed to =m with the config
>>>> from the test bot.
>>>>
>>> That is not what I saw in my testing especially after doing a distclean
>>
>> Could you please give your exact steps after "make distclean" and
>> copying test bot config to the kernel root directory?
>>
>> Also, please share the toolchain you're using for tests.
>
> Actually at this stage the toolchain is of lesser relevance.
>
> I've tried once more and indeed the problem shows up.
>
> It is caused by the driver entries doing
>
> "select LEDS_LP55XX_COMMON".
>
> Select sets config to "y" so it conflicts with
> "depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR"
> in the "config LEDS_LP55XX_COMMON".
>
> Your proposed fix will block the possibility of building
> LED_CLASS_MULTI_COLOR as a module when LP55XX drivers
> are enabled so this is also not an option.
>
> Solving this riddle will require some more thinking.
> I haven't analyzed it in detail but maybe "imply" statement from
> kconfig-language.rst could help somehow here.
The multicolor framework will build as a module if the LED_CLASS is
defined as a module.
See attached test_defconfig
defconfig contents
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLASS_MULTI_COLOR=m
CONFIG_LEDS_LP50XX=m
CONFIG_LEDS_LP55XX_COMMON=y
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
Output is
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLASS_MULTI_COLOR=m
CONFIG_LEDS_LP50XX=m
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
If any of the children are built in then the MC framework must be built
in as well.
Dan
2 years, 3 months
[omap-audio:peter/ti-linux-5.4.y/wip 6196/9999] drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:51: warning: variable 'sw_ev3' set but not used
by kernel test robot
tree: https://github.com/omap-audio/linux-audio peter/ti-linux-5.4.y/wip
head: d4ea716deb5cae567d7ffb483c1cc6a18ca0d3ba
commit: 3fabcb2e9b29dd1166640372b0abd5bbe2268198 [6196/9999] drm: bridge: Add support for Cadence MHDP DPI/DP bridge
config: c6x-randconfig-r001-20200619 (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
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
git checkout 3fabcb2e9b29dd1166640372b0abd5bbe2268198
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=c6x
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/gpu/drm/bridge/cdns-mhdp-core.c: In function 'mhdp_irq_handler':
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:51: warning: variable 'sw_ev3' set but not used [-Wunused-but-set-variable]
843 | u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
| ^~~~~~
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:43: warning: variable 'sw_ev2' set but not used [-Wunused-but-set-variable]
843 | u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
| ^~~~~~
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:35: warning: variable 'sw_ev1' set but not used [-Wunused-but-set-variable]
843 | u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
| ^~~~~~
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:17: warning: variable 'apb_stat' set but not used [-Wunused-but-set-variable]
843 | u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
| ^~~~~~~~
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:843:6: warning: variable 'mbox_stat' set but not used [-Wunused-but-set-variable]
843 | u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
| ^~~~~~~~~
drivers/gpu/drm/bridge/cdns-mhdp-core.c: In function 'cdns_mhdp_sst_enable':
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:1708:16: warning: variable 'pxlfmt' set but not used [-Wunused-but-set-variable]
1708 | u32 bpp, bpc, pxlfmt;
| ^~~~~~
>> drivers/gpu/drm/bridge/cdns-mhdp-core.c:1708:11: warning: variable 'bpc' set but not used [-Wunused-but-set-variable]
1708 | u32 bpp, bpc, pxlfmt;
| ^~~
vim +/sw_ev3 +843 drivers/gpu/drm/bridge/cdns-mhdp-core.c
839
840 static irqreturn_t mhdp_irq_handler(int irq, void *data)
841 {
842 struct cdns_mhdp_device *mhdp = (struct cdns_mhdp_device *)data;
> 843 u32 mbox_stat, apb_stat, sw_ev0, sw_ev1, sw_ev2, sw_ev3;
844 bool bridge_attached;
845
846 apb_stat = readl(mhdp->regs + CDNS_APB_INT_STATUS);
847 mbox_stat = readl(mhdp->regs + CDNS_MB_INT_STATUS);
848 sw_ev0 = readl(mhdp->regs + CDNS_SW_EVENT0);
849 sw_ev1 = readl(mhdp->regs + CDNS_SW_EVENT1);
850 sw_ev2 = readl(mhdp->regs + CDNS_SW_EVENT2);
851 sw_ev3 = readl(mhdp->regs + CDNS_SW_EVENT3);
852
853 /*
854 * Calling drm_kms_helper_hotplug_event() when not attached
855 * to drm device causes an oops because the drm_bridge->dev
856 * is NULL. See mhdp_fw_cb() comments for details about the
857 * problems related drm_kms_helper_hotplug_event() call.
858 */
859 spin_lock(&mhdp->start_lock);
860 bridge_attached = mhdp->bridge_attached;
861 spin_unlock(&mhdp->start_lock);
862
863 if (bridge_attached && (sw_ev0 & CDNS_DPTX_HPD)) {
864 mhdp_check_link(mhdp);
865
866 drm_kms_helper_hotplug_event(mhdp->bridge.dev);
867 }
868
869 return IRQ_HANDLED;
870 }
871
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH v9 1/9] firmware: arm_scmi: Add notification protocol-registration
by kernel test robot
Hi Cristian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on soc/for-next linus/master v5.8-rc1 next-20200618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Cristian-Marussi/SCMI-Notificati...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 1b5044021070efa3259f3e9548dc35d1eb6aa844
config: arm64-randconfig-r002-20200619 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 487ca07fcc75d52755c9fe2ee05bcb3b6eeeec44)
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 arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/firmware/arm_scmi/notify.c:294:31: warning: result of comparison of constant 256 with expression of type 'u8' (aka 'unsigned char') is always false [-Wtautological-constant-out-of-range-compare]
if (!ops || !evt || proto_id >= SCMI_MAX_PROTO)
~~~~~~~~ ^ ~~~~~~~~~~~~~~
1 warning generated.
vim +294 drivers/firmware/arm_scmi/notify.c
263
264 /**
265 * scmi_register_protocol_events() - Register Protocol Events with the core
266 * @handle: The handle identifying the platform instance against which the
267 * the protocol's events are registered
268 * @proto_id: Protocol ID
269 * @queue_sz: Size in bytes of the associated queue to be allocated
270 * @ops: Protocol specific event-related operations
271 * @evt: Event descriptor array
272 * @num_events: Number of events in @evt array
273 * @num_sources: Number of possible sources for this protocol on this
274 * platform.
275 *
276 * Used by SCMI Protocols initialization code to register with the notification
277 * core the list of supported events and their descriptors: takes care to
278 * pre-allocate and store all needed descriptors, scratch buffers and event
279 * queues.
280 *
281 * Return: 0 on Success
282 */
283 int scmi_register_protocol_events(const struct scmi_handle *handle,
284 u8 proto_id, size_t queue_sz,
285 const struct scmi_event_ops *ops,
286 const struct scmi_event *evt, int num_events,
287 int num_sources)
288 {
289 int i;
290 size_t payld_sz = 0;
291 struct scmi_registered_events_desc *pd;
292 struct scmi_notify_instance *ni;
293
> 294 if (!ops || !evt || proto_id >= SCMI_MAX_PROTO)
295 return -EINVAL;
296
297 /* Ensure notify_priv is updated */
298 smp_rmb();
299 if (unlikely(!handle->notify_priv))
300 return -ENOMEM;
301 ni = handle->notify_priv;
302
303 /* Attach to the notification main devres group */
304 if (!devres_open_group(ni->handle->dev, ni->gid, GFP_KERNEL))
305 return -ENOMEM;
306
307 for (i = 0; i < num_events; i++)
308 payld_sz = max_t(size_t, payld_sz, evt[i].max_payld_sz);
309 pd = scmi_allocate_registered_events_desc(ni, proto_id, queue_sz,
310 sizeof(struct scmi_event_header) + payld_sz,
311 num_events, ops);
312 if (IS_ERR(pd))
313 goto err;
314
315 for (i = 0; i < num_events; i++, evt++) {
316 struct scmi_registered_event *r_evt;
317
318 r_evt = devm_kzalloc(ni->handle->dev, sizeof(*r_evt),
319 GFP_KERNEL);
320 if (!r_evt)
321 goto err;
322 r_evt->proto = pd;
323 r_evt->evt = evt;
324
325 r_evt->sources = devm_kcalloc(ni->handle->dev, num_sources,
326 sizeof(refcount_t), GFP_KERNEL);
327 if (!r_evt->sources)
328 goto err;
329 r_evt->num_sources = num_sources;
330 mutex_init(&r_evt->sources_mtx);
331
332 r_evt->report = devm_kzalloc(ni->handle->dev,
333 evt->max_report_sz, GFP_KERNEL);
334 if (!r_evt->report)
335 goto err;
336
337 pd->registered_events[i] = r_evt;
338 /* Ensure events are updated */
339 smp_wmb();
340 dev_dbg(handle->dev, "registered event - %lX\n",
341 MAKE_ALL_SRCS_KEY(r_evt->proto->id, r_evt->evt->id));
342 }
343
344 /* Register protocol and events...it will never be removed */
345 ni->registered_protocols[proto_id] = pd;
346 /* Ensure protocols are updated */
347 smp_wmb();
348
349 devres_close_group(ni->handle->dev, ni->gid);
350
351 return 0;
352
353 err:
354 dev_warn(handle->dev, "Proto:%X - Registration Failed !\n", proto_id);
355 /* A failing protocol registration does not trigger full failure */
356 devres_close_group(ni->handle->dev, ni->gid);
357
358 return -ENOMEM;
359 }
360
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
ERROR: modpost: "__mulsi3" undefined!
by kernel test robot
Hi Jessica,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5e857ce6eae7ca21b2055cca4885545e29228fe2
commit: 93c95e526a4ef00eb3d5a1e0920ba5a22f32e40d modpost: rework and consolidate logging interface
date: 3 months ago
config: openrisc-randconfig-c022-20200619 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
>> ERROR: modpost: "__mulsi3" [lib/zstd/zstd_decompress.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/zstd/zstd_compress.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/bch.ko] undefined!
ERROR: modpost: "__mulsi3" [lib/reed_solomon/reed_solomon.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/xxhash.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/lz4/lz4hc_compress.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/lzo/lzo_compress.ko] undefined!
>> ERROR: modpost: "__mulsi3" [lib/math/cordic.ko] undefined!
ERROR: modpost: "__mulsi3" [net/sunrpc/auth_gss/auth_rpcgss.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/mux/mux-mmio.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/mux/mux-adg792a.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/rpmsg/virtio_rpmsg_bus.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/i2c-hid/i2c-hid.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-wiimote.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-steam.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-picolcd.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-multitouch.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-magicmouse.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-logitech-hidpp.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-lg-g15.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid-alps.ko] undefined!
>> ERROR: modpost: "__mulsi3" [drivers/hid/hid.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/zl6100.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/max31785.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/lm25066.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/ibm-cffps.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/adm1275.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pmbus/pmbus_core.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83l785ts.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83627ehf.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/tmp401.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/tmp103.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/tmp102.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/thmc50.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/amc6821.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/stts751.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/smsc47b397.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/smm665.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/shtc1.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/sht21.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pwm-fan.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pc87427.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/pc87360.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ntc_thermistor.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/mcp3021.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/mc13783-adc.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/max6697.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/max6650.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/max6642.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/max197.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/max1619.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ltc4261.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ltc4260.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ltc4245.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ltc4215.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ltc4151.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm95245.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm95241.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm93.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm92.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm90.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm87.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm83.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm80.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lm63.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/lineage-pem.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ina209.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ibmpex.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/hih6130.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/gl520sm.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/gl518sm.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/g760a.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/f75375s.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/f71805f.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/emc6w201.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/emc2103.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/emc1403.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ds1621.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/ds620.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/aspeed-pwm-tacho.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adt7475.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adt7470.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adt7411.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adt7x10.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adm9240.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adm1031.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adm1026.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/adm1021.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83791d.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83793.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83792d.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83773g.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/w83627hf.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/hwmon/hwmon-vid.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/uio/uio_dmem_genirq.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/sm_ftl.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/ssfdc.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/rfd_ftl.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/nftl.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/ftl.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/mtdblock.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/mtd_blkdevs.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/mtd.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_nandbiterrs.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_nandecctest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_torturetest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_subpagetest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_stresstest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_speedtest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_pagetest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/tests/mtd_oobtest.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/nand/nandcore.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/nand/raw/diskonchip.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/nand/raw/nand.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/devices/block2mtd.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/devices/slram.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/devices/docg3.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/maps/physmap.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/chips/gen_probe.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/chips/cfi_cmdset_0001.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/chips/cfi_cmdset_0002.ko] undefined!
ERROR: modpost: "__mulsi3" [drivers/mtd/chips/cfi_cmdset_0020.ko] undefined!
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[fsgsbase:adl-po-presilicon 5619/9999] drivers/base/ims-msi.c:53:6: warning: no previous prototype for function 'dev_ims_unmask_irq'
by kernel test robot
Hi Megha,
FYI, the error/warning still remains.
tree: https://github.com/changbae/Linux-kernel adl-po-presilicon
head: 6173b90dca1633db3ad2ddb01b0825969c0aa8e3
commit: 79337cd8a283373ff6ebf8881a0761d442ccb287 [5619/9999] ims-msi: Add mask/unmask routines
config: x86_64-randconfig-r002-20200619 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 487ca07fcc75d52755c9fe2ee05bcb3b6eeeec44)
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
git checkout 79337cd8a283373ff6ebf8881a0761d442ccb287
# 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(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/base/ims-msi.c:53:6: warning: no previous prototype for function 'dev_ims_unmask_irq' [-Wmissing-prototypes]
void dev_ims_unmask_irq(struct irq_data *data)
^
drivers/base/ims-msi.c:53:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void dev_ims_unmask_irq(struct irq_data *data)
^
static
drivers/base/ims-msi.c:129:20: warning: no previous prototype for function 'arch_create_ims_irq_domain' [-Wmissing-prototypes]
struct irq_domain *arch_create_ims_irq_domain(struct irq_domain *parent,
^
drivers/base/ims-msi.c:129:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
struct irq_domain *arch_create_ims_irq_domain(struct irq_domain *parent,
^
static
2 warnings generated.
vim +/dev_ims_unmask_irq +53 drivers/base/ims-msi.c
48
49 /**
50 * dev_msi_unmask_irq - Generic irq chip callback to unmask IMS interrupts
51 * @data: pointer to irqdata associated to that interrupt
52 */
> 53 void dev_ims_unmask_irq(struct irq_data *data)
54 {
55 struct msi_desc *desc = irq_data_get_msi_desc(data);
56
57 desc->platform.masked = __dev_ims_desc_mask_irq(desc, 0);
58 }
59
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[fsgsbase:adl-po-presilicon 7691/9999] drivers/misc/dlb2/dlb2_main.c:200 dlb2_add_domain_device_file() warn: passing zero to 'PTR_ERR'
by Dan Carpenter
tree: https://github.com/changbae/Linux-kernel adl-po-presilicon
head: 6173b90dca1633db3ad2ddb01b0825969c0aa8e3
commit: 1d6b51b4af4c2b7e3ae9837d3dc076e99bd8ad92 [7691/9999] dlb2: driver for Intel Dynamic Load Balancer 2.0
config: x86_64-randconfig-m001-20200619 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
drivers/misc/dlb2/dlb2_main.c:200 dlb2_add_domain_device_file() warn: passing zero to 'PTR_ERR'
drivers/misc/dlb2/dlb2_main.c:1643 dlb2_init_module() warn: passing zero to 'PTR_ERR'
drivers/misc/dlb2/dlb2_pf_ops.c:1743 dlb2_pf_device_create() warn: passing zero to 'PTR_ERR'
drivers/misc/dlb2/dlb2_vf_ops.c:1064 dlb2_vf_device_create() warn: passing zero to 'PTR_ERR'
drivers/misc/dlb2/base/dlb2_resource.c:9097 dlb2_hw_enable_wd_timer() error: buffer overflow 'wd_config' 3 <= 3
drivers/misc/dlb2/dlb2_dp.c:189 dlb2_open() error: we previously assumed 'dev' could be null (see line 160)
# https://github.com/changbae/Linux-kernel/commit/1d6b51b4af4c2b7e3ae9837d3...
git remote add fsgsbase https://github.com/changbae/Linux-kernel
git remote update fsgsbase
git checkout 1d6b51b4af4c2b7e3ae9837d3dc076e99bd8ad92
vim +/PTR_ERR +200 drivers/misc/dlb2/dlb2_main.c
1d6b51b4af4c2b7 Gage Eads 2020-04-27 170 int dlb2_add_domain_device_file(struct dlb2_dev *dlb2_dev, u32 domain_id)
1d6b51b4af4c2b7 Gage Eads 2020-04-27 171 {
1d6b51b4af4c2b7 Gage Eads 2020-04-27 172 struct dlb2_status *status;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 173 struct device *dev;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 174
1d6b51b4af4c2b7 Gage Eads 2020-04-27 175 dev_dbg(dlb2_dev->dlb2_device,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 176 "Creating domain %d's device file\n", domain_id);
1d6b51b4af4c2b7 Gage Eads 2020-04-27 177
1d6b51b4af4c2b7 Gage Eads 2020-04-27 178 status = devm_kzalloc(dlb2_dev->dlb2_device,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 179 sizeof(*status),
1d6b51b4af4c2b7 Gage Eads 2020-04-27 180 GFP_KERNEL);
1d6b51b4af4c2b7 Gage Eads 2020-04-27 181 if (!status)
1d6b51b4af4c2b7 Gage Eads 2020-04-27 182 return -ENOMEM;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 183
1d6b51b4af4c2b7 Gage Eads 2020-04-27 184 status->valid = true;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 185 status->refcnt = 0;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 186
1d6b51b4af4c2b7 Gage Eads 2020-04-27 187 /* Create a new device in order to create a /dev/ domain node. This
1d6b51b4af4c2b7 Gage Eads 2020-04-27 188 * device is a child of the DLB PCI device.
1d6b51b4af4c2b7 Gage Eads 2020-04-27 189 */
1d6b51b4af4c2b7 Gage Eads 2020-04-27 190 dev = device_create(dlb2_class,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 191 dlb2_dev->dlb2_device->parent,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 192 MKDEV(MAJOR(dlb2_dev->dev_number),
1d6b51b4af4c2b7 Gage Eads 2020-04-27 193 MINOR(dlb2_dev->dev_number) + domain_id),
1d6b51b4af4c2b7 Gage Eads 2020-04-27 194 dlb2_dev,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 195 "dlb%d/domain%d",
1d6b51b4af4c2b7 Gage Eads 2020-04-27 196 DLB2_DEV_ID_FROM_DEV_T(dlb2_dev_number_base,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 197 dlb2_dev->dev_number),
1d6b51b4af4c2b7 Gage Eads 2020-04-27 198 domain_id);
1d6b51b4af4c2b7 Gage Eads 2020-04-27 199
1d6b51b4af4c2b7 Gage Eads 2020-04-27 @200 if (IS_ERR_VALUE(PTR_ERR(dev))) {
Smatch doesn't like this formation at all. :P It works but I have
never seen it before. Just say:
if (IS_ERR(dev)) {
1d6b51b4af4c2b7 Gage Eads 2020-04-27 201 dev_err(dlb2_dev->dlb2_device,
1d6b51b4af4c2b7 Gage Eads 2020-04-27 202 "%s: device_create() returned %ld\n",
1d6b51b4af4c2b7 Gage Eads 2020-04-27 203 dlb2_driver_name, PTR_ERR(dev));
1d6b51b4af4c2b7 Gage Eads 2020-04-27 204
1d6b51b4af4c2b7 Gage Eads 2020-04-27 205 devm_kfree(dlb2_dev->dlb2_device, status);
1d6b51b4af4c2b7 Gage Eads 2020-04-27 206 return PTR_ERR(dev);
1d6b51b4af4c2b7 Gage Eads 2020-04-27 207 }
1d6b51b4af4c2b7 Gage Eads 2020-04-27 208
1d6b51b4af4c2b7 Gage Eads 2020-04-27 209 dlb2_dev->sched_domains[domain_id].status = status;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 210
1d6b51b4af4c2b7 Gage Eads 2020-04-27 211 return 0;
1d6b51b4af4c2b7 Gage Eads 2020-04-27 212 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH v8 4/4] gpio: xilinx: Utilize for_each_set_clump macro
by Luc Van Oostenryck
On Tue, Jun 16, 2020 at 11:27:18AM +0530, Syed Nayyar Waris wrote:
Hi,
> Regarding the compilation warning reported above:
>
> "sparse: shift too big (64) for type unsigned long" at line 639
> "sparse: invalid access past the end of 'old' (8 8)" at line 638
>
> Kindly refer to the code above, at these line numbers.
>
> I am in the process of fixing this warning. But what would be the fix?
> ? At the moment can't think of a code-fix to make the compilation
> warning disappear (specially at line 639). Can anyone please explain
> to me the meaning of the compilation warning more deeply?
This error message is caused by sparse doing the check too early.
There is thus nothing to be fixed for it in this code.
Best regards,
-- Luc
2 years, 3 months
Re: [PATCH v3 2/2] display/drm/bridge: TC358775 DSI/LVDS driver
by kernel test robot
Hi Vinay,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.8-rc1 next-20200618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Vinay-Simha-BN/dt-binding-Add-DS...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 1b5044021070efa3259f3e9548dc35d1eb6aa844
config: x86_64-randconfig-r034-20200619 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 487ca07fcc75d52755c9fe2ee05bcb3b6eeeec44)
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
# 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(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/gpu/drm/bridge/tc358775.c:505:5: warning: no previous prototype for function 'tc358775_parse_dt' [-Wmissing-prototypes]
int tc358775_parse_dt(struct device_node *np, struct tc_data *tc)
^
drivers/gpu/drm/bridge/tc358775.c:505:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int tc358775_parse_dt(struct device_node *np, struct tc_data *tc)
^
static
>> drivers/gpu/drm/bridge/tc358775.c:523:8: warning: variable 'len' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (endpoint) {
^~~~~~~~
drivers/gpu/drm/bridge/tc358775.c:536:22: note: uninitialized use occurs here
tc->num_dsi_lanes = len / sizeof(u32);
^~~
drivers/gpu/drm/bridge/tc358775.c:523:4: note: remove the 'if' if its condition is always true
if (endpoint) {
^~~~~~~~~~~~~~
drivers/gpu/drm/bridge/tc358775.c:519:7: warning: variable 'len' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (parent) {
^~~~~~
drivers/gpu/drm/bridge/tc358775.c:536:22: note: uninitialized use occurs here
tc->num_dsi_lanes = len / sizeof(u32);
^~~
drivers/gpu/drm/bridge/tc358775.c:519:3: note: remove the 'if' if its condition is always true
if (parent) {
^~~~~~~~~~~~
drivers/gpu/drm/bridge/tc358775.c:515:6: warning: variable 'len' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (endpoint) {
^~~~~~~~
drivers/gpu/drm/bridge/tc358775.c:536:22: note: uninitialized use occurs here
tc->num_dsi_lanes = len / sizeof(u32);
^~~
drivers/gpu/drm/bridge/tc358775.c:515:2: note: remove the 'if' if its condition is always true
if (endpoint) {
^~~~~~~~~~~~~~
drivers/gpu/drm/bridge/tc358775.c:511:9: note: initialize the variable 'len' to silence this warning
int len;
^
= 0
4 warnings generated.
vim +/tc358775_parse_dt +505 drivers/gpu/drm/bridge/tc358775.c
504
> 505 int tc358775_parse_dt(struct device_node *np, struct tc_data *tc)
506 {
507 struct device_node *endpoint;
508 struct device_node *parent;
509 struct device_node *remote;
510 struct property *prop;
511 int len;
512
513 endpoint = of_graph_get_endpoint_by_regs(tc->dev->of_node,
514 TC358775_DSI_IN, -1);
515 if (endpoint) {
516 /* dsi0_out node */
517 parent = of_graph_get_remote_port_parent(endpoint);
518 of_node_put(endpoint);
519 if (parent) {
520 /* dsi0 port 1 */
521 endpoint = of_graph_get_endpoint_by_regs(parent, 1, -1);
522 of_node_put(parent);
> 523 if (endpoint) {
524 prop = of_find_property(endpoint, "data-lanes",
525 &len);
526 of_node_put(endpoint);
527 if (!prop) {
528 dev_err(tc->dev,
529 "failed to find data lane\n");
530 return -EPROBE_DEFER;
531 }
532 }
533 }
534 }
535
536 tc->num_dsi_lanes = len / sizeof(u32);
537
538 if (tc->num_dsi_lanes < 1 || tc->num_dsi_lanes > 4)
539 return -EINVAL;
540
541 tc->host_node = of_graph_get_remote_node(np, 0, 0);
542 if (!tc->host_node)
543 return -ENODEV;
544
545 of_node_put(tc->host_node);
546
547 endpoint = of_graph_get_endpoint_by_regs(tc->dev->of_node,
548 TC358775_LVDS_OUT1, -1);
549 if (endpoint) {
550 remote = of_graph_get_remote_port_parent(endpoint);
551 of_node_put(endpoint);
552
553 if (remote) {
554 if (of_device_is_available(remote))
555 tc->dual_link = true;
556 of_node_put(remote);
557 }
558 }
559
560 dev_dbg(tc->dev, "no.of dsi lanes: %d\n", tc->num_dsi_lanes);
561 dev_dbg(tc->dev, "operating in %s-link mode\n",
562 tc->dual_link ? "dual" : "single");
563
564 return 0;
565 }
566
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months