Re: [PATCH 4/4] mux: lan966: Add support for flexcom mux controller

From: kernel test robot
Date: Tue May 03 2022 - 15:58:35 EST


Hi Kavyasree,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on lee-mfd/for-mfd-next]
[also build test ERROR on robh/for-next]
[cannot apply to soc/for-next linus/master v5.18-rc5 next-20220503]
[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/intel-lab-lkp/linux/commits/Kavyasree-Kotagiri/Add-support-for-lan966-flexcom-multiplexer/20220503-190011
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
config: mips-randconfig-r014-20220502 (https://download.01.org/0day-ci/archive/20220504/202205040310.pikNhpUq-lkp@xxxxxxxxx/config)
compiler: mips64el-linux-gcc (GCC) 11.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
# https://github.com/intel-lab-lkp/linux/commit/f8c4bcef1d51c8668507ca53f7cad11e6ace1b2b
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Kavyasree-Kotagiri/Add-support-for-lan966-flexcom-multiplexer/20220503-190011
git checkout f8c4bcef1d51c8668507ca53f7cad11e6ace1b2b
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash

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

All errors (new ones prefixed by >>):

mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/mailbox/mailbox-altera.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/hwspinlock/hwspinlock_core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_coredump.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_debugfs.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_sysfs.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_virtio.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_elf_loader.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/remoteproc/remoteproc_cdev.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/bus_type.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/bus.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/master.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/slave.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/mipi_disco.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/stream.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/sysfs_slave.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/sysfs_slave_dpn.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/soundwire/debugfs.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/devfreq/devfreq.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/devfreq/devfreq-event.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/devfreq/governor_simpleondemand.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/devfreq/governor_powersave.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/extcon/extcon.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/extcon/devres.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/extcon/extcon-gpio.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/extcon/extcon-usb-gpio.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/memory/jz4780-nemc.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/vme/vme.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/vme/bridges/vme_ca91cx42.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/vme/boards/vme_vmivme7805.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/ntb/core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/ntb/test/ntb_tool.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/ntb/ntb_transport.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/powercap/powercap_sys.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/powercap/idle_inject.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/ras/ras.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/ras/debugfs.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/hwtracing/intel_th/core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/hwtracing/intel_th/msu.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/hwtracing/intel_th/msu-sink.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/nvmem/core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/interconnect/core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/interconnect/bulk.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/counter/counter-core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/counter/counter-sysfs.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/counter/counter-chrdev.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `drivers/counter/ftm-quaddec.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/sound_core.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/sound.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/init.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/memory.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/control.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/misc.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/device.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/info.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/info_oss.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/isadma.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/sound_oss.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/ctljack.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/jack.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/timer.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/pcm.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/pcm_native.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/pcm_lib.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/pcm_misc.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/pcm_memory.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/memalloc.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq_device.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/rawmidi.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_lock.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_clientmgr.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_memory.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_queue.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_fifo.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_prioq.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_timer.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_system.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_ports.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_info.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_dummy.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_midi.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/core/seq/seq_midi_event.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/drivers/dummy.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/drivers/serial-u16550.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/drivers/mtpav.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_card.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_chmap.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_ctl_msg.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_jack.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_pcm.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_pcm_msg.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/virtio/virtio_pcm_ops.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `sound/last.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `arch/mips/pci/pci.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `arch/mips/pci/pci-legacy.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `arch/mips/pci/fixup-fuloong2e.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `arch/mips/pci/ops-loongson2.o' being placed in section `.ctors.65436'
mips64el-linux-ld: warning: orphan section `.ctors.65436' from `arch/mips/crypto/poly1305-glue.o' being placed in section `.ctors.65436'
mips64el-linux-ld: drivers/mfd/atmel-flexcom.o: in function `atmel_flexcom_probe':
>> drivers/mfd/atmel-flexcom.c:97: undefined reference to `devm_mux_control_get'
mips64el-linux-ld: drivers/mfd/atmel-flexcom.o: in function `mux_control_select':
>> include/linux/mux/consumer.h:34: undefined reference to `mux_control_select_delay'
mips64el-linux-ld: drivers/mfd/atmel-flexcom.o: in function `atmel_flexcom_probe':
>> drivers/mfd/atmel-flexcom.c:109: undefined reference to `mux_control_deselect'


vim +97 drivers/mfd/atmel-flexcom.c

41
42 static int atmel_flexcom_probe(struct platform_device *pdev)
43 {
44 struct device_node *np = pdev->dev.of_node;
45 const struct atmel_flex_caps *caps;
46 struct resource *res;
47 struct atmel_flexcom *ddata;
48 int err;
49
50 ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL);
51 if (!ddata)
52 return -ENOMEM;
53
54 platform_set_drvdata(pdev, ddata);
55
56 err = of_property_read_u32(np, "atmel,flexcom-mode", &ddata->opmode);
57 if (err)
58 return err;
59
60 if (ddata->opmode < ATMEL_FLEXCOM_MODE_USART ||
61 ddata->opmode > ATMEL_FLEXCOM_MODE_TWI)
62 return -EINVAL;
63
64 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
65 ddata->base = devm_ioremap_resource(&pdev->dev, res);
66 if (IS_ERR(ddata->base))
67 return PTR_ERR(ddata->base);
68
69 ddata->clk = devm_clk_get(&pdev->dev, NULL);
70 if (IS_ERR(ddata->clk))
71 return PTR_ERR(ddata->clk);
72
73 err = clk_prepare_enable(ddata->clk);
74 if (err)
75 return err;
76
77 /*
78 * Set the Operating Mode in the Mode Register: only the selected device
79 * is clocked. Hence, registers of the other serial devices remain
80 * inaccessible and are read as zero. Also the external I/O lines of the
81 * Flexcom are muxed to reach the selected device.
82 */
83 writel(FLEX_MR_OPMODE(ddata->opmode), ddata->base + FLEX_MR);
84
85 caps = of_device_get_match_data(&pdev->dev);
86 if (!caps) {
87 dev_err(&pdev->dev, "Could not retrieve flexcom caps\n");
88 return -EINVAL;
89 }
90
91 /* Flexcom Mux */
92 if (caps->has_flx_mux && of_property_read_bool(np, "mux-controls")) {
93 struct mux_control *flx_mux;
94 struct of_phandle_args args;
95 int i, count;
96
> 97 flx_mux = devm_mux_control_get(&pdev->dev, NULL);
98 if (IS_ERR(flx_mux))
99 return PTR_ERR(flx_mux);
100
101 count = of_property_count_strings(np, "mux-control-names");
102 for (i = 0; i < count; i++) {
103 err = of_parse_phandle_with_fixed_args(np, "mux-controls", 1, i, &args);
104 if (err)
105 break;
106
107 err = mux_control_select(flx_mux, args.args[0]);
108 if (!err) {
> 109 mux_control_deselect(flx_mux);
110 } else {
111 dev_err(&pdev->dev, "Failed to select FLEXCOM mux\n");
112 return err;
113 }
114 }
115 }
116
117 clk_disable_unprepare(ddata->clk);
118
119 return devm_of_platform_populate(&pdev->dev);
120 }
121

--
0-DAY CI Kernel Test Service
https://01.org/lkp