Merge branch 'emaclite-improve-error-handling-and-minor-cleanup'
Radhey Shyam Pandey says: ==================== emaclite: improve error handling and minor cleanup This patchset does error handling for of_address_to_resource() and also removes "Don't advertise 1000BASE-T" and auto negotiation. Changes for v3: - Resolve git apply conflicts for 2/2 patch. Changes for v2: - Added Andrew's reviewed by tag in 1/2 patch. - Move ret to down to align with reverse xmas tree style in 2/2 patch. - Also add fixes tag in 2/2 patch. - Specify tree name in subject prefix. ==================== Link: https://lore.kernel.org/r/1651476470-23904-1-git-send-email-radhey.shyam.pandey@xilinx.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
45c77fb418
@ -823,10 +823,10 @@ static int xemaclite_mdio_write(struct mii_bus *bus, int phy_id, int reg,
|
||||
static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev)
|
||||
{
|
||||
struct mii_bus *bus;
|
||||
int rc;
|
||||
struct resource res;
|
||||
struct device_node *np = of_get_parent(lp->phy_node);
|
||||
struct device_node *npp;
|
||||
int rc, ret;
|
||||
|
||||
/* Don't register the MDIO bus if the phy_node or its parent node
|
||||
* can't be found.
|
||||
@ -836,8 +836,14 @@ static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev)
|
||||
return -ENODEV;
|
||||
}
|
||||
npp = of_get_parent(np);
|
||||
|
||||
of_address_to_resource(npp, 0, &res);
|
||||
ret = of_address_to_resource(npp, 0, &res);
|
||||
of_node_put(npp);
|
||||
if (ret) {
|
||||
dev_err(dev, "%s resource error!\n",
|
||||
dev->of_node->full_name);
|
||||
of_node_put(np);
|
||||
return ret;
|
||||
}
|
||||
if (lp->ndev->mem_start != res.start) {
|
||||
struct phy_device *phydev;
|
||||
phydev = of_phy_find_device(lp->phy_node);
|
||||
@ -846,6 +852,7 @@ static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev)
|
||||
"MDIO of the phy is not registered yet\n");
|
||||
else
|
||||
put_device(&phydev->mdio.dev);
|
||||
of_node_put(np);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -858,6 +865,7 @@ static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev)
|
||||
bus = mdiobus_alloc();
|
||||
if (!bus) {
|
||||
dev_err(dev, "Failed to allocate mdiobus\n");
|
||||
of_node_put(np);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -870,6 +878,7 @@ static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev)
|
||||
bus->parent = dev;
|
||||
|
||||
rc = of_mdiobus_register(bus, np);
|
||||
of_node_put(np);
|
||||
if (rc) {
|
||||
dev_err(dev, "Failed to register mdio bus.\n");
|
||||
goto err_register;
|
||||
@ -926,8 +935,6 @@ static int xemaclite_open(struct net_device *dev)
|
||||
xemaclite_disable_interrupts(lp);
|
||||
|
||||
if (lp->phy_node) {
|
||||
u32 bmcr;
|
||||
|
||||
lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node,
|
||||
xemaclite_adjust_link, 0,
|
||||
PHY_INTERFACE_MODE_MII);
|
||||
@ -938,19 +945,6 @@ static int xemaclite_open(struct net_device *dev)
|
||||
|
||||
/* EmacLite doesn't support giga-bit speeds */
|
||||
phy_set_max_speed(lp->phy_dev, SPEED_100);
|
||||
|
||||
/* Don't advertise 1000BASE-T Full/Half duplex speeds */
|
||||
phy_write(lp->phy_dev, MII_CTRL1000, 0);
|
||||
|
||||
/* Advertise only 10 and 100mbps full/half duplex speeds */
|
||||
phy_write(lp->phy_dev, MII_ADVERTISE, ADVERTISE_ALL |
|
||||
ADVERTISE_CSMA);
|
||||
|
||||
/* Restart auto negotiation */
|
||||
bmcr = phy_read(lp->phy_dev, MII_BMCR);
|
||||
bmcr |= (BMCR_ANENABLE | BMCR_ANRESTART);
|
||||
phy_write(lp->phy_dev, MII_BMCR, bmcr);
|
||||
|
||||
phy_start(lp->phy_dev);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user