mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2026-06-13 18:07:27 -04:00
Compare commits
142 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb59922007 | ||
|
|
d9340319c6 | ||
|
|
63064db765 | ||
|
|
394697b7e4 | ||
|
|
05d243637a | ||
|
|
eee14dd6db | ||
|
|
d848c2790d | ||
|
|
ba25b41913 | ||
|
|
989b12999c | ||
|
|
f50551dd18 | ||
|
|
0254415769 | ||
|
|
72529db50e | ||
|
|
197c6ee66c | ||
|
|
fdbbb8415f | ||
|
|
a52a1387e0 | ||
|
|
d45e94264f | ||
|
|
976b09707e | ||
|
|
04a7d672d7 | ||
|
|
a4f56aca81 | ||
|
|
926314ab12 | ||
|
|
26c2ff9e5d | ||
|
|
09915e64a6 | ||
|
|
963943787d | ||
|
|
4b8881cee9 | ||
|
|
ff393cbe9c | ||
|
|
7d620f83e3 | ||
|
|
79f8461b78 | ||
|
|
c45c2f3c1c | ||
|
|
0ea2a93fc7 | ||
|
|
7dd96329ef | ||
|
|
9d7aa9abad | ||
|
|
f3ee7c9e14 | ||
|
|
0b265f4562 | ||
|
|
2f27d0fefa | ||
|
|
a3d7a9ec98 | ||
|
|
2e960cc69f | ||
|
|
40be479fe3 | ||
|
|
bb478a6dda | ||
|
|
d5ab1b48dc | ||
|
|
f90e7a7397 | ||
|
|
9d3ca6d3e5 | ||
|
|
c99d356747 | ||
|
|
0db2af95bc | ||
|
|
73ea351f6c | ||
|
|
0f9ebe2da7 | ||
|
|
072fd4de3c | ||
|
|
4c4b698a9c | ||
|
|
7d74ef4b85 | ||
|
|
b39d82195d | ||
|
|
6ddc43bc7a | ||
|
|
fd85c0df78 | ||
|
|
871d7a9d68 | ||
|
|
c7c7a1cfc0 | ||
|
|
79cfac227e | ||
|
|
2a348bdbef | ||
|
|
0bf0556401 | ||
|
|
8979768b97 | ||
|
|
0c43acc349 | ||
|
|
0a21ab7312 | ||
|
|
cab22784b1 | ||
|
|
796b7681bf | ||
|
|
4e63a06636 | ||
|
|
6706c8a6e3 | ||
|
|
a2ac2c5ea3 | ||
|
|
3b2051ce44 | ||
|
|
2f289e3b74 | ||
|
|
6d46015d8b | ||
|
|
3a2a2c995f | ||
|
|
f37e4dc300 | ||
|
|
3246d6c0a1 | ||
|
|
6f56ddc36f | ||
|
|
9019992248 | ||
|
|
01644cba60 | ||
|
|
e709e9bc06 | ||
|
|
8e272a6d83 | ||
|
|
0ccd68f9ba | ||
|
|
01da187749 | ||
|
|
424788fc46 | ||
|
|
8cac8d8723 | ||
|
|
e2457aa09f | ||
|
|
bc8b407400 | ||
|
|
6285ce709a | ||
|
|
6d41cbf868 | ||
|
|
b394fa6819 | ||
|
|
a53d175865 | ||
|
|
6d4554429a | ||
|
|
d2d9b1eaeb | ||
|
|
ba37852951 | ||
|
|
2bcc3163a6 | ||
|
|
65906202fc | ||
|
|
d71e6920fa | ||
|
|
6adcb5d75c | ||
|
|
79cbeb8dd2 | ||
|
|
5216ad9731 | ||
|
|
ea97c49766 | ||
|
|
52d4559fe1 | ||
|
|
5db1b94b63 | ||
|
|
d29ee6c47e | ||
|
|
6854e1e554 | ||
|
|
4a55d894fd | ||
|
|
ca38f13ea2 | ||
|
|
cf9b806182 | ||
|
|
0ecf136f4d | ||
|
|
e099424aaa | ||
|
|
9b28f32815 | ||
|
|
cee749b889 | ||
|
|
517d8a102f | ||
|
|
b546f80a3f | ||
|
|
c9de6f06db | ||
|
|
02422b04d4 | ||
|
|
99708cc16d | ||
|
|
069f988d9d | ||
|
|
cc1b909a6b | ||
|
|
0b392b925f | ||
|
|
78d517a18c | ||
|
|
e0069e7587 | ||
|
|
5462cba522 | ||
|
|
a4fec25e24 | ||
|
|
d9fccc8e1a | ||
|
|
1e51fd037d | ||
|
|
5531dc7109 | ||
|
|
9b652e276f | ||
|
|
274418b028 | ||
|
|
3a481ae21b | ||
|
|
49901245e5 | ||
|
|
da59bc0a6b | ||
|
|
c46ee416be | ||
|
|
a42c06d674 | ||
|
|
ec82f459c9 | ||
|
|
31292ddc10 | ||
|
|
111d88e896 | ||
|
|
50cf9bbf17 | ||
|
|
7bef5367a7 | ||
|
|
6c15645a12 | ||
|
|
1eab9b8a9b | ||
|
|
5663f8e166 | ||
|
|
c5abbe71d9 | ||
|
|
687d713e79 | ||
|
|
4ee8c2dd1b | ||
|
|
9e9f6875bc | ||
|
|
be1b254888 | ||
|
|
6271b14140 |
@@ -1,4 +1,4 @@
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^d8cd30f4e281d6853b3de134c4f147a807583e43
|
||||
src-git luci https://git.openwrt.org/project/luci.git^2ac26e56cc55102cb10e7b0867c2b78e0f6d5fd8
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^c9b636698881059a3c981032770968f5a98ff201
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^fd605af7143165a2490681ec1752f259873b9147
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^c7d1a8c1ae976bd0ad94a351d82ee8fbf16a81f0
|
||||
src-git luci https://git.openwrt.org/project/luci.git^d6b13f648339273facc07b173546ace459c1cabe
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^85d040f28c21c116c905aa15a66255dde80336e7
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^2a4541d46199ac96fac214d02c908402831c4dc6
|
||||
|
||||
@@ -569,6 +569,15 @@ endef
|
||||
|
||||
define Device/Check/Common
|
||||
_PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile))))
|
||||
# Check if device is disabled and if so do not mark to be installed when ImageBuilder is used
|
||||
ifeq ($(IB),1)
|
||||
ifeq ($$(DEFAULT),n)
|
||||
_PROFILE_SET :=
|
||||
endif
|
||||
ifeq ($$(BROKEN),y)
|
||||
_PROFILE_SET :=
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES))
|
||||
ifdef TARGET_PER_DEVICE_ROOTFS
|
||||
$$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1))))
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .86
|
||||
LINUX_KERNEL_HASH-6.6.86 = 49e3ad7423e40735faada0cd39665c071d47efd84ec3548acf119c9704f13e68
|
||||
LINUX_VERSION-6.6 = .93
|
||||
LINUX_KERNEL_HASH-6.6.93 = 0d79ff359635e9f009f1e330deed5f3aefd8c452b80660bffdc504b877797719
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
PKG_NAME ?= trusted-firmware-a
|
||||
PKG_CPE_ID ?= cpe:/a:arm:trusted_firmware-a
|
||||
|
||||
ifndef PKG_SOURCE_PROTO
|
||||
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/TrustedFirmware-A/trusted-firmware-a/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_LTS ?=
|
||||
|
||||
ifneq ($(PKG_LTS),)
|
||||
PKG_VERSION_PREFIX:=lts-v
|
||||
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION_PREFIX)$(PKG_VERSION)
|
||||
else
|
||||
PKG_VERSION_PREFIX:=v
|
||||
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
endif
|
||||
|
||||
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
ifndef PKG_SOURCE_PROTO
|
||||
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION_PREFIX)$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/TrustedFirmware-A/trusted-firmware-a/tar.gz/$(PKG_VERSION_PREFIX)$(PKG_VERSION)?
|
||||
endif
|
||||
|
||||
PKG_TARGETS := bin
|
||||
PKG_FLAGS:=nonshared
|
||||
@@ -82,7 +90,7 @@ define Build/Compile/Trusted-Firmware-A
|
||||
OPENSSL_DIR=$(STAGING_DIR_HOST) \
|
||||
$(if $(DTC),DTC="$(DTC)") \
|
||||
PLAT=$(PLAT) \
|
||||
BUILD_STRING="OpenWrt v$(PKG_VERSION)-$(PKG_RELEASE) ($(VARIANT))" \
|
||||
BUILD_STRING="OpenWrt $(PKG_VERSION_PREFIX)$(PKG_VERSION)-$(PKG_RELEASE) ($(VARIANT))" \
|
||||
$(if $(CONFIG_BINUTILS_VERSION_2_37)$(CONFIG_BINUTILS_VERSION_2_38),,LDFLAGS="-no-warn-rwx-segments") \
|
||||
$(TFA_MAKE_FLAGS)
|
||||
endef
|
||||
|
||||
@@ -23,13 +23,13 @@ PKG_CONFIG_DEPENDS += \
|
||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
||||
|
||||
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),24.10.1)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),24.10.2)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r28597-0425664679)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r28739-d9340319c6)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/24.10.1)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/24.10.2)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -142,10 +142,7 @@ else
|
||||
$(call ERROR_MESSAGE,WARNING: Applying padding in $$d/Packages to workaround usign SHA-512 bug!); \
|
||||
{ echo ""; echo ""; } >> Packages;; \
|
||||
esac; \
|
||||
echo -n '{"architecture": "$(ARCH_PACKAGES)", "packages":{' > index.json; \
|
||||
sed -n -e 's/^Package: \(.*\)$$/"\1":/p' -e 's/^Version: \(.*\)$$/"\1",/p' Packages | tr '\n' ' ' >> index.json; \
|
||||
echo '}}' >> index.json; \
|
||||
sed -i 's/, }}/}}/' index.json; \
|
||||
$(SCRIPT_DIR)/make-index-json.py -f opkg -a "$(ARCH_PACKAGES)" Packages > index.json; \
|
||||
gzip -9nc Packages > Packages.gz; \
|
||||
); done
|
||||
ifdef CONFIG_SIGNED_PACKAGES
|
||||
|
||||
@@ -190,7 +190,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "https://downloads.openwrt.org/releases/24.10.1"
|
||||
default "https://downloads.openwrt.org/releases/24.10.2"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -7,10 +7,11 @@
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_VERSION:=2.10
|
||||
PKG_VERSION:=2.10.17
|
||||
PKG_RELEASE:=1
|
||||
PKG_LTS:=1
|
||||
|
||||
PKG_HASH:=88215a62291b9ba87da8e50b077741103cdc08fb6c9e1ebd34dfaace746d3201
|
||||
PKG_HASH:=2558b2579dd1c45db6de89c49e647c109022d45da03eb74e0f6123c294295099
|
||||
PKG_MAINTAINER:=Thomas Richard <thomas.richard@bootlin.com>
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
@@ -108,8 +108,10 @@ gatonetworks,gdsp)
|
||||
glinet,gl-mt3000)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
|
||||
;;
|
||||
mercusys,mr80x-v3|\
|
||||
mercusys,mr90x-v1|\
|
||||
routerich,ax3000|\
|
||||
routerich,ax3000-v1|\
|
||||
tplink,re6000xd)
|
||||
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
|
||||
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
|
||||
@@ -127,6 +129,9 @@ smartrg,sdg-8734)
|
||||
local envdev=$(find_mmc_part "u-boot-env" "mmcblk0")
|
||||
ubootenv_add_uci_config "$envdev" "0x0" "0x8000" "0x8000"
|
||||
;;
|
||||
tplink,archer-ax80-v1)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "8"
|
||||
;;
|
||||
ubnt,unifi-6-plus)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x10000"
|
||||
;;
|
||||
|
||||
@@ -63,6 +63,7 @@ kroks,kndrt31r19|\
|
||||
mediatek,linkit-smart-7688|\
|
||||
samknows,whitebox-v8|\
|
||||
xiaomi,mi-router-4c|\
|
||||
xiaomi,miwifi-3a|\
|
||||
xiaomi,miwifi-nano|\
|
||||
zbtlink,zbt-wg2626|\
|
||||
zte,mf283plus)
|
||||
|
||||
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=perf
|
||||
PKG_VERSION:=$(LINUX_VERSION)
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=6
|
||||
|
||||
PKG_BUILD_FLAGS:=no-mips16 no-lto
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
@@ -50,6 +50,7 @@ MAKE_FLAGS = \
|
||||
NO_LZMA=1 \
|
||||
NO_BACKTRACE=1 \
|
||||
NO_LIBNUMA=1 \
|
||||
NO_SLANG=1 \
|
||||
NO_GTK2=1 \
|
||||
NO_LIBAUDIT=1 \
|
||||
NO_LIBCRYPTO=1 \
|
||||
|
||||
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=strace
|
||||
PKG_VERSION:=6.11
|
||||
PKG_VERSION:=6.12
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
|
||||
PKG_HASH:=83262583a3529f02c3501aa8b8ac772b4cbc03dc934e98bab6e4883626e283a5
|
||||
PKG_HASH:=c47da93be45b6055f4dc741d7f20efaf50ca10160a5b100c109b294fd9c0bdfe
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=LGPL-2.1-or-later
|
||||
|
||||
@@ -6,9 +6,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
|
||||
PKG_SOURCE_DATE:=2024-10-08
|
||||
PKG_SOURCE_VERSION:=dcbab62272bf5cab2ed857bc655d240970e14f2a
|
||||
PKG_MIRROR_HASH:=e53a3872abf5e35db6baaceb56e6ffa289f8dd9b6226cf8a4d5b87b541179175
|
||||
PKG_SOURCE_DATE:=2025-05-30
|
||||
PKG_SOURCE_VERSION:=fde3d2a7ce59be389224304049a4a5b9ca49a45e
|
||||
PKG_MIRROR_HASH:=2e149366118192d4976baf42ac23d22ef32e477feb111d2756a2411278b6cf46
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@@ -54,6 +54,7 @@ ALLWIFIBOARDS:= \
|
||||
skspruce_wia3300-20 \
|
||||
spectrum_sax1v1k \
|
||||
tplink_eap660hd-v1 \
|
||||
tplink_archer-c6-v2 \
|
||||
wallys_dr40x9 \
|
||||
xiaomi_ax3600 \
|
||||
xiaomi_ax9000 \
|
||||
@@ -72,7 +73,7 @@ define Package/ipq-wifi-default
|
||||
SUBMENU:=ath10k Board-Specific Overrides
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
DEPENDS:=@(TARGET_ipq40xx||TARGET_ipq806x||TARGET_qualcommax)
|
||||
DEPENDS:=@(TARGET_ath79||TARGET_ipq40xx||TARGET_ipq806x||TARGET_qualcommax)
|
||||
TITLE:=Custom Board
|
||||
endef
|
||||
|
||||
@@ -181,6 +182,7 @@ $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6))
|
||||
$(eval $(call generate-ipq-wifi-package,skspruce_wia3300-20,SKSpruce WIA3300-20))
|
||||
$(eval $(call generate-ipq-wifi-package,spectrum_sax1v1k,Spectrum SAX1V1K))
|
||||
$(eval $(call generate-ipq-wifi-package,tplink_eap660hd-v1,TP-Link EAP660 HD v1))
|
||||
$(eval $(call generate-ipq-wifi-package,tplink_archer-c6-v2,TP-Link Archer C6 V2))
|
||||
$(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9))
|
||||
$(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600))
|
||||
$(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=linux-firmware
|
||||
PKG_VERSION:=20241110
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
|
||||
@@ -128,12 +128,18 @@ define Package/brcmfmac-nvram-43455-sdio/install
|
||||
$(LN) \
|
||||
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt
|
||||
$(LN) \
|
||||
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,5-compute-module.txt
|
||||
$(LN) \
|
||||
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ Compute\ Module\ 4.txt
|
||||
$(LN) \
|
||||
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ 5\ Model\ B.txt
|
||||
$(LN) \
|
||||
brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ Compute\ Module\ 5.txt
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.MINIX-NEO\ Z83-4.txt \
|
||||
$(1)/lib/firmware/brcm/
|
||||
|
||||
@@ -2,13 +2,13 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=bcm27xx-gpu-fw
|
||||
PKG_VERSION:=2025.03.05
|
||||
PKG_VERSION:=2025.04.30
|
||||
PKG_VERSION_REAL:=1.$(subst .,,$(PKG_VERSION))
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=raspi-firmware_$(PKG_VERSION_REAL).orig.tar.xz
|
||||
PKG_SOURCE_URL:=https://github.com/raspberrypi/firmware/releases/download/$(PKG_VERSION_REAL)
|
||||
PKG_HASH:=f697079cd15389c0d8650283eb911c53a64b22550138704eb50e1145e8330b03
|
||||
PKG_HASH:=25bcff5992c6d7057de4a5c6834b7f90b7136fe12aa63fa32793329bf74a95bf
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
|
||||
@@ -116,17 +116,35 @@ I2C_DWPCI_MODULES:= \
|
||||
|
||||
define KernelPackage/i2c-designware-pci
|
||||
$(call i2c_defaults,$(I2C_DWPCI_MODULES),59)
|
||||
TITLE:=Synopsys DesignWare PCI
|
||||
TITLE:=Synopsys DesignWare I2C PCI
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-i2c-designware-core +kmod-i2c-ccgs-ucsi
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-designware-pci/description
|
||||
Support for Synopsys DesignWare I2C controller. Only master mode is supported.
|
||||
Support for Synopsys DesignWare I2C PCI controller. Only master mode is
|
||||
supported.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-designware-pci))
|
||||
|
||||
|
||||
I2C_DWPLAT_MODULES:= \
|
||||
CONFIG_I2C_DESIGNWARE_PLATFORM:drivers/i2c/busses/i2c-designware-platform
|
||||
|
||||
define KernelPackage/i2c-designware-platform
|
||||
$(call i2c_defaults,$(I2C_DWPLAT_MODULES),59)
|
||||
TITLE:=Synopsys DesignWare I2C Platform
|
||||
DEPENDS:=+kmod-i2c-designware-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-designware-platform/description
|
||||
Support for Synopsys DesignWare I2C Platform controller. Only master mode
|
||||
is supported.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-designware-platform))
|
||||
|
||||
|
||||
I2C_GPIO_MODULES:= \
|
||||
CONFIG_I2C_GPIO:drivers/i2c/busses/i2c-gpio
|
||||
|
||||
|
||||
@@ -299,6 +299,23 @@ endef
|
||||
$(eval $(call KernelPackage,leds-lp55xx-common))
|
||||
|
||||
|
||||
define KernelPackage/leds-lp5523
|
||||
SUBMENU:=$(LEDS_MENU)
|
||||
TITLE:=LED driver for LP5523/LP55231 controllers
|
||||
DEPENDS:=+kmod-i2c-core +kmod-leds-lp55xx-common
|
||||
KCONFIG:=CONFIG_LEDS_LP5523
|
||||
FILES:=$(LINUX_DIR)/drivers/leds/leds-lp5523.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,leds-lp5523,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/leds-lp5523/description
|
||||
This option enables support for Texas Instruments LP5523/LP55231
|
||||
LED controllers.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,leds-lp5523))
|
||||
|
||||
|
||||
define KernelPackage/leds-lp5562
|
||||
SUBMENU:=$(LEDS_MENU)
|
||||
TITLE:=LED driver for LP5562 controllers
|
||||
|
||||
@@ -1539,6 +1539,28 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,bnx2x))
|
||||
|
||||
define KernelPackage/bnxt-en
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Broadcom NetXtreme-C/E network driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-hwmon-core +kmod-lib-crc32c +kmod-mdio +kmod-ptp
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
|
||||
KCONFIG:= \
|
||||
CONFIG_BNXT \
|
||||
CONFIG_BNXT_SRIOV=y \
|
||||
CONFIG_BNXT_FLOWER_OFFLOAD=y \
|
||||
CONFIG_BNXT_DCB=n \
|
||||
CONFIG_BNXT_HWMON=y
|
||||
AUTOLOAD:=$(call AutoProbe,bnxt_en)
|
||||
endef
|
||||
|
||||
define KernelPackage/bnxt-en/description
|
||||
Supports Broadcom NetXtreme-C/E based Ethernet NICs including:
|
||||
* BCM573xx
|
||||
* BCM574xx
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,bnxt-en))
|
||||
|
||||
define KernelPackage/be2net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Broadcom Emulex OneConnect 10Gbps NIC
|
||||
@@ -1821,6 +1843,23 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,igc))
|
||||
|
||||
|
||||
define KernelPackage/hinic
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Huawei Intelligent PCIE Network Interface Card support
|
||||
DEPENDS:=@PCI_SUPPORT @TARGET_x86||TARGET_armsr_armv8
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/huawei/hinic/hinic.ko
|
||||
KCONFIG:=CONFIG_HINIC
|
||||
AUTOLOAD:=$(call AutoProbe,hinic)
|
||||
endef
|
||||
|
||||
define KernelPackage/hinic/description
|
||||
Kernel module for HiNIC PCIE Ethernet cards
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hinic))
|
||||
|
||||
|
||||
define KernelPackage/sfc
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Solarflare SFC9000/SFC9100/EF100-family support
|
||||
@@ -1987,3 +2026,19 @@ define KernelPackage/amazon-ena/description
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,amazon-ena))
|
||||
|
||||
define KernelPackage/enc28j60
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Microchip ENC28J60 SPI Ethernet driver
|
||||
KCONFIG:=\
|
||||
CONFIG_ENC28J60 \
|
||||
CONFIG_ENC28J60_WRITEVERIFY=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/microchip/enc28j60.ko
|
||||
AUTOLOAD:=$(call AutoProbe,enc28j60)
|
||||
endef
|
||||
|
||||
define KernelPackage/enc28j60/description
|
||||
Kernel module for Microchip ENC28J60 SPI Ethernet controller
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,enc28j60))
|
||||
|
||||
@@ -73,3 +73,41 @@ define KernelPackage/spi-dev/description
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-dev))
|
||||
|
||||
|
||||
define KernelPackage/spi-dw
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=DesignWare SPI controller driver (core)
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI=y \
|
||||
CONFIG_SPI_DESIGNWARE \
|
||||
CONFIG_SPI_DYNAMIC=y \
|
||||
CONFIG_SPI_MASTER=y
|
||||
FILES:=\
|
||||
$(LINUX_DIR)/drivers/spi/spi-dw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,spi-dw)
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-dw/description
|
||||
This package contains the DesignWare SPI core driver.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-dw))
|
||||
|
||||
|
||||
define KernelPackage/spi-dw-mmio
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=DesignWare SPI controller driver (MMIO)
|
||||
DEPENDS:=+kmod-spi-dw
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI_DW_MMIO
|
||||
FILES:=\
|
||||
$(LINUX_DIR)/drivers/spi/spi-dw-mmio.ko
|
||||
AUTOLOAD:=$(call AutoProbe,spi-dw-mmio)
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-dw-mmio/description
|
||||
This package contains the DesignWare SPI MMIO driver.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-dw-mmio))
|
||||
|
||||
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=6.12.6
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 52393e2ae12f18fb1a60578c24c46ebab292ddb6 Mon Sep 17 00:00:00 2001
|
||||
From: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
Date: Mon, 28 Mar 2022 13:21:04 +0530
|
||||
Subject: [PATCH] ath11k: Revert: clear the keys properly when DISABLE_KEY
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Reverting the Upstream clear key change added as a part of
|
||||
436a4e886598 ("ath11k: clear the keys properly
|
||||
when DISABLE_KEY")
|
||||
This change exposed a race in WLAN Firmware where target asserts
|
||||
are seen frequently due FW not synchronizing ath11k host’s clear
|
||||
key commands(CIPHER changes to NONE) with frames in TX queue.
|
||||
Hence reverting this change untill FW fixes to synchronize
|
||||
ath11k host’s clear key command are available.
|
||||
|
||||
Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 4 +++-
|
||||
drivers/net/wireless/ath/ath11k/wmi.c | 3 +--
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -4222,7 +4222,9 @@ static int ath11k_install_key(struct ath
|
||||
return 0;
|
||||
|
||||
if (cmd == DISABLE_KEY) {
|
||||
- arg.key_cipher = WMI_CIPHER_NONE;
|
||||
+ /* TODO: Check if FW expects value other than NONE for del */
|
||||
+ /* arg.key_cipher = WMI_CIPHER_NONE; */
|
||||
+ arg.key_len = 0;
|
||||
arg.key_data = NULL;
|
||||
goto install;
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -1854,8 +1854,7 @@ int ath11k_wmi_vdev_install_key(struct a
|
||||
tlv = (struct wmi_tlv *)(skb->data + sizeof(*cmd));
|
||||
tlv->header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_ARRAY_BYTE) |
|
||||
FIELD_PREP(WMI_TLV_LEN, key_len_aligned);
|
||||
- if (arg->key_data)
|
||||
- memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned);
|
||||
+ memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned);
|
||||
|
||||
ret = ath11k_wmi_cmd_send(wmi, skb, WMI_VDEV_INSTALL_KEY_CMDID);
|
||||
if (ret) {
|
||||
@@ -1,27 +0,0 @@
|
||||
From 66ae1b1750720a33e29792a177b1e696f4f005fb Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 9 Mar 2016 17:25:59 +0000
|
||||
Subject: [PATCH] brcmfmac: Disable power management
|
||||
|
||||
Disable wireless power saving in the brcmfmac WLAN driver. This is a
|
||||
temporary measure until the connectivity loss resulting from power
|
||||
saving is resolved.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -3314,6 +3314,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
* preference in cfg struct to apply this to
|
||||
* FW later while initializing the dongle
|
||||
*/
|
||||
+#if defined(CONFIG_ARCH_BCM2835)
|
||||
+ brcmf_dbg(INFO, "power management disabled\n");
|
||||
+ enabled = false;
|
||||
+#endif
|
||||
cfg->pwr_save = enabled;
|
||||
if (!check_vif_up(ifp->vif)) {
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
brcmfmac: do not use internal roaming engine by default
|
||||
|
||||
Some evidence of curing disconnects with this disabled, so make it a default.
|
||||
Can be overridden with module parameter roamoff=0
|
||||
See: http://projectable.me/optimize-my-pi-wi-fi/
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -59,7 +59,11 @@ static int brcmf_fcmode;
|
||||
module_param_named(fcmode, brcmf_fcmode, int, 0);
|
||||
MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
|
||||
|
||||
+#if defined(CONFIG_ARCH_BCM2835)
|
||||
+static int brcmf_roamoff = 1;
|
||||
+#else
|
||||
static int brcmf_roamoff;
|
||||
+#endif
|
||||
module_param_named(roamoff, brcmf_roamoff, int, 0400);
|
||||
MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine");
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 88759af56f126e6e151f07fa9efc7447079fca9d Mon Sep 17 00:00:00 2001
|
||||
From: Cheong2K <cheong@redbear.cc>
|
||||
Date: Fri, 26 Feb 2016 18:20:10 +0800
|
||||
Subject: [PATCH] brcmfmac: adds support for BCM43341 wifi
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
|
||||
3 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -609,6 +609,7 @@ BRCMF_FW_DEF(4329, "brcmfmac4329-sdio");
|
||||
BRCMF_FW_DEF(4330, "brcmfmac4330-sdio");
|
||||
BRCMF_FW_DEF(4334, "brcmfmac4334-sdio");
|
||||
BRCMF_FW_DEF(43340, "brcmfmac43340-sdio");
|
||||
+BRCMF_FW_DEF(43341, "brcmfmac43341-sdio");
|
||||
BRCMF_FW_DEF(4335, "brcmfmac4335-sdio");
|
||||
BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
|
||||
BRCMF_FW_DEF(4339, "brcmfmac4339-sdio");
|
||||
@@ -641,7 +642,7 @@ static const struct brcmf_firmware_mappi
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
|
||||
- BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340),
|
||||
+ BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43341),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),
|
||||
@@ -0,0 +1,130 @@
|
||||
From 3ac592da09acb47b728ef320e9fecde55c8e0824 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 26 Jun 2020 11:51:05 +0100
|
||||
Subject: [PATCH] brcmfmac: Prefer a ccode from OTP over nvram file
|
||||
|
||||
Allow the nvram file to set a default ccode (regulatory domain) without
|
||||
overriding one set in OTP.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 39 +++++++++++++------
|
||||
.../broadcom/brcm80211/brcmfmac/firmware.c | 21 +++++++++-
|
||||
2 files changed, 47 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/vmalloc.h>
|
||||
+#include <linux/ctype.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include <net/netlink.h>
|
||||
#include <uapi/linux/if_arp.h>
|
||||
@@ -8212,31 +8213,45 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct brcmf_fil_country_le ccreq;
|
||||
+ char *alpha2;
|
||||
s32 err;
|
||||
int i;
|
||||
|
||||
- /* The country code gets set to "00" by default at boot, ignore */
|
||||
- if (req->alpha2[0] == '0' && req->alpha2[1] == '0')
|
||||
+ err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
+ if (err) {
|
||||
+ bphy_err(drvr, "Country code iovar returned err = %d\n", err);
|
||||
return;
|
||||
+ }
|
||||
+
|
||||
+ /* The country code gets set to "00" by default at boot - substitute
|
||||
+ * any saved ccode from the nvram file unless there is a valid code
|
||||
+ * already set.
|
||||
+ */
|
||||
+ alpha2 = req->alpha2;
|
||||
+ if (alpha2[0] == '0' && alpha2[1] == '0') {
|
||||
+ extern char saved_ccode[2];
|
||||
+
|
||||
+ if ((isupper(ccreq.country_abbrev[0]) &&
|
||||
+ isupper(ccreq.country_abbrev[1])) ||
|
||||
+ !saved_ccode[0])
|
||||
+ return;
|
||||
+ alpha2 = saved_ccode;
|
||||
+ pr_debug("brcmfmac: substituting saved ccode %c%c\n",
|
||||
+ alpha2[0], alpha2[1]);
|
||||
+ }
|
||||
|
||||
/* ignore non-ISO3166 country codes */
|
||||
for (i = 0; i < 2; i++)
|
||||
- if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
|
||||
+ if (alpha2[i] < 'A' || alpha2[i] > 'Z') {
|
||||
bphy_err(drvr, "not an ISO3166 code (0x%02x 0x%02x)\n",
|
||||
- req->alpha2[0], req->alpha2[1]);
|
||||
+ alpha2[0], alpha2[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
brcmf_dbg(TRACE, "Enter: initiator=%d, alpha=%c%c\n", req->initiator,
|
||||
- req->alpha2[0], req->alpha2[1]);
|
||||
-
|
||||
- err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
- if (err) {
|
||||
- bphy_err(drvr, "Country code iovar returned err = %d\n", err);
|
||||
- return;
|
||||
- }
|
||||
+ alpha2[0], alpha2[1]);
|
||||
|
||||
- err = brcmf_translate_country_code(ifp->drvr, req->alpha2, &ccreq);
|
||||
+ err = brcmf_translate_country_code(ifp->drvr, alpha2, &ccreq);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/bcm47xx_nvram.h>
|
||||
+#include <linux/ctype.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "firmware.h"
|
||||
@@ -32,6 +33,8 @@ enum nvram_parser_state {
|
||||
END
|
||||
};
|
||||
|
||||
+char saved_ccode[2] = {};
|
||||
+
|
||||
/**
|
||||
* struct nvram_parser - internal info for parser.
|
||||
*
|
||||
@@ -562,11 +565,27 @@ static int brcmf_fw_request_nvram_done(c
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- if (data)
|
||||
+ if (data) {
|
||||
+ char *ccode = strnstr((char *)data, "ccode=", data_len);
|
||||
+ /* Ensure this is a whole token */
|
||||
+ if (ccode && ((void *)ccode == (void *)data || isspace(ccode[-1]))) {
|
||||
+ /* Comment out the line */
|
||||
+ ccode[0] = '#';
|
||||
+ ccode += 6;
|
||||
+ if (isupper(ccode[0]) && isupper(ccode[1]) &&
|
||||
+ isspace(ccode[2])) {
|
||||
+ pr_debug("brcmfmac: intercepting ccode=%c%c\n",
|
||||
+ ccode[0], ccode[1]);
|
||||
+ saved_ccode[0] = ccode[0];
|
||||
+ saved_ccode[1] = ccode[1];
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
nvram = brcmf_fw_nvram_strip(data, data_len, &nvram_length,
|
||||
fwctx->req->domain_nr,
|
||||
fwctx->req->bus_nr,
|
||||
fwctx->dev);
|
||||
+ }
|
||||
|
||||
if (free_bcm47xx_nvram)
|
||||
bcm47xx_nvram_release_contents(data);
|
||||
@@ -0,0 +1,24 @@
|
||||
From 12722e472a963598a88011dd4b6805ed0a0e318f Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Mon, 3 Feb 2020 09:32:22 +0000
|
||||
Subject: [PATCH] brcmfmac: Increase power saving delay to 2s
|
||||
|
||||
Increase the delay before entering the lower power state to 2 seconds
|
||||
(the maximum allowed) in order to reduce the packet latencies,
|
||||
particularly for inbound packets.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -3338,6 +3338,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
bphy_err(drvr, "error (%d)\n", err);
|
||||
}
|
||||
|
||||
+ timeout = 2000; /* 2000ms - the maximum */
|
||||
err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret",
|
||||
min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS));
|
||||
if (err)
|
||||
@@ -0,0 +1,721 @@
|
||||
From e7400640cafcf6bd84049308feb5aeabecf55b46 Mon Sep 17 00:00:00 2001
|
||||
From: Praveen Babu C <pucn@cypress.com>
|
||||
Date: Tue, 9 Jan 2018 11:33:10 +0530
|
||||
Subject: [PATCH] non-upstream: support DS1 exit firmware re-download
|
||||
|
||||
In deep sleep mode (DS1) ARM is off and once exit trigger comes than
|
||||
mailbox Interrupt comes to host and whole reinitiation should be done
|
||||
in the ARM to start TX/RX.
|
||||
|
||||
Also fix below issus for DS1 exit:
|
||||
1. Sent Tx Control frame only after firmware redownload complete (check
|
||||
F2 Ready before sending Tx Control frame to Firmware)
|
||||
2. intermittent High DS1 TX Exit latency time (almost 3sec) ==> This is
|
||||
fixed by skipping host Mailbox interrupt Multiple times (ulp state
|
||||
mechanism)
|
||||
3. RX GlOM save/restore in Firmware
|
||||
4. Add ULP event enable & event_msgs_ext iovar configuration in FMAC
|
||||
5. Add ULP_EVENT_RECV state machine for sbwad support
|
||||
6. Support 2 Byte Shared memory read for DS1 Exit HUDI implementation
|
||||
|
||||
Signed-off-by: Praveen Babu C <pucn@cypress.com>
|
||||
Signed-off-by: Naveen Gupta <nagu@cypress.com>
|
||||
[Merge from 4.14.77 to 5.4.18; set BRCMF_SDIO_MAX_ACCESS_ERRORS to 20]
|
||||
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
|
||||
JIRA: SWWLAN-135583
|
||||
JIRA: SWWLAN-136577
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/bus.h | 2 +-
|
||||
.../broadcom/brcm80211/brcmfmac/common.c | 39 +++
|
||||
.../broadcom/brcm80211/brcmfmac/core.c | 13 +-
|
||||
.../broadcom/brcm80211/brcmfmac/debug.h | 1 +
|
||||
.../broadcom/brcm80211/brcmfmac/fweh.h | 31 ++-
|
||||
.../broadcom/brcm80211/brcmfmac/pcie.c | 2 +-
|
||||
.../broadcom/brcm80211/brcmfmac/sdio.c | 260 +++++++++++++++++-
|
||||
.../broadcom/brcm80211/brcmfmac/sdio.h | 110 ++++++++
|
||||
.../broadcom/brcm80211/brcmfmac/usb.c | 4 +-
|
||||
.../broadcom/brcm80211/include/chipcommon.h | 2 +
|
||||
10 files changed, 448 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
||||
@@ -298,7 +298,7 @@ void brcmf_rx_event(struct device *dev,
|
||||
|
||||
int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings);
|
||||
/* Indication from bus module regarding presence/insertion of dongle. */
|
||||
-int brcmf_attach(struct device *dev);
|
||||
+int brcmf_attach(struct device *dev, bool start_bus);
|
||||
/* Indication from bus module regarding removal/absence of dongle */
|
||||
void brcmf_detach(struct device *dev);
|
||||
void brcmf_free(struct device *dev);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "of.h"
|
||||
#include "firmware.h"
|
||||
#include "chip.h"
|
||||
+#include "fweh.h"
|
||||
+#include <brcm_hw_ids.h>
|
||||
|
||||
MODULE_AUTHOR("Broadcom Corporation");
|
||||
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
|
||||
@@ -274,6 +276,8 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
||||
char *clmver;
|
||||
char *ptr;
|
||||
s32 err;
|
||||
+ struct eventmsgs_ext *eventmask_msg = NULL;
|
||||
+ u8 msglen;
|
||||
|
||||
if (is_valid_ether_addr(ifp->mac_addr)) {
|
||||
/* set mac address */
|
||||
@@ -433,6 +437,41 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
||||
goto done;
|
||||
}
|
||||
|
||||
+ /* Enable event_msg_ext specific to 43012 chip */
|
||||
+ if (bus->chip == CY_CC_43012_CHIP_ID) {
|
||||
+ /* Program event_msg_ext to support event larger than 128 */
|
||||
+ msglen = (roundup(BRCMF_E_LAST, NBBY) / NBBY) +
|
||||
+ EVENTMSGS_EXT_STRUCT_SIZE;
|
||||
+ /* Allocate buffer for eventmask_msg */
|
||||
+ eventmask_msg = kzalloc(msglen, GFP_KERNEL);
|
||||
+ if (!eventmask_msg) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto done;
|
||||
+ }
|
||||
+
|
||||
+ /* Read the current programmed event_msgs_ext */
|
||||
+ eventmask_msg->ver = EVENTMSGS_VER;
|
||||
+ eventmask_msg->len = roundup(BRCMF_E_LAST, NBBY) / NBBY;
|
||||
+ err = brcmf_fil_iovar_data_get(ifp, "event_msgs_ext",
|
||||
+ eventmask_msg,
|
||||
+ msglen);
|
||||
+
|
||||
+ /* Enable ULP event */
|
||||
+ brcmf_dbg(EVENT, "enable event ULP\n");
|
||||
+ setbit(eventmask_msg->mask, BRCMF_E_ULP);
|
||||
+
|
||||
+ /* Write updated Event mask */
|
||||
+ eventmask_msg->ver = EVENTMSGS_VER;
|
||||
+ eventmask_msg->command = EVENTMSGS_SET_MASK;
|
||||
+ eventmask_msg->len = (roundup(BRCMF_E_LAST, NBBY) / NBBY);
|
||||
+
|
||||
+ err = brcmf_fil_iovar_data_set(ifp, "event_msgs_ext",
|
||||
+ eventmask_msg, msglen);
|
||||
+ if (err) {
|
||||
+ brcmf_err("Set event_msgs_ext error (%d)\n", err);
|
||||
+ goto done;
|
||||
+ }
|
||||
+ }
|
||||
/* Setup default scan channel time */
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_SCAN_CHANNEL_TIME,
|
||||
BRCMF_DEFAULT_SCAN_CHANNEL_TIME);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1317,7 +1317,7 @@ int brcmf_alloc(struct device *dev, stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int brcmf_attach(struct device *dev)
|
||||
+int brcmf_attach(struct device *dev, bool start_bus)
|
||||
{
|
||||
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||
struct brcmf_pub *drvr = bus_if->drvr;
|
||||
@@ -1358,10 +1358,13 @@ int brcmf_attach(struct device *dev)
|
||||
brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
|
||||
brcmf_psm_watchdog_notify);
|
||||
|
||||
- ret = brcmf_bus_started(drvr, drvr->ops);
|
||||
- if (ret != 0) {
|
||||
- bphy_err(drvr, "dongle is not responding: err=%d\n", ret);
|
||||
- goto fail;
|
||||
+ if (start_bus) {
|
||||
+ ret = brcmf_bus_started(drvr, drvr->ops);
|
||||
+ if (ret != 0) {
|
||||
+ bphy_err(drvr, "dongle is not responding: err=%d\n",
|
||||
+ ret);
|
||||
+ goto fail;
|
||||
+ }
|
||||
}
|
||||
|
||||
return 0;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
||||
@@ -29,6 +29,7 @@
|
||||
#define BRCMF_MSGBUF_VAL 0x00040000
|
||||
#define BRCMF_PCIE_VAL 0x00080000
|
||||
#define BRCMF_FWCON_VAL 0x00100000
|
||||
+#define BRCMF_ULP_VAL 0x00200000
|
||||
|
||||
/* set default print format */
|
||||
#undef pr_fmt
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
|
||||
@@ -94,7 +94,8 @@ struct brcmf_cfg80211_info;
|
||||
BRCMF_ENUM_DEF(FIFO_CREDIT_MAP, 74) \
|
||||
BRCMF_ENUM_DEF(ACTION_FRAME_RX, 75) \
|
||||
BRCMF_ENUM_DEF(TDLS_PEER_EVENT, 92) \
|
||||
- BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127)
|
||||
+ BRCMF_ENUM_DEF(BCMC_CREDIT_SUPPORT, 127) \
|
||||
+ BRCMF_ENUM_DEF(ULP, 146)
|
||||
|
||||
#define BRCMF_ENUM_DEF(id, val) \
|
||||
BRCMF_E_##id = (val),
|
||||
@@ -102,6 +103,12 @@ struct brcmf_cfg80211_info;
|
||||
/* firmware event codes sent by the dongle */
|
||||
enum brcmf_fweh_event_code {
|
||||
BRCMF_FWEH_EVENT_ENUM_DEFLIST
|
||||
+
|
||||
+ /* this determines event mask length which must match
|
||||
+ * minimum length check in device firmware so it is
|
||||
+ * hard-coded here.
|
||||
+ */
|
||||
+ BRCMF_E_LAST
|
||||
};
|
||||
#undef BRCMF_ENUM_DEF
|
||||
|
||||
@@ -280,6 +287,28 @@ struct brcmf_if_event {
|
||||
u8 role;
|
||||
};
|
||||
|
||||
+enum event_msgs_ext_command {
|
||||
+ EVENTMSGS_NONE = 0,
|
||||
+ EVENTMSGS_SET_BIT = 1,
|
||||
+ EVENTMSGS_RESET_BIT = 2,
|
||||
+ EVENTMSGS_SET_MASK = 3
|
||||
+};
|
||||
+
|
||||
+#define EVENTMSGS_VER 1
|
||||
+#define EVENTMSGS_EXT_STRUCT_SIZE offsetof(struct eventmsgs_ext, mask[0])
|
||||
+
|
||||
+/* len- for SET it would be mask size from the application to the firmware */
|
||||
+/* for GET it would be actual firmware mask size */
|
||||
+/* maxgetsize - is only used for GET. indicate max mask size that the */
|
||||
+/* application can read from the firmware */
|
||||
+struct eventmsgs_ext {
|
||||
+ u8 ver;
|
||||
+ u8 command;
|
||||
+ u8 len;
|
||||
+ u8 maxgetsize;
|
||||
+ u8 mask[1];
|
||||
+};
|
||||
+
|
||||
typedef int (*brcmf_fweh_handler_t)(struct brcmf_if *ifp,
|
||||
const struct brcmf_event_msg *evtmsg,
|
||||
void *data);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -2207,7 +2207,7 @@ static void brcmf_pcie_setup(struct devi
|
||||
|
||||
init_waitqueue_head(&devinfo->mbdata_resp_wait);
|
||||
|
||||
- ret = brcmf_attach(&devinfo->pdev->dev);
|
||||
+ ret = brcmf_attach(&devinfo->pdev->dev, true);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -35,9 +35,12 @@
|
||||
#include "core.h"
|
||||
#include "common.h"
|
||||
#include "bcdc.h"
|
||||
+#include "debug.h"
|
||||
+#include "fwil.h"
|
||||
|
||||
#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
|
||||
#define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
|
||||
+#define ULP_HUDI_PROC_DONE_TIME msecs_to_jiffies(2500)
|
||||
|
||||
/* watermark expressed in number of words */
|
||||
#define DEFAULT_F2_WATERMARK 0x8
|
||||
@@ -325,7 +328,16 @@ struct rte_console {
|
||||
|
||||
#define KSO_WAIT_US 50
|
||||
#define MAX_KSO_ATTEMPTS (PMU_MAX_TRANSITION_DLY/KSO_WAIT_US)
|
||||
-#define BRCMF_SDIO_MAX_ACCESS_ERRORS 5
|
||||
+#define BRCMF_SDIO_MAX_ACCESS_ERRORS 20
|
||||
+
|
||||
+static void brcmf_sdio_firmware_callback(struct device *dev, int err,
|
||||
+ struct brcmf_fw_request *fwreq);
|
||||
+static struct brcmf_fw_request *
|
||||
+ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus);
|
||||
+static int brcmf_sdio_f2_ready(struct brcmf_sdio *bus);
|
||||
+static int brcmf_ulp_event_notify(struct brcmf_if *ifp,
|
||||
+ const struct brcmf_event_msg *evtmsg,
|
||||
+ void *data);
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Device console log buffer state */
|
||||
@@ -1105,7 +1117,7 @@ static void brcmf_sdio_get_console_addr(
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
|
||||
-static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus)
|
||||
+static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus, u32 *hmbd)
|
||||
{
|
||||
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
|
||||
struct brcmf_core *core = bus->sdio_core;
|
||||
@@ -1194,6 +1206,9 @@ static u32 brcmf_sdio_hostmail(struct br
|
||||
HMB_DATA_FCDATA_MASK | HMB_DATA_VERSION_MASK))
|
||||
brcmf_err("Unknown mailbox data content: 0x%02x\n",
|
||||
hmb_data);
|
||||
+ /* Populate hmb_data if argument is passed for DS1 check later */
|
||||
+ if (hmbd)
|
||||
+ *hmbd = hmb_data;
|
||||
|
||||
return intstatus;
|
||||
}
|
||||
@@ -2580,6 +2595,182 @@ static int brcmf_sdio_intr_rstatus(struc
|
||||
return ret;
|
||||
}
|
||||
|
||||
+/* This Function is used to retrieve important
|
||||
+ * details from dongle related to ULP mode Mostly
|
||||
+ * values/SHM details that will be vary depending
|
||||
+ * on the firmware branches
|
||||
+ */
|
||||
+static void
|
||||
+brcmf_sdio_ulp_preinit(struct device *dev)
|
||||
+{
|
||||
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||
+ struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
|
||||
+ struct brcmf_if *ifp = bus_if->drvr->iflist[0];
|
||||
+
|
||||
+ brcmf_dbg(ULP, "Enter\n");
|
||||
+
|
||||
+ /* Query ulp_sdioctrl iovar to get the ULP related SHM offsets */
|
||||
+ brcmf_fil_iovar_data_get(ifp, "ulp_sdioctrl",
|
||||
+ &sdiodev->fmac_ulp.ulp_shm_offset,
|
||||
+ sizeof(sdiodev->fmac_ulp.ulp_shm_offset));
|
||||
+
|
||||
+ sdiodev->ulp = false;
|
||||
+
|
||||
+ brcmf_dbg(ULP, "m_ulp_ctrl_sdio[%x] m_ulp_wakeevt_ind [%x]\n",
|
||||
+ M_DS1_CTRL_SDIO(sdiodev->fmac_ulp),
|
||||
+ M_WAKEEVENT_IND(sdiodev->fmac_ulp));
|
||||
+ brcmf_dbg(ULP, "m_ulp_wakeind [%x]\n",
|
||||
+ M_ULP_WAKE_IND(sdiodev->fmac_ulp));
|
||||
+}
|
||||
+
|
||||
+/* Reinitialize ARM because In DS1 mode ARM got off */
|
||||
+static int
|
||||
+brcmf_sdio_ulp_reinit_fw(struct brcmf_sdio *bus)
|
||||
+{
|
||||
+ struct brcmf_sdio_dev *sdiodev = bus->sdiodev;
|
||||
+ struct brcmf_fw_request *fwreq;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ /* After firmware redownload tx/rx seq are reset accordingly
|
||||
+ * these values are reset on FMAC side tx_max is initially set to 4,
|
||||
+ * which later is updated by FW.
|
||||
+ */
|
||||
+ bus->tx_seq = 0;
|
||||
+ bus->rx_seq = 0;
|
||||
+ bus->tx_max = 4;
|
||||
+
|
||||
+ fwreq = brcmf_sdio_prepare_fw_request(bus);
|
||||
+ if (!fwreq)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ err = brcmf_fw_get_firmwares(sdiodev->dev, fwreq,
|
||||
+ brcmf_sdio_firmware_callback);
|
||||
+ if (err != 0) {
|
||||
+ brcmf_err("async firmware request failed: %d\n", err);
|
||||
+ kfree(fwreq);
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+/* Check if device is in DS1 mode and handshake with ULP UCODE */
|
||||
+static bool
|
||||
+brcmf_sdio_ulp_pre_redownload_check(struct brcmf_sdio *bus, u32 hmb_data)
|
||||
+{
|
||||
+ struct brcmf_sdio_dev *sdiod = bus->sdiodev;
|
||||
+ int err = 0;
|
||||
+ u32 value = 0;
|
||||
+ u32 val32, ulp_wake_ind, wowl_wake_ind;
|
||||
+ int reg_addr;
|
||||
+ unsigned long timeout;
|
||||
+ struct brcmf_ulp *fmac_ulp = &bus->sdiodev->fmac_ulp;
|
||||
+ int i = 0;
|
||||
+
|
||||
+ /* If any host mail box data is present, ignore DS1 exit sequence */
|
||||
+ if (hmb_data)
|
||||
+ return false;
|
||||
+ /* Skip if DS1 Exit is already in progress
|
||||
+ * This can happen if firmware download is taking more time
|
||||
+ */
|
||||
+ if (fmac_ulp->ulp_state == FMAC_ULP_TRIGGERED)
|
||||
+ return false;
|
||||
+
|
||||
+ value = brcmf_sdiod_func0_rb(sdiod, SDIO_CCCR_IOEx, &err);
|
||||
+
|
||||
+ if (value == SDIO_FUNC_ENABLE_1) {
|
||||
+ brcmf_dbg(ULP, "GOT THE INTERRUPT FROM UCODE\n");
|
||||
+ sdiod->ulp = true;
|
||||
+ fmac_ulp->ulp_state = FMAC_ULP_TRIGGERED;
|
||||
+ ulp_wake_ind = D11SHM_RDW(sdiod,
|
||||
+ M_ULP_WAKE_IND(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ wowl_wake_ind = D11SHM_RDW(sdiod,
|
||||
+ M_WAKEEVENT_IND(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+
|
||||
+ brcmf_dbg(ULP, "wowl_wake_ind: 0x%08x, ulp_wake_ind: 0x%08x state %s\n",
|
||||
+ wowl_wake_ind, ulp_wake_ind, (fmac_ulp->ulp_state) ?
|
||||
+ "DS1 Exit Triggered" : "IDLE State");
|
||||
+
|
||||
+ if (wowl_wake_ind || ulp_wake_ind) {
|
||||
+ /* RX wake Don't do anything.
|
||||
+ * Just bail out and re-download firmware.
|
||||
+ */
|
||||
+ /* Print out PHY TX error block when bit 9 set */
|
||||
+ if ((ulp_wake_ind & C_DS1_PHY_TXERR) &&
|
||||
+ M_DS1_PHYTX_ERR_BLK(sdiod->fmac_ulp)) {
|
||||
+ brcmf_err("Dump PHY TX Error SHM Locations\n");
|
||||
+ for (i = 0; i < PHYTX_ERR_BLK_SIZE; i++) {
|
||||
+ pr_err("0x%x",
|
||||
+ D11SHM_RDW(sdiod,
|
||||
+ (M_DS1_PHYTX_ERR_BLK(sdiod->fmac_ulp) +
|
||||
+ (i * 2)), &err));
|
||||
+ }
|
||||
+ brcmf_err("\n");
|
||||
+ }
|
||||
+ } else {
|
||||
+ /* TX wake negotiate with MAC */
|
||||
+ brcmf_dbg(ULP, "M_DS1_CTRL_SDIO: 0x%08x\n",
|
||||
+ (u32)D11SHM_RDW(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ &err));
|
||||
+ val32 = D11SHM_RD(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ D11SHM_WR(sdiod, M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ val32, (C_DS1_CTRL_SDIO_DS1_EXIT |
|
||||
+ C_DS1_CTRL_REQ_VALID), &err);
|
||||
+ val32 = D11REG_RD(sdiod, D11_MACCONTROL_REG, &err);
|
||||
+ val32 = val32 | D11_MACCONTROL_REG_WAKE;
|
||||
+ D11REG_WR(sdiod, D11_MACCONTROL_REG, val32, &err);
|
||||
+
|
||||
+ /* Poll for PROC_DONE to be set by ucode */
|
||||
+ value = D11SHM_RDW(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ /* Wait here (polling) for C_DS1_CTRL_PROC_DONE */
|
||||
+ timeout = jiffies + ULP_HUDI_PROC_DONE_TIME;
|
||||
+ while (!(value & C_DS1_CTRL_PROC_DONE)) {
|
||||
+ value = D11SHM_RDW(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ if (time_after(jiffies, timeout))
|
||||
+ break;
|
||||
+ usleep_range(1000, 2000);
|
||||
+ }
|
||||
+ brcmf_dbg(ULP, "M_DS1_CTRL_SDIO: 0x%08x\n",
|
||||
+ (u32)D11SHM_RDW(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp), &err));
|
||||
+ value = D11SHM_RDW(sdiod,
|
||||
+ M_DS1_CTRL_SDIO(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ if (!(value & C_DS1_CTRL_PROC_DONE)) {
|
||||
+ brcmf_err("Timeout Failed to enter DS1 Exit state!\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ulp_wake_ind = D11SHM_RDW(sdiod,
|
||||
+ M_ULP_WAKE_IND(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ wowl_wake_ind = D11SHM_RDW(sdiod,
|
||||
+ M_WAKEEVENT_IND(sdiod->fmac_ulp),
|
||||
+ &err);
|
||||
+ brcmf_dbg(ULP, "wowl_wake_ind: 0x%08x, ulp_wake_ind: 0x%08x\n",
|
||||
+ wowl_wake_ind, ulp_wake_ind);
|
||||
+ reg_addr = CORE_CC_REG(
|
||||
+ brcmf_chip_get_pmu(bus->ci)->base, min_res_mask);
|
||||
+ brcmf_sdiod_writel(sdiod, reg_addr,
|
||||
+ DEFAULT_43012_MIN_RES_MASK, &err);
|
||||
+ if (err)
|
||||
+ brcmf_err("min_res_mask failed\n");
|
||||
+
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
|
||||
{
|
||||
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
|
||||
@@ -2651,8 +2842,11 @@ static void brcmf_sdio_dpc(struct brcmf_
|
||||
|
||||
/* Handle host mailbox indication */
|
||||
if (intstatus & I_HMB_HOST_INT) {
|
||||
+ u32 hmb_data = 0;
|
||||
intstatus &= ~I_HMB_HOST_INT;
|
||||
- intstatus |= brcmf_sdio_hostmail(bus);
|
||||
+ intstatus |= brcmf_sdio_hostmail(bus, &hmb_data);
|
||||
+ if (brcmf_sdio_ulp_pre_redownload_check(bus, hmb_data))
|
||||
+ brcmf_sdio_ulp_reinit_fw(bus);
|
||||
}
|
||||
|
||||
sdio_release_host(bus->sdiodev->func1);
|
||||
@@ -2697,7 +2891,7 @@ static void brcmf_sdio_dpc(struct brcmf_
|
||||
brcmf_sdio_clrintr(bus);
|
||||
|
||||
if (bus->ctrl_frame_stat && (bus->clkstate == CLK_AVAIL) &&
|
||||
- txctl_ok(bus)) {
|
||||
+ txctl_ok(bus) && brcmf_sdio_f2_ready(bus)) {
|
||||
sdio_claim_host(bus->sdiodev->func1);
|
||||
if (bus->ctrl_frame_stat) {
|
||||
err = brcmf_sdio_tx_ctrlframe(bus, bus->ctrl_frame_buf,
|
||||
@@ -3567,6 +3761,10 @@ static int brcmf_sdio_bus_preinit(struct
|
||||
if (err < 0)
|
||||
goto done;
|
||||
|
||||
+ /* initialize SHM address from firmware for DS1 */
|
||||
+ if (!bus->sdiodev->ulp)
|
||||
+ brcmf_sdio_ulp_preinit(dev);
|
||||
+
|
||||
bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
|
||||
if (sdiodev->sg_support) {
|
||||
bus->txglom = false;
|
||||
@@ -4215,7 +4413,7 @@ static void brcmf_sdio_firmware_callback
|
||||
u8 saveclk, bpreq;
|
||||
u8 devctl;
|
||||
|
||||
- brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
||||
+ brcmf_dbg(ULP, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
||||
|
||||
if (err)
|
||||
goto fail;
|
||||
@@ -4392,12 +4590,25 @@ static void brcmf_sdio_firmware_callback
|
||||
}
|
||||
|
||||
/* Attach to the common layer, reserve hdr space */
|
||||
- err = brcmf_attach(sdiod->dev);
|
||||
+ err = brcmf_attach(sdiod->dev, !bus->sdiodev->ulp);
|
||||
if (err != 0) {
|
||||
brcmf_err("brcmf_attach failed\n");
|
||||
goto free;
|
||||
}
|
||||
|
||||
+ /* Register for ULP events */
|
||||
+ if (sdiod->func1->device == SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012)
|
||||
+ brcmf_fweh_register(bus_if->drvr, BRCMF_E_ULP,
|
||||
+ brcmf_ulp_event_notify);
|
||||
+
|
||||
+ if (bus->sdiodev->ulp) {
|
||||
+ /* For ULP, after firmware redownload complete
|
||||
+ * set ULP state to IDLE
|
||||
+ */
|
||||
+ if (bus->sdiodev->fmac_ulp.ulp_state == FMAC_ULP_TRIGGERED)
|
||||
+ bus->sdiodev->fmac_ulp.ulp_state = FMAC_ULP_IDLE;
|
||||
+ }
|
||||
+
|
||||
/* ready */
|
||||
return;
|
||||
|
||||
@@ -4640,3 +4851,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *
|
||||
|
||||
return ret;
|
||||
}
|
||||
+
|
||||
+/* Check F2 Ready bit before sending data to Firmware */
|
||||
+static int
|
||||
+brcmf_sdio_f2_ready(struct brcmf_sdio *bus)
|
||||
+{
|
||||
+ int ret = -1;
|
||||
+ int iordy_status = 0;
|
||||
+
|
||||
+ sdio_claim_host(bus->sdiodev->func1);
|
||||
+ /* Read the status of IOR2 */
|
||||
+ iordy_status = brcmf_sdiod_func0_rb(bus->sdiodev, SDIO_CCCR_IORx, NULL);
|
||||
+
|
||||
+ sdio_release_host(bus->sdiodev->func1);
|
||||
+ ret = iordy_status & SDIO_FUNC_ENABLE_2;
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_ulp_event_notify(struct brcmf_if *ifp,
|
||||
+ const struct brcmf_event_msg *evtmsg,
|
||||
+ void *data)
|
||||
+{
|
||||
+ int err = 0;
|
||||
+ struct brcmf_bus *bus_if = ifp->drvr->bus_if;
|
||||
+ struct brcmf_sdio_dev *sdiodev;
|
||||
+ struct brcmf_sdio *bus;
|
||||
+ struct brcmf_ulp_event *ulp_event = (struct brcmf_ulp_event *)data;
|
||||
+
|
||||
+ sdiodev = bus_if->bus_priv.sdio;
|
||||
+ bus = sdiodev->bus;
|
||||
+
|
||||
+ brcmf_dbg(ULP, "Chip went to DS1 state : action %d\n",
|
||||
+ ulp_event->ulp_dongle_action);
|
||||
+ if (ulp_event->ulp_dongle_action == FMAC_ULP_ENTRY)
|
||||
+ bus->sdiodev->fmac_ulp.ulp_state = FMAC_ULP_ENTRY_RECV;
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -165,6 +165,35 @@ struct brcmf_sdreg {
|
||||
struct brcmf_sdio;
|
||||
struct brcmf_sdiod_freezer;
|
||||
|
||||
+/* ULP SHM Offsets info */
|
||||
+struct ulp_shm_info {
|
||||
+ u32 m_ulp_ctrl_sdio;
|
||||
+ u32 m_ulp_wakeevt_ind;
|
||||
+ u32 m_ulp_wakeind;
|
||||
+ u32 m_ulp_phytxblk;
|
||||
+};
|
||||
+
|
||||
+/* FMAC ULP state machine */
|
||||
+#define FMAC_ULP_IDLE (0)
|
||||
+#define FMAC_ULP_ENTRY_RECV (1)
|
||||
+#define FMAC_ULP_TRIGGERED (2)
|
||||
+
|
||||
+/* BRCMF_E_ULP event data */
|
||||
+#define FMAC_ULP_EVENT_VERSION 1
|
||||
+#define FMAC_ULP_DISABLE_CONSOLE 1 /* Disable console */
|
||||
+#define FMAC_ULP_UCODE_DOWNLOAD 2 /* Download ULP ucode file */
|
||||
+#define FMAC_ULP_ENTRY 3 /* Inform ulp entry to Host */
|
||||
+
|
||||
+struct brcmf_ulp {
|
||||
+ uint ulp_state;
|
||||
+ struct ulp_shm_info ulp_shm_offset;
|
||||
+};
|
||||
+
|
||||
+struct brcmf_ulp_event {
|
||||
+ u16 version;
|
||||
+ u16 ulp_dongle_action;
|
||||
+};
|
||||
+
|
||||
struct brcmf_sdio_dev {
|
||||
struct sdio_func *func1;
|
||||
struct sdio_func *func2;
|
||||
@@ -193,6 +222,8 @@ struct brcmf_sdio_dev {
|
||||
enum brcmf_sdiod_state state;
|
||||
struct brcmf_sdiod_freezer *freezer;
|
||||
const struct firmware *clm_fw;
|
||||
+ struct brcmf_ulp fmac_ulp;
|
||||
+ bool ulp;
|
||||
};
|
||||
|
||||
/* sdio core registers */
|
||||
@@ -367,4 +398,83 @@ void brcmf_sdio_wowl_config(struct devic
|
||||
int brcmf_sdio_sleep(struct brcmf_sdio *bus, bool sleep);
|
||||
void brcmf_sdio_trigger_dpc(struct brcmf_sdio *bus);
|
||||
|
||||
+/* SHM offsets */
|
||||
+#define M_DS1_CTRL_SDIO(ptr) ((ptr).ulp_shm_offset.m_ulp_ctrl_sdio)
|
||||
+#define M_WAKEEVENT_IND(ptr) ((ptr).ulp_shm_offset.m_ulp_wakeevt_ind)
|
||||
+#define M_ULP_WAKE_IND(ptr) ((ptr).ulp_shm_offset.m_ulp_wakeind)
|
||||
+#define M_DS1_PHYTX_ERR_BLK(ptr) ((ptr).ulp_shm_offset.m_ulp_phytxblk)
|
||||
+
|
||||
+#define D11_BASE_ADDR 0x18001000
|
||||
+#define D11_AXI_BASE_ADDR 0xE8000000
|
||||
+#define D11_SHM_BASE_ADDR (D11_AXI_BASE_ADDR + 0x4000)
|
||||
+
|
||||
+#define D11REG_ADDR(offset) (D11_BASE_ADDR + (offset))
|
||||
+#define D11IHR_ADDR(offset) (D11_AXI_BASE_ADDR + 0x400 + (2 * (offset)))
|
||||
+#define D11SHM_ADDR(offset) (D11_SHM_BASE_ADDR + (offset))
|
||||
+
|
||||
+/* MacControl register */
|
||||
+#define D11_MACCONTROL_REG D11REG_ADDR(0x120)
|
||||
+#define D11_MACCONTROL_REG_WAKE 0x4000000
|
||||
+
|
||||
+/* HUDI Sequence SHM bits */
|
||||
+#define C_DS1_CTRL_SDIO_DS1_SLEEP 0x1
|
||||
+#define C_DS1_CTRL_SDIO_MAC_ON 0x2
|
||||
+#define C_DS1_CTRL_SDIO_RADIO_PHY_ON 0x4
|
||||
+#define C_DS1_CTRL_SDIO_DS1_EXIT 0x8
|
||||
+#define C_DS1_CTRL_PROC_DONE 0x100
|
||||
+#define C_DS1_CTRL_REQ_VALID 0x200
|
||||
+
|
||||
+/* M_ULP_WAKEIND bits */
|
||||
+#define C_WATCHDOG_EXPIRY BIT(0)
|
||||
+#define C_FCBS_ERROR BIT(1)
|
||||
+#define C_RETX_FAILURE BIT(2)
|
||||
+#define C_HOST_WAKEUP BIT(3)
|
||||
+#define C_INVALID_FCBS_BLOCK BIT(4)
|
||||
+#define C_HUDI_DS1_EXIT BIT(5)
|
||||
+#define C_LOB_SLEEP BIT(6)
|
||||
+#define C_DS1_PHY_TXERR BIT(9)
|
||||
+#define C_DS1_WAKE_TIMER BIT(10)
|
||||
+
|
||||
+#define PHYTX_ERR_BLK_SIZE 18
|
||||
+#define D11SHM_FIRST2BYTE_MASK 0xFFFF0000
|
||||
+#define D11SHM_SECOND2BYTE_MASK 0x0000FFFF
|
||||
+#define D11SHM_2BYTE_SHIFT 16
|
||||
+
|
||||
+#define D11SHM_RD(sdh, offset, ret) \
|
||||
+ brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret)
|
||||
+
|
||||
+/* SHM Read is motified based on SHM 4 byte alignment as SHM size is 2 bytes and
|
||||
+ * 2 byte is currently not working on FMAC
|
||||
+ * If SHM address is not 4 byte aligned, then right shift by 16
|
||||
+ * otherwise, mask the first two MSB bytes
|
||||
+ * Suppose data in address 7260 is 0x440002 and it is 4 byte aligned
|
||||
+ * Correct SHM value is 0x2 for this SHM offset and next SHM value is 0x44
|
||||
+ */
|
||||
+#define D11SHM_RDW(sdh, offset, ret) \
|
||||
+ ((offset % 4) ? \
|
||||
+ (brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret) \
|
||||
+ >> D11SHM_2BYTE_SHIFT) : \
|
||||
+ (brcmf_sdiod_readl(sdh, D11SHM_ADDR(offset), ret) \
|
||||
+ & D11SHM_SECOND2BYTE_MASK))
|
||||
+
|
||||
+/* SHM is of size 2 bytes, 4 bytes write will overwrite other SHM's
|
||||
+ * First read 4 bytes and then clear the required two bytes based on
|
||||
+ * 4 byte alignment, then update the required value and write the
|
||||
+ * 4 byte value now
|
||||
+ */
|
||||
+#define D11SHM_WR(sdh, offset, val, mask, ret) \
|
||||
+ do { \
|
||||
+ if ((offset) % 4) \
|
||||
+ val = (val & D11SHM_SECOND2BYTE_MASK) | \
|
||||
+ ((mask) << D11SHM_2BYTE_SHIFT); \
|
||||
+ else \
|
||||
+ val = (mask) | (val & D11SHM_FIRST2BYTE_MASK); \
|
||||
+ brcmf_sdiod_writel(sdh, D11SHM_ADDR(offset), val, ret); \
|
||||
+ } while (0)
|
||||
+#define D11REG_WR(sdh, addr, val, ret) \
|
||||
+ brcmf_sdiod_writel(sdh, addr, val, ret)
|
||||
+
|
||||
+#define D11REG_RD(sdh, addr, ret) \
|
||||
+ brcmf_sdiod_readl(sdh, addr, ret)
|
||||
+
|
||||
#endif /* BRCMFMAC_SDIO_H */
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
@@ -1200,7 +1200,7 @@ static void brcmf_usb_probe_phase2(struc
|
||||
goto error;
|
||||
|
||||
/* Attach to the common driver interface */
|
||||
- ret = brcmf_attach(devinfo->dev);
|
||||
+ ret = brcmf_attach(devinfo->dev, true);
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
@@ -1277,7 +1277,7 @@ static int brcmf_usb_probe_cb(struct brc
|
||||
ret = brcmf_alloc(devinfo->dev, devinfo->settings);
|
||||
if (ret)
|
||||
goto fail;
|
||||
- ret = brcmf_attach(devinfo->dev);
|
||||
+ ret = brcmf_attach(devinfo->dev, true);
|
||||
if (ret)
|
||||
goto fail;
|
||||
/* we are done */
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
|
||||
@@ -308,4 +308,6 @@ struct chipcregs {
|
||||
*/
|
||||
#define PMU_MAX_TRANSITION_DLY 15000
|
||||
|
||||
+#define DEFAULT_43012_MIN_RES_MASK 0x0f8bfe77
|
||||
+
|
||||
#endif /* _SBCHIPC_H */
|
||||
@@ -0,0 +1,129 @@
|
||||
From 4c1d4af0ac83705828dd11fded409163a87ea515 Mon Sep 17 00:00:00 2001
|
||||
From: Kurt Lee <kurt.lee@cypress.com>
|
||||
Date: Thu, 20 Aug 2020 03:07:02 -0500
|
||||
Subject: [PATCH] brcmfmac: Fix interoperating DPP and other encryption network
|
||||
access
|
||||
|
||||
1. If firmware supports 4-way handshake offload but not supports DPP
|
||||
4-way offload, when user first connects encryption network, driver will
|
||||
set "sup_wpa 1" to firmware, but it will further result in DPP
|
||||
connection failure since firmware won't send EAPOL frame to host.
|
||||
|
||||
2. Fix DPP AP mode handling action frames.
|
||||
|
||||
3. For some firmware without fwsup support, the join procedure will be
|
||||
skipped due to "sup_wpa" iovar returning not-support. Check the fwsup
|
||||
feature before do such iovar.
|
||||
|
||||
Signed-off-by: Kurt Lee <kurt.lee@cypress.com>
|
||||
Signed-off-by: Double Lo <double.lo@cypress.com>
|
||||
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 67 ++++++++++---------
|
||||
.../broadcom/brcm80211/brcmfmac/p2p.c | 5 ++
|
||||
2 files changed, 42 insertions(+), 30 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2491,43 +2491,50 @@ brcmf_cfg80211_connect(struct wiphy *wip
|
||||
goto done;
|
||||
}
|
||||
|
||||
- if (sme->crypto.psk &&
|
||||
- profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
|
||||
- if (WARN_ON(profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE)) {
|
||||
- err = -EINVAL;
|
||||
- goto done;
|
||||
+ if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FWSUP)) {
|
||||
+ if (sme->crypto.psk) {
|
||||
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
|
||||
+ if (WARN_ON(profile->use_fwsup !=
|
||||
+ BRCMF_PROFILE_FWSUP_NONE)) {
|
||||
+ err = -EINVAL;
|
||||
+ goto done;
|
||||
+ }
|
||||
+ brcmf_dbg(INFO, "using PSK offload\n");
|
||||
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
|
||||
+ }
|
||||
+ } else {
|
||||
+ profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
|
||||
}
|
||||
- brcmf_dbg(INFO, "using PSK offload\n");
|
||||
- profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
|
||||
- }
|
||||
|
||||
- if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
|
||||
- /* enable firmware supplicant for this interface */
|
||||
- err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
|
||||
- if (err < 0) {
|
||||
- bphy_err(drvr, "failed to enable fw supplicant\n");
|
||||
- goto done;
|
||||
+ if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
|
||||
+ /* enable firmware supplicant for this interface */
|
||||
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 1);
|
||||
+ if (err < 0) {
|
||||
+ bphy_err(drvr, "failed to enable fw supplicant\n");
|
||||
+ goto done;
|
||||
+ }
|
||||
+ } else {
|
||||
+ err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 0);
|
||||
}
|
||||
- }
|
||||
|
||||
- if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK)
|
||||
- err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
||||
- BRCMF_WSEC_MAX_PSK_LEN);
|
||||
- else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
|
||||
- /* clean up user-space RSNE */
|
||||
- err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
|
||||
- if (err) {
|
||||
- bphy_err(drvr, "failed to clean up user-space RSNE\n");
|
||||
- goto done;
|
||||
- }
|
||||
- err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
|
||||
- if (!err && sme->crypto.psk)
|
||||
+ if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_PSK) {
|
||||
err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
||||
BRCMF_WSEC_MAX_PSK_LEN);
|
||||
+ } else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
|
||||
+ /* clean up user-space RSNE */
|
||||
+ err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0);
|
||||
+ if (err) {
|
||||
+ bphy_err(drvr, "failed to clean up user-space RSNE\n");
|
||||
+ goto done;
|
||||
+ }
|
||||
+ err = brcmf_fwvid_set_sae_password(ifp, &sme->crypto);
|
||||
+ if (!err && sme->crypto.psk)
|
||||
+ err = brcmf_set_pmk(ifp, sme->crypto.psk,
|
||||
+ BRCMF_WSEC_MAX_PSK_LEN);
|
||||
+ }
|
||||
+ if (err)
|
||||
+ goto done;
|
||||
}
|
||||
- if (err)
|
||||
- goto done;
|
||||
-
|
||||
/* Join with specific BSSID and cached SSID
|
||||
* If SSID is zero join based on BSSID only
|
||||
*/
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
@@ -1281,6 +1281,10 @@ static s32 brcmf_p2p_abort_action_frame(
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
||||
vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
|
||||
+
|
||||
+ if (!vif)
|
||||
+ vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
|
||||
+
|
||||
err = brcmf_fil_bsscfg_data_set(vif->ifp, "actframe_abort", &int_val,
|
||||
sizeof(s32));
|
||||
if (err)
|
||||
@@ -1826,6 +1830,7 @@ bool brcmf_p2p_send_action_frame(struct
|
||||
/* validate channel and p2p ies */
|
||||
if (config_af_params.search_channel &&
|
||||
IS_P2P_SOCIAL_CHANNEL(le32_to_cpu(af_params->channel)) &&
|
||||
+ p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif &&
|
||||
p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->saved_ie.probe_req_ie_len) {
|
||||
afx_hdl = &p2p->afx_hdl;
|
||||
afx_hdl->peer_listen_chan = le32_to_cpu(af_params->channel);
|
||||
@@ -0,0 +1,26 @@
|
||||
From 0ff7f575b657b3fdfbd6902b68a28548208f4d36 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Thu, 8 May 2025 16:55:27 +0100
|
||||
Subject: [PATCH] wifi: brcmfmac: Include modinfo for 43456 CLM blob
|
||||
|
||||
Listing firmware files in the brcmfmac modinfo helps with e.g. initramfs
|
||||
creation.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/6828
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -631,7 +631,7 @@ BRCMF_FW_CLM_DEF(43430A1, "brcmfmac43430
|
||||
BRCMF_FW_DEF(43430B0, "brcmfmac43430b0-sdio");
|
||||
BRCMF_FW_CLM_DEF(43439, "brcmfmac43439-sdio");
|
||||
BRCMF_FW_CLM_DEF(43455, "brcmfmac43455-sdio");
|
||||
-BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
|
||||
+BRCMF_FW_CLM_DEF(43456, "brcmfmac43456-sdio");
|
||||
BRCMF_FW_CLM_DEF(4354, "brcmfmac4354-sdio");
|
||||
BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-sdio");
|
||||
BRCMF_FW_DEF(4359, "brcmfmac4359-sdio");
|
||||
@@ -9,7 +9,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -7986,6 +7986,7 @@ static s32 brcmf_translate_country_code(
|
||||
@@ -7991,6 +7991,7 @@ static s32 brcmf_translate_country_code(
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
static int
|
||||
brcmf_parse_dump_obss(char *buf, struct brcmf_dump_survey *survey)
|
||||
{
|
||||
@@ -8208,6 +8209,7 @@ exit:
|
||||
@@ -8213,6 +8214,7 @@ exit:
|
||||
brcmf_set_mpc(ifp, 1);
|
||||
return err;
|
||||
}
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
|
||||
static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy,
|
||||
struct regulatory_request *req)
|
||||
@@ -8360,8 +8362,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -8379,8 +8381,10 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL_GTK))
|
||||
ops->set_rekey_data = brcmf_cfg80211_set_rekey_data;
|
||||
#endif
|
||||
@@ -43,8 +43,8 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
+compat-$(CPTCFG_KERNEL_5_15) += backport-5.15.o backport-genetlink.o
|
||||
+compat-$(CPTCFG_KERNEL_6_1) += backport-genetlink.o
|
||||
compat-$(CPTCFG_KERNEL_6_4) += backport-6.4.o
|
||||
compat-$(CPTCFG_KERNEL_6_11) += backport-6.11.o
|
||||
|
||||
compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_LIB_ARC4) += lib-crypto-arc4.o
|
||||
--- a/compat/backport-genetlink.c
|
||||
+++ b/compat/backport-genetlink.c
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From 0d47666f48a084363ee54f389bec2865de4934b8 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Berg <benjamin@sipsolutions.net>
|
||||
Date: Wed, 30 Apr 2025 20:25:38 +0200
|
||||
Subject: [PATCH] wifi: mac80211: do not offer a mesh path if forwarding is
|
||||
disabled
|
||||
|
||||
When processing a PREQ the code would always check whether we have a
|
||||
mesh path locally and reply accordingly. However, when forwarding is
|
||||
disabled then we should not reply with this information as we will not
|
||||
forward data packets down that path.
|
||||
|
||||
Move the check for dot11MeshForwarding up in the function and skip the
|
||||
mesh path lookup in that case. In the else block, set forward to false
|
||||
so that the rest of the function becomes a no-op and the
|
||||
dot11MeshForwarding check does not need to be duplicated.
|
||||
|
||||
This explains an effect observed in the Freifunk community where mesh
|
||||
forwarding is disabled. In that case a mesh with three STAs and only bad
|
||||
links in between them, individual STAs would occionally have indirect
|
||||
mpath entries. This should not have happened.
|
||||
|
||||
Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
|
||||
Reviewed-by: Rouven Czerwinski <rouven@czerwinskis.de>
|
||||
---
|
||||
net/mac80211/mesh_hwmp.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/net/mac80211/mesh_hwmp.c
|
||||
+++ b/net/mac80211/mesh_hwmp.c
|
||||
@@ -630,7 +630,7 @@ static void hwmp_preq_frame_process(stru
|
||||
mesh_path_add_gate(mpath);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
- } else {
|
||||
+ } else if (ifmsh->mshcfg.dot11MeshForwarding) {
|
||||
rcu_read_lock();
|
||||
mpath = mesh_path_lookup(sdata, target_addr);
|
||||
if (mpath) {
|
||||
@@ -648,6 +648,8 @@ static void hwmp_preq_frame_process(stru
|
||||
}
|
||||
}
|
||||
rcu_read_unlock();
|
||||
+ } else {
|
||||
+ forward = false;
|
||||
}
|
||||
|
||||
if (reply) {
|
||||
@@ -665,7 +667,7 @@ static void hwmp_preq_frame_process(stru
|
||||
}
|
||||
}
|
||||
|
||||
- if (forward && ifmsh->mshcfg.dot11MeshForwarding) {
|
||||
+ if (forward) {
|
||||
u32 preq_id;
|
||||
u8 hopcount;
|
||||
|
||||
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=r8101
|
||||
PKG_VERSION:=1.039.00
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/rtl8101/releases/download/$(PKG_VERSION)
|
||||
@@ -20,7 +20,7 @@ define KernelPackage/r8101
|
||||
TITLE:=Realtek RTL8101 PCI Fast Ethernet driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libphy
|
||||
FILES:=$(PKG_BUILD_DIR)/src/r8101.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8101)
|
||||
AUTOLOAD:=$(call AutoProbe,r8101,1)
|
||||
PROVIDES:=kmod-r8169
|
||||
endef
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=r8125
|
||||
PKG_VERSION:=9.015.00
|
||||
PKG_VERSION:=9.016.00
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/rtl8125/releases/download/$(PKG_VERSION)
|
||||
PKG_HASH:=7d6906336c3ad960c3e7c0299ad655659d7110bdc933c5b568b7f2536cb8ffc3
|
||||
PKG_HASH:=cd1955dd07d2f5a6faaa210ffc4e8af992421295a32ab6ddcfa759bed9eba922
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_LICENSE:=GPLv2
|
||||
@@ -20,9 +20,10 @@ define KernelPackage/r8125
|
||||
TITLE:=Realtek RTL8125 PCI 2.5 Gigabit Ethernet driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libphy
|
||||
FILES:=$(PKG_BUILD_DIR)/src/r8125.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8125)
|
||||
AUTOLOAD:=$(call AutoProbe,r8125,1)
|
||||
PROVIDES:=kmod-r8169
|
||||
VARIANT:=regular
|
||||
PKG_MAKE_FLAGS += CONFIG_ASPM=n
|
||||
endef
|
||||
|
||||
define KernelPackage/r8125-rss
|
||||
@@ -33,7 +34,9 @@ $(call KernelPackage/r8125)
|
||||
endef
|
||||
|
||||
ifeq ($(BUILD_VARIANT),rss)
|
||||
PKG_MAKE_FLAGS += ENABLE_RSS_SUPPORT=y
|
||||
PKG_MAKE_FLAGS += \
|
||||
ENABLE_MULTIPLE_TX_QUEUE=y \
|
||||
ENABLE_RSS_SUPPORT=y
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
|
||||
--- a/src/r8125.h
|
||||
+++ b/src/r8125.h
|
||||
@@ -1687,6 +1687,9 @@ enum RTL8125_register_content {
|
||||
@@ -1726,6 +1726,9 @@ enum RTL8125_register_content {
|
||||
LinkStatus = 0x02,
|
||||
FullDup = 0x01,
|
||||
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/delay.h>
|
||||
@@ -5023,6 +5024,38 @@ rtl8125_link_down_patch(struct net_devic
|
||||
@@ -5045,6 +5046,38 @@ rtl8125_link_down_patch(struct net_devic
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
static void
|
||||
_rtl8125_check_link_status(struct net_device *dev, unsigned int link_state)
|
||||
{
|
||||
@@ -5035,11 +5068,18 @@ _rtl8125_check_link_status(struct net_de
|
||||
@@ -5057,11 +5090,18 @@ _rtl8125_check_link_status(struct net_de
|
||||
if (link_state == R8125_LINK_STATE_ON) {
|
||||
rtl8125_link_on_patch(dev);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=r8126
|
||||
PKG_VERSION:=10.015.00
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/rtl8126/releases/download/$(PKG_VERSION)
|
||||
@@ -20,7 +20,7 @@ define KernelPackage/r8126
|
||||
TITLE:=Realtek RTL8126 PCI 5 Gigabit Ethernet driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libphy
|
||||
FILES:=$(PKG_BUILD_DIR)/src/r8126.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8126)
|
||||
AUTOLOAD:=$(call AutoProbe,r8126,1)
|
||||
PROVIDES:=kmod-r8169
|
||||
VARIANT:=regular
|
||||
endef
|
||||
@@ -33,7 +33,9 @@ $(call KernelPackage/r8126)
|
||||
endef
|
||||
|
||||
ifeq ($(BUILD_VARIANT),rss)
|
||||
PKG_MAKE_FLAGS += ENABLE_RSS_SUPPORT=y
|
||||
PKG_MAKE_FLAGS += \
|
||||
ENABLE_MULTIPLE_TX_QUEUE=y \
|
||||
ENABLE_RSS_SUPPORT=y
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=r8127
|
||||
PKG_VERSION:=11.014.00
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/rtl8127/releases/download/$(PKG_VERSION)
|
||||
@@ -20,7 +20,7 @@ define KernelPackage/r8127
|
||||
TITLE:=Realtek RTL8127 PCI 10 Gigabit Ethernet driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libphy
|
||||
FILES:=$(PKG_BUILD_DIR)/src/r8127.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8127)
|
||||
AUTOLOAD:=$(call AutoProbe,r8127,1)
|
||||
PROVIDES:=kmod-r8169
|
||||
VARIANT:=regular
|
||||
endef
|
||||
@@ -33,7 +33,9 @@ $(call KernelPackage/r8127)
|
||||
endef
|
||||
|
||||
ifeq ($(BUILD_VARIANT),rss)
|
||||
PKG_MAKE_FLAGS += ENABLE_RSS_SUPPORT=y
|
||||
PKG_MAKE_FLAGS += \
|
||||
ENABLE_MULTIPLE_TX_QUEUE=y \
|
||||
ENABLE_RSS_SUPPORT=y
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=r8168
|
||||
PKG_VERSION:=8.055.00
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/rtl8168/releases/download/$(PKG_VERSION)
|
||||
@@ -20,10 +20,24 @@ define KernelPackage/r8168
|
||||
TITLE:=Realtek RTL8168 PCI Gigabit Ethernet driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libphy
|
||||
FILES:=$(PKG_BUILD_DIR)/src/r8168.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8168)
|
||||
AUTOLOAD:=$(call AutoProbe,r8168,1)
|
||||
PROVIDES:=kmod-r8169
|
||||
VARIANT:=regular
|
||||
endef
|
||||
|
||||
define KernelPackage/r8168-rss
|
||||
$(call KernelPackage/r8168)
|
||||
CONFLICTS:=kmod-r8168
|
||||
TITLE+= (RSS)
|
||||
VARIANT:=rss
|
||||
endef
|
||||
|
||||
ifeq ($(BUILD_VARIANT),rss)
|
||||
PKG_MAKE_FLAGS += \
|
||||
ENABLE_MULTIPLE_TX_QUEUE=y \
|
||||
ENABLE_RSS_SUPPORT=y
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
+$(KERNEL_MAKE) $(PKG_JOBS) \
|
||||
M="$(PKG_BUILD_DIR)/src" \
|
||||
@@ -31,3 +45,4 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,r8168))
|
||||
$(eval $(call KernelPackage,r8168-rss))
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libiconv-full
|
||||
PKG_VERSION:=1.17
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=libiconv-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=@GNU/libiconv
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From e46dee2f581c1167137bcd045e114e96a9f00483 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Haible <bruno@clisp.org>
|
||||
Date: Sun, 29 Jan 2023 20:07:21 +0100
|
||||
Subject: [PATCH] Fix a clang warning "a function declaration without a
|
||||
prototype...".
|
||||
|
||||
* lib/loop_wchar.h (mbrtowc): Don't declare. Drop portability to BeOS.
|
||||
---
|
||||
lib/loop_wchar.h | 3 +--
|
||||
1 file changed, 1 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/loop_wchar.h b/lib/loop_wchar.h
|
||||
index b3edc2925c60..9eb508e81a4f 100644
|
||||
--- a/lib/loop_wchar.h
|
||||
+++ b/lib/loop_wchar.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2011 Free Software Foundation, Inc.
|
||||
+ * Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2011, 2023 Free Software Foundation, Inc.
|
||||
* This file is part of the GNU LIBICONV Library.
|
||||
*
|
||||
* The GNU LIBICONV Library is free software; you can redistribute it
|
||||
@@ -36,7 +36,6 @@
|
||||
# include <wchar.h>
|
||||
# define BUF_SIZE 64 /* assume MB_LEN_MAX <= 64 */
|
||||
/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
|
||||
- extern size_t mbrtowc ();
|
||||
# ifdef mbstate_t
|
||||
# define mbrtowc(pwc, s, n, ps) (mbrtowc)(pwc, s, n, 0)
|
||||
# define mbsinit(ps) 1
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@@ -5,10 +5,11 @@ PKG_RELEASE=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
|
||||
PKG_MIRROR_HASH:=a4f671d10840fd8487394335636051a6df5edf6d8854af4fcb834a590efb240a
|
||||
PKG_SOURCE_DATE:=2024-03-29
|
||||
PKG_SOURCE_VERSION:=eb9bcb64185ac155c02cc1a604692c4b00368324
|
||||
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
|
||||
PKG_MIRROR_HASH:=e10144cfae155cf2ae5fdf167bd575dbf34c7751ddb112554b6962003f989b36
|
||||
PKG_SOURCE_DATE:=2024-12-19
|
||||
PKG_SOURCE_DATE_ABI:=2024-03-29
|
||||
PKG_SOURCE_VERSION:=3868f47c8f6c6570e62a3cdf8a7f26ffb1a67e6a
|
||||
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE_ABI))
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libxml2
|
||||
PKG_VERSION:=2.13.4
|
||||
PKG_VERSION:=2.13.6
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNOME/libxml2/$(basename $(PKG_VERSION))
|
||||
PKG_HASH:=65d042e1c8010243e617efb02afda20b85c2160acdbfbcb5b26b80cec6515650
|
||||
PKG_HASH:=f453480307524968f7a04ec65e64f2a83a825973bcd260a2e7691be82ae70c96
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@@ -51,7 +51,7 @@ define Package/udebug-cli
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=OpenWrt debug service CLI
|
||||
DEPENDS:=+udebugd +ucode-mod-udebug
|
||||
DEPENDS:=+udebugd +ucode-mod-udebug +ucode-mod-uloop +ucode-mod-ubus
|
||||
endef
|
||||
|
||||
define Package/libudebug/install
|
||||
|
||||
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
PKG_SOURCE_DATE:=2024-12-17
|
||||
PKG_SOURCE_VERSION:=ea01ed41f3212ecbe000422f3c122a01b93fe874
|
||||
PKG_MIRROR_HASH:=dbaad26c1f9b15d0caff6ccdf80d85b34d96bda72cbd2b1dc188a04136d96c28
|
||||
PKG_SOURCE_DATE:=2025-05-23
|
||||
PKG_SOURCE_VERSION:=7901e66c5f273bceee8981bc8a0c8b0e60945f60
|
||||
PKG_MIRROR_HASH:=8b85ec64e446ae065b1466c520b2d3aae329b6167221e425af903777278f557e
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@@ -12,7 +12,7 @@ MP_CONFIG_INT="mesh_retry_timeout mesh_confirm_timeout mesh_holding_timeout mesh
|
||||
mesh_hwmp_rann_interval mesh_gate_announcements mesh_sync_offset_max_neighor
|
||||
mesh_rssi_threshold mesh_hwmp_active_path_to_root_timeout mesh_hwmp_root_interval
|
||||
mesh_hwmp_confirmation_interval mesh_awake_window mesh_plink_timeout"
|
||||
MP_CONFIG_BOOL="mesh_auto_open_plinks mesh_fwding"
|
||||
MP_CONFIG_BOOL="mesh_auto_open_plinks mesh_fwding mesh_nolearn"
|
||||
MP_CONFIG_STRING="mesh_power_mode"
|
||||
|
||||
wdev_tool() {
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "dfs.h"
|
||||
#include "acs.h"
|
||||
#include "ieee802_11_auth.h"
|
||||
#include "neighbor_db.h"
|
||||
#include <libubox/uloop.h>
|
||||
|
||||
static uc_resource_type_t *global_type, *bss_type, *iface_type;
|
||||
@@ -258,7 +259,11 @@ uc_hostapd_bss_set_config(uc_vm_t *vm, size_t nargs)
|
||||
hapd->conf = conf->bss[idx];
|
||||
conf->bss[idx] = old_bss;
|
||||
|
||||
if (hapd == iface->bss[0])
|
||||
memcpy(hapd->own_addr, hapd->conf->bssid, ETH_ALEN);
|
||||
|
||||
hostapd_setup_bss(hapd, hapd == iface->bss[0], true);
|
||||
hostapd_neighbor_set_own_report(hapd);
|
||||
hostapd_ucode_update_interfaces();
|
||||
hostapd_owe_update_trans(iface);
|
||||
|
||||
@@ -384,6 +389,7 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs)
|
||||
iface->conf->bss[iface->conf->num_bss] = bss;
|
||||
conf->bss[idx] = NULL;
|
||||
ret = hostapd_ucode_bss_get_uval(hapd);
|
||||
hostapd_neighbor_set_own_report(hapd);
|
||||
hostapd_ucode_update_interfaces();
|
||||
hostapd_owe_update_trans(iface);
|
||||
goto out;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2008-2015 OpenWrt.org
|
||||
# shellcheck disable=1091,2034,3037,3043,3045
|
||||
# shellcheck disable=1091,2034,3037,3043,3045,3057
|
||||
|
||||
START=90
|
||||
STOP=01
|
||||
@@ -24,15 +24,63 @@ LLDPD_RESTART_HASH=${LLDPD_RUN}/lldpd.restart_hash
|
||||
|
||||
. "$IPKG_INSTROOT/lib/functions/network.sh"
|
||||
|
||||
# Load release info once for all 'find_*' functions
|
||||
[ -s /etc/os-release ] && . /etc/os-release
|
||||
|
||||
# Helper function to truncate output to 31 characters
|
||||
truncate_output() {
|
||||
# Some devices have trouble decoding inventory TLV strings > 31 chars
|
||||
# lldpd truncates inventory TLV to a total TLV length of 36 (of which string = 32)
|
||||
echo "${1:0:31}"
|
||||
}
|
||||
|
||||
find_release_info()
|
||||
{
|
||||
[ -s /etc/os-release ] && . /etc/os-release
|
||||
[ -z "$PRETTY_NAME" ] && [ -s /etc/openwrt_version ] && \
|
||||
PRETTY_NAME="$(cat /etc/openwrt_version)"
|
||||
|
||||
echo "${PRETTY_NAME:-Unknown OpenWrt release} @ $(cat /proc/sys/kernel/hostname)"
|
||||
}
|
||||
|
||||
find_hardware_revision()
|
||||
{
|
||||
echo "${OPENWRT_DEVICE_REVISION:-Unknown hardware revision}"
|
||||
}
|
||||
|
||||
find_firmware_info()
|
||||
{
|
||||
echo "${PRETTY_NAME:-Unknown firmware release}"
|
||||
}
|
||||
|
||||
find_software_revision()
|
||||
{
|
||||
echo "${BUILD_ID:-Unknown software revision}"
|
||||
}
|
||||
|
||||
# Helper function to extract JSON values using jsonfilter
|
||||
extract_json_field() {
|
||||
local _path="$1"
|
||||
jsonfilter -q -i /etc/board.json -e "$_path" 2>/dev/null
|
||||
}
|
||||
|
||||
find_manufacturer_info()
|
||||
{
|
||||
local _id
|
||||
# extract the model->id field, e.g.: "id": "glinet,gl-mt6000",
|
||||
_id=$(extract_json_field '@.model.id')
|
||||
# stash text up to first comma
|
||||
_id="${_id%%,*}"
|
||||
echo "${_id:-Unknown manufacturer}"
|
||||
}
|
||||
|
||||
find_model_info()
|
||||
{
|
||||
local _name
|
||||
# extract the model->name field, e.g.: "name": "GL.iNet GL-MT6000"
|
||||
_name=$(extract_json_field '@.model.name')
|
||||
echo "${_name:-Unknown model name}"
|
||||
}
|
||||
|
||||
get_config_restart_hash() {
|
||||
local var="$1"
|
||||
local _string _hash v
|
||||
@@ -120,6 +168,48 @@ write_lldpd_conf()
|
||||
config_load 'lldpd'
|
||||
config_get lldp_description 'config' 'lldp_description' "$(find_release_info)"
|
||||
|
||||
# Check the 'do not send inventory' flag
|
||||
local lldpmed_no_inventory
|
||||
config_get_bool lldpmed_no_inventory 'config' 'lldpmed_no_inventory' 0
|
||||
|
||||
if [ "$lldpmed_no_inventory" = 0 ]; then
|
||||
# lldpmed_no_inventory=1 ('-i' in start_service()) prevents these from being sent
|
||||
# TIA TR-41 TLV 127 subtype 0x05
|
||||
local lldp_med_inv_hardware_revision
|
||||
config_get lldp_med_inv_hardware_revision 'config' 'lldp_med_inv_hardware_revision' "$(find_hardware_revision)"
|
||||
lldp_med_inv_hardware_revision=$(truncate_output "$lldp_med_inv_hardware_revision")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x06
|
||||
local lldp_med_inv_firmware_revision
|
||||
config_get lldp_med_inv_firmware_revision 'config' 'lldp_med_inv_firmware_revision' "$(find_firmware_info)"
|
||||
lldp_med_inv_firmware_revision=$(truncate_output "$lldp_med_inv_firmware_revision")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x07
|
||||
local lldp_med_inv_software_revision
|
||||
config_get lldp_med_inv_software_revision 'config' 'lldp_med_inv_software_revision' "$(find_software_revision)"
|
||||
lldp_med_inv_software_revision=$(truncate_output "$lldp_med_inv_software_revision")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x08
|
||||
local lldp_med_inv_serial_number
|
||||
config_get lldp_med_inv_serial_number 'config' 'lldp_med_inv_serial_number'
|
||||
lldp_med_inv_serial_number=$(truncate_output "$lldp_med_inv_serial_number")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x09
|
||||
local lldp_med_inv_manufacturer_name
|
||||
config_get lldp_med_inv_manufacturer_name 'config' 'lldp_med_inv_manufacturer_name' "$(find_manufacturer_info)"
|
||||
lldp_med_inv_manufacturer_name=$(truncate_output "$lldp_med_inv_manufacturer_name")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x0a
|
||||
local lldp_med_inv_model_name
|
||||
config_get lldp_med_inv_model_name 'config' 'lldp_med_inv_model_name' "$(find_model_info)"
|
||||
lldp_med_inv_model_name=$(truncate_output "$lldp_med_inv_model_name")
|
||||
|
||||
# TIA TR-41 TLV 127 subtype 0x0b
|
||||
local lldp_med_inv_asset_id
|
||||
config_get lldp_med_inv_asset_id 'config' 'lldp_med_inv_asset_id'
|
||||
lldp_med_inv_asset_id=$(truncate_output "$lldp_med_inv_asset_id")
|
||||
fi
|
||||
|
||||
local lldp_hostname
|
||||
config_get lldp_hostname 'config' 'lldp_hostname' "$(cat /proc/sys/kernel/hostname)"
|
||||
|
||||
@@ -182,6 +272,17 @@ write_lldpd_conf()
|
||||
[ -n "$lldp_mgmt_ip" ] && echo "configure system ip management pattern" "\"$lldp_mgmt_ip\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_syscapabilities" ] && echo "configure system capabilities enabled $lldp_syscapabilities" >> "$LLDPD_CONF"
|
||||
|
||||
if [ "$lldpmed_no_inventory" = 0 ]; then
|
||||
# Hardware inventory info
|
||||
[ -n "$lldp_med_inv_hardware_revision" ] && echo "configure inventory hardware-revision \"$lldp_med_inv_hardware_revision\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_firmware_revision" ] && echo "configure inventory firmware-revision \"$lldp_med_inv_firmware_revision\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_software_revision" ] && echo "configure inventory software-revision \"$lldp_med_inv_software_revision\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_serial_number" ] && echo "configure inventory serial-number \"$lldp_med_inv_serial_number\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_manufacturer_name" ] && echo "configure inventory manufacturer \"$lldp_med_inv_manufacturer_name\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_model_name" ] && echo "configure inventory model \"$lldp_med_inv_model_name\"" >> "$LLDPD_CONF"
|
||||
[ -n "$lldp_med_inv_asset_id" ] && echo "configure inventory asset \"$lldp_med_inv_asset_id\"" >> "$LLDPD_CONF"
|
||||
fi
|
||||
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ] && [ "$lldpmed_fast_start" -gt 0 ]; then
|
||||
if [ "$lldpmed_fast_start_tx_interval" -gt 0 ]; then
|
||||
echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"
|
||||
@@ -401,6 +502,14 @@ reload_service() {
|
||||
unconfigure system hostname
|
||||
unconfigure system ip management pattern
|
||||
unconfigure system platform
|
||||
# Hardware inventory info
|
||||
unconfigure inventory hardware-revision
|
||||
unconfigure inventory firmware-revision
|
||||
unconfigure inventory software-revision
|
||||
unconfigure inventory serial-number
|
||||
unconfigure inventory manufacturer
|
||||
unconfigure inventory model
|
||||
unconfigure inventory asset
|
||||
EOF
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
|
||||
$LLDPCLI -u "$LLDPSOCKET" >/dev/null 2>&1 <<-EOF
|
||||
|
||||
@@ -34,17 +34,20 @@ proto_qmi_init_config() {
|
||||
|
||||
proto_qmi_setup() {
|
||||
local interface="$1"
|
||||
local dataformat connstat plmn_mode mcc mnc
|
||||
local device apn v6apn auth username password pincode delay modes pdptype
|
||||
local profile v6profile dhcp dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS
|
||||
local ip4table ip6table
|
||||
local cid_4 pdh_4 cid_6 pdh_6
|
||||
local ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6
|
||||
|
||||
local connstat dataformat mcc mnc plmn_mode
|
||||
local cid_4 cid_6 pdh_4 pdh_6
|
||||
local dns1_6 dns2_6 gateway_6 ip_6 ip_prefix_length
|
||||
local profile_pdptype
|
||||
|
||||
json_get_vars device apn v6apn auth username password pincode delay modes
|
||||
json_get_vars pdptype profile v6profile dhcp dhcpv6 sourcefilter delegate autoconnect plmn ip4table
|
||||
json_get_vars ip6table timeout mtu $PROTO_DEFAULT_OPTIONS
|
||||
local delegate ip4table ip6table mtu sourcefilter $PROTO_DEFAULT_OPTIONS
|
||||
json_get_vars delegate ip4table ip6table mtu sourcefilter $PROTO_DEFAULT_OPTIONS
|
||||
|
||||
local apn auth delay device modes password pdptype pincode username v6apn
|
||||
json_get_vars apn auth delay device modes password pdptype pincode username v6apn
|
||||
|
||||
local profile v6profile dhcp dhcpv6 autoconnect plmn timeout
|
||||
json_get_vars profile v6profile dhcp dhcpv6 autoconnect plmn timeout
|
||||
|
||||
[ "$timeout" = "" ] && timeout="10"
|
||||
|
||||
@@ -104,7 +107,7 @@ proto_qmi_setup() {
|
||||
# Check if UIM application is stuck in illegal state
|
||||
local uim_state_timeout=0
|
||||
while true; do
|
||||
json_load "$(uqmi -s -d "$device" -t 1000 --uim-get-sim-state)"
|
||||
json_load "$(uqmi -s -d "$device" -t 2000 --uim-get-sim-state)"
|
||||
json_get_var card_application_state card_application_state
|
||||
|
||||
# SIM card is either completely absent or state is labeled as illegal
|
||||
@@ -119,7 +122,7 @@ proto_qmi_setup() {
|
||||
|
||||
if [ "$uim_state_timeout" -lt "$timeout" ] || [ "$timeout" = "0" ]; then
|
||||
let uim_state_timeout++
|
||||
sleep 1
|
||||
sleep 5
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubus.git
|
||||
PKG_SOURCE_DATE:=2025-01-02
|
||||
PKG_SOURCE_VERSION:=afa57cce0aff82f4a7a0e509d4387ebc23dd3be7
|
||||
PKG_MIRROR_HASH:=a0b3c1961f5f49d31c34a44576ce44538c3ee97bfce97f86f732d7ecc1df9798
|
||||
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
|
||||
PKG_SOURCE_DATE:=2025-05-16
|
||||
PKG_SOURCE_DATE_ABI:=2025-01-02
|
||||
PKG_SOURCE_VERSION:=88e6325092bf1d1cfa877cd220670fa7cc2fad03
|
||||
PKG_MIRROR_HASH:=8af913d18c9f50cabfd3d32ce3462028ecf469d5e649ccf7f642d9d6bd6dc695
|
||||
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE_ABI))
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_LICENSE:=LGPL-2.1
|
||||
|
||||
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/jsonpath.git
|
||||
PKG_SOURCE_DATE:=2024-01-23
|
||||
PKG_SOURCE_VERSION:=594cfa86469c005972ba750614f5b3f1af84d0f6
|
||||
PKG_MIRROR_HASH:=2f455f04fbfcdb4c81cccd23475b47395f847db44aa4bd9a1007b9aa0ab7fd19
|
||||
PKG_SOURCE_DATE:=2025-04-18
|
||||
PKG_SOURCE_VERSION:=8a86fb78235b5d7925b762b7b0934517890cc034
|
||||
PKG_MIRROR_HASH:=06b763387d00faae0e62af68626588ff2b8f12e0e6821950ae5422033df32757
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||
PKG_SOURCE_DATE:=2025-02-10
|
||||
PKG_SOURCE_VERSION:=a8a11aea0c093d669bb3c45f604dab3c291c8d25
|
||||
PKG_MIRROR_HASH:=e08c36818a72eb2953b56300207d1fb7a852ada33df36f63a495ad35ca21b88e
|
||||
PKG_SOURCE_DATE:=2025-05-11
|
||||
PKG_SOURCE_VERSION:=d5b3a9dc1091dd28cf6f0f60cd34fc322ef27717
|
||||
PKG_MIRROR_HASH:=cd8af9d5ac28e2530b56015a3f2fcf6f36062546cac8b23a5f7b75b367209b54
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 9 May 2025 11:57:57 +0200
|
||||
Subject: [PATCH] ubus: fix double registry clear on disconnect
|
||||
|
||||
Set c->registry_index to -1 in order to ensure that the resource free path
|
||||
does not clobber registry items of unrelated connections.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/lib/ubus.c
|
||||
+++ b/lib/ubus.c
|
||||
@@ -2375,8 +2375,11 @@ uc_ubus_channel_disconnect_cb(struct ubu
|
||||
c->ctx.sock.fd = -1;
|
||||
}
|
||||
|
||||
- if (c->registry_index >= 0)
|
||||
- connection_reg_clear(c->vm, c->registry_index);
|
||||
+ if (c->registry_index >= 0) {
|
||||
+ int idx = c->registry_index;
|
||||
+ c->registry_index = -1;
|
||||
+ connection_reg_clear(c->vm, idx);
|
||||
+ }
|
||||
}
|
||||
|
||||
static uc_value_t *
|
||||
@@ -0,0 +1,27 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 12 May 2025 12:43:44 +0200
|
||||
Subject: [PATCH] ubus: fix use-after-free on deferred request reply() method
|
||||
|
||||
Hold a reference to the defer resource as long as it is still needed
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/lib/ubus.c
|
||||
+++ b/lib/ubus.c
|
||||
@@ -636,6 +636,7 @@ uc_ubus_call_user_cb(uc_ubus_deferred_t
|
||||
uc_value_t *this, *func;
|
||||
|
||||
request_reg_get(defer->vm, defer->registry_index, &this, &func, NULL, NULL);
|
||||
+ ucv_get(this);
|
||||
|
||||
if (ucv_is_callable(func)) {
|
||||
uc_vm_stack_push(defer->vm, ucv_get(this));
|
||||
@@ -648,6 +649,7 @@ uc_ubus_call_user_cb(uc_ubus_deferred_t
|
||||
}
|
||||
|
||||
request_reg_clear(defer->vm, defer->registry_index);
|
||||
+ ucv_put(this);
|
||||
}
|
||||
|
||||
static void
|
||||
84
scripts/make-index-json.py
Executable file
84
scripts/make-index-json.py
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Parse the native package index files into a json file for use by downstream
|
||||
tools. See:
|
||||
|
||||
https://github.com/openwrt/openwrt/commit/218ce40cd738f3373438aab82467807a8707fb9c
|
||||
|
||||
The "version 1" index.json contained ABI-versioned package names, making the
|
||||
unusable by the ASU server. The version 2 format contains package names that
|
||||
have been stripped of their ABI version.
|
||||
"""
|
||||
|
||||
import email.parser
|
||||
import json
|
||||
|
||||
|
||||
def parse_args():
|
||||
from argparse import ArgumentParser
|
||||
|
||||
source_format = "apk", "opkg"
|
||||
|
||||
parser = ArgumentParser()
|
||||
# fmt: off
|
||||
parser.add_argument("-a", "--architecture", required=True,
|
||||
help="Required device architecture: like 'x86_64' or 'aarch64_generic'")
|
||||
parser.add_argument("-f", "--source-format", required=True, choices=source_format,
|
||||
help="Required source format of input: 'apk' or 'opkg'")
|
||||
parser.add_argument(dest="source",
|
||||
help="File name for input, '-' for stdin")
|
||||
# fmt: on
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
|
||||
|
||||
def parse_apk(text: str) -> dict:
|
||||
packages: dict = {}
|
||||
|
||||
data = json.loads(text)
|
||||
for package in data.get("packages", []):
|
||||
package_name: str = package["name"]
|
||||
|
||||
for tag in package.get("tags", []):
|
||||
if tag.startswith("openwrt:abiversion="):
|
||||
package_abi: str = tag.split("=")[-1]
|
||||
package_name = package_name.removesuffix(package_abi)
|
||||
break
|
||||
|
||||
packages[package_name] = package["version"]
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
def parse_opkg(text: str) -> dict:
|
||||
packages: dict = {}
|
||||
|
||||
parser: email.parser.Parser = email.parser.Parser()
|
||||
chunks: list[str] = text.strip().split("\n\n")
|
||||
for chunk in chunks:
|
||||
package: dict = parser.parsestr(chunk, headersonly=True)
|
||||
package_name: str = package["Package"]
|
||||
if package_abi := package.get("ABIVersion"):
|
||||
package_name = package_name.removesuffix(package_abi)
|
||||
|
||||
packages[package_name] = package["Version"]
|
||||
|
||||
return packages
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
args = parse_args()
|
||||
|
||||
input = sys.stdin if args.source == "-" else open(args.source, "r")
|
||||
with input:
|
||||
text: str = input.read()
|
||||
|
||||
packages = parse_apk(text) if args.source_format == "apk" else parse_opkg(text)
|
||||
index = {
|
||||
"version": 2,
|
||||
"architecture": args.architecture,
|
||||
"packages": packages,
|
||||
}
|
||||
print(json.dumps(index, indent=2))
|
||||
@@ -433,7 +433,7 @@ sub gen_profile_mk() {
|
||||
my @targets = parse_target_metadata($file);
|
||||
foreach my $cur (@targets) {
|
||||
next unless $cur->{id} eq $target;
|
||||
my @profile_ids_unique = do { my %seen; grep { !$seen{$_}++} map { $_->{id} } @{$cur->{profiles}}};
|
||||
my @profile_ids_unique = do { my %seen; grep { !$seen{$_}++} map { $_->{id} } grep { $_->{default} !~ /^n/ } @{$cur->{profiles}}};
|
||||
print "PROFILE_NAMES = ".join(" ", @profile_ids_unique)."\n";
|
||||
foreach my $profile (@{$cur->{profiles}}) {
|
||||
print $profile->{id}.'_NAME:='.$profile->{name}."\n";
|
||||
|
||||
@@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Disable forwarding by default on all ports */
|
||||
mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
|
||||
@@ -2550,8 +2553,10 @@ mt7531_setup_common(struct dsa_switch *d
|
||||
@@ -2553,8 +2556,10 @@ mt7531_setup_common(struct dsa_switch *d
|
||||
/* Clear link settings and enable force mode to force link down
|
||||
* on all ports until they're enabled later.
|
||||
*/
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -16870,6 +16870,13 @@ F: drivers/pinctrl/
|
||||
@@ -16871,6 +16871,13 @@ F: drivers/pinctrl/
|
||||
F: include/dt-bindings/pinctrl/
|
||||
F: include/linux/pinctrl/
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&precal_art_5000>, <&macaddr_info_8 (-1)>;
|
||||
nvmem-cell-names = "pre-calibration", "mac-address";
|
||||
qcom,ath10k-calibration-variant = "TP-Link-Archer-c6-v2";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ define Device/tplink_archer-c6-v2
|
||||
DEVICE_MODEL := Archer C6
|
||||
DEVICE_VARIANT := v2 (EU/RU/JP)
|
||||
TPLINK_BOARD_ID := ARCHER-C6-V2
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct -ath10k-board-qca9888 ipq-wifi-tplink_archer-c6-v2
|
||||
endef
|
||||
TARGET_DEVICES += tplink_archer-c6-v2
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
|
||||
--- a/drivers/of/irq.c
|
||||
+++ b/drivers/of/irq.c
|
||||
@@ -89,6 +89,8 @@ EXPORT_SYMBOL_GPL(of_irq_find_parent);
|
||||
@@ -94,6 +94,8 @@ EXPORT_SYMBOL_GPL(of_irq_find_parent);
|
||||
* drawing board.
|
||||
*/
|
||||
static const char * const of_irq_imap_abusers[] = {
|
||||
|
||||
@@ -323,7 +323,7 @@ SVN-Revision: 35130
|
||||
SKB_DROP_REASON_IP_INHDR);
|
||||
--- a/include/linux/types.h
|
||||
+++ b/include/linux/types.h
|
||||
@@ -244,5 +244,11 @@ typedef void (*swap_func_t)(void *a, voi
|
||||
@@ -245,5 +245,11 @@ typedef void (*swap_func_t)(void *a, voi
|
||||
typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv);
|
||||
typedef int (*cmp_func_t)(const void *a, const void *b);
|
||||
|
||||
@@ -751,7 +751,7 @@ SVN-Revision: 35130
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4268,14 +4268,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4276,14 +4276,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ raspberrypi,3-model-b-plus |\
|
||||
raspberrypi,400 |\
|
||||
raspberrypi,4-compute-module |\
|
||||
raspberrypi,4-model-b |\
|
||||
raspberrypi,500 |\
|
||||
raspberrypi,5-compute-module |\
|
||||
raspberrypi,5-model-b |\
|
||||
raspberrypi,model-b |\
|
||||
raspberrypi,model-b-plus |\
|
||||
|
||||
@@ -12,6 +12,8 @@ set_preinit_iface() {
|
||||
raspberrypi,400 |\
|
||||
raspberrypi,4-compute-module |\
|
||||
raspberrypi,4-model-b |\
|
||||
raspberrypi,500 |\
|
||||
raspberrypi,5-compute-module |\
|
||||
raspberrypi,5-model-b |\
|
||||
raspberrypi,model-b |\
|
||||
raspberrypi,model-b-plus |\
|
||||
|
||||
@@ -249,11 +249,11 @@ CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_BCM2835 is not set
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
# CONFIG_MMC_BCM2835_SDHOST is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_HSQ=y
|
||||
|
||||
@@ -312,11 +312,11 @@ CONFIG_MICROCHIP_PHY=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_BCM2835 is not set
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
# CONFIG_MMC_BCM2835_SDHOST is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_HSQ=y
|
||||
|
||||
@@ -310,11 +310,11 @@ CONFIG_MICROCHIP_PHY=y
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_BCM2835 is not set
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
# CONFIG_MMC_BCM2835_SDHOST is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_HSQ=y
|
||||
|
||||
@@ -313,11 +313,11 @@ CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_BCM2835 is not set
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
# CONFIG_MMC_BCM2835_SDHOST is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_HSQ=y
|
||||
|
||||
@@ -320,13 +320,8 @@ CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_IPROC_RNG200=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_BCM2708 is not set
|
||||
CONFIG_I2C_BCM2835=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_BRCMSTB=y
|
||||
CONFIG_I2C_DESIGNWARE_CORE=y
|
||||
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_INPUT=y
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
@@ -391,11 +386,11 @@ CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MICROCHIP_PHY=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_MMC_BCM2835 is not set
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
# CONFIG_MMC_BCM2835_SDHOST is not set
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_CQHCI=y
|
||||
|
||||
@@ -88,7 +88,9 @@ define Device/rpi
|
||||
DEVICE_PACKAGES := \
|
||||
cypress-firmware-43430-sdio \
|
||||
brcmfmac-nvram-43430-sdio \
|
||||
kmod-brcmfmac wpad-basic-mbedtls
|
||||
kmod-brcmfmac wpad-basic-mbedtls \
|
||||
kmod-i2c-bcm2835 kmod-spi-bcm2835 \
|
||||
kmod-spi-bcm2835-aux
|
||||
endef
|
||||
ifeq ($(SUBTARGET),bcm2708)
|
||||
TARGET_DEVICES += rpi
|
||||
@@ -127,7 +129,9 @@ define Device/rpi-2
|
||||
brcmfmac-nvram-43430-sdio \
|
||||
cypress-firmware-43455-sdio \
|
||||
brcmfmac-nvram-43455-sdio \
|
||||
kmod-brcmfmac wpad-basic-mbedtls
|
||||
kmod-brcmfmac wpad-basic-mbedtls \
|
||||
kmod-i2c-bcm2835 kmod-spi-bcm2835 \
|
||||
kmod-spi-bcm2835-aux
|
||||
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip | append-metadata
|
||||
IMAGE/factory.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip
|
||||
endef
|
||||
@@ -161,7 +165,9 @@ define Device/rpi-3
|
||||
brcmfmac-nvram-43430-sdio \
|
||||
cypress-firmware-43455-sdio \
|
||||
brcmfmac-nvram-43455-sdio \
|
||||
kmod-brcmfmac wpad-basic-mbedtls
|
||||
kmod-brcmfmac wpad-basic-mbedtls \
|
||||
kmod-i2c-bcm2835 kmod-spi-bcm2835 \
|
||||
kmod-spi-bcm2835-aux
|
||||
endef
|
||||
ifeq ($(SUBTARGET),bcm2710)
|
||||
TARGET_DEVICES += rpi-3
|
||||
@@ -183,6 +189,9 @@ define Device/rpi-4
|
||||
cypress-firmware-43455-sdio \
|
||||
brcmfmac-nvram-43455-sdio \
|
||||
kmod-brcmfmac wpad-basic-mbedtls \
|
||||
kmod-i2c-bcm2835 kmod-spi-bcm2835 \
|
||||
kmod-spi-bcm2835-aux \
|
||||
kmod-i2c-brcmstb \
|
||||
kmod-usb-net-lan78xx \
|
||||
kmod-r8169
|
||||
IMAGE/sysupgrade.img.gz := boot-common | boot-2711 | sdcard-img | gzip | append-metadata
|
||||
@@ -193,14 +202,26 @@ ifeq ($(SUBTARGET),bcm2711)
|
||||
endif
|
||||
|
||||
define Device/rpi-5
|
||||
DEVICE_MODEL := 5
|
||||
DEVICE_MODEL := 5/500/CM5
|
||||
KERNEL_IMG := kernel_2712.img
|
||||
DEVICE_DTS := broadcom/bcm2712-rpi-5-b
|
||||
SUPPORTED_DEVICES := raspberrypi,5-model-b
|
||||
DEVICE_DTS := \
|
||||
broadcom/bcm2712-rpi-5-b \
|
||||
broadcom/bcm2712-rpi-cm5-cm4io \
|
||||
broadcom/bcm2712-rpi-cm5-cm5io \
|
||||
broadcom/bcm2712-rpi-cm5l-cm4io \
|
||||
broadcom/bcm2712-rpi-cm5l-cm5io \
|
||||
broadcom/bcm2712d0-rpi-5-b
|
||||
SUPPORTED_DEVICES := \
|
||||
raspberrypi,500 \
|
||||
raspberrypi,5-compute-module \
|
||||
raspberrypi,5-model-b
|
||||
DEVICE_PACKAGES := \
|
||||
cypress-firmware-43455-sdio \
|
||||
brcmfmac-nvram-43455-sdio \
|
||||
kmod-brcmfmac wpad-basic-mbedtls \
|
||||
kmod-i2c-bcm2835 kmod-spi-bcm2835 \
|
||||
kmod-i2c-brcmstb \
|
||||
kmod-i2c-designware-platform kmod-spi-dw-mmio \
|
||||
kmod-hwmon-pwmfan kmod-thermal
|
||||
IMAGE/sysupgrade.img.gz := boot-common | sdcard-img | gzip | append-metadata
|
||||
IMAGE/factory.img.gz := boot-common | sdcard-img | gzip
|
||||
|
||||
@@ -16,3 +16,19 @@ define KernelPackage/i2c-bcm2835/description
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-bcm2835))
|
||||
|
||||
|
||||
I2C_BRCMSTB_MODULES:=\
|
||||
CONFIG_I2C_BRCMSTB:drivers/i2c/busses/i2c-brcmstb
|
||||
|
||||
define KernelPackage/i2c-brcmstb
|
||||
$(call i2c_defaults,$(I2C_BRCMSTB_MODULES),59)
|
||||
TITLE:=Broadcom BRCMSTB I2C master controller driver
|
||||
DEPENDS:=@TARGET_bcm27xx +kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-brcmstb/description
|
||||
This package contains the BRCM Settop/DSL I2C master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-brcmstb))
|
||||
|
||||
@@ -60,7 +60,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/drm_atomic_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_atomic_helper.c
|
||||
@@ -1653,13 +1653,6 @@ drm_atomic_helper_wait_for_vblanks(struc
|
||||
@@ -1681,13 +1681,6 @@ drm_atomic_helper_wait_for_vblanks(struc
|
||||
int i, ret;
|
||||
unsigned int crtc_mask = 0;
|
||||
|
||||
@@ -74,7 +74,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) {
|
||||
if (!new_crtc_state->active)
|
||||
continue;
|
||||
@@ -2309,12 +2302,6 @@ int drm_atomic_helper_setup_commit(struc
|
||||
@@ -2337,12 +2330,6 @@ int drm_atomic_helper_setup_commit(struc
|
||||
complete_all(&commit->flip_done);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1993,7 +1993,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
#define MAX_TUNING_LOOP 40
|
||||
|
||||
@@ -3212,7 +3212,7 @@ static void sdhci_timeout_timer(struct t
|
||||
@@ -3217,7 +3217,7 @@ static void sdhci_timeout_timer(struct t
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
|
||||
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
|
||||
@@ -2002,7 +2002,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
mmc_hostname(host->mmc));
|
||||
sdhci_err_stats_inc(host, REQ_TIMEOUT);
|
||||
sdhci_dumpregs(host);
|
||||
@@ -3235,7 +3235,7 @@ static void sdhci_timeout_data_timer(str
|
||||
@@ -3240,7 +3240,7 @@ static void sdhci_timeout_data_timer(str
|
||||
|
||||
if (host->data || host->data_cmd ||
|
||||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
|
||||
|
||||
@@ -17583,7 +17583,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
* For devices with more than one control interface, we assume the
|
||||
--- a/sound/usb/quirks.c
|
||||
+++ b/sound/usb/quirks.c
|
||||
@@ -2254,6 +2254,8 @@ static const struct usb_audio_quirk_flag
|
||||
@@ -2258,6 +2258,8 @@ static const struct usb_audio_quirk_flag
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/phy/microchip.c
|
||||
+++ b/drivers/net/phy/microchip.c
|
||||
@@ -233,6 +233,7 @@ static int lan88xx_probe(struct phy_devi
|
||||
@@ -192,6 +192,7 @@ static int lan88xx_probe(struct phy_devi
|
||||
struct device *dev = &phydev->mdio.dev;
|
||||
struct lan88xx_priv *priv;
|
||||
u32 led_modes[4];
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
int len;
|
||||
|
||||
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
||||
@@ -262,6 +263,32 @@ static int lan88xx_probe(struct phy_devi
|
||||
@@ -221,6 +222,32 @@ static int lan88xx_probe(struct phy_devi
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/media/i2c/adv7180.c
|
||||
+++ b/drivers/media/i2c/adv7180.c
|
||||
@@ -1340,6 +1340,7 @@ static const struct adv7180_chip_info ad
|
||||
@@ -1350,6 +1350,7 @@ static const struct adv7180_chip_info ad
|
||||
static int init_device(struct adv7180_state *state)
|
||||
{
|
||||
int ret;
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
mutex_lock(&state->mutex);
|
||||
|
||||
@@ -1387,6 +1388,18 @@ static int init_device(struct adv7180_st
|
||||
@@ -1397,6 +1398,18 @@ static int init_device(struct adv7180_st
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/media/i2c/adv7180.c
|
||||
+++ b/drivers/media/i2c/adv7180.c
|
||||
@@ -1329,6 +1329,7 @@ static const struct adv7180_chip_info ad
|
||||
@@ -1339,6 +1339,7 @@ static const struct adv7180_chip_info ad
|
||||
BIT(ADV7182_INPUT_SVIDEO_AIN1_AIN2) |
|
||||
BIT(ADV7182_INPUT_SVIDEO_AIN3_AIN4) |
|
||||
BIT(ADV7182_INPUT_SVIDEO_AIN7_AIN8) |
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1498,6 +1498,109 @@ command_cleanup:
|
||||
@@ -1524,6 +1524,109 @@ command_cleanup:
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -125,7 +125,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* non-error returns are a promise to giveback() the urb later
|
||||
* we drop ownership so next owner (or urb unlink) can get it
|
||||
*/
|
||||
@@ -5360,6 +5463,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5386,6 +5489,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1587,7 +1587,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
@@ -1613,7 +1613,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
return;
|
||||
}
|
||||
ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/gpu/drm/v3d/v3d_drv.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
|
||||
@@ -256,6 +256,21 @@ static int v3d_platform_drm_probe(struct
|
||||
@@ -266,6 +266,21 @@ static int v3d_platform_drm_probe(struct
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
if (v3d->ver < 41) {
|
||||
ret = map_regs(v3d, &v3d->gca_regs, "gca");
|
||||
if (ret)
|
||||
@@ -281,6 +296,9 @@ static int v3d_platform_drm_probe(struct
|
||||
@@ -292,6 +307,9 @@ static int v3d_platform_drm_probe(struct
|
||||
if (ret)
|
||||
goto irq_disable;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -244,6 +244,9 @@
|
||||
@@ -248,6 +248,9 @@
|
||||
#define USB_VENDOR_ID_BAANTO 0x2453
|
||||
#define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
|
||||
|
||||
@@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1408,6 +1411,9 @@
|
||||
@@ -1443,6 +1446,9 @@
|
||||
#define USB_VENDOR_ID_XIAOMI 0x2717
|
||||
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
|
||||
--- a/drivers/hid/hid-quirks.c
|
||||
+++ b/drivers/hid/hid-quirks.c
|
||||
@@ -42,6 +42,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -44,6 +44,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
|
||||
@@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
||||
@@ -209,6 +210,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -211,6 +212,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
|
||||
|
||||
@@ -343,7 +343,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -20057,6 +20057,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
@@ -20058,6 +20058,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
F: Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml
|
||||
F: drivers/media/i2c/imx415.c
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -20065,6 +20065,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
@@ -20066,6 +20066,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
|
||||
F: drivers/media/i2c/imx477.c
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -20062,6 +20062,7 @@ M: Raspberry Pi Kernel Maintenance <kern
|
||||
@@ -20063,6 +20063,7 @@ M: Raspberry Pi Kernel Maintenance <kern
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/v3d/v3d_drv.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
|
||||
@@ -257,10 +257,10 @@ static int v3d_platform_drm_probe(struct
|
||||
@@ -267,10 +267,10 @@ static int v3d_platform_drm_probe(struct
|
||||
}
|
||||
|
||||
v3d->clk = devm_clk_get(dev, NULL);
|
||||
|
||||
@@ -65,7 +65,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
|
||||
|
||||
return 0;
|
||||
@@ -1536,6 +1551,7 @@ static int brcm_pcie_probe(struct platfo
|
||||
@@ -1537,6 +1552,7 @@ static int brcm_pcie_probe(struct platfo
|
||||
pcie->gen = (ret < 0) ? 0 : ret;
|
||||
|
||||
pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/media/i2c/ov7251.c
|
||||
+++ b/drivers/media/i2c/ov7251.c
|
||||
@@ -1541,7 +1541,7 @@ static int ov7251_init_ctrls(struct ov72
|
||||
@@ -1543,7 +1543,7 @@ static int ov7251_init_ctrls(struct ov72
|
||||
s64 pixel_rate;
|
||||
int hblank;
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
ov7251->ctrls.lock = &ov7251->lock;
|
||||
|
||||
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
|
||||
@@ -1600,6 +1600,7 @@ static int ov7251_init_ctrls(struct ov72
|
||||
@@ -1602,6 +1602,7 @@ static int ov7251_init_ctrls(struct ov72
|
||||
|
||||
static int ov7251_probe(struct i2c_client *client)
|
||||
{
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
struct device *dev = &client->dev;
|
||||
struct ov7251 *ov7251;
|
||||
unsigned int rate = 0, clk_rate = 0;
|
||||
@@ -1690,6 +1691,15 @@ static int ov7251_probe(struct i2c_clien
|
||||
@@ -1692,6 +1693,15 @@ static int ov7251_probe(struct i2c_clien
|
||||
goto destroy_mutex;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -3376,6 +3376,31 @@ static const struct panel_desc rocktech_
|
||||
@@ -3377,6 +3377,31 @@ static const struct panel_desc rocktech_
|
||||
.connector_type = DRM_MODE_CONNECTOR_DPI,
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const struct display_timing rocktech_rk070er9427_timing = {
|
||||
.pixelclock = { 26400000, 33300000, 46800000 },
|
||||
.hactive = { 800, 800, 800 },
|
||||
@@ -4452,6 +4477,9 @@ static const struct of_device_id platfor
|
||||
@@ -4453,6 +4478,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "rocktech,rk043fn48h",
|
||||
.data = &rocktech_rk043fn48h,
|
||||
}, {
|
||||
|
||||
@@ -14,13 +14,13 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/media/i2c/ov7251.c
|
||||
+++ b/drivers/media/i2c/ov7251.c
|
||||
@@ -1676,7 +1676,8 @@ static int ov7251_probe(struct i2c_clien
|
||||
@@ -1678,7 +1678,8 @@ static int ov7251_probe(struct i2c_clien
|
||||
return PTR_ERR(ov7251->analog_regulator);
|
||||
}
|
||||
|
||||
- ov7251->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_HIGH);
|
||||
- ov7251->enable_gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
|
||||
+ ov7251->enable_gpio = devm_gpiod_get_optional(dev, "enable",
|
||||
+ GPIOD_OUT_HIGH);
|
||||
+ GPIOD_OUT_LOW);
|
||||
if (IS_ERR(ov7251->enable_gpio)) {
|
||||
dev_err(dev, "cannot get enable gpio\n");
|
||||
return PTR_ERR(ov7251->enable_gpio);
|
||||
|
||||
@@ -13,7 +13,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -2035,6 +2035,32 @@ static const struct panel_desc friendlya
|
||||
@@ -2036,6 +2036,32 @@ static const struct panel_desc friendlya
|
||||
},
|
||||
};
|
||||
|
||||
@@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
||||
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
|
||||
.clock = 9000,
|
||||
.hdisplay = 480,
|
||||
@@ -4327,6 +4353,9 @@ static const struct of_device_id platfor
|
||||
@@ -4328,6 +4354,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "friendlyarm,hd702e",
|
||||
.data = &friendlyarm_hd702e,
|
||||
}, {
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/media/i2c/ov7251.c
|
||||
+++ b/drivers/media/i2c/ov7251.c
|
||||
@@ -1344,6 +1344,14 @@ static int ov7251_s_stream(struct v4l2_s
|
||||
@@ -1346,6 +1346,14 @@ static int ov7251_s_stream(struct v4l2_s
|
||||
if (ret < 0)
|
||||
goto err_power_down;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
|
||||
/*
|
||||
* A cached value of the page's pageblock's migratetype, used when the page is
|
||||
* put on a pcplist. Used to avoid the pageblock migratetype lookup when
|
||||
@@ -2109,12 +2130,13 @@ __rmqueue(struct zone *zone, unsigned in
|
||||
@@ -2108,12 +2129,13 @@ __rmqueue(struct zone *zone, unsigned in
|
||||
if (IS_ENABLED(CONFIG_CMA)) {
|
||||
/*
|
||||
* Balance movable allocations between regular and CMA areas by
|
||||
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
struct drm_device *drm;
|
||||
struct v3d_dev *v3d;
|
||||
int ret;
|
||||
@@ -262,7 +267,20 @@ static int v3d_platform_drm_probe(struct
|
||||
@@ -272,7 +277,20 @@ static int v3d_platform_drm_probe(struct
|
||||
dev_err(dev, "Failed to get clock (%ld)\n", PTR_ERR(v3d->clk));
|
||||
return PTR_ERR(v3d->clk);
|
||||
}
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
/* For downclocking, drop it to the minimum frequency we can get from
|
||||
* the CPRMAN clock generator dividing off our parent. The divider is
|
||||
* 4 bits, but ask for just higher than that so that rounding doesn't
|
||||
@@ -296,7 +314,7 @@ static int v3d_platform_drm_probe(struct
|
||||
@@ -307,7 +325,7 @@ static int v3d_platform_drm_probe(struct
|
||||
if (ret)
|
||||
goto irq_disable;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
struct adv7180_state;
|
||||
|
||||
#define ADV7180_FLAG_RESET_POWERED BIT(0)
|
||||
@@ -406,10 +410,24 @@ out:
|
||||
@@ -407,10 +411,24 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -435,7 +453,11 @@ static int adv7180_program_std(struct ad
|
||||
@@ -436,7 +454,11 @@ static int adv7180_program_std(struct ad
|
||||
static int adv7180_s_std(struct v4l2_subdev *sd, v4l2_std_id std)
|
||||
{
|
||||
struct adv7180_state *state = to_state(sd);
|
||||
@@ -70,7 +70,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -457,6 +479,8 @@ static int adv7180_g_std(struct v4l2_sub
|
||||
@@ -458,6 +480,8 @@ static int adv7180_g_std(struct v4l2_sub
|
||||
{
|
||||
struct adv7180_state *state = to_state(sd);
|
||||
|
||||
@@ -79,7 +79,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
*norm = state->curr_norm;
|
||||
|
||||
return 0;
|
||||
@@ -886,6 +910,8 @@ static int adv7180_s_stream(struct v4l2_
|
||||
@@ -891,6 +915,8 @@ static int adv7180_s_stream(struct v4l2_
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const unsigned long supported_xclk_rates[] = {
|
||||
[OV7251_19_2_MHZ] = 19200000,
|
||||
[OV7251_24_MHZ] = 24000000,
|
||||
@@ -1372,6 +1384,23 @@ static int ov7251_s_stream(struct v4l2_s
|
||||
@@ -1374,6 +1386,23 @@ static int ov7251_s_stream(struct v4l2_s
|
||||
dev_err(ov7251->dev, "could not sync v4l2 controls\n");
|
||||
goto err_power_down;
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
- MEDIA_BUS_FMT_RGB666_1X24_CPADHI
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -2241,6 +2241,38 @@ static const struct panel_desc innolux_a
|
||||
@@ -2242,6 +2242,38 @@ static const struct panel_desc innolux_a
|
||||
.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
|
||||
};
|
||||
|
||||
@@ -165,7 +165,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||
.clock = 33333,
|
||||
.hdisplay = 800,
|
||||
@@ -4377,6 +4409,9 @@ static const struct of_device_id platfor
|
||||
@@ -4378,6 +4410,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "innolux,at043tn24",
|
||||
.data = &innolux_at043tn24,
|
||||
}, {
|
||||
|
||||
@@ -138,7 +138,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
+...
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -20106,6 +20106,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
@@ -20107,6 +20107,14 @@ T: git git://linuxtv.org/media_tree.git
|
||||
F: Documentation/devicetree/bindings/media/i2c/imx519.yaml
|
||||
F: drivers/media/i2c/imx519.c
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpio/gpio-pca953x.c
|
||||
+++ b/drivers/gpio/gpio-pca953x.c
|
||||
@@ -1311,6 +1311,7 @@ static const struct of_device_id pca953x
|
||||
@@ -1312,6 +1312,7 @@ static const struct of_device_id pca953x
|
||||
{ .compatible = "ti,tca6424", .data = OF_953X(24, PCA_INT), },
|
||||
{ .compatible = "ti,tca9538", .data = OF_953X( 8, PCA_INT), },
|
||||
{ .compatible = "ti,tca9539", .data = OF_953X(16, PCA_INT), },
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user