Page MenuHomeFreeBSD

D19814.id55783.diff
No OneTemporary

D19814.id55783.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,12 +759,8 @@
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)
+ return (ENXIO);
len = OF_getproplen(child, "dual_emac_res_vlan");
if (len / sizeof(pcell_t) == 1) {
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, Sep 9, 5:16 PM (12 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38600835
Default Alt Text
D19814.id55783.diff (1 KB)

Event Timeline