Re: [PATCH 09/14] net: Rework gianfar driver to use of_mdio infrastructure.

Grant Likely
2009-04-18T06:34:21Z

On Wed, Apr 15, 2009 at 5:01 PM, Andy Fleming <afleming@freescale.com> wrote:
>
> On Mar 31, 2009, at 3:27 AM, Grant Likely wrote:
>
>> From: Grant Likely <grant.likely@secretlab.ca>
>>
>> This patch simplifies the driver by making use of more common code.
>>
>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>> ---
>>
>> drivers/net/gianfar.c |  103
>> ++++++++++++++++++-------------------------------
>> drivers/net/gianfar.h |    3 +
>> 2 files changed, 40 insertions(+), 66 deletions(-)
>>
>>
>> diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
>> index 65f5587..c22eba9 100644
>> @@ -699,23 +657,38 @@ static int init_phy(struct net_device *dev)
>>
>>
>> +       if (priv->tbi_node) {
>> +               priv->tbiphy = of_phy_connect(dev, priv->tbi_node,
>> &adjust_link,
>> +                                             0, interface);
>> +               if (!priv->tbiphy) {
>> +                       dev_err(&dev->dev, "error: Could not attach to
>> TBI\n");
>> +                       goto err_tbiphy;
>> +               }
>> +       }
>
> I don't believe we need this.  Certainly, the current code doesn't do
> anything like this.  The TBI node is a special internal PHY used to manage
> SGMII/TBI links.

Actually, it does. gianfar_of_init() used to parse the tbi-handle,
and I've replaced that code with a call to of_parse_phandle() in init
and an of_phy_connect() in init_phy() to get a pointer to the TBI
phy_device. However, you are completely right that calling
of_phy_connect() is entirely the wrong thing to do on the TBI phy. It
should be retrieving the pointer to the phydevice without actually
connecting to it (which forces the phy_driver probe and starts the
state machine). I need to fix this.

g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.