Messages in this thread | | | Date | Sat, 04 Apr 2015 00:25:27 +0300 | From | Stas Sergeev <> | Subject | Re: [PATCH 1/2] add fixed_phy_update_state() - update state of fixed_phy |
| |
03.04.2015 22:25, Florian Fainelli пишет: > On 01/04/15 10:30, Stas Sergeev wrote: >> - 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. In fact, this can't even be done: registering it before of_phy_connect() is an asking for troubles with NULL deref.
>> Overall, this addition makes the subsequent patch that implements >> SGMII link status for mvneta, much cleaner. > Agreed, now that we have that, we should probably just remove the > ability to have a fixed link update callback since it suffers from all > the deficiencies you outlined above, and is creating some overhead by > polling the hardware. In fact, there is still a bit of a problem. You certainly want to set the initial state, so that on of_phy_connect() time it is already valid. For this I still use of_phy_find_device()... This, however, differs from registering the callback: - initial state is set only once; callback should be registered before _every_ of_phy_connect() (but it can't be registered before because of the NULL, so only after) - initial state can be set anywhere anytime, not necessary any near of_phy_connect().
So the problem is mostly solved, but of_phy_find_device() is still there. To get rid of this, I guess some addition to of_mdio may be needed as well. Maybe optionally passing the status directly to of_phy_connect()? Not sure.
| |