Hi all, This series aim two things: making the PPv2 driver less depending on the firmware/bootloader initialization[1], and making the PPv2 driver work when no Ethernet PHY is connected between a port and the physical layer[2]. A few patches cleanup some small parts of the driver, and newly supported interfaces are described in the device trees[3].
[1] The current implementation of the PPv2 driver relies on the firmware/bootloader initialization to configure some parts, as the Group of Ports (GoP) and the MACs (GMAC and/or XLG MAC --for 10G--). The drawback is the kernel must be configured to match exactly what the bootloader configures which is not convenient and is an issue when using boards having an Ethernet port and an SFP port wired to the same GoP port, as no dynamic configuration can be done. This series adds the GoP and GMAC/XLG MAC initializations so that the PPV2 does not have to rely on a previous initialization. One part is still missing from this series, and that would be the 'comphy' which provides shared serdes PHYs and which must be configured as well for a full kernel initialization to work. This comphy support will be part of a following up series. (This series was also tested with this 'comphy' support, as it's nearly ready). Patches 3-7, 11 and 14-15. [2] While the documentation states the phy property in a port node is optional, it is not in the current driver's implementation. This is needed when no PHY is connected between a GoP port and the physical layer (as for the two SFP ports on the 8040-db). One other feature is missing to be able to use such ports: the port link interrupt which allows not to rely on the phylib link event callback. This series makes the phy optional in the PPv2 driver, and then adds the support for the GoP port link interrupt to handle link status changes on such ports. Patches 8-10, 12-14. [3] With the port link interrupt and optional PHY support, the two SFP ports on the Marvell Armada 8040 DB can be described and used; as well as the SFP port on the 7040 DB.. Cosmetic changes / fixes. Patches 1, 2 and 16-18. I intentionally grouped all these patches into one series, as we would end up with series depending on each others (and I already did not include all my patches in this one). If that's an issue for this series to be reviewed/merged, I can easily split it into two series, with a dependency of one on the other. @Dave: Patches 13 to 18 should go through the mvebu tree, thanks :) Thanks! Antoine Antoine Tenart (18): net: mvpp2: unify register definitions coding style net: mvpp2: fix the synchronization module bypass macro name net: mvpp2: set the SMI PHY address when connecting to the PHY net: mvpp2: move the mii configuration in the ndo_open path net: mvpp2: initialize the GMAC when using a port net: mvpp2: initialize the XLG MAC when using a port net: mvpp2: initialize the GoP net: mvpp2: make the phy optional net: mvpp2: use named interrupts net: mvpp2: use the GoP interrupt for link status changes Documentation/bindings: net: marvell-pp2: add the system controller Documentation/bindings: net: marvell-pp2: add the interrupt-names arm64: dts: marvell: cp110: use named interrupts for the Ethernet ports arm64: dts: marvell: cp110: add PPv2 port interrupts arm64: dts: marvell: add a reference to the sysctrl syscon in the ppv2 node arm64: dts: marvell: mcbin: enable more networking ports arm64: dts: marvell: 7040-db: enable the SFP port arm64: dts: marvell: 8040-db: enable the SFP ports .../devicetree/bindings/net/marvell-pp2.txt | 7 + arch/arm64/boot/dts/marvell/armada-7040-db.dts | 5 + arch/arm64/boot/dts/marvell/armada-8040-db.dts | 10 + arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts | 30 ++ .../boot/dts/marvell/armada-cp110-master.dtsi | 13 +- .../arm64/boot/dts/marvell/armada-cp110-slave.dtsi | 13 +- drivers/net/ethernet/marvell/mvpp2.c | 587 ++++++++++++++++++--- 7 files changed, 575 insertions(+), 90 deletions(-) -- 2.13.3