Hi Andrew,
First bad commit (maybe != root cause):
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 860461e4fcaa76200d2d1a53523e0ff7be92e6e8
commit: a9770eac511ad82390b9f4a3c1728e078c387ac7 [3015/8629] net: mdio: Move MDIO drivers
into a new subdirectory
config: h8300-randconfig-r011-20200917 (attached as .config)
compiler: h8300-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
git checkout a9770eac511ad82390b9f4a3c1728e078c387ac7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300
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 >>):
h8300-linux-ld: drivers/net/phy/mdio_devres.o: in function `devm_mdiobus_free':
drivers/net/phy/mdio_devres.c:16: undefined reference to `mdiobus_free'
h8300-linux-ld: drivers/net/phy/mdio_devres.o: in function
`devm_mdiobus_unregister':
drivers/net/phy/mdio_devres.c:53: undefined reference to `mdiobus_unregister'
h8300-linux-ld: drivers/net/phy/mdio_devres.o: in function
`devm_of_mdiobus_register':
drivers/net/phy/mdio_devres.c:120: undefined reference to `of_mdiobus_register'
h8300-linux-ld: drivers/net/phy/mdio_devres.o: in function
`devm_mdiobus_alloc_size':
drivers/net/phy/mdio_devres.c:38: undefined reference to `mdiobus_alloc_size'
h8300-linux-ld: drivers/net/phy/mdio_devres.o: in function
`__devm_mdiobus_register':
drivers/net/phy/mdio_devres.c:87: undefined reference to `__mdiobus_register'
h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.o: in function
`unimac_mdio_reset':
> drivers/net/mdio/mdio-bcm-unimac.c:181: undefined reference to
`mdiobus_read'
h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.o: in
function `unimac_mdio_remove':
> drivers/net/mdio/mdio-bcm-unimac.c:305: undefined reference to
`mdiobus_unregister'
> h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.c:306: undefined reference to
`mdiobus_free'
h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.o: in
function `mdiobus_alloc':
include/linux/phy.h:320: undefined reference to `mdiobus_alloc_size'
h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.o: in function
`unimac_mdio_probe':
> drivers/net/mdio/mdio-bcm-unimac.c:282: undefined reference to
`of_mdiobus_register'
h8300-linux-ld: drivers/net/mdio/mdio-bcm-unimac.c:295:
undefined reference to `mdiobus_free'
h8300-linux-ld: drivers/net/mdio/mdio-bitbang.o: in function `mdiobus_alloc':
include/linux/phy.h:320: undefined reference to `mdiobus_alloc_size'
h8300-linux-ld: drivers/net/mdio/mdio-bitbang.o: in function `free_mdio_bitbang':
> drivers/net/mdio/mdio-bitbang.c:228: undefined reference to
`mdiobus_free'
h8300-linux-ld: drivers/net/mdio/mdio-mvusb.o: in function
`mvusb_mdio_disconnect':
> drivers/net/mdio/mdio-mvusb.c:104: undefined reference to
`mdiobus_unregister'
h8300-linux-ld: drivers/net/mdio/mdio-mvusb.o: in
function `mvusb_mdio_probe':
> drivers/net/mdio/mdio-mvusb.c:96: undefined reference to
`of_mdiobus_register'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.o: in function
`xpcs_read':
drivers/net/pcs/pcs-xpcs.c:151: undefined reference to `mdiobus_read'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.o: in function `xpcs_write':
drivers/net/pcs/pcs-xpcs.c:158: undefined reference to `mdiobus_write'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.c:158: undefined reference to
`mdiobus_write'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.c:158: undefined reference to
`mdiobus_write'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.c:158: undefined reference to
`mdiobus_write'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.c:158: undefined reference to
`mdiobus_write'
h8300-linux-ld: drivers/net/pcs/pcs-xpcs.o:drivers/net/pcs/pcs-xpcs.c:158: more
undefined references to `mdiobus_write' follow
#
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout a9770eac511ad82390b9f4a3c1728e078c387ac7
vim +181 drivers/net/mdio/mdio-bcm-unimac.c
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 143
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 144 /*
Workaround for integrated BCM7xxx Gigabit PHYs which have a problem with
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 145 *
their internal MDIO management controller making them fail to successfully
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 146 * be
read from or written to for the first transaction. We insert a dummy
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 147 *
BMSR read here to make sure that phy_get_device() and get_phy_id() can
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 148 *
correctly read the PHY MII_PHYSID1/2 registers and successfully register a
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 149 * PHY
device for this peripheral.
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 150 *
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 151 *
Once the PHY driver is registered, we can workaround subsequent reads from
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 152 *
there (e.g: during system-wide power management).
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 153 *
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 154 *
bus->reset is invoked before mdiobus_scan during mdiobus_register and is
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 155 *
therefore the right location to stick that workaround. Since we do not want
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 156 * to
read from non-existing PHYs, we either use bus->phy_mask or do a manual
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 157 *
Device Tree scan to limit the search area.
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 158 */
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 159 static
int unimac_mdio_reset(struct mii_bus *bus)
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 160 {
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 161
struct device_node *np = bus->dev.of_node;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 162
struct device_node *child;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 163 u32
read_mask = 0;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 164 int
addr;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 165
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 166 if
(!np) {
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 167
read_mask = ~bus->phy_mask;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 168 }
else {
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 169
for_each_available_child_of_node(np, child) {
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 170
addr = of_mdio_parse_addr(&bus->dev, child);
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 171 if
(addr < 0)
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 172
continue;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 173
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 174
read_mask |= 1 << addr;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 175 }
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 176 }
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 177
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 178 for
(addr = 0; addr < PHY_MAX_ADDR; addr++) {
e23597f7524ba11 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 179 if
(read_mask & 1 << addr) {
e23597f7524ba11 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 180
dev_dbg(&bus->dev, "Workaround for PHY @ %d\n", addr);
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 @181
mdiobus_read(bus, addr, MII_BMSR);
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 182 }
e23597f7524ba11 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 183 }
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 184
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 185
return 0;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 186 }
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 187
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 188 static
void unimac_mdio_clk_set(struct unimac_mdio_priv *priv)
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 189 {
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 190
unsigned long rate;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 191 u32
reg, div;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 192
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 193 /*
Keep the hardware default values */
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 194 if
(!priv->clk_freq)
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 195
return;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 196
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 197 if
(!priv->clk)
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 198 rate
= 250000000;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 199 else
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 200 rate
= clk_get_rate(priv->clk);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 201
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 202 div =
(rate / (2 * priv->clk_freq)) - 1;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 203 if
(div & ~MDIO_CLK_DIV_MASK) {
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 204
pr_warn("Incorrect MDIO clock frequency, ignoring\n");
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 205
return;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 206 }
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 207
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 208 /*
The MDIO clock is the reference clock (typicaly 250Mhz) divided by
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 209 * 2
x (MDIO_CLK_DIV + 1)
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 210 */
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 211 reg =
unimac_mdio_readl(priv, MDIO_CFG);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 212 reg
&= ~(MDIO_CLK_DIV_MASK << MDIO_CLK_DIV_SHIFT);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 213 reg
|= div << MDIO_CLK_DIV_SHIFT;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 214
unimac_mdio_writel(priv, reg, MDIO_CFG);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 215 }
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 216
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 217 static
int unimac_mdio_probe(struct platform_device *pdev)
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 218 {
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 219
struct unimac_mdio_pdata *pdata = pdev->dev.platform_data;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 220
struct unimac_mdio_priv *priv;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 221
struct device_node *np;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 222
struct mii_bus *bus;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 223
struct resource *r;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 224 int
ret;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 225
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 226 np =
pdev->dev.of_node;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 227
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 228 priv
= devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 229 if
(!priv)
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 230
return -ENOMEM;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 231
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 232 r =
platform_get_resource(pdev, IORESOURCE_MEM, 0);
297a6961ffb8ff4 drivers/net/phy/mdio-bcm-unimac.c Wei Yongjun 2018-01-11 233 if
(!r)
297a6961ffb8ff4 drivers/net/phy/mdio-bcm-unimac.c Wei Yongjun 2018-01-11 234
return -EINVAL;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 235
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 236 /*
Just ioremap, as this MDIO block is usually integrated into an
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 237 *
Ethernet MAC controller register range
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 238 */
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 239
priv->base = devm_ioremap(&pdev->dev, r->start, resource_size(r));
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 240 if
(!priv->base) {
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 241
dev_err(&pdev->dev, "failed to remap register\n");
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 242
return -ENOMEM;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 243 }
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 244
c312c7818b86b66 drivers/net/phy/mdio-bcm-unimac.c Andre Przywara 2020-03-24 245
priv->clk = devm_clk_get_optional(&pdev->dev, NULL);
c312c7818b86b66 drivers/net/phy/mdio-bcm-unimac.c Andre Przywara 2020-03-24 246 if
(IS_ERR(priv->clk))
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 247
return PTR_ERR(priv->clk);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 248
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 249 ret =
clk_prepare_enable(priv->clk);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 250 if
(ret)
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 251
return ret;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 252
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 253 if
(of_property_read_u32(np, "clock-frequency", &priv->clk_freq))
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 254
priv->clk_freq = 0;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 255
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 256
unimac_mdio_clk_set(priv);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 257
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 258
priv->mii_bus = mdiobus_alloc();
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 259 if
(!priv->mii_bus) {
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 260 ret
= -ENOMEM;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 261 goto
out_clk_disable;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 262 }
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 263
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 264 bus =
priv->mii_bus;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 265
bus->priv = priv;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 266 if
(pdata) {
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 267
bus->name = pdata->bus_name;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 268
priv->wait_func = pdata->wait_func;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 269
priv->wait_func_data = pdata->wait_func_data;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 270
bus->phy_mask = ~pdata->phy_mask;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 271 }
else {
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 272
bus->name = "unimac MII bus";
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 273
priv->wait_func_data = priv;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 274
priv->wait_func = unimac_mdio_poll;
f248aff86d1fd6e drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 275 }
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 276
bus->parent = &pdev->dev;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 277
bus->read = unimac_mdio_read;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 278
bus->write = unimac_mdio_write;
d8e704e461c2179 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2015-06-26 279
bus->reset = unimac_mdio_reset;
d782f7c935123ad drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2017-07-31 280
snprintf(bus->id, MII_BUS_ID_SIZE, "%s-%d", pdev->name, pdev->id);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 281
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 @282 ret =
of_mdiobus_register(bus, np);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 283 if
(ret) {
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 284
dev_err(&pdev->dev, "MDIO bus registration failed\n");
e7f4dc3536a4009 drivers/net/phy/mdio-bcm-unimac.c Andrew Lunn 2016-01-06 285 goto
out_mdio_free;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 286 }
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 287
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 288
platform_set_drvdata(pdev, priv);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 289
647aed232a7cda6 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2019-03-20 290
dev_info(&pdev->dev, "Broadcom UniMAC MDIO bus\n");
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 291
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 292
return 0;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 293
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 294
out_mdio_free:
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 295
mdiobus_free(bus);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 296
out_clk_disable:
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 297
clk_disable_unprepare(priv->clk);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 298
return ret;
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 299 }
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 300
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 301 static
int unimac_mdio_remove(struct platform_device *pdev)
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 302 {
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 303
struct unimac_mdio_priv *priv = platform_get_drvdata(pdev);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 304
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 @305
mdiobus_unregister(priv->mii_bus);
2ba1b163c9d5d71 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2014-08-27 @306
mdiobus_free(priv->mii_bus);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 307
clk_disable_unprepare(priv->clk);
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 308
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 309
return 0;
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 310 }
b78ac6ecd1b6b46 drivers/net/phy/mdio-bcm-unimac.c Florian Fainelli 2018-09-20 311
:::::: The code at line 181 was first introduced by commit
:::::: d8e704e461c217918cf236f49276e469580afbef net: phy: mdio-bcm-unimac: workaround
initial read failures for integrated PHYs
:::::: TO: Florian Fainelli <f.fainelli(a)gmail.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org