@@ -7666,7 +7666,6 @@ F: Documentation/devicetree/bindings/net/qca,ar803x.yaml
F: Documentation/networking/phy.rst
F: drivers/net/mdio/
F: drivers/net/mdio/acpi_mdio.c
-F: drivers/net/mdio/fwnode_mdio.c
F: drivers/net/mdio/of_mdio.c
F: drivers/net/pcs/
F: drivers/net/phy/
@@ -19,13 +19,6 @@ config MDIO_BUS
reflects whether the mdio_bus/mdio_device code is built as a
loadable module or built-in.
-config FWNODE_MDIO
- def_tristate PHYLIB
- depends on (ACPI || OF) || COMPILE_TEST
- select FIXED_PHY
- help
- FWNODE MDIO bus (Ethernet PHY) accessors
-
config OF_MDIO
def_tristate PHYLIB
depends on OF
@@ -2,7 +2,6 @@
# Makefile for Linux MDIO bus drivers
obj-$(CONFIG_ACPI_MDIO) += acpi_mdio.o
-obj-$(CONFIG_FWNODE_MDIO) += fwnode_mdio.o
obj-$(CONFIG_OF_MDIO) += of_mdio.o
obj-$(CONFIG_MDIO_ASPEED) += mdio-aspeed.o
@@ -10,8 +10,8 @@
#include <linux/acpi_mdio.h>
#include <linux/bits.h>
#include <linux/dev_printk.h>
-#include <linux/fwnode_mdio.h>
#include <linux/module.h>
+#include <linux/phy.h>
#include <linux/types.h>
MODULE_AUTHOR("Calvin Johnson <calvin.johnson@oss.nxp.com>");
deleted file mode 100644
@@ -1,186 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * fwnode helpers for the MDIO (Ethernet PHY) API
- *
- * This file provides helper functions for extracting PHY device information
- * out of the fwnode and using it to populate an mii_bus.
- */
-
-#include <linux/acpi.h>
-#include <linux/fwnode_mdio.h>
-#include <linux/of.h>
-#include <linux/phy.h>
-#include <linux/pse-pd/pse.h>
-
-MODULE_AUTHOR("Calvin Johnson <calvin.johnson@oss.nxp.com>");
-MODULE_LICENSE("GPL");
-
-static struct pse_control *
-fwnode_find_pse_control(struct fwnode_handle *fwnode)
-{
- struct pse_control *psec;
- struct device_node *np;
-
- if (!IS_ENABLED(CONFIG_PSE_CONTROLLER))
- return NULL;
-
- np = to_of_node(fwnode);
- if (!np)
- return NULL;
-
- psec = of_pse_control_get(np);
- if (PTR_ERR(psec) == -ENOENT)
- return NULL;
-
- return psec;
-}
-
-static struct mii_timestamper *
-fwnode_find_mii_timestamper(struct fwnode_handle *fwnode)
-{
- struct of_phandle_args arg;
- int err;
-
- if (is_acpi_node(fwnode))
- return NULL;
-
- err = of_parse_phandle_with_fixed_args(to_of_node(fwnode),
- "timestamper", 1, 0, &arg);
- if (err == -ENOENT)
- return NULL;
- else if (err)
- return ERR_PTR(err);
-
- if (arg.args_count != 1)
- return ERR_PTR(-EINVAL);
-
- return register_mii_timestamper(arg.np, arg.args[0]);
-}
-
-int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
- struct phy_device *phy,
- struct fwnode_handle *child, u32 addr)
-{
- int rc;
-
- rc = fwnode_irq_get(child, 0);
- /* Don't wait forever if the IRQ provider doesn't become available,
- * just fall back to poll mode
- */
- if (rc == -EPROBE_DEFER)
- rc = driver_deferred_probe_check_state(&phy->mdio.dev);
- if (rc == -EPROBE_DEFER)
- return rc;
-
- if (rc > 0) {
- phy->irq = rc;
- mdio->irq[addr] = rc;
- } else {
- phy->irq = mdio->irq[addr];
- }
-
- if (fwnode_property_read_bool(child, "broken-turn-around"))
- mdio->phy_ignore_ta_mask |= 1 << addr;
-
- fwnode_property_read_u32(child, "reset-assert-us",
- &phy->mdio.reset_assert_delay);
- fwnode_property_read_u32(child, "reset-deassert-us",
- &phy->mdio.reset_deassert_delay);
-
- /* Associate the fwnode with the device structure so it
- * can be looked up later
- */
- fwnode_handle_get(child);
- device_set_node(&phy->mdio.dev, child);
-
- /* All data is now stored in the phy struct;
- * register it
- */
- rc = phy_device_register(phy);
- if (rc) {
- device_set_node(&phy->mdio.dev, NULL);
- fwnode_handle_put(child);
- return rc;
- }
-
- dev_dbg(&mdio->dev, "registered phy %p fwnode at address %i\n",
- child, addr);
- return 0;
-}
-EXPORT_SYMBOL(fwnode_mdiobus_phy_device_register);
-
-int fwnode_mdiobus_register_phy(struct mii_bus *bus,
- struct fwnode_handle *child, u32 addr)
-{
- struct phy_device_config config = {
- .mii_bus = bus,
- .phy_addr = addr,
- };
- struct mii_timestamper *mii_ts = NULL;
- struct pse_control *psec = NULL;
- struct phy_device *phy;
- u32 phy_id;
- int rc;
-
- psec = fwnode_find_pse_control(child);
- if (IS_ERR(psec))
- return PTR_ERR(psec);
-
- mii_ts = fwnode_find_mii_timestamper(child);
- if (IS_ERR(mii_ts)) {
- rc = PTR_ERR(mii_ts);
- goto clean_pse;
- }
-
- config.is_c45 = fwnode_device_is_compatible(child, "ethernet-phy-ieee802.3-c45");
- if (config.is_c45 || fwnode_get_phy_id(child, &config.phy_id))
- phy = get_phy_device(&config);
- else
- phy = phy_device_create(&config);
- if (IS_ERR(phy)) {
- rc = PTR_ERR(phy);
- goto clean_mii_ts;
- }
-
- if (is_acpi_node(child)) {
- phy->irq = bus->irq[addr];
-
- /* Associate the fwnode with the device structure so it
- * can be looked up later.
- */
- phy->mdio.dev.fwnode = fwnode_handle_get(child);
-
- /* All data is now stored in the phy struct, so register it */
- rc = phy_device_register(phy);
- if (rc) {
- phy->mdio.dev.fwnode = NULL;
- fwnode_handle_put(child);
- goto clean_phy;
- }
- } else if (is_of_node(child)) {
- rc = fwnode_mdiobus_phy_device_register(bus, phy, child, addr);
- if (rc)
- goto clean_phy;
- }
-
- phy->psec = psec;
-
- /* phy->mii_ts may already be defined by the PHY driver. A
- * mii_timestamper probed via the device tree will still have
- * precedence.
- */
- if (mii_ts)
- phy->mii_ts = mii_ts;
-
- return 0;
-
-clean_phy:
- phy_device_free(phy);
-clean_mii_ts:
- unregister_mii_timestamper(mii_ts);
-clean_pse:
- pse_control_put(psec);
-
- return rc;
-}
-EXPORT_SYMBOL(fwnode_mdiobus_register_phy);
@@ -10,7 +10,6 @@
#include <linux/device.h>
#include <linux/err.h>
-#include <linux/fwnode_mdio.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/netdevice.h>
deleted file mode 100644
@@ -1,35 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * FWNODE helper for the MDIO (Ethernet PHY) API
- */
-
-#ifndef __LINUX_FWNODE_MDIO_H
-#define __LINUX_FWNODE_MDIO_H
-
-#include <linux/phy.h>
-
-#if IS_ENABLED(CONFIG_FWNODE_MDIO)
-int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
- struct phy_device *phy,
- struct fwnode_handle *child, u32 addr);
-
-int fwnode_mdiobus_register_phy(struct mii_bus *bus,
- struct fwnode_handle *child, u32 addr);
-
-#else /* CONFIG_FWNODE_MDIO */
-int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
- struct phy_device *phy,
- struct fwnode_handle *child, u32 addr)
-{
- return -EINVAL;
-}
-
-static inline int fwnode_mdiobus_register_phy(struct mii_bus *bus,
- struct fwnode_handle *child,
- u32 addr)
-{
- return -EINVAL;
-}
-#endif
-
-#endif /* __LINUX_FWNODE_MDIO_H */