[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <VI1PR0401MB2496584F77E29247EBD477BBF16E0@VI1PR0401MB2496.eurprd04.prod.outlook.com>
Date: Tue, 5 Feb 2019 03:52:11 +0000
From: Pankaj Bansal <pankaj.bansal@....com>
To: Andrew Lunn <andrew@...n.ch>,
Florian Fainelli <f.fainelli@...il.com>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: [PATCH v2 2/2] netdev/phy: add MDIO bus multiplexer driven by a
regmap
Hi Andrew,
I am getting this compilation error when the mdio-mux-regmap.ko is built as standalone module.
This error doesn't come when the mdio-mux-regmap is built as part of linux kernel.
I don't understand the reason for it. Inline definitions of functions are only defined if CONFIG_MDIO_BUS_MUX_REGMAP
Is NOT defined.
BUT it is defined as " CONFIG_MDIO_BUS_MUX_REGMAP = m"
Can you please help me to solve this?
Regards,
Pankaj Bansal
> -----Original Message-----
> From: kbuild test robot [mailto:lkp@...el.com]
> Sent: Monday, 4 February, 2019 08:22 PM
> To: Pankaj Bansal <pankaj.bansal@....com>
> Cc: kbuild-all@...org; Andrew Lunn <andrew@...n.ch>; Florian Fainelli
> <f.fainelli@...il.com>; netdev@...r.kernel.org; Pankaj Bansal
> <pankaj.bansal@....com>
> Subject: Re: [PATCH v2 2/2] netdev/phy: add MDIO bus multiplexer driven by a
> regmap
>
> Hi Pankaj,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on net/master]
> [also build test ERROR on v5.0-rc4]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system]
>
> url:
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2F0day-ci%2Flinux%2Fcommits%2FPankaj-Bansal%2Fadd-MDIO-bus-
> multiplexer-driven-by-a-regmap-device%2F20190204-
> 213429&data=02%7C01%7Cpankaj.bansal%40nxp.com%7Caabb2bdecd8a4
> 2c19f8108d68ab053d6%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7
> C636848890628820621&sdata=WLP4yuLXqfoNLfrPSIWhNkfg24YdR6Ny8jb
> cUgvcrDQ%3D&reserved=0
> config: sh-allmodconfig (attached as .config)
> compiler: sh4-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
> reproduce:
> wget
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.git
> hubusercontent.com%2Fintel%2Flkp-
> tests%2Fmaster%2Fsbin%2Fmake.cross&data=02%7C01%7Cpankaj.bansal
> %40nxp.com%7Caabb2bdecd8a42c19f8108d68ab053d6%7C686ea1d3bc2b4c6f
> a92cd99c5c301635%7C0%7C0%7C636848890628820621&sdata=pGqb5xq
> RsWH6fXd8NWLUKX86qQ0ZO8OOy8nj9rckqV8%3D&reserved=0 -O
> ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> GCC_VERSION=8.2.0 make.cross ARCH=sh
>
> All errors (new ones prefixed by >>):
>
> >> drivers/net/phy/mdio-mux-regmap.c:72:5: error: redefinition of
> 'mdio_mux_regmap_init'
> int mdio_mux_regmap_init(struct device *dev,
> ^~~~~~~~~~~~~~~~~~~~
> In file included from drivers/net/phy/mdio-mux-regmap.c:18:
> include/linux/mdio-mux.h:53:19: note: previous definition of
> 'mdio_mux_regmap_init' was here
> static inline int mdio_mux_regmap_init(struct device *dev,
> ^~~~~~~~~~~~~~~~~~~~
> >> drivers/net/phy/mdio-mux-regmap.c:158:5: error: redefinition of
> 'mdio_mux_regmap_uninit'
> int mdio_mux_regmap_uninit(void *data)
> ^~~~~~~~~~~~~~~~~~~~~~
> In file included from drivers/net/phy/mdio-mux-regmap.c:18:
> include/linux/mdio-mux.h:60:19: note: previous definition of
> 'mdio_mux_regmap_uninit' was here
> static inline int mdio_mux_regmap_uninit(void *data)
> ^~~~~~~~~~~~~~~~~~~~~~
>
> vim +/mdio_mux_regmap_init +72 drivers/net/phy/mdio-mux-regmap.c
>
> 62
> 63 /**
> 64 * mdio_mux_regmap_init - control MDIO bus muxing using regmap
> constructs.
> 65 * @dev: device with which regmap construct is associated.
> 66 * @mux_node: mdio bus mux node that contains parent mdio bus
> phandle.
> 67 * This node also contains sub nodes, where each subnode
> denotes
> 68 * a child mdio bus. All the child mdio buses are muxed, i.e. at a
> 69 * time only one of the child mdio buses can be used.
> 70 * @data: to store the address of data allocated by this function
> 71 */
> > 72 int mdio_mux_regmap_init(struct device *dev,
> 73 struct device_node *mux_node,
> 74 void **data)
> 75 {
> 76 struct device_node *child;
> 77 struct mdio_mux_regmap_state *s;
> 78 int ret;
> 79 u32 val;
> 80
> 81 dev_dbg(dev, "probing node %pOF\n", mux_node);
> 82
> 83 s = devm_kzalloc(dev, sizeof(*s), GFP_KERNEL);
> 84 if (!s)
> 85 return -ENOMEM;
> 86
> 87 s->regmap = dev_get_regmap(dev, NULL);
> 88 if (IS_ERR(s->regmap)) {
> 89 dev_err(dev, "Failed to get parent regmap\n");
> 90 return PTR_ERR(s->regmap);
> 91 }
> 92
> 93 ret = of_property_read_u32(mux_node, "reg", &s->mux_reg);
> 94 if (ret) {
> 95 dev_err(dev, "missing or invalid reg property\n");
> 96 return -ENODEV;
> 97 }
> 98
> 99 /* Test Register read write */
> 100 ret = regmap_read(s->regmap, s->mux_reg, &val);
> 101 if (ret) {
> 102 dev_err(dev, "error while reading reg\n");
> 103 return ret;
> 104 }
> 105
> 106 ret = regmap_write(s->regmap, s->mux_reg, val);
> 107 if (ret) {
> 108 dev_err(dev, "error while writing reg\n");
> 109 return ret;
> 110 }
> 111
> 112 ret = of_property_read_u32(mux_node, "mux-mask", &s-
> >mask);
> 113 if (ret) {
> 114 dev_err(dev, "missing or invalid mux-mask property\n");
> 115 return -ENODEV;
> 116 }
> 117
> 118 /* Verify that the 'reg' property of each child MDIO bus does
> not
> 119 * set any bits outside of the 'mask'.
> 120 */
> 121 for_each_available_child_of_node(mux_node, child) {
> 122 ret = of_property_read_u32(child, "reg", &val);
> 123 if (ret) {
> 124 dev_err(dev, "%pOF is missing a 'reg'
> property\n",
> 125 child);
> 126 of_node_put(child);
> 127 return -ENODEV;
> 128 }
> 129 if (val & ~s->mask) {
> 130 dev_err(dev,
> 131 "%pOF has a 'reg' value with unmasked
> bits\n",
> 132 child);
> 133 of_node_put(child);
> 134 return -ENODEV;
> 135 }
> 136 }
> 137
> 138 ret = mdio_mux_init(dev, mux_node,
> mdio_mux_regmap_switch_fn,
> 139 &s->mux_handle, s, NULL);
> 140 if (ret) {
> 141 if (ret != -EPROBE_DEFER)
> 142 dev_err(dev, "failed to register mdio-mux
> bus %pOF\n",
> 143 mux_node);
> 144 return ret;
> 145 }
> 146
> 147 *data = s;
> 148
> 149 return 0;
> 150 }
> 151 EXPORT_SYMBOL_GPL(mdio_mux_regmap_init);
> 152
> 153 /**
> 154 * mdio_mux_regmap_uninit - relinquish the control of MDIO bus
> muxing using
> 155 * regmap constructs.
> 156 * @data: address of data allocated by mdio_mux_regmap_init
> 157 */
> > 158 int mdio_mux_regmap_uninit(void *data)
> 159 {
> 160 struct mdio_mux_regmap_state *s = data;
> 161
> 162 mdio_mux_uninit(s->mux_handle);
> 163
> 164 return 0;
> 165 }
> 166 EXPORT_SYMBOL_GPL(mdio_mux_regmap_uninit);
> 167
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.01
> .org%2Fpipermail%2Fkbuild-
> all&data=02%7C01%7Cpankaj.bansal%40nxp.com%7Caabb2bdecd8a42c19
> f8108d68ab053d6%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636
> 848890628820621&sdata=P7RrlnHYStMpoDpwIDMmlRiDTCemyEE3bxuUrq
> d0uxY%3D&reserved=0 Intel Corporation
Powered by blists - more mailing lists