Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (33 commits) af_unix: netns: fix problem of return value IRDA: remove double inclusion of module.h udp: multicast packets need to check namespace net: add documentation for skb recycling key: fix setkey(8) policy set breakage bpa10x: free sk_buff with kfree_skb xfrm: do not leak ESRCH to user space net: Really remove all of LOOPBACK_TSO code. netfilter: nf_conntrack_proto_gre: switch to register_pernet_gen_subsys() netns: add register_pernet_gen_subsys/unregister_pernet_gen_subsys net: delete excess kernel-doc notation pppoe: Fix socket leak. gianfar: Don't reset TBI<->SerDes link if it's already up gianfar: Fix race in TBI/SerDes configuration at91_ether: request/free GPIO for PHY interrupt amd8111e: fix dma_free_coherent context atl1: fix vlan tag regression SMC91x: delete unused local variable "lp" myri10ge: fix stop/go mmio ordering bonding: fix panic when taking bond interface down before removing module ...
This commit is contained in:
@ -223,6 +223,8 @@ static int gfar_mdio_of_init_one(struct device_node *np)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* The gianfar device will try to use the same ID created below to find
|
||||
* this bus, to coordinate register access (since they share). */
|
||||
mdio_dev = platform_device_register_simple("fsl-gianfar_mdio",
|
||||
res.start&0xfffff, &res, 1);
|
||||
if (IS_ERR(mdio_dev))
|
||||
@ -394,6 +396,30 @@ static int __init gfar_of_init(void)
|
||||
of_node_put(mdio);
|
||||
}
|
||||
|
||||
/* Get MDIO bus controlled by this eTSEC, if any. Normally only
|
||||
* eTSEC 1 will control an MDIO bus, not necessarily the same
|
||||
* bus that its PHY is on ('mdio' above), so we can't just use
|
||||
* that. What we do is look for a gianfar mdio device that has
|
||||
* overlapping registers with this device. That's really the
|
||||
* whole point, to find the device sharing our registers to
|
||||
* coordinate access with it.
|
||||
*/
|
||||
for_each_compatible_node(mdio, NULL, "fsl,gianfar-mdio") {
|
||||
if (of_address_to_resource(mdio, 0, &res))
|
||||
continue;
|
||||
|
||||
if (res.start >= r[0].start && res.end <= r[0].end) {
|
||||
/* Get the ID the mdio bus platform device was
|
||||
* registered with. gfar_data.bus_id is
|
||||
* different because it's for finding a PHY,
|
||||
* while this is for finding a MII bus.
|
||||
*/
|
||||
gfar_data.mdio_bus = res.start&0xfffff;
|
||||
of_node_put(mdio);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ret =
|
||||
platform_device_add_data(gfar_dev, &gfar_data,
|
||||
sizeof(struct
|
||||
|
Reference in New Issue
Block a user