mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-01-28 03:37:17 +01:00
Compare commits
59 commits
main
...
v25.12.0-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1a74b1cde | ||
|
|
9e9b05130c | ||
|
|
988902fa9a | ||
|
|
f1984e2e5a | ||
|
|
68e2095a8b | ||
|
|
da669004ef | ||
|
|
131071cd26 | ||
|
|
fe635c56ac | ||
|
|
fe1b06f725 | ||
|
|
0669972095 | ||
|
|
74247287ad | ||
|
|
c432647d18 | ||
|
|
88ab3205fe | ||
|
|
c870f16350 | ||
|
|
4d86ac6401 | ||
|
|
d2a34744fe | ||
|
|
cf03520c71 | ||
|
|
0fe7f97896 | ||
|
|
6f98353eec | ||
|
|
01cfdb1610 | ||
|
|
40201e7f73 | ||
|
|
b9e5803d04 | ||
|
|
d8b1a54c78 | ||
|
|
96c86b2ff1 | ||
|
|
e989bf80a8 | ||
|
|
2e56a1ffc6 | ||
|
|
86ebe649c2 | ||
|
|
ce54f6e893 | ||
|
|
368c9c0c99 | ||
|
|
d4274a10f6 | ||
|
|
8e5cdd84eb | ||
|
|
872fd1f0b6 | ||
|
|
d18dfbdcbc | ||
|
|
6d7fbcccac | ||
|
|
946e43c3d8 | ||
|
|
7f4272dc18 | ||
|
|
81d7d379c7 | ||
|
|
7c4da36cf2 | ||
|
|
c743099fe1 | ||
|
|
b13c6a732a | ||
|
|
87fd61bd02 | ||
|
|
ec22ac9401 | ||
|
|
bcbf4bd8ac | ||
|
|
77b47f33e5 | ||
|
|
a53655ed14 | ||
|
|
5db1b65d3e | ||
|
|
74c8435ebd | ||
|
|
25f32651f8 | ||
|
|
4444f314ac | ||
|
|
65a60d2fa7 | ||
|
|
8117f30f6f | ||
|
|
4f889c2caa | ||
|
|
c6d74b2ddd | ||
|
|
e402882943 | ||
|
|
cd88eb969f | ||
|
|
4e5e8b95a6 | ||
|
|
bb61b5b31d | ||
|
|
39b578147b | ||
|
|
12316d0280 |
116 changed files with 2116 additions and 1949 deletions
|
|
@ -1,8 +1,5 @@
|
|||
src-git packages https://git.openwrt.org/feed/packages.git
|
||||
src-git luci https://git.openwrt.org/project/luci.git
|
||||
src-git routing https://git.openwrt.org/feed/routing.git
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git
|
||||
src-git video https://github.com/openwrt/video.git
|
||||
#src-git targets https://github.com/openwrt/targets.git
|
||||
#src-git oldpackages http://git.openwrt.org/packages.git
|
||||
#src-link custom /usr/src/openwrt/custom-feed
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^15884df50a89f522279451d04925f2d4467d16df
|
||||
src-git luci https://git.openwrt.org/project/luci.git^946f77ac26de60b4f5209d4d33cf2bc0ef08f878
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^b43e4ac560ccbafba21dc3ab0dbe57afc07e7b88
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^40dcae69ef7f68352203ba0dd5b4f05c5d833d15
|
||||
src-git video https://github.com/openwrt/video.git^094bf58da6682f895255a35a84349a79dab4bf95
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ KDIR=$(KERNEL_BUILD_DIR)
|
|||
KDIR_TMP=$(KDIR)/tmp
|
||||
DTS_DIR:=$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts
|
||||
|
||||
ifeq ($(EXTRA_IMAGE_NAME),)
|
||||
EXTRA_IMAGE_NAME:=$(call qstrip,$(CONFIG_EXTRA_IMAGE_NAME))
|
||||
endif
|
||||
IMG_PREFIX_EXTRA:=$(if $(EXTRA_IMAGE_NAME),$(call sanitize,$(EXTRA_IMAGE_NAME))-)
|
||||
IMG_PREFIX_VERNUM:=$(if $(CONFIG_VERSION_FILENAMES),$(call sanitize,$(VERSION_NUMBER))-)
|
||||
IMG_PREFIX_VERCODE:=$(if $(CONFIG_VERSION_CODE_FILENAMES),$(call sanitize,$(VERSION_CODE))-)
|
||||
|
|
|
|||
|
|
@ -27,13 +27,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),SNAPSHOT)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),25.12.0-rc1)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r32353-9e9b05130c)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/snapshots)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/25.12.0-rc1)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[ "$(uci -q get network.globals.dhcp_default_duid)" != "auto" ] && exit 0
|
||||
[ "$(uci -q get network.globals.dhcp_default_duid || echo "auto")" != "auto" ] && exit 0
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
# DUID-UUID - RFC6355
|
||||
|
|
@ -5,6 +5,14 @@
|
|||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
config EXTRA_IMAGE_NAME
|
||||
string
|
||||
prompt "Extra image filename" if IMAGEOPT
|
||||
default ""
|
||||
help
|
||||
Add this to the output image filenames, to distinguish between
|
||||
different builds for the same hardware type.
|
||||
|
||||
config TARGET_DEFAULT_LAN_IP_FROM_PREINIT
|
||||
bool "Use preinit IP configuration as default LAN IP" if IMAGEOPT
|
||||
default n
|
||||
|
|
@ -190,7 +198,7 @@ if VERSIONOPT
|
|||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "https://downloads.openwrt.org/snapshots"
|
||||
default "https://downloads.openwrt.org/releases/25.12.0-rc1"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
|
@ -272,7 +280,7 @@ if VERSIONOPT
|
|||
config VERSION_CODE_FILENAMES
|
||||
bool
|
||||
prompt "Revision code in filenames"
|
||||
default y
|
||||
default n
|
||||
help
|
||||
Enable this to include the revision identifier or the configured
|
||||
version code into the firmware image, SDK- and Image Builder archive
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ define Trusted-Firmware-A/Default
|
|||
BOOT_DEVICE:=
|
||||
DDR3_FLYBY:=
|
||||
DDR3_FREQ_1866:=
|
||||
DDR4_4BG_MODE:=
|
||||
DDR_TYPE:=
|
||||
NAND_TYPE:=
|
||||
BOARD_QFN:=
|
||||
|
|
@ -139,6 +140,14 @@ define Trusted-Firmware-A/mt7622-sdmmc-2ddr
|
|||
DDR3_FLYBY:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-nor-ddr4
|
||||
NAME:=MediaTek MT7981 (SPI-NOR, DDR4)
|
||||
BOOT_DEVICE:=nor
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7981
|
||||
DDR_TYPE:=ddr4
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-ram-ddr4
|
||||
NAME:=MediaTek MT7981 (RAM, DDR4)
|
||||
BOOT_DEVICE:=ram
|
||||
|
|
@ -158,6 +167,14 @@ define Trusted-Firmware-A/mt7981-emmc-ddr4
|
|||
DDR_TYPE:=ddr4
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-sdmmc-ddr4
|
||||
NAME:=MediaTek MT7981 (SD card, DDR4)
|
||||
BOOT_DEVICE:=sdmmc
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7981
|
||||
DDR_TYPE:=ddr4
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-spim-nand-ddr4
|
||||
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
|
||||
BOOT_DEVICE:=spim-nand
|
||||
|
|
@ -186,14 +203,6 @@ define Trusted-Firmware-A/mt7981-ram-ddr3
|
|||
DEFAULT:=TARGET_mediatek_filogic
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-nor-ddr4
|
||||
NAME:=MediaTek MT7981 (SPI-NOR, DDR4)
|
||||
BOOT_DEVICE:=nor
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7981
|
||||
DDR_TYPE:=ddr4
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-emmc-ddr3
|
||||
NAME:=MediaTek MT7981 (eMMC, DDR3)
|
||||
BOOT_DEVICE:=emmc
|
||||
|
|
@ -244,6 +253,15 @@ define Trusted-Firmware-A/mt7981-spim-nand-ddr3-1866mhz
|
|||
DDR3_FREQ_1866:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-spim-nand-ubi-ddr4
|
||||
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
|
||||
BOOT_DEVICE:=spim-nand
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7981
|
||||
DDR_TYPE:=ddr4
|
||||
USE_UBI:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-cudy-tr3000-v1
|
||||
NAME:=Cudy TR3000 v1 (SPI-NAND via SPIM, DDR3)
|
||||
BOOT_DEVICE:=spim-nand
|
||||
|
|
@ -265,15 +283,6 @@ define Trusted-Firmware-A/mt7986-ram-ddr4
|
|||
DEFAULT:=TARGET_mediatek_filogic
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7981-spim-nand-ubi-ddr4
|
||||
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
|
||||
BOOT_DEVICE:=spim-nand
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7981
|
||||
DDR_TYPE:=ddr4
|
||||
USE_UBI:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7986-nor-ddr4
|
||||
NAME:=MediaTek MT7986 (SPI-NOR, DDR4)
|
||||
BOOT_DEVICE:=nor
|
||||
|
|
@ -399,7 +408,14 @@ define Trusted-Firmware-A/mt7987-emmc-comb
|
|||
BOOT_DEVICE:=emmc
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7987-emmc-ddr4-4bg
|
||||
NAME:=MediaTek MT7987 (eMMC, DDR4 4GB)
|
||||
BOOT_DEVICE:=emmc
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DDR4_4BG_MODE:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7987-nor-comb
|
||||
|
|
@ -407,7 +423,6 @@ define Trusted-Firmware-A/mt7987-nor-comb
|
|||
BOOT_DEVICE:=nor
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7987-sdmmc-comb
|
||||
|
|
@ -415,7 +430,14 @@ define Trusted-Firmware-A/mt7987-sdmmc-comb
|
|||
BOOT_DEVICE:=sdmmc
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7987-sdmmc-ddr4-4bg
|
||||
NAME:=MediaTek MT7987 (SD card, DDR4 4GB)
|
||||
BOOT_DEVICE:=sdmmc
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DDR4_4BG_MODE:=1
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/mt7987-spim-nand0-ubi-comb
|
||||
|
|
@ -423,7 +445,6 @@ define Trusted-Firmware-A/mt7987-spim-nand0-ubi-comb
|
|||
BOOT_DEVICE:=spim-nand
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
USE_UBI:=1
|
||||
SPIM_CTRL:=0
|
||||
endef
|
||||
|
|
@ -433,7 +454,6 @@ define Trusted-Firmware-A/mt7987-spim-nand2-ubi-comb
|
|||
BOOT_DEVICE:=spim-nand
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
USE_UBI:=1
|
||||
SPIM_CTRL:=2
|
||||
endef
|
||||
|
|
@ -443,7 +463,6 @@ define Trusted-Firmware-A/mt7987-ram-comb
|
|||
BOOT_DEVICE:=ram
|
||||
BUILD_SUBTARGET:=filogic
|
||||
PLAT:=mt7987
|
||||
DRAM_USE_COMB:=1
|
||||
RAM_BOOT_UART_DL:=1
|
||||
HIDDEN:=
|
||||
DEFAULT:=TARGET_mediatek_filogic
|
||||
|
|
@ -643,6 +662,7 @@ TFA_TARGETS:= \
|
|||
mt7981-spim-nand-ubi-ddr4 \
|
||||
mt7981-ram-ddr4 \
|
||||
mt7981-emmc-ddr4 \
|
||||
mt7981-sdmmc-ddr4 \
|
||||
mt7981-spim-nand-ddr4 \
|
||||
mt7981-cudy-tr3000-v1 \
|
||||
mt7986-ram-ddr3 \
|
||||
|
|
@ -661,8 +681,10 @@ TFA_TARGETS:= \
|
|||
mt7986-spim-nand-ubi-ddr4 \
|
||||
mt7986-spim-nand-4k-ddr4 \
|
||||
mt7987-emmc-comb \
|
||||
mt7987-emmc-ddr4-4bg \
|
||||
mt7987-nor-comb \
|
||||
mt7987-sdmmc-comb \
|
||||
mt7987-sdmmc-ddr4-4bg \
|
||||
mt7987-spim-nand0-ubi-comb \
|
||||
mt7987-spim-nand2-ubi-comb \
|
||||
mt7987-ram-comb \
|
||||
|
|
@ -696,6 +718,7 @@ TFA_MAKE_FLAGS += \
|
|||
HAVE_DRAM_OBJ_FILE=yes \
|
||||
$(if $(DDR3_FLYBY),DDR3_FLYBY=1) \
|
||||
$(if $(DDR3_FREQ_1866),DDR3_FREQ_1866=1) \
|
||||
$(if $(DDR4_4BG_MODE),DDR4_4BG_MODE=1) \
|
||||
$(if $(DRAM_USE_COMB),DRAM_USE_COMB=1) \
|
||||
$(if $(RAM_BOOT_UART_DL),RAM_BOOT_UART_DL=1) \
|
||||
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7622,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x80000)) \
|
||||
|
|
|
|||
|
|
@ -137,14 +137,14 @@ endef
|
|||
define U-Boot/OLIMEX_A13_SOM
|
||||
BUILD_SUBTARGET:=cortexa8
|
||||
NAME:=Olimex A13 SOM
|
||||
BUILD_DEVICES:=olimex_a13-olimex-som
|
||||
BUILD_DEVICES:=olimex_a13-olinuxino
|
||||
endef
|
||||
|
||||
define U-Boot/licheepi_nano
|
||||
BUILD_SUBTARGET:=arm926ejs
|
||||
NAME:=LicheePi Nano
|
||||
UENV:=f1c
|
||||
BUILD_DEVICES:=licheepi-nano
|
||||
BUILD_DEVICES:=licheepi_licheepi-nano
|
||||
endef
|
||||
|
||||
define U-Boot/Linksprite_pcDuino
|
||||
|
|
@ -268,7 +268,7 @@ define U-Boot/popstick
|
|||
BUILD_SUBTARGET:=arm926ejs
|
||||
NAME:=PopStick
|
||||
UENV:=f1c
|
||||
BUILD_DEVICES:=popstick-v1.1
|
||||
BUILD_DEVICES:=sourceparts_popstick-v1.1
|
||||
endef
|
||||
|
||||
define U-Boot/libretech_all_h3_cc_h5
|
||||
|
|
@ -319,13 +319,13 @@ endef
|
|||
define U-Boot/bananapi_m2_plus_h3
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi M2 Plus H3
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m2-plus
|
||||
BUILD_DEVICES:=sinovoip_bpi-m2-plus
|
||||
endef
|
||||
|
||||
define U-Boot/Sinovoip_BPI_M3
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi M3
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m3
|
||||
BUILD_DEVICES:=sinovoip_bpi-m3
|
||||
endef
|
||||
|
||||
define U-Boot/sopine_baseboard
|
||||
|
|
@ -385,19 +385,19 @@ endef
|
|||
define U-Boot/Bananapi_M2_Ultra
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi M2 Ultra
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m2-ultra
|
||||
BUILD_DEVICES:=sinovoip_bpi-m2-ultra
|
||||
endef
|
||||
|
||||
define U-Boot/bananapi_m2_berry
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi M2 Berry
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m2-berry
|
||||
BUILD_DEVICES:=sinovoip_bpi-m2-berry
|
||||
endef
|
||||
|
||||
define U-Boot/bananapi_p2_zero
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi P2 Zero
|
||||
BUILD_DEVICES:=sinovoip_bananapi-p2-zero
|
||||
BUILD_DEVICES:=sinovoip_bpi-p2-zero
|
||||
endef
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@ ocedo,panda)
|
|||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
||||
ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x20000" "0x20000"
|
||||
;;
|
||||
watchguard,firebox-t10)
|
||||
watchguard,firebox-t10|\
|
||||
watchguard,firebox-t15)
|
||||
ubootenv_add_uci_config "$(find_mtd_part 'u-boot-env')" "0x0" "0x2000" "0x10000"
|
||||
;;
|
||||
aerohive,hiveap-330)
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
|
||||
PKG_SOURCE_DATE:=2025-11-15
|
||||
PKG_SOURCE_VERSION:=7c6b7545f69a3ef3ddaaff68fc97e9e172117e2e
|
||||
PKG_MIRROR_HASH:=ac77840bafd111b3cc3d6cfc7a3b770fdaabb929209c38cd2109be2efd575dae
|
||||
PKG_SOURCE_DATE:=2025-12-16
|
||||
PKG_SOURCE_VERSION:=10eddd6f1cbabd1972a71526d979033325f958c6
|
||||
PKG_MIRROR_HASH:=1fd55a5cf582f131a371d70de5919b7e54c6ecdc078991dd8a2d21469976c12f
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
|
@ -63,6 +63,7 @@ ALLWIFIBOARDS:= \
|
|||
netgear_lbr20 \
|
||||
netgear_rax120v2 \
|
||||
netgear_rbk20 \
|
||||
netgear_rbk40 \
|
||||
netgear_sxk80 \
|
||||
netgear_wax214 \
|
||||
netgear_wax218 \
|
||||
|
|
@ -242,6 +243,7 @@ $(eval $(call generate-ipq-wifi-package,meraki_z3,Meraki Z3))
|
|||
$(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_rbk20,Netgear RBK20))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_rbk40,Netgear RBK40))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_sxk80,Netgear SXK80))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_wax214,Netgear WAX214))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_wax218,Netgear WAX218))
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ $(eval $(call BuildPackage,iwlwifi-firmware-ax411))
|
|||
Package/iwlwifi-firmware-be200 = $(call Package/firmware-default,Intel BE200 firmware)
|
||||
define Package/iwlwifi-firmware-be200/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel/iwlwifi/iwlwifi-gl-c0-fm-c0-98.ucode $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel/iwlwifi/iwlwifi-gl-c0-fm-c0-101.ucode $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel/iwlwifi/iwlwifi-gl-c0-fm-c0.pnvm $(1)/lib/firmware
|
||||
endef
|
||||
$(eval $(call BuildPackage,iwlwifi-firmware-be200))
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
Fixes leaking the ethernet FCS into the frame payload on the RX
|
||||
path.
|
||||
|
||||
--- a/dcdp/ptm_tc.c
|
||||
+++ b/dcdp/ptm_tc.c
|
||||
@@ -923,7 +923,7 @@ static void ptm_fw_init(struct ptm_ep_pr
|
||||
rx_gitf_cfg.rx_inserted_bytes_1h = 0;
|
||||
rx_gitf_cfg.rx_inserted_bytes_2l = 0;
|
||||
rx_gitf_cfg.rx_inserted_bytes_2h = 0;
|
||||
- rx_gitf_cfg.rx_len_adj = -2;
|
||||
+ rx_gitf_cfg.rx_len_adj = is_bonding ? -2 : -6;
|
||||
for (i = 0; i < 4; i++) {
|
||||
dst_addr = __RX_GIF0_CFG_STATS_CFG +
|
||||
(i * DW_SZ(rx_gitf_cfg));
|
||||
|
|
@ -1654,3 +1654,68 @@ define KernelPackage/packet-diag
|
|||
endef
|
||||
|
||||
$(eval $(call KernelPackage,packet-diag))
|
||||
|
||||
define KernelPackage/team
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Ethernet team driver
|
||||
KCONFIG:=CONFIG_NET_TEAM
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team))
|
||||
|
||||
define KernelPackage/team-mode-broadcast
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Broadcast mode support
|
||||
DEPENDS:=kmod-team
|
||||
KCONFIG:=CONFIG_NET_TEAM_MODE_BROADCAST
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team_mode_broadcast.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team_mode_broadcast)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team-mode-broadcast))
|
||||
|
||||
define KernelPackage/team-mode-roundrobin
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Round-robin mode support
|
||||
DEPENDS:=kmod-team
|
||||
KCONFIG:=CONFIG_NET_TEAM_MODE_ROUNDROBIN
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team_mode_roundrobin.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team_mode_roundrobin)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team-mode-roundrobin))
|
||||
|
||||
define KernelPackage/team-mode-random
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Random mode support
|
||||
DEPENDS:=kmod-team
|
||||
KCONFIG:=CONFIG_NET_TEAM_MODE_RANDOM
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team_mode_random.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team_mode_random)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team-mode-random))
|
||||
|
||||
define KernelPackage/team-mode-activebackup
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Active-backup mode support
|
||||
DEPENDS:=kmod-team
|
||||
KCONFIG:=CONFIG_NET_TEAM_MODE_ACTIVEBACKUP
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team_mode_activebackup.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team_mode_activebackup)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team-mode-activebackup))
|
||||
|
||||
define KernelPackage/team-mode-loadbalance
|
||||
SUBMENU:=$(NETWORK_SUPPORT_MENU)
|
||||
TITLE:=Load-balance mode support
|
||||
DEPENDS:=kmod-team
|
||||
KCONFIG:=CONFIG_NET_TEAM_MODE_LOADBALANCE
|
||||
FILES:=$(LINUX_DIR)/drivers/net/team/team_mode_loadbalance.ko
|
||||
AUTOLOAD:=$(call AutoProbe,team_mode_loadbalance)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,team-mode-loadbalance))
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libcap
|
||||
PKG_VERSION:=2.77
|
||||
PKG_VERSION:=2.69
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2
|
||||
PKG_HASH:=897bc18b44afc26c70e78cead3dbb31e154acc24bee085a5a09079a88dbf6f52
|
||||
PKG_HASH:=f311f8f3dad84699d0566d1d6f7ec943a9298b28f714cae3c931dfd57492d7eb
|
||||
|
||||
PKG_MAINTAINER:=Paul Wassi <p.wassi@gmx.at>
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
From 542d7d86ecd2129dd5fe7e5b31ba307304f5b319 Mon Sep 17 00:00:00 2001
|
||||
From: "Andrew G. Morgan" <morgan@kernel.org>
|
||||
Date: Mon, 10 Nov 2025 18:26:34 -0800
|
||||
Subject: [PATCH] Revert "libcap: Add build ldflags to _makenames rule"
|
||||
|
||||
This reverts commit c3ddf45d9afaab85d3b7db0dc7bfd1aafb8fde50.
|
||||
|
||||
The details of what this broke are here:
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=220691#c2
|
||||
|
||||
Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
|
||||
---
|
||||
libcap/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/libcap/Makefile
|
||||
+++ b/libcap/Makefile
|
||||
@@ -80,7 +80,7 @@ $(PSXTITLE).pc: $(PSXTITLE).pc.in
|
||||
$< >$@
|
||||
|
||||
_makenames: _makenames.c cap_names.list.h
|
||||
- $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@ $(BUILD_LDFLAGS)
|
||||
+ $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@
|
||||
|
||||
cap_names.h: _makenames
|
||||
./_makenames > cap_names.h
|
||||
|
|
@ -25,7 +25,8 @@ function print_assoclist(stations) {
|
|||
printf(', %s', flags);
|
||||
printf('%10d Pkts.\n', bitrate.packets);
|
||||
}
|
||||
printf(`\texpected throughput: ${station.expected_throughput}\n\n`);
|
||||
let expected_throughput = station.expected_throughput;
|
||||
printf(`\texpected throughput: ${expected_throughput == 'unknown' ? 'unknown' : expected_throughput + ' MBit/s'}\n\n`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -169,6 +169,10 @@ function format_rate(rate) {
|
|||
return rate ? sprintf('%.01f', rate / 10.0) : 'unknown';
|
||||
}
|
||||
|
||||
function format_expected_throughput(rate) {
|
||||
return rate ? sprintf('%.01f', rate / 1000.0) : 'unknown';
|
||||
}
|
||||
|
||||
function format_mgmt_key(key) {
|
||||
switch(+key) {
|
||||
case 1:
|
||||
|
|
@ -352,7 +356,7 @@ export function assoclist(dev) {
|
|||
packets: station.sta_info.tx_packets ?? 0,
|
||||
flags: assoc_flags(station.sta_info.tx_bitrate ?? {}),
|
||||
},
|
||||
expected_throughput: station.sta_info.expected_throughput ?? 'unknown',
|
||||
expected_throughput: format_expected_throughput(station.sta_info.expected_throughput ?? 0),
|
||||
};
|
||||
ret[sta.mac] = sta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -488,7 +488,11 @@ function wdev_set_data(wdev, vif, vlan, data)
|
|||
cur_type = "vlan";
|
||||
}
|
||||
|
||||
wdev.handler_data[cur.name] = {
|
||||
let key = cur.name;
|
||||
if (cur_type == "vlan")
|
||||
key = vif.name + "/" + vlan.name;
|
||||
|
||||
wdev.handler_data[key] = {
|
||||
...cur,
|
||||
...data,
|
||||
type: cur_type,
|
||||
|
|
@ -545,9 +549,13 @@ function hotplug(name, add)
|
|||
}
|
||||
}
|
||||
|
||||
function get_status_data(wdev, vif)
|
||||
function get_status_data(wdev, vif, parent_vif)
|
||||
{
|
||||
let hdata = wdev.handler_data[vif.name];
|
||||
let key = vif.name;
|
||||
if (parent_vif)
|
||||
key = parent_vif.name + "/" + vif.name;
|
||||
|
||||
let hdata = wdev.handler_data[key];
|
||||
let data = {
|
||||
section: vif.name,
|
||||
config: vif.config
|
||||
|
|
@ -561,7 +569,7 @@ function get_status_vlans(wdev, vif)
|
|||
{
|
||||
let vlans = [];
|
||||
for (let vlan in vif.vlan)
|
||||
push(vlans, get_status_data(wdev, vlan));
|
||||
push(vlans, get_status_data(wdev, vlan, vif));
|
||||
return vlans;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -192,8 +192,9 @@ function config_init(uci)
|
|||
}
|
||||
|
||||
for (let name, data in sections.vlan) {
|
||||
let ifaces = parse_array(data.iface);
|
||||
for (let iface, iface_vifs in vifs) {
|
||||
if (data.iface && data.iface != iface)
|
||||
if (length(ifaces) && index(ifaces, iface) < 0)
|
||||
continue;
|
||||
|
||||
for (let vif in iface_vifs) {
|
||||
|
|
@ -214,8 +215,9 @@ function config_init(uci)
|
|||
}
|
||||
|
||||
for (let name, data in sections.station) {
|
||||
let ifaces = parse_array(data.iface);
|
||||
for (let iface, iface_vifs in vifs) {
|
||||
if (data.iface && data.iface != iface)
|
||||
if (length(ifaces) && index(ifaces, iface) < 0)
|
||||
continue;
|
||||
|
||||
for (let vif in iface_vifs) {
|
||||
|
|
|
|||
|
|
@ -57,6 +57,11 @@ function rename_phy_by_name(phys, name, rename) {
|
|||
wiphy: idx,
|
||||
wiphy_name: name
|
||||
});
|
||||
|
||||
let prev_idx = index(phys, prev_name);
|
||||
if (prev_idx >= 0)
|
||||
phys[prev_idx] = name;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcp6c.git
|
||||
PKG_SOURCE_DATE:=2025-12-09
|
||||
PKG_SOURCE_VERSION:=5212a1019d75db47a03c95c12e385e4625dda3d0
|
||||
PKG_MIRROR_HASH:=9c6501ea995c685e4e1b65ae74cbaecb6f787a493fdd5f8d3d095aeb0466b418
|
||||
PKG_SOURCE_DATE:=2025-12-18
|
||||
PKG_SOURCE_VERSION:=5ab3203875ad938ea85f6d0ceebdff113c355656
|
||||
PKG_MIRROR_HASH:=4de69fe364be2d302329cdc86d4d93820e73c82f00d788a536cf947076a4ded3
|
||||
|
||||
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dropbear
|
||||
PKG_VERSION:=2025.88
|
||||
PKG_RELEASE:=4
|
||||
PKG_VERSION:=2025.89
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:= \
|
||||
https://matt.ucc.asn.au/dropbear/releases/ \
|
||||
https://dropbear.nl/mirror/releases/
|
||||
PKG_HASH:=783f50ea27b17c16da89578fafdb6decfa44bb8f6590e5698a4e4d3672dc53d4
|
||||
PKG_HASH:=0d1f7ca711cfc336dc8a85e672cab9cfd8223a02fe2da0a4a7aeb58c9e113634
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
From 5cc0127000db5f7567b54d0495fb91a8e452fe09 Mon Sep 17 00:00:00 2001
|
||||
From: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Date: Fri, 9 May 2025 22:39:35 +0300
|
||||
Subject: Fix proxycmd without netcat
|
||||
|
||||
fixes e5a0ef27c2 "Execute multihop commands directly, no shell"
|
||||
|
||||
Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Forwarded: https://github.com/mkj/dropbear/pull/363
|
||||
---
|
||||
src/cli-main.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/src/cli-main.c
|
||||
+++ b/src/cli-main.c
|
||||
@@ -77,7 +77,11 @@ int main(int argc, char ** argv) {
|
||||
}
|
||||
|
||||
#if DROPBEAR_CLI_PROXYCMD
|
||||
- if (cli_opts.proxycmd || cli_opts.proxyexec) {
|
||||
+ if (cli_opts.proxycmd
|
||||
+#if DROPBEAR_CLI_MULTIHOP
|
||||
+ || cli_opts.proxyexec
|
||||
+#endif
|
||||
+ ) {
|
||||
cli_proxy_cmd(&sock_in, &sock_out, &proxy_cmd_pid);
|
||||
if (signal(SIGINT, kill_proxy_sighandler) == SIG_ERR ||
|
||||
signal(SIGTERM, kill_proxy_sighandler) == SIG_ERR ||
|
||||
@@ -110,11 +114,13 @@ static void shell_proxy_cmd(const void *
|
||||
dropbear_exit("Failed to run '%s'\n", cmd);
|
||||
}
|
||||
|
||||
+#if DROPBEAR_CLI_MULTIHOP
|
||||
static void exec_proxy_cmd(const void *unused) {
|
||||
(void)unused;
|
||||
run_command(cli_opts.proxyexec[0], cli_opts.proxyexec, ses.maxfd);
|
||||
dropbear_exit("Failed to run '%s'\n", cli_opts.proxyexec[0]);
|
||||
}
|
||||
+#endif
|
||||
|
||||
static void cli_proxy_cmd(int *sock_in, int *sock_out, pid_t *pid_out) {
|
||||
char * cmd_arg = NULL;
|
||||
@@ -145,9 +151,11 @@ static void cli_proxy_cmd(int *sock_in,
|
||||
cmd_arg = m_malloc(shell_cmdlen);
|
||||
snprintf(cmd_arg, shell_cmdlen, "exec %s", cli_opts.proxycmd);
|
||||
exec_fn = shell_proxy_cmd;
|
||||
+#if DROPBEAR_CLI_MULTIHOP
|
||||
} else {
|
||||
/* No shell */
|
||||
exec_fn = exec_proxy_cmd;
|
||||
+#endif
|
||||
}
|
||||
|
||||
ret = spawn_command(exec_fn, cmd_arg, sock_out, sock_in, NULL, pid_out);
|
||||
@@ -159,6 +167,7 @@ static void cli_proxy_cmd(int *sock_in,
|
||||
cleanup:
|
||||
m_free(cli_opts.proxycmd);
|
||||
m_free(cmd_arg);
|
||||
+#if DROPBEAR_CLI_MULTIHOP
|
||||
if (cli_opts.proxyexec) {
|
||||
char **a = NULL;
|
||||
for (a = cli_opts.proxyexec; *a; a++) {
|
||||
@@ -166,6 +175,7 @@ cleanup:
|
||||
}
|
||||
m_free(cli_opts.proxyexec);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void kill_proxy_sighandler(int UNUSED(signo)) {
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
From 91877a0337f432fd29bb1041be5599ea706e5de6 Mon Sep 17 00:00:00 2001
|
||||
From: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Date: Thu, 31 Jul 2025 14:13:35 +0300
|
||||
Subject: fix build without pubkey options
|
||||
|
||||
fixes:
|
||||
- 98ef42a856 "Don't set pubkey_info directly in checkpubkey_line"
|
||||
- 62ea53c1e5 "Implement no-touch-required and verify-requred for authorized_keys file"
|
||||
|
||||
Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Forwarded: https://github.com/mkj/dropbear/pull/374
|
||||
---
|
||||
src/svr-authpubkey.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/src/svr-authpubkey.c
|
||||
+++ b/src/svr-authpubkey.c
|
||||
@@ -186,12 +186,14 @@ void svr_auth_pubkey(int valid_user) {
|
||||
|
||||
#if DROPBEAR_SK_ECDSA || DROPBEAR_SK_ED25519
|
||||
key->sk_flags_mask = SSH_SK_USER_PRESENCE_REQD;
|
||||
+#if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
|
||||
if (ses.authstate.pubkey_options && ses.authstate.pubkey_options->no_touch_required_flag) {
|
||||
key->sk_flags_mask &= ~SSH_SK_USER_PRESENCE_REQD;
|
||||
}
|
||||
if (ses.authstate.pubkey_options && ses.authstate.pubkey_options->verify_required_flag) {
|
||||
key->sk_flags_mask |= SSH_SK_USER_VERIFICATION_REQD;
|
||||
}
|
||||
+#endif /* DROPBEAR_SVR_PUBKEY_OPTIONS */
|
||||
#endif
|
||||
|
||||
/* create the data which has been signed - this a string containing
|
||||
@@ -513,7 +515,13 @@ static int checkpubkey(const char* keyal
|
||||
line_num++;
|
||||
|
||||
ret = checkpubkey_line(line, line_num, filename, keyalgo, keyalgolen,
|
||||
- keyblob, keybloblen, &ses.authstate.pubkey_info);
|
||||
+ keyblob, keybloblen,
|
||||
+#if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
|
||||
+ &ses.authstate.pubkey_info
|
||||
+#else
|
||||
+ NULL
|
||||
+#endif
|
||||
+ );
|
||||
if (ret == DROPBEAR_SUCCESS) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 4bc1e18948d0918bcb1338a5f1e7856478abf985 Mon Sep 17 00:00:00 2001
|
||||
From: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Date: Fri, 8 Aug 2025 10:02:44 +0300
|
||||
Subject: fix missing depends for sntrup761x25519-sha512
|
||||
|
||||
fixes 440b7b5c4f "Add sntrup761x25519-sha512 post-quantum key exchange"
|
||||
|
||||
Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
|
||||
Forwarded: https://github.com/mkj/dropbear/pull/375
|
||||
---
|
||||
src/sysoptions.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/src/sysoptions.h
|
||||
+++ b/src/sysoptions.h
|
||||
@@ -207,7 +207,7 @@
|
||||
/* LTC SHA384 depends on SHA512 */
|
||||
#define DROPBEAR_SHA512 ((DROPBEAR_SHA2_512_HMAC) || (DROPBEAR_ECC_521) \
|
||||
|| (DROPBEAR_SHA384) || (DROPBEAR_DH_GROUP16) \
|
||||
- || (DROPBEAR_ED25519))
|
||||
+ || (DROPBEAR_ED25519) || (DROPBEAR_SNTRUP761))
|
||||
|
||||
#define DROPBEAR_DH_GROUP14 ((DROPBEAR_DH_GROUP14_SHA256) || (DROPBEAR_DH_GROUP14_SHA1))
|
||||
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
From a8610f7b98ad4b33ab723602863d60d462fa5af2 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Johnston <matt@ucc.asn.au>
|
||||
Date: Sun, 10 Aug 2025 19:46:01 +0800
|
||||
Subject: Don't limit channel window to 500MB
|
||||
|
||||
Previously the channel window and increments were limited to 500MB.
|
||||
That is incorrect and causes stuck connections if peers advertise
|
||||
a large window, then don't send an increment within the first 500MB.
|
||||
|
||||
That's seen with SSH.NET https://github.com/sshnet/SSH.NET/issues/1671
|
||||
---
|
||||
src/common-channel.c | 17 ++++++++++-------
|
||||
src/sysoptions.h | 3 ---
|
||||
2 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/src/common-channel.c
|
||||
+++ b/src/common-channel.c
|
||||
@@ -858,17 +858,21 @@ void common_recv_msg_channel_data(struct Channel *channel, int fd,
|
||||
void recv_msg_channel_window_adjust() {
|
||||
|
||||
struct Channel * channel;
|
||||
- unsigned int incr;
|
||||
+ unsigned int incr, newwin;
|
||||
|
||||
channel = getchannel();
|
||||
|
||||
incr = buf_getint(ses.payload);
|
||||
- TRACE(("received window increment %d", incr))
|
||||
- incr = MIN(incr, TRANS_MAX_WIN_INCR);
|
||||
+ TRACE(("received window increment %u", incr))
|
||||
|
||||
- channel->transwindow += incr;
|
||||
- channel->transwindow = MIN(channel->transwindow, TRANS_MAX_WINDOW);
|
||||
-
|
||||
+ newwin = channel->transwindow + incr;
|
||||
+ if (newwin < channel->transwindow) {
|
||||
+ /* Integer overflow, clamp it at maximum.
|
||||
+ * Behaviour may be unexpected, senders MUST NOT overflow per rfc4254. */
|
||||
+ TRACE(("overflow window, prev %u", channel->transwindow));
|
||||
+ newwin = 0xffffffff;
|
||||
+ }
|
||||
+ channel->transwindow = newwin;
|
||||
}
|
||||
|
||||
/* Increment the incoming data window for a channel, and let the remote
|
||||
@@ -906,7 +910,6 @@ void recv_msg_channel_open() {
|
||||
|
||||
remotechan = buf_getint(ses.payload);
|
||||
transwindow = buf_getint(ses.payload);
|
||||
- transwindow = MIN(transwindow, TRANS_MAX_WINDOW);
|
||||
transmaxpacket = buf_getint(ses.payload);
|
||||
transmaxpacket = MIN(transmaxpacket, TRANS_MAX_PAYLOAD_LEN);
|
||||
|
||||
--- a/src/sysoptions.h
|
||||
+++ b/src/sysoptions.h
|
||||
@@ -243,9 +243,6 @@
|
||||
#define RECV_MAX_PACKET_LEN (MAX(35000, ((RECV_MAX_PAYLOAD_LEN)+100)))
|
||||
|
||||
/* for channel code */
|
||||
-#define TRANS_MAX_WINDOW 500000000 /* 500MB is sufficient, stopping overflow */
|
||||
-#define TRANS_MAX_WIN_INCR 500000000 /* overflow prevention */
|
||||
-
|
||||
#define RECV_WINDOWEXTEND (opts.recv_window / 3) /* We send a "window extend" every
|
||||
RECV_WINDOWEXTEND bytes */
|
||||
#define MAX_RECV_WINDOW (10*1024*1024) /* 10 MB should be enough */
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/src/svr-chansession.c
|
||||
+++ b/src/svr-chansession.c
|
||||
@@ -984,12 +984,12 @@ static void execchild(const void *user_d
|
||||
--- a/src/svr-auth.c
|
||||
+++ b/src/svr-auth.c
|
||||
@@ -510,9 +510,9 @@ void svr_switch_user(void) {
|
||||
/* We can only change uid/gid as root ... */
|
||||
if (getuid() == 0) {
|
||||
|
||||
|
|
@ -11,6 +11,11 @@
|
|||
+ ses.authstate.pw_gid) < 0))) {
|
||||
dropbear_exit("Error changing user group");
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ void svr_switch_user(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (setuid(ses.authstate.pw_uid) < 0) {
|
||||
+ if ((ses.authstate.pw_uid != 0) && (setuid(ses.authstate.pw_uid) < 0)) {
|
||||
dropbear_exit("Error changing user");
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -86,54 +86,6 @@ AC_ARG_ENABLE(harden,
|
||||
@@ -80,54 +80,6 @@ AC_ARG_ENABLE(harden,
|
||||
|
||||
if test "$hardenbuild" -eq 1; then
|
||||
AC_MSG_NOTICE(Checking for available hardened build flags:)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -44,11 +44,8 @@ fi
|
||||
@@ -38,11 +38,8 @@ fi
|
||||
# LTM_CFLAGS is given to ./configure by the user,
|
||||
# DROPBEAR_LTM_CFLAGS is substituted in the LTM Makefile.in
|
||||
DROPBEAR_LTM_CFLAGS="$LTM_CFLAGS"
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
|
||||
PKG_MIRROR_HASH:=cce1d4f3c88f4eec0cf8b19429f12e6fc2f47dca9b4d643a31569c1209f8fabc
|
||||
PKG_SOURCE_DATE:=2025-12-10
|
||||
PKG_SOURCE_VERSION:=ca00527e5fc3d8d2b8c1a60fbeb6a25e2bf68674
|
||||
PKG_MIRROR_HASH:=e91eb780beb2f6e501ed35fd03d7b529400d72eba766f16f901103e44b1b6a35
|
||||
PKG_SOURCE_DATE:=2025-12-18
|
||||
PKG_SOURCE_VERSION:=0779ee287db5ddb209ae057295a8db0e0a3da4fb
|
||||
|
||||
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
|
|
|||
|
|
@ -89,8 +89,6 @@ fi
|
|||
|
||||
touch /etc/config/dhcp
|
||||
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
json_load "$(cat /etc/board.json)"
|
||||
json_select network
|
||||
json_select lan
|
||||
|
|
|
|||
|
|
@ -5,11 +5,10 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2025-12-03
|
||||
PKG_SOURCE_VERSION:=982c9961ad9e71b4068911329c9d8121cedfd9f7
|
||||
PKG_MIRROR_HASH:=4fc89e2bbbe10edfaa199b1ca9ace139aa39b43d3de6236e8be8b421d81b334b
|
||||
PKG_SOURCE_VERSION:=d093f7c198a64bff0cd58afeaf638909fda24ca8
|
||||
PKG_MIRROR_HASH:=596dffa2fa019be2755433ed210e30593a6a8708346cf31486d6ad8008e47556
|
||||
|
||||
PKG_VERSION=3.0.1
|
||||
PKG_VERSION=3.0.2
|
||||
|
||||
PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
From 54385e6dc02ada9ec827b6b79b9359951197fee5 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Donald <newtwen+gitlab@gmail.com>
|
||||
Date: Tue, 9 Dec 2025 00:31:27 +0100
|
||||
Subject: [PATCH] apk: fix compile when using C89
|
||||
|
||||
The older standard is more strict, and gives rise to errors:
|
||||
|
||||
../src/apk.c: In function 'parse_options':
|
||||
../src/apk.c:584:4: error: a label can only be part of a statement and a declaration is not a statement
|
||||
584 | char *arg = opt_parse_arg(&st);
|
||||
| ^~~~
|
||||
|
||||
So move the *arg declaration to function start.
|
||||
|
||||
../src/app_mkpkg.c: In function 'mkpkg_setup_compat':
|
||||
../src/app_mkpkg.c:423:2: error: label at end of compound statement
|
||||
423 | default:
|
||||
| ^~~~~~~
|
||||
|
||||
add break;
|
||||
|
||||
Signed-off-by: Paul Donald <newtwen+gitlab@gmail.com>
|
||||
---
|
||||
src/apk.c | 3 ++-
|
||||
src/app_mkpkg.c | 1 +
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/src/apk.c
|
||||
+++ b/src/apk.c
|
||||
@@ -556,6 +556,7 @@ static int parse_options(int argc, char
|
||||
struct apk_opt_match m;
|
||||
bool applet_arg_pending = false;
|
||||
int r;
|
||||
+ char *arg;
|
||||
|
||||
applet = applet_from_arg0(argv[0]);
|
||||
if (!applet) {
|
||||
@@ -581,7 +582,7 @@ static int parse_options(int argc, char
|
||||
case 0:
|
||||
break;
|
||||
case OPT_MATCH_NON_OPTION:
|
||||
- char *arg = opt_parse_arg(&st);
|
||||
+ arg = opt_parse_arg(&st);
|
||||
if (applet_arg_pending && strcmp(arg, applet->name) == 0)
|
||||
applet_arg_pending = false;
|
||||
else if (arg[0] || !applet || !applet->remove_empty_arguments)
|
||||
--- a/src/app_mkpkg.c
|
||||
+++ b/src/app_mkpkg.c
|
||||
@@ -421,6 +421,7 @@ static void mkpkg_setup_compat(struct mk
|
||||
case 0: ctx->compat_rootnode = 1; // fallthrough
|
||||
case 1: ctx->compat_dirnode = 1; // fallthrough
|
||||
default:
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ Build/Compile=
|
|||
ifneq ($(CONFIG_USE_APK),)
|
||||
define Package/openwrt-keyring/install
|
||||
$(INSTALL_DIR) $(1)/etc/apk/keys/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/apk/openwrt-snapshots.pem $(1)/etc/apk/keys/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/apk/openwrt-25.12.pem $(1)/etc/apk/keys/
|
||||
endef
|
||||
else
|
||||
define Package/openwrt-keyring/install
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||
PKG_SOURCE_DATE:=2025-11-19
|
||||
PKG_SOURCE_VERSION:=48ed18d2532e9197212c34473ab926c7b5e8ac73
|
||||
PKG_MIRROR_HASH:=34529706bcb413dffb3d73e78fe97971bd2b518c097c86470edadc1ca79a480c
|
||||
PKG_SOURCE_DATE:=2025-12-01
|
||||
PKG_SOURCE_VERSION:=f7c2b97a82e8b505bf4b2c0d8883b5116e1960f9
|
||||
PKG_MIRROR_HASH:=7de6a6d5b3c7392624bccefdc03e2dc61f097b414989eeced29ecc3e020bbd0b
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
From 165d395ffa2a22e293160b24d4791302a156eab8 Mon Sep 17 00:00:00 2001
|
||||
From: Rosen Penev <rosenp@gmail.com>
|
||||
Date: Mon, 8 Dec 2025 12:48:01 -0800
|
||||
Subject: add include for older kernels
|
||||
|
||||
in6.h is needed for some macros. Seems newer kernels include this implicitly.
|
||||
---
|
||||
lib/socket.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/lib/socket.c
|
||||
+++ b/lib/socket.c
|
||||
@@ -77,6 +77,7 @@
|
||||
#include "ucode/platform.h"
|
||||
|
||||
#if defined(__linux__)
|
||||
+# include <linux/in6.h>
|
||||
# include <linux/if_packet.h>
|
||||
# include <linux/filter.h>
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ pkg_appears_sane() {
|
|||
arch="$(required_field Architecture)"
|
||||
|
||||
if echo "$pkg" | grep '[^a-zA-Z0-9_.+-]'; then
|
||||
echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
|
||||
echo "*** Error: Package name '$pkg' contains illegal characters, (other than [a-z0-9.+-])" >&2
|
||||
PKG_ERROR=1;
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||
+
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -737,6 +737,13 @@ S: Maintained
|
||||
@@ -745,6 +745,13 @@ S: Maintained
|
||||
F: Documentation/devicetree/bindings/spi/airoha,en7581-snand.yaml
|
||||
F: drivers/spi/spi-airoha-snfi.c
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -742,6 +742,7 @@ M: Christian Marangi <ansuelsmth@gmail.c
|
||||
@@ -750,6 +750,7 @@ M: Christian Marangi <ansuelsmth@gmail.c
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/phy/airoha,an7581-usb-phy.yaml
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
|
||||
{
|
||||
@@ -1575,6 +1576,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1577,6 +1578,7 @@ static int spinand_probe(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
ret = mtd_device_register(mtd, NULL, 0);
|
||||
if (ret)
|
||||
goto err_spinand_cleanup;
|
||||
@@ -1582,6 +1584,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1584,6 +1586,7 @@ static int spinand_probe(struct spi_mem
|
||||
return 0;
|
||||
|
||||
err_spinand_cleanup:
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
spinand_cleanup(spinand);
|
||||
|
||||
return ret;
|
||||
@@ -1600,6 +1603,7 @@ static int spinand_remove(struct spi_mem
|
||||
@@ -1602,6 +1605,7 @@ static int spinand_remove(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -18626,7 +18626,7 @@ Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
|||
* For devices with more than one control interface, we assume the
|
||||
--- a/sound/usb/quirks.c
|
||||
+++ b/sound/usb/quirks.c
|
||||
@@ -2378,6 +2378,8 @@ static const struct usb_audio_quirk_flag
|
||||
@@ -2385,6 +2385,8 @@ static const struct usb_audio_quirk_flag
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
|
|
|
|||
|
|
@ -124,7 +124,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
|
||||
*/
|
||||
@@ -5386,6 +5489,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5387,6 +5490,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1470,6 +1473,9 @@
|
||||
@@ -1471,6 +1474,9 @@
|
||||
#define USB_VENDOR_ID_XIAOMI 0x2717
|
||||
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3661,6 +3661,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
@@ -3666,6 +3666,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
/* This is very similar to what ehci-q.c qtd_fill() does */
|
||||
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
|
||||
struct urb *urb, int slot_id, unsigned int ep_index)
|
||||
@@ -3815,6 +3857,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3820,6 +3862,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
}
|
||||
|
||||
check_trb_math(urb, enqd_len);
|
||||
|
|
@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
|
||||
start_cycle, start_trb);
|
||||
return 0;
|
||||
@@ -3963,6 +4007,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3968,6 +4012,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
/* Event on completion */
|
||||
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
|
|||
|
||||
--- a/drivers/mmc/host/sdhci-of-dwcmshc.c
|
||||
+++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
|
||||
@@ -1236,7 +1236,11 @@ static const struct dwcmshc_pltfm_data s
|
||||
@@ -1241,7 +1241,11 @@ static const struct dwcmshc_pltfm_data s
|
||||
.quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
|
||||
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
|
||||
.quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
},
|
||||
--- a/drivers/usb/dwc3/core.c
|
||||
+++ b/drivers/usb/dwc3/core.c
|
||||
@@ -1319,6 +1319,24 @@ static void dwc3_config_threshold(struct
|
||||
@@ -1320,6 +1320,24 @@ static void dwc3_config_threshold(struct
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -237,7 +237,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
/**
|
||||
* dwc3_core_init - Low-level initialization of DWC3 Core
|
||||
* @dwc: Pointer to our controller context structure
|
||||
@@ -1386,6 +1404,8 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
@@ -1387,6 +1405,8 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
|
||||
dwc3_config_soc_bus(dwc);
|
||||
|
||||
|
|
@ -246,7 +246,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
ret = dwc3_phy_power_on(dwc);
|
||||
if (ret)
|
||||
goto err_exit_phy;
|
||||
@@ -1490,6 +1510,24 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
@@ -1491,6 +1511,24 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
dwc3_writel(dwc->regs, DWC3_LLUCTL, reg);
|
||||
}
|
||||
|
||||
|
|
@ -271,7 +271,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
return 0;
|
||||
|
||||
err_power_off_phy:
|
||||
@@ -1675,6 +1713,7 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1676,6 +1714,7 @@ static void dwc3_get_properties(struct d
|
||||
u8 tx_thr_num_pkt_prd = 0;
|
||||
u8 tx_max_burst_prd = 0;
|
||||
u8 tx_fifo_resize_max_num;
|
||||
|
|
@ -279,7 +279,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
|
||||
/* default to highest possible threshold */
|
||||
lpm_nyet_threshold = 0xf;
|
||||
@@ -1695,6 +1734,9 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1696,6 +1735,9 @@ static void dwc3_get_properties(struct d
|
||||
*/
|
||||
tx_fifo_resize_max_num = 6;
|
||||
|
||||
|
|
@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
dwc->maximum_speed = usb_get_maximum_speed(dev);
|
||||
dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
|
||||
dwc->dr_mode = usb_get_dr_mode(dev);
|
||||
@@ -1809,6 +1851,9 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1810,6 +1852,9 @@ static void dwc3_get_properties(struct d
|
||||
dwc->dis_split_quirk = device_property_read_bool(dev,
|
||||
"snps,dis-split-quirk");
|
||||
|
||||
|
|
@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
|
||||
dwc->tx_de_emphasis = tx_de_emphasis;
|
||||
|
||||
@@ -1826,6 +1871,8 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1827,6 +1872,8 @@ static void dwc3_get_properties(struct d
|
||||
dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
|
||||
dwc->tx_max_burst_prd = tx_max_burst_prd;
|
||||
|
||||
|
|
@ -308,7 +308,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
|
||||
}
|
||||
|
||||
@@ -2184,6 +2231,12 @@ static int dwc3_probe(struct platform_de
|
||||
@@ -2185,6 +2232,12 @@ static int dwc3_probe(struct platform_de
|
||||
if (IS_ERR(dwc->usb_psy))
|
||||
return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
int vendor_specific_area1; /* P_VENDOR_SPECIFIC_AREA1 reg */
|
||||
int vendor_specific_area2; /* P_VENDOR_SPECIFIC_AREA2 reg */
|
||||
|
||||
@@ -289,6 +290,17 @@ static void dwcmshc_adma_write_desc(stru
|
||||
sdhci_adma_write_desc(host, desc, addr, len, cmd);
|
||||
@@ -302,6 +303,17 @@ static void dwcmshc_reset(struct sdhci_h
|
||||
sdhci_writel(host, SDHCI_INT_RESPONSE, SDHCI_INT_STATUS);
|
||||
}
|
||||
|
||||
+static void dwcmshc_set_clock(struct sdhci_host *host, unsigned int clock)
|
||||
|
|
@ -48,7 +48,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
static unsigned int dwcmshc_get_max_clock(struct sdhci_host *host)
|
||||
{
|
||||
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
||||
@@ -1138,10 +1150,11 @@ static int sg2042_init(struct device *de
|
||||
@@ -1143,10 +1155,11 @@ static int sg2042_init(struct device *de
|
||||
}
|
||||
|
||||
static const struct sdhci_ops sdhci_dwcmshc_ops = {
|
||||
|
|
@ -58,10 +58,10 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
.set_uhs_signaling = dwcmshc_set_uhs_signaling,
|
||||
.get_max_clock = dwcmshc_get_max_clock,
|
||||
+ .get_timeout_clock = sdhci_pltfm_clk_get_timeout_clock,
|
||||
.reset = sdhci_reset,
|
||||
.reset = dwcmshc_reset,
|
||||
.adma_write_desc = dwcmshc_adma_write_desc,
|
||||
.irq = dwcmshc_cqe_irq_handler,
|
||||
@@ -1214,8 +1227,10 @@ static const struct sdhci_ops sdhci_dwcm
|
||||
@@ -1219,8 +1232,10 @@ static const struct sdhci_ops sdhci_dwcm
|
||||
static const struct dwcmshc_pltfm_data sdhci_dwcmshc_pdata = {
|
||||
.pdata = {
|
||||
.ops = &sdhci_dwcmshc_ops,
|
||||
|
|
@ -74,7 +74,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
},
|
||||
};
|
||||
|
||||
@@ -1230,6 +1245,15 @@ static const struct dwcmshc_pltfm_data s
|
||||
@@ -1235,6 +1250,15 @@ static const struct dwcmshc_pltfm_data s
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
static const struct dwcmshc_pltfm_data sdhci_dwcmshc_rk35xx_pdata = {
|
||||
.pdata = {
|
||||
.ops = &sdhci_dwcmshc_rk35xx_ops,
|
||||
@@ -1353,6 +1377,10 @@ dsbl_cqe_caps:
|
||||
@@ -1358,6 +1382,10 @@ dsbl_cqe_caps:
|
||||
|
||||
static const struct of_device_id sdhci_dwcmshc_dt_ids[] = {
|
||||
{
|
||||
|
|
@ -101,7 +101,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
.compatible = "rockchip,rk3588-dwcmshc",
|
||||
.data = &sdhci_dwcmshc_rk35xx_pdata,
|
||||
},
|
||||
@@ -1445,13 +1473,32 @@ static int dwcmshc_probe(struct platform
|
||||
@@ -1450,13 +1478,32 @@ static int dwcmshc_probe(struct platform
|
||||
priv->bus_clk = devm_clk_get(dev, "bus");
|
||||
if (!IS_ERR(priv->bus_clk))
|
||||
clk_prepare_enable(priv->bus_clk);
|
||||
|
|
@ -134,7 +134,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
|
||||
priv->vendor_specific_area1 =
|
||||
sdhci_readl(host, DWCMSHC_P_VENDOR_AREA1) & DWCMSHC_AREA1_MASK;
|
||||
@@ -1511,6 +1558,7 @@ err_rpm:
|
||||
@@ -1516,6 +1563,7 @@ err_rpm:
|
||||
pm_runtime_put_noidle(dev);
|
||||
err_clk:
|
||||
clk_disable_unprepare(pltfm_host->clk);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|||
|
||||
--- a/drivers/gpu/drm/drm_fb_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_fb_helper.c
|
||||
@@ -1803,7 +1803,7 @@ __drm_fb_helper_initial_config_and_unloc
|
||||
@@ -1797,7 +1797,7 @@ __drm_fb_helper_initial_config_and_unloc
|
||||
struct drm_device *dev = fb_helper->dev;
|
||||
struct fb_info *info;
|
||||
unsigned int width, height;
|
||||
|
|
@ -28,7 +28,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|||
|
||||
width = dev->mode_config.max_width;
|
||||
height = dev->mode_config.max_height;
|
||||
@@ -1831,6 +1831,15 @@ __drm_fb_helper_initial_config_and_unloc
|
||||
@@ -1825,6 +1825,15 @@ __drm_fb_helper_initial_config_and_unloc
|
||||
* register the fbdev emulation instance in kernel_fb_helper_list. */
|
||||
mutex_unlock(&fb_helper->lock);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
From 954129f16c200e41a00ebebe2e22efc01b243538 Mon Sep 17 00:00:00 2001
|
||||
From: Dom Cobley <popcornmix@gmail.com>
|
||||
Date: Fri, 14 Nov 2025 14:08:18 +0000
|
||||
Subject: [PATCH] Revert "Revert "media: i2c: adv7180: Add support for
|
||||
V4L2_CID_LINK_FREQ""
|
||||
|
||||
This reverts commit 00ecb85c58501f8f7ae75fcb069bbbad5542e853.
|
||||
---
|
||||
drivers/media/i2c/adv7180.c | 39 +++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 37 insertions(+), 2 deletions(-)
|
||||
|
||||
From 954129f16c200e41a00ebebe2e22efc01b243538 Mon Sep 17 00:00:00 2001
|
||||
From: Dom Cobley <popcornmix@gmail.com>
|
||||
Date: Fri, 14 Nov 2025 14:08:18 +0000
|
||||
Subject: [PATCH] Revert "Revert "media: i2c: adv7180: Add support for
|
||||
V4L2_CID_LINK_FREQ""
|
||||
|
||||
This reverts commit 00ecb85c58501f8f7ae75fcb069bbbad5542e853.
|
||||
---
|
||||
drivers/media/i2c/adv7180.c | 39 +++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 37 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/media/i2c/adv7180.c
|
||||
+++ b/drivers/media/i2c/adv7180.c
|
||||
@@ -189,6 +189,16 @@
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
|
||||
--- a/drivers/usb/dwc3/core.c
|
||||
+++ b/drivers/usb/dwc3/core.c
|
||||
@@ -1485,6 +1485,9 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
@@ -1486,6 +1486,9 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
if (dwc->parkmode_disable_hs_quirk)
|
||||
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS;
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY)) {
|
||||
if (dwc->maximum_speed == USB_SPEED_FULL ||
|
||||
dwc->maximum_speed == USB_SPEED_HIGH)
|
||||
@@ -1831,6 +1834,8 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1832,6 +1835,8 @@ static void dwc3_get_properties(struct d
|
||||
"snps,parkmode-disable-ss-quirk");
|
||||
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
|
||||
"snps,parkmode-disable-hs-quirk");
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
|
||||
--- a/drivers/usb/dwc3/core.c
|
||||
+++ b/drivers/usb/dwc3/core.c
|
||||
@@ -1479,6 +1479,12 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
@@ -1480,6 +1480,12 @@ static int dwc3_core_init(struct dwc3 *d
|
||||
if (dwc->dis_tx_ipgap_linecheck_quirk)
|
||||
reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
if (dwc->parkmode_disable_ss_quirk)
|
||||
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS;
|
||||
|
||||
@@ -1830,6 +1836,10 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1831,6 +1837,10 @@ static void dwc3_get_properties(struct d
|
||||
"snps,resume-hs-terminations");
|
||||
dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev,
|
||||
"snps,ulpi-ext-vbus-drv");
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
|||
|
||||
--- a/drivers/mmc/host/sdhci-of-dwcmshc.c
|
||||
+++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
|
||||
@@ -1245,13 +1245,15 @@ static const struct dwcmshc_pltfm_data s
|
||||
@@ -1250,13 +1250,15 @@ static const struct dwcmshc_pltfm_data s
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring)
|
||||
{
|
||||
struct xhci_segment *seg;
|
||||
@@ -4791,7 +4795,7 @@ static u16 xhci_calculate_u1_timeout(str
|
||||
@@ -4792,7 +4796,7 @@ static u16 xhci_calculate_u1_timeout(str
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||
timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc);
|
||||
else
|
||||
timeout_ns = udev->u1_params.sel;
|
||||
@@ -4855,7 +4859,7 @@ static u16 xhci_calculate_u2_timeout(str
|
||||
@@ -4856,7 +4860,7 @@ static u16 xhci_calculate_u2_timeout(str
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
|
|||
{
|
||||
--- a/drivers/mtd/nand/mtk_bmt.c
|
||||
+++ b/drivers/mtd/nand/mtk_bmt.c
|
||||
@@ -422,6 +422,8 @@ int mtk_bmt_attach(struct mtd_info *mtd)
|
||||
@@ -421,6 +421,8 @@ int mtk_bmt_attach(struct mtd_info *mtd)
|
||||
bmtd.ops = &mtk_bmt_nmbm_ops;
|
||||
else if (of_property_read_bool(np, "mediatek,bbt"))
|
||||
bmtd.ops = &mtk_bmt_bbt_ops;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
|
||||
{
|
||||
@@ -1575,6 +1576,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1577,6 +1578,7 @@ static int spinand_probe(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
ret = mtd_device_register(mtd, NULL, 0);
|
||||
if (ret)
|
||||
goto err_spinand_cleanup;
|
||||
@@ -1582,6 +1584,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1584,6 +1586,7 @@ static int spinand_probe(struct spi_mem
|
||||
return 0;
|
||||
|
||||
err_spinand_cleanup:
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
spinand_cleanup(spinand);
|
||||
|
||||
return ret;
|
||||
@@ -1600,6 +1603,7 @@ static int spinand_remove(struct spi_mem
|
||||
@@ -1602,6 +1605,7 @@ static int spinand_remove(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
From fd9862f726aedbc2f29a29916cabed7bcf5cadb6 Mon Sep 17 00:00:00 2001
|
||||
From: Hang Zhou <929513338@qq.com>
|
||||
Date: Mon, 17 Nov 2025 01:08:35 +1100
|
||||
Subject: [PATCH] spi: bcm63xx: fix premature CS deassertion on RX-only
|
||||
transactions
|
||||
|
||||
On BCM6358 (and also observed on BCM6368) the controller appears to
|
||||
only generate as many SPI clocks as bytes that have been written into
|
||||
the TX FIFO. For RX-only transfers the driver programs the transfer
|
||||
length in SPI_MSG_CTL but does not write anything into the FIFO, so
|
||||
chip select is deasserted early and the RX transfer segment is never
|
||||
fully clocked in.
|
||||
|
||||
A concrete failing case is a three-transfer MAC address read from
|
||||
SPI-NOR:
|
||||
- TX 0x03 (read command)
|
||||
- TX 3-byte address
|
||||
- RX 6 bytes (MAC)
|
||||
|
||||
In contrast, a two-transfer JEDEC-ID read (0x9f + 6-byte RX) works
|
||||
because the driver uses prepend_len and writes dummy bytes into the
|
||||
TX FIFO for the RX part.
|
||||
|
||||
Fix this by writing 0xff dummy bytes into the TX FIFO for RX-only
|
||||
segments so that the number of bytes written to the FIFO matches the
|
||||
total message length seen by the controller.
|
||||
|
||||
Fixes: b17de076062a ("spi/bcm63xx: work around inability to keep CS up")
|
||||
|
||||
Signed-off-by: Hang Zhou <929513338@qq.com>
|
||||
Link: https://patch.msgid.link/tencent_7AC88FCB3076489A4A7E6C2163DF1ACF8D06@qq.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/spi/spi-bcm63xx.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
--- a/drivers/spi/spi-bcm63xx.c
|
||||
+++ b/drivers/spi/spi-bcm63xx.c
|
||||
@@ -247,6 +247,20 @@ static int bcm63xx_txrx_bufs(struct spi_
|
||||
|
||||
if (t->rx_buf) {
|
||||
do_rx = true;
|
||||
+
|
||||
+ /*
|
||||
+ * In certain hardware implementations, there appears to be a
|
||||
+ * hidden accumulator that tracks the number of bytes written into
|
||||
+ * the hardware FIFO, and this accumulator overrides the length in
|
||||
+ * the SPI_MSG_CTL register.
|
||||
+ *
|
||||
+ * Therefore, for read-only transfers, we need to write some dummy
|
||||
+ * value into the FIFO to keep the accumulator tracking the correct
|
||||
+ * length.
|
||||
+ */
|
||||
+ if (!t->tx_buf)
|
||||
+ memset_io(bs->tx_io + len, 0xFF, t->len);
|
||||
+
|
||||
/* prepend is half-duplex write only */
|
||||
if (t == first)
|
||||
prepend_len = 0;
|
||||
|
|
@ -4223,6 +4223,11 @@ CONFIG_NET_SOCK_MSG=y
|
|||
CONFIG_NET_SWITCHDEV=y
|
||||
# CONFIG_NET_TC_SKB_EXT is not set
|
||||
# CONFIG_NET_TEAM is not set
|
||||
# CONFIG_NET_TEAM_MODE_ACTIVEBACKUP is not set
|
||||
# CONFIG_NET_TEAM_MODE_BROADCAST is not set
|
||||
# CONFIG_NET_TEAM_MODE_LOADBALANCE is not set
|
||||
# CONFIG_NET_TEAM_MODE_RANDOM is not set
|
||||
# CONFIG_NET_TEAM_MODE_ROUNDROBIN is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_NET_UDP_TUNNEL is not set
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
|
|
|
|||
|
|
@ -16,11 +16,10 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/rtl8366.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/of_mdio.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#ifdef CONFIG_RTL8366_SMI_DEBUG_FS
|
||||
#include <linux/debugfs.h>
|
||||
|
|
@ -1011,13 +1010,8 @@ static inline void rtl8366_debugfs_remove(struct rtl8366_smi *smi) {}
|
|||
static int rtl8366_smi_mii_init(struct rtl8366_smi *smi)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
struct device_node *np = NULL;
|
||||
|
||||
np = of_get_child_by_name(smi->parent->of_node, "mdio-bus");
|
||||
#endif
|
||||
|
||||
smi->mii_bus = mdiobus_alloc();
|
||||
if (smi->mii_bus == NULL) {
|
||||
ret = -ENOMEM;
|
||||
|
|
@ -1033,11 +1027,10 @@ static int rtl8366_smi_mii_init(struct rtl8366_smi *smi)
|
|||
smi->mii_bus->parent = smi->parent;
|
||||
smi->mii_bus->phy_mask = ~(0x1f);
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
np = of_get_child_by_name(smi->parent->of_node, "mdio-bus");
|
||||
if (np)
|
||||
ret = of_mdiobus_register(smi->mii_bus, np);
|
||||
else
|
||||
#endif
|
||||
ret = mdiobus_register(smi->mii_bus);
|
||||
|
||||
if (ret)
|
||||
|
|
@ -1412,45 +1405,6 @@ static void __rtl8366_smi_cleanup(struct rtl8366_smi *smi)
|
|||
}
|
||||
}
|
||||
|
||||
enum rtl8366_type rtl8366_smi_detect(struct rtl8366_platform_data *pdata)
|
||||
{
|
||||
static struct rtl8366_smi smi;
|
||||
enum rtl8366_type type = RTL8366_TYPE_UNKNOWN;
|
||||
u32 reg = 0;
|
||||
|
||||
memset(&smi, 0, sizeof(smi));
|
||||
smi.gpio_sda = pdata->gpio_sda;
|
||||
smi.gpio_sck = pdata->gpio_sck;
|
||||
smi.clk_delay = 10;
|
||||
smi.cmd_read = 0xa9;
|
||||
smi.cmd_write = 0xa8;
|
||||
|
||||
if (__rtl8366_smi_init(&smi, "rtl8366"))
|
||||
goto out;
|
||||
|
||||
if (rtl8366_smi_read_reg(&smi, 0x5c, ®))
|
||||
goto cleanup;
|
||||
|
||||
switch(reg) {
|
||||
case 0x6027:
|
||||
printk("Found an RTL8366S switch\n");
|
||||
type = RTL8366_TYPE_S;
|
||||
break;
|
||||
case 0x5937:
|
||||
printk("Found an RTL8366RB switch\n");
|
||||
type = RTL8366_TYPE_RB;
|
||||
break;
|
||||
default:
|
||||
printk("Found an Unknown RTL8366 switch (id=0x%04x)\n", reg);
|
||||
break;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
__rtl8366_smi_cleanup(&smi);
|
||||
out:
|
||||
return type;
|
||||
}
|
||||
|
||||
int rtl8366_smi_init(struct rtl8366_smi *smi)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -1518,7 +1472,6 @@ void rtl8366_smi_cleanup(struct rtl8366_smi *smi)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(rtl8366_smi_cleanup);
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static void rtl8366_smi_reset(struct rtl8366_smi *smi, bool active)
|
||||
{
|
||||
if (active)
|
||||
|
|
@ -1570,30 +1523,6 @@ try_gpio:
|
|||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline int rtl8366_smi_probe_of(struct platform_device *pdev, struct rtl8366_smi *smi)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int rtl8366_smi_probe_plat(struct platform_device *pdev, struct rtl8366_smi *smi)
|
||||
{
|
||||
struct rtl8366_platform_data *pdata = pdev->dev.platform_data;
|
||||
|
||||
if (!pdev->dev.platform_data) {
|
||||
dev_err(&pdev->dev, "no platform data specified\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
smi->gpio_sda = pdata->gpio_sda;
|
||||
smi->gpio_sck = pdata->gpio_sck;
|
||||
smi->hw_reset = pdata->hw_reset;
|
||||
smi->phy_id = MDC_REALTEK_PHY_ADDR;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
struct rtl8366_smi *rtl8366_smi_probe(struct platform_device *pdev)
|
||||
{
|
||||
|
|
@ -1604,11 +1533,7 @@ struct rtl8366_smi *rtl8366_smi_probe(struct platform_device *pdev)
|
|||
if (!smi)
|
||||
return NULL;
|
||||
|
||||
if (pdev->dev.of_node)
|
||||
err = rtl8366_smi_probe_of(pdev, smi);
|
||||
else
|
||||
err = rtl8366_smi_probe_plat(pdev, smi);
|
||||
|
||||
err = rtl8366_smi_probe_of(pdev, smi);
|
||||
if (err)
|
||||
goto free_smi;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,15 +16,15 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/rtl8366.h>
|
||||
|
||||
#include "rtl8366_smi.h"
|
||||
|
||||
#define RTL8366RB_DRIVER_DESC "Realtek RTL8366RB ethernet switch driver"
|
||||
#define RTL8366RB_DRIVER_VER "0.2.4"
|
||||
#define RTL8366RB_DRIVER_NAME "rtl8366rb"
|
||||
|
||||
#define RTL8366RB_PHY_NO_MAX 4
|
||||
#define RTL8366RB_PHY_PAGE_MAX 7
|
||||
|
|
@ -285,13 +285,10 @@ static int rtl8366rb_reset_chip(struct rtl8366_smi *smi)
|
|||
static int rtl8366rb_setup(struct rtl8366_smi *smi)
|
||||
{
|
||||
int err;
|
||||
#ifdef CONFIG_OF
|
||||
unsigned i;
|
||||
struct device_node *np;
|
||||
unsigned num_initvals;
|
||||
const __be32 *paddr;
|
||||
|
||||
np = smi->parent->of_node;
|
||||
struct device_node *np = smi->parent->of_node;
|
||||
|
||||
paddr = of_get_property(np, "realtek,initvals", &num_initvals);
|
||||
if (paddr) {
|
||||
|
|
@ -309,7 +306,6 @@ static int rtl8366rb_setup(struct rtl8366_smi *smi)
|
|||
REG_WR(smi, reg, val);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* set maximum packet length to 1536 bytes */
|
||||
REG_RMW(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_MAX_LENGTH_MASK,
|
||||
|
|
@ -1490,18 +1486,16 @@ static void rtl8366rb_remove(struct platform_device *pdev)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id rtl8366rb_match[] = {
|
||||
{ .compatible = "realtek,rtl8366rb" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rtl8366rb_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver rtl8366rb_driver = {
|
||||
.driver = {
|
||||
.name = RTL8366RB_DRIVER_NAME,
|
||||
.of_match_table = of_match_ptr(rtl8366rb_match),
|
||||
.of_match_table = rtl8366rb_match,
|
||||
},
|
||||
.probe = rtl8366rb_probe,
|
||||
.remove_new = rtl8366rb_remove,
|
||||
|
|
|
|||
|
|
@ -14,15 +14,15 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/rtl8366.h>
|
||||
|
||||
#include "rtl8366_smi.h"
|
||||
|
||||
#define RTL8366S_DRIVER_DESC "Realtek RTL8366S ethernet switch driver"
|
||||
#define RTL8366S_DRIVER_VER "0.2.2"
|
||||
#define RTL8366S_DRIVER_NAME "rtl8366s"
|
||||
|
||||
#define RTL8366S_PHY_NO_MAX 4
|
||||
#define RTL8366S_PHY_PAGE_MAX 7
|
||||
|
|
@ -375,25 +375,11 @@ static int rtl8366s_set_green(struct rtl8366_smi *smi, int enable)
|
|||
|
||||
static int rtl8366s_setup(struct rtl8366_smi *smi)
|
||||
{
|
||||
struct rtl8366_platform_data *pdata;
|
||||
int err;
|
||||
unsigned i;
|
||||
#ifdef CONFIG_OF
|
||||
struct device_node *np;
|
||||
unsigned num_initvals;
|
||||
const __be32 *paddr;
|
||||
#endif
|
||||
|
||||
pdata = smi->parent->platform_data;
|
||||
if (pdata && pdata->num_initvals && pdata->initvals) {
|
||||
dev_info(smi->parent, "applying initvals\n");
|
||||
for (i = 0; i < pdata->num_initvals; i++)
|
||||
REG_WR(smi, pdata->initvals[i].reg,
|
||||
pdata->initvals[i].val);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
np = smi->parent->of_node;
|
||||
struct device_node *np = smi->parent->of_node;
|
||||
|
||||
paddr = of_get_property(np, "realtek,initvals", &num_initvals);
|
||||
if (paddr) {
|
||||
|
|
@ -425,7 +411,6 @@ static int rtl8366s_setup(struct rtl8366_smi *smi)
|
|||
return err;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* set maximum packet length to 1536 bytes */
|
||||
REG_RMW(smi, RTL8366S_SGCR, RTL8366S_SGCR_MAX_LENGTH_MASK,
|
||||
|
|
@ -1278,20 +1263,16 @@ static void rtl8366s_remove(struct platform_device *pdev)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id rtl8366s_match[] = {
|
||||
{ .compatible = "realtek,rtl8366s" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rtl8366s_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver rtl8366s_driver = {
|
||||
.driver = {
|
||||
.name = RTL8366S_DRIVER_NAME,
|
||||
#ifdef CONFIG_OF
|
||||
.of_match_table = of_match_ptr(rtl8366s_match),
|
||||
#endif
|
||||
.of_match_table = rtl8366s_match,
|
||||
},
|
||||
.probe = rtl8366s_probe,
|
||||
.remove_new = rtl8366s_remove,
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/rtl8367.h>
|
||||
|
||||
#include "rtl8367.h"
|
||||
#include "rtl8366_smi.h"
|
||||
|
||||
#define RTL8367_RESET_DELAY 1000 /* msecs*/
|
||||
|
|
@ -1076,7 +1076,6 @@ static int rtl8367_led_blinkrate_set(struct rtl8366_smi *smi, unsigned int rate)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static int rtl8367_extif_init_of(struct rtl8366_smi *smi,
|
||||
const char *name)
|
||||
{
|
||||
|
|
@ -1133,40 +1132,20 @@ err_init:
|
|||
|
||||
return err;
|
||||
}
|
||||
#else
|
||||
static int rtl8367_extif_init_of(struct rtl8366_smi *smi,
|
||||
const char *name)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int rtl8367_setup(struct rtl8366_smi *smi)
|
||||
{
|
||||
struct rtl8367_platform_data *pdata;
|
||||
int err;
|
||||
int i;
|
||||
|
||||
pdata = smi->parent->platform_data;
|
||||
|
||||
err = rtl8367_init_regs(smi);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* initialize external interfaces */
|
||||
if (smi->parent->of_node) {
|
||||
err = rtl8367_extif_init_of(smi, "realtek,extif");
|
||||
if (err)
|
||||
return err;
|
||||
} else {
|
||||
err = rtl8367_extif_init(smi, 0, pdata->extif0_cfg);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = rtl8367_extif_init(smi, 1, pdata->extif1_cfg);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
err = rtl8367_extif_init_of(smi, "realtek,extif");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* set maximum packet length to 1536 bytes */
|
||||
REG_RMW(smi, RTL8367_SWC0_REG, RTL8367_SWC0_MAX_LENGTH_MASK,
|
||||
|
|
@ -1821,20 +1800,16 @@ static void rtl8367_shutdown(struct platform_device *pdev)
|
|||
rtl8367_reset_chip(smi);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id rtl8367_match[] = {
|
||||
{ .compatible = "realtek,rtl8367" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rtl8367_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver rtl8367_driver = {
|
||||
.driver = {
|
||||
.name = RTL8367_DRIVER_NAME,
|
||||
#ifdef CONFIG_OF
|
||||
.of_match_table = of_match_ptr(rtl8367_match),
|
||||
#endif
|
||||
.of_match_table = rtl8367_match,
|
||||
},
|
||||
.probe = rtl8367_probe,
|
||||
.remove_new = rtl8367_remove,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Platform data definition for the Realtek RTL8367 ethernet switch driver
|
||||
* Realtek RTL8367 ethernet switch driver
|
||||
*
|
||||
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
|
|
@ -51,13 +51,4 @@ struct rtl8367_extif_config {
|
|||
struct rtl8367_port_ability ability;
|
||||
};
|
||||
|
||||
struct rtl8367_platform_data {
|
||||
unsigned gpio_sda;
|
||||
unsigned gpio_sck;
|
||||
void (*hw_reset)(bool active);
|
||||
|
||||
struct rtl8367_extif_config *extif0_cfg;
|
||||
struct rtl8367_extif_config *extif1_cfg;
|
||||
};
|
||||
|
||||
#endif /* _RTL8367_H */
|
||||
|
|
@ -15,11 +15,11 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/rtl8367.h>
|
||||
|
||||
#include "rtl8367.h"
|
||||
#include "rtl8366_smi.h"
|
||||
|
||||
#define RTL8367B_RESET_DELAY 1000 /* msecs*/
|
||||
|
|
@ -765,7 +765,6 @@ static int rtl8367b_extif_init(struct rtl8366_smi *smi, int id,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static int rtl8367b_extif_init_of(struct rtl8366_smi *smi,
|
||||
const char *name)
|
||||
{
|
||||
|
|
@ -842,40 +841,20 @@ err_init:
|
|||
|
||||
return err;
|
||||
}
|
||||
#else
|
||||
static int rtl8367b_extif_init_of(struct rtl8366_smi *smi,
|
||||
const char *name)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int rtl8367b_setup(struct rtl8366_smi *smi)
|
||||
{
|
||||
struct rtl8367_platform_data *pdata;
|
||||
int err;
|
||||
int i;
|
||||
|
||||
pdata = smi->parent->platform_data;
|
||||
|
||||
err = rtl8367b_init_regs(smi);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* initialize external interfaces */
|
||||
if (smi->parent->of_node) {
|
||||
err = rtl8367b_extif_init_of(smi, "realtek,extif");
|
||||
if (err)
|
||||
return err;
|
||||
} else {
|
||||
err = rtl8367b_extif_init(smi, 0, pdata->extif0_cfg);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = rtl8367b_extif_init(smi, 1, pdata->extif1_cfg);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
err = rtl8367b_extif_init_of(smi, "realtek,extif");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* set maximum packet length to 1536 bytes */
|
||||
REG_RMW(smi, RTL8367B_SWC0_REG, RTL8367B_SWC0_MAX_LENGTH_MASK,
|
||||
|
|
@ -1619,20 +1598,16 @@ static void rtl8367b_shutdown(struct platform_device *pdev)
|
|||
rtl8367b_reset_chip(smi);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id rtl8367b_match[] = {
|
||||
{ .compatible = "realtek,rtl8367b" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rtl8367b_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver rtl8367b_driver = {
|
||||
.driver = {
|
||||
.name = RTL8367B_DRIVER_NAME,
|
||||
#ifdef CONFIG_OF
|
||||
.of_match_table = of_match_ptr(rtl8367b_match),
|
||||
#endif
|
||||
.of_match_table = rtl8367b_match,
|
||||
},
|
||||
.probe = rtl8367b_probe,
|
||||
.remove_new = rtl8367b_remove,
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Platform data definition for the Realtek RTL8366RB/S ethernet switch driver
|
||||
*
|
||||
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _RTL8366_H
|
||||
#define _RTL8366_H
|
||||
|
||||
#define RTL8366_DRIVER_NAME "rtl8366"
|
||||
#define RTL8366S_DRIVER_NAME "rtl8366s"
|
||||
#define RTL8366RB_DRIVER_NAME "rtl8366rb"
|
||||
|
||||
struct rtl8366_smi;
|
||||
|
||||
enum rtl8366_type {
|
||||
RTL8366_TYPE_UNKNOWN,
|
||||
RTL8366_TYPE_S,
|
||||
RTL8366_TYPE_RB,
|
||||
};
|
||||
|
||||
struct rtl8366_initval {
|
||||
unsigned reg;
|
||||
u16 val;
|
||||
};
|
||||
|
||||
struct rtl8366_platform_data {
|
||||
unsigned gpio_sda;
|
||||
unsigned gpio_sck;
|
||||
void (*hw_reset)(struct rtl8366_smi *smi, bool active);
|
||||
|
||||
unsigned num_initvals;
|
||||
struct rtl8366_initval *initvals;
|
||||
};
|
||||
|
||||
enum rtl8366_type rtl8366_smi_detect(struct rtl8366_platform_data *pdata);
|
||||
|
||||
#endif /* _RTL8366_H */
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
LINUX_VERSION-6.12 = .60
|
||||
LINUX_KERNEL_HASH-6.12.60 = a63096b2147411d683cecbf87622bb2ff4885bac2b3641d3d4f10250c89cdcf8
|
||||
LINUX_VERSION-6.12 = .62
|
||||
LINUX_KERNEL_HASH-6.12.62 = 13e2c685ac8fab5dd992dd105732554dae514aef350c2a8c7418e7b74eb62c13
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 15 Dec 2025 01:45:07 +0100
|
||||
Subject: Revert "MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow"
|
||||
|
||||
This reverts commit 63a93d1cd6077d79735f804f5a4957bfb240280c.
|
||||
---
|
||||
arch/mips/mm/tlb-r4k.c | 18 ++----------------
|
||||
1 file changed, 2 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/arch/mips/mm/tlb-r4k.c
|
||||
+++ b/arch/mips/mm/tlb-r4k.c
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/smp.h>
|
||||
-#include <linux/memblock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/export.h>
|
||||
@@ -523,26 +522,17 @@ static int r4k_vpn_cmp(const void *a, co
|
||||
* Initialise all TLB entries with unique values that do not clash with
|
||||
* what we have been handed over and what we'll be using ourselves.
|
||||
*/
|
||||
-static void __ref r4k_tlb_uniquify(void)
|
||||
+static void r4k_tlb_uniquify(void)
|
||||
{
|
||||
+ unsigned long tlb_vpns[1 << MIPS_CONF1_TLBS_SIZE];
|
||||
int tlbsize = current_cpu_data.tlbsize;
|
||||
- bool use_slab = slab_is_available();
|
||||
int start = num_wired_entries();
|
||||
- phys_addr_t tlb_vpn_size;
|
||||
- unsigned long *tlb_vpns;
|
||||
unsigned long vpn_mask;
|
||||
int cnt, ent, idx, i;
|
||||
|
||||
vpn_mask = GENMASK(cpu_vmbits - 1, 13);
|
||||
vpn_mask |= IS_ENABLED(CONFIG_64BIT) ? 3ULL << 62 : 1 << 31;
|
||||
|
||||
- tlb_vpn_size = tlbsize * sizeof(*tlb_vpns);
|
||||
- tlb_vpns = (use_slab ?
|
||||
- kmalloc(tlb_vpn_size, GFP_KERNEL) :
|
||||
- memblock_alloc_raw(tlb_vpn_size, sizeof(*tlb_vpns)));
|
||||
- if (WARN_ON(!tlb_vpns))
|
||||
- return; /* Pray local_flush_tlb_all() is good enough. */
|
||||
-
|
||||
htw_stop();
|
||||
|
||||
for (i = start, cnt = 0; i < tlbsize; i++, cnt++) {
|
||||
@@ -595,10 +585,6 @@ static void __ref r4k_tlb_uniquify(void)
|
||||
tlbw_use_hazard();
|
||||
htw_start();
|
||||
flush_micro_tlb();
|
||||
- if (use_slab)
|
||||
- kfree(tlb_vpns);
|
||||
- else
|
||||
- memblock_free(tlb_vpns, tlb_vpn_size);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 15 Dec 2025 01:45:20 +0100
|
||||
Subject: Revert "MIPS: mm: Prevent a TLB shutdown on initial uniquification"
|
||||
|
||||
This reverts commit 135178e90aa43ad949534e1d6e376c4034942caa.
|
||||
---
|
||||
arch/mips/mm/tlb-r4k.c | 100 +++++++++++++++--------------------------
|
||||
1 file changed, 37 insertions(+), 63 deletions(-)
|
||||
|
||||
--- a/arch/mips/mm/tlb-r4k.c
|
||||
+++ b/arch/mips/mm/tlb-r4k.c
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/export.h>
|
||||
-#include <linux/sort.h>
|
||||
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/cpu-type.h>
|
||||
@@ -509,79 +508,55 @@ static int __init set_ntlb(char *str)
|
||||
|
||||
__setup("ntlb=", set_ntlb);
|
||||
|
||||
-
|
||||
-/* Comparison function for EntryHi VPN fields. */
|
||||
-static int r4k_vpn_cmp(const void *a, const void *b)
|
||||
-{
|
||||
- long v = *(unsigned long *)a - *(unsigned long *)b;
|
||||
- int s = sizeof(long) > sizeof(int) ? sizeof(long) * 8 - 1: 0;
|
||||
- return s ? (v != 0) | v >> s : v;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- * Initialise all TLB entries with unique values that do not clash with
|
||||
- * what we have been handed over and what we'll be using ourselves.
|
||||
- */
|
||||
+/* Initialise all TLB entries with unique values */
|
||||
static void r4k_tlb_uniquify(void)
|
||||
{
|
||||
- unsigned long tlb_vpns[1 << MIPS_CONF1_TLBS_SIZE];
|
||||
- int tlbsize = current_cpu_data.tlbsize;
|
||||
- int start = num_wired_entries();
|
||||
- unsigned long vpn_mask;
|
||||
- int cnt, ent, idx, i;
|
||||
-
|
||||
- vpn_mask = GENMASK(cpu_vmbits - 1, 13);
|
||||
- vpn_mask |= IS_ENABLED(CONFIG_64BIT) ? 3ULL << 62 : 1 << 31;
|
||||
+ int entry = num_wired_entries();
|
||||
|
||||
htw_stop();
|
||||
+ write_c0_entrylo0(0);
|
||||
+ write_c0_entrylo1(0);
|
||||
|
||||
- for (i = start, cnt = 0; i < tlbsize; i++, cnt++) {
|
||||
- unsigned long vpn;
|
||||
+ while (entry < current_cpu_data.tlbsize) {
|
||||
+ unsigned long asid_mask = cpu_asid_mask(¤t_cpu_data);
|
||||
+ unsigned long asid = 0;
|
||||
+ int idx;
|
||||
|
||||
- write_c0_index(i);
|
||||
- mtc0_tlbr_hazard();
|
||||
- tlb_read();
|
||||
- tlb_read_hazard();
|
||||
- vpn = read_c0_entryhi();
|
||||
- vpn &= vpn_mask & PAGE_MASK;
|
||||
- tlb_vpns[cnt] = vpn;
|
||||
+ /* Skip wired MMID to make ginvt_mmid work */
|
||||
+ if (cpu_has_mmid)
|
||||
+ asid = MMID_KERNEL_WIRED + 1;
|
||||
|
||||
- /* Prevent any large pages from overlapping regular ones. */
|
||||
- write_c0_pagemask(read_c0_pagemask() & PM_DEFAULT_MASK);
|
||||
+ /* Check for match before using UNIQUE_ENTRYHI */
|
||||
+ do {
|
||||
+ if (cpu_has_mmid) {
|
||||
+ write_c0_memorymapid(asid);
|
||||
+ write_c0_entryhi(UNIQUE_ENTRYHI(entry));
|
||||
+ } else {
|
||||
+ write_c0_entryhi(UNIQUE_ENTRYHI(entry) | asid);
|
||||
+ }
|
||||
+ mtc0_tlbw_hazard();
|
||||
+ tlb_probe();
|
||||
+ tlb_probe_hazard();
|
||||
+ idx = read_c0_index();
|
||||
+ /* No match or match is on current entry */
|
||||
+ if (idx < 0 || idx == entry)
|
||||
+ break;
|
||||
+ /*
|
||||
+ * If we hit a match, we need to try again with
|
||||
+ * a different ASID.
|
||||
+ */
|
||||
+ asid++;
|
||||
+ } while (asid < asid_mask);
|
||||
+
|
||||
+ if (idx >= 0 && idx != entry)
|
||||
+ panic("Unable to uniquify TLB entry %d", idx);
|
||||
+
|
||||
+ write_c0_index(entry);
|
||||
mtc0_tlbw_hazard();
|
||||
tlb_write_indexed();
|
||||
- tlbw_use_hazard();
|
||||
+ entry++;
|
||||
}
|
||||
|
||||
- sort(tlb_vpns, cnt, sizeof(tlb_vpns[0]), r4k_vpn_cmp, NULL);
|
||||
-
|
||||
- write_c0_pagemask(PM_DEFAULT_MASK);
|
||||
- write_c0_entrylo0(0);
|
||||
- write_c0_entrylo1(0);
|
||||
-
|
||||
- idx = 0;
|
||||
- ent = tlbsize;
|
||||
- for (i = start; i < tlbsize; i++)
|
||||
- while (1) {
|
||||
- unsigned long entryhi, vpn;
|
||||
-
|
||||
- entryhi = UNIQUE_ENTRYHI(ent);
|
||||
- vpn = entryhi & vpn_mask & PAGE_MASK;
|
||||
-
|
||||
- if (idx >= cnt || vpn < tlb_vpns[idx]) {
|
||||
- write_c0_entryhi(entryhi);
|
||||
- write_c0_index(i);
|
||||
- mtc0_tlbw_hazard();
|
||||
- tlb_write_indexed();
|
||||
- ent++;
|
||||
- break;
|
||||
- } else if (vpn == tlb_vpns[idx]) {
|
||||
- ent++;
|
||||
- } else {
|
||||
- idx++;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
tlbw_use_hazard();
|
||||
htw_start();
|
||||
flush_micro_tlb();
|
||||
@@ -627,7 +602,6 @@ static void r4k_tlb_configure(void)
|
||||
|
||||
/* From this point on the ARC firmware is dead. */
|
||||
r4k_tlb_uniquify();
|
||||
- local_flush_tlb_all();
|
||||
|
||||
/* Did I tell you that ARC SUCKS? */
|
||||
}
|
||||
|
|
@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -23668,6 +23668,12 @@ F: Documentation/filesystems/ubifs-authe
|
||||
@@ -23663,6 +23663,12 @@ F: Documentation/filesystems/ubifs-authe
|
||||
F: Documentation/filesystems/ubifs.rst
|
||||
F: fs/ubifs/
|
||||
|
||||
|
|
|
|||
|
|
@ -70,14 +70,14 @@ ipq40xx_setup_interfaces()
|
|||
buffalo,wtr-m2133hp|\
|
||||
ezviz,cs-w3-wd1200g-eup|\
|
||||
netgear,rbr40|\
|
||||
netgear,rbs40|\
|
||||
netgear,rbr50|\
|
||||
netgear,rbs50|\
|
||||
netgear,srr60|\
|
||||
netgear,srs60)
|
||||
netgear,srr60)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
|
||||
;;
|
||||
avm,fritzbox-7530)
|
||||
avm,fritzbox-7530|\
|
||||
netgear,rbs40|\
|
||||
netgear,rbs50|\
|
||||
netgear,srs60)
|
||||
ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
|
||||
;;
|
||||
avm,fritzrepeater-3000|\
|
||||
|
|
@ -244,10 +244,9 @@ ipq40xx_setup_macs()
|
|||
lan_mac=$(cat /sys/firmware/mikrotik/hard_config/mac_base)
|
||||
label_mac="$lan_mac"
|
||||
;;
|
||||
netgear,rbr40|\
|
||||
netgear,rbr50|\
|
||||
netgear,rbs50|\
|
||||
netgear,srr60|\
|
||||
netgear,srs60|\
|
||||
pakedge,wr-1)
|
||||
wan_mac=$(macaddr_add $(get_mac_label) 1)
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
|
||||
&swport1 {
|
||||
status = "okay";
|
||||
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
&swport2 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
&swport3 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
&swport4 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan3";
|
||||
};
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
|
||||
&swport1 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
&swport2 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
&swport3 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan3";
|
||||
};
|
||||
|
||||
&swport4 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan4";
|
||||
};
|
||||
|
|
@ -204,49 +204,65 @@
|
|||
reg = <0x27>;
|
||||
|
||||
led0@0 {
|
||||
label = "rgb:led0";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <0>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x0>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led1@1 {
|
||||
label = "rgb:led1";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <1>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x1>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led2@2 {
|
||||
label = "rgb:led2";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <2>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x2>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led3@3 {
|
||||
label = "rgb:led3";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <3>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x3>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led4@4 {
|
||||
label = "rgb:led4";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <4>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x4>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led5@5 {
|
||||
label = "rgb:led5";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <5>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x5>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led6@6 {
|
||||
label = "rgb:led6";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <6>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x6>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
led7@7 {
|
||||
label = "rgb:led7";
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
function-enumerator = <7>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
reg = <0x7>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
|
@ -278,30 +294,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&swport1 {
|
||||
status = "okay";
|
||||
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
&swport2 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
&swport3 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
&swport4 {
|
||||
status = "okay";
|
||||
|
||||
label = "lan3";
|
||||
};
|
||||
|
||||
ðphy4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
@ -312,24 +304,3 @@
|
|||
perst-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
wake-gpios = <&tlmm 50 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5470000 5875000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-router.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR RBR40";
|
||||
|
|
@ -10,3 +10,24 @@
|
|||
bootargs = "root=/dev/mmcblk0p20 blkdevparts=mmcblk0:512K@17K(0:SBL1)ro,512K(0:BOOTCONFIG)ro,512K(0:QSEE)ro,512K(0:QSEE_ALT)ro,256K(0:CDT)ro,256K(0:CDT_ALT)ro,256K(0:DDRPARAMS)ro,256K(0:APPSBLENV)ro,1M(0:APPSBL)ro,1M(0:APPSBL_ALT)ro,256K(0:ART)ro,256K(ARTMTD)ro,2M(language)ro,256K(config)ro,256K(pot)ro,256K(traffic_meter)ro,256K(pot_bak)ro,256K(traffic_meter.bak)ro,3840K(kernel),31488K(rootfs),35328K@9233K(firmware),256K(mtdoops)ro,1457651200(reserved)ro,-(unallocated) rootfstype=squashfs,ext4 rootwait";
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5170000 5350000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-router.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR RBR50";
|
||||
|
|
@ -26,3 +26,24 @@
|
|||
&usb2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5470000 5875000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-satellite.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR RBS40";
|
||||
|
|
@ -10,3 +10,24 @@
|
|||
bootargs = "root=/dev/mmcblk0p20 blkdevparts=mmcblk0:512K@17K(0:SBL1)ro,512K(0:BOOTCONFIG)ro,512K(0:QSEE)ro,512K(0:QSEE_ALT)ro,256K(0:CDT)ro,256K(0:CDT_ALT)ro,256K(0:DDRPARAMS)ro,256K(0:APPSBLENV)ro,1M(0:APPSBL)ro,1M(0:APPSBL_ALT)ro,256K(0:ART)ro,256K(ARTMTD)ro,2M(language)ro,256K(config)ro,256K(pot)ro,256K(traffic_meter)ro,256K(pot_bak)ro,256K(traffic_meter.bak)ro,3840K(kernel),31488K(rootfs),35328K@9233K(firmware),256K(mtdoops)ro,1457651200(reserved)ro,-(unallocated) rootfstype=squashfs,ext4 rootwait";
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5170000 5350000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-RBK40";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-satellite.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR RBS50";
|
||||
|
|
@ -26,3 +26,24 @@
|
|||
&usb2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5470000 5875000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-router.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR SRR60";
|
||||
|
|
@ -10,3 +10,24 @@
|
|||
bootargs = "root=/dev/mmcblk0p20 blkdevparts=mmcblk0:512K@17K(0:SBL1)ro,512K(0:BOOTCONFIG)ro,512K(0:QSEE)ro,512K(0:QSEE_1)ro,256K(0:CDT)ro,256K(0:CDT_1)ro,512K(0:BOOTCONFIG1)ro,256K(0:APPSBLENV)ro,1M(0:APPSBL)ro,1M(0:APPSBL_1)ro,256K(0:ART)ro,256K(ARTMTD)ro,2M(language)ro,256K(config)ro,256K(pot)ro,256K(traffic_meter)ro,256K(pot_bak)ro,256K(traffic_meter.bak)ro,3840K(kernel),31488K(rootfs),35328K@9233K(firmware),256K(mtdoops)ro,64K(cert)ro,3840K(kernel-2)ro,31488K(rootfs-2)ro,35328K@44881K(firmware-2)ro,5M(device_table)ro,17M(cp_file)ro,102737K(reserved)ro,-(unallocated) rootfstype=squashfs,ext4 rootwait";
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5470000 5875000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qcom-ipq4019-orbi.dtsi"
|
||||
#include "qcom-ipq4019-orbi-satellite.dtsi"
|
||||
|
||||
/ {
|
||||
model = "NETGEAR SRS60";
|
||||
|
|
@ -10,3 +10,24 @@
|
|||
bootargs = "root=/dev/mmcblk0p20 blkdevparts=mmcblk0:512K@17K(0:SBL1)ro,512K(0:BOOTCONFIG)ro,512K(0:QSEE)ro,512K(0:QSEE_1)ro,256K(0:CDT)ro,256K(0:CDT_1)ro,512K(0:BOOTCONFIG1)ro,256K(0:APPSBLENV)ro,1M(0:APPSBL)ro,1M(0:APPSBL_1)ro,256K(0:ART)ro,256K(ARTMTD)ro,2M(language)ro,256K(config)ro,256K(pot)ro,256K(traffic_meter)ro,256K(pot_bak)ro,256K(traffic_meter.bak)ro,3840K(kernel),31488K(rootfs),35328K@9233K(firmware),256K(mtdoops)ro,64K(cert)ro,3840K(kernel-2)ro,31488K(rootfs-2)ro,35328K@44881K(firmware-2)ro,5M(device_table)ro,17M(cp_file)ro,102737K(reserved)ro,-(unallocated) rootfstype=squashfs,ext4 rootwait";
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
ieee80211-freq-limit = <5470000 5875000>;
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "Netgear-Orbi-Pro-SRK60";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -904,7 +904,7 @@ define Device/netgear_orbi
|
|||
append-rootfs | pad-rootfs | netgear-dni
|
||||
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | \
|
||||
sysupgrade-tar rootfs=$$$$@ | append-metadata
|
||||
DEVICE_PACKAGES := ath10k-firmware-qca9984-ct e2fsprogs kmod-fs-ext4 losetup
|
||||
DEVICE_PACKAGES := e2fsprogs kmod-fs-ext4 losetup
|
||||
endef
|
||||
|
||||
define Device/netgear_lbr20
|
||||
|
|
@ -967,6 +967,7 @@ define Device/netgear_rbx40
|
|||
KERNEL_SIZE := 3932160
|
||||
ROOTFS_SIZE := 32243712
|
||||
IMAGE_SIZE := 36175872
|
||||
DEVICE_PACKAGES += ipq-wifi-netgear_rbk40 ath10k-firmware-qca9888-ct
|
||||
endef
|
||||
|
||||
define Device/netgear_rbr40
|
||||
|
|
@ -991,6 +992,7 @@ define Device/netgear_rbx50
|
|||
KERNEL_SIZE := 3932160
|
||||
ROOTFS_SIZE := 32243712
|
||||
IMAGE_SIZE := 36175872
|
||||
DEVICE_PACKAGES += ath10k-firmware-qca9984-ct
|
||||
endef
|
||||
|
||||
define Device/netgear_rbr50
|
||||
|
|
@ -1015,6 +1017,7 @@ define Device/netgear_srx60
|
|||
KERNEL_SIZE := 3932160
|
||||
ROOTFS_SIZE := 32243712
|
||||
IMAGE_SIZE := 36175872
|
||||
DEVICE_PACKAGES += ath10k-firmware-qca9984-ct
|
||||
endef
|
||||
|
||||
define Device/netgear_srr60
|
||||
|
|
|
|||
|
|
@ -962,7 +962,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
|
|||
L: linux-spi@vger.kernel.org
|
||||
--- a/drivers/staging/Kconfig
|
||||
+++ b/drivers/staging/Kconfig
|
||||
@@ -64,4 +64,6 @@ source "drivers/staging/fieldbus/Kconfig
|
||||
@@ -62,4 +62,6 @@ source "drivers/staging/fieldbus/Kconfig
|
||||
|
||||
source "drivers/staging/vme_user/Kconfig"
|
||||
|
||||
|
|
@ -971,7 +971,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
|
|||
endif # STAGING
|
||||
--- a/drivers/staging/Makefile
|
||||
+++ b/drivers/staging/Makefile
|
||||
@@ -21,3 +21,4 @@ obj-$(CONFIG_GREYBUS) += greybus/
|
||||
@@ -20,3 +20,4 @@ obj-$(CONFIG_GREYBUS) += greybus/
|
||||
obj-$(CONFIG_BCM2835_VCHIQ) += vc04_services/
|
||||
obj-$(CONFIG_XIL_AXIS_FIFO) += axis-fifo/
|
||||
obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ set_preinit_iface() {
|
|||
ip link set eth1 up
|
||||
ifname=eth1
|
||||
;;
|
||||
cudy,ap3000-v1|\
|
||||
cudy,ap3000outdoor-v1|\
|
||||
cudy,re3000-v1|\
|
||||
ubnt,unifi-6-lr|\
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
|
||||
{
|
||||
@@ -1575,6 +1576,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1577,6 +1578,7 @@ static int spinand_probe(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
ret = mtd_device_register(mtd, NULL, 0);
|
||||
if (ret)
|
||||
goto err_spinand_cleanup;
|
||||
@@ -1582,6 +1584,7 @@ static int spinand_probe(struct spi_mem
|
||||
@@ -1584,6 +1586,7 @@ static int spinand_probe(struct spi_mem
|
||||
return 0;
|
||||
|
||||
err_spinand_cleanup:
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
spinand_cleanup(spinand);
|
||||
|
||||
return ret;
|
||||
@@ -1600,6 +1603,7 @@ static int spinand_remove(struct spi_mem
|
||||
@@ -1602,6 +1605,7 @@ static int spinand_remove(struct spi_mem
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||
|
||||
--- a/drivers/spi/spi-mem.c
|
||||
+++ b/drivers/spi/spi-mem.c
|
||||
@@ -466,6 +466,14 @@ int spi_mem_exec_op(struct spi_mem *mem,
|
||||
@@ -486,6 +486,14 @@ int spi_mem_exec_op(struct spi_mem *mem,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(spi_mem_exec_op);
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||
* upper layer if necessary
|
||||
--- a/include/linux/spi/spi-mem.h
|
||||
+++ b/include/linux/spi/spi-mem.h
|
||||
@@ -372,6 +372,10 @@ bool spi_mem_supports_op(struct spi_mem
|
||||
@@ -390,6 +390,10 @@ bool spi_mem_supports_op(struct spi_mem
|
||||
int spi_mem_exec_op(struct spi_mem *mem,
|
||||
const struct spi_mem_op *op);
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||
static int spinand_id_detect(struct spinand_device *spinand)
|
||||
{
|
||||
u8 *id = spinand->id.data;
|
||||
@@ -1452,6 +1502,10 @@ static int spinand_init(struct spinand_d
|
||||
@@ -1454,6 +1504,10 @@ static int spinand_init(struct spinand_d
|
||||
if (!spinand->scratchbuf)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -1669,6 +1669,7 @@ static int spinand_remove(struct spi_mem
|
||||
@@ -1671,6 +1671,7 @@ static int spinand_remove(struct spi_mem
|
||||
|
||||
static const struct spi_device_id spinand_ids[] = {
|
||||
{ .name = "spi-nand" },
|
||||
|
|
@ -37,7 +37,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
{ /* sentinel */ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||
@@ -1676,6 +1677,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||
@@ -1678,6 +1679,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id spinand_of_ids[] = {
|
||||
{ .compatible = "spi-nand" },
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ ocedo,panda)
|
|||
tplink,tl-wdr4900-v1)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
|
||||
;;
|
||||
watchguard,firebox-t10)
|
||||
watchguard,firebox-t10|\
|
||||
watchguard,firebox-t15)
|
||||
ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
|
||||
;;
|
||||
*)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ platform_do_upgrade() {
|
|||
hpe,msm460|\
|
||||
ocedo,panda|\
|
||||
sophos,red-15w-rev1|\
|
||||
watchguard,firebox-t10)
|
||||
watchguard,firebox-t10|\
|
||||
watchguard,firebox-t15)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
*)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ CONFIG_EDAC_LEGACY_SYSFS=y
|
|||
CONFIG_EDAC_MPC85XX=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
# CONFIG_FIREBOX_T10 is not set
|
||||
# CONFIG_FIREBOX_T1X is not set
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FORCE_NR_CPUS=y
|
||||
CONFIG_FSL_EMB_PERFMON=y
|
||||
|
|
|
|||
|
|
@ -1,229 +1,12 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later or MIT
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/include/ "fsl/p1010si-pre.dtsi"
|
||||
#include "firebox-t1x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Watchguard Firebox T10";
|
||||
compatible = "watchguard,firebox-t10";
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
bootargs-override = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
aliases {
|
||||
spi0 = &spi0;
|
||||
led-boot = &led_mode;
|
||||
led-failsafe = &led_failover;
|
||||
led-running = &led_mode;
|
||||
led-upgrade = &led_attention;
|
||||
/delete-property/ ethernet0;
|
||||
/delete-property/ ethernet1;
|
||||
/delete-property/ ethernet2;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_attention: attention_orange {
|
||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
||||
label = "orange:attention";
|
||||
};
|
||||
|
||||
status_red {
|
||||
gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
};
|
||||
|
||||
led_mode: mode_green {
|
||||
gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
|
||||
label = "green:mode";
|
||||
};
|
||||
|
||||
led_failover: failover_green {
|
||||
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
label = "green:failover";
|
||||
};
|
||||
};
|
||||
|
||||
buttons {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "Reset button";
|
||||
gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
soc: soc@ffe00000 {
|
||||
ranges = <0x0 0x0 0xffe00000 0x100000>;
|
||||
|
||||
i2c@3000 {
|
||||
rtc@30 {
|
||||
compatible = "sii,s35390a";
|
||||
reg = <0x30>;
|
||||
};
|
||||
};
|
||||
|
||||
spi0: spi@7000 {
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
uboot: partition@0 {
|
||||
reg = <0x0 0x90000>;
|
||||
label = "u-boot";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@90000 {
|
||||
reg = <0x90000 0x10000>;
|
||||
label = "u-boot-env";
|
||||
};
|
||||
|
||||
partition@a0000 {
|
||||
reg = <0xa0000 0x20000>;
|
||||
label = "cfgxxx";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
reg = <0xc0000 0x40000>;
|
||||
label = "device_id";
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_device_id_1830: mac-address@1830 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1830 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
macaddr_device_id_1844: mac-address@1844 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1844 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
macaddr_device_id_1858: mac-address@1858 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1858 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio0: gpio-controller@fc00 {
|
||||
};
|
||||
|
||||
usb@22000 {
|
||||
phy_type = "utmi";
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
mdio@24000 {
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <0x1>;
|
||||
};
|
||||
|
||||
phy2: ethernet-phy@2 {
|
||||
reg = <0x2>;
|
||||
};
|
||||
|
||||
phy3: ethernet-phy@3 {
|
||||
reg = <0x3>;
|
||||
};
|
||||
};
|
||||
|
||||
mdio@25000 {
|
||||
tbi_phy1: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
mdio@26000 {
|
||||
tbi_phy2: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
enet0: ethernet@b0000 {
|
||||
phy-handle = <&phy1>;
|
||||
phy-connection-type = "rgmii-id";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1830 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
enet1: ethernet@b1000 {
|
||||
tbi-handle = <&tbi_phy1>;
|
||||
phy-handle = <&phy2>;
|
||||
phy-connection-type = "sgmii";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1844 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
enet2: ethernet@b2000 {
|
||||
tbi-handle = <&tbi_phy2>;
|
||||
phy-handle = <&phy3>;
|
||||
phy-connection-type = "sgmii";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1858 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
sdhc@2e000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial1: serial@4600 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can0: can@1c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can1: can@1d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
pci0: pcie@ffe09000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pci1: pcie@ffe0a000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
ifc: ifc@ffe1e000 {
|
||||
reg = <0x0 0xffe1e000 0 0x2000>;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later or MIT
|
||||
|
||||
/include/ "fsl/p1010si-pre.dtsi"
|
||||
#include "firebox-t1x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Watchguard Firebox T15";
|
||||
compatible = "watchguard,firebox-t15";
|
||||
|
||||
ifc: ifc@ffe1e000 {
|
||||
reg = <0x0 0xffe1e000 0 0x2000>;
|
||||
|
||||
/* NOR, NAND Flashes and CPLD on board */
|
||||
ranges = <0x0 0x0 0x0 0xee000000 0x02000000
|
||||
0x1 0x0 0x0 0xff800000 0x00010000
|
||||
0x3 0x0 0x0 0xffb00000 0x00000020>;
|
||||
|
||||
nand@100000000 {
|
||||
compatible = "fsl,ifc-nand";
|
||||
reg = <0x1 0x0 0x10000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/*
|
||||
* Original partition layout:
|
||||
* 0x000000000000-0x000000020000 : "NAND (RW) WG DTB Image"
|
||||
* 0x000000020000-0x000000520000 : "NAND (RW) WG SYSA Kernel"
|
||||
* 0x000000520000-0x00000f720000 : "NAND (RW) WG SYSA_CODE"
|
||||
* 0x00000f720000-0x00000fc20000 : "NAND (RW) WG SYSB Kernel"
|
||||
* 0x00000fc20000-0x000011420000 : "NAND (RW) WG SYSB_CODE"
|
||||
* 0x000011420000-0x000011920000 : "NAND (RW) WG SYSA2 Kernel"
|
||||
* 0x000011920000-0x000019220000 : "NAND (RW) WG SYSA_CODE2"
|
||||
* 0x000019220000-0x000040000000 : "NAND (RW) WG SYSA_DATA"
|
||||
*/
|
||||
|
||||
partition@0 {
|
||||
reg = <0x0 0x20000>;
|
||||
label = "wg-dtb";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@20000 {
|
||||
reg = <0x20000 0x500000>;
|
||||
label = "kernel";
|
||||
};
|
||||
|
||||
partition@520000 {
|
||||
reg = <0x520000 0xf200000>;
|
||||
label = "wg-sysa-rootfs";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@f720000 {
|
||||
reg = <0xf720000 0x500000>;
|
||||
label = "wg-sysb-kernel";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@fc20000 {
|
||||
reg = <0xfc20000 0x1800000>;
|
||||
label = "wg-sysb-rootfs";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@11420000 {
|
||||
reg = <0x11420000 0x500000>;
|
||||
label = "wg-sysa2-kernel";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@11920000 {
|
||||
reg = <0x11920000 0x7900000>;
|
||||
label = "wg-sysa2-rootfs";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@19220000 {
|
||||
reg = <0x19220000 0x26de0000>;
|
||||
label = "ubi";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "fsl/p1010si-post.dtsi"
|
||||
|
|
@ -0,0 +1,261 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later or MIT
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
bootargs-override = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
aliases {
|
||||
spi0 = &spi0;
|
||||
led-boot = &led_mode;
|
||||
led-failsafe = &led_failover;
|
||||
led-running = &led_mode;
|
||||
led-upgrade = &led_attention;
|
||||
/delete-property/ ethernet0;
|
||||
/delete-property/ ethernet1;
|
||||
/delete-property/ ethernet2;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_attention: attention_orange {
|
||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
||||
label = "orange:attention";
|
||||
};
|
||||
|
||||
status_red {
|
||||
gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
};
|
||||
|
||||
led_mode: mode_green {
|
||||
gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
|
||||
label = "green:mode";
|
||||
};
|
||||
|
||||
led_failover: failover_green {
|
||||
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
label = "green:failover";
|
||||
};
|
||||
|
||||
led_wap_orange: wap_orange {
|
||||
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
function = LED_FUNCTION_WLAN_2GHZ;
|
||||
color = <LED_COLOR_ID_ORANGE>;
|
||||
label = "orange:wap";
|
||||
};
|
||||
|
||||
led_wap_green: wap_green {
|
||||
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
|
||||
function = LED_FUNCTION_WLAN_5GHZ;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
label = "green:wap";
|
||||
linux,default-trigger = "phy0tpt";
|
||||
};
|
||||
};
|
||||
|
||||
buttons {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "Reset button";
|
||||
gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
soc: soc@ffe00000 {
|
||||
ranges = <0x0 0x0 0xffe00000 0x100000>;
|
||||
|
||||
i2c@3000 {
|
||||
rtc@30 {
|
||||
compatible = "sii,s35390a";
|
||||
reg = <0x30>;
|
||||
};
|
||||
};
|
||||
|
||||
spi0: spi@7000 {
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
uboot: partition@0 {
|
||||
reg = <0x0 0x90000>;
|
||||
label = "u-boot";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@90000 {
|
||||
reg = <0x90000 0x10000>;
|
||||
label = "u-boot-env";
|
||||
};
|
||||
|
||||
partition@a0000 {
|
||||
reg = <0xa0000 0x20000>;
|
||||
label = "cfgxxx";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
reg = <0xc0000 0x40000>;
|
||||
label = "device_id";
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_device_id_1830: mac-address@1830 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1830 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
macaddr_device_id_1844: mac-address@1844 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1844 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
macaddr_device_id_1858: mac-address@1858 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x1858 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
macaddr_device_id_186c: mac-address@186c {
|
||||
compatible = "mac-base";
|
||||
reg = <0x186c 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio0: gpio-controller@fc00 {
|
||||
};
|
||||
|
||||
usb@22000 {
|
||||
phy_type = "utmi";
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
mdio@24000 {
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <0x1>;
|
||||
};
|
||||
|
||||
phy2: ethernet-phy@2 {
|
||||
reg = <0x2>;
|
||||
};
|
||||
|
||||
phy3: ethernet-phy@3 {
|
||||
reg = <0x3>;
|
||||
};
|
||||
};
|
||||
|
||||
mdio@25000 {
|
||||
tbi_phy1: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
mdio@26000 {
|
||||
tbi_phy2: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
enet0: ethernet@b0000 {
|
||||
phy-handle = <&phy1>;
|
||||
phy-connection-type = "rgmii-id";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1830 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
enet1: ethernet@b1000 {
|
||||
tbi-handle = <&tbi_phy1>;
|
||||
phy-handle = <&phy2>;
|
||||
phy-connection-type = "sgmii";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1844 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
enet2: ethernet@b2000 {
|
||||
tbi-handle = <&tbi_phy2>;
|
||||
phy-handle = <&phy3>;
|
||||
phy-connection-type = "sgmii";
|
||||
|
||||
nvmem-cells = <&macaddr_device_id_1858 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
sdhc@2e000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial1: serial@4600 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can0: can@1c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can1: can@1d000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
pci0: pcie@ffe09000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pci1: pcie@ffe0a000 {
|
||||
reg = <0 0xffe0a000 0 0x1000>;
|
||||
ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
|
||||
0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
|
||||
pcie@0 {
|
||||
ranges = <0x2000000 0x0 0x80000000
|
||||
0x2000000 0x0 0x80000000
|
||||
0x0 0x20000000
|
||||
|
||||
0x1000000 0x0 0x0
|
||||
0x1000000 0x0 0x0
|
||||
0x0 0x100000>;
|
||||
|
||||
ath9k: wifi@0,0 {
|
||||
compatible = "pci168c,0033";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
nvmem-cells = <&macaddr_device_id_186c 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
static void __init firebox_t10_pic_init(void)
|
||||
static void __init firebox_t1x_pic_init(void)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
|
||||
|
|
@ -49,26 +49,40 @@ static void __init firebox_t10_pic_init(void)
|
|||
/*
|
||||
* Setup the architecture
|
||||
*/
|
||||
static void __init firebox_t10_setup_arch(void)
|
||||
static void __init firebox_t1x_setup_arch(void)
|
||||
{
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("firebox_t10_setup_arch()", 0);
|
||||
ppc_md.progress("firebox_t1x_setup_arch()", 0);
|
||||
|
||||
fsl_pci_assign_primary();
|
||||
|
||||
pr_info("Firebox T10 from Watchguard\n");
|
||||
pr_info("Firebox T10/T15 from Watchguard\n");
|
||||
}
|
||||
|
||||
machine_arch_initcall(firebox_t10, mpc85xx_common_publish_devices);
|
||||
machine_arch_initcall(firebox_t15, mpc85xx_common_publish_devices);
|
||||
|
||||
define_machine(firebox_t10) {
|
||||
.name = "P1010 RDB",
|
||||
.compatible = "watchguard,firebox-t10",
|
||||
.setup_arch = firebox_t10_setup_arch,
|
||||
.init_IRQ = firebox_t10_pic_init,
|
||||
.setup_arch = firebox_t1x_setup_arch,
|
||||
.init_IRQ = firebox_t1x_pic_init,
|
||||
#ifdef CONFIG_PCI
|
||||
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
|
||||
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
|
||||
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
|
||||
#endif
|
||||
.get_irq = mpic_get_irq,
|
||||
.progress = udbg_progress,
|
||||
};
|
||||
|
||||
define_machine(firebox_t15) {
|
||||
.name = "P1010 RDB",
|
||||
.compatible = "watchguard,firebox-t15",
|
||||
.setup_arch = firebox_t1x_setup_arch,
|
||||
.init_IRQ = firebox_t1x_pic_init,
|
||||
#ifdef CONFIG_PCI
|
||||
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
|
||||
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
|
||||
#endif
|
||||
.get_irq = mpic_get_irq,
|
||||
.progress = udbg_progress,
|
||||
|
|
@ -77,13 +77,37 @@ TARGET_DEVICES += tplink_tl-wdr4900-v1
|
|||
define Device/watchguard_firebox-t10
|
||||
DEVICE_VENDOR := Watchguard
|
||||
DEVICE_MODEL := Firebox T10
|
||||
DEVICE_ALT0_VENDOR := Watchguard
|
||||
DEVICE_ALT0_MODEL := Firebox T10-W
|
||||
DEVICE_PACKAGES := kmod-rtc-s35390a kmod-eeprom-at24
|
||||
# This boot loader doesn't reliably boot an uncompressed image,
|
||||
# therefore resort to gzipping the already compressed zImage
|
||||
KERNEL = kernel-bin | gzip | fit gzip $(KDIR)/image-$$(DEVICE_DTS).dtb
|
||||
KERNEL_NAME := zImage.la3000000
|
||||
KERNEL_ENTRY := 0x3000000
|
||||
KERNEL_LOADADDR := 0x3000000
|
||||
IMAGES := sysupgrade.bin
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
TARGET_DEVICES += watchguard_firebox-t10
|
||||
|
||||
define Device/watchguard_firebox-t15
|
||||
DEVICE_VENDOR := Watchguard
|
||||
DEVICE_MODEL := Firebox T15
|
||||
DEVICE_ALT0_VENDOR := Watchguard
|
||||
DEVICE_ALT0_MODEL := Firebox T15-W
|
||||
DEVICE_PACKAGES := kmod-rtc-s35390a kmod-eeprom-at24
|
||||
# This boot loader doesn't reliably boot an uncompressed image,
|
||||
# therefore resort to gzipping the already compressed zImage
|
||||
KERNEL = kernel-bin | gzip | fit gzip $(KDIR)/image-$$(DEVICE_DTS).dtb
|
||||
KERNEL_NAME := zImage.la3000000
|
||||
KERNEL_ENTRY := 0x3000000
|
||||
KERNEL_LOADADDR := 0x3000000
|
||||
IMAGES := sysupgrade.bin
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
TARGET_DEVICES += watchguard_firebox-t15
|
||||
|
||||
define Device/sophos_red-15w-rev1
|
||||
DEVICE_VENDOR := Sophos
|
||||
DEVICE_MODEL := RED 15w
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ CONFIG_CRYPTO_HASH_INFO=y
|
|||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_DEFAULT_UIMAGE=y
|
||||
CONFIG_FIREBOX_T10=y
|
||||
CONFIG_FIREBOX_T1X=y
|
||||
# CONFIG_FSL_CORENET_CF is not set
|
||||
CONFIG_FSL_IFC=y
|
||||
CONFIG_GPIO_74X164=y
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
BOARDNAME:=P1010
|
||||
KERNEL_IMAGES:=simpleImage.br200-wp simpleImage.tl-wdr4900-v1 simpleImage.ws-ap3715i
|
||||
KERNEL_IMAGES:=simpleImage.br200-wp simpleImage.tl-wdr4900-v1 simpleImage.ws-ap3715i zImage.la3000000
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for P1010 based boards.
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@
|
|||
This board is a Concurrent Dual-Band wireless access point with a
|
||||
Freescale P1020 SoC.
|
||||
|
||||
+config FIREBOX_T10
|
||||
+ bool "Watchguard Firebox T10"
|
||||
+config FIREBOX_T1X
|
||||
+ bool "Watchguard Firebox T10/T15"
|
||||
+ select DEFAULT_UIMAGE
|
||||
+ select ARCH_REQUIRE_GPIOLIB
|
||||
+ select GPIO_MPC8XXX
|
||||
+ select PPC_ZIMAGE_LA3000000
|
||||
+ help
|
||||
+ This option enables support for the Watchguard Firebox T10 board.
|
||||
+ This board is a VPN Gateway-Router with a
|
||||
+ Freescale P1010 SoC.
|
||||
+ This option enables support for the Watchguard Firebox T10/T15 board.
|
||||
+ This board is a VPN Gateway-Router with a Freescale P1010 SoC.
|
||||
+
|
||||
config MPC8540_ADS
|
||||
bool "Freescale MPC8540 ADS"
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
obj-$(CONFIG_TWR_P102x) += twr_p102x.o
|
||||
obj-$(CONFIG_WS_AP3710I) += ws-ap3710i.o
|
||||
obj-$(CONFIG_WS_AP3825I) += ws-ap3825i.o
|
||||
+obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
|
||||
+obj-$(CONFIG_FIREBOX_T1X) += firebox_t1x.o
|
||||
obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o
|
||||
obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o
|
||||
obj-$(CONFIG_RED_15W_REV1) += red15w_rev1.o
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
obj-$(CONFIG_WS_AP3710I) += ws-ap3710i.o
|
||||
+obj-$(CONFIG_WS_AP3715I) += ws-ap3715i.o
|
||||
obj-$(CONFIG_WS_AP3825I) += ws-ap3825i.o
|
||||
obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
|
||||
obj-$(CONFIG_FIREBOX_T1X) += firebox_t1x.o
|
||||
obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o
|
||||
--- a/arch/powerpc/boot/Makefile
|
||||
+++ b/arch/powerpc/boot/Makefile
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
--- a/arch/powerpc/platforms/85xx/Kconfig
|
||||
+++ b/arch/powerpc/platforms/85xx/Kconfig
|
||||
@@ -114,6 +114,18 @@ config FIREBOX_T10
|
||||
This board is a VPN Gateway-Router with a
|
||||
Freescale P1010 SoC.
|
||||
@@ -114,6 +114,18 @@ config FIREBOX_T1X
|
||||
This option enables support for the Watchguard Firebox T10/T15 board.
|
||||
This board is a VPN Gateway-Router with a Freescale P1010 SoC.
|
||||
|
||||
+config MSM460
|
||||
+ bool "HPE MSM460"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
|||
|
||||
--- a/drivers/spi/spi-mem.c
|
||||
+++ b/drivers/spi/spi-mem.c
|
||||
@@ -893,7 +893,9 @@ static int spi_mem_probe(struct spi_devi
|
||||
@@ -930,7 +930,9 @@ static int spi_mem_probe(struct spi_devi
|
||||
{
|
||||
struct spi_mem_driver *memdrv = to_spi_mem_drv(spi->dev.driver);
|
||||
struct spi_controller *ctlr = spi->controller;
|
||||
|
|
@ -20,7 +20,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
|||
|
||||
mem = devm_kzalloc(&spi->dev, sizeof(*mem), GFP_KERNEL);
|
||||
if (!mem)
|
||||
@@ -901,10 +903,15 @@ static int spi_mem_probe(struct spi_devi
|
||||
@@ -938,10 +940,15 @@ static int spi_mem_probe(struct spi_devi
|
||||
|
||||
mem->spi = spi;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,12 @@
|
|||
|
||||
#include "ipq8174-mx4x00.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
label-mac-device = &dp2;
|
||||
};
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
iot_pins: iot-state {
|
||||
recovery-pins {
|
||||
|
|
@ -238,23 +244,31 @@
|
|||
&dp2 {
|
||||
status = "okay";
|
||||
phy-handle = <&qca8075_1>;
|
||||
nvmem-cells = <&hw_mac_addr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
&dp3 {
|
||||
status = "okay";
|
||||
phy-handle = <&qca8075_2>;
|
||||
nvmem-cells = <&hw_mac_addr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
&dp4 {
|
||||
status = "okay";
|
||||
phy-handle = <&qca8075_3>;
|
||||
nvmem-cells = <&hw_mac_addr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
&dp5 {
|
||||
status = "okay";
|
||||
phy-handle = <&qca8075_4>;
|
||||
nvmem-cells = <&hw_mac_addr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
label = "lan3";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,13 +9,6 @@
|
|||
/ {
|
||||
model = "Linksys MX4200v1";
|
||||
compatible = "linksys,mx4200v1", "qcom,ipq8074";
|
||||
|
||||
aliases {
|
||||
ethernet1 = &dp2;
|
||||
ethernet2 = &dp3;
|
||||
ethernet3 = &dp4;
|
||||
ethernet4 = &dp5;
|
||||
};
|
||||
};
|
||||
|
||||
&wifi {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue