On March 24, 2016 2:16:30 PM PDT, bryan.whiteh...@microchip.com wrote: >> -----Original Message----- >Hi Andrew, > >Sorry to bother you with this. But I'm having major difficulty with >getting my dsa driver entry points called. > >Here is what I've done so far. > >I copied drivers/net/dsa/mv88x6060.c into >drivers/net/dsa/mchp9352_dsa.c >I then modified mchp9352_dsa.c as follows >I emptied out the function bodies, and replaced them with a printk("Not >Implemented\n"); > >I did the same thing with net/dsa/tag_trailer.c which was copied into >net/dsa/tag_mchp9352.c >And function bodies were replaced with printk("Not Implemented\n"); > >I also modified net/dsa/dsa.c, and net/dsa/slave.c, to include the >hooks into my new tag files. > >My intent was to just see one of my "Not Implemented" functions called, >and then I would focus on implementing it. > >But so far I have not seen any of my "Not Implemented" functions >called. > >Here is what I know so far. > >It appears the dsa.c is not able to attach my underlying net device. >And that seems to be due to it is unable to find the mdio_bus. >So I modified my net device driver so that in probe it calls >of_mdiobus_register instead of mdiobus_register. >And of_mdiobus_register seems to be looking for some kind of phy >definitions in the device tree, which it does not find. And so it does >not appear to register the bus in such a way that dsa.c can connect to >it.
If the lan9352 HW has a MDIO bus, which connects to internal switch, or PHYs from the switch, there must be an mii_bus structure allocated and registered to make that available. > >So the problem appears to be an issue with my device tree, which is >partially shown below. > >&gpmc { > status = "okay"; > ranges = <0 0 0x10000000 0x08000000>; // CS0: 128M > pinctrl-names = "default"; > pinctrl-0 = <&gpmc_pins>; > lan9352: ethernet@gpmc { > compatible = "microchip,lan9352"; > interrupt-parent = <&gpio0>; > interrupts = <7 8>;//7==GPIO bit 7, 8 = Active low level > triggered. > > bank-width = <2>; > > phy-mode = "mii"; Having a phy-mode without a phy-handle property or fixed-phy subnode does not sound correct nor useful. Considering that you are interfaced to a built-in switch a fixed-link subnode is needed to tell the Ethernet MAC about the link parameters. See drivers/net/ethernet/broadcom/bcmsysport.c for an example by grepping for fixed_phy. > > reg = <0 0 0x10000>; > > reg-io-width = <4>; > microchip,save-mac-address; > microchip,irq-push-pull; > > }; >}; > >/ { > dsa@0 { > compatible = "microchip,dsa"; Did you also update net/dsa/dsa.c so it tries to match this compatible string? DSA is right now a platform device (though there is pending working from Andrew to change that) so we need a way to probe DSA. > #address-cells = <2>; > #size-cells = <0>; > dsa,ethernet = <&lan9352>; That looks correct. > dsa,mii-bus = <&lan9352>; But not that one, this must point to a device tree node which is a MDIO bus controller. It could be a sub-node to lan9352 provided that there is a way to expose a MDIO bus controller. Moving forward, with Andrew's latest patches included, this may become entirely optional, but it is not just now. -- Florian