2636ac3cc2
Armada 3700 is a new ARMv8 SoC from Marvell using same network controller as older Armada 370/38x/XP. There are however some differences that needed taking into account when adding support for it: * open default MBUS window to 4GB of DRAM - Armada 3700 SoC's Mbus configuration for network controller has to be done on two levels: global and per-port. The first one is inherited from the bootloader. The latter can be opened in a default way, leaving arbitration to the bus controller. Hence filled mbus_dram_target_info structure is not needed * make per-CPU operation optional - Recent patches adding RSS and XPS support for Armada 38x/XP enabled per-CPU operation of the controller by default. Contrary to older SoC's Armada 3700 SoC's network controller is not capable of per-CPU processing due to interrupt lines' connectivity. This patch restores non-per-CPU operation, which is now optional and depends on neta_armada3700 flag value in mvneta_port structure. In order not to complicate the code, separate interrupt subroutine is implemented. For now, on the Armada 3700, RSS is disabled as the current implementation depend on the per cpu interrupts. [gregory.clement@free-electrons.com: extract from a larger patch, replace some ifdef and port to net-next for v4.10] Signed-off-by: Marcin Wojtas <mw@semihalf.com> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Tested-by: Marcin Wojtas <mw@semihalf.com> Signed-off-by: David S. Miller <davem@davemloft.net>
51 lines
1.8 KiB
Plaintext
51 lines
1.8 KiB
Plaintext
* Marvell Armada 370 / Armada XP / Armada 3700 Ethernet Controller (NETA)
|
|
|
|
Required properties:
|
|
- compatible: could be one of the followings
|
|
"marvell,armada-370-neta"
|
|
"marvell,armada-xp-neta"
|
|
"marvell,armada-3700-neta"
|
|
- reg: address and length of the register set for the device.
|
|
- interrupts: interrupt for the device
|
|
- phy: See ethernet.txt file in the same directory.
|
|
- phy-mode: See ethernet.txt file in the same directory
|
|
- clocks: List of clocks for this device. At least one clock is
|
|
mandatory for the core clock. If several clocks are given, then the
|
|
clock-names property must be used to identify them.
|
|
|
|
Optional properties:
|
|
- tx-csum-limit: maximum mtu supported by port that allow TX checksum.
|
|
Value is presented in bytes. If not used, by default 1600B is set for
|
|
"marvell,armada-370-neta" and 9800B for others.
|
|
- clock-names: List of names corresponding to clocks property; shall be
|
|
"core" for core clock and "bus" for the optional bus clock.
|
|
|
|
|
|
Optional properties (valid only for Armada XP/38x):
|
|
|
|
- buffer-manager: a phandle to a buffer manager node. Please refer to
|
|
Documentation/devicetree/bindings/net/marvell-neta-bm.txt
|
|
- bm,pool-long: ID of a pool, that will accept all packets of a size
|
|
higher than 'short' pool's threshold (if set) and up to MTU value.
|
|
Obligatory, when the port is supposed to use hardware
|
|
buffer management.
|
|
- bm,pool-short: ID of a pool, that will be used for accepting
|
|
packets of a size lower than given threshold. If not set, the port
|
|
will use a single 'long' pool for all packets, as defined above.
|
|
|
|
Example:
|
|
|
|
ethernet@70000 {
|
|
compatible = "marvell,armada-370-neta";
|
|
reg = <0x70000 0x2500>;
|
|
interrupts = <8>;
|
|
clocks = <&gate_clk 4>;
|
|
tx-csum-limit = <9800>
|
|
status = "okay";
|
|
phy = <&phy0>;
|
|
phy-mode = "rgmii-id";
|
|
buffer-manager = <&bm>;
|
|
bm,pool-long = <0>;
|
|
bm,pool-short = <1>;
|
|
};
|