forked from Minki/linux
b9b17debc6
Add support for the Qualcomm Technologies, Inc. EMAC gigabit Ethernet controller. This driver supports the following features: 1) Checksum offload. 2) Interrupt coalescing support. 3) SGMII phy. 4) phylib interface for external phy Based on original work by Niranjana Vishwanathapura <nvishwan@codeaurora.org> Gilad Avidov <gavidov@codeaurora.org> Signed-off-by: Timur Tabi <timur@codeaurora.org> Signed-off-by: David S. Miller <davem@davemloft.net>
112 lines
2.6 KiB
Plaintext
112 lines
2.6 KiB
Plaintext
Qualcomm Technologies EMAC Gigabit Ethernet Controller
|
|
|
|
This network controller consists of two devices: a MAC and an SGMII
|
|
internal PHY. Each device is represented by a device tree node. A phandle
|
|
connects the MAC node to its corresponding internal phy node. Another
|
|
phandle points to the external PHY node.
|
|
|
|
Required properties:
|
|
|
|
MAC node:
|
|
- compatible : Should be "qcom,fsm9900-emac".
|
|
- reg : Offset and length of the register regions for the device
|
|
- interrupts : Interrupt number used by this controller
|
|
- mac-address : The 6-byte MAC address. If present, it is the default
|
|
MAC address.
|
|
- internal-phy : phandle to the internal PHY node
|
|
- phy-handle : phandle the the external PHY node
|
|
|
|
Internal PHY node:
|
|
- compatible : Should be "qcom,fsm9900-emac-sgmii" or "qcom,qdf2432-emac-sgmii".
|
|
- reg : Offset and length of the register region(s) for the device
|
|
- interrupts : Interrupt number used by this controller
|
|
|
|
The external phy child node:
|
|
- reg : The phy address
|
|
|
|
Example:
|
|
|
|
FSM9900:
|
|
|
|
soc {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
emac0: ethernet@feb20000 {
|
|
compatible = "qcom,fsm9900-emac";
|
|
reg = <0xfeb20000 0x10000>,
|
|
<0xfeb36000 0x1000>;
|
|
interrupts = <76>;
|
|
|
|
clocks = <&gcc 0>, <&gcc 1>, <&gcc 3>, <&gcc 4>, <&gcc 5>,
|
|
<&gcc 6>, <&gcc 7>;
|
|
clock-names = "axi_clk", "cfg_ahb_clk", "high_speed_clk",
|
|
"mdio_clk", "tx_clk", "rx_clk", "sys_clk";
|
|
|
|
internal-phy = <&emac_sgmii>;
|
|
|
|
phy-handle = <&phy0>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
phy0: ethernet-phy@0 {
|
|
reg = <0>;
|
|
};
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mdio_pins_a>;
|
|
};
|
|
|
|
emac_sgmii: ethernet@feb38000 {
|
|
compatible = "qcom,fsm9900-emac-sgmii";
|
|
reg = <0xfeb38000 0x1000>;
|
|
interrupts = <80>;
|
|
};
|
|
|
|
tlmm: pinctrl@fd510000 {
|
|
compatible = "qcom,fsm9900-pinctrl";
|
|
|
|
mdio_pins_a: mdio {
|
|
state {
|
|
pins = "gpio123", "gpio124";
|
|
function = "mdio";
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
QDF2432:
|
|
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
emac0: ethernet@38800000 {
|
|
compatible = "qcom,fsm9900-emac";
|
|
reg = <0x0 0x38800000 0x0 0x10000>,
|
|
<0x0 0x38816000 0x0 0x1000>;
|
|
interrupts = <0 256 4>;
|
|
|
|
clocks = <&gcc 0>, <&gcc 1>, <&gcc 3>, <&gcc 4>, <&gcc 5>,
|
|
<&gcc 6>, <&gcc 7>;
|
|
clock-names = "axi_clk", "cfg_ahb_clk", "high_speed_clk",
|
|
"mdio_clk", "tx_clk", "rx_clk", "sys_clk";
|
|
|
|
internal-phy = <&emac_sgmii>;
|
|
|
|
phy-handle = <&phy0>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
phy0: ethernet-phy@4 {
|
|
reg = <4>;
|
|
};
|
|
};
|
|
|
|
emac_sgmii: ethernet@410400 {
|
|
compatible = "qcom,qdf2432-emac-sgmii";
|
|
reg = <0x0 0x00410400 0x0 0xc00>, /* Base address */
|
|
<0x0 0x00410000 0x0 0x400>; /* Per-lane digital */
|
|
interrupts = <0 254 1>;
|
|
};
|