All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: netdev <netdev@vger.kernel.org>
Subject: Re: [RFC PATCH net-next 0/2] DT MDIO bus of fixed phys
Date: Mon, 14 Mar 2016 09:51:47 -0700	[thread overview]
Message-ID: <56E6EC23.9080301@gmail.com> (raw)
In-Reply-To: <20160312001224.GE23969@lunn.ch>

On 11/03/16 16:12, Andrew Lunn wrote:
>>>> Humm, if that's the problem we want to solve, we could introduce a
>>>> helper function which tries to locate the phy using a 'phy-handle'
>>>> property
>>>
>>> I don't follow you. Where do you get a phandle from to use with
>>> phy-handle?
>>
>> >From the caller of the function: the consumer of that phy-handle and/or
>> fixed-link property which is either an Ethernet MAC driver or a DSA's
>> switch port node.
> 
> I still don't get it. Lets take a real example. I currently have this
> in one of my dts files:
> 
> &fec1 {
>        phy-mode = "rmii";
>        pinctrl-names = "default";
>        pinctrl-0 = <&pinctrl_fec1>;
>        status = "okay";
> 
>        fixed-link {
>                   speed = <100>;
>                   full-duplex;
>        };
> };

All drivers have this exact same structure:

&fec1 {
	phy-handle = <XYZ>;
	or
	fixed-link {
		speed = <100>;
		full-duplex;
	};
};

In both cases, the argument that this proposed helper function would
take is a struct device_node pointing to &fec1 here. You could therefore
imagine having something along these lines:

struct device_node *of_get_phy_by_phandle(struct device_node *dn, bool
try_fixed_link)
{
	struct device_node *phy_dn;
	int ret;

	phy_dn = of_parse_phandle(dn, "phy-handle", 0);
	if (!phy_dn && !try_fixed_link)
		return -ENODEV;

	if (of_phy_is_fixed_link(dn)) {
		ret  = of_phy_register_fixed_link(dn);
		if (ret)
			return PTR_ERR(-ret);

		phy_dn = of_node_get(dn);
	}

	return phy_dn;		
}

In fact, we could even remove the "try_fixed_link" argument and just see
if of_phy_is_fixed_link() returns true. Yes, this is not a proper
device_node pointing to the emulated PHY, but without introducing
binding changes, that is probably the best we can do.

I mistakenly used the term 'phandle' when I actually meant 'struct
device_node' reference.
-- 
Florian

  reply	other threads:[~2016-03-14 16:53 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11 23:08 [RFC PATCH net-next 0/2] DT MDIO bus of fixed phys Andrew Lunn
2016-03-11 23:08 ` [RFC PATCH net-next 1/2] of: of_mdio: Factor out fixed-link parsing Andrew Lunn
2016-03-11 23:08 ` [RFC PATCH net-next 2/2] phy: fixed-phy: Allow DT description of an MDIO bus and PHYs Andrew Lunn
2016-03-11 23:30   ` Florian Fainelli
2016-03-12  0:05     ` Andrew Lunn
2016-03-12 17:32     ` Andrew Lunn
2016-03-11 23:26 ` [RFC PATCH net-next 0/2] DT MDIO bus of fixed phys Florian Fainelli
2016-03-11 23:36   ` Andrew Lunn
2016-03-11 23:38     ` Florian Fainelli
2016-03-12  0:12       ` Andrew Lunn
2016-03-14 16:51         ` Florian Fainelli [this message]
2016-03-14 19:04           ` 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=56E6EC23.9080301@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.