projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'video-for-2020.01' of https://gitlab.denx.de/u-boot/custodians/u-boot...
[oweals/u-boot.git]
/
common
/
miiphyutil.c
diff --git
a/common/miiphyutil.c
b/common/miiphyutil.c
index 08aa854efe49bdea3ff3b1e4b948165ed93f21c6..2db067876e4b8f58263ddf2ceca8209f0f5e207d 100644
(file)
--- a/
common/miiphyutil.c
+++ b/
common/miiphyutil.c
@@
-1,8
+1,7
@@
+// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2001
* Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com.
/*
* (C) Copyright 2001
* Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com.
- *
- * SPDX-License-Identifier: GPL-2.0+
*/
/*
*/
/*
@@
-107,6
+106,18
@@
int mdio_register(struct mii_dev *bus)
return 0;
}
return 0;
}
+int mdio_register_seq(struct mii_dev *bus, int seq)
+{
+ int ret;
+
+ /* Setup a unique name for each mdio bus */
+ ret = snprintf(bus->name, MDIO_NAME_LEN, "eth%d", seq);
+ if (ret < 0)
+ return ret;
+
+ return mdio_register(bus);
+}
+
int mdio_unregister(struct mii_dev *bus)
{
if (!bus)
int mdio_unregister(struct mii_dev *bus)
{
if (!bus)
@@
-135,7
+146,7
@@
void mdio_list_devices(void)
struct phy_device *phydev = bus->phymap[i];
if (phydev) {
struct phy_device *phydev = bus->phymap[i];
if (phydev) {
- printf("%
d
- %s", i, phydev->drv->name);
+ printf("%
x
- %s", i, phydev->drv->name);
if (phydev->dev)
printf(" <--> %s\n", phydev->dev->name);
if (phydev->dev)
printf(" <--> %s\n", phydev->dev->name);
@@
-166,6
+177,11
@@
struct mii_dev *mdio_get_current_dev(void)
return current_mii;
}
return current_mii;
}
+struct list_head *mdio_get_list_head(void)
+{
+ return &mii_devs;
+}
+
struct phy_device *mdio_phydev_for_ethname(const char *ethname)
{
struct list_head *entry;
struct phy_device *mdio_phydev_for_ethname(const char *ethname)
{
struct list_head *entry;
@@
-380,7
+396,7
@@
int miiphy_reset(const char *devname, unsigned char addr)
*/
int miiphy_speed(const char *devname, unsigned char addr)
{
*/
int miiphy_speed(const char *devname, unsigned char addr)
{
- u16 bmcr, anlpar;
+ u16 bmcr, anlpar
, adv
;
#if defined(CONFIG_PHY_GIGE)
u16 btsr;
#if defined(CONFIG_PHY_GIGE)
u16 btsr;
@@
-417,7
+433,12
@@
int miiphy_speed(const char *devname, unsigned char addr)
printf("PHY AN speed");
goto miiphy_read_failed;
}
printf("PHY AN speed");
goto miiphy_read_failed;
}
- return (anlpar & LPA_100) ? _100BASET : _10BASET;
+
+ if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
+ puts("PHY AN adv speed");
+ goto miiphy_read_failed;
+ }
+ return ((anlpar & adv) & LPA_100) ? _100BASET : _10BASET;
}
/* Get speed from basic control settings. */
return (bmcr & BMCR_SPEED100) ? _100BASET : _10BASET;
}
/* Get speed from basic control settings. */
return (bmcr & BMCR_SPEED100) ? _100BASET : _10BASET;
@@
-433,7
+454,7
@@
miiphy_read_failed:
*/
int miiphy_duplex(const char *devname, unsigned char addr)
{
*/
int miiphy_duplex(const char *devname, unsigned char addr)
{
- u16 bmcr, anlpar;
+ u16 bmcr, anlpar
, adv
;
#if defined(CONFIG_PHY_GIGE)
u16 btsr;
#if defined(CONFIG_PHY_GIGE)
u16 btsr;
@@
-475,7
+496,12
@@
int miiphy_duplex(const char *devname, unsigned char addr)
puts("PHY AN duplex");
goto miiphy_read_failed;
}
puts("PHY AN duplex");
goto miiphy_read_failed;
}
- return (anlpar & (LPA_10FULL | LPA_100FULL)) ?
+
+ if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
+ puts("PHY AN adv duplex");
+ goto miiphy_read_failed;
+ }
+ return ((anlpar & adv) & (LPA_10FULL | LPA_100FULL)) ?
FULL : HALF;
}
/* Get speed from basic control settings. */
FULL : HALF;
}
/* Get speed from basic control settings. */