Merge branch 'openwrt:master' into master
This commit is contained in:
commit
378342d219
315 changed files with 34395 additions and 504 deletions
2
.github/labeler.yml
vendored
2
.github/labeler.yml
vendored
|
@ -41,6 +41,8 @@
|
||||||
- "target/linux/ipq40xx/**"
|
- "target/linux/ipq40xx/**"
|
||||||
"target/ipq806x":
|
"target/ipq806x":
|
||||||
- "target/linux/ipq806x/**"
|
- "target/linux/ipq806x/**"
|
||||||
|
"target/ipq807x":
|
||||||
|
- "target/linux/ipq807x/**"
|
||||||
"target/kirkwood":
|
"target/kirkwood":
|
||||||
- "target/linux/kirkwood/**"
|
- "target/linux/kirkwood/**"
|
||||||
- "package/boot/uboot-kirkwood/**"
|
- "package/boot/uboot-kirkwood/**"
|
||||||
|
|
|
@ -17,6 +17,7 @@ menu "Target Images"
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_lantiq
|
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_lantiq
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx
|
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx
|
||||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
|
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
|
||||||
|
default TARGET_INITRAMFS_COMPRESSION_ZSTD if TARGET_ipq807x
|
||||||
default TARGET_INITRAMFS_COMPRESSION_XZ if USES_SEPARATE_INITRAMFS
|
default TARGET_INITRAMFS_COMPRESSION_XZ if USES_SEPARATE_INITRAMFS
|
||||||
default TARGET_INITRAMFS_COMPRESSION_NONE
|
default TARGET_INITRAMFS_COMPRESSION_NONE
|
||||||
depends on TARGET_ROOTFS_INITRAMFS
|
depends on TARGET_ROOTFS_INITRAMFS
|
||||||
|
|
|
@ -419,7 +419,7 @@ DEFAULT_DEVICE_VARS := \
|
||||||
DEVICE_FDT_NUM DEVICE_IMG_PREFIX SOC BOARD_NAME UIMAGE_MAGIC UIMAGE_NAME \
|
DEVICE_FDT_NUM DEVICE_IMG_PREFIX SOC BOARD_NAME UIMAGE_MAGIC UIMAGE_NAME \
|
||||||
SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \
|
SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \
|
||||||
UBOOT_PATH IMAGE_SIZE \
|
UBOOT_PATH IMAGE_SIZE \
|
||||||
FACTORY_IMG_NAME \
|
FACTORY_IMG_NAME FACTORY_SIZE \
|
||||||
DEVICE_PACKAGES DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \
|
DEVICE_PACKAGES DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \
|
||||||
DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \
|
DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \
|
||||||
DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \
|
DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
LINUX_VERSION-5.10 = .162
|
LINUX_VERSION-5.10 = .163
|
||||||
LINUX_KERNEL_HASH-5.10.162 = 2ec400fc50ffdfe4c836a3c02bf6e7aebcd7963dd2ac1425e6d41545c37dd217
|
LINUX_KERNEL_HASH-5.10.163 = 96e226e2d388abc0600434e0f4f365a8829ef901f4d8e761e7ffe2799dc09b20
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
LINUX_VERSION-5.15 = .86
|
LINUX_VERSION-5.15 = .88
|
||||||
LINUX_KERNEL_HASH-5.15.86 = 80fcd9efa443502de9e2750f6dfb59e8de43a5d87a6d2be09dca748d79b5f2ee
|
LINUX_KERNEL_HASH-5.15.88 = 417539fdd96a3af97ef9ad2b51ca13967cb922f53970563b60290b935a81a181
|
||||||
|
|
|
@ -60,7 +60,8 @@ linksys,ea6350v3)
|
||||||
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x20000"
|
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x20000"
|
||||||
;;
|
;;
|
||||||
linksys,ea8300|\
|
linksys,ea8300|\
|
||||||
linksys,mr8300)
|
linksys,mr8300|\
|
||||||
|
linksys,whw03v2)
|
||||||
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000"
|
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000"
|
||||||
;;
|
;;
|
||||||
linksys,whw01)
|
linksys,whw01)
|
||||||
|
|
46
package/boot/uboot-envtools/files/ipq807x
Normal file
46
package/boot/uboot-envtools/files/ipq807x
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
[ -e /etc/config/ubootenv ] && exit 0
|
||||||
|
|
||||||
|
touch /etc/config/ubootenv
|
||||||
|
|
||||||
|
. /lib/uboot-envtools.sh
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
board=$(board_name)
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
dynalink,dl-wrx36)
|
||||||
|
idx="$(find_mtd_index 0:appsblenv)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000" "2"
|
||||||
|
;;
|
||||||
|
edgecore,eap102)
|
||||||
|
idx="$(find_mtd_index 0:appsblenv)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1"
|
||||||
|
;;
|
||||||
|
edimax,cax1800)
|
||||||
|
idx="$(find_mtd_index 0:appsblenv)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000"
|
||||||
|
;;
|
||||||
|
redmi,ax6|\
|
||||||
|
xiaomi,ax3600|\
|
||||||
|
xiaomi,ax9000)
|
||||||
|
idx="$(find_mtd_index 0:appsblenv)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000"
|
||||||
|
idx2="$(find_mtd_index bdata)"
|
||||||
|
[ -n "$idx2" ] && \
|
||||||
|
ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x10000" "0x20000"
|
||||||
|
;;
|
||||||
|
qnap,301w)
|
||||||
|
idx="$(find_mtd_index 0:appsblenv)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x20000" "0x20000" "1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
config_load ubootenv
|
||||||
|
config_foreach ubootenv_add_app_config
|
||||||
|
|
||||||
|
exit 0
|
|
@ -21,6 +21,9 @@ engenius,esr600h|\
|
||||||
sitecom,wlr-4100-v1-002)
|
sitecom,wlr-4100-v1-002)
|
||||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000"
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000"
|
||||||
;;
|
;;
|
||||||
|
arcadyan,we420223-99)
|
||||||
|
ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x1000" "0x1000"
|
||||||
|
;;
|
||||||
allnet,all0256n-4m|\
|
allnet,all0256n-4m|\
|
||||||
allnet,all0256n-8m|\
|
allnet,all0256n-8m|\
|
||||||
allnet,all5002|\
|
allnet,all5002|\
|
||||||
|
@ -85,6 +88,11 @@ snr,cpe-w4n-mt)
|
||||||
[ -n "$idx" ] && \
|
[ -n "$idx" ] && \
|
||||||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x1000" "0x1000"
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x1000" "0x1000"
|
||||||
;;
|
;;
|
||||||
|
tplink,ec330-g5u-v1)
|
||||||
|
idx="$(find_mtd_index u-boot-env)"
|
||||||
|
[ -n "$idx" ] && \
|
||||||
|
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x1000" "0x20000"
|
||||||
|
;;
|
||||||
xiaomi,mi-router-3g-v2|\
|
xiaomi,mi-router-3g-v2|\
|
||||||
xiaomi,mi-router-4a-gigabit|\
|
xiaomi,mi-router-4a-gigabit|\
|
||||||
xiaomi,miwifi-3c)
|
xiaomi,miwifi-3c)
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=trace-cmd
|
PKG_NAME:=trace-cmd
|
||||||
PKG_VERSION:=v3.1.5
|
PKG_VERSION:=v3.1.6
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/
|
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/
|
||||||
PKG_HASH:=9af1ea00e312d03639470e126fa9c786789f03c16df93a57c0bc90eeffbc7d50
|
PKG_HASH:=f9198ea306deee9cda3b262342b03b6029e82c1b9c671ba521739a9703e115b9
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
|
|
66
package/firmware/ath11k-firmware/Makefile
Normal file
66
package/firmware/ath11k-firmware/Makefile
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=ath11k-firmware
|
||||||
|
PKG_SOURCE_DATE:=2022-12-14
|
||||||
|
PKG_SOURCE_VERSION:=ab1229f94591ec4ffb16410e359b7f618be75a33
|
||||||
|
PKG_MIRROR_HASH:=48a2526971e56a3be1c80b72cd82b9932c196b4ab9b7d5dc35117f0548a8fe57
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_URL:=https://github.com/kvalo/ath11k-firmware.git
|
||||||
|
|
||||||
|
PKG_LICENSE_FILES:=LICENSE.qca_firmware
|
||||||
|
|
||||||
|
PKG_MAINTAINER:=Robert Marko <robimarko@gmail.com>
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
RSTRIP:=:
|
||||||
|
STRIP:=:
|
||||||
|
|
||||||
|
define Package/ath11k-firmware-default
|
||||||
|
SECTION:=firmware
|
||||||
|
CATEGORY:=Firmware
|
||||||
|
URL:=$(PKG_SOURCE_URL)
|
||||||
|
DEPENDS:=
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ath11k-firmware-ipq8074
|
||||||
|
$(Package/ath11k-firmware-default)
|
||||||
|
TITLE:=IPQ8074 ath11k firmware
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ath11k-firmware-qcn9074
|
||||||
|
$(Package/ath11k-firmware-default)
|
||||||
|
TITLE:=QCN9074 ath11k firmware
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ath11k-firmware-ipq8074/install
|
||||||
|
$(INSTALL_DIR) $(1)/lib/firmware/IPQ8074
|
||||||
|
$(INSTALL_DATA) \
|
||||||
|
$(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.5.0.1/WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1/* \
|
||||||
|
$(1)/lib/firmware/IPQ8074/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ath11k-firmware-qcn9074/install
|
||||||
|
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0
|
||||||
|
$(INSTALL_DATA) \
|
||||||
|
$(PKG_BUILD_DIR)/QCN9074/hw1.0/2.5.0.1/WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1/* \
|
||||||
|
$(1)/lib/firmware/ath11k/QCN9074/hw1.0/
|
||||||
|
$(INSTALL_BIN) \
|
||||||
|
$(PKG_BUILD_DIR)/QCN9074/hw1.0/board-2.bin $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board-2.bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,ath11k-firmware-ipq8074))
|
||||||
|
$(eval $(call BuildPackage,ath11k-firmware-qcn9074))
|
|
@ -27,19 +27,28 @@ endef
|
||||||
ALLWIFIBOARDS:= \
|
ALLWIFIBOARDS:= \
|
||||||
aruba_ap-365 \
|
aruba_ap-365 \
|
||||||
devolo_magic-2-wifi-next \
|
devolo_magic-2-wifi-next \
|
||||||
|
dynalink_dl-wrx36 \
|
||||||
|
edgecore_eap102 \
|
||||||
edgecore_ecw5410 \
|
edgecore_ecw5410 \
|
||||||
edgecore_oap100 \
|
edgecore_oap100 \
|
||||||
|
edimax_cax1800 \
|
||||||
extreme-networks_ws-ap3915i \
|
extreme-networks_ws-ap3915i \
|
||||||
glinet_gl-a1300 \
|
glinet_gl-a1300 \
|
||||||
glinet_gl-ap1300 \
|
glinet_gl-ap1300 \
|
||||||
glinet_gl-s1300 \
|
glinet_gl-s1300 \
|
||||||
linksys_ea8300 \
|
linksys_ea8300 \
|
||||||
|
linksys_whw03v2 \
|
||||||
p2w_r619ac \
|
p2w_r619ac \
|
||||||
pakedge_wr-1 \
|
pakedge_wr-1 \
|
||||||
|
qnap_301w \
|
||||||
qxwlan_e2600ac-c1 \
|
qxwlan_e2600ac-c1 \
|
||||||
qxwlan_e2600ac-c2 \
|
qxwlan_e2600ac-c2 \
|
||||||
|
redmi_ax6 \
|
||||||
sony_ncp-hg100-cellular \
|
sony_ncp-hg100-cellular \
|
||||||
teltonika_rutx \
|
teltonika_rutx \
|
||||||
|
xiaomi_ax3600 \
|
||||||
|
xiaomi_ax9000 \
|
||||||
|
zte_mf18a \
|
||||||
zte_mf289f
|
zte_mf289f
|
||||||
|
|
||||||
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
|
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
|
||||||
|
@ -48,7 +57,7 @@ define Package/ipq-wifi-default
|
||||||
SUBMENU:=ath10k Board-Specific Overrides
|
SUBMENU:=ath10k Board-Specific Overrides
|
||||||
SECTION:=firmware
|
SECTION:=firmware
|
||||||
CATEGORY:=Firmware
|
CATEGORY:=Firmware
|
||||||
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x)
|
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x)
|
||||||
TITLE:=Custom Board
|
TITLE:=Custom Board
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -57,15 +66,28 @@ define ipq-wifi-install-one-to
|
||||||
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath10k/$(3)/board-2.bin
|
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath10k/$(3)/board-2.bin
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define ipq-wifi-install-ath11-one-to
|
||||||
|
$(INSTALL_DIR) $(2)/lib/firmware/ath11k/$(3)/
|
||||||
|
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath11k/$(3)/board-2.bin
|
||||||
|
endef
|
||||||
|
|
||||||
define ipq-wifi-install-one
|
define ipq-wifi-install-one
|
||||||
$(if $(filter $(suffix $(1)),.QCA4019 .qca4019),\
|
$(if $(filter $(suffix $(1)),.QCA4019 .qca4019),\
|
||||||
$(call ipq-wifi-install-one-to,$(1),$(2),QCA4019/hw1.0),\
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA4019/hw1.0),\
|
||||||
$(if $(filter $(suffix $(1)),.QCA9888 .qca9888),\
|
$(if $(filter $(suffix $(1)),.QCA9888 .qca9888),\
|
||||||
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9888/hw2.0),\
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9888/hw2.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.QCA9889 .qca9889),\
|
||||||
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9887/hw1.0),\
|
||||||
$(if $(filter $(suffix $(1)),.QCA9984 .qca9984),\
|
$(if $(filter $(suffix $(1)),.QCA9984 .qca9984),\
|
||||||
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.QCA99X0 .qca99x0),\
|
||||||
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA99X0/hw2.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.IPQ8074 .ipq8074),\
|
||||||
|
$(call ipq-wifi-install-ath11-one-to,$(1),$(2),IPQ8074/hw2.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.QCN9074 .qcn9074),\
|
||||||
|
$(call ipq-wifi-install-ath11-one-to,$(1),$(2),QCN9074/hw1.0),\
|
||||||
$(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\
|
$(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\
|
||||||
)))
|
)))))))
|
||||||
|
|
||||||
endef
|
endef
|
||||||
# Blank line required at end of above define due to foreach context
|
# Blank line required at end of above define due to foreach context
|
||||||
|
@ -98,24 +120,33 @@ Do not install it for any other device!
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Add board name to ALLWIFIBOARDS
|
# Add board name to ALLWIFIBOARDS
|
||||||
# Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9984>
|
# Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9889|qca9984|qca99x0|ipq8074>
|
||||||
# Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>))
|
# Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>))
|
||||||
|
|
||||||
$(eval $(call generate-ipq-wifi-package,aruba_ap-365,Aruba AP-365))
|
$(eval $(call generate-ipq-wifi-package,aruba_ap-365,Aruba AP-365))
|
||||||
$(eval $(call generate-ipq-wifi-package,devolo_magic-2-wifi-next,devolo Magic 2 WiFi next))
|
$(eval $(call generate-ipq-wifi-package,devolo_magic-2-wifi-next,devolo Magic 2 WiFi next))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102))
|
||||||
$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
||||||
$(eval $(call generate-ipq-wifi-package,edgecore_oap100,Edgecore OAP100))
|
$(eval $(call generate-ipq-wifi-package,edgecore_oap100,Edgecore OAP100))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800))
|
||||||
$(eval $(call generate-ipq-wifi-package,extreme-networks_ws-ap3915i,Edgecore OAP100))
|
$(eval $(call generate-ipq-wifi-package,extreme-networks_ws-ap3915i,Edgecore OAP100))
|
||||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-a1300,GL.iNet GL-A1300))
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-a1300,GL.iNet GL-A1300))
|
||||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
|
||||||
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
|
||||||
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,linksys_whw03v2,Linksys WHW03 V2))
|
||||||
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
|
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
|
||||||
$(eval $(call generate-ipq-wifi-package,pakedge_wr-1,Pakedge WR-1))
|
$(eval $(call generate-ipq-wifi-package,pakedge_wr-1,Pakedge WR-1))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,qnap_301w,QNAP 301w))
|
||||||
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c1,Qxwlan E2600AC C1))
|
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c1,Qxwlan E2600AC C1))
|
||||||
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2))
|
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6))
|
||||||
$(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular))
|
$(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular))
|
||||||
$(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX))
|
$(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,zte_mf18a,ZTE MF18A))
|
||||||
$(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F))
|
$(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F))
|
||||||
|
|
||||||
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|
||||||
|
|
BIN
package/firmware/ipq-wifi/board-dynalink_dl-wrx36.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-dynalink_dl-wrx36.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-edgecore_eap102.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-edgecore_eap102.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-edimax_cax1800.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-edimax_cax1800.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-linksys_whw03v2.qca4019
Normal file
BIN
package/firmware/ipq-wifi/board-linksys_whw03v2.qca4019
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-linksys_whw03v2.qca9888
Normal file
BIN
package/firmware/ipq-wifi/board-linksys_whw03v2.qca9888
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-qnap_301w.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-qnap_301w.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-redmi_ax6.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-redmi_ax6.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-xiaomi_ax3600.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-xiaomi_ax3600.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-xiaomi_ax3600.qca9889
Normal file
BIN
package/firmware/ipq-wifi/board-xiaomi_ax3600.qca9889
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.ipq8074
Normal file
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.ipq8074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.qca9889
Normal file
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.qca9889
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.qcn9074
Normal file
BIN
package/firmware/ipq-wifi/board-xiaomi_ax9000.qcn9074
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-zte_mf18a.qca4019
Normal file
BIN
package/firmware/ipq-wifi/board-zte_mf18a.qca4019
Normal file
Binary file not shown.
BIN
package/firmware/ipq-wifi/board-zte_mf18a.qca99x0
Normal file
BIN
package/firmware/ipq-wifi/board-zte_mf18a.qca99x0
Normal file
Binary file not shown.
|
@ -0,0 +1,60 @@
|
||||||
|
From 630df9786fdaeb78c21f1e28c9b70ac83a1b482c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vincent Tremblay <vincent@vtremblay.dev>
|
||||||
|
Date: Sat, 31 Dec 2022 09:24:00 -0500
|
||||||
|
Subject: [PATCH] ath10k: read qcom,coexist-support as a u32
|
||||||
|
|
||||||
|
Read qcom,coexist-support as a u32 instead of a u8
|
||||||
|
|
||||||
|
When we set the property to <1> in the DT (as specified in the doc),
|
||||||
|
"of_property_read_u8" read 0 instead of 1. This is because of the data format.
|
||||||
|
|
||||||
|
By default <1> is written with 32 bits.
|
||||||
|
The problem is that the driver is trying to read a u8.
|
||||||
|
|
||||||
|
The difference can be visualized using hexdump in a running device:
|
||||||
|
Default 32 bits output:
|
||||||
|
=======================
|
||||||
|
0000000 0000 0100
|
||||||
|
0000004
|
||||||
|
|
||||||
|
8 bits output:
|
||||||
|
==============
|
||||||
|
0000000 0001
|
||||||
|
0000001
|
||||||
|
|
||||||
|
By changing "of_property_read_u8" by "of_property_read_u32", the driver
|
||||||
|
is aligned with the documentation and is able to read the value without
|
||||||
|
modifying the DT.
|
||||||
|
|
||||||
|
The other solution would be to force the value in the DT to be saved as
|
||||||
|
an 8 bits value (qcom,coexist-support = /bits/ 8 <1>),
|
||||||
|
which is against the doc and less intuitive.
|
||||||
|
|
||||||
|
Validation:
|
||||||
|
===========
|
||||||
|
The patch was tested on a real device and we can see in the debug logs
|
||||||
|
that the feature is properly initialized:
|
||||||
|
|
||||||
|
[ 109.102097] ath10k_ahb a000000.wifi: boot coex_support 1 coex_gpio_pin 52
|
||||||
|
|
||||||
|
Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
|
||||||
|
|
||||||
|
--- a/ath10k-5.15/core.c
|
||||||
|
+++ b/ath10k-5.15/core.c
|
||||||
|
@@ -2798,14 +2798,14 @@ done:
|
||||||
|
static void ath10k_core_fetch_btcoex_dt(struct ath10k *ar)
|
||||||
|
{
|
||||||
|
struct device_node *node;
|
||||||
|
- u8 coex_support = 0;
|
||||||
|
+ u32 coex_support = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
node = ar->dev->of_node;
|
||||||
|
if (!node)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
- ret = of_property_read_u8(node, "qcom,coexist-support", &coex_support);
|
||||||
|
+ ret = of_property_read_u32(node, "qcom,coexist-support", &coex_support);
|
||||||
|
if (ret) {
|
||||||
|
ar->coex_support = true;
|
||||||
|
goto out;
|
|
@ -494,7 +494,7 @@ $(eval $(call KernelPackage,usb-dwc3))
|
||||||
|
|
||||||
define KernelPackage/usb-dwc3-qcom
|
define KernelPackage/usb-dwc3-qcom
|
||||||
TITLE:=DWC3 Qualcomm USB driver
|
TITLE:=DWC3 Qualcomm USB driver
|
||||||
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x) +kmod-usb-dwc3
|
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x) +kmod-usb-dwc3
|
||||||
KCONFIG:= CONFIG_USB_DWC3_QCOM
|
KCONFIG:= CONFIG_USB_DWC3_QCOM
|
||||||
FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko
|
FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko
|
||||||
AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom,1)
|
AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom,1)
|
||||||
|
|
|
@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=6.1-rc8
|
PKG_VERSION:=6.1-rc8
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
# PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.58/
|
# PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.58/
|
||||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
||||||
PKG_HASH:=7f3d96c2573183cd79d6a3ebe5e1b7b73c19d1326d443c85b69c4181f14e6e2b
|
PKG_HASH:=7f3d96c2573183cd79d6a3ebe5e1b7b73c19d1326d443c85b69c4181f14e6e2b
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PKG_DRIVERS += \
|
PKG_DRIVERS += \
|
||||||
ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k ath10k-smallbuffers \
|
ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k ath10k-smallbuffers \
|
||||||
ath11k ath11k-pci carl9170 owl-loader ar5523 wil6210
|
ath11k ath11k-ahb ath11k-pci carl9170 owl-loader ar5523 wil6210
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS += \
|
PKG_CONFIG_DEPENDS += \
|
||||||
CONFIG_PACKAGE_ATH_DEBUG \
|
CONFIG_PACKAGE_ATH_DEBUG \
|
||||||
|
@ -61,6 +61,7 @@ config-$(call config_package,ath9k-htc) += ATH9K_HTC
|
||||||
config-$(call config_package,ath10k) += ATH10K ATH10K_PCI
|
config-$(call config_package,ath10k) += ATH10K ATH10K_PCI
|
||||||
config-$(call config_package,ath10k-smallbuffers) += ATH10K ATH10K_PCI ATH10K_SMALLBUFFERS
|
config-$(call config_package,ath10k-smallbuffers) += ATH10K ATH10K_PCI ATH10K_SMALLBUFFERS
|
||||||
config-$(call config_package,ath11k) += ATH11K
|
config-$(call config_package,ath11k) += ATH11K
|
||||||
|
config-$(call config_package,ath11k-ahb) += ATH11K_AHB
|
||||||
config-$(call config_package,ath11k-pci) += ATH11K_PCI
|
config-$(call config_package,ath11k-pci) += ATH11K_PCI
|
||||||
|
|
||||||
config-$(call config_package,ath5k) += ATH5K
|
config-$(call config_package,ath5k) += ATH5K
|
||||||
|
@ -316,9 +317,24 @@ define KernelPackage/ath11k/config
|
||||||
config ATH11K_THERMAL
|
config ATH11K_THERMAL
|
||||||
bool "Enable thermal sensors and throttling support"
|
bool "Enable thermal sensors and throttling support"
|
||||||
depends on PACKAGE_kmod-ath11k
|
depends on PACKAGE_kmod-ath11k
|
||||||
|
default y if TARGET_ipq807x
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/ath11k-ahb
|
||||||
|
$(call KernelPackage/mac80211/Default)
|
||||||
|
TITLE:=Qualcomm 802.11ax AHB wireless chipset support
|
||||||
|
URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath11k
|
||||||
|
DEPENDS+= @TARGET_ipq807x +kmod-ath11k +kmod-qrtr-smd
|
||||||
|
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath11k/ath11k_ahb.ko
|
||||||
|
AUTOLOAD:=$(call AutoProbe,ath11k_ahb)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/ath11k-ahb/description
|
||||||
|
This module adds support for Qualcomm Technologies 802.11ax family of
|
||||||
|
chipsets with AHB bus.
|
||||||
|
endef
|
||||||
|
|
||||||
define KernelPackage/ath11k-pci
|
define KernelPackage/ath11k-pci
|
||||||
$(call KernelPackage/mac80211/Default)
|
$(call KernelPackage/mac80211/Default)
|
||||||
TITLE:=Qualcomm 802.11ax PCI wireless chipset support
|
TITLE:=Qualcomm 802.11ax PCI wireless chipset support
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
From 323d91d4684d238f6bc3693fed93caf795378fe0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Date: Thu, 22 Dec 2022 19:15:59 +0200
|
||||||
|
Subject: [PATCH] wifi: ath11k: debugfs: fix to work with multiple PCI devices
|
||||||
|
|
||||||
|
ath11k fails to load if there are multiple ath11k PCI devices with same name:
|
||||||
|
|
||||||
|
ath11k_pci 0000:01:00.0: Hardware name qcn9074 hw1.0
|
||||||
|
debugfs: Directory 'ath11k' with parent '/' already present!
|
||||||
|
ath11k_pci 0000:01:00.0: failed to create ath11k debugfs
|
||||||
|
ath11k_pci 0000:01:00.0: failed to create soc core: -17
|
||||||
|
ath11k_pci 0000:01:00.0: failed to init core: -17
|
||||||
|
ath11k_pci: probe of 0000:01:00.0 failed with error -17
|
||||||
|
|
||||||
|
Fix this by creating a directory for each ath11k device using schema
|
||||||
|
<bus>-<devname>, for example "pci-0000:06:00.0". This directory created under
|
||||||
|
the top-level ath11k directory, for example /sys/kernel/debug/ath11k.
|
||||||
|
|
||||||
|
The reference to the toplevel ath11k directory is not stored anymore within ath11k, instead
|
||||||
|
it's retrieved using debugfs_lookup(). If the directory does not exist it will
|
||||||
|
be created. After the last directory from the ath11k directory is removed, for
|
||||||
|
example when doing rmmod ath11k, the empty ath11k directory is left in place,
|
||||||
|
it's a minor cosmetic issue anyway.
|
||||||
|
|
||||||
|
Here's an example hierarchy with one WCN6855:
|
||||||
|
|
||||||
|
ath11k
|
||||||
|
`-- pci-0000:06:00.0
|
||||||
|
|-- mac0
|
||||||
|
| |-- dfs_block_radar_events
|
||||||
|
| |-- dfs_simulate_radar
|
||||||
|
| |-- ext_rx_stats
|
||||||
|
| |-- ext_tx_stats
|
||||||
|
| |-- fw_dbglog_config
|
||||||
|
| |-- fw_stats
|
||||||
|
| | |-- beacon_stats
|
||||||
|
| | |-- pdev_stats
|
||||||
|
| | `-- vdev_stats
|
||||||
|
| |-- htt_stats
|
||||||
|
| |-- htt_stats_reset
|
||||||
|
| |-- htt_stats_type
|
||||||
|
| `-- pktlog_filter
|
||||||
|
|-- simulate_fw_crash
|
||||||
|
`-- soc_dp_stats
|
||||||
|
|
||||||
|
I didn't have a test setup where I could connect multiple ath11k devices to the
|
||||||
|
same the host, so I have only tested this with one device.
|
||||||
|
|
||||||
|
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.9
|
||||||
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
|
||||||
|
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
|
||||||
|
|
||||||
|
Tested-by: Robert Marko <robert.marko@sartura.hr>
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20221220121231.20120-1-kvalo@kernel.org
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath11k/core.h | 1 -
|
||||||
|
drivers/net/wireless/ath/ath11k/debugfs.c | 48 +++++++++++++++++++----
|
||||||
|
2 files changed, 40 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
|
@@ -912,7 +912,6 @@ struct ath11k_base {
|
||||||
|
enum ath11k_dfs_region dfs_region;
|
||||||
|
#ifdef CPTCFG_ATH11K_DEBUGFS
|
||||||
|
struct dentry *debugfs_soc;
|
||||||
|
- struct dentry *debugfs_ath11k;
|
||||||
|
#endif
|
||||||
|
struct ath11k_soc_dp_stats soc_stats;
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/debugfs.c
|
||||||
|
@@ -976,10 +976,6 @@ int ath11k_debugfs_pdev_create(struct at
|
||||||
|
if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- ab->debugfs_soc = debugfs_create_dir(ab->hw_params.name, ab->debugfs_ath11k);
|
||||||
|
- if (IS_ERR(ab->debugfs_soc))
|
||||||
|
- return PTR_ERR(ab->debugfs_soc);
|
||||||
|
-
|
||||||
|
debugfs_create_file("simulate_fw_crash", 0600, ab->debugfs_soc, ab,
|
||||||
|
&fops_simulate_fw_crash);
|
||||||
|
|
||||||
|
@@ -1001,15 +997,51 @@ void ath11k_debugfs_pdev_destroy(struct
|
||||||
|
|
||||||
|
int ath11k_debugfs_soc_create(struct ath11k_base *ab)
|
||||||
|
{
|
||||||
|
- ab->debugfs_ath11k = debugfs_create_dir("ath11k", NULL);
|
||||||
|
+ struct dentry *root;
|
||||||
|
+ bool dput_needed;
|
||||||
|
+ char name[64];
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ root = debugfs_lookup("ath11k", NULL);
|
||||||
|
+ if (!root) {
|
||||||
|
+ root = debugfs_create_dir("ath11k", NULL);
|
||||||
|
+ if (IS_ERR_OR_NULL(root))
|
||||||
|
+ return PTR_ERR(root);
|
||||||
|
+
|
||||||
|
+ dput_needed = false;
|
||||||
|
+ } else {
|
||||||
|
+ /* a dentry from lookup() needs dput() after we don't use it */
|
||||||
|
+ dput_needed = true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ scnprintf(name, sizeof(name), "%s-%s", ath11k_bus_str(ab->hif.bus),
|
||||||
|
+ dev_name(ab->dev));
|
||||||
|
+
|
||||||
|
+ ab->debugfs_soc = debugfs_create_dir(name, root);
|
||||||
|
+ if (IS_ERR_OR_NULL(ab->debugfs_soc)) {
|
||||||
|
+ ret = PTR_ERR(ab->debugfs_soc);
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = 0;
|
||||||
|
+
|
||||||
|
+out:
|
||||||
|
+ if (dput_needed)
|
||||||
|
+ dput(root);
|
||||||
|
|
||||||
|
- return PTR_ERR_OR_ZERO(ab->debugfs_ath11k);
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ath11k_debugfs_soc_destroy(struct ath11k_base *ab)
|
||||||
|
{
|
||||||
|
- debugfs_remove_recursive(ab->debugfs_ath11k);
|
||||||
|
- ab->debugfs_ath11k = NULL;
|
||||||
|
+ debugfs_remove_recursive(ab->debugfs_soc);
|
||||||
|
+ ab->debugfs_soc = NULL;
|
||||||
|
+
|
||||||
|
+ /* We are not removing ath11k directory on purpose, even if it
|
||||||
|
+ * would be empty. This simplifies the directory handling and it's
|
||||||
|
+ * a minor cosmetic issue to leave an empty ath11k directory to
|
||||||
|
+ * debugfs.
|
||||||
|
+ */
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ath11k_debugfs_soc_destroy);
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
From 534a5f99d589cfa6b244b4433c192b6a278a67ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Sat, 5 Nov 2022 20:15:40 +0100
|
||||||
|
Subject: [PATCH] wifi: ath11k: use unique QRTR instance ID
|
||||||
|
|
||||||
|
Currently, trying to use AHB + PCI/MHI cards or multiple PCI/MHI cards
|
||||||
|
will cause a clash in the QRTR instance node ID and prevent the driver
|
||||||
|
from talking via QMI to the card and thus initializing it with:
|
||||||
|
[ 9.836329] ath11k c000000.wifi: host capability request failed: 1 90
|
||||||
|
[ 9.842047] ath11k c000000.wifi: failed to send qmi host cap: -22
|
||||||
|
|
||||||
|
So, in order to allow for this combination of cards, especially AHB + PCI
|
||||||
|
cards like IPQ8074 + QCN9074 (Used by me and tested on) set the desired
|
||||||
|
QRTR instance ID offset by calculating a unique one based on PCI domain
|
||||||
|
and bus ID-s and writing it to bits 7-0 of BHI_ERRDBG2 MHI register by
|
||||||
|
using the SBL state callback that is added as part of the series.
|
||||||
|
We also have to make sure that new QRTR offset is added on top of the
|
||||||
|
default QRTR instance ID-s that are currently used in the driver.
|
||||||
|
|
||||||
|
This finally allows using AHB + PCI or multiple PCI cards on the same
|
||||||
|
system.
|
||||||
|
|
||||||
|
Since this is not supported on QCA6390 and like, its limited to QCN9074
|
||||||
|
which is known to support changing QRTR instance ID.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
root@OpenWrt:/# qrtr-lookup
|
||||||
|
Service Version Instance Node Port
|
||||||
|
1054 1 0 7 1 <unknown>
|
||||||
|
69 1 2 7 3 ATH10k WLAN firmware service
|
||||||
|
|
||||||
|
After:
|
||||||
|
root@OpenWrt:/# qrtr-lookup
|
||||||
|
Service Version Instance Node Port
|
||||||
|
1054 1 0 7 1 <unknown>
|
||||||
|
69 1 2 7 3 ATH10k WLAN firmware service
|
||||||
|
15 1 0 8 1 Test service
|
||||||
|
69 1 8 8 2 ATH10k WLAN firmware service
|
||||||
|
|
||||||
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
|
||||||
|
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath11k/mhi.c | 49 ++++++++++++++++++---------
|
||||||
|
drivers/net/wireless/ath/ath11k/mhi.h | 3 ++
|
||||||
|
drivers/net/wireless/ath/ath11k/pci.c | 9 ++++-
|
||||||
|
3 files changed, 44 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/mhi.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/mhi.c
|
||||||
|
@@ -294,6 +294,34 @@ static void ath11k_mhi_op_runtime_put(st
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int ath11k_mhi_op_read_reg(struct mhi_controller *mhi_cntrl,
|
||||||
|
+ void __iomem *addr,
|
||||||
|
+ u32 *out)
|
||||||
|
+{
|
||||||
|
+ *out = readl(addr);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ath11k_mhi_op_write_reg(struct mhi_controller *mhi_cntrl,
|
||||||
|
+ void __iomem *addr,
|
||||||
|
+ u32 val)
|
||||||
|
+{
|
||||||
|
+ writel(val, addr);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void ath11k_mhi_qrtr_instance_set(struct mhi_controller *mhi_cntrl)
|
||||||
|
+{
|
||||||
|
+ struct ath11k_base *ab = dev_get_drvdata(mhi_cntrl->cntrl_dev);
|
||||||
|
+
|
||||||
|
+ if (ab->hw_rev == ATH11K_HW_QCN9074_HW10) {
|
||||||
|
+ ath11k_mhi_op_write_reg(mhi_cntrl,
|
||||||
|
+ mhi_cntrl->bhi + BHI_ERRDBG2,
|
||||||
|
+ FIELD_PREP(QRTR_INSTANCE_MASK,
|
||||||
|
+ ab->qmi.service_ins_id - ab->hw_params.qmi_service_ins_id));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static char *ath11k_mhi_op_callback_to_str(enum mhi_callback reason)
|
||||||
|
{
|
||||||
|
switch (reason) {
|
||||||
|
@@ -315,6 +343,8 @@ static char *ath11k_mhi_op_callback_to_s
|
||||||
|
return "MHI_CB_FATAL_ERROR";
|
||||||
|
case MHI_CB_BW_REQ:
|
||||||
|
return "MHI_CB_BW_REQ";
|
||||||
|
+ case MHI_CB_EE_SBL_MODE:
|
||||||
|
+ return "MHI_CB_EE_SBL_MODE";
|
||||||
|
default:
|
||||||
|
return "UNKNOWN";
|
||||||
|
}
|
||||||
|
@@ -336,27 +366,14 @@ static void ath11k_mhi_op_status_cb(stru
|
||||||
|
if (!(test_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags)))
|
||||||
|
queue_work(ab->workqueue_aux, &ab->reset_work);
|
||||||
|
break;
|
||||||
|
+ case MHI_CB_EE_SBL_MODE:
|
||||||
|
+ ath11k_mhi_qrtr_instance_set(mhi_cntrl);
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int ath11k_mhi_op_read_reg(struct mhi_controller *mhi_cntrl,
|
||||||
|
- void __iomem *addr,
|
||||||
|
- u32 *out)
|
||||||
|
-{
|
||||||
|
- *out = readl(addr);
|
||||||
|
-
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void ath11k_mhi_op_write_reg(struct mhi_controller *mhi_cntrl,
|
||||||
|
- void __iomem *addr,
|
||||||
|
- u32 val)
|
||||||
|
-{
|
||||||
|
- writel(val, addr);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static int ath11k_mhi_read_addr_from_dt(struct mhi_controller *mhi_ctrl)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/mhi.h
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/mhi.h
|
||||||
|
@@ -16,6 +16,9 @@
|
||||||
|
#define MHICTRL 0x38
|
||||||
|
#define MHICTRL_RESET_MASK 0x2
|
||||||
|
|
||||||
|
+#define BHI_ERRDBG2 0x38
|
||||||
|
+#define QRTR_INSTANCE_MASK GENMASK(7, 0)
|
||||||
|
+
|
||||||
|
int ath11k_mhi_start(struct ath11k_pci *ar_pci);
|
||||||
|
void ath11k_mhi_stop(struct ath11k_pci *ar_pci);
|
||||||
|
int ath11k_mhi_register(struct ath11k_pci *ar_pci);
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
|
@@ -370,13 +370,20 @@ static void ath11k_pci_sw_reset(struct a
|
||||||
|
static void ath11k_pci_init_qmi_ce_config(struct ath11k_base *ab)
|
||||||
|
{
|
||||||
|
struct ath11k_qmi_ce_cfg *cfg = &ab->qmi.ce_cfg;
|
||||||
|
+ struct ath11k_pci *ab_pci = ath11k_pci_priv(ab);
|
||||||
|
+ struct pci_bus *bus = ab_pci->pdev->bus;
|
||||||
|
|
||||||
|
cfg->tgt_ce = ab->hw_params.target_ce_config;
|
||||||
|
cfg->tgt_ce_len = ab->hw_params.target_ce_count;
|
||||||
|
|
||||||
|
cfg->svc_to_ce_map = ab->hw_params.svc_to_ce_map;
|
||||||
|
cfg->svc_to_ce_map_len = ab->hw_params.svc_to_ce_map_len;
|
||||||
|
- ab->qmi.service_ins_id = ab->hw_params.qmi_service_ins_id;
|
||||||
|
+
|
||||||
|
+ if (ab->hw_rev == ATH11K_HW_QCN9074_HW10) {
|
||||||
|
+ ab->qmi.service_ins_id = ab->hw_params.qmi_service_ins_id +
|
||||||
|
+ (((pci_domain_nr(bus) & 0xF) << 4) | (bus->number & 0xF));
|
||||||
|
+ } else
|
||||||
|
+ ab->qmi.service_ins_id = ab->hw_params.qmi_service_ins_id;
|
||||||
|
|
||||||
|
ath11k_ce_get_shadow_config(ab, &cfg->shadow_reg_v2,
|
||||||
|
&cfg->shadow_reg_v2_len);
|
|
@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
@@ -451,7 +451,11 @@ static int ath11k_pci_alloc_msi(struct a
|
@@ -458,7 +458,11 @@ static int ath11k_pci_alloc_msi(struct a
|
||||||
pci_read_config_dword(pci_dev, pci_dev->msi_cap + PCI_MSI_ADDRESS_LO,
|
pci_read_config_dword(pci_dev, pci_dev->msi_cap + PCI_MSI_ADDRESS_LO,
|
||||||
&ab->pci.msi.addr_lo);
|
&ab->pci.msi.addr_lo);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
From dd3b9c59cfa1e9e0b73a575f4646be905691eaef Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 19:34:10 +0200
|
||||||
|
Subject: [PATCH 241/241] ath11k: Disable coldboot calibration for IPQ8074
|
||||||
|
|
||||||
|
There is a bug with the remoteproc reset after coldboot calibration,
|
||||||
|
so until that is resolved disabled it to allow using the radio.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath11k/core.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||||
|
@@ -81,7 +81,7 @@ static const struct ath11k_hw_params ath
|
||||||
|
.supports_shadow_regs = false,
|
||||||
|
.idle_ps = false,
|
||||||
|
.supports_sta_ps = false,
|
||||||
|
- .cold_boot_calib = true,
|
||||||
|
+ .cold_boot_calib = false,
|
||||||
|
.cbcal_restart_fw = true,
|
||||||
|
.fw_mem_mode = 0,
|
||||||
|
.num_vdevs = 16 + 1,
|
|
@ -0,0 +1,74 @@
|
||||||
|
From fb1c40c225cbc413d82c872dd8c8af3469b2b921 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 16 Dec 2022 17:17:52 +0100
|
||||||
|
Subject: [PATCH] ath11k: support setting FW memory mode via DT
|
||||||
|
|
||||||
|
ath11k is really memory intensive for devices with less that 1GB of RAM,
|
||||||
|
so lets allow saving a significant amount of memory by setting the FW to
|
||||||
|
Mode-1 via DTS for devices that need it.
|
||||||
|
|
||||||
|
However the drawback is reduced number of VDEV-s and peers which is a
|
||||||
|
reasonable tradeoff.
|
||||||
|
|
||||||
|
Mode-2 allows for further reduction, but it has further restrictions.
|
||||||
|
|
||||||
|
While we are here, lets add a print to be able to easily determine what
|
||||||
|
FW memory mode is being used.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++--
|
||||||
|
1 file changed, 26 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||||
|
@@ -32,7 +32,7 @@ module_param_named(frame_mode, ath11k_fr
|
||||||
|
MODULE_PARM_DESC(frame_mode,
|
||||||
|
"Datapath frame mode (0: raw, 1: native wifi (default), 2: ethernet)");
|
||||||
|
|
||||||
|
-static const struct ath11k_hw_params ath11k_hw_params[] = {
|
||||||
|
+static struct ath11k_hw_params ath11k_hw_params[] = {
|
||||||
|
{
|
||||||
|
.hw_rev = ATH11K_HW_IPQ8074,
|
||||||
|
.name = "ipq8074 hw2.0",
|
||||||
|
@@ -1826,7 +1826,8 @@ static void ath11k_core_reset(struct wor
|
||||||
|
static int ath11k_init_hw_params(struct ath11k_base *ab)
|
||||||
|
{
|
||||||
|
const struct ath11k_hw_params *hw_params = NULL;
|
||||||
|
- int i;
|
||||||
|
+ u32 fw_mem_mode;
|
||||||
|
+ int i, ret;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(ath11k_hw_params); i++) {
|
||||||
|
hw_params = &ath11k_hw_params[i];
|
||||||
|
@@ -1842,7 +1843,30 @@ static int ath11k_init_hw_params(struct
|
||||||
|
|
||||||
|
ab->hw_params = *hw_params;
|
||||||
|
|
||||||
|
+ ret = of_property_read_u32(ab->dev->of_node,
|
||||||
|
+ "qcom,ath11k-fw-memory-mode",
|
||||||
|
+ &fw_mem_mode);
|
||||||
|
+ if (!ret) {
|
||||||
|
+ if (fw_mem_mode == 0) {
|
||||||
|
+ ab->hw_params.fw_mem_mode = 0;
|
||||||
|
+ ab->hw_params.num_vdevs = 16 + 1;
|
||||||
|
+ ab->hw_params.num_peers = 512;
|
||||||
|
+ }
|
||||||
|
+ else if (fw_mem_mode == 1) {
|
||||||
|
+ ab->hw_params.fw_mem_mode = 1;
|
||||||
|
+ ab->hw_params.num_vdevs = 8;
|
||||||
|
+ ab->hw_params.num_peers = 128;
|
||||||
|
+ } else if (fw_mem_mode == 2) {
|
||||||
|
+ ab->hw_params.fw_mem_mode = 2;
|
||||||
|
+ ab->hw_params.num_vdevs = 8;
|
||||||
|
+ ab->hw_params.num_peers = 128;
|
||||||
|
+ ab->hw_params.cold_boot_calib = false;
|
||||||
|
+ } else
|
||||||
|
+ ath11k_info(ab, "Unsupported FW memory mode: %u\n", fw_mem_mode);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ath11k_info(ab, "%s\n", ab->hw_params.name);
|
||||||
|
+ ath11k_info(ab, "FW memory mode: %d\n", ab->hw_params.fw_mem_mode);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
57
package/kernel/qca-nss-dp/Makefile
Normal file
57
package/kernel/qca-nss-dp/Makefile
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=qca-nss-dp
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-dp.git
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_DATE:=2022-04-30
|
||||||
|
PKG_SOURCE_VERSION:=72e9ec4187414461cbcf6ccff100e8b5ebe5f40b
|
||||||
|
PKG_MIRROR_HASH:=805f16e59c75511132922f97740ebf6bf953845b0bbfd2089c4615456893bb37
|
||||||
|
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define KernelPackage/qca-nss-dp
|
||||||
|
SECTION:=kernel
|
||||||
|
CATEGORY:=Kernel modules
|
||||||
|
SUBMENU:=Network Devices
|
||||||
|
DEPENDS:=@TARGET_ipq807x +kmod-qca-ssdk
|
||||||
|
TITLE:=Qualcom NSS dataplane ethernet driver
|
||||||
|
FILES:=$(PKG_BUILD_DIR)/qca-nss-dp.ko
|
||||||
|
AUTOLOAD:=$(call AutoLoad,31,qca-nss-dp,1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/qca-nss-dp/Description
|
||||||
|
NSS dataplane ethernet driver for Qualcom SoCs.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
mkdir -p $(1)/usr/include/qca-nss-dp
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-dp/
|
||||||
|
endef
|
||||||
|
|
||||||
|
EXTRA_CFLAGS+= \
|
||||||
|
-I$(STAGING_DIR)/usr/include/qca-ssdk
|
||||||
|
|
||||||
|
NSS_DP_HAL_DIR:=$(PKG_BUILD_DIR)/hal
|
||||||
|
define Build/Configure
|
||||||
|
$(LN) $(NSS_DP_HAL_DIR)/soc_ops/$(CONFIG_TARGET_BOARD)/nss_$(CONFIG_TARGET_BOARD).h \
|
||||||
|
$(PKG_BUILD_DIR)/exports/nss_dp_arch.h
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
+$(MAKE) -C "$(LINUX_DIR)" \
|
||||||
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
||||||
|
ARCH="$(LINUX_KARCH)" \
|
||||||
|
M="$(PKG_BUILD_DIR)" \
|
||||||
|
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" SoC="$(CONFIG_TARGET_BOARD)" \
|
||||||
|
$(KERNEL_MAKE_FLAGS) \
|
||||||
|
$(PKG_JOBS) \
|
||||||
|
modules
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call KernelPackage,qca-nss-dp))
|
|
@ -0,0 +1,44 @@
|
||||||
|
From 40979666b4371012405715ffa61ab5760fcdc6b3 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <40979666b4371012405715ffa61ab5760fcdc6b3.1620066716.git.baruch@tkos.co.il>
|
||||||
|
From: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
Date: Mon, 3 May 2021 20:07:36 +0300
|
||||||
|
Subject: [PATCH 1/3] edma_tx_rx: support newer kernels time stamping API
|
||||||
|
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c | 11 +++++++++++
|
||||||
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
@@ -227,10 +227,16 @@ void nss_phy_tstamp_rx_buf(__attribute__
|
||||||
|
* set to the correct PTP class value by calling ptp_classify_raw
|
||||||
|
* in drv->rxtstamp function.
|
||||||
|
*/
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))
|
||||||
|
if (ndev && ndev->phydev && ndev->phydev->drv &&
|
||||||
|
ndev->phydev->drv->rxtstamp)
|
||||||
|
if(ndev->phydev->drv->rxtstamp(ndev->phydev, skb, 0))
|
||||||
|
return;
|
||||||
|
+#else
|
||||||
|
+ if (ndev && phy_has_rxtstamp(ndev->phydev))
|
||||||
|
+ if (phy_rxtstamp(ndev->phydev, skb, 0))
|
||||||
|
+ return;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
netif_receive_skb(skb);
|
||||||
|
}
|
||||||
|
@@ -248,9 +254,14 @@ void nss_phy_tstamp_tx_buf(struct net_de
|
||||||
|
* set to the correct PTP class value by calling ptp_classify_raw
|
||||||
|
* in the drv->txtstamp function.
|
||||||
|
*/
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))
|
||||||
|
if (ndev && ndev->phydev && ndev->phydev->drv &&
|
||||||
|
ndev->phydev->drv->txtstamp)
|
||||||
|
ndev->phydev->drv->txtstamp(ndev->phydev, skb, 0);
|
||||||
|
+#else
|
||||||
|
+ if (ndev && phy_has_txtstamp(ndev->phydev))
|
||||||
|
+ phy_rxtstamp(ndev->phydev, skb, 0);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(nss_phy_tstamp_tx_buf);
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
From cef7873a2d77df13ee702d902ed4e06b2248904b Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <cef7873a2d77df13ee702d902ed4e06b2248904b.1620066716.git.baruch@tkos.co.il>
|
||||||
|
In-Reply-To: <40979666b4371012405715ffa61ab5760fcdc6b3.1620066716.git.baruch@tkos.co.il>
|
||||||
|
References: <40979666b4371012405715ffa61ab5760fcdc6b3.1620066716.git.baruch@tkos.co.il>
|
||||||
|
From: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
Date: Mon, 3 May 2021 20:17:22 +0300
|
||||||
|
Subject: [PATCH 2/3] nss_dp_main: make phy mode code compatible with newer
|
||||||
|
kernels
|
||||||
|
|
||||||
|
---
|
||||||
|
include/nss_dp_dev.h | 4 ++--
|
||||||
|
nss_dp_main.c | 4 ++++
|
||||||
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/include/nss_dp_dev.h
|
||||||
|
+++ b/include/nss_dp_dev.h
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
-#include <linux/switch.h>
|
||||||
|
+#include <linux/phy.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
|
||||||
|
#include "nss_dp_api_if.h"
|
||||||
|
@@ -99,7 +99,7 @@ struct nss_dp_dev {
|
||||||
|
/* Phy related stuff */
|
||||||
|
struct phy_device *phydev; /* Phy device */
|
||||||
|
struct mii_bus *miibus; /* MII bus */
|
||||||
|
- uint32_t phy_mii_type; /* RGMII/SGMII/QSGMII */
|
||||||
|
+ phy_interface_t phy_mii_type; /* RGMII/SGMII/QSGMII */
|
||||||
|
uint32_t phy_mdio_addr; /* Mdio address */
|
||||||
|
bool link_poll; /* Link polling enable? */
|
||||||
|
uint32_t forced_speed; /* Forced speed? */
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -584,7 +584,11 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
hal_pdata->netdev = netdev;
|
||||||
|
hal_pdata->macid = dp_priv->macid;
|
||||||
|
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0))
|
||||||
|
dp_priv->phy_mii_type = of_get_phy_mode(np);
|
||||||
|
+#else
|
||||||
|
+ of_get_phy_mode(np, &dp_priv->phy_mii_type);
|
||||||
|
+#endif
|
||||||
|
dp_priv->link_poll = of_property_read_bool(np, "qcom,link-poll");
|
||||||
|
if (of_property_read_u32(np, "qcom,phy-mdio-addr",
|
||||||
|
&dp_priv->phy_mdio_addr) && dp_priv->link_poll) {
|
|
@ -0,0 +1,48 @@
|
||||||
|
From c8c52512ff48bee578901c381a42f027e79eadf9 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <c8c52512ff48bee578901c381a42f027e79eadf9.1620066716.git.baruch@tkos.co.il>
|
||||||
|
In-Reply-To: <40979666b4371012405715ffa61ab5760fcdc6b3.1620066716.git.baruch@tkos.co.il>
|
||||||
|
References: <40979666b4371012405715ffa61ab5760fcdc6b3.1620066716.git.baruch@tkos.co.il>
|
||||||
|
From: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
Date: Mon, 3 May 2021 20:20:29 +0300
|
||||||
|
Subject: [PATCH 3/3] Drop _nocache variants of ioremap()
|
||||||
|
|
||||||
|
Recent kernels removed them.
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c | 2 +-
|
||||||
|
hal/gmac_ops/qcom/qcom_if.c | 2 +-
|
||||||
|
hal/gmac_ops/syn/xgmac/syn_if.c | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
@@ -279,7 +279,7 @@ int edma_init(void)
|
||||||
|
/*
|
||||||
|
* Remap register resource
|
||||||
|
*/
|
||||||
|
- edma_hw.reg_base = ioremap_nocache((edma_hw.reg_resource)->start,
|
||||||
|
+ edma_hw.reg_base = ioremap((edma_hw.reg_resource)->start,
|
||||||
|
resource_size(edma_hw.reg_resource));
|
||||||
|
if (!edma_hw.reg_base) {
|
||||||
|
pr_warn("Unable to remap EDMA register memory.\n");
|
||||||
|
--- a/hal/gmac_ops/qcom/qcom_if.c
|
||||||
|
+++ b/hal/gmac_ops/qcom/qcom_if.c
|
||||||
|
@@ -418,7 +418,7 @@ static void *qcom_init(struct nss_gmac_h
|
||||||
|
qhd->nghd.mac_id = gmacpdata->macid;
|
||||||
|
|
||||||
|
/* Populate the mac base addresses */
|
||||||
|
- qhd->nghd.mac_base = devm_ioremap_nocache(&dp_priv->pdev->dev,
|
||||||
|
+ qhd->nghd.mac_base = devm_ioremap(&dp_priv->pdev->dev,
|
||||||
|
res->start, resource_size(res));
|
||||||
|
if (!qhd->nghd.mac_base) {
|
||||||
|
netdev_dbg(ndev, "ioremap fail.\n");
|
||||||
|
--- a/hal/gmac_ops/syn/xgmac/syn_if.c
|
||||||
|
+++ b/hal/gmac_ops/syn/xgmac/syn_if.c
|
||||||
|
@@ -432,7 +432,7 @@ static void *syn_init(struct nss_gmac_ha
|
||||||
|
|
||||||
|
/* Populate the mac base addresses */
|
||||||
|
shd->nghd.mac_base =
|
||||||
|
- devm_ioremap_nocache(&dp_priv->pdev->dev, res->start,
|
||||||
|
+ devm_ioremap(&dp_priv->pdev->dev, res->start,
|
||||||
|
resource_size(res));
|
||||||
|
if (!shd->nghd.mac_base) {
|
||||||
|
netdev_dbg(ndev, "ioremap fail.\n");
|
|
@ -0,0 +1,31 @@
|
||||||
|
From d74920e2a7c413ef40eed72f9cf287cf6fbd5fb8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Thu, 20 May 2021 14:56:46 +0200
|
||||||
|
Subject: [PATCH 1/2] EDMA: Fix NAPI packet counting
|
||||||
|
|
||||||
|
There is a bug in the NAPI packet counting that will
|
||||||
|
cause NAPI over budget warnings.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
@@ -459,12 +459,12 @@ int edma_napi(struct napi_struct *napi,
|
||||||
|
|
||||||
|
for (i = 0; i < ehw->txcmpl_rings; i++) {
|
||||||
|
txcmpl_ring = &ehw->txcmpl_ring[i];
|
||||||
|
- work_done += edma_clean_tx(ehw, txcmpl_ring);
|
||||||
|
+ edma_clean_tx(ehw, txcmpl_ring);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ehw->rxfill_rings; i++) {
|
||||||
|
rxfill_ring = &ehw->rxfill_ring[i];
|
||||||
|
- work_done += edma_alloc_rx_buffer(ehw, rxfill_ring);
|
||||||
|
+ edma_alloc_rx_buffer(ehw, rxfill_ring);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
|
@ -0,0 +1,41 @@
|
||||||
|
From 44a30d94abcbb10aacc21db29be212518a6b1bf7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Thu, 20 May 2021 14:57:46 +0200
|
||||||
|
Subject: [PATCH] EDMA: Use NAPI_POLL_WEIGHT as NAPI weight
|
||||||
|
|
||||||
|
Currently a weight of 100 is used by the EDMA, according
|
||||||
|
to upstream max of 64 should be used and that is used for
|
||||||
|
almost any driver.
|
||||||
|
|
||||||
|
They also introduced NAPI_POLL_WEIGHT define which equals
|
||||||
|
to 64.
|
||||||
|
|
||||||
|
So use NAPI_POLL_WEIGHT as the weight.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c | 2 +-
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_data_plane.h | 1 -
|
||||||
|
2 files changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
@@ -837,7 +837,7 @@ static int edma_register_netdevice(struc
|
||||||
|
*/
|
||||||
|
if (!edma_hw.napi_added) {
|
||||||
|
netif_napi_add(netdev, &edma_hw.napi, edma_napi,
|
||||||
|
- EDMA_NAPI_WORK);
|
||||||
|
+ NAPI_POLL_WEIGHT);
|
||||||
|
/*
|
||||||
|
* Register the interrupt handlers and enable interrupts
|
||||||
|
*/
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.h
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.h
|
||||||
|
@@ -26,7 +26,6 @@
|
||||||
|
#define EDMA_RX_PREHDR_SIZE (sizeof(struct edma_rx_preheader))
|
||||||
|
#define EDMA_TX_PREHDR_SIZE (sizeof(struct edma_tx_preheader))
|
||||||
|
#define EDMA_RING_SIZE 128
|
||||||
|
-#define EDMA_NAPI_WORK 100
|
||||||
|
#define EDMA_START_GMACS NSS_DP_HAL_START_IFNUM
|
||||||
|
#define EDMA_MAX_GMACS NSS_DP_HAL_MAX_PORTS
|
||||||
|
#define EDMA_TX_PKT_MIN_SIZE 33 /* IPQ807x EDMA needs a minimum packet size of 33 bytes */
|
|
@ -0,0 +1,46 @@
|
||||||
|
From cadeb62a42296563141d6954eec58e34ef86778d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 13 Aug 2021 20:12:08 +0200
|
||||||
|
Subject: [PATCH] NSS-DP: fix of_get_mac_address()
|
||||||
|
|
||||||
|
Recently OpenWrt backported the updated of_get_mac_address()
|
||||||
|
function which returns and error code instead.
|
||||||
|
|
||||||
|
So, patch the SSDK to use it and fix the compilation error.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
nss_dp_main.c | 13 ++++---------
|
||||||
|
1 file changed, 4 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -555,9 +555,10 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
struct net_device *netdev,
|
||||||
|
struct nss_gmac_hal_platform_data *hal_pdata)
|
||||||
|
{
|
||||||
|
- uint8_t *maddr;
|
||||||
|
+ u8 maddr[ETH_ALEN];
|
||||||
|
struct nss_dp_dev *dp_priv;
|
||||||
|
struct resource memres_devtree = {0};
|
||||||
|
+ int ret;
|
||||||
|
|
||||||
|
dp_priv = netdev_priv(netdev);
|
||||||
|
|
||||||
|
@@ -600,14 +601,8 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
of_property_read_u32(np, "qcom,forced-speed", &dp_priv->forced_speed);
|
||||||
|
of_property_read_u32(np, "qcom,forced-duplex", &dp_priv->forced_duplex);
|
||||||
|
|
||||||
|
- maddr = (uint8_t *)of_get_mac_address(np);
|
||||||
|
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(5, 4, 0))
|
||||||
|
- if (IS_ERR((void *)maddr)) {
|
||||||
|
- maddr = NULL;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- if (maddr && is_valid_ether_addr(maddr)) {
|
||||||
|
+ ret = of_get_mac_address(np, maddr);
|
||||||
|
+ if (!ret && is_valid_ether_addr(maddr)) {
|
||||||
|
ether_addr_copy(netdev->dev_addr, maddr);
|
||||||
|
} else {
|
||||||
|
random_ether_addr(netdev->dev_addr);
|
|
@ -0,0 +1,29 @@
|
||||||
|
From 5da62ba19f554bf437752a44360fb5ae9f1a7f5e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Tue, 8 Mar 2022 10:48:32 +0100
|
||||||
|
Subject: [PATCH] NSS-DP: implement ethernet IOCTL-s
|
||||||
|
|
||||||
|
Since kernel 5.15 ethernet/PHY related IOCTL-s have been split from the
|
||||||
|
generic IOCTL netdev op.
|
||||||
|
So, implement the new op instead of the generic one which is considered
|
||||||
|
for private IOCTL-s only now for 5.15+.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
nss_dp_main.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -532,7 +532,11 @@ static const struct net_device_ops nss_d
|
||||||
|
.ndo_set_mac_address = nss_dp_set_mac_address,
|
||||||
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
|
.ndo_change_mtu = nss_dp_change_mtu,
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
||||||
|
.ndo_do_ioctl = nss_dp_do_ioctl,
|
||||||
|
+#else
|
||||||
|
+ .ndo_eth_ioctl = nss_dp_do_ioctl,
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))
|
||||||
|
.ndo_bridge_setlink = switchdev_port_bridge_setlink,
|
|
@ -0,0 +1,48 @@
|
||||||
|
From c9afdcdd2642485a6476906be9da2e811090fc7a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 18 Mar 2022 18:06:03 +0100
|
||||||
|
Subject: [PATCH] switchdev: remove the transaction structure
|
||||||
|
|
||||||
|
Since 5.12 there is no transaction structure anymore, so drop it for
|
||||||
|
5.12 and newer.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
nss_dp_switchdev.c | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
--- a/nss_dp_switchdev.c
|
||||||
|
+++ b/nss_dp_switchdev.c
|
||||||
|
@@ -279,13 +279,19 @@ void nss_dp_switchdev_setup(struct net_d
|
||||||
|
* Sets attributes
|
||||||
|
*/
|
||||||
|
static int nss_dp_port_attr_set(struct net_device *dev,
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0))
|
||||||
|
const struct switchdev_attr *attr,
|
||||||
|
struct switchdev_trans *trans)
|
||||||
|
+#else
|
||||||
|
+ const struct switchdev_attr *attr)
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
struct nss_dp_dev *dp_priv = (struct nss_dp_dev *)netdev_priv(dev);
|
||||||
|
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0))
|
||||||
|
if (switchdev_trans_ph_prepare(trans))
|
||||||
|
return 0;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
switch (attr->id) {
|
||||||
|
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS:
|
||||||
|
@@ -309,8 +315,12 @@ static int nss_dp_switchdev_port_attr_se
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0))
|
||||||
|
err = nss_dp_port_attr_set(netdev, port_attr_info->attr,
|
||||||
|
port_attr_info->trans);
|
||||||
|
+#else
|
||||||
|
+ err = nss_dp_port_attr_set(netdev, port_attr_info->attr);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
port_attr_info->handled = true;
|
||||||
|
return notifier_from_errno(err);
|
|
@ -0,0 +1,51 @@
|
||||||
|
From f95868d54301c0f54e968ec9d978c9caa02ee425 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 18 Mar 2022 18:24:18 +0100
|
||||||
|
Subject: [PATCH] switchdev: use new switchdev flags
|
||||||
|
|
||||||
|
Since kernel 5.12 switched utilizes a new way of setting the flags by
|
||||||
|
using a dedicated structure with flags and mask.
|
||||||
|
|
||||||
|
So fix using kernels 5.12 and later.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
include/nss_dp_dev.h | 7 +++++++
|
||||||
|
nss_dp_switchdev.c | 2 +-
|
||||||
|
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/include/nss_dp_dev.h
|
||||||
|
+++ b/include/nss_dp_dev.h
|
||||||
|
@@ -24,6 +24,9 @@
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0))
|
||||||
|
+#include <net/switchdev.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#include "nss_dp_api_if.h"
|
||||||
|
#include "nss_dp_hal_if.h"
|
||||||
|
@@ -126,7 +129,11 @@ struct nss_dp_dev {
|
||||||
|
/* switchdev related attributes */
|
||||||
|
#ifdef CONFIG_NET_SWITCHDEV
|
||||||
|
u8 stp_state; /* STP state of this physical port */
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0))
|
||||||
|
unsigned long brport_flags; /* bridge port flags */
|
||||||
|
+#else
|
||||||
|
+ struct switchdev_brport_flags brport_flags; /* bridge port flags */
|
||||||
|
+#endif
|
||||||
|
#endif
|
||||||
|
uint32_t rx_page_mode; /* page mode for Rx processing */
|
||||||
|
uint32_t rx_jumbo_mru; /* Jumbo mru value for Rx processing */
|
||||||
|
--- a/nss_dp_switchdev.c
|
||||||
|
+++ b/nss_dp_switchdev.c
|
||||||
|
@@ -296,7 +296,7 @@ static int nss_dp_port_attr_set(struct n
|
||||||
|
switch (attr->id) {
|
||||||
|
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS:
|
||||||
|
dp_priv->brport_flags = attr->u.brport_flags;
|
||||||
|
- netdev_dbg(dev, "set brport_flags %lu\n", attr->u.brport_flags);
|
||||||
|
+ netdev_dbg(dev, "set brport_flags %lu\n", attr->u.brport_flags.val);
|
||||||
|
return 0;
|
||||||
|
case SWITCHDEV_ATTR_ID_PORT_STP_STATE:
|
||||||
|
return nss_dp_stp_state_set(dp_priv, attr->u.stp_state);
|
|
@ -0,0 +1,110 @@
|
||||||
|
From d16102cad769f430144ca8094d928762b445e9b0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 18 Mar 2022 22:02:01 +0100
|
||||||
|
Subject: [PATCH] switchdev: fix FDB roaming
|
||||||
|
|
||||||
|
Try and solve the roaming issue by trying to replicate what NSS bridge
|
||||||
|
module is doing, but by utilizing switchdev FDB notifiers instead of
|
||||||
|
adding new notifiers to the bridge code.
|
||||||
|
|
||||||
|
We register a new non-blocking switchdev notifier and simply wait for
|
||||||
|
notification, and then process the SWITCHDEV_FDB_DEL_TO_DEVICE
|
||||||
|
notifications.
|
||||||
|
|
||||||
|
Those tell us that a certain FDB entry should be removed, then a VSI ID
|
||||||
|
is fetched for the physical PPE port and using that VSI ID and the
|
||||||
|
notification provided MAC adress existing FDB entry gets removed.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
nss_dp_switchdev.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 61 insertions(+)
|
||||||
|
|
||||||
|
--- a/nss_dp_switchdev.c
|
||||||
|
+++ b/nss_dp_switchdev.c
|
||||||
|
@@ -24,6 +24,8 @@
|
||||||
|
#include "nss_dp_dev.h"
|
||||||
|
#include "fal/fal_stp.h"
|
||||||
|
#include "fal/fal_ctrlpkt.h"
|
||||||
|
+#include "fal/fal_fdb.h"
|
||||||
|
+#include "ref/ref_vsi.h"
|
||||||
|
|
||||||
|
#define NSS_DP_SWITCH_ID 0
|
||||||
|
#define NSS_DP_SW_ETHTYPE_PID 0 /* PPE ethtype profile ID for slow protocols */
|
||||||
|
@@ -348,10 +350,64 @@ static int nss_dp_switchdev_event(struct
|
||||||
|
return NOTIFY_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int nss_dp_switchdev_fdb_del_event(struct net_device *netdev,
|
||||||
|
+ struct switchdev_notifier_fdb_info *fdb_info)
|
||||||
|
+{
|
||||||
|
+ struct nss_dp_dev *dp_priv = (struct nss_dp_dev *)netdev_priv(netdev);
|
||||||
|
+ fal_fdb_entry_t entry;
|
||||||
|
+ a_uint32_t vsi_id;
|
||||||
|
+ sw_error_t rv;
|
||||||
|
+
|
||||||
|
+ netdev_dbg(netdev, "FDB DEL %pM port %d\n", fdb_info->addr, dp_priv->macid);
|
||||||
|
+
|
||||||
|
+ rv = ppe_port_vsi_get(NSS_DP_SWITCH_ID, dp_priv->macid, &vsi_id);
|
||||||
|
+ if (rv) {
|
||||||
|
+ netdev_err(netdev, "cannot get VSI ID for port %d\n", dp_priv->macid);
|
||||||
|
+ return notifier_from_errno(rv);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ memset(&entry, 0, sizeof(entry));
|
||||||
|
+ memcpy(&entry.addr, fdb_info->addr, ETH_ALEN);
|
||||||
|
+ entry.fid = vsi_id;
|
||||||
|
+
|
||||||
|
+ rv = fal_fdb_entry_del_bymac(NSS_DP_SWITCH_ID, &entry);
|
||||||
|
+ if (rv) {
|
||||||
|
+ netdev_err(netdev, "FDB entry delete failed with MAC %pM and fid %d\n",
|
||||||
|
+ &entry.addr, entry.fid);
|
||||||
|
+ return notifier_from_errno(rv);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return notifier_from_errno(rv);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int nss_dp_fdb_switchdev_event(struct notifier_block *nb,
|
||||||
|
+ unsigned long event, void *ptr)
|
||||||
|
+{
|
||||||
|
+ struct net_device *dev = switchdev_notifier_info_to_dev(ptr);
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Handle switchdev event only for physical devices
|
||||||
|
+ */
|
||||||
|
+ if (!nss_dp_is_phy_dev(dev)) {
|
||||||
|
+ return NOTIFY_DONE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ switch (event) {
|
||||||
|
+ case SWITCHDEV_FDB_DEL_TO_DEVICE:
|
||||||
|
+ return nss_dp_switchdev_fdb_del_event(dev, ptr);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NOTIFY_DONE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static struct notifier_block nss_dp_switchdev_notifier = {
|
||||||
|
.notifier_call = nss_dp_switchdev_event,
|
||||||
|
};
|
||||||
|
|
||||||
|
+static struct notifier_block nss_dp_switchdev_fdb_notifier = {
|
||||||
|
+ .notifier_call = nss_dp_fdb_switchdev_event,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static bool switch_init_done;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -366,6 +422,11 @@ void nss_dp_switchdev_setup(struct net_d
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ err = register_switchdev_notifier(&nss_dp_switchdev_fdb_notifier);
|
||||||
|
+ if (err) {
|
||||||
|
+ netdev_dbg(dev, "%px:Failed to register switchdev FDB notifier\n", dev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
err = register_switchdev_blocking_notifier(&nss_dp_switchdev_notifier);
|
||||||
|
if (err) {
|
||||||
|
netdev_dbg(dev, "%px:Failed to register switchdev notifier\n", dev);
|
|
@ -0,0 +1,41 @@
|
||||||
|
From 7e4ae2d6285095794d73d2f2ce61404f61d4e633 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
Date: Tue, 17 May 2022 15:55:36 +0200
|
||||||
|
Subject: [PATCH 11/11] treewide: fix confusing printing of registered netdev
|
||||||
|
|
||||||
|
Net core implementation changed and now printing the netdev name cause
|
||||||
|
confusing printing if done before register_netdev. Move the old printing
|
||||||
|
to dbg and add an additional info log right after register_netdev to
|
||||||
|
give the user some info on correct nss-dp probe.
|
||||||
|
|
||||||
|
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c | 4 ++--
|
||||||
|
nss_dp_main.c | 3 +++
|
||||||
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
@@ -822,8 +822,8 @@ static int edma_register_netdevice(struc
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- netdev_info(netdev, "nss_dp_edma: Registering netdev %s(qcom-id:%d) with EDMA\n",
|
||||||
|
- netdev->name, macid);
|
||||||
|
+ netdev_dbg(netdev, "nss_dp_edma: Registering netdev %s(qcom-id:%d) with EDMA\n",
|
||||||
|
+ netdev->name, macid);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We expect 'macid' to correspond to ports numbers on
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -875,6 +875,9 @@ static int32_t nss_dp_probe(struct platf
|
||||||
|
goto phy_setup_fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ netdev_info(netdev, "Registered netdev %s(qcom-id:%d)\n",
|
||||||
|
+ netdev->name, port_id);
|
||||||
|
+
|
||||||
|
dp_global_ctx.nss_dp[dp_priv->macid - 1] = dp_priv;
|
||||||
|
dp_global_ctx.slowproto_acl_bm = 0;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
From fee52ef165e9fab2fca15492677082fd8e9e891f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 19 May 2022 23:40:24 +0200
|
||||||
|
Subject: [PATCH 12/12] gmac: syn: xgmac: silence debug log on probe
|
||||||
|
|
||||||
|
Silence debug log set as info in xgmac port probe.
|
||||||
|
|
||||||
|
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
---
|
||||||
|
hal/gmac_ops/syn/xgmac/syn_if.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/hal/gmac_ops/syn/xgmac/syn_if.c
|
||||||
|
+++ b/hal/gmac_ops/syn/xgmac/syn_if.c
|
||||||
|
@@ -445,7 +445,7 @@ static void *syn_init(struct nss_gmac_ha
|
||||||
|
|
||||||
|
spin_lock_init(&shd->nghd.slock);
|
||||||
|
|
||||||
|
- netdev_info(ndev, "ioremap OK.Size 0x%x Ndev base 0x%lx macbase 0x%px\n",
|
||||||
|
+ netdev_dbg(ndev, "ioremap OK.Size 0x%x Ndev base 0x%lx macbase 0x%px\n",
|
||||||
|
gmacpdata->reg_len,
|
||||||
|
ndev->base_addr,
|
||||||
|
shd->nghd.mac_base);
|
|
@ -0,0 +1,182 @@
|
||||||
|
From 8293a26ca56ee2e9a88e4efb5dcc7f647803cd8c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
Date: Sun, 5 Jun 2022 21:45:09 -0500
|
||||||
|
Subject: [PATCH] nss_dp_main: Use a 'phy-handle' property to connect to the
|
||||||
|
PHY
|
||||||
|
|
||||||
|
The original method of connecting a PHY to the ethernet controller
|
||||||
|
requires the "qcom,link-poll", and "qcom,phy-mdio-addr" devicetree
|
||||||
|
properties. This is redundant. The PHY node already contains the MDIO
|
||||||
|
address, and attaching a PHY implies "link-poll".
|
||||||
|
|
||||||
|
Allow using a "phy-handle" property. Remove the following properties,
|
||||||
|
as they are no longer used:
|
||||||
|
* "qcom,link-poll"
|
||||||
|
* "qcom,phy-mdio-addr"
|
||||||
|
* "mdio-bus"
|
||||||
|
* "qcom,forced-speed"
|
||||||
|
* "qcom,forced-duplex"
|
||||||
|
|
||||||
|
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
---
|
||||||
|
include/nss_dp_dev.h | 5 +--
|
||||||
|
nss_dp_main.c | 91 +++++---------------------------------------
|
||||||
|
2 files changed, 10 insertions(+), 86 deletions(-)
|
||||||
|
|
||||||
|
--- a/include/nss_dp_dev.h
|
||||||
|
+++ b/include/nss_dp_dev.h
|
||||||
|
@@ -100,13 +100,10 @@ struct nss_dp_dev {
|
||||||
|
unsigned long drv_flags; /* Driver specific feature flags */
|
||||||
|
|
||||||
|
/* Phy related stuff */
|
||||||
|
+ struct device_node *phy_node;
|
||||||
|
struct phy_device *phydev; /* Phy device */
|
||||||
|
struct mii_bus *miibus; /* MII bus */
|
||||||
|
phy_interface_t phy_mii_type; /* RGMII/SGMII/QSGMII */
|
||||||
|
- uint32_t phy_mdio_addr; /* Mdio address */
|
||||||
|
- bool link_poll; /* Link polling enable? */
|
||||||
|
- uint32_t forced_speed; /* Forced speed? */
|
||||||
|
- uint32_t forced_duplex; /* Forced duplex? */
|
||||||
|
uint32_t link_state; /* Current link state */
|
||||||
|
uint32_t pause; /* Current flow control settings */
|
||||||
|
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -399,7 +399,7 @@ static int nss_dp_open(struct net_device
|
||||||
|
|
||||||
|
netif_start_queue(netdev);
|
||||||
|
|
||||||
|
- if (!dp_priv->link_poll) {
|
||||||
|
+ if (!dp_priv->phydev) {
|
||||||
|
/* Notify data plane link is up */
|
||||||
|
if (dp_priv->data_plane_ops->link_state(dp_priv->dpc, 1)) {
|
||||||
|
netdev_dbg(netdev, "Data plane set link failed\n");
|
||||||
|
@@ -576,6 +576,8 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ dp_priv->phy_node = of_parse_phandle(np, "phy-handle", 0);
|
||||||
|
+
|
||||||
|
if (of_property_read_u32(np, "qcom,mactype", &hal_pdata->mactype)) {
|
||||||
|
pr_err("%s: error reading mactype\n", np->name);
|
||||||
|
return -EFAULT;
|
||||||
|
@@ -594,16 +596,6 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
#else
|
||||||
|
of_get_phy_mode(np, &dp_priv->phy_mii_type);
|
||||||
|
#endif
|
||||||
|
- dp_priv->link_poll = of_property_read_bool(np, "qcom,link-poll");
|
||||||
|
- if (of_property_read_u32(np, "qcom,phy-mdio-addr",
|
||||||
|
- &dp_priv->phy_mdio_addr) && dp_priv->link_poll) {
|
||||||
|
- pr_err("%s: mdio addr required if link polling is enabled\n",
|
||||||
|
- np->name);
|
||||||
|
- return -EFAULT;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- of_property_read_u32(np, "qcom,forced-speed", &dp_priv->forced_speed);
|
||||||
|
- of_property_read_u32(np, "qcom,forced-duplex", &dp_priv->forced_duplex);
|
||||||
|
|
||||||
|
ret = of_get_mac_address(np, maddr);
|
||||||
|
if (!ret && is_valid_ether_addr(maddr)) {
|
||||||
|
@@ -636,50 +628,6 @@ static int32_t nss_dp_of_get_pdata(struc
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-/*
|
||||||
|
- * nss_dp_mdio_attach()
|
||||||
|
- */
|
||||||
|
-static struct mii_bus *nss_dp_mdio_attach(struct platform_device *pdev)
|
||||||
|
-{
|
||||||
|
- struct device_node *mdio_node;
|
||||||
|
- struct platform_device *mdio_plat;
|
||||||
|
- struct ipq40xx_mdio_data *mdio_data;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Find mii_bus using "mdio-bus" handle.
|
||||||
|
- */
|
||||||
|
- mdio_node = of_parse_phandle(pdev->dev.of_node, "mdio-bus", 0);
|
||||||
|
- if (mdio_node) {
|
||||||
|
- return of_mdio_find_bus(mdio_node);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- mdio_node = of_find_compatible_node(NULL, NULL, "qcom,qca-mdio");
|
||||||
|
- if (!mdio_node) {
|
||||||
|
- mdio_node = of_find_compatible_node(NULL, NULL,
|
||||||
|
- "qcom,ipq40xx-mdio");
|
||||||
|
- if (!mdio_node) {
|
||||||
|
- dev_err(&pdev->dev, "cannot find mdio node by phandle\n");
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- mdio_plat = of_find_device_by_node(mdio_node);
|
||||||
|
- if (!mdio_plat) {
|
||||||
|
- dev_err(&pdev->dev, "cannot find platform device from mdio node\n");
|
||||||
|
- of_node_put(mdio_node);
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- mdio_data = dev_get_drvdata(&mdio_plat->dev);
|
||||||
|
- if (!mdio_data) {
|
||||||
|
- dev_err(&pdev->dev, "cannot get mii bus reference from device data\n");
|
||||||
|
- of_node_put(mdio_node);
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return mdio_data->mii_bus;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
#ifdef CONFIG_NET_SWITCHDEV
|
||||||
|
/*
|
||||||
|
* nss_dp_is_phy_dev()
|
||||||
|
@@ -738,7 +686,6 @@ static int32_t nss_dp_probe(struct platf
|
||||||
|
struct device_node *np = pdev->dev.of_node;
|
||||||
|
struct nss_gmac_hal_platform_data gmac_hal_pdata;
|
||||||
|
int32_t ret = 0;
|
||||||
|
- uint8_t phy_id[MII_BUS_ID_SIZE + 3];
|
||||||
|
#if defined(NSS_DP_PPE_SUPPORT)
|
||||||
|
uint32_t vsi_id;
|
||||||
|
fal_port_t port_id;
|
||||||
|
@@ -813,37 +760,17 @@ static int32_t nss_dp_probe(struct platf
|
||||||
|
|
||||||
|
dp_priv->drv_flags |= NSS_DP_PRIV_FLAG(INIT_DONE);
|
||||||
|
|
||||||
|
- if (dp_priv->link_poll) {
|
||||||
|
- dp_priv->miibus = nss_dp_mdio_attach(pdev);
|
||||||
|
- if (!dp_priv->miibus) {
|
||||||
|
- netdev_dbg(netdev, "failed to find miibus\n");
|
||||||
|
- goto phy_setup_fail;
|
||||||
|
- }
|
||||||
|
- snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT,
|
||||||
|
- dp_priv->miibus->id, dp_priv->phy_mdio_addr);
|
||||||
|
-
|
||||||
|
+ if (dp_priv->phy_node) {
|
||||||
|
SET_NETDEV_DEV(netdev, &pdev->dev);
|
||||||
|
-
|
||||||
|
- dp_priv->phydev = phy_connect(netdev, phy_id,
|
||||||
|
- &nss_dp_adjust_link,
|
||||||
|
- dp_priv->phy_mii_type);
|
||||||
|
+ dp_priv->phydev = of_phy_connect(netdev, dp_priv->phy_node,
|
||||||
|
+ &nss_dp_adjust_link, 0,
|
||||||
|
+ dp_priv->phy_mii_type);
|
||||||
|
if (IS_ERR(dp_priv->phydev)) {
|
||||||
|
- netdev_dbg(netdev, "failed to connect to phy device\n");
|
||||||
|
+ dev_err(&pdev->dev, "Could not attach to PHY\n");
|
||||||
|
goto phy_setup_fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))
|
||||||
|
- dp_priv->phydev->advertising |=
|
||||||
|
- (ADVERTISED_Pause | ADVERTISED_Asym_Pause);
|
||||||
|
- dp_priv->phydev->supported |=
|
||||||
|
- (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
|
||||||
|
-#else
|
||||||
|
- linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, dp_priv->phydev->advertising);
|
||||||
|
- linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, dp_priv->phydev->advertising);
|
||||||
|
-
|
||||||
|
- linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, dp_priv->phydev->supported);
|
||||||
|
- linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, dp_priv->phydev->supported);
|
||||||
|
-#endif
|
||||||
|
+ phy_attached_info(dp_priv->phydev);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(NSS_DP_PPE_SUPPORT)
|
|
@ -0,0 +1,63 @@
|
||||||
|
From ae4fe8fb79b68f4cf4a887434ab6a8a9a1c65bfc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Thu, 23 Jun 2022 14:18:50 +0200
|
||||||
|
Subject: [PATCH] nss-dp: edma-v1: use NAPI GRO by default
|
||||||
|
|
||||||
|
Utilize napi_gro_receive instead of plain netif_receive_skb on EDMA v1.
|
||||||
|
|
||||||
|
Usually it provides quite a lot of RX speed improvements, however in some
|
||||||
|
cases it may lead to decreased performance as there is no checksum
|
||||||
|
offloading implemented.
|
||||||
|
|
||||||
|
In cases where reduced performance is experienced its possible to disable
|
||||||
|
GRO by using ethtool.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c | 10 ++++++----
|
||||||
|
hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c | 8 ++++++--
|
||||||
|
2 files changed, 12 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
index 1d748db..e81c461 100644
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
|
||||||
|
@@ -589,10 +589,12 @@ drop:
|
||||||
|
*/
|
||||||
|
static void edma_if_set_features(struct nss_dp_data_plane_ctx *dpc)
|
||||||
|
{
|
||||||
|
- /*
|
||||||
|
- * TODO - add flags to support HIGHMEM/cksum offload VLAN
|
||||||
|
- * the features are enabled.
|
||||||
|
- */
|
||||||
|
+ struct net_device *netdev = dpc->dev;
|
||||||
|
+
|
||||||
|
+ netdev->features |= NETIF_F_GRO;
|
||||||
|
+ netdev->hw_features |= NETIF_F_GRO;
|
||||||
|
+ netdev->vlan_features |= NETIF_F_GRO;
|
||||||
|
+ netdev->wanted_features |= NETIF_F_GRO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO - check if this is needed */
|
||||||
|
diff --git a/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c b/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
index 5780a30..a002a79 100644
|
||||||
|
--- a/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
+++ b/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
|
||||||
|
@@ -410,8 +410,12 @@ static uint32_t edma_clean_rx(struct edma_hw *ehw,
|
||||||
|
if (unlikely(EDMA_RXPH_SERVICE_CODE_GET(rxph) ==
|
||||||
|
NSS_PTP_EVENT_SERVICE_CODE))
|
||||||
|
nss_phy_tstamp_rx_buf(ndev, skb);
|
||||||
|
- else
|
||||||
|
- netif_receive_skb(skb);
|
||||||
|
+ else {
|
||||||
|
+ if (likely(ndev->features & NETIF_F_GRO))
|
||||||
|
+ napi_gro_receive(&ehw->napi, skb);
|
||||||
|
+ else
|
||||||
|
+ netif_receive_skb(skb);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
next_rx_desc:
|
||||||
|
/*
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
From 358b93e40d0c6b6d381fe0e9d2a63c45a10321b3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Sun, 4 Dec 2022 18:41:36 +0100
|
||||||
|
Subject: [PATCH] nss-dp: allow setting netdev name from DTS
|
||||||
|
|
||||||
|
Allow reading the desired netdev name from DTS like DSA allows and then
|
||||||
|
set it as the netdev name during registration.
|
||||||
|
|
||||||
|
If label is not defined, simply fallback to kernel ethN enumeration.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
nss_dp_main.c | 17 ++++++++++++++---
|
||||||
|
1 file changed, 14 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/nss_dp_main.c b/nss_dp_main.c
|
||||||
|
index 18e1088..19e14fb 100644
|
||||||
|
--- a/nss_dp_main.c
|
||||||
|
+++ b/nss_dp_main.c
|
||||||
|
@@ -685,18 +685,29 @@ static int32_t nss_dp_probe(struct platform_device *pdev)
|
||||||
|
struct nss_dp_dev *dp_priv;
|
||||||
|
struct device_node *np = pdev->dev.of_node;
|
||||||
|
struct nss_gmac_hal_platform_data gmac_hal_pdata;
|
||||||
|
+ const char *name = of_get_property(np, "label", NULL);
|
||||||
|
int32_t ret = 0;
|
||||||
|
+ int assign_type;
|
||||||
|
#if defined(NSS_DP_PPE_SUPPORT)
|
||||||
|
uint32_t vsi_id;
|
||||||
|
fal_port_t port_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ if (name) {
|
||||||
|
+ assign_type = NET_NAME_PREDICTABLE;
|
||||||
|
+ } else {
|
||||||
|
+ name = "eth%d";
|
||||||
|
+ assign_type = NET_NAME_ENUM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* TODO: See if we need to do some SoC level common init */
|
||||||
|
|
||||||
|
- netdev = alloc_etherdev_mqs(sizeof(struct nss_dp_dev),
|
||||||
|
- NSS_DP_NETDEV_TX_QUEUE_NUM, NSS_DP_NETDEV_RX_QUEUE_NUM);
|
||||||
|
+ netdev = alloc_netdev_mqs(sizeof(struct nss_dp_dev),
|
||||||
|
+ name, assign_type,
|
||||||
|
+ ether_setup,
|
||||||
|
+ NSS_DP_NETDEV_TX_QUEUE_NUM, NSS_DP_NETDEV_RX_QUEUE_NUM);
|
||||||
|
if (!netdev) {
|
||||||
|
- pr_info("alloc_etherdev() failed\n");
|
||||||
|
+ dev_err(&pdev->dev, "alloc_netdev_mqs() failed\n");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
82
package/kernel/qca-ssdk/Makefile
Normal file
82
package/kernel/qca-ssdk/Makefile
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=qca-ssdk
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_DATE:=2022-09-12
|
||||||
|
PKG_SOURCE_VERSION:=628b22bc3d5ee81414b75ab3de6a255c82754dec
|
||||||
|
PKG_MIRROR_HASH:=859344f79504b9953639dc5aa27042249f68e3a9a269e66d7f7a25e1ab38c110
|
||||||
|
|
||||||
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define KernelPackage/qca-ssdk
|
||||||
|
SECTION:=kernel
|
||||||
|
CATEGORY:=Kernel modules
|
||||||
|
SUBMENU:=Network Devices
|
||||||
|
TITLE:=Qualcom SSDK switch driver
|
||||||
|
DEPENDS:=@(TARGET_ipq807x)
|
||||||
|
FILES:=$(PKG_BUILD_DIR)/build/bin/qca-ssdk.ko
|
||||||
|
AUTOLOAD:=$(call AutoLoad,30,qca-ssdk)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/qca-ssdk/Description
|
||||||
|
Driver for Qualcomm Atheros switches.
|
||||||
|
endef
|
||||||
|
|
||||||
|
GCC_VERSION=$(shell echo "$(CONFIG_GCC_VERSION)" | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
|
||||||
|
|
||||||
|
ifdef CONFIG_TOOLCHAIN_BIN_PATH
|
||||||
|
TOOLCHAIN_BIN_PATH=$(CONFIG_TOOLCHAIN_BIN_PATH)
|
||||||
|
else
|
||||||
|
TOOLCHAIN_BIN_PATH=$(TOOLCHAIN_DIR)/bin
|
||||||
|
endif
|
||||||
|
|
||||||
|
MAKE_FLAGS+= \
|
||||||
|
TARGET_NAME=$(CONFIG_TARGET_NAME) \
|
||||||
|
TOOL_PATH=$(TOOLCHAIN_BIN_PATH) \
|
||||||
|
SYS_PATH=$(LINUX_DIR) \
|
||||||
|
TOOLPREFIX=$(TARGET_CROSS) \
|
||||||
|
KVER=$(LINUX_VERSION) \
|
||||||
|
ARCH=$(LINUX_KARCH) \
|
||||||
|
TARGET_SUFFIX=$(CONFIG_TARGET_SUFFIX) \
|
||||||
|
GCC_VERSION=$(GCC_VERSION) \
|
||||||
|
EXTRA_CFLAGS=-fno-stack-protector -I$(STAGING_DIR)/usr/include \
|
||||||
|
$(KERNEL_MAKE_FLAGS)
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_TARGET_BOARD), "ipq807x")
|
||||||
|
MAKE_FLAGS+= CHIP_TYPE=HPPE PTP_FEATURE=disable SWCONFIG_FEATURE=disable
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/api
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/ref
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/fal
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/sal
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/init
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/api/sw_ioctl.h $(1)/usr/include/qca-ssdk/api
|
||||||
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_vsi.h ]; then \
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_vsi.h $(1)/usr/include/qca-ssdk/ref/; \
|
||||||
|
fi
|
||||||
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_fdb.h ]; then \
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_fdb.h $(1)/usr/include/qca-ssdk/ref/; \
|
||||||
|
fi
|
||||||
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_port_ctrl.h ]; then \
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_port_ctrl.h $(1)/usr/include/qca-ssdk/ref/; \
|
||||||
|
fi
|
||||||
|
if [ -f $(PKG_BUILD_DIR)/include/init/ssdk_init.h ]; then \
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/init/ssdk_init.h $(1)/usr/include/qca-ssdk/init/; \
|
||||||
|
fi
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/fal $(1)/usr/include/qca-ssdk
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/common/*.h $(1)/usr/include/qca-ssdk
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/linux/*.h $(1)/usr/include/qca-ssdk
|
||||||
|
$(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/*.h $(1)/usr/include/qca-ssdk
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call KernelPackage,qca-ssdk))
|
|
@ -0,0 +1,56 @@
|
||||||
|
From 6ee395e1cab32d1d4899d7846ea99e6e2dc0a9e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Wed, 12 May 2021 13:41:12 +0200
|
||||||
|
Subject: [PATCH 01/11] SSDK: config: add kernel 5.10
|
||||||
|
|
||||||
|
This is purely to identify it and be able to set
|
||||||
|
flags correctly.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
config | 6 +++++-
|
||||||
|
make/linux_opt.mk | 4 ++--
|
||||||
|
2 files changed, 7 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/config
|
||||||
|
+++ b/config
|
||||||
|
@@ -24,6 +24,10 @@ ifeq ($(KVER),$(filter 5.4%,$(KVER)))
|
||||||
|
OS_VER=5_4
|
||||||
|
endif
|
||||||
|
|
||||||
|
+ifeq ($(KVER),$(filter 5.10%,$(KVER)))
|
||||||
|
+OS_VER=5_10
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
ifeq ($(KVER), 3.4.0)
|
||||||
|
OS_VER=3_4
|
||||||
|
endif
|
||||||
|
@@ -132,7 +136,7 @@ ifeq ($(ARCH), arm)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH), arm64)
|
||||||
|
- ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4%,$(KVER)))
|
||||||
|
+ ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10%,$(KVER)))
|
||||||
|
CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
--- a/make/linux_opt.mk
|
||||||
|
+++ b/make/linux_opt.mk
|
||||||
|
@@ -437,7 +437,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
|
||||||
|
KASAN_SHADOW_SCALE_SHIFT := 3
|
||||||
|
endif
|
||||||
|
|
||||||
|
- ifeq (5_4, $(OS_VER))
|
||||||
|
+ ifeq ($(OS_VER),$(filter 5_4 5_10, $(OS_VER)))
|
||||||
|
ifeq ($(ARCH), arm64)
|
||||||
|
KASAN_OPTION += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
|
||||||
|
endif
|
||||||
|
@@ -468,7 +468,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
- ifeq ($(OS_VER),$(filter 4_4 5_4, $(OS_VER)))
|
||||||
|
+ ifeq ($(OS_VER),$(filter 4_4 5_4 5_10, $(OS_VER)))
|
||||||
|
MODULE_CFLAG += -DKVER34
|
||||||
|
MODULE_CFLAG += -DKVER32
|
||||||
|
MODULE_CFLAG += -DLNX26_22
|
|
@ -0,0 +1,102 @@
|
||||||
|
From 845a89b05aae807fb837f8e8f27f95c89de6023f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Wed, 12 May 2021 13:45:45 +0200
|
||||||
|
Subject: [PATCH 02/11] SSDK: replace ioremap_nocache with ioremap
|
||||||
|
|
||||||
|
ioremap_nocache was dropped upstream, simply use the
|
||||||
|
generic variety.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
src/init/ssdk_clk.c | 10 +++++-----
|
||||||
|
src/init/ssdk_init.c | 2 +-
|
||||||
|
src/init/ssdk_plat.c | 6 +++---
|
||||||
|
3 files changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/init/ssdk_clk.c
|
||||||
|
+++ b/src/init/ssdk_clk.c
|
||||||
|
@@ -721,7 +721,7 @@ ssdk_mp_tcsr_get(a_uint32_t tcsr_offset,
|
||||||
|
{
|
||||||
|
void __iomem *tcsr_base = NULL;
|
||||||
|
|
||||||
|
- tcsr_base = ioremap_nocache(TCSR_ETH_ADDR, TCSR_ETH_SIZE);
|
||||||
|
+ tcsr_base = ioremap(TCSR_ETH_ADDR, TCSR_ETH_SIZE);
|
||||||
|
if (!tcsr_base)
|
||||||
|
{
|
||||||
|
SSDK_ERROR("Failed to map tcsr eth address!\n");
|
||||||
|
@@ -738,7 +738,7 @@ ssdk_mp_tcsr_set(a_uint32_t tcsr_offset,
|
||||||
|
{
|
||||||
|
void __iomem *tcsr_base = NULL;
|
||||||
|
|
||||||
|
- tcsr_base = ioremap_nocache(TCSR_ETH_ADDR, TCSR_ETH_SIZE);
|
||||||
|
+ tcsr_base = ioremap(TCSR_ETH_ADDR, TCSR_ETH_SIZE);
|
||||||
|
if (!tcsr_base)
|
||||||
|
{
|
||||||
|
SSDK_ERROR("Failed to map tcsr eth address!\n");
|
||||||
|
@@ -786,7 +786,7 @@ ssdk_mp_cmnblk_stable_check(void)
|
||||||
|
a_uint32_t reg_val;
|
||||||
|
int i, loops = 20;
|
||||||
|
|
||||||
|
- pll_lock = ioremap_nocache(CMN_PLL_LOCKED_ADDR, CMN_PLL_LOCKED_SIZE);
|
||||||
|
+ pll_lock = ioremap(CMN_PLL_LOCKED_ADDR, CMN_PLL_LOCKED_SIZE);
|
||||||
|
if (!pll_lock) {
|
||||||
|
SSDK_ERROR("Failed to map CMN PLL LOCK register!\n");
|
||||||
|
return A_FALSE;
|
||||||
|
@@ -843,7 +843,7 @@ static void ssdk_cmnblk_pll_src_set(enum
|
||||||
|
void __iomem *cmn_pll_src_base = NULL;
|
||||||
|
a_uint32_t reg_val;
|
||||||
|
|
||||||
|
- cmn_pll_src_base = ioremap_nocache(CMN_BLK_PLL_SRC_ADDR, CMN_BLK_SIZE);
|
||||||
|
+ cmn_pll_src_base = ioremap(CMN_BLK_PLL_SRC_ADDR, CMN_BLK_SIZE);
|
||||||
|
if (!cmn_pll_src_base) {
|
||||||
|
SSDK_ERROR("Failed to map cmn pll source address!\n");
|
||||||
|
return;
|
||||||
|
@@ -869,7 +869,7 @@ static void ssdk_cmnblk_init(enum cmnblk
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- gcc_pll_base = ioremap_nocache(CMN_BLK_ADDR, CMN_BLK_SIZE);
|
||||||
|
+ gcc_pll_base = ioremap(CMN_BLK_ADDR, CMN_BLK_SIZE);
|
||||||
|
if (!gcc_pll_base) {
|
||||||
|
SSDK_ERROR("Failed to map gcc pll address!\n");
|
||||||
|
return;
|
||||||
|
--- a/src/init/ssdk_init.c
|
||||||
|
+++ b/src/init/ssdk_init.c
|
||||||
|
@@ -3134,7 +3134,7 @@ static int ssdk_dess_mac_mode_init(a_uin
|
||||||
|
(a_uint8_t *)®_value, 4);
|
||||||
|
mdelay(10);
|
||||||
|
/*softreset psgmii, fixme*/
|
||||||
|
- gcc_addr = ioremap_nocache(0x1812000, 0x200);
|
||||||
|
+ gcc_addr = ioremap(0x1812000, 0x200);
|
||||||
|
if (!gcc_addr) {
|
||||||
|
SSDK_ERROR("gcc map fail!\n");
|
||||||
|
return 0;
|
||||||
|
--- a/src/init/ssdk_plat.c
|
||||||
|
+++ b/src/init/ssdk_plat.c
|
||||||
|
@@ -1708,7 +1708,7 @@ ssdk_plat_init(ssdk_init_cfg *cfg, a_uin
|
||||||
|
reg_mode = ssdk_uniphy_reg_access_mode_get(dev_id);
|
||||||
|
if(reg_mode == HSL_REG_LOCAL_BUS) {
|
||||||
|
ssdk_uniphy_reg_map_info_get(dev_id, &map);
|
||||||
|
- qca_phy_priv_global[dev_id]->uniphy_hw_addr = ioremap_nocache(map.base_addr,
|
||||||
|
+ qca_phy_priv_global[dev_id]->uniphy_hw_addr = ioremap(map.base_addr,
|
||||||
|
map.size);
|
||||||
|
if (!qca_phy_priv_global[dev_id]->uniphy_hw_addr) {
|
||||||
|
SSDK_ERROR("%s ioremap fail.", __func__);
|
||||||
|
@@ -1723,7 +1723,7 @@ ssdk_plat_init(ssdk_init_cfg *cfg, a_uin
|
||||||
|
reg_mode = ssdk_switch_reg_access_mode_get(dev_id);
|
||||||
|
if (reg_mode == HSL_REG_LOCAL_BUS) {
|
||||||
|
ssdk_switch_reg_map_info_get(dev_id, &map);
|
||||||
|
- qca_phy_priv_global[dev_id]->hw_addr = ioremap_nocache(map.base_addr,
|
||||||
|
+ qca_phy_priv_global[dev_id]->hw_addr = ioremap(map.base_addr,
|
||||||
|
map.size);
|
||||||
|
if (!qca_phy_priv_global[dev_id]->hw_addr) {
|
||||||
|
SSDK_ERROR("%s ioremap fail.", __func__);
|
||||||
|
@@ -1764,7 +1764,7 @@ ssdk_plat_init(ssdk_init_cfg *cfg, a_uin
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- qca_phy_priv_global[dev_id]->psgmii_hw_addr = ioremap_nocache(map.base_addr,
|
||||||
|
+ qca_phy_priv_global[dev_id]->psgmii_hw_addr = ioremap(map.base_addr,
|
||||||
|
map.size);
|
||||||
|
if (!qca_phy_priv_global[dev_id]->psgmii_hw_addr) {
|
||||||
|
SSDK_ERROR("%s ioremap fail.", __func__);
|
|
@ -0,0 +1,40 @@
|
||||||
|
From 85f988dbc15559a5a2fee606e6ef400aa39fe444 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Wed, 12 May 2021 17:15:46 +0200
|
||||||
|
Subject: [PATCH 03/11] SSDK: platform: use of_mdio_find_bus() to get MDIO bus
|
||||||
|
|
||||||
|
Kernel has a generic of_mdio_find_bus() which can get the appropriate
|
||||||
|
MDIO bus based on the DT node.
|
||||||
|
So, drop the getting MDIO from platform data, which no longer works
|
||||||
|
in 5.4 and later and use of_mdio_find_bus().
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
src/init/ssdk_plat.c | 8 +-------
|
||||||
|
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/init/ssdk_plat.c
|
||||||
|
+++ b/src/init/ssdk_plat.c
|
||||||
|
@@ -753,7 +753,6 @@ static int miibus_get(a_uint32_t dev_id)
|
||||||
|
struct device_node *mdio_node = NULL;
|
||||||
|
struct device_node *switch_node = NULL;
|
||||||
|
struct platform_device *mdio_plat = NULL;
|
||||||
|
- struct qca_mdio_data *mdio_data = NULL;
|
||||||
|
struct qca_phy_priv *priv;
|
||||||
|
hsl_reg_mode reg_mode = HSL_REG_LOCAL_BUS;
|
||||||
|
priv = qca_phy_priv_global[dev_id];
|
||||||
|
@@ -788,12 +787,7 @@ static int miibus_get(a_uint32_t dev_id)
|
||||||
|
|
||||||
|
if(reg_mode == HSL_REG_LOCAL_BUS)
|
||||||
|
{
|
||||||
|
- mdio_data = dev_get_drvdata(&mdio_plat->dev);
|
||||||
|
- if (!mdio_data) {
|
||||||
|
- SSDK_ERROR("cannot get mdio_data reference from device data\n");
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- priv->miibus = mdio_data->mii_bus;
|
||||||
|
+ priv->miibus = of_mdio_find_bus(mdio_node);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
priv->miibus = dev_get_drvdata(&mdio_plat->dev);
|
|
@ -0,0 +1,42 @@
|
||||||
|
From 079c20aa182c6b623d49e1f375e022dedac7373c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 13 Aug 2021 20:03:21 +0200
|
||||||
|
Subject: [PATCH 04/11] SSDK: dts: fix of_get_mac_address()
|
||||||
|
|
||||||
|
Recently OpenWrt backported the updated of_get_mac_address()
|
||||||
|
function which returns and error code instead.
|
||||||
|
|
||||||
|
So, patch the SSDK to use it and fix the compilation error.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
src/init/ssdk_dts.c | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/init/ssdk_dts.c
|
||||||
|
+++ b/src/init/ssdk_dts.c
|
||||||
|
@@ -921,8 +921,9 @@ static void ssdk_dt_parse_intf_mac(void)
|
||||||
|
{
|
||||||
|
struct device_node *dp_node = NULL;
|
||||||
|
a_uint32_t dp = 0;
|
||||||
|
- a_uint8_t *maddr = NULL;
|
||||||
|
+ u8 maddr[ETH_ALEN];
|
||||||
|
char dp_name[8] = {0};
|
||||||
|
+ int ret;
|
||||||
|
|
||||||
|
for (dp = 1; dp <= SSDK_MAX_NR_ETH; dp++) {
|
||||||
|
snprintf(dp_name, sizeof(dp_name), "dp%d", dp);
|
||||||
|
@@ -930,11 +931,11 @@ static void ssdk_dt_parse_intf_mac(void)
|
||||||
|
if (!dp_node) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- maddr = (a_uint8_t *)of_get_mac_address(dp_node);
|
||||||
|
+ ret = of_get_mac_address(dp_node, maddr);
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
|
||||||
|
if (maddr && is_valid_ether_addr(maddr)) {
|
||||||
|
#else
|
||||||
|
- if (!IS_ERR(maddr) && is_valid_ether_addr(maddr)) {
|
||||||
|
+ if (!ret && is_valid_ether_addr(maddr)) {
|
||||||
|
#endif
|
||||||
|
ssdk_dt_global.num_intf_mac++;
|
||||||
|
ether_addr_copy(ssdk_dt_global.intf_mac[dp-1].uc, maddr);
|
|
@ -0,0 +1,56 @@
|
||||||
|
From 0c509f8d8e5a6a03933a112d4487fd1c005442d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 24 Dec 2021 19:39:02 +0100
|
||||||
|
Subject: [PATCH 05/11] SSDK: config: add kernel 5.15
|
||||||
|
|
||||||
|
This is purely to identify it and be able to set
|
||||||
|
flags correctly.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
config | 6 +++++-
|
||||||
|
make/linux_opt.mk | 4 ++--
|
||||||
|
2 files changed, 7 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/config
|
||||||
|
+++ b/config
|
||||||
|
@@ -28,6 +28,10 @@ ifeq ($(KVER),$(filter 5.10%,$(KVER)))
|
||||||
|
OS_VER=5_10
|
||||||
|
endif
|
||||||
|
|
||||||
|
+ifeq ($(KVER),$(filter 5.15%,$(KVER)))
|
||||||
|
+OS_VER=5_15
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
ifeq ($(KVER), 3.4.0)
|
||||||
|
OS_VER=3_4
|
||||||
|
endif
|
||||||
|
@@ -136,7 +140,7 @@ ifeq ($(ARCH), arm)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH), arm64)
|
||||||
|
- ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10%,$(KVER)))
|
||||||
|
+ ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10% 5.15%,$(KVER)))
|
||||||
|
CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
--- a/make/linux_opt.mk
|
||||||
|
+++ b/make/linux_opt.mk
|
||||||
|
@@ -437,7 +437,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
|
||||||
|
KASAN_SHADOW_SCALE_SHIFT := 3
|
||||||
|
endif
|
||||||
|
|
||||||
|
- ifeq ($(OS_VER),$(filter 5_4 5_10, $(OS_VER)))
|
||||||
|
+ ifeq ($(OS_VER),$(filter 5_4 5_10 5_15, $(OS_VER)))
|
||||||
|
ifeq ($(ARCH), arm64)
|
||||||
|
KASAN_OPTION += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
|
||||||
|
endif
|
||||||
|
@@ -468,7 +468,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
- ifeq ($(OS_VER),$(filter 4_4 5_4 5_10, $(OS_VER)))
|
||||||
|
+ ifeq ($(OS_VER),$(filter 4_4 5_4 5_10 5_15, $(OS_VER)))
|
||||||
|
MODULE_CFLAG += -DKVER34
|
||||||
|
MODULE_CFLAG += -DKVER32
|
||||||
|
MODULE_CFLAG += -DLNX26_22
|
|
@ -0,0 +1,83 @@
|
||||||
|
From 9278b2794d984f5a8ec2350b9607a35aea2cc106 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Fri, 24 Dec 2021 20:02:32 +0100
|
||||||
|
Subject: [PATCH 06/11] qca8081: convert to 5.11 IRQ model
|
||||||
|
|
||||||
|
Kernel 5.11 introduced new IRQ handling model for PHY-s,
|
||||||
|
so provide those if 5.11 or later is used.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
src/hsl/phy/qca808x.c | 46 +++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 46 insertions(+)
|
||||||
|
|
||||||
|
--- a/src/hsl/phy/qca808x.c
|
||||||
|
+++ b/src/hsl/phy/qca808x.c
|
||||||
|
@@ -247,6 +247,7 @@ static int qca808x_config_intr(struct ph
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
|
||||||
|
static int qca808x_ack_interrupt(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
@@ -266,6 +267,47 @@ static int qca808x_ack_interrupt(struct
|
||||||
|
|
||||||
|
return (err < 0) ? err : 0;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(5, 11, 0))
|
||||||
|
+static irqreturn_t qca808x_handle_interrupt(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ a_uint16_t irq_status, int_enabled;
|
||||||
|
+ a_uint32_t dev_id = 0, phy_id = 0;
|
||||||
|
+ qca808x_priv *priv = phydev->priv;
|
||||||
|
+ const struct qca808x_phy_info *pdata = priv->phy_info;
|
||||||
|
+
|
||||||
|
+ if (!pdata) {
|
||||||
|
+ return SW_FAIL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ dev_id = pdata->dev_id;
|
||||||
|
+ phy_id = pdata->phy_addr;
|
||||||
|
+
|
||||||
|
+ irq_status = qca808x_phy_reg_read(dev_id, phy_id,
|
||||||
|
+ QCA808X_PHY_INTR_STATUS);
|
||||||
|
+ if (irq_status < 0) {
|
||||||
|
+ phy_error(phydev);
|
||||||
|
+ return IRQ_NONE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Read the current enabled interrupts */
|
||||||
|
+ int_enabled = qca808x_phy_reg_read(dev_id, phy_id,
|
||||||
|
+ QCA808X_PHY_INTR_MASK);
|
||||||
|
+ if (int_enabled < 0) {
|
||||||
|
+ phy_error(phydev);
|
||||||
|
+ return IRQ_NONE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* See if this was one of our enabled interrupts */
|
||||||
|
+ if (!(irq_status & int_enabled))
|
||||||
|
+ return IRQ_NONE;
|
||||||
|
+
|
||||||
|
+ phy_trigger_machine(phydev);
|
||||||
|
+
|
||||||
|
+ return IRQ_HANDLED;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* switch linux negtiation capability to fal avariable */
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
|
||||||
|
@@ -638,7 +680,11 @@ struct phy_driver qca808x_phy_driver = {
|
||||||
|
.config_intr = qca808x_config_intr,
|
||||||
|
.config_aneg = qca808x_config_aneg,
|
||||||
|
.aneg_done = qca808x_aneg_done,
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
|
||||||
|
.ack_interrupt = qca808x_ack_interrupt,
|
||||||
|
+#else
|
||||||
|
+ .handle_interrupt = qca808x_handle_interrupt,
|
||||||
|
+#endif
|
||||||
|
.read_status = qca808x_read_status,
|
||||||
|
.suspend = qca808x_suspend,
|
||||||
|
.resume = qca808x_resume,
|
|
@ -0,0 +1,67 @@
|
||||||
|
From 20a7945b82a4aefcb9ca0a14978412e4ae0057c9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Tue, 11 Jan 2022 00:28:42 +0100
|
||||||
|
Subject: [PATCH 07/11] qca807x: add a LED quirk for Xiaomi AX9000
|
||||||
|
|
||||||
|
Xiaomi AX9000 has a single LED for each of 4 gigabit ethernet ports that
|
||||||
|
are connected to QCA8075, and that LED is connected to the 100M LED pin.
|
||||||
|
|
||||||
|
So, by default it will only work when in 10 or 100Mbit mode, this is quite
|
||||||
|
annoying and makes no sense(If they have connected it to the 1000Mbit LED
|
||||||
|
pin then it would have worked for 10/100 by default as well).
|
||||||
|
|
||||||
|
So, to solve this add a check for system compatible as we cant parse if
|
||||||
|
from DTS in any other way and set the 100M LED to blink on 1000Base-T
|
||||||
|
as well.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
include/hsl/phy/malibu_phy.h | 2 ++
|
||||||
|
src/hsl/phy/malibu_phy.c | 11 +++++++++++
|
||||||
|
2 files changed, 13 insertions(+)
|
||||||
|
|
||||||
|
--- a/include/hsl/phy/malibu_phy.h
|
||||||
|
+++ b/include/hsl/phy/malibu_phy.h
|
||||||
|
@@ -94,6 +94,7 @@ extern "C"
|
||||||
|
#define MALIBU_DAC_CTRL_MASK 0x380
|
||||||
|
#define MALIBU_DAC_CTRL_VALUE 0x280
|
||||||
|
#define MALIBU_LED_1000_CTRL1_100_10_MASK 0x30
|
||||||
|
+#define MALIBU_LED_100_CTRL1_1000_MASK 0x40
|
||||||
|
|
||||||
|
#define MALIBU_PHY_EEE_ADV_100M 0x0002
|
||||||
|
#define MALIBU_PHY_EEE_ADV_1000M 0x0004
|
||||||
|
@@ -118,6 +119,7 @@ extern "C"
|
||||||
|
#define MALIBU_PHY_MMD7_EGRESS_COUNTER_HIGH 0x802d
|
||||||
|
#define MALIBU_PHY_MMD7_EGRESS_COUNTER_LOW 0x802e
|
||||||
|
#define MALIBU_PHY_MMD7_EGRESS_ERROR_COUNTER 0x802f
|
||||||
|
+#define MALIBU_PHY_MMD7_LED_100_CTRL1 0x8074
|
||||||
|
#define MALIBU_PHY_MMD7_LED_1000_CTRL1 0x8076
|
||||||
|
|
||||||
|
|
||||||
|
--- a/src/hsl/phy/malibu_phy.c
|
||||||
|
+++ b/src/hsl/phy/malibu_phy.c
|
||||||
|
@@ -15,6 +15,8 @@
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include <linux/of.h>
|
||||||
|
+
|
||||||
|
#include "sw.h"
|
||||||
|
#include "fal_port_ctrl.h"
|
||||||
|
#include "hsl_api.h"
|
||||||
|
@@ -2708,6 +2710,15 @@ malibu_phy_hw_init(a_uint32_t dev_id, a_
|
||||||
|
led_status |= MALIBU_LED_1000_CTRL1_100_10_MASK;
|
||||||
|
malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM,
|
||||||
|
MALIBU_PHY_MMD7_LED_1000_CTRL1, led_status);
|
||||||
|
+ if (of_machine_is_compatible("xiaomi,ax9000")) {
|
||||||
|
+ /* add 1000M link LED behavior for Xiaomi AX9000 */
|
||||||
|
+ led_status = malibu_phy_mmd_read(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM,
|
||||||
|
+ MALIBU_PHY_MMD7_LED_100_CTRL1);
|
||||||
|
+ led_status &= ~MALIBU_LED_100_CTRL1_1000_MASK;
|
||||||
|
+ led_status |= MALIBU_LED_100_CTRL1_1000_MASK;
|
||||||
|
+ malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM,
|
||||||
|
+ MALIBU_PHY_MMD7_LED_100_CTRL1, led_status);
|
||||||
|
+ }
|
||||||
|
/*disable Extended next page*/
|
||||||
|
phy_data = malibu_phy_reg_read(dev_id, phy_addr, MALIBU_AUTONEG_ADVERT);
|
||||||
|
phy_data &= ~MALIBU_EXTENDED_NEXT_PAGE_EN;
|
|
@ -0,0 +1,29 @@
|
||||||
|
From bad774f43ec253e7e743e23bde87444c9d9cefdc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Wed, 26 Jan 2022 14:47:33 +0100
|
||||||
|
Subject: [PATCH 08/11] qca807x: add a LED quirk for Xiaomi AX3600
|
||||||
|
|
||||||
|
AX3600 requires the same LED quirk so that PHY LED-s will blink even
|
||||||
|
once Linux resets the PHY.
|
||||||
|
|
||||||
|
So, just check for its compatible.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
---
|
||||||
|
src/hsl/phy/malibu_phy.c | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/hsl/phy/malibu_phy.c
|
||||||
|
+++ b/src/hsl/phy/malibu_phy.c
|
||||||
|
@@ -2710,8 +2710,9 @@ malibu_phy_hw_init(a_uint32_t dev_id, a_
|
||||||
|
led_status |= MALIBU_LED_1000_CTRL1_100_10_MASK;
|
||||||
|
malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM,
|
||||||
|
MALIBU_PHY_MMD7_LED_1000_CTRL1, led_status);
|
||||||
|
- if (of_machine_is_compatible("xiaomi,ax9000")) {
|
||||||
|
- /* add 1000M link LED behavior for Xiaomi AX9000 */
|
||||||
|
+ /* add 1000M link LED behavior for Xiaomi boards */
|
||||||
|
+ if (of_machine_is_compatible("xiaomi,ax9000") ||
|
||||||
|
+ of_machine_is_compatible("xiaomi,ax3600")) {
|
||||||
|
led_status = malibu_phy_mmd_read(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM,
|
||||||
|
MALIBU_PHY_MMD7_LED_100_CTRL1);
|
||||||
|
led_status &= ~MALIBU_LED_100_CTRL1_1000_MASK;
|
|
@ -0,0 +1,22 @@
|
||||||
|
From be352dd54d163c005611906ac6b87692c9b8a1e6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
Date: Sat, 7 May 2022 19:03:55 +0200
|
||||||
|
Subject: [PATCH 09/11] include: fix compilation error for parse_uci_option
|
||||||
|
|
||||||
|
Fix missing include for parse_uci_option
|
||||||
|
|
||||||
|
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||||
|
---
|
||||||
|
include/ref/ref_uci.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
--- a/include/ref/ref_uci.h
|
||||||
|
+++ b/include/ref/ref_uci.h
|
||||||
|
@@ -22,6 +22,7 @@
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
+#include <linux/switch.h>
|
||||||
|
|
||||||
|
#if defined(IN_SWCONFIG)
|
||||||
|
int
|
|
@ -0,0 +1,30 @@
|
||||||
|
From ecd1e0c57fdf7f8916fa20f085e08bb4b6ba0396 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
Date: Fri, 23 Sep 2022 08:21:13 -0500
|
||||||
|
Subject: [PATCH 10/11] QSDK: config: Avoid -Werror heroics
|
||||||
|
|
||||||
|
Trying to compile the QSDK with warnings as errors is a very brave
|
||||||
|
endeavor. It's also stupid as it doesn't work on ipq60xx:
|
||||||
|
|
||||||
|
isisc_acl_prv.h:99: error: "FIELD_GET" redefined [-Werror]
|
||||||
|
99 | #define FIELD_GET(reg, field, val) \
|
||||||
|
|
|
||||||
|
|
||||||
|
Instead of dealing with the braindead code, just disable Werror.
|
||||||
|
|
||||||
|
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
---
|
||||||
|
config | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/config
|
||||||
|
+++ b/config
|
||||||
|
@@ -141,7 +141,7 @@ endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH), arm64)
|
||||||
|
ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10% 5.15%,$(KVER)))
|
||||||
|
- CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large
|
||||||
|
+ CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
From c06e6edfb740d0ba0b804fa16d6222e257349089 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
Date: Fri, 23 Sep 2022 08:30:03 -0500
|
||||||
|
Subject: [PATCH 11/11] Revert "qca-ssdk: remove bridge fdb entry for the
|
||||||
|
authentication failed mac"
|
||||||
|
|
||||||
|
This change causes an undefined reference to "br_fdb_delete_by_netdev".
|
||||||
|
This reverts commit 144f02b982c8c707aaf84b57d8c277d03d877236.
|
||||||
|
|
||||||
|
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
|
||||||
|
---
|
||||||
|
src/ref/ref_acl.c | 11 -----------
|
||||||
|
1 file changed, 11 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/ref/ref_acl.c
|
||||||
|
+++ b/src/ref/ref_acl.c
|
||||||
|
@@ -23,7 +23,6 @@
|
||||||
|
#include "ssdk_init.h"
|
||||||
|
#include "ssdk_plat.h"
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
-#include <linux/if_bridge.h>
|
||||||
|
|
||||||
|
/* entry 0-1 is for global deny all and accept eapol rule
|
||||||
|
entry 2-9 is for phy port1 specific mac accept rule
|
||||||
|
@@ -128,7 +127,6 @@ _ref_acl_mac_entry_create_rule(a_uint32_
|
||||||
|
{
|
||||||
|
sw_error_t rv = SW_OK;
|
||||||
|
fal_acl_rule_t rule = {0};
|
||||||
|
- struct net_device *eth_dev = NULL;
|
||||||
|
a_uint32_t port_id = ssdk_ifname_to_port(dev_id, entry->ifname);
|
||||||
|
SSDK_DEBUG("port_id %d entry_idx %d\n", port_id, entry_idx);
|
||||||
|
|
||||||
|
@@ -224,15 +222,6 @@ _ref_acl_mac_entry_create_rule(a_uint32_
|
||||||
|
ref_acl_mac_entry[dev_id][entry_idx].port_map = BIT(port_id);
|
||||||
|
ref_acl_mac_entry[dev_id][entry_idx].acl_policy = 1;
|
||||||
|
}
|
||||||
|
- else if (!is_deny_all_mac(entry->src_mac.uc) && !entry->acl_policy)
|
||||||
|
- {
|
||||||
|
- eth_dev = dev_get_by_name(&init_net, entry->ifname);
|
||||||
|
- if (eth_dev)
|
||||||
|
- {
|
||||||
|
- br_fdb_delete_by_netdev(eth_dev, entry->src_mac.uc, 0);
|
||||||
|
- dev_put(eth_dev);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libtraceevent
|
PKG_NAME:=libtraceevent
|
||||||
PKG_VERSION:=1.7.0
|
PKG_VERSION:=1.7.1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/snapshot/
|
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/snapshot/
|
||||||
PKG_HASH:=3e902184f743c955b183b45f25ea163a3d41c9f287fdcfc95cd9cca748c563c8
|
PKG_HASH:=17b7131c106793c3b45477445bd32d295170c4245ed8348e03c17296e53009e1
|
||||||
|
|
||||||
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
|
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=libtracefs
|
PKG_NAME:=libtracefs
|
||||||
PKG_VERSION:=1.6.3
|
PKG_VERSION:=1.6.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot/
|
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot/
|
||||||
PKG_HASH:=de307faaa54ac52cf0ce3ff19b32b51af24897e3440e643068ac82d31e197e92
|
PKG_HASH:=52ce793dbb35a3e59bddce31de09a5d92cedd4d0702e64d0916f1ccdb00526c9
|
||||||
|
|
||||||
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
|
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,11 @@ ARCH:=arc
|
||||||
CPU_TYPE:=archs
|
CPU_TYPE:=archs
|
||||||
BOARD:=archs38
|
BOARD:=archs38
|
||||||
BOARDNAME:=Synopsys DesignWare ARC HS38
|
BOARDNAME:=Synopsys DesignWare ARC HS38
|
||||||
|
FEATURES:=source-only
|
||||||
SUBTARGETS:=generic
|
SUBTARGETS:=generic
|
||||||
|
|
||||||
KERNEL_PATCHVER:=5.10
|
KERNEL_PATCHVER:=5.10
|
||||||
|
KERNEL_TESTING_PATCHVER:=5.15
|
||||||
|
|
||||||
DEVICE_TYPE:=basic
|
DEVICE_TYPE:=basic
|
||||||
|
|
||||||
|
|
257
target/linux/archs38/config-5.15
Normal file
257
target/linux/archs38/config-5.15
Normal file
|
@ -0,0 +1,257 @@
|
||||||
|
# CONFIG_16KSTACKS is not set
|
||||||
|
CONFIG_ARC=y
|
||||||
|
CONFIG_ARCH_32BIT_OFF_T=y
|
||||||
|
CONFIG_ARC_BUILTIN_DTB_NAME=""
|
||||||
|
CONFIG_ARC_CACHE=y
|
||||||
|
CONFIG_ARC_CACHE_LINE_SHIFT=6
|
||||||
|
CONFIG_ARC_CACHE_PAGES=y
|
||||||
|
CONFIG_ARC_CPU_HS=y
|
||||||
|
CONFIG_ARC_CURR_IN_REG=y
|
||||||
|
CONFIG_ARC_DBG=y
|
||||||
|
# CONFIG_ARC_DSP_AGU_USERSPACE is not set
|
||||||
|
# CONFIG_ARC_DSP_KERNEL is not set
|
||||||
|
CONFIG_ARC_DSP_NONE=y
|
||||||
|
# CONFIG_ARC_DSP_USERSPACE is not set
|
||||||
|
CONFIG_ARC_DW2_UNWIND=y
|
||||||
|
CONFIG_ARC_FPU_SAVE_RESTORE=y
|
||||||
|
CONFIG_ARC_HAS_ACCL_REGS=y
|
||||||
|
CONFIG_ARC_HAS_DCACHE=y
|
||||||
|
# CONFIG_ARC_HAS_DCCM is not set
|
||||||
|
CONFIG_ARC_HAS_DIV_REM=y
|
||||||
|
CONFIG_ARC_HAS_ICACHE=y
|
||||||
|
# CONFIG_ARC_HAS_ICCM is not set
|
||||||
|
CONFIG_ARC_HAS_LL64=y
|
||||||
|
CONFIG_ARC_HAS_LLSC=y
|
||||||
|
# CONFIG_ARC_HAS_PAE40 is not set
|
||||||
|
CONFIG_ARC_HAS_SWAPE=y
|
||||||
|
CONFIG_ARC_IRQ_NO_AUTOSAVE=y
|
||||||
|
CONFIG_ARC_KVADDR_SIZE=256
|
||||||
|
# CONFIG_ARC_LPB_DISABLE is not set
|
||||||
|
CONFIG_ARC_MCIP=y
|
||||||
|
# CONFIG_ARC_METAWARE_HLINK is not set
|
||||||
|
CONFIG_ARC_MMU_V4=y
|
||||||
|
# CONFIG_ARC_PAGE_SIZE_16K is not set
|
||||||
|
# CONFIG_ARC_PAGE_SIZE_4K is not set
|
||||||
|
CONFIG_ARC_PAGE_SIZE_8K=y
|
||||||
|
CONFIG_ARC_PLAT_AXS10X=y
|
||||||
|
# CONFIG_ARC_PLAT_TB10X is not set
|
||||||
|
# CONFIG_ARC_SMP_HALT_ON_RESET is not set
|
||||||
|
CONFIG_ARC_SOC_HSDK=y
|
||||||
|
CONFIG_ARC_TIMERS=y
|
||||||
|
CONFIG_ARC_TIMERS_64BIT=y
|
||||||
|
CONFIG_ARC_TUNE_MCPU=""
|
||||||
|
CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
|
||||||
|
CONFIG_AXS103=y
|
||||||
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
|
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||||
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||||
|
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y
|
||||||
|
CONFIG_CLK_HSDK=y
|
||||||
|
CONFIG_CLONE_BACKWARDS=y
|
||||||
|
CONFIG_COMMON_CLK=y
|
||||||
|
CONFIG_COMPAT_32BIT_TIME=y
|
||||||
|
CONFIG_CPU_RMAP=y
|
||||||
|
CONFIG_CRC16=y
|
||||||
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
|
CONFIG_CRYPTO_DRBG=y
|
||||||
|
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||||
|
CONFIG_CRYPTO_DRBG_MENU=y
|
||||||
|
CONFIG_CRYPTO_ECHAINIV=y
|
||||||
|
CONFIG_CRYPTO_HMAC=y
|
||||||
|
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||||
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
|
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||||
|
CONFIG_CRYPTO_LIB_SHA256=y
|
||||||
|
CONFIG_CRYPTO_RNG=y
|
||||||
|
CONFIG_CRYPTO_RNG2=y
|
||||||
|
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||||
|
CONFIG_CRYPTO_SHA256=y
|
||||||
|
CONFIG_CRYPTO_SHA512=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_DMA_DIRECT_REMAP=y
|
||||||
|
CONFIG_DMA_ENGINE=y
|
||||||
|
CONFIG_DMA_OF=y
|
||||||
|
CONFIG_DMA_REMAP=y
|
||||||
|
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||||
|
CONFIG_DTC=y
|
||||||
|
CONFIG_DWMAC_ANARION=y
|
||||||
|
CONFIG_DWMAC_GENERIC=y
|
||||||
|
CONFIG_DW_APB_ICTL=y
|
||||||
|
CONFIG_DW_AXI_DMAC=y
|
||||||
|
CONFIG_EXT4_FS=y
|
||||||
|
CONFIG_FAT_FS=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_FB_CMDLINE=y
|
||||||
|
CONFIG_FIXED_PHY=y
|
||||||
|
CONFIG_FS_IOMAP=y
|
||||||
|
CONFIG_FS_MBCACHE=y
|
||||||
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
CONFIG_FWNODE_MDIO=y
|
||||||
|
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||||
|
CONFIG_GENERIC_ALLOCATOR=y
|
||||||
|
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||||
|
CONFIG_GENERIC_CSUM=y
|
||||||
|
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
||||||
|
CONFIG_GENERIC_IRQ_CHIP=y
|
||||||
|
CONFIG_GENERIC_IRQ_SHOW=y
|
||||||
|
CONFIG_GENERIC_PCI_IOMAP=y
|
||||||
|
CONFIG_GENERIC_PENDING_IRQ=y
|
||||||
|
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||||
|
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||||
|
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||||
|
CONFIG_GENERIC_STRNLEN_USER=y
|
||||||
|
CONFIG_GPIOLIB_IRQCHIP=y
|
||||||
|
CONFIG_GPIO_CDEV=y
|
||||||
|
CONFIG_GPIO_DWAPB=y
|
||||||
|
CONFIG_GPIO_GENERIC=y
|
||||||
|
CONFIG_GPIO_SNPS_CREG=y
|
||||||
|
CONFIG_GRACE_PERIOD=y
|
||||||
|
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||||
|
# CONFIG_HARDENED_USERCOPY is not set
|
||||||
|
CONFIG_HAS_DMA=y
|
||||||
|
CONFIG_HAS_IOMEM=y
|
||||||
|
CONFIG_HZ_PERIODIC=y
|
||||||
|
CONFIG_I2C=y
|
||||||
|
CONFIG_I2C_BOARDINFO=y
|
||||||
|
CONFIG_IIO=y
|
||||||
|
CONFIG_IIO_BUFFER=y
|
||||||
|
CONFIG_IIO_KFIFO_BUF=y
|
||||||
|
CONFIG_IIO_ST_PRESS=y
|
||||||
|
CONFIG_IIO_ST_PRESS_I2C=y
|
||||||
|
CONFIG_IIO_ST_PRESS_SPI=y
|
||||||
|
CONFIG_IIO_ST_SENSORS_CORE=y
|
||||||
|
CONFIG_IIO_ST_SENSORS_I2C=y
|
||||||
|
CONFIG_IIO_ST_SENSORS_SPI=y
|
||||||
|
CONFIG_IIO_TRIGGER=y
|
||||||
|
CONFIG_IIO_TRIGGERED_BUFFER=y
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
|
CONFIG_IRQCHIP=y
|
||||||
|
CONFIG_IRQ_DOMAIN=y
|
||||||
|
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||||
|
CONFIG_IRQ_WORK=y
|
||||||
|
# CONFIG_ISA_ARCOMPACT is not set
|
||||||
|
CONFIG_ISA_ARCV2=y
|
||||||
|
CONFIG_JBD2=y
|
||||||
|
CONFIG_KALLSYMS=y
|
||||||
|
CONFIG_KERNEL_GZIP=y
|
||||||
|
CONFIG_LIBFDT=y
|
||||||
|
CONFIG_LINUX_LINK_BASE=0x90000000
|
||||||
|
CONFIG_LINUX_RAM_BASE=0x80000000
|
||||||
|
CONFIG_LOCKD=y
|
||||||
|
CONFIG_LOCKUP_DETECTOR=y
|
||||||
|
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||||
|
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||||
|
CONFIG_MDIO_BUS=y
|
||||||
|
CONFIG_MDIO_DEVICE=y
|
||||||
|
CONFIG_MDIO_DEVRES=y
|
||||||
|
CONFIG_MEMFD_CREATE=y
|
||||||
|
CONFIG_MFD_SYSCON=y
|
||||||
|
CONFIG_MICREL_PHY=y
|
||||||
|
CONFIG_MIGRATION=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_BLOCK=y
|
||||||
|
CONFIG_MMC_DW=y
|
||||||
|
# CONFIG_MMC_DW_BLUEFIELD is not set
|
||||||
|
# CONFIG_MMC_DW_EXYNOS is not set
|
||||||
|
# CONFIG_MMC_DW_HI3798CV200 is not set
|
||||||
|
# CONFIG_MMC_DW_K3 is not set
|
||||||
|
CONFIG_MMC_DW_PLTFM=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
CONFIG_MODULES_USE_ELF_RELA=y
|
||||||
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||||
|
CONFIG_NAMESPACES=y
|
||||||
|
CONFIG_NATIONAL_PHY=y
|
||||||
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
|
CONFIG_NET_FLOW_LIMIT=y
|
||||||
|
CONFIG_NET_NS=y
|
||||||
|
CONFIG_NET_PTP_CLASSIFY=y
|
||||||
|
CONFIG_NET_SELFTESTS=y
|
||||||
|
CONFIG_NFS_ACL_SUPPORT=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
|
CONFIG_NLS=y
|
||||||
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
|
CONFIG_NLS_ISO8859_1=y
|
||||||
|
CONFIG_NO_IOPORT_MAP=y
|
||||||
|
CONFIG_NR_CPUS=4
|
||||||
|
CONFIG_OF=y
|
||||||
|
CONFIG_OF_ADDRESS=y
|
||||||
|
CONFIG_OF_EARLY_FLATTREE=y
|
||||||
|
CONFIG_OF_FLATTREE=y
|
||||||
|
CONFIG_OF_GPIO=y
|
||||||
|
CONFIG_OF_IRQ=y
|
||||||
|
CONFIG_OF_KOBJ=y
|
||||||
|
CONFIG_OF_MDIO=y
|
||||||
|
CONFIG_PADATA=y
|
||||||
|
CONFIG_PAGE_POOL=y
|
||||||
|
CONFIG_PCS_XPCS=y
|
||||||
|
CONFIG_PGTABLE_LEVELS=2
|
||||||
|
CONFIG_PHYLIB=y
|
||||||
|
CONFIG_PHYLINK=y
|
||||||
|
CONFIG_PPS=y
|
||||||
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_PREEMPTION=y
|
||||||
|
CONFIG_PREEMPT_COUNT=y
|
||||||
|
# CONFIG_PREEMPT_NONE is not set
|
||||||
|
CONFIG_PREEMPT_RCU=y
|
||||||
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
|
CONFIG_PTP_1588_CLOCK=y
|
||||||
|
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||||
|
CONFIG_RATIONAL=y
|
||||||
|
CONFIG_REGMAP=y
|
||||||
|
CONFIG_REGMAP_I2C=y
|
||||||
|
CONFIG_REGMAP_MMIO=y
|
||||||
|
CONFIG_REGMAP_SPI=y
|
||||||
|
CONFIG_RESET_AXS10X=y
|
||||||
|
CONFIG_RESET_CONTROLLER=y
|
||||||
|
CONFIG_RESET_HSDK=y
|
||||||
|
CONFIG_RESET_SIMPLE=y
|
||||||
|
CONFIG_RFS_ACCEL=y
|
||||||
|
CONFIG_RPS=y
|
||||||
|
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||||
|
CONFIG_SCSI=y
|
||||||
|
CONFIG_SCSI_COMMON=y
|
||||||
|
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||||
|
CONFIG_SERIAL_8250_DW=y
|
||||||
|
CONFIG_SERIAL_8250_DWLIB=y
|
||||||
|
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||||
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||||
|
CONFIG_SERIAL_ARC=y
|
||||||
|
CONFIG_SERIAL_ARC_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||||
|
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||||
|
CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
|
CONFIG_SG_POOL=y
|
||||||
|
CONFIG_SMP=y
|
||||||
|
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||||
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
|
CONFIG_SPI=y
|
||||||
|
CONFIG_SPI_DESIGNWARE=y
|
||||||
|
# CONFIG_SPI_DW_DMA is not set
|
||||||
|
CONFIG_SPI_DW_MMIO=y
|
||||||
|
CONFIG_SPI_MASTER=y
|
||||||
|
CONFIG_SPI_MEM=y
|
||||||
|
CONFIG_SRCU=y
|
||||||
|
CONFIG_STACKTRACE=y
|
||||||
|
# CONFIG_STANDALONE is not set
|
||||||
|
CONFIG_STMMAC_ETH=y
|
||||||
|
CONFIG_STMMAC_PLATFORM=y
|
||||||
|
CONFIG_SUNRPC=y
|
||||||
|
CONFIG_SWPHY=y
|
||||||
|
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||||
|
CONFIG_TIMER_OF=y
|
||||||
|
CONFIG_TIMER_PROBE=y
|
||||||
|
CONFIG_TI_ADC108S102=y
|
||||||
|
CONFIG_TREE_RCU=y
|
||||||
|
CONFIG_TREE_SRCU=y
|
||||||
|
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||||
|
CONFIG_USB_SUPPORT=y
|
||||||
|
# CONFIG_USER_NS is not set
|
||||||
|
CONFIG_VFAT_FS=y
|
||||||
|
CONFIG_WATCHDOG_CORE=y
|
||||||
|
CONFIG_XPS=y
|
|
@ -20,7 +20,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
|
|
||||||
--- a/drivers/regulator/core.c
|
--- a/drivers/regulator/core.c
|
||||||
+++ b/drivers/regulator/core.c
|
+++ b/drivers/regulator/core.c
|
||||||
@@ -2992,7 +2992,8 @@ static int _regulator_list_voltage(struc
|
@@ -3000,7 +3000,8 @@ static int _regulator_list_voltage(struc
|
||||||
return rdev->desc->fixed_uV;
|
return rdev->desc->fixed_uV;
|
||||||
|
|
||||||
if (ops->list_voltage) {
|
if (ops->list_voltage) {
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (lock)
|
if (lock)
|
||||||
regulator_lock(rdev);
|
regulator_lock(rdev);
|
||||||
@@ -3143,7 +3144,8 @@ int regulator_list_hardware_vsel(struct
|
@@ -3151,7 +3152,8 @@ int regulator_list_hardware_vsel(struct
|
||||||
struct regulator_dev *rdev = regulator->rdev;
|
struct regulator_dev *rdev = regulator->rdev;
|
||||||
const struct regulator_ops *ops = rdev->desc->ops;
|
const struct regulator_ops *ops = rdev->desc->ops;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
|
if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
@@ -4066,6 +4068,9 @@ int regulator_set_voltage_time(struct re
|
@@ -4074,6 +4076,9 @@ int regulator_set_voltage_time(struct re
|
||||||
|
|
||||||
for (i = 0; i < rdev->desc->n_voltages; i++) {
|
for (i = 0; i < rdev->desc->n_voltages; i++) {
|
||||||
/* We only look for exact voltage matches here */
|
/* We only look for exact voltage matches here */
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
|
|
||||||
--- a/drivers/regulator/core.c
|
--- a/drivers/regulator/core.c
|
||||||
+++ b/drivers/regulator/core.c
|
+++ b/drivers/regulator/core.c
|
||||||
@@ -4071,6 +4071,9 @@ int regulator_set_voltage_time(struct re
|
@@ -4079,6 +4079,9 @@ int regulator_set_voltage_time(struct re
|
||||||
if (i < rdev->desc->linear_min_sel)
|
if (i < rdev->desc->linear_min_sel)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
|
|
||||||
--- a/drivers/regulator/core.c
|
--- a/drivers/regulator/core.c
|
||||||
+++ b/drivers/regulator/core.c
|
+++ b/drivers/regulator/core.c
|
||||||
@@ -2992,9 +2992,10 @@ static int _regulator_list_voltage(struc
|
@@ -3000,9 +3000,10 @@ static int _regulator_list_voltage(struc
|
||||||
return rdev->desc->fixed_uV;
|
return rdev->desc->fixed_uV;
|
||||||
|
|
||||||
if (ops->list_voltage) {
|
if (ops->list_voltage) {
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||||
if (lock)
|
if (lock)
|
||||||
regulator_lock(rdev);
|
regulator_lock(rdev);
|
||||||
ret = ops->list_voltage(rdev, selector);
|
ret = ops->list_voltage(rdev, selector);
|
||||||
@@ -3144,9 +3145,10 @@ int regulator_list_hardware_vsel(struct
|
@@ -3152,9 +3153,10 @@ int regulator_list_hardware_vsel(struct
|
||||||
struct regulator_dev *rdev = regulator->rdev;
|
struct regulator_dev *rdev = regulator->rdev;
|
||||||
const struct regulator_ops *ops = rdev->desc->ops;
|
const struct regulator_ops *ops = rdev->desc->ops;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
model = "GL.iNet GL-AR300M-Lite";
|
model = "GL.iNet GL-AR300M-Lite";
|
||||||
};
|
};
|
||||||
|
|
||||||
/delete-node/ ®_usb_vbus;
|
|
||||||
|
|
||||||
/delete-node/ &nand_flash;
|
/delete-node/ &nand_flash;
|
||||||
|
|
||||||
|
@ -30,6 +29,3 @@
|
||||||
label = "green:wlan";
|
label = "green:wlan";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb0 {
|
|
||||||
/delete-property/ vbus-supply;
|
|
||||||
};
|
|
||||||
|
|
|
@ -37,14 +37,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_usb_vbus: reg_usb_vbus {
|
gpio-export {
|
||||||
compatible = "regulator-fixed";
|
compatible = "gpio-export";
|
||||||
|
|
||||||
regulator-name = "usb_vbus";
|
gpio_usb_power {
|
||||||
regulator-min-microvolt = <5000000>;
|
gpio-export,name = "usb_power";
|
||||||
regulator-max-microvolt = <5000000>;
|
gpio-export,output = <1>;
|
||||||
gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
||||||
enable-active-high;
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
|
@ -142,7 +142,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb0 {
|
&usb0 {
|
||||||
vbus-supply = <®_usb_vbus>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/core.c
|
--- a/drivers/mtd/spi-nor/core.c
|
||||||
+++ b/drivers/mtd/spi-nor/core.c
|
+++ b/drivers/mtd/spi-nor/core.c
|
||||||
@@ -3141,6 +3141,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3143,6 +3143,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct device *dev = nor->dev;
|
struct device *dev = nor->dev;
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -3195,7 +3196,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3197,7 +3198,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
mtd->type = MTD_NORFLASH;
|
mtd->type = MTD_NORFLASH;
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -848,6 +848,17 @@ out_error:
|
@@ -850,6 +850,17 @@ out_error:
|
||||||
*/
|
*/
|
||||||
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/core.c
|
--- a/drivers/mtd/spi-nor/core.c
|
||||||
+++ b/drivers/mtd/spi-nor/core.c
|
+++ b/drivers/mtd/spi-nor/core.c
|
||||||
@@ -3096,6 +3096,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3098,6 +3098,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct device *dev = nor->dev;
|
struct device *dev = nor->dev;
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -3150,7 +3151,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3152,7 +3153,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||||
|
|
||||||
@@ -1313,6 +1316,9 @@
|
@@ -1316,6 +1319,9 @@
|
||||||
#define USB_VENDOR_ID_XAT 0x2505
|
#define USB_VENDOR_ID_XAT 0x2505
|
||||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
}
|
}
|
||||||
--- a/drivers/gpio/gpiolib.c
|
--- a/drivers/gpio/gpiolib.c
|
||||||
+++ b/drivers/gpio/gpiolib.c
|
+++ b/drivers/gpio/gpiolib.c
|
||||||
@@ -1912,7 +1912,8 @@ int gpiochip_add_pingroup_range(struct g
|
@@ -1911,7 +1911,8 @@ int gpiochip_add_pingroup_range(struct g
|
||||||
|
|
||||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
|
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
|
||||||
|
|
||||||
@@ -1969,7 +1970,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
@@ -1968,7 +1969,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
||||||
|
|
||||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct clk clk_pcie = {
|
static struct clk clk_pcie = {
|
||||||
@@ -548,6 +562,21 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -550,6 +564,21 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
|
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
#define HSSPI_PLL_HZ_6328 133333333
|
#define HSSPI_PLL_HZ_6328 133333333
|
||||||
#define HSSPI_PLL_HZ_6362 400000000
|
#define HSSPI_PLL_HZ_6362 400000000
|
||||||
|
|
||||||
@@ -580,6 +609,10 @@ static int __init bcm63xx_clk_init(void)
|
@@ -582,6 +611,10 @@ static int __init bcm63xx_clk_init(void)
|
||||||
case BCM6368_CPU_ID:
|
case BCM6368_CPU_ID:
|
||||||
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
|
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -57,7 +57,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
mask = CKCTL_6328_HSSPI_EN;
|
mask = CKCTL_6328_HSSPI_EN;
|
||||||
else if (BCMCPU_IS_6362())
|
else if (BCMCPU_IS_6362())
|
||||||
mask = CKCTL_6362_HSSPI_EN;
|
mask = CKCTL_6362_HSSPI_EN;
|
||||||
@@ -456,6 +458,19 @@ static struct clk_lookup bcm3368_clks[]
|
@@ -458,6 +460,19 @@ static struct clk_lookup bcm3368_clks[]
|
||||||
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
|
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
static struct clk_lookup bcm6328_clks[] = {
|
static struct clk_lookup bcm6328_clks[] = {
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
@@ -577,6 +592,7 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -579,6 +594,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
|
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
#define HSSPI_PLL_HZ_6328 133333333
|
#define HSSPI_PLL_HZ_6328 133333333
|
||||||
#define HSSPI_PLL_HZ_6362 400000000
|
#define HSSPI_PLL_HZ_6362 400000000
|
||||||
|
|
||||||
@@ -586,6 +602,10 @@ static int __init bcm63xx_clk_init(void)
|
@@ -588,6 +604,10 @@ static int __init bcm63xx_clk_init(void)
|
||||||
case BCM3368_CPU_ID:
|
case BCM3368_CPU_ID:
|
||||||
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
|
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -9,7 +9,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
|
|
||||||
--- a/arch/mips/bcm63xx/clk.c
|
--- a/arch/mips/bcm63xx/clk.c
|
||||||
+++ b/arch/mips/bcm63xx/clk.c
|
+++ b/arch/mips/bcm63xx/clk.c
|
||||||
@@ -501,6 +501,8 @@ static struct clk_lookup bcm3368_clks[]
|
@@ -503,6 +503,8 @@ static struct clk_lookup bcm3368_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -18,7 +18,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -517,7 +519,9 @@ static struct clk_lookup bcm6318_clks[]
|
@@ -519,7 +521,9 @@ static struct clk_lookup bcm6318_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -28,7 +28,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -531,7 +535,10 @@ static struct clk_lookup bcm6328_clks[]
|
@@ -533,7 +537,10 @@ static struct clk_lookup bcm6328_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -39,7 +39,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -544,6 +551,7 @@ static struct clk_lookup bcm6338_clks[]
|
@@ -546,6 +553,7 @@ static struct clk_lookup bcm6338_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -47,7 +47,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -558,6 +566,7 @@ static struct clk_lookup bcm6345_clks[]
|
@@ -560,6 +568,7 @@ static struct clk_lookup bcm6345_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -55,7 +55,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -572,6 +581,7 @@ static struct clk_lookup bcm6348_clks[]
|
@@ -574,6 +583,7 @@ static struct clk_lookup bcm6348_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -63,7 +63,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -588,6 +598,8 @@ static struct clk_lookup bcm6358_clks[]
|
@@ -590,6 +600,8 @@ static struct clk_lookup bcm6358_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -72,7 +72,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -607,7 +619,10 @@ static struct clk_lookup bcm6362_clks[]
|
@@ -609,7 +621,10 @@ static struct clk_lookup bcm6362_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -83,7 +83,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -623,6 +638,8 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -625,6 +640,8 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -92,7 +92,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -637,7 +654,10 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -639,7 +656,10 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
* Internal peripheral clock
|
* Internal peripheral clock
|
||||||
*/
|
*/
|
||||||
static struct clk clk_periph = {
|
static struct clk clk_periph = {
|
||||||
@@ -624,6 +641,7 @@ static struct clk_lookup bcm6362_clks[]
|
@@ -626,6 +643,7 @@ static struct clk_lookup bcm6362_clks[]
|
||||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||||
@@ -641,6 +659,7 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -643,6 +661,7 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||||
@@ -659,6 +678,7 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -661,6 +680,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
|
|
@ -103,4 +103,4 @@ Link: https://lore.kernel.org/linux-mtd/20220622010628.30414-4-ansuelsmth@gmail.
|
||||||
+ mtd_check_of_node(mtd);
|
+ mtd_check_of_node(mtd);
|
||||||
of_node_get(mtd_get_of_node(mtd));
|
of_node_get(mtd_get_of_node(mtd));
|
||||||
error = device_register(&mtd->dev);
|
error = device_register(&mtd->dev);
|
||||||
if (error)
|
if (error) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||||
|
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -1070,6 +1070,34 @@ int __get_mtd_device(struct mtd_info *mt
|
@@ -1072,6 +1072,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||||
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -27,7 +27,7 @@ Link: https://lore.kernel.org/linux-mtd/20221022211318.32009-2-zajec5@gmail.com
|
||||||
|
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
@@ -743,6 +744,17 @@ int add_mtd_device(struct mtd_info *mtd)
|
@@ -745,6 +746,17 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||||
not->add(mtd);
|
not->add(mtd);
|
||||||
|
|
||||||
mutex_unlock(&mtd_table_mutex);
|
mutex_unlock(&mtd_table_mutex);
|
||||||
|
|
|
@ -30,7 +30,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -347,6 +347,7 @@ struct napi_struct {
|
@@ -354,6 +354,7 @@ struct napi_struct {
|
||||||
struct list_head dev_list;
|
struct list_head dev_list;
|
||||||
struct hlist_node napi_hash_node;
|
struct hlist_node napi_hash_node;
|
||||||
unsigned int napi_id;
|
unsigned int napi_id;
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -357,6 +358,7 @@ enum {
|
@@ -364,6 +365,7 @@ enum {
|
||||||
NAPI_STATE_LISTED, /* NAPI added to system lists */
|
NAPI_STATE_LISTED, /* NAPI added to system lists */
|
||||||
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
||||||
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
||||||
|
@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -367,6 +369,7 @@ enum {
|
@@ -374,6 +376,7 @@ enum {
|
||||||
NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
|
NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
|
||||||
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
||||||
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
||||||
|
@ -54,7 +54,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
};
|
};
|
||||||
|
|
||||||
enum gro_result {
|
enum gro_result {
|
||||||
@@ -497,20 +500,7 @@ static inline bool napi_complete(struct
|
@@ -504,20 +507,7 @@ static inline bool napi_complete(struct
|
||||||
*/
|
*/
|
||||||
void napi_disable(struct napi_struct *n);
|
void napi_disable(struct napi_struct *n);
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* napi_synchronize - wait until NAPI is not running
|
* napi_synchronize - wait until NAPI is not running
|
||||||
@@ -1856,6 +1846,8 @@ enum netdev_ml_priv_type {
|
@@ -1863,6 +1853,8 @@ enum netdev_ml_priv_type {
|
||||||
*
|
*
|
||||||
* @wol_enabled: Wake-on-LAN is enabled
|
* @wol_enabled: Wake-on-LAN is enabled
|
||||||
*
|
*
|
||||||
|
@ -85,7 +85,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
* @net_notifier_list: List of per-net netdev notifier block
|
* @net_notifier_list: List of per-net netdev notifier block
|
||||||
* that follow this device when it is moved
|
* that follow this device when it is moved
|
||||||
* to another network namespace.
|
* to another network namespace.
|
||||||
@@ -2175,6 +2167,7 @@ struct net_device {
|
@@ -2182,6 +2174,7 @@ struct net_device {
|
||||||
struct lock_class_key *qdisc_running_key;
|
struct lock_class_key *qdisc_running_key;
|
||||||
bool proto_down;
|
bool proto_down;
|
||||||
unsigned wol_enabled:1;
|
unsigned wol_enabled:1;
|
||||||
|
|
|
@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
+ == ==================================
|
+ == ==================================
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -491,6 +491,8 @@ static inline bool napi_complete(struct
|
@@ -498,6 +498,8 @@ static inline bool napi_complete(struct
|
||||||
return napi_complete_done(n, 0);
|
return napi_complete_done(n, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -359,6 +359,7 @@ enum {
|
@@ -366,6 +366,7 @@ enum {
|
||||||
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
||||||
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
||||||
NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/
|
NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/
|
||||||
|
@ -35,7 +35,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -370,6 +371,7 @@ enum {
|
@@ -377,6 +378,7 @@ enum {
|
||||||
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
||||||
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
||||||
NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED),
|
NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED),
|
||||||
|
|
|
@ -58,7 +58,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -841,6 +841,27 @@ typedef u16 (*select_queue_fallback_t)(s
|
@@ -848,6 +848,27 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||||
struct sk_buff *skb,
|
struct sk_buff *skb,
|
||||||
struct net_device *sb_dev);
|
struct net_device *sb_dev);
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
enum tc_setup_type {
|
enum tc_setup_type {
|
||||||
TC_SETUP_QDISC_MQPRIO,
|
TC_SETUP_QDISC_MQPRIO,
|
||||||
TC_SETUP_CLSU32,
|
TC_SETUP_CLSU32,
|
||||||
@@ -1287,6 +1308,8 @@ struct netdev_net_notifier {
|
@@ -1294,6 +1315,8 @@ struct netdev_net_notifier {
|
||||||
* struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
|
* struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
|
||||||
* If a device is paired with a peer device, return the peer instance.
|
* If a device is paired with a peer device, return the peer instance.
|
||||||
* The caller must be under RCU read context.
|
* The caller must be under RCU read context.
|
||||||
|
@ -95,7 +95,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
*/
|
*/
|
||||||
struct net_device_ops {
|
struct net_device_ops {
|
||||||
int (*ndo_init)(struct net_device *dev);
|
int (*ndo_init)(struct net_device *dev);
|
||||||
@@ -1495,6 +1518,8 @@ struct net_device_ops {
|
@@ -1502,6 +1525,8 @@ struct net_device_ops {
|
||||||
int (*ndo_tunnel_ctl)(struct net_device *dev,
|
int (*ndo_tunnel_ctl)(struct net_device *dev,
|
||||||
struct ip_tunnel_parm *p, int cmd);
|
struct ip_tunnel_parm *p, int cmd);
|
||||||
struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
|
struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
|
||||||
|
@ -104,7 +104,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2842,6 +2867,8 @@ void dev_remove_offload(struct packet_of
|
@@ -2849,6 +2874,8 @@ void dev_remove_offload(struct packet_of
|
||||||
|
|
||||||
int dev_get_iflink(const struct net_device *dev);
|
int dev_get_iflink(const struct net_device *dev);
|
||||||
int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);
|
int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);
|
||||||
|
|
|
@ -28,7 +28,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -843,11 +843,18 @@ typedef u16 (*select_queue_fallback_t)(s
|
@@ -850,11 +850,18 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||||
|
|
||||||
enum net_device_path_type {
|
enum net_device_path_type {
|
||||||
DEV_PATH_ETHERNET = 0,
|
DEV_PATH_ETHERNET = 0,
|
||||||
|
|
|
@ -9,7 +9,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -844,6 +844,7 @@ typedef u16 (*select_queue_fallback_t)(s
|
@@ -851,6 +851,7 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||||
enum net_device_path_type {
|
enum net_device_path_type {
|
||||||
DEV_PATH_ETHERNET = 0,
|
DEV_PATH_ETHERNET = 0,
|
||||||
DEV_PATH_VLAN,
|
DEV_PATH_VLAN,
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -855,10 +855,20 @@ struct net_device_path {
|
@@ -862,10 +862,20 @@ struct net_device_path {
|
||||||
u16 id;
|
u16 id;
|
||||||
__be16 proto;
|
__be16 proto;
|
||||||
} encap;
|
} encap;
|
||||||
|
@ -36,7 +36,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
struct net_device_path_stack {
|
struct net_device_path_stack {
|
||||||
int num_paths;
|
int num_paths;
|
||||||
@@ -868,6 +878,12 @@ struct net_device_path_stack {
|
@@ -875,6 +885,12 @@ struct net_device_path_stack {
|
||||||
struct net_device_path_ctx {
|
struct net_device_path_ctx {
|
||||||
const struct net_device *dev;
|
const struct net_device *dev;
|
||||||
const u8 *daddr;
|
const u8 *daddr;
|
||||||
|
|
|
@ -83,7 +83,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -845,6 +845,7 @@ enum net_device_path_type {
|
@@ -852,6 +852,7 @@ enum net_device_path_type {
|
||||||
DEV_PATH_ETHERNET = 0,
|
DEV_PATH_ETHERNET = 0,
|
||||||
DEV_PATH_VLAN,
|
DEV_PATH_VLAN,
|
||||||
DEV_PATH_BRIDGE,
|
DEV_PATH_BRIDGE,
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
struct net_device_path {
|
struct net_device_path {
|
||||||
@@ -854,6 +855,7 @@ struct net_device_path {
|
@@ -861,6 +862,7 @@ struct net_device_path {
|
||||||
struct {
|
struct {
|
||||||
u16 id;
|
u16 id;
|
||||||
__be16 proto;
|
__be16 proto;
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -846,6 +846,7 @@ enum net_device_path_type {
|
@@ -853,6 +853,7 @@ enum net_device_path_type {
|
||||||
DEV_PATH_VLAN,
|
DEV_PATH_VLAN,
|
||||||
DEV_PATH_BRIDGE,
|
DEV_PATH_BRIDGE,
|
||||||
DEV_PATH_PPPOE,
|
DEV_PATH_PPPOE,
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
};
|
};
|
||||||
|
|
||||||
struct net_device_path {
|
struct net_device_path {
|
||||||
@@ -866,6 +867,10 @@ struct net_device_path {
|
@@ -873,6 +874,10 @@ struct net_device_path {
|
||||||
u16 vlan_id;
|
u16 vlan_id;
|
||||||
__be16 vlan_proto;
|
__be16 vlan_proto;
|
||||||
} bridge;
|
} bridge;
|
||||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -863,6 +863,7 @@ struct net_device_path {
|
@@ -870,6 +870,7 @@ struct net_device_path {
|
||||||
DEV_PATH_BR_VLAN_KEEP,
|
DEV_PATH_BR_VLAN_KEEP,
|
||||||
DEV_PATH_BR_VLAN_TAG,
|
DEV_PATH_BR_VLAN_TAG,
|
||||||
DEV_PATH_BR_VLAN_UNTAG,
|
DEV_PATH_BR_VLAN_UNTAG,
|
||||||
|
|
|
@ -77,7 +77,7 @@ Signed-off-by: Guenter Roeck <linux@roeck-us.net>
|
||||||
+======================= =====================================================================
|
+======================= =====================================================================
|
||||||
--- a/drivers/hwmon/Kconfig
|
--- a/drivers/hwmon/Kconfig
|
||||||
+++ b/drivers/hwmon/Kconfig
|
+++ b/drivers/hwmon/Kconfig
|
||||||
@@ -1102,6 +1102,17 @@ config SENSORS_TC654
|
@@ -1103,6 +1103,17 @@ config SENSORS_TC654
|
||||||
This driver can also be built as a module. If so, the module
|
This driver can also be built as a module. If so, the module
|
||||||
will be called tc654.
|
will be called tc654.
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/usb/rndis_host.c
|
--- a/drivers/net/usb/rndis_host.c
|
||||||
+++ b/drivers/net/usb/rndis_host.c
|
+++ b/drivers/net/usb/rndis_host.c
|
||||||
@@ -485,10 +485,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
|
@@ -486,10 +486,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
|
||||||
*/
|
*/
|
||||||
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
/* peripheral may have batched packets to us... */
|
/* peripheral may have batched packets to us... */
|
||||||
while (likely(skb->len)) {
|
while (likely(skb->len)) {
|
||||||
struct rndis_data_hdr *hdr = (void *)skb->data;
|
struct rndis_data_hdr *hdr = (void *)skb->data;
|
||||||
@@ -523,10 +527,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
|
@@ -524,10 +528,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
|
||||||
break;
|
break;
|
||||||
skb_pull(skb, msg_len - sizeof *hdr);
|
skb_pull(skb, msg_len - sizeof *hdr);
|
||||||
skb_trim(skb2, data_len);
|
skb_trim(skb2, data_len);
|
||||||
|
@ -71,7 +71,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
|
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
|
||||||
@@ -600,6 +611,17 @@ static const struct driver_info rndis_po
|
@@ -601,6 +612,17 @@ static const struct driver_info rndis_po
|
||||||
.tx_fixup = rndis_tx_fixup,
|
.tx_fixup = rndis_tx_fixup,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static const struct usb_device_id products [] = {
|
static const struct usb_device_id products [] = {
|
||||||
@@ -609,6 +631,16 @@ static const struct usb_device_id produc
|
@@ -610,6 +632,16 @@ static const struct usb_device_id produc
|
||||||
USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
|
USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
|
||||||
.driver_info = (unsigned long) &rndis_poll_status_info,
|
.driver_info = (unsigned long) &rndis_poll_status_info,
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -23,7 +23,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/usb/rndis_host.c
|
--- a/drivers/net/usb/rndis_host.c
|
||||||
+++ b/drivers/net/usb/rndis_host.c
|
+++ b/drivers/net/usb/rndis_host.c
|
||||||
@@ -418,10 +418,7 @@ generic_rndis_bind(struct usbnet *dev, s
|
@@ -419,10 +419,7 @@ generic_rndis_bind(struct usbnet *dev, s
|
||||||
goto halt_fail_and_release;
|
goto halt_fail_and_release;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
/* set a nonzero filter to enable data transfers */
|
/* set a nonzero filter to enable data transfers */
|
||||||
memset(u.set, 0, sizeof *u.set);
|
memset(u.set, 0, sizeof *u.set);
|
||||||
@@ -463,6 +460,16 @@ static int rndis_bind(struct usbnet *dev
|
@@ -464,6 +461,16 @@ static int rndis_bind(struct usbnet *dev
|
||||||
return generic_rndis_bind(dev, intf, FLAG_RNDIS_PHYM_NOT_WIRELESS);
|
return generic_rndis_bind(dev, intf, FLAG_RNDIS_PHYM_NOT_WIRELESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
|
void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
|
||||||
{
|
{
|
||||||
struct rndis_halt *halt;
|
struct rndis_halt *halt;
|
||||||
@@ -615,7 +622,7 @@ static const struct driver_info zte_rndi
|
@@ -616,7 +623,7 @@ static const struct driver_info zte_rndi
|
||||||
.description = "ZTE RNDIS device",
|
.description = "ZTE RNDIS device",
|
||||||
.flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT,
|
.flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT,
|
||||||
.data = RNDIS_DRIVER_DATA_DST_MAC_FIXUP,
|
.data = RNDIS_DRIVER_DATA_DST_MAC_FIXUP,
|
||||||
|
|
|
@ -20,7 +20,7 @@ Link: https://lore.kernel.org/bpf/d5dc039c3d4123426e7023a488c449181a7bc57f.16469
|
||||||
|
|
||||||
--- a/drivers/net/veth.c
|
--- a/drivers/net/veth.c
|
||||||
+++ b/drivers/net/veth.c
|
+++ b/drivers/net/veth.c
|
||||||
@@ -1470,9 +1470,14 @@ static int veth_xdp_set(struct net_devic
|
@@ -1471,9 +1471,14 @@ static int veth_xdp_set(struct net_devic
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/usb/rndis_host.c
|
--- a/drivers/net/usb/rndis_host.c
|
||||||
+++ b/drivers/net/usb/rndis_host.c
|
+++ b/drivers/net/usb/rndis_host.c
|
||||||
@@ -485,10 +485,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
|
@@ -486,10 +486,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
|
||||||
*/
|
*/
|
||||||
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
/* peripheral may have batched packets to us... */
|
/* peripheral may have batched packets to us... */
|
||||||
while (likely(skb->len)) {
|
while (likely(skb->len)) {
|
||||||
struct rndis_data_hdr *hdr = (void *)skb->data;
|
struct rndis_data_hdr *hdr = (void *)skb->data;
|
||||||
@@ -523,10 +527,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
|
@@ -524,10 +528,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
|
||||||
break;
|
break;
|
||||||
skb_pull(skb, msg_len - sizeof *hdr);
|
skb_pull(skb, msg_len - sizeof *hdr);
|
||||||
skb_trim(skb2, data_len);
|
skb_trim(skb2, data_len);
|
||||||
|
@ -71,7 +71,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
|
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
|
||||||
@@ -600,6 +611,17 @@ static const struct driver_info rndis_po
|
@@ -601,6 +612,17 @@ static const struct driver_info rndis_po
|
||||||
.tx_fixup = rndis_tx_fixup,
|
.tx_fixup = rndis_tx_fixup,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static const struct usb_device_id products [] = {
|
static const struct usb_device_id products [] = {
|
||||||
@@ -614,6 +636,16 @@ static const struct usb_device_id produc
|
@@ -615,6 +637,16 @@ static const struct usb_device_id produc
|
||||||
USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
|
USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
|
||||||
.driver_info = (unsigned long)&rndis_info,
|
.driver_info = (unsigned long)&rndis_info,
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -23,7 +23,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/net/usb/rndis_host.c
|
--- a/drivers/net/usb/rndis_host.c
|
||||||
+++ b/drivers/net/usb/rndis_host.c
|
+++ b/drivers/net/usb/rndis_host.c
|
||||||
@@ -418,10 +418,7 @@ generic_rndis_bind(struct usbnet *dev, s
|
@@ -419,10 +419,7 @@ generic_rndis_bind(struct usbnet *dev, s
|
||||||
goto halt_fail_and_release;
|
goto halt_fail_and_release;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
|
|
||||||
/* set a nonzero filter to enable data transfers */
|
/* set a nonzero filter to enable data transfers */
|
||||||
memset(u.set, 0, sizeof *u.set);
|
memset(u.set, 0, sizeof *u.set);
|
||||||
@@ -463,6 +460,16 @@ static int rndis_bind(struct usbnet *dev
|
@@ -464,6 +461,16 @@ static int rndis_bind(struct usbnet *dev
|
||||||
return generic_rndis_bind(dev, intf, FLAG_RNDIS_PHYM_NOT_WIRELESS);
|
return generic_rndis_bind(dev, intf, FLAG_RNDIS_PHYM_NOT_WIRELESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
|
||||||
void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
|
void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
|
||||||
{
|
{
|
||||||
struct rndis_halt *halt;
|
struct rndis_halt *halt;
|
||||||
@@ -615,7 +622,7 @@ static const struct driver_info zte_rndi
|
@@ -616,7 +623,7 @@ static const struct driver_info zte_rndi
|
||||||
.description = "ZTE RNDIS device",
|
.description = "ZTE RNDIS device",
|
||||||
.flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT,
|
.flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT,
|
||||||
.data = RNDIS_DRIVER_DATA_DST_MAC_FIXUP,
|
.data = RNDIS_DRIVER_DATA_DST_MAC_FIXUP,
|
||||||
|
|
|
@ -897,6 +897,7 @@ CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
||||||
# CONFIG_CHARGER_LTC4162L is not set
|
# CONFIG_CHARGER_LTC4162L is not set
|
||||||
# CONFIG_CHARGER_MANAGER is not set
|
# CONFIG_CHARGER_MANAGER is not set
|
||||||
# CONFIG_CHARGER_MAX8903 is not set
|
# CONFIG_CHARGER_MAX8903 is not set
|
||||||
|
# CONFIG_CHARGER_QCOM_SMBB is not set
|
||||||
# CONFIG_CHARGER_RT9455 is not set
|
# CONFIG_CHARGER_RT9455 is not set
|
||||||
# CONFIG_CHARGER_SBS is not set
|
# CONFIG_CHARGER_SBS is not set
|
||||||
# CONFIG_CHARGER_SMB347 is not set
|
# CONFIG_CHARGER_SMB347 is not set
|
||||||
|
@ -2726,6 +2727,8 @@ CONFIG_INPUT_MISC=y
|
||||||
# CONFIG_INPUT_PALMAS_PWRBUTTON is not set
|
# CONFIG_INPUT_PALMAS_PWRBUTTON is not set
|
||||||
# CONFIG_INPUT_PCF8574 is not set
|
# CONFIG_INPUT_PCF8574 is not set
|
||||||
# CONFIG_INPUT_PCSPKR is not set
|
# CONFIG_INPUT_PCSPKR is not set
|
||||||
|
# CONFIG_INPUT_PM8941_PWRKEY is not set
|
||||||
|
# CONFIG_INPUT_PM8XXX_VIBRATOR is not set
|
||||||
# CONFIG_INPUT_POLLDEV is not set
|
# CONFIG_INPUT_POLLDEV is not set
|
||||||
# CONFIG_INPUT_POWERMATE is not set
|
# CONFIG_INPUT_POWERMATE is not set
|
||||||
# CONFIG_INPUT_PWM_BEEPER is not set
|
# CONFIG_INPUT_PWM_BEEPER is not set
|
||||||
|
|
|
@ -77,7 +77,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
#include "mtdcore.h"
|
#include "mtdcore.h"
|
||||||
|
|
||||||
@@ -928,6 +929,8 @@ int mtd_device_parse_register(struct mtd
|
@@ -930,6 +931,8 @@ int mtd_device_parse_register(struct mtd
|
||||||
register_reboot_notifier(&mtd->reboot_notifier);
|
register_reboot_notifier(&mtd->reboot_notifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue