svn commit: r346325 - in stable/12/sys: arm/ti/cpsw dev/fdt
Ed Maste
emaste at FreeBSD.org
Wed Apr 17 17:19:21 UTC 2019
Author: emaste
Date: Wed Apr 17 17:19:19 2019
New Revision: 346325
URL: https://svnweb.freebsd.org/changeset/base/346325
Log:
MFC r345855: cpsw: use `phy-handle` in FDT to find PHY address
In r337703 DTS files were updated to Linux 4.18, including Linux commit
4d8b032d3c03f4e9788a18bbb51b10e6c9e8a56b which removed the `phy_id`
property from am335x-bone-common (as the property was deprecated).
Use `phy-handle` via fdt_get_phyaddr, keeping the existing code as a
fallback for old DTBs.
PR: 236624
Submitted by: manu, Gerald Aryeetey <aryeeteygerald_rogers.com>
Reported by: Gerald Aryeetey
Reviewed by: manu
Sponsored by: The FreeBSD Foundation
Modified:
stable/12/sys/arm/ti/cpsw/if_cpsw.c
stable/12/sys/dev/fdt/fdt_common.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/arm/ti/cpsw/if_cpsw.c
==============================================================================
--- stable/12/sys/arm/ti/cpsw/if_cpsw.c Wed Apr 17 17:18:43 2019 (r346324)
+++ stable/12/sys/arm/ti/cpsw/if_cpsw.c Wed Apr 17 17:19:19 2019 (r346325)
@@ -82,6 +82,8 @@ __FBSDID("$FreeBSD$");
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
+
+#include <dev/fdt/fdt_common.h>
#ifdef CPSW_ETHERSWITCH
#include <dev/etherswitch/etherswitch.h>
@@ -742,7 +744,7 @@ cpsw_get_fdt_data(struct cpsw_softc *sc, int port)
phandle_t child;
unsigned long mdio_child_addr;
- /* Find any slave with phy_id */
+ /* Find any slave with phy-handle/phy_id */
phy = -1;
vlan = -1;
for (child = OF_child(sc->node); child != 0; child = OF_peer(child)) {
@@ -756,11 +758,15 @@ cpsw_get_fdt_data(struct cpsw_softc *sc, int port)
if (mdio_child_addr != slave_mdio_addr[port])
continue;
- len = OF_getproplen(child, "phy_id");
- if (len / sizeof(pcell_t) == 2) {
- /* Get phy address from fdt */
- if (OF_getencprop(child, "phy_id", phy_id, len) > 0)
- phy = phy_id[1];
+ if (fdt_get_phyaddr(child, NULL, &phy, NULL) != 0){
+ /* Users with old DTB will have phy_id instead */
+ phy = -1;
+ len = OF_getproplen(child, "phy_id");
+ if (len / sizeof(pcell_t) == 2) {
+ /* Get phy address from fdt */
+ if (OF_getencprop(child, "phy_id", phy_id, len) > 0)
+ phy = phy_id[1];
+ }
}
len = OF_getproplen(child, "dual_emac_res_vlan");
Modified: stable/12/sys/dev/fdt/fdt_common.c
==============================================================================
--- stable/12/sys/dev/fdt/fdt_common.c Wed Apr 17 17:18:43 2019 (r346324)
+++ stable/12/sys/dev/fdt/fdt_common.c Wed Apr 17 17:19:19 2019 (r346325)
@@ -399,6 +399,9 @@ fdt_get_phyaddr(phandle_t node, device_t dev, int *phy
*phy_addr = phy_reg;
+ if (phy_sc == NULL)
+ return (0);
+
/*
* Search for softc used to communicate with phy.
*/
More information about the svn-src-stable-12
mailing list