diff options
author | Linaro CI <ci_notify@linaro.org> | 2019-03-23 04:37:41 +0000 |
---|---|---|
committer | Linaro CI <ci_notify@linaro.org> | 2019-03-23 04:37:41 +0000 |
commit | f40aec9eb3166836e9e2001692c58fc9583e2307 (patch) | |
tree | 4a851ee4ea1460052d97868780403e6ec7fbad76 | |
parent | a29426026af905d2c0f80357bcf62591d3086c99 (diff) | |
parent | bac95be0ab6c1e015a406122bb79190c340fe1ec (diff) |
Merge remote-tracking branch 'qcs404-ethernet/tracking-qcomlt-qcs404-ethernet' into integration-linux-qcomltintegration-linux-qcomlt-20190323-050254-v5.1-rc1-171-gf40aec9eb316
-rw-r--r-- | arch/arm64/boot/dts/qcom/qcs404-evb-4000.dts | 146 | ||||
-rw-r--r-- | arch/arm64/boot/dts/qcom/qcs404.dtsi | 23 | ||||
-rw-r--r-- | arch/arm64/configs/defconfig | 9 | ||||
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 8 | ||||
-rw-r--r-- | net/dsa/slave.c | 4 |
5 files changed, 187 insertions, 3 deletions
diff --git a/arch/arm64/boot/dts/qcom/qcs404-evb-4000.dts b/arch/arm64/boot/dts/qcom/qcs404-evb-4000.dts index 11269ad3de0d..4dc26a783ac7 100644 --- a/arch/arm64/boot/dts/qcom/qcs404-evb-4000.dts +++ b/arch/arm64/boot/dts/qcom/qcs404-evb-4000.dts @@ -3,9 +3,155 @@ /dts-v1/; +#include <dt-bindings/gpio/gpio.h> #include "qcs404-evb.dtsi" / { model = "Qualcomm Technologies, Inc. QCS404 EVB 4000"; compatible = "qcom,qcs404-evb"; }; + +#define AR8035 + +ðernet { + status = "ok"; + + snps,reset-gpio = <&tlmm 60 GPIO_ACTIVE_LOW>; + snps,reset-active-low; + snps,reset-delays-us = <0 10000 10000>; + + pinctrl-names = "default"; + pinctrl-0 = <ðernet_defaults>; + +#ifdef AR8035 + phy-handle = <&phy1>; + phy-mode = "rgmii"; + mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "snps,dwmac-mdio"; + phy1: phy@4 { + device_type = "ethernet-phy"; + reg = <0x4>; + }; + }; +#endif + +#ifdef QCA8K + phy-mode = "rgmii"; + + fixed-link { + speed = <1000>; + full-duplex; + }; + + mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "snps,dwmac-mdio"; + + phy_port2: phy@1 { + reg = <1>; + }; + + phy_port3: phy@2 { + reg = <2>; + }; + + switch0@16 { + compatible = "qca,qca8334"; + #address-cells = <1>; + #size-cells = <0>; + + reg = <16>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + cpu_port1: port@0 { + reg = <0>; + label = "cpu"; + ethernet = <ðernet>; + phy-mode = "rgmii"; + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + port@2 { + reg = <2>; + label = "top"; + cpu = <&cpu_port1>; + phy-handle = <&phy_port2>; + }; + + port@3 { + reg = <3>; + label = "bottom"; + cpu = <&cpu_port1>; + phy-handle = <&phy_port3>; + }; + }; + }; + }; +#endif + +}; + +&tlmm { + ethernet_defaults: ethernet-defaults { + int { + pins = "gpio61"; + function = "rgmii_int"; + bias-disable; + drive-strength = <2>; + }; + mdc { + pins = "gpio76"; + function = "rgmii_mdc"; + bias-pull-up; + }; + mdio { + pins = "gpio75"; + function = "rgmii_mdio"; + bias-pull-up; + }; + tx { + pins = "gpio67", "gpio66", "gpio65", "gpio64"; + function = "rgmii_tx"; + bias-pull-up; + drive-strength = <16>; + }; + rx { + pins = "gpio73", "gpio72", "gpio71", "gpio70"; + function = "rgmii_rx"; + bias-disable; + drive-strength = <2>; + }; + tx-ctl { + pins = "gpio68"; + function = "rgmii_ctl"; + bias-pull-up; + drive-strength = <16>; + }; + rx-ctl { + pins = "gpio74"; + function = "rgmii_ctl"; + bias-disable; + drive-strength = <2>; + }; + tx-ck { + pins = "gpio63"; + function = "rgmii_ck"; + bias-pull-up; + drive-strength = <16>; + }; + rx-ck { + pins = "gpio69"; + function = "rgmii_ck"; + bias-disable; + drive-strength = <2>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/qcom/qcs404.dtsi b/arch/arm64/boot/dts/qcom/qcs404.dtsi index 6f774190490e..a2d45028ab1d 100644 --- a/arch/arm64/boot/dts/qcom/qcs404.dtsi +++ b/arch/arm64/boot/dts/qcom/qcs404.dtsi @@ -874,6 +874,29 @@ status = "disabled"; }; + ethernet: ethernet@7a80000 { + compatible = "qcom,qcs404-ethqos"; + reg = <0x07a80000 0x10000>, + <0x07a96000 0x100>; + reg-names = "stmmaceth", "rgmii"; + clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii"; + clocks = <&gcc GCC_ETH_AXI_CLK>, + <&gcc GCC_ETH_SLAVE_AHB_CLK>, + <&gcc GCC_ETH_PTP_CLK>, + <&gcc GCC_ETH_RGMII_CLK>; + interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq", "eth_lpi"; + + snps,txpbl = <8>; + snps,rxpbl = <2>; + snps,aal; + snps,tso; + rx-fifo-depth=<4096>; + tx-fifo-depth=<4096>; + status = "disabled"; + }; + blsp2_dma: dma@7ac4000 { compatible = "qcom,bam-v1.7.0"; reg = <0x07ac4000 0x17000>; diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 0d812bbb9dfa..5e41d506f105 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -151,7 +151,7 @@ CONFIG_IP_MULTICAST=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y -CONFIG_IPV6=m +CONFIG_IPV6=y CONFIG_NETFILTER=y CONFIG_NF_CONNTRACK=m CONFIG_NF_CONNTRACK_EVENTS=y @@ -171,7 +171,7 @@ CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_NAT=m CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_BRIDGE=m +CONFIG_BRIDGE=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y @@ -253,6 +253,9 @@ CONFIG_MACVTAP=m CONFIG_TUN=y CONFIG_VETH=m CONFIG_VIRTIO_NET=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_QCA8K=y +CONFIG_ETHERNET=y CONFIG_AMD_XGBE=y CONFIG_NET_XGENE=y CONFIG_ATL1C=y @@ -278,6 +281,8 @@ CONFIG_SMSC911X=y CONFIG_SNI_AVE=y CONFIG_SNI_NETSEC=y CONFIG_STMMAC_ETH=m +CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_QCOM_ETHQOS=m CONFIG_MDIO_BUS_MUX_MMIOREG=y CONFIG_AT803X_PHY=m CONFIG_MARVELL_PHY=m diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 97c5e1aad88f..901ae7972a2e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -162,6 +162,13 @@ static void stmmac_disable_all_queues(struct stmmac_priv *priv) } } +static u16 stmmac_select_queue(struct net_device *dev, struct sk_buff *skb, + struct net_device *sb_dev, + select_queue_fallback_t fallback) +{ + return 0; +} + /** * stmmac_enable_all_queues - Enable all queues * @priv: driver private structure @@ -4090,6 +4097,7 @@ static const struct net_device_ops stmmac_netdev_ops = { #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = stmmac_poll_controller, #endif + .ndo_select_queue = stmmac_select_queue, .ndo_set_mac_address = stmmac_set_mac_address, }; diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 093eef6f2599..433cad2e73bd 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -77,7 +77,9 @@ static int dsa_slave_open(struct net_device *dev) if (!(master->flags & IFF_UP)) return -ENETDOWN; - if (!ether_addr_equal(dev->dev_addr, master->dev_addr)) { + if (!is_valid_ether_addr(dev->dev_addr)) { + eth_hw_addr_inherit(dev, master); + } else if (!ether_addr_equal(dev->dev_addr, master->dev_addr)) { err = dev_uc_add(master, dev->dev_addr); if (err < 0) goto out; |