<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-dev/drivers/net/phy, branch linus/master</title>
<subtitle>Linux kernel development work - see feature branches</subtitle>
<id>https://git.zx2c4.com/linux-dev/atom/drivers/net/phy?h=linus%2Fmaster</id>
<link rel='self' href='https://git.zx2c4.com/linux-dev/atom/drivers/net/phy?h=linus%2Fmaster'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/'/>
<updated>2022-06-22T04:59:47Z</updated>
<entry>
<title>net: phy: smsc: Disable Energy Detect Power-Down in interrupt mode</title>
<updated>2022-06-22T04:59:47Z</updated>
<author>
<name>Lukas Wunner</name>
<email>lukas@wunner.de</email>
</author>
<published>2022-06-20T11:04:50Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=2642cc6c3bbe0900ba15bab078fd15ad8baccbc5'/>
<id>urn:sha1:2642cc6c3bbe0900ba15bab078fd15ad8baccbc5</id>
<content type='text'>
Simon reports that if two LAN9514 USB adapters are directly connected
without an intermediate switch, the link fails to come up and link LEDs
remain dark.  The issue was introduced by commit 1ce8b37241ed ("usbnet:
smsc95xx: Forward PHY interrupts to PHY driver to avoid polling").

The PHY suffers from a known erratum wherein link detection becomes
unreliable if Energy Detect Power-Down is used.  In poll mode, the
driver works around the erratum by briefly disabling EDPD for 640 msec
to detect a neighbor, then re-enabling it to save power.

In interrupt mode, no interrupt is signaled if EDPD is used by both link
partners, so it must not be enabled at all.

We'll recoup the power savings by enabling SUSPEND1 mode on affected
LAN95xx chips in a forthcoming commit.

Fixes: 1ce8b37241ed ("usbnet: smsc95xx: Forward PHY interrupts to PHY driver to avoid polling")
Reported-by: Simon Han &lt;z.han@kunbus.com&gt;
Signed-off-by: Lukas Wunner &lt;lukas@wunner.de&gt;
Link: https://lore.kernel.org/r/439a3f3168c2f9d44b5fd9bb8d2b551711316be6.1655714438.git.lukas@wunner.de
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: phy: at803x: fix NULL pointer dereference on AR9331 PHY</title>
<updated>2022-06-19T10:52:23Z</updated>
<author>
<name>Oleksij Rempel</name>
<email>o.rempel@pengutronix.de</email>
</author>
<published>2022-06-18T12:23:33Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=9926de7315be3d606cc011a305ad9adb9e8e14c9'/>
<id>urn:sha1:9926de7315be3d606cc011a305ad9adb9e8e14c9</id>
<content type='text'>
Latest kernel will explode on the PHY interrupt config, since it depends
now on allocated priv. So, run probe to allocate priv to fix it.

 ar9331_switch ethernet.1:10 lan0 (uninitialized): PHY [!ahb!ethernet@1a000000!mdio!switch@10:00] driver [Qualcomm Atheros AR9331 built-in PHY] (irq=13)
 CPU 0 Unable to handle kernel paging request at virtual address 0000000a, epc == 8050e8a8, ra == 80504b34
         ...
 Call Trace:
 [&lt;8050e8a8&gt;] at803x_config_intr+0x5c/0xd0
 [&lt;80504b34&gt;] phy_request_interrupt+0xa8/0xd0
 [&lt;8050289c&gt;] phylink_bringup_phy+0x2d8/0x3ac
 [&lt;80502b68&gt;] phylink_fwnode_phy_connect+0x118/0x130
 [&lt;8074d8ec&gt;] dsa_slave_create+0x270/0x420
 [&lt;80743b04&gt;] dsa_port_setup+0x12c/0x148
 [&lt;8074580c&gt;] dsa_register_switch+0xaf0/0xcc0
 [&lt;80511344&gt;] ar9331_sw_probe+0x370/0x388
 [&lt;8050cb78&gt;] mdio_probe+0x44/0x70
 [&lt;804df300&gt;] really_probe+0x200/0x424
 [&lt;804df7b4&gt;] __driver_probe_device+0x290/0x298
 [&lt;804df810&gt;] driver_probe_device+0x54/0xe4
 [&lt;804dfd50&gt;] __device_attach_driver+0xe4/0x130
 [&lt;804dcb00&gt;] bus_for_each_drv+0xb4/0xd8
 [&lt;804dfac4&gt;] __device_attach+0x104/0x1a4
 [&lt;804ddd24&gt;] bus_probe_device+0x48/0xc4
 [&lt;804deb44&gt;] deferred_probe_work_func+0xf0/0x10c
 [&lt;800a0ffc&gt;] process_one_work+0x314/0x4d4
 [&lt;800a17fc&gt;] worker_thread+0x2a4/0x354
 [&lt;800a9a54&gt;] kthread+0x134/0x13c
 [&lt;8006306c&gt;] ret_from_kernel_thread+0x14/0x1c

Same Issue would affect some other PHYs (QCA8081, QCA9561), so fix it
too.

Fixes: 3265f4218878 ("net: phy: at803x: add fiber support")
Signed-off-by: Oleksij Rempel &lt;o.rempel@pengutronix.de&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>phy: aquantia: Fix AN when higher speeds than 1G are not advertised</title>
<updated>2022-06-17T03:25:55Z</updated>
<author>
<name>Claudiu Manoil</name>
<email>claudiu.manoil@nxp.com</email>
</author>
<published>2022-06-10T08:40:37Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=9b7fd1670a94a57d974795acebde843a5c1a354e'/>
<id>urn:sha1:9b7fd1670a94a57d974795acebde843a5c1a354e</id>
<content type='text'>
Even when the eth port is resticted to work with speeds not higher than 1G,
and so the eth driver is requesting the phy (via phylink) to advertise up
to 1000BASET support, the aquantia phy device is still advertising for 2.5G
and 5G speeds.
Clear these advertising defaults when requested.

Cc: Ondrej Spacek &lt;ondrej.spacek@nxp.com&gt;
Fixes: 09c4c57f7bc41 ("net: phy: aquantia: add support for auto-negotiation configuration")
Signed-off-by: Claudiu Manoil &lt;claudiu.manoil@nxp.com&gt;
Link: https://lore.kernel.org/r/20220610084037.7625-1-claudiu.manoil@nxp.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: mdio: unexport __init-annotated mdio_bus_init()</title>
<updated>2022-06-08T17:10:13Z</updated>
<author>
<name>Masahiro Yamada</name>
<email>masahiroy@kernel.org</email>
</author>
<published>2022-06-06T04:53:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=35b42dce619701f1300fb8498dae82c9bb1f0263'/>
<id>urn:sha1:35b42dce619701f1300fb8498dae82c9bb1f0263</id>
<content type='text'>
EXPORT_SYMBOL and __init is a bad combination because the .init.text
section is freed up after the initialization. Hence, modules cannot
use symbols annotated __init. The access to a freed symbol may end up
with kernel panic.

modpost used to detect it, but it has been broken for a decade.

Recently, I fixed modpost so it started to warn it again, then this
showed up in linux-next builds.

There are two ways to fix it:

  - Remove __init
  - Remove EXPORT_SYMBOL

I chose the latter for this case because the only in-tree call-site,
drivers/net/phy/phy_device.c is never compiled as modular.
(CONFIG_PHYLIB is boolean)

Fixes: 90eff9096c01 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
Reported-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Signed-off-by: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Reviewed-by: Russell King (Oracle) &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: phy: dp83867: retrigger SGMII AN when link change</title>
<updated>2022-06-06T16:12:18Z</updated>
<author>
<name>Tan Tee Min</name>
<email>tee.min.tan@linux.intel.com</email>
</author>
<published>2022-05-26T09:03:47Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=c76acfb7e19dcc3a0964e0563770b1d11b8d4540'/>
<id>urn:sha1:c76acfb7e19dcc3a0964e0563770b1d11b8d4540</id>
<content type='text'>
There is a limitation in TI DP83867 PHY device where SGMII AN is only
triggered once after the device is booted up. Even after the PHY TPI is
down and up again, SGMII AN is not triggered and hence no new in-band
message from PHY to MAC side SGMII.

This could cause an issue during power up, when PHY is up prior to MAC.
At this condition, once MAC side SGMII is up, MAC side SGMII wouldn`t
receive new in-band message from TI PHY with correct link status, speed
and duplex info.

As suggested by TI, implemented a SW solution here to retrigger SGMII
Auto-Neg whenever there is a link change.

v2: Add Fixes tag in commit message.

Fixes: 2a10154abcb7 ("net: phy: dp83867: Add TI dp83867 phy")
Cc: &lt;stable@vger.kernel.org&gt; # 5.4.x
Signed-off-by: Sit, Michael Wei Hong &lt;michael.wei.hong.sit@intel.com&gt;
Reviewed-by: Voon Weifeng &lt;weifeng.voon@intel.com&gt;
Signed-off-by: Tan Tee Min &lt;tee.min.tan@linux.intel.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Link: https://lore.kernel.org/r/20220526090347.128742-1-tee.min.tan@linux.intel.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: phy: at803x: disable WOL at probe</title>
<updated>2022-05-31T04:21:25Z</updated>
<author>
<name>Viorel Suman</name>
<email>viorel.suman@nxp.com</email>
</author>
<published>2022-05-27T08:49:34Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=d7cd5e06c9dd70a82f1461c7b5f676bc03f5cd61'/>
<id>urn:sha1:d7cd5e06c9dd70a82f1461c7b5f676bc03f5cd61</id>
<content type='text'>
Before 7beecaf7d507b ("net: phy: at803x: improve the WOL feature") patch
"at803x_get_wol" implementation used AT803X_INTR_ENABLE_WOL value to set
WAKE_MAGIC flag, and now AT803X_WOL_EN value is used for the same purpose.
The problem here is that the values of these two bits are different after
hardware reset: AT803X_INTR_ENABLE_WOL=0 after hardware reset, but
AT803X_WOL_EN=1. So now, if called right after boot, "at803x_get_wol" will
set WAKE_MAGIC flag, even if WOL function is not enabled by calling
"at803x_set_wol" function. The patch disables WOL function on probe thus
the behavior is consistent.

Fixes: 7beecaf7d507b ("net: phy: at803x: improve the WOL feature")
Signed-off-by: Viorel Suman &lt;viorel.suman@nxp.com&gt;
Link: https://lore.kernel.org/r/20220527084935.235274-1-viorel.suman@oss.nxp.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: phy: Directly use ida_alloc()/free()</title>
<updated>2022-05-28T11:40:09Z</updated>
<author>
<name>Ke Liu</name>
<email>liuke94@huawei.com</email>
</author>
<published>2022-05-28T04:54:37Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=2f1de254a25bee55600287e2eb2cc12ea389c129'/>
<id>urn:sha1:2f1de254a25bee55600287e2eb2cc12ea389c129</id>
<content type='text'>
Use ida_alloc()/ida_free() instead of deprecated
ida_simple_get()/ida_simple_remove().

Signed-off-by: Ke Liu &lt;liuke94@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: phy: DP83822: enable rgmii mode if phy_interface_is_rgmii</title>
<updated>2022-05-22T20:46:30Z</updated>
<author>
<name>Tommaso Merciai</name>
<email>tommaso.merciai@amarulasolutions.com</email>
</author>
<published>2022-05-20T23:58:46Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=621427fbdada788f18f77238e1c36f463c2cb9d1'/>
<id>urn:sha1:621427fbdada788f18f77238e1c36f463c2cb9d1</id>
<content type='text'>
RGMII mode can be enable from dp83822 straps, and also writing bit 9
of register 0x17 - RMII and Status Register (RCSR).
When phy_interface_is_rgmii rgmii mode must be enabled, same for
contrary, this prevents malconfigurations of hw straps

References:
 - https://www.ti.com/lit/gpn/dp83822i p66

Signed-off-by: Tommaso Merciai &lt;tommaso.merciai@amarulasolutions.com&gt;
Co-developed-by: Michael Trimarchi &lt;michael@amarulasolutions.com&gt;
Suggested-by: Alberto Bianchi &lt;alberto.bianchi@amarulasolutions.com&gt;
Tested-by: Tommaso Merciai &lt;tommaso.merciai@amarulasolutions.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: phy: adin: add support for clock output</title>
<updated>2022-05-19T02:58:25Z</updated>
<author>
<name>Josua Mayer</name>
<email>josua@solid-run.com</email>
</author>
<published>2022-05-17T08:54:30Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=ce3342161edcb9ccac60ed6964652d37de8788c8'/>
<id>urn:sha1:ce3342161edcb9ccac60ed6964652d37de8788c8</id>
<content type='text'>
The ADIN1300 supports generating certain clocks on its GP_CLK pin, as
well as providing the reference clock on CLK25_REF.

Add support for selecting the clock via device-tree properties.

Technically the phy also supports a recovered 125MHz clock for
synchronous ethernet. SyncE should be configured dynamically at
runtime, however Linux does not currently have a toggle for this,
so support is explicitly omitted.

Co-developed-by: Alvaro Karsz &lt;alvaro.karsz@solid-run.com&gt;
Signed-off-by: Alvaro Karsz &lt;alvaro.karsz@solid-run.com&gt;
Signed-off-by: Josua Mayer&lt;josua@solid-run.com&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: phy: marvell: Add errata section 5.1 for Alaska PHY</title>
<updated>2022-05-17T11:45:52Z</updated>
<author>
<name>Leszek Polak</name>
<email>lpolak@arri.de</email>
</author>
<published>2022-05-16T07:08:59Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=65a9dedc11d615d8f104a48d38b4fa226967b4ed'/>
<id>urn:sha1:65a9dedc11d615d8f104a48d38b4fa226967b4ed</id>
<content type='text'>
As per Errata Section 5.1, if EEE is intended to be used, some register
writes must be done once after every hardware reset. This patch now adds
the necessary register writes as listed in the Marvell errata.

Without this fix we experience ethernet problems on some of our boards
equipped with a new version of this ethernet PHY (different supplier).

The fix applies to Marvell Alaska 88E1510/88E1518/88E1512/88E1514
Rev. A0.

Signed-off-by: Leszek Polak &lt;lpolak@arri.de&gt;
Signed-off-by: Stefan Roese &lt;sr@denx.de&gt;
Cc: Marek Behún &lt;kabel@kernel.org&gt;
Cc: Andrew Lunn &lt;andrew@lunn.ch&gt;
Cc: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Cc: Russell King &lt;linux@armlinux.org.uk&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Reviewed-by: Marek Behún &lt;kabel@kernel.org&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Link: https://lore.kernel.org/r/20220516070859.549170-1-sr@denx.de
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
</content>
</entry>
</feed>
