Page MenuHomeFreeBSD

D19814.id55780.diff
No OneTemporary

D19814.id55780.diff

Index: sys/arm/ti/cpsw/if_cpsw.c
===================================================================
--- sys/arm/ti/cpsw/if_cpsw.c
+++ sys/arm/ti/cpsw/if_cpsw.c
@@ -82,6 +82,8 @@
#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>
@@ -738,13 +740,14 @@
{
char *name;
int len, phy, vlan;
- pcell_t phy_id[3], vlan_id;
+ pcell_t vlan_id;
phandle_t child;
unsigned long mdio_child_addr;
- /* Find any slave with phy_id */
+ /* Find any slave with phy-handle */
phy = -1;
vlan = -1;
+
for (child = OF_child(sc->node); child != 0; child = OF_peer(child)) {
if (OF_getprop_alloc(child, "name", (void **)&name) < 0)
continue;
@@ -756,11 +759,10 @@
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];
+ len = OF_getproplen(child, "phy-handle");
+ if (len / sizeof(pcell_t) == 1) {
+ if (fdt_get_phyaddr(child, NULL, &phy, NULL) != 0)
+ return (ENXIO);
}
len = OF_getproplen(child, "dual_emac_res_vlan");
@@ -774,8 +776,7 @@
break;
}
- if (phy == -1)
- return (ENXIO);
+
sc->port[port].phy = phy;
sc->port[port].vlan = vlan;
Index: sys/dev/fdt/fdt_common.c
===================================================================
--- sys/dev/fdt/fdt_common.c
+++ sys/dev/fdt/fdt_common.c
@@ -399,6 +399,9 @@
*phy_addr = phy_reg;
+ if (phy_sc == NULL)
+ return (0);
+
/*
* Search for softc used to communicate with phy.
*/

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 22, 6:37 PM (3 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35351079
Default Alt Text
D19814.id55780.diff (1 KB)

Event Timeline