[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201902042228.ePAd4m5Y%fengguang.wu@intel.com>
Date: Mon, 4 Feb 2019 22:51:32 +0800
From: kbuild test robot <lkp@...el.com>
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" <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://github.com/0day-ci/linux/commits/Pankaj-Bansal/add-MDIO-bus-multiplexer-driven-by-a-regmap-device/20190204-213429
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 8.2.0-11) 8.2.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=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://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (50803 bytes)
Powered by blists - more mailing lists