add fixed_phy_update_state() - update state of fixed_phy
authorStas Sergeev <stsp@list.ru>
Wed, 1 Apr 2015 17:30:31 +0000 (20:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Apr 2015 19:08:20 +0000 (15:08 -0400)
commita3bebdce4135a44d09e96ba66c40797c8f9fa902
tree8627743774e7dbf217f0d46c770a7baa6002b067
parentbcad57182425426dd4aa14deb27f97acb329f3cd
add fixed_phy_update_state() - update state of fixed_phy

Currently fixed_phy uses a callback to periodically poll the link state.
This patch adds the fixed_phy_update_state() API.
It solves the following problems:
- On link state interrupt, MAC driver can't update status.
Instead it needs to provide the callback to periodically query
the HW about the link state. It is more efficient to update status
after interrupt.
- The callback needs to be unregistered before phy_disconnect(),
or otherwise it will be called with net_dev==NULL. phy_disconnect()
does not have enough info to unregister the callback automatically.
- The callback needs to be registered before of_phy_connect() to
avoid running with outdated state, but of_phy_connect() returns the
phy_device pointer, which is needed to register the callback. Registering
it before of_phy_connect() will therefore require a hack to get the
pointer earlier.

Overall, this addition makes the subsequent patch that implements
SGMII link status for mvneta, much cleaner.

CC: Florian Fainelli <f.fainelli@gmail.com>
CC: netdev@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Signed-off-by: Stas Sergeev <stsp@users.sourceforge.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/fixed_phy.c
include/linux/phy_fixed.h
This page took 0.026245 seconds and 5 git commands to generate.