lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 25 Jul 2020 19:54:03 +0530 From: Calvin Johnson <calvin.johnson@....nxp.com> To: "Rafael J . Wysocki" <rafael@...nel.org>, Len Brown <lenb@...nel.org>, Lorenzo Pieralisi <Lorenzo.Pieralisi@....com>, Hanjun Guo <guohanjun@...wei.com>, Sudeep Holla <sudeep.holla@....com>, Al Stone <ahs3@...hat.com>, Jeremy Linton <jeremy.linton@....com>, Russell King - ARM Linux admin <linux@...linux.org.uk>, Jon <jon@...id-run.com>, Cristi Sovaiala <cristian.sovaiala@....com>, Ioana Ciornei <ioana.ciornei@....com>, Andrew Lunn <andrew@...n.ch>, Andy Shevchenko <andy.shevchenko@...il.com>, Florian Fainelli <f.fainelli@...il.com>, Madalin Bucur <madalin.bucur@....nxp.com> Cc: linux-acpi@...r.kernel.org, netdev@...r.kernel.org, linux.cj@...il.com, Paul Yang <Paul.Yang@....com>, Calvin Johnson <calvin.johnson@....nxp.com> Subject: [net-next PATCH v7 5/6] phylink: introduce phylink_fwnode_phy_connect() Define phylink_fwnode_phy_connect() to connect phy specified by a fwnode to a phylink instance. Signed-off-by: Calvin Johnson <calvin.johnson@....nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@...il.com> --- Changes in v7: - assign flags to phy_dev Changes in v6: - clean up phylink_fwnode_phy_connect() Changes in v5: - return -EINVAL for invalid fwnode Changes in v4: None Changes in v3: None Changes in v2: None drivers/net/phy/phylink.c | 32 ++++++++++++++++++++++++++++++++ include/linux/phylink.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 32b4bd6a5b55..c35ae42d9318 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -5,6 +5,7 @@ * * Copyright (C) 2015 Russell King */ +#include <linux/acpi.h> #include <linux/ethtool.h> #include <linux/export.h> #include <linux/gpio/consumer.h> @@ -1118,6 +1119,37 @@ int phylink_of_phy_connect(struct phylink *pl, struct device_node *dn, } EXPORT_SYMBOL_GPL(phylink_of_phy_connect); +/** + * phylink_fwnode_phy_connect() - connect the PHY specified in the fwnode. + * @pl: a pointer to a &struct phylink returned from phylink_create() + * @fwnode: a pointer to a &struct fwnode_handle. + * @flags: PHY-specific flags to communicate to the PHY device driver + * + * Connect the phy specified @fwnode to the phylink instance specified + * by @pl. Actions specified in phylink_connect_phy() will be + * performed. + * + * Returns 0 on success or a negative errno. + */ +int phylink_fwnode_phy_connect(struct phylink *pl, + struct fwnode_handle *fwnode, + u32 flags) +{ + struct phy_device *phy_dev; + + if (is_of_node(fwnode)) + return phylink_of_phy_connect(pl, to_of_node(fwnode), flags); + if (is_acpi_device_node(fwnode)) { + phy_dev = phy_find_by_mdio_handle(fwnode); + if (!phy_dev) + return -ENODEV; + phy_dev->dev_flags |= flags; + return phylink_connect_phy(pl, phy_dev); + } + return -EINVAL; +} +EXPORT_SYMBOL_GPL(phylink_fwnode_phy_connect); + /** * phylink_disconnect_phy() - disconnect any PHY attached to the phylink * instance. diff --git a/include/linux/phylink.h b/include/linux/phylink.h index 1aad2aea4610..ba23b5a1548f 100644 --- a/include/linux/phylink.h +++ b/include/linux/phylink.h @@ -434,6 +434,9 @@ void phylink_destroy(struct phylink *); int phylink_connect_phy(struct phylink *, struct phy_device *); int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags); +int phylink_fwnode_phy_connect(struct phylink *pl, + struct fwnode_handle *fwnode, + u32 flags); void phylink_disconnect_phy(struct phylink *); void phylink_mac_change(struct phylink *, bool up); -- 2.17.1
Powered by blists - more mailing lists