Commit 5767c6a8 authored by Russell King (Oracle)'s avatar Russell King (Oracle) Committed by Jakub Kicinski
Browse files

net: dsa: ocelot: use lynx_pcs_create_mdiodev()



Use the newly introduced lynx_pcs_create_mdiodev() which simplifies the
creation and destruction of the lynx PCS.

Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 86b5f2d8
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -1021,7 +1021,6 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
	for (port = 0; port < felix->info->num_ports; port++) {
		struct ocelot_port *ocelot_port = ocelot->ports[port];
		struct phylink_pcs *phylink_pcs;
		struct mdio_device *mdio_device;

		if (dsa_is_unused_port(felix->ds, port))
			continue;
@@ -1029,16 +1028,10 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
		if (ocelot_port->phy_mode == PHY_INTERFACE_MODE_INTERNAL)
			continue;

		mdio_device = mdio_device_create(felix->imdio, port);
		if (IS_ERR(mdio_device))
		phylink_pcs = lynx_pcs_create_mdiodev(felix->imdio, port);
		if (IS_ERR(phylink_pcs))
			continue;

		phylink_pcs = lynx_pcs_create(mdio_device);
		if (!phylink_pcs) {
			mdio_device_free(mdio_device);
			continue;
		}

		felix->pcs[port] = phylink_pcs;

		dev_info(dev, "Found PCS at internal MDIO address %d\n", port);
@@ -1054,13 +1047,8 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)

	for (port = 0; port < ocelot->num_phys_ports; port++) {
		struct phylink_pcs *phylink_pcs = felix->pcs[port];
		struct mdio_device *mdio_device;

		if (!phylink_pcs)
			continue;

		mdio_device = lynx_get_mdio_device(phylink_pcs);
		mdio_device_free(mdio_device);
		if (phylink_pcs)
			lynx_pcs_destroy(phylink_pcs);
	}
	mdiobus_unregister(felix->imdio);
+4 −16
Original line number Diff line number Diff line
@@ -912,7 +912,6 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
	for (port = 0; port < felix->info->num_ports; port++) {
		struct ocelot_port *ocelot_port = ocelot->ports[port];
		struct phylink_pcs *phylink_pcs;
		struct mdio_device *mdio_device;
		int addr = port + 4;

		if (dsa_is_unused_port(felix->ds, port))
@@ -921,16 +920,10 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
		if (ocelot_port->phy_mode == PHY_INTERFACE_MODE_INTERNAL)
			continue;

		mdio_device = mdio_device_create(felix->imdio, addr);
		if (IS_ERR(mdio_device))
		phylink_pcs = lynx_pcs_create_mdiodev(felix->imdio, addr);
		if (IS_ERR(phylink_pcs))
			continue;

		phylink_pcs = lynx_pcs_create(mdio_device);
		if (!phylink_pcs) {
			mdio_device_free(mdio_device);
			continue;
		}

		felix->pcs[port] = phylink_pcs;

		dev_info(dev, "Found PCS at internal MDIO address %d\n", addr);
@@ -946,13 +939,8 @@ static void vsc9953_mdio_bus_free(struct ocelot *ocelot)

	for (port = 0; port < ocelot->num_phys_ports; port++) {
		struct phylink_pcs *phylink_pcs = felix->pcs[port];
		struct mdio_device *mdio_device;

		if (!phylink_pcs)
			continue;

		mdio_device = lynx_get_mdio_device(phylink_pcs);
		mdio_device_free(mdio_device);
		if (phylink_pcs)
			lynx_pcs_destroy(phylink_pcs);
	}