linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heiner Kallweit <hkallweit1@gmail.com>
To: Saravana Kannan <saravanak@google.com>, Andrew Lunn <andrew@lunn.ch>
Cc: Russell King <linux@armlinux.org.uk>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Android Kernel Team <kernel-team@android.com>,
	netdev <netdev@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Jon Hunter <jonathanh@nvidia.com>
Subject: Re: phy_attach_direct()'s use of device_bind_driver()
Date: Thu, 11 Feb 2021 08:31:03 +0100	[thread overview]
Message-ID: <4f0086ad-1258-063d-0ace-fe4c6c114991@gmail.com> (raw)
In-Reply-To: <CAGETcx-tBw_=VPvQVYcpPJBJjgQvp8UASrdMdSbSduahZpJf9w@mail.gmail.com>

On 11.02.2021 00:29, Saravana Kannan wrote:
> On Wed, Feb 10, 2021 at 2:52 PM Andrew Lunn <andrew@lunn.ch> wrote:
>>
>> On Wed, Feb 10, 2021 at 02:13:48PM -0800, Saravana Kannan wrote:
>>> Hi,
>>>
>>> This email was triggered by this other email[1].
>>>
>>> Why is phy_attach_direct() directly calling device_bind_driver()
>>> instead of using bus_probe_device()?
>>
>> Hi Saravana
>>
>> So this is to do with the generic PHY, which is a special case.
>>
>> First the normal case. The MDIO bus driver registers an MDIO bus using
>> mdiobus_register(). This will enumerate the bus, finding PHYs on
>> it. Each PHY device is registered with the device core, using the
>> usual device_add(). The core will go through the registered PHY
>> drivers and see if one can drive this hardware, based on the ID
>> registers the PHY has at address 2 and 3. If a match is found, the
>> driver probes the device, all in the usual way.
>>
>> Sometime later, the MAC driver wants to make use of the PHY
>> device. This is often in the open() call of the MAC driver, when the
>> interface is configured up. The MAC driver asks phylib to associate a
>> PHY devices to the MAC device. In the normal case, the PHY has been
>> probed, and everything is good to go.
>>
>> However, sometimes, there is no driver for the PHY. There is no driver
>> for that hardware. Or the driver has not been built, or it is not on
>> the disk, etc. So the device core has not been able to probe
>> it. However, IEEE 802.3 clause 22 defines a minimum set of registers a
>> PHY should support. And most PHY devices have this minimum. So there
>> is a fall back driver, the generic PHY driver. It assumes the minimum
>> registers are available, and does its best to drive the hardware. It
>> often works, but not always. So if the MAC asks phylib to connect to a
>> PHY which does not have a driver, we forcefully bind the generic
>> driver to the device, and hope for the best.
> 
> Thanks for the detailed answer Andrew! I think it gives me enough
> info/context to come up with a proper fix.
> 
>> We don't actually recommend using the generic driver. Use the specific
>> driver for the hardware. But the generic driver can at least get you
>> going, allow you to scp the correct driver onto the system, etc.
> 
> I'm not sure if I can control what driver they use. If I can fix this
> warning, I'll probably try to do that.
> 
The genphy driver is a last resort, at least they lose functionality like
downshift detection and control. Therefore they should go with the
dedicated Marvell PHY driver.

But right, this avoids the warning, but the underlying issue (probably
in device_bind_driver()) still exists. Would be good if you can fix it.

> -Saravana
> 

Heiner

  reply	other threads:[~2021-02-11  7:32 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 22:13 phy_attach_direct()'s use of device_bind_driver() Saravana Kannan
2021-02-10 22:40 ` Heiner Kallweit
2021-02-10 22:52 ` Andrew Lunn
2021-02-10 23:29   ` Saravana Kannan
2021-02-11  7:31     ` Heiner Kallweit [this message]
2021-02-11  8:57       ` Saravana Kannan
2021-02-11  9:29         ` Heiner Kallweit
2021-02-11 13:57         ` Andrew Lunn
2021-02-12  3:42           ` Saravana Kannan
2021-02-12 14:04             ` Andrew Lunn
2021-02-10 22:56 ` Andrew Lunn
2021-02-11 10:21   ` Jon Hunter
2021-02-11 14:03     ` Andrew Lunn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4f0086ad-1258-063d-0ace-fe4c6c114991@gmail.com \
    --to=hkallweit1@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=jonathanh@nvidia.com \
    --cc=kernel-team@android.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=saravanak@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).