Merge branch 'openwrt:master' into master
This commit is contained in:
commit
12c9085fb5
167 changed files with 3701 additions and 2955 deletions
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -169,7 +169,7 @@ jobs:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$major_ver" ]; then
|
if [ -n "$major_ver" ]; then
|
||||||
git fetch --tags
|
git fetch --tags -f
|
||||||
latest_tag="$(git tag --sort=-creatordate -l $major_ver* | head -n1)"
|
latest_tag="$(git tag --sort=-creatordate -l $major_ver* | head -n1)"
|
||||||
if [ -n "$latest_tag" ]; then
|
if [ -n "$latest_tag" ]; then
|
||||||
TOOLCHAIN_PATH=releases/$(echo $latest_tag | sed 's/^v//')
|
TOOLCHAIN_PATH=releases/$(echo $latest_tag | sed 's/^v//')
|
||||||
|
|
|
@ -306,6 +306,11 @@ define Build/fit
|
||||||
@mv $@.new $@
|
@mv $@.new $@
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Build/libdeflate-gzip
|
||||||
|
$(STAGING_DIR_HOST)/bin/libdeflate-gzip -f -12 -c $@ $(1) > $@.new
|
||||||
|
@mv $@.new $@
|
||||||
|
endef
|
||||||
|
|
||||||
define Build/gzip
|
define Build/gzip
|
||||||
$(STAGING_DIR_HOST)/bin/gzip -f -9n -c $@ $(1) > $@.new
|
$(STAGING_DIR_HOST)/bin/gzip -f -9n -c $@ $(1) > $@.new
|
||||||
@mv $@.new $@
|
@mv $@.new $@
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
LINUX_VERSION-5.15 = .85
|
LINUX_VERSION-5.15 = .86
|
||||||
LINUX_KERNEL_HASH-5.15.85 = 2c0bae29fac98e0a9408914a4551b2971365ac0000351cb255d6bd9aa0849808
|
LINUX_KERNEL_HASH-5.15.86 = 80fcd9efa443502de9e2750f6dfb59e8de43a5d87a6d2be09dca748d79b5f2ee
|
||||||
|
|
|
@ -129,6 +129,17 @@ mtd_get_mac_encrypted_deco() {
|
||||||
echo $macaddr
|
echo $macaddr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mtd_get_mac_uci_config_ubi() {
|
||||||
|
local volumename="$1"
|
||||||
|
|
||||||
|
. /lib/upgrade/nand.sh
|
||||||
|
|
||||||
|
local ubidev=$(nand_attach_ubi $CI_UBIPART)
|
||||||
|
local part=$(nand_find_volume $ubidev $volumename)
|
||||||
|
|
||||||
|
cat "/dev/$part" | sed -n 's/^\s*option macaddr\s*'"'"'\?\([0-9A-F:]\+\)'"'"'\?/\1/Ip'
|
||||||
|
}
|
||||||
|
|
||||||
mtd_get_mac_text() {
|
mtd_get_mac_text() {
|
||||||
local mtdname=$1
|
local mtdname=$1
|
||||||
local offset=$(($2))
|
local offset=$(($2))
|
||||||
|
|
|
@ -41,7 +41,7 @@ switch_to_ramfs() {
|
||||||
pivot_root mount_root reboot sync kill sleep \
|
pivot_root mount_root reboot sync kill sleep \
|
||||||
md5sum hexdump cat zcat dd tar gzip \
|
md5sum hexdump cat zcat dd tar gzip \
|
||||||
ls basename find cp mv rm mkdir rmdir mknod touch chmod \
|
ls basename find cp mv rm mkdir rmdir mknod touch chmod \
|
||||||
'[' printf wc grep awk sed cut sort \
|
'[' printf wc grep awk sed cut sort tail \
|
||||||
mtd partx losetup mkfs.ext4 nandwrite flash_erase \
|
mtd partx losetup mkfs.ext4 nandwrite flash_erase \
|
||||||
ubiupdatevol ubiattach ubiblock ubiformat \
|
ubiupdatevol ubiattach ubiblock ubiformat \
|
||||||
ubidetach ubirsvol ubirmvol ubimkvol \
|
ubidetach ubirsvol ubirmvol ubimkvol \
|
||||||
|
|
|
@ -125,6 +125,8 @@ TFA_MAKE_FLAGS += \
|
||||||
WTP=$(BUILD_DIR)/$(A3700_UTILS_NAME) \
|
WTP=$(BUILD_DIR)/$(A3700_UTILS_NAME) \
|
||||||
WTMI_IMG=$(BUILD_DIR)/$(MOX_BB_NAME)-$(MOX_BB_RELEASE)/wtmi_app.bin \
|
WTMI_IMG=$(BUILD_DIR)/$(MOX_BB_NAME)-$(MOX_BB_RELEASE)/wtmi_app.bin \
|
||||||
CRYPTOPP_PATH=$(BUILD_DIR)/$(CRYPTOPP_NAME) \
|
CRYPTOPP_PATH=$(BUILD_DIR)/$(CRYPTOPP_NAME) \
|
||||||
|
HOST_LDFLAGS="$(HOST_LDFLAGS)" \
|
||||||
|
HOST_CPPFLAGS="$(HOST_CPPFLAGS)" \
|
||||||
USE_COHERENT_MEM=0 \
|
USE_COHERENT_MEM=0 \
|
||||||
FIP_ALIGN=0x100 \
|
FIP_ALIGN=0x100 \
|
||||||
DDR_TOPOLOGY=$(DDR_TOPOLOGY) \
|
DDR_TOPOLOGY=$(DDR_TOPOLOGY) \
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Forward the host compiler flags to the compilation of the cryptopp library.
|
||||||
|
|
||||||
|
--- a/plat/marvell/armada/a3k/common/a3700_common.mk
|
||||||
|
+++ b/plat/marvell/armada/a3k/common/a3700_common.mk
|
||||||
|
@@ -149,7 +149,7 @@ $(TBB): FORCE
|
||||||
|
$(if $(wildcard $(CRYPTOPP_LIBDIR)/*),,$(error "Either 'CRYPTOPP_PATH' or 'CRYPTOPP_LIB' was set to '$(CRYPTOPP_LIBDIR)', but '$(CRYPTOPP_LIBDIR)' does not exist"))
|
||||||
|
$(if $(wildcard $(CRYPTOPP_INCDIR)/*),,$(error "Either 'CRYPTOPP_PATH' or 'CRYPTOPP_INCDIR' was set to '$(CRYPTOPP_INCDIR)', but '$(CRYPTOPP_INCDIR)' does not exist"))
|
||||||
|
ifdef CRYPTOPP_PATH
|
||||||
|
- $(Q)$(MAKE) --no-print-directory -C $(CRYPTOPP_PATH) -f GNUmakefile
|
||||||
|
+ $(Q)$(MAKE) --no-print-directory -C $(CRYPTOPP_PATH) -f GNUmakefile LDFLAGS="$(HOST_LDFLAGS)" CPPFLAGS="$(HOST_CPPFLAGS)"
|
||||||
|
endif
|
||||||
|
$(Q)$(MAKE) --no-print-directory -C $(WTP)/wtptp/src/TBB_Linux -f TBB_linux.mak LIBDIR=$(CRYPTOPP_LIBDIR) INCDIR=$(CRYPTOPP_INCDIR)
|
||||||
|
|
|
@ -25,40 +25,28 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||||
include $(INCLUDE_DIR)/trusted-firmware-a.mk
|
include $(INCLUDE_DIR)/trusted-firmware-a.mk
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Trusted-Firmware-A/Default
|
||||||
define Package/arm-trusted-firmware-sunxi/Default
|
BUILD_TARGET:=sunxi
|
||||||
SECTION:=boot
|
BUILD_SUBTARGET:=cortexa53
|
||||||
CATEGORY:=Boot Loaders
|
|
||||||
TITLE:=ARM Trusted Firmware for Allwinner
|
|
||||||
DEPENDS:=@TARGET_sunxi_cortexa53
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/arm-trusted-firmware-sunxi-a64
|
define Trusted-Firmware-A/sunxi-a64
|
||||||
$(call Package/arm-trusted-firmware-sunxi/Default)
|
NAME:=Allwinner A64
|
||||||
VARIANT:=sun50i_a64
|
PLAT:=sun50i_a64
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/arm-trusted-firmware-sunxi-h6
|
define Trusted-Firmware-A/sunxi-h6
|
||||||
$(call Package/arm-trusted-firmware-sunxi/Default)
|
NAME:=Allwinner H6
|
||||||
VARIANT:=sun50i_h6
|
PLAT:=sun50i_h6
|
||||||
endef
|
endef
|
||||||
|
|
||||||
export GCC_HONOUR_COPTS=s
|
TFA_TARGETS:= \
|
||||||
|
sunxi-a64 \
|
||||||
|
sunxi-h6
|
||||||
|
|
||||||
MAKE_VARS = \
|
define Package/trusted-firmware-a/install
|
||||||
CROSS_COMPILE="$(TARGET_CROSS)"
|
|
||||||
|
|
||||||
MAKE_FLAGS += \
|
|
||||||
PLAT=$(BUILD_VARIANT) \
|
|
||||||
bl31
|
|
||||||
|
|
||||||
define Build/InstallDev
|
|
||||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||||
$(CP) $(PKG_BUILD_DIR)/build/$(BUILD_VARIANT)/release/bl31.bin $(STAGING_DIR_IMAGE)/bl31_$(BUILD_VARIANT).bin
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl31.bin $(STAGING_DIR_IMAGE)/bl31_$(BUILD_VARIANT).bin
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/arm-trusted-firmware-sunxi/install
|
$(eval $(call BuildPackage/Trusted-Firmware-A))
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call BuildPackage,arm-trusted-firmware-sunxi-a64))
|
|
||||||
$(eval $(call BuildPackage,arm-trusted-firmware-sunxi-h6))
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ PKG_MIRROR_HASH:=893f2d28a77dcc9d4413a619b4719ca5f1f4dc78dd824a8488e7d543e66bcf9
|
||||||
PKG_BUILD_DEPENDS:=tfa-layerscape/host
|
PKG_BUILD_DEPENDS:=tfa-layerscape/host
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/host-build.mk
|
include $(INCLUDE_DIR)/host-build.mk
|
||||||
|
include $(INCLUDE_DIR)/trusted-firmware-a.mk
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
HOST_CFLAGS += -Wall -Werror -pedantic -std=c99
|
HOST_CFLAGS += -Wall -Werror -pedantic -std=c99
|
||||||
|
@ -38,131 +39,97 @@ define Host/Install
|
||||||
$(INSTALL_BIN) $(HOST_BUILD_DIR)/tools/nxp/byte_swap $(STAGING_DIR_HOST)/bin/tfa-byte-swap
|
$(INSTALL_BIN) $(HOST_BUILD_DIR)/tools/nxp/byte_swap $(STAGING_DIR_HOST)/bin/tfa-byte-swap
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-generic
|
define Trusted-Firmware-A/Default
|
||||||
SECTION:=boot
|
BUILD_TARGET:=layerscape
|
||||||
CATEGORY:=Boot Loaders
|
BUILD_SUBTARGET:=armv8_64b
|
||||||
DEPENDS:=@TARGET_layerscape_armv8_64b +layerscape-rcw +u-boot-fsl_$(subst tfa-,,$(1))
|
DEPENDS:=+layerscape-rcw +u-boot-fsl_$(1)
|
||||||
VARIANT:=$(subst tfa-,,$(1))
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1012a-frdm
|
define Trusted-Firmware-A/ls1012a-frdm
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1012AFRDM
|
||||||
TITLE:=NXP LS1012AFRDM Trusted Firmware
|
|
||||||
PLAT:=ls1012afrdm
|
PLAT:=ls1012afrdm
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1012a-rdb
|
define Trusted-Firmware-A/ls1012a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1012ARDB
|
||||||
TITLE:=NXP LS1012ARDB Trusted Firmware
|
|
||||||
PLAT:=ls1012ardb
|
PLAT:=ls1012ardb
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1012a-frwy-sdboot
|
define Trusted-Firmware-A/ls1012a-frwy-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1012AFRWY
|
||||||
TITLE:=NXP LS1012AFRWY Trusted Firmware
|
|
||||||
PLAT:=ls1012afrwy
|
PLAT:=ls1012afrwy
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1043a-rdb
|
define Trusted-Firmware-A/ls1043a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1043ARDB
|
||||||
TITLE:=NXP LS1043ARDB Trusted Firmware
|
|
||||||
PLAT:=ls1043ardb
|
PLAT:=ls1043ardb
|
||||||
BOOT_MODE:=nor
|
BOOT_MODE:=nor
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1043a-rdb-sdboot
|
define Trusted-Firmware-A/ls1043a-rdb-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1043ARDB SD Boot
|
||||||
TITLE:=NXP LS1043ARDB SD Boot Trusted Firmware
|
|
||||||
PLAT:=ls1043ardb
|
PLAT:=ls1043ardb
|
||||||
BOOT_MODE:=sd
|
BOOT_MODE:=sd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1046a-frwy
|
define Trusted-Firmware-A/ls1046a-frwy
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1046AFRWY
|
||||||
TITLE:=NXP LS1046AFRWY Trusted Firmware
|
|
||||||
PLAT:=ls1046afrwy
|
PLAT:=ls1046afrwy
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1046a-frwy-sdboot
|
define Trusted-Firmware-A/ls1046a-frwy-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1046AFRWY SD Boot
|
||||||
TITLE:=NXP LS1046AFRWY SD Boot Trusted Firmware
|
|
||||||
PLAT:=ls1046afrwy
|
PLAT:=ls1046afrwy
|
||||||
BOOT_MODE:=sd
|
BOOT_MODE:=sd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1046a-rdb
|
define Trusted-Firmware-A/ls1046a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1046ARDB
|
||||||
TITLE:=NXP LS1046ARDB Trusted Firmware
|
|
||||||
PLAT:=ls1046ardb
|
PLAT:=ls1046ardb
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1046a-rdb-sdboot
|
define Trusted-Firmware-A/ls1046a-rdb-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1046ARDB SD Boot
|
||||||
TITLE:=NXP LS1046ARDB SD Boot Trusted Firmware
|
|
||||||
PLAT:=ls1046ardb
|
PLAT:=ls1046ardb
|
||||||
BOOT_MODE:=sd
|
BOOT_MODE:=sd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1088a-rdb
|
define Trusted-Firmware-A/ls1088a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1088ARDB
|
||||||
TITLE:=NXP LS1088ARDB Trusted Firmware
|
|
||||||
PLAT:=ls1088ardb
|
PLAT:=ls1088ardb
|
||||||
BOOT_MODE:=qspi
|
BOOT_MODE:=qspi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls1088a-rdb-sdboot
|
define Trusted-Firmware-A/ls1088a-rdb-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS1088ARDB SD Boot
|
||||||
TITLE:=NXP LS1088ARDB SD Boot Trusted Firmware
|
|
||||||
PLAT:=ls1088ardb
|
PLAT:=ls1088ardb
|
||||||
BOOT_MODE:=sd
|
BOOT_MODE:=sd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-ls2088a-rdb
|
define Trusted-Firmware-A/ls2088a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LS2088ARDB
|
||||||
TITLE:=NXP LS2088ARDB Trusted Firmware
|
|
||||||
PLAT:=ls2088ardb
|
PLAT:=ls2088ardb
|
||||||
BOOT_MODE:=nor
|
BOOT_MODE:=nor
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-lx2160a-rdb
|
define Trusted-Firmware-A/lx2160a-rdb
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LX2160ARDB
|
||||||
TITLE:=NXP LX2160ARDB Trusted Firmware
|
|
||||||
PLAT:=lx2160ardb
|
PLAT:=lx2160ardb
|
||||||
BOOT_MODE:=flexspi_nor
|
BOOT_MODE:=flexspi_nor
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/tfa-lx2160a-rdb-sdboot
|
define Trusted-Firmware-A/lx2160a-rdb-sdboot
|
||||||
$(Package/tfa-generic)
|
NAME:=NXP LX2160ARDB SD Boot
|
||||||
TITLE:=NXP LX2160ARDB SD Boot Trusted Firmware
|
|
||||||
PLAT:=lx2160ardb
|
PLAT:=lx2160ardb
|
||||||
BOOT_MODE:=sd
|
BOOT_MODE:=sd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/InstallDev
|
TFA_TARGETS := \
|
||||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl2_$(BOOT_MODE).pbl \
|
|
||||||
$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-bl2.pbl
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/fip.bin \
|
|
||||||
$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-fip.bin
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/Compile
|
|
||||||
$(eval $(Package/tfa-$(BUILD_VARIANT))) \
|
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) \
|
|
||||||
fip pbl PLAT=$(PLAT) BOOT_MODE=$(BOOT_MODE) \
|
|
||||||
RCW=$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-rcw.bin \
|
|
||||||
BL33=$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-uboot.bin \
|
|
||||||
FIPTOOL=$(STAGING_DIR_HOST)/bin/fiptool-layerscape \
|
|
||||||
CREATE_PBL=$(STAGING_DIR_HOST)/bin/tfa-create-pbl \
|
|
||||||
BYTE_SWAP=$(STAGING_DIR_HOST)/bin/tfa-byte-swap
|
|
||||||
endef
|
|
||||||
|
|
||||||
TFAS := \
|
|
||||||
ls1012a-frdm \
|
ls1012a-frdm \
|
||||||
ls1012a-rdb \
|
ls1012a-rdb \
|
||||||
ls1012a-frwy-sdboot \
|
ls1012a-frwy-sdboot \
|
||||||
|
@ -178,7 +145,25 @@ TFAS := \
|
||||||
lx2160a-rdb \
|
lx2160a-rdb \
|
||||||
lx2160a-rdb-sdboot
|
lx2160a-rdb-sdboot
|
||||||
|
|
||||||
|
TFA_MAKE_FLAGS += \
|
||||||
|
fip pbl \
|
||||||
|
BOOT_MODE=$(BOOT_MODE) \
|
||||||
|
RCW=$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-rcw.bin \
|
||||||
|
BL33=$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-uboot.bin \
|
||||||
|
FIPTOOL=$(STAGING_DIR_HOST)/bin/fiptool-layerscape \
|
||||||
|
CREATE_PBL=$(STAGING_DIR_HOST)/bin/tfa-create-pbl \
|
||||||
|
BYTE_SWAP=$(STAGING_DIR_HOST)/bin/tfa-byte-swap
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl2_$(BOOT_MODE).pbl \
|
||||||
|
$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-bl2.pbl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/fip.bin \
|
||||||
|
$(STAGING_DIR_IMAGE)/fsl_$(BUILD_VARIANT)-fip.bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/trusted-firmware-a/install/default
|
||||||
|
endef
|
||||||
|
|
||||||
$(eval $(call HostBuild))
|
$(eval $(call HostBuild))
|
||||||
$(foreach tfa,$(TFAS), \
|
$(eval $(call BuildPackage/Trusted-Firmware-A))
|
||||||
$(eval $(call BuildPackage,tfa-$(tfa))) \
|
|
||||||
)
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ linksys,ea8300|\
|
||||||
linksys,mr8300)
|
linksys,mr8300)
|
||||||
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000"
|
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000"
|
||||||
;;
|
;;
|
||||||
linksys,whw01-v1)
|
linksys,whw01)
|
||||||
ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x40000" "0x10000"
|
ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x40000" "0x10000"
|
||||||
;;
|
;;
|
||||||
zyxel,nbg6617)
|
zyxel,nbg6617)
|
||||||
|
|
|
@ -29,7 +29,7 @@ define U-Boot/a64-olinuxino
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Olimex A64-OLinuXino
|
NAME:=Olimex A64-OLinuXino
|
||||||
BUILD_DEVICES:=olimex_a64-olinuxino
|
BUILD_DEVICES:=olimex_a64-olinuxino
|
||||||
DEPENDS:=+PACKAGE_u-boot-olimex_a64-olinuxino:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-olimex_a64-olinuxino:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -38,7 +38,7 @@ define U-Boot/a64-olinuxino-emmc
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Olimex A64-OLinuXino eMMC
|
NAME:=Olimex A64-OLinuXino eMMC
|
||||||
BUILD_DEVICES:=olimex_a64-olinuxino-emmc
|
BUILD_DEVICES:=olimex_a64-olinuxino-emmc
|
||||||
DEPENDS:=+PACKAGE_u-boot-olimex_a64-olinuxino-emmc:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-olimex_a64-olinuxino-emmc:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -207,7 +207,7 @@ endef
|
||||||
define U-Boot/orangepi_one_plus
|
define U-Boot/orangepi_one_plus
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Orange Pi One Plus (H6)
|
NAME:=Orange Pi One Plus (H6)
|
||||||
DEPENDS:=+PACKAGE_u-boot-orangepi_one_plus:arm-trusted-firmware-sunxi-h6
|
DEPENDS:=+PACKAGE_u-boot-orangepi_one_plus:trusted-firmware-a-sunxi-h6
|
||||||
BUILD_DEVICES:=xunlong_orangepi-one-plus
|
BUILD_DEVICES:=xunlong_orangepi-one-plus
|
||||||
UENV:=h6
|
UENV:=h6
|
||||||
ATF:=h6
|
ATF:=h6
|
||||||
|
@ -247,7 +247,7 @@ define U-Boot/libretech_all_h3_cc_h5
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Libre Computer ALL-H3-CC H5
|
NAME:=Libre Computer ALL-H3-CC H5
|
||||||
BUILD_DEVICES:=libretech_all-h3-cc-h5
|
BUILD_DEVICES:=libretech_all-h3-cc-h5
|
||||||
DEPENDS:=+PACKAGE_u-boot-libretech_all_h3_cc_h5:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-libretech_all_h3_cc_h5:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -256,7 +256,7 @@ define U-Boot/nanopi_neo_plus2
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=NanoPi NEO Plus2 (H5)
|
NAME:=NanoPi NEO Plus2 (H5)
|
||||||
BUILD_DEVICES:=friendlyarm_nanopi-neo-plus2
|
BUILD_DEVICES:=friendlyarm_nanopi-neo-plus2
|
||||||
DEPENDS:=+PACKAGE_u-boot-nanopi_neo_plus2:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-nanopi_neo_plus2:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -265,7 +265,7 @@ define U-Boot/nanopi_neo2
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=NanoPi NEO2 (H5)
|
NAME:=NanoPi NEO2 (H5)
|
||||||
BUILD_DEVICES:=friendlyarm_nanopi-neo2
|
BUILD_DEVICES:=friendlyarm_nanopi-neo2
|
||||||
DEPENDS:=+PACKAGE_u-boot-nanopi_neo2:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-nanopi_neo2:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -274,7 +274,7 @@ define U-Boot/nanopi_r1s_h5
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=NanoPi R1S (H5)
|
NAME:=NanoPi R1S (H5)
|
||||||
BUILD_DEVICES:=friendlyarm_nanopi-r1s-h5
|
BUILD_DEVICES:=friendlyarm_nanopi-r1s-h5
|
||||||
DEPENDS:=+PACKAGE_u-boot-nanopi_r1s_h5:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-nanopi_r1s_h5:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -283,7 +283,7 @@ define U-Boot/pine64_plus
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Pine64 Plus A64
|
NAME:=Pine64 Plus A64
|
||||||
BUILD_DEVICES:=pine64_pine64-plus
|
BUILD_DEVICES:=pine64_pine64-plus
|
||||||
DEPENDS:=+PACKAGE_u-boot-pine64_plus:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-pine64_plus:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -298,7 +298,7 @@ define U-Boot/sopine_baseboard
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Sopine Baseboard
|
NAME:=Sopine Baseboard
|
||||||
BUILD_DEVICES:=pine64_sopine-baseboard
|
BUILD_DEVICES:=pine64_sopine-baseboard
|
||||||
DEPENDS:=+PACKAGE_u-boot-sopine_baseboard:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-sopine_baseboard:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -308,7 +308,7 @@ define U-Boot/orangepi_zero_plus
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Xunlong Orange Pi Zero Plus
|
NAME:=Xunlong Orange Pi Zero Plus
|
||||||
BUILD_DEVICES:=xunlong_orangepi-zero-plus
|
BUILD_DEVICES:=xunlong_orangepi-zero-plus
|
||||||
DEPENDS:=+PACKAGE_u-boot-orangepi_zero_plus:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-orangepi_zero_plus:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -317,7 +317,7 @@ define U-Boot/orangepi_pc2
|
||||||
BUILD_SUBTARGET:=cortexa53
|
BUILD_SUBTARGET:=cortexa53
|
||||||
NAME:=Xunlong Orange Pi PC2
|
NAME:=Xunlong Orange Pi PC2
|
||||||
BUILD_DEVICES:=xunlong_orangepi-pc2
|
BUILD_DEVICES:=xunlong_orangepi-pc2
|
||||||
DEPENDS:=+PACKAGE_u-boot-orangepi_pc2:arm-trusted-firmware-sunxi-a64
|
DEPENDS:=+PACKAGE_u-boot-orangepi_pc2:trusted-firmware-a-sunxi-a64
|
||||||
UENV:=a64
|
UENV:=a64
|
||||||
ATF:=a64
|
ATF:=a64
|
||||||
endef
|
endef
|
||||||
|
@ -385,7 +385,7 @@ UBOOT_TARGETS := \
|
||||||
UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
|
UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
|
||||||
|
|
||||||
UBOOT_MAKE_FLAGS += \
|
UBOOT_MAKE_FLAGS += \
|
||||||
BL31=$(STAGING_DIR_IMAGE)/bl31_sun50i_$(ATF).bin
|
BL31=$(STAGING_DIR_IMAGE)/bl31_sunxi-$(ATF).bin
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||||
|
|
|
@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ncurses
|
PKG_NAME:=ncurses
|
||||||
PKG_CPE_ID:=cpe:/a:gnu:ncurses
|
PKG_CPE_ID:=cpe:/a:gnu:ncurses
|
||||||
PKG_VERSION:=6.3
|
PKG_VERSION:=6.4
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
|
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
|
||||||
PKG_HASH:=97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059
|
PKG_HASH:=6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159
|
||||||
|
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_LICENSE_FILES:=README
|
PKG_LICENSE_FILES:=README
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/misc/terminfo.src
|
--- a/misc/terminfo.src
|
||||||
+++ b/misc/terminfo.src
|
+++ b/misc/terminfo.src
|
||||||
@@ -6616,6 +6616,172 @@ rxvt-cygwin-native|rxvt terminal emulato
|
@@ -6886,6 +6886,172 @@ rxvt-cygwin-native|rxvt terminal emulato
|
||||||
rxvt-16color|rxvt with 16 colors like aixterm,
|
rxvt-16color|rxvt with 16 colors like aixterm,
|
||||||
ncv#32, use=ibm+16color, use=rxvt,
|
ncv#32, use=ibm+16color, use=rxvt,
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
--- a/misc/terminfo.src
|
--- a/misc/terminfo.src
|
||||||
+++ b/misc/terminfo.src
|
+++ b/misc/terminfo.src
|
||||||
@@ -4815,6 +4815,7 @@ xterm+nofkeys|building block for xterm f
|
@@ -4984,6 +4984,7 @@ xterm-xfree86|xterm terminal emulator (X
|
||||||
# This version reflects the current xterm features.
|
|
||||||
xterm-new|modern xterm terminal emulator,
|
xterm+nofkeys|building block for xterm fkey-variants,
|
||||||
npc,
|
npc,
|
||||||
+ kbs=\177,
|
+ kbs=\177,
|
||||||
kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
|
kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
|
||||||
use=ansi+rep, use=ecma+strikeout, use=xterm+pcfkeys,
|
use=ansi+rep, use=ecma+strikeout, use=vt420+lrmm,
|
||||||
use=xterm+nofkeys,
|
use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
|
||||||
@@ -6416,6 +6417,7 @@ mlterm-256color|mlterm 3.0 with xterm 25
|
@@ -6689,6 +6690,7 @@ mlterm-256color|mlterm 3.0 with xterm 25
|
||||||
rxvt-basic|rxvt terminal base (X Window System),
|
rxvt-basic|rxvt terminal base (X Window System),
|
||||||
OTbs, am, bce, eo, mir, msgr, xenl, xon, XT,
|
OTbs, am, bce, eo, mir, msgr, xenl, xon, XT,
|
||||||
cols#80, it#8, lines#24,
|
cols#80, it#8, lines#24,
|
||||||
|
@ -16,24 +16,24 @@
|
||||||
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
|
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
|
||||||
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
|
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
|
||||||
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
|
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
|
||||||
@@ -6425,7 +6427,7 @@ rxvt-basic|rxvt terminal base (X Window
|
@@ -6698,7 +6700,7 @@ rxvt-basic|rxvt terminal base (X Window
|
||||||
enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
|
enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
|
||||||
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
|
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
|
||||||
ind=\n, is1=\E[?47l\E=\E[?1l,
|
ind=\n, is1=\E[?47l\E=\E[?1l,
|
||||||
- is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
|
- is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
|
||||||
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
|
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
|
||||||
kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
|
kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
|
||||||
rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
|
rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
|
||||||
rmul=\E[24m,
|
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
|
||||||
@@ -8060,6 +8062,7 @@ dumb-emacs-ansi|Emacs dumb terminal with
|
@@ -8347,6 +8349,7 @@ dumb-emacs-ansi|Emacs dumb terminal with
|
||||||
screen|VT 100/ANSI X3.64 virtual terminal,
|
screen-base|VT 100/ANSI X3.64 virtual terminal (base),
|
||||||
OTbs, OTpt, am, km, mir, msgr, xenl, G0,
|
OTbs, OTpt, am, km, mir, msgr, xenl, G0,
|
||||||
colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
|
colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
|
||||||
+ kbs=\177,
|
+ kbs=\177,
|
||||||
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
|
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
|
||||||
yzz{{||}}~~,
|
yzz{{||}}~~,
|
||||||
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
|
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
|
||||||
@@ -8071,7 +8074,7 @@ screen|VT 100/ANSI X3.64 virtual termina
|
@@ -8358,7 +8361,7 @@ screen-base|VT 100/ANSI X3.64 virtual te
|
||||||
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
|
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
|
||||||
enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
|
enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
|
||||||
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
|
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
|
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
|
||||||
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
|
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
|
||||||
kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
|
kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
|
||||||
@@ -8199,6 +8202,7 @@ screen.xterm-r6|screen customized for X1
|
@@ -8500,6 +8503,7 @@ screen.xterm-r6|screen customized for X1
|
||||||
# on Solaris because Sun's curses implementation gets confused.
|
# on Solaris because Sun's curses implementation gets confused.
|
||||||
screen.teraterm|disable ncv in teraterm,
|
screen.teraterm|disable ncv in teraterm,
|
||||||
ncv#127,
|
ncv#127,
|
||||||
|
|
|
@ -15,7 +15,7 @@ Subject: [PATCH] ncurses 5.9 - patch 20141206
|
||||||
|
|
||||||
--- a/ncurses/base/MKlib_gen.sh
|
--- a/ncurses/base/MKlib_gen.sh
|
||||||
+++ b/ncurses/base/MKlib_gen.sh
|
+++ b/ncurses/base/MKlib_gen.sh
|
||||||
@@ -511,11 +511,22 @@ sed -n -f $ED1 \
|
@@ -512,11 +512,22 @@ sed -n -f $ED1 \
|
||||||
-e 's/gen_$//' \
|
-e 's/gen_$//' \
|
||||||
-e 's/ / /g' >>$TMP
|
-e 's/ / /g' >>$TMP
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/aclocal.m4
|
--- a/aclocal.m4
|
||||||
+++ b/aclocal.m4
|
+++ b/aclocal.m4
|
||||||
@@ -505,7 +505,7 @@ AC_CACHE_CHECK(for options to update arc
|
@@ -523,7 +523,7 @@ AC_CACHE_CHECK(for options to update arc
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
cf_cv_ar_flags=unknown
|
cf_cv_ar_flags=unknown
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
# check if $ARFLAGS already contains this choice
|
# check if $ARFLAGS already contains this choice
|
||||||
--- a/configure
|
--- a/configure
|
||||||
+++ b/configure
|
+++ b/configure
|
||||||
@@ -5072,7 +5072,7 @@ else
|
@@ -5110,7 +5110,7 @@ else
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
cf_cv_ar_flags=unknown
|
cf_cv_ar_flags=unknown
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/misc/terminfo.src
|
--- a/misc/terminfo.src
|
||||||
+++ b/misc/terminfo.src
|
+++ b/misc/terminfo.src
|
||||||
@@ -6240,12 +6240,11 @@ konsole-xf3x|KDE console window with key
|
@@ -6514,12 +6514,11 @@ konsole-xf3x|KDE console window with key
|
||||||
# The value for kbs (see konsole-vt100) reflects local customization rather
|
# The value for kbs (see konsole-vt100) reflects local customization rather
|
||||||
# than the settings used for XFree86 xterm.
|
# than the settings used for XFree86 xterm.
|
||||||
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
|
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=ustream-ssl
|
PKG_NAME:=ustream-ssl
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=wolfssl
|
PKG_NAME:=wolfssl
|
||||||
PKG_VERSION:=5.5.3-stable
|
PKG_VERSION:=5.5.4-stable
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
|
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
|
||||||
PKG_HASH:=fd3135b8657d09fb96a8aad16585da850b96ea420ae8ce5ac4d5fdfc614c2683
|
PKG_HASH:=b7ee150e49def77c765bc02aac92ddeb0bebefd4cb12aa263d8f95e405221fb8
|
||||||
|
|
||||||
PKG_FIXUP:=libtool libtool-abiver
|
PKG_FIXUP:=libtool libtool-abiver
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
From dc9f46a3be00b5e82684a158605189d1278e324c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Blankenhorn <eric@wolfssl.com>
|
|
||||||
Date: Wed, 12 Oct 2022 16:05:17 -0500
|
|
||||||
Subject: [PATCH] Fix --enable-devcrypto build error for sys without u_int8_t
|
|
||||||
type
|
|
||||||
|
|
||||||
---
|
|
||||||
wolfcrypt/src/port/devcrypto/README.md | 2 +-
|
|
||||||
wolfcrypt/src/port/devcrypto/wc_devcrypto.c | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/wolfcrypt/src/port/devcrypto/README.md
|
|
||||||
+++ b/wolfcrypt/src/port/devcrypto/README.md
|
|
||||||
@@ -22,7 +22,7 @@ modprobe cryptodev
|
|
||||||
For default build with all supported features use:
|
|
||||||
|
|
||||||
```
|
|
||||||
-./configure --enable-cryptodev
|
|
||||||
+./configure --enable-devcrypto
|
|
||||||
```
|
|
||||||
|
|
||||||
Or for more control over features used:
|
|
||||||
--- a/wolfcrypt/src/port/devcrypto/wc_devcrypto.c
|
|
||||||
+++ b/wolfcrypt/src/port/devcrypto/wc_devcrypto.c
|
|
||||||
@@ -122,7 +122,7 @@ int wc_DevCryptoCreate(WC_CRYPTODEV* ctx
|
|
||||||
case CRYPTO_SHA2_512_HMAC:
|
|
||||||
ctx->sess.cipher = 0;
|
|
||||||
ctx->sess.mac = type;
|
|
||||||
- ctx->sess.mackey = (u_int8_t*)key;
|
|
||||||
+ ctx->sess.mackey = (byte*)key;
|
|
||||||
ctx->sess.mackeylen = keySz;
|
|
||||||
break;
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/wolfssl/wolfcrypt/settings.h
|
--- a/wolfssl/wolfcrypt/settings.h
|
||||||
+++ b/wolfssl/wolfcrypt/settings.h
|
+++ b/wolfssl/wolfcrypt/settings.h
|
||||||
@@ -2455,7 +2455,7 @@ extern void uITRON4_free(void *p) ;
|
@@ -2496,7 +2496,7 @@ extern void uITRON4_free(void *p) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* warning for not using harden build options (default with ./configure) */
|
/* warning for not using harden build options (default with ./configure) */
|
||||||
|
|
|
@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk
|
||||||
PKG_NAME:=bridger
|
PKG_NAME:=bridger
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=https://github.com/nbd168/bridger
|
PKG_SOURCE_URL=https://github.com/nbd168/bridger
|
||||||
PKG_SOURCE_DATE:=2022-04-06
|
PKG_SOURCE_DATE:=2023-01-03
|
||||||
PKG_SOURCE_VERSION:=e8f6814a85b4ea951657e7018c5d77597400f44a
|
PKG_SOURCE_VERSION:=978c1f9eed07504cc0b84f72ee7384aab722386a
|
||||||
PKG_MIRROR_HASH:=f917e099a9ab2a55745a7254239efabe695a722d5c448342198cdc847a4a24ac
|
PKG_MIRROR_HASH:=2a019b188d8de2fdc95453529d1820b0a7a5576adf161bd19e182c9c1c2b2c85
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=hostapd
|
PKG_NAME:=hostapd
|
||||||
PKG_RELEASE:=$(AUTORELEASE).1
|
PKG_RELEASE:=$(AUTORELEASE).2
|
||||||
|
|
||||||
PKG_SOURCE_URL:=http://w1.fi/hostap.git
|
PKG_SOURCE_URL:=http://w1.fi/hostap.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=px5g-wolfssl
|
PKG_NAME:=px5g-wolfssl
|
||||||
PKG_RELEASE:=$(COMMITCOUNT).1
|
PKG_RELEASE:=$(COMMITCOUNT).2
|
||||||
PKG_LICENSE:=GPL-2.0-or-later
|
PKG_LICENSE:=GPL-2.0-or-later
|
||||||
|
|
||||||
PKG_USE_MIPS16:=0
|
PKG_USE_MIPS16:=0
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=uencrypt
|
PKG_NAME:=uencrypt
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_FLAGS:=nonshared
|
PKG_FLAGS:=nonshared
|
||||||
PKG_LICENSE:=GPL-2.0-or-later
|
PKG_LICENSE:=GPL-2.0-or-later
|
||||||
|
|
|
@ -107,42 +107,11 @@
|
||||||
read-only;
|
read-only;
|
||||||
};
|
};
|
||||||
|
|
||||||
art: partition@7f0000 {
|
partition@7f0000 {
|
||||||
label = "art";
|
label = "art";
|
||||||
reg = <0x7f0000 0x010000>;
|
reg = <0x7f0000 0x010000>;
|
||||||
read-only;
|
read-only;
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie0 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
ath9k0: wifi@0,11 {
|
|
||||||
compatible = "pci168c,0029";
|
|
||||||
reg = <0x8800 0 0 0 0>;
|
|
||||||
qca,no-eeprom;
|
|
||||||
nvmem-cells = <&macaddr_art_120c>;
|
|
||||||
nvmem-cell-names = "mac-address";
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
gpio-controller;
|
|
||||||
};
|
|
||||||
|
|
||||||
ath9k1: wifi@0,12 {
|
|
||||||
compatible = "pci168c,0029";
|
|
||||||
reg = <0x9000 0 0 0 0>;
|
|
||||||
qca,no-eeprom;
|
|
||||||
nvmem-cells = <&macaddr_art_520c>;
|
|
||||||
nvmem-cell-names = "mac-address";
|
|
||||||
mac-address-increment = <1>;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
gpio-controller;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
&art {
|
|
||||||
compatible = "nvmem-cells";
|
compatible = "nvmem-cells";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@ -158,4 +127,38 @@
|
||||||
macaddr_art_520c: macaddr@520c {
|
macaddr_art_520c: macaddr@520c {
|
||||||
reg = <0x520c 0x6>;
|
reg = <0x520c 0x6>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
calibration_art_1000: calibration@1000 {
|
||||||
|
reg = <0x1000 0xeb8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
calibration_art_5000: calibration@5000 {
|
||||||
|
reg = <0x5000 0xeb8>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pcie0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
ath9k0: wifi@0,11 {
|
||||||
|
compatible = "pci168c,0029";
|
||||||
|
reg = <0x8800 0 0 0 0>;
|
||||||
|
nvmem-cells = <&macaddr_art_120c>, <&calibration_art_1000>;
|
||||||
|
nvmem-cell-names = "mac-address", "calibration";
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
gpio-controller;
|
||||||
|
};
|
||||||
|
|
||||||
|
ath9k1: wifi@0,12 {
|
||||||
|
compatible = "pci168c,0029";
|
||||||
|
reg = <0x9000 0 0 0 0>;
|
||||||
|
nvmem-cells = <&macaddr_art_520c>, <&calibration_art_5000>;
|
||||||
|
nvmem-cell-names = "mac-address", "calibration";
|
||||||
|
mac-address-increment = <1>;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
gpio-controller;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -124,8 +124,7 @@ case "$FIRMWARE" in
|
||||||
"ath9k-eeprom-pci-0000:00:11.0.bin")
|
"ath9k-eeprom-pci-0000:00:11.0.bin")
|
||||||
case $board in
|
case $board in
|
||||||
buffalo,wzr-600dhp|\
|
buffalo,wzr-600dhp|\
|
||||||
buffalo,wzr-hp-ag300h|\
|
buffalo,wzr-hp-ag300h)
|
||||||
netgear,wndap360)
|
|
||||||
caldata_extract "art" 0x1000 0xeb8
|
caldata_extract "art" 0x1000 0xeb8
|
||||||
;;
|
;;
|
||||||
dlink,dir-825-b1|\
|
dlink,dir-825-b1|\
|
||||||
|
@ -144,8 +143,7 @@ case "$FIRMWARE" in
|
||||||
"ath9k-eeprom-pci-0000:00:12.0.bin")
|
"ath9k-eeprom-pci-0000:00:12.0.bin")
|
||||||
case $board in
|
case $board in
|
||||||
buffalo,wzr-600dhp|\
|
buffalo,wzr-600dhp|\
|
||||||
buffalo,wzr-hp-ag300h|\
|
buffalo,wzr-hp-ag300h)
|
||||||
netgear,wndap360)
|
|
||||||
caldata_extract "art" 0x5000 0xeb8
|
caldata_extract "art" 0x5000 0xeb8
|
||||||
;;
|
;;
|
||||||
dlink,dir-825-b1|\
|
dlink,dir-825-b1|\
|
||||||
|
|
|
@ -1763,7 +1763,7 @@ define Device/netgear_wndap360
|
||||||
$(Device/netgear_generic)
|
$(Device/netgear_generic)
|
||||||
SOC := ar7161
|
SOC := ar7161
|
||||||
DEVICE_MODEL := WNDAP360
|
DEVICE_MODEL := WNDAP360
|
||||||
DEVICE_PACKAGES := kmod-leds-reset kmod-owl-loader
|
DEVICE_PACKAGES := kmod-leds-reset
|
||||||
IMAGE_SIZE := 7744k
|
IMAGE_SIZE := 7744k
|
||||||
BLOCKSIZE := 256k
|
BLOCKSIZE := 256k
|
||||||
KERNEL := kernel-bin | append-dtb | gzip | uImage gzip
|
KERNEL := kernel-bin | append-dtb | gzip | uImage gzip
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/core.c
|
--- a/drivers/mtd/spi-nor/core.c
|
||||||
+++ b/drivers/mtd/spi-nor/core.c
|
+++ b/drivers/mtd/spi-nor/core.c
|
||||||
@@ -3095,6 +3095,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3096,6 +3096,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct device *dev = nor->dev;
|
struct device *dev = nor->dev;
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -3149,7 +3150,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -3150,7 +3151,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
mtd->type = MTD_NORFLASH;
|
mtd->type = MTD_NORFLASH;
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -845,6 +845,17 @@ out_error:
|
@@ -847,6 +847,17 @@ out_error:
|
||||||
*/
|
*/
|
||||||
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,7 +45,7 @@ Submitted-by: Christopher Hill <ch6574@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/mfd/Kconfig
|
--- a/drivers/mfd/Kconfig
|
||||||
+++ b/drivers/mfd/Kconfig
|
+++ b/drivers/mfd/Kconfig
|
||||||
@@ -2174,6 +2174,14 @@ config RAVE_SP_CORE
|
@@ -2175,6 +2175,14 @@ config RAVE_SP_CORE
|
||||||
Select this to get support for the Supervisory Processor
|
Select this to get support for the Supervisory Processor
|
||||||
device found on several devices in RAVE line of hardware.
|
device found on several devices in RAVE line of hardware.
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ This reverts commit 83b2a8fe43bda0c11981ad6afa5dd0104d78be28.
|
||||||
|
|
||||||
--- a/drivers/spi/spidev.c
|
--- a/drivers/spi/spidev.c
|
||||||
+++ b/drivers/spi/spidev.c
|
+++ b/drivers/spi/spidev.c
|
||||||
@@ -402,7 +402,6 @@ spidev_ioctl(struct file *filp, unsigned
|
@@ -413,7 +413,6 @@ spidev_ioctl(struct file *filp, unsigned
|
||||||
else
|
else
|
||||||
retval = get_user(tmp, (u32 __user *)arg);
|
retval = get_user(tmp, (u32 __user *)arg);
|
||||||
if (retval == 0) {
|
if (retval == 0) {
|
||||||
|
@ -19,7 +19,7 @@ This reverts commit 83b2a8fe43bda0c11981ad6afa5dd0104d78be28.
|
||||||
u32 save = spi->mode;
|
u32 save = spi->mode;
|
||||||
|
|
||||||
if (tmp & ~SPI_MODE_MASK) {
|
if (tmp & ~SPI_MODE_MASK) {
|
||||||
@@ -410,10 +409,6 @@ spidev_ioctl(struct file *filp, unsigned
|
@@ -421,10 +420,6 @@ spidev_ioctl(struct file *filp, unsigned
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/spi/spidev.c
|
--- a/drivers/spi/spidev.c
|
||||||
+++ b/drivers/spi/spidev.c
|
+++ b/drivers/spi/spidev.c
|
||||||
@@ -747,7 +747,7 @@ static int spidev_probe(struct spi_devic
|
@@ -758,7 +758,7 @@ static int spidev_probe(struct spi_devic
|
||||||
* compatible string, it is a Linux implementation thing
|
* compatible string, it is a Linux implementation thing
|
||||||
* rather than a description of the hardware.
|
* rather than a description of the hardware.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -14,7 +14,7 @@ use the same logic.
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -2744,7 +2744,12 @@ static int pl011_setup_port(struct devic
|
@@ -2756,7 +2756,12 @@ static int pl011_setup_port(struct devic
|
||||||
if (IS_ERR(base))
|
if (IS_ERR(base))
|
||||||
return PTR_ERR(base);
|
return PTR_ERR(base);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -1727,6 +1727,23 @@ static void pl011_put_poll_char(struct u
|
@@ -1730,6 +1730,23 @@ static void pl011_put_poll_char(struct u
|
||||||
|
|
||||||
#endif /* CONFIG_CONSOLE_POLL */
|
#endif /* CONFIG_CONSOLE_POLL */
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static int pl011_hwinit(struct uart_port *port)
|
static int pl011_hwinit(struct uart_port *port)
|
||||||
{
|
{
|
||||||
struct uart_amba_port *uap =
|
struct uart_amba_port *uap =
|
||||||
@@ -1743,7 +1760,7 @@ static int pl011_hwinit(struct uart_port
|
@@ -1746,7 +1763,7 @@ static int pl011_hwinit(struct uart_port
|
||||||
if (retval)
|
if (retval)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
/* Clear pending error and receive interrupts */
|
/* Clear pending error and receive interrupts */
|
||||||
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
||||||
@@ -2440,7 +2457,7 @@ static int pl011_console_setup(struct co
|
@@ -2452,7 +2469,7 @@ static int pl011_console_setup(struct co
|
||||||
plat->init();
|
plat->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
if (uap->vendor->fixed_options) {
|
if (uap->vendor->fixed_options) {
|
||||||
baud = uap->fixed_baud;
|
baud = uap->fixed_baud;
|
||||||
@@ -2657,6 +2674,7 @@ static struct uart_driver amba_reg = {
|
@@ -2669,6 +2686,7 @@ static struct uart_driver amba_reg = {
|
||||||
.cons = AMBA_CONSOLE,
|
.cons = AMBA_CONSOLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static int pl011_probe_dt_alias(int index, struct device *dev)
|
static int pl011_probe_dt_alias(int index, struct device *dev)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
@@ -2688,6 +2706,7 @@ static int pl011_probe_dt_alias(int inde
|
@@ -2700,6 +2718,7 @@ static int pl011_probe_dt_alias(int inde
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -1432,6 +1432,7 @@ static bool pl011_tx_char(struct uart_am
|
@@ -1435,6 +1435,7 @@ static bool pl011_tx_char(struct uart_am
|
||||||
return false; /* unable to transmit character */
|
return false; /* unable to transmit character */
|
||||||
|
|
||||||
pl011_write(c, uap, REG_DR);
|
pl011_write(c, uap, REG_DR);
|
||||||
|
|
|
@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
- reg
|
- reg
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -2835,6 +2835,11 @@ static int pl011_probe(struct amba_devic
|
@@ -2847,6 +2847,11 @@ static int pl011_probe(struct amba_devic
|
||||||
if (IS_ERR(uap->clk))
|
if (IS_ERR(uap->clk))
|
||||||
return PTR_ERR(uap->clk);
|
return PTR_ERR(uap->clk);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/tty/serial/amba-pl011.c
|
--- a/drivers/tty/serial/amba-pl011.c
|
||||||
+++ b/drivers/tty/serial/amba-pl011.c
|
+++ b/drivers/tty/serial/amba-pl011.c
|
||||||
@@ -1493,6 +1493,10 @@ static bool pl011_tx_chars(struct uart_a
|
@@ -1496,6 +1496,10 @@ static bool pl011_tx_chars(struct uart_a
|
||||||
if (likely(from_irq) && count-- == 0)
|
if (likely(from_irq) && count-- == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||||
static DEFINE_MUTEX(transaction_lock);
|
static DEFINE_MUTEX(transaction_lock);
|
||||||
|
|
||||||
static void response_callback(struct mbox_client *cl, void *msg)
|
static void response_callback(struct mbox_client *cl, void *msg)
|
||||||
@@ -279,6 +281,7 @@ static int rpi_firmware_probe(struct pla
|
@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla
|
||||||
kref_init(&fw->consumers);
|
kref_init(&fw->consumers);
|
||||||
|
|
||||||
platform_set_drvdata(pdev, fw);
|
platform_set_drvdata(pdev, fw);
|
||||||
|
@ -44,7 +44,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||||
|
|
||||||
rpi_firmware_print_firmware_revision(fw);
|
rpi_firmware_print_firmware_revision(fw);
|
||||||
rpi_register_hwmon_driver(dev, fw);
|
rpi_register_hwmon_driver(dev, fw);
|
||||||
@@ -307,6 +310,7 @@ static int rpi_firmware_remove(struct pl
|
@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct pl
|
||||||
rpi_clk = NULL;
|
rpi_clk = NULL;
|
||||||
|
|
||||||
rpi_firmware_put(fw);
|
rpi_firmware_put(fw);
|
||||||
|
@ -52,7 +52,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -381,7 +385,18 @@ static struct platform_driver rpi_firmwa
|
@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmwa
|
||||||
.shutdown = rpi_firmware_shutdown,
|
.shutdown = rpi_firmware_shutdown,
|
||||||
.remove = rpi_firmware_remove,
|
.remove = rpi_firmware_remove,
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,7 +27,7 @@ mfd: Add rpi_sense_core of compatible string
|
||||||
|
|
||||||
--- a/drivers/input/joystick/Kconfig
|
--- a/drivers/input/joystick/Kconfig
|
||||||
+++ b/drivers/input/joystick/Kconfig
|
+++ b/drivers/input/joystick/Kconfig
|
||||||
@@ -399,4 +399,12 @@ config JOYSTICK_N64
|
@@ -400,4 +400,12 @@ config JOYSTICK_N64
|
||||||
Say Y here if you want enable support for the four
|
Say Y here if you want enable support for the four
|
||||||
built-in controller ports on the Nintendo 64 console.
|
built-in controller ports on the Nintendo 64 console.
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
static void
|
static void
|
||||||
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
|
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
|
||||||
{
|
{
|
||||||
@@ -386,15 +407,32 @@ static struct platform_driver rpi_firmwa
|
@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa
|
||||||
.remove = rpi_firmware_remove,
|
.remove = rpi_firmware_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -338,6 +375,7 @@ static int rpi_firmware_probe(struct pla
|
@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct pla
|
||||||
g_pdev = pdev;
|
g_pdev = pdev;
|
||||||
|
|
||||||
rpi_firmware_print_firmware_revision(fw);
|
rpi_firmware_print_firmware_revision(fw);
|
||||||
|
|
|
@ -36,7 +36,7 @@ Co-authored-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
MODULE_DESCRIPTION("BCM2835 clock driver");
|
MODULE_DESCRIPTION("BCM2835 clock driver");
|
||||||
--- a/drivers/firmware/raspberrypi.c
|
--- a/drivers/firmware/raspberrypi.c
|
||||||
+++ b/drivers/firmware/raspberrypi.c
|
+++ b/drivers/firmware/raspberrypi.c
|
||||||
@@ -498,7 +498,7 @@ out2:
|
@@ -499,7 +499,7 @@ out2:
|
||||||
out1:
|
out1:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
From cf7d5f766e0a9eeb09271c36f546ac0a1fdc0444 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
||||||
Date: Fri, 24 Jan 2020 14:22:06 +0000
|
|
||||||
Subject: [PATCH] drm/fourcc: Add packed 10bit YUV 4:2:0 format
|
|
||||||
|
|
||||||
Adds a format that is 3 10bit YUV 4:2:0 samples packed into
|
|
||||||
a 32bit work (with 2 spare bits).
|
|
||||||
|
|
||||||
Supported on Broadcom BCM2711 chips.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/drm_fourcc.c | 3 +++
|
|
||||||
include/uapi/drm/drm_fourcc.h | 11 +++++++++++
|
|
||||||
2 files changed, 14 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/gpu/drm/drm_fourcc.c
|
|
||||||
+++ b/drivers/gpu/drm/drm_fourcc.c
|
|
||||||
@@ -266,6 +266,9 @@ const struct drm_format_info *__drm_form
|
|
||||||
.num_planes = 3, .char_per_block = { 2, 2, 2 },
|
|
||||||
.block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0,
|
|
||||||
.vsub = 0, .is_yuv = true },
|
|
||||||
+ { .format = DRM_FORMAT_P030, .depth = 0, .num_planes = 2,
|
|
||||||
+ .char_per_block = { 4, 4, 0 }, .block_w = { 3, 0, 0 }, .block_h = { 1, 0, 0 },
|
|
||||||
+ .hsub = 2, .vsub = 2, .is_yuv = true},
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int i;
|
|
||||||
--- a/include/uapi/drm/drm_fourcc.h
|
|
||||||
+++ b/include/uapi/drm/drm_fourcc.h
|
|
||||||
@@ -325,6 +325,13 @@ extern "C" {
|
|
||||||
#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * 2 plane YCbCr MSB aligned, 3 pixels packed into 4 bytes.
|
|
||||||
+ * index 0 = Y plane, [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian
|
|
||||||
+ * index 1 = Cr:Cb plane, [63:0] x:Cr2:Cb2:Cr1:x:Cb1:Cr0:Cb0 [2:10:10:10:2:10:10:10] little endian
|
|
||||||
+ */
|
|
||||||
+#define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel packed */
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* 3 plane YCbCr
|
|
||||||
* index 0: Y plane, [7:0] Y
|
|
||||||
* index 1: Cb plane, [7:0] Cb
|
|
||||||
@@ -842,6 +849,10 @@ drm_fourcc_canonicalize_nvidia_format_mo
|
|
||||||
* and UV. Some SAND-using hardware stores UV in a separate tiled
|
|
||||||
* image from Y to reduce the column height, which is not supported
|
|
||||||
* with these modifiers.
|
|
||||||
+ *
|
|
||||||
+ * The DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT modifier is also
|
|
||||||
+ * supported for DRM_FORMAT_P030 where the columns remain as 128 bytes
|
|
||||||
+ * wide, but as this is a 10 bpp format that translates to 96 pixels.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) \
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
/* Device and char device-related information */
|
/* Device and char device-related information */
|
||||||
static DEFINE_IDA(gpio_ida);
|
static DEFINE_IDA(gpio_ida);
|
||||||
static dev_t gpio_devt;
|
static dev_t gpio_devt;
|
||||||
@@ -2392,8 +2394,8 @@ int gpiod_direction_output(struct gpio_d
|
@@ -2395,8 +2397,8 @@ int gpiod_direction_output(struct gpio_d
|
||||||
value = !!value;
|
value = !!value;
|
||||||
|
|
||||||
/* GPIOs used for enabled IRQs shall not be set as output */
|
/* GPIOs used for enabled IRQs shall not be set as output */
|
||||||
|
@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||||
gpiod_err(desc,
|
gpiod_err(desc,
|
||||||
"%s: tried to set a GPIO tied to an IRQ as output\n",
|
"%s: tried to set a GPIO tied to an IRQ as output\n",
|
||||||
__func__);
|
__func__);
|
||||||
@@ -3211,8 +3213,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
|
@@ -3213,8 +3215,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
|
||||||
}
|
}
|
||||||
|
|
||||||
/* To be valid for IRQ the line needs to be input or open drain */
|
/* To be valid for IRQ the line needs to be input or open drain */
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||||
|
|
||||||
--- a/drivers/spi/spidev.c
|
--- a/drivers/spi/spidev.c
|
||||||
+++ b/drivers/spi/spidev.c
|
+++ b/drivers/spi/spidev.c
|
||||||
@@ -669,6 +669,7 @@ static const struct file_operations spid
|
@@ -680,6 +680,7 @@ static const struct file_operations spid
|
||||||
static struct class *spidev_class;
|
static struct class *spidev_class;
|
||||||
|
|
||||||
static const struct spi_device_id spidev_spi_ids[] = {
|
static const struct spi_device_id spidev_spi_ids[] = {
|
||||||
|
|
|
@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3153,7 +3156,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
@@ -3159,7 +3162,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
||||||
* that clears the EHB.
|
* that clears the EHB.
|
||||||
*/
|
*/
|
||||||
while (xhci_handle_event(xhci) > 0) {
|
while (xhci_handle_event(xhci) > 0) {
|
||||||
|
@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
continue;
|
continue;
|
||||||
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
||||||
event_ring_deq = xhci->event_ring->dequeue;
|
event_ring_deq = xhci->event_ring->dequeue;
|
||||||
@@ -3295,7 +3298,8 @@ static int prepare_ring(struct xhci_hcd
|
@@ -3301,7 +3304,8 @@ static int prepare_ring(struct xhci_hcd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -440,9 +440,9 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||||
st7701->dsi = dsi;
|
st7701->dsi = dsi;
|
||||||
- st7701->desc = desc;
|
- st7701->desc = desc;
|
||||||
|
|
||||||
return mipi_dsi_attach(dsi);
|
ret = mipi_dsi_attach(dsi);
|
||||||
}
|
if (ret)
|
||||||
@@ -397,21 +639,115 @@ static int st7701_dsi_remove(struct mipi
|
@@ -405,21 +647,115 @@ static int st7701_dsi_remove(struct mipi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
static int spi_gpio_setup(struct spi_device *spi)
|
static int spi_gpio_setup(struct spi_device *spi)
|
||||||
@@ -289,6 +297,7 @@ static int spi_gpio_request(struct devic
|
@@ -299,6 +307,7 @@ static int spi_gpio_request(struct devic
|
||||||
if (IS_ERR(spi_gpio->miso))
|
if (IS_ERR(spi_gpio->miso))
|
||||||
return PTR_ERR(spi_gpio->miso);
|
return PTR_ERR(spi_gpio->miso);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -3608,14 +3608,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3614,14 +3614,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
|
@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
full_len = urb->transfer_buffer_length;
|
full_len = urb->transfer_buffer_length;
|
||||||
/* If we have scatter/gather list, we use it. */
|
/* If we have scatter/gather list, we use it. */
|
||||||
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
||||||
@@ -3652,6 +3653,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3658,6 +3659,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
start_cycle = ring->cycle_state;
|
start_cycle = ring->cycle_state;
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
||||||
enqd_len += trb_buff_len) {
|
enqd_len += trb_buff_len) {
|
||||||
@@ -3664,6 +3676,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3670,6 +3682,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -3608,7 +3608,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3614,7 +3614,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
u32 field, length_field, remainder, maxpacket;
|
u32 field, length_field, remainder, maxpacket;
|
||||||
u64 addr, send_addr;
|
u64 addr, send_addr;
|
||||||
|
|
||||||
@@ -3654,14 +3654,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3660,14 +3660,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
@@ -3676,7 +3671,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3682,7 +3677,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ Reviewed-by: Vadim Pasternak <vadimp@nvidia.com>
|
||||||
|
|
||||||
--- a/drivers/hwmon/Kconfig
|
--- a/drivers/hwmon/Kconfig
|
||||||
+++ b/drivers/hwmon/Kconfig
|
+++ b/drivers/hwmon/Kconfig
|
||||||
@@ -1684,6 +1684,19 @@ config SENSORS_EMC2103
|
@@ -1685,6 +1685,19 @@ config SENSORS_EMC2103
|
||||||
This driver can also be built as a module. If so, the module
|
This driver can also be built as a module. If so, the module
|
||||||
will be called emc2103.
|
will be called emc2103.
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
}
|
}
|
||||||
--- a/drivers/gpio/gpiolib.c
|
--- a/drivers/gpio/gpiolib.c
|
||||||
+++ b/drivers/gpio/gpiolib.c
|
+++ b/drivers/gpio/gpiolib.c
|
||||||
@@ -1799,7 +1799,8 @@ int gpiochip_add_pingroup_range(struct g
|
@@ -1802,7 +1802,8 @@ int gpiochip_add_pingroup_range(struct g
|
||||||
|
|
||||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
|
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
|
||||||
|
|
||||||
@@ -1856,7 +1857,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
@@ -1859,7 +1860,7 @@ int gpiochip_add_pin_range(struct gpio_c
|
||||||
|
|
||||||
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
list_add_tail(&pin_range->node, &gdev->pin_ranges);
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct clk clk_pcie = {
|
static struct clk clk_pcie = {
|
||||||
@@ -548,6 +562,21 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -550,6 +564,21 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
|
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
#define HSSPI_PLL_HZ_6328 133333333
|
#define HSSPI_PLL_HZ_6328 133333333
|
||||||
#define HSSPI_PLL_HZ_6362 400000000
|
#define HSSPI_PLL_HZ_6362 400000000
|
||||||
|
|
||||||
@@ -580,6 +609,10 @@ static int __init bcm63xx_clk_init(void)
|
@@ -582,6 +611,10 @@ static int __init bcm63xx_clk_init(void)
|
||||||
case BCM6368_CPU_ID:
|
case BCM6368_CPU_ID:
|
||||||
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
|
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -57,7 +57,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
mask = CKCTL_6328_HSSPI_EN;
|
mask = CKCTL_6328_HSSPI_EN;
|
||||||
else if (BCMCPU_IS_6362())
|
else if (BCMCPU_IS_6362())
|
||||||
mask = CKCTL_6362_HSSPI_EN;
|
mask = CKCTL_6362_HSSPI_EN;
|
||||||
@@ -456,6 +458,19 @@ static struct clk_lookup bcm3368_clks[]
|
@@ -458,6 +460,19 @@ static struct clk_lookup bcm3368_clks[]
|
||||||
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
|
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
static struct clk_lookup bcm6328_clks[] = {
|
static struct clk_lookup bcm6328_clks[] = {
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
@@ -577,6 +592,7 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -579,6 +594,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
|
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||||
#define HSSPI_PLL_HZ_6328 133333333
|
#define HSSPI_PLL_HZ_6328 133333333
|
||||||
#define HSSPI_PLL_HZ_6362 400000000
|
#define HSSPI_PLL_HZ_6362 400000000
|
||||||
|
|
||||||
@@ -586,6 +602,10 @@ static int __init bcm63xx_clk_init(void)
|
@@ -588,6 +604,10 @@ static int __init bcm63xx_clk_init(void)
|
||||||
case BCM3368_CPU_ID:
|
case BCM3368_CPU_ID:
|
||||||
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
|
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -9,7 +9,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
|
|
||||||
--- a/arch/mips/bcm63xx/clk.c
|
--- a/arch/mips/bcm63xx/clk.c
|
||||||
+++ b/arch/mips/bcm63xx/clk.c
|
+++ b/arch/mips/bcm63xx/clk.c
|
||||||
@@ -501,6 +501,8 @@ static struct clk_lookup bcm3368_clks[]
|
@@ -503,6 +503,8 @@ static struct clk_lookup bcm3368_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -18,7 +18,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -517,7 +519,9 @@ static struct clk_lookup bcm6318_clks[]
|
@@ -519,7 +521,9 @@ static struct clk_lookup bcm6318_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -28,7 +28,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -531,7 +535,10 @@ static struct clk_lookup bcm6328_clks[]
|
@@ -533,7 +537,10 @@ static struct clk_lookup bcm6328_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -39,7 +39,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -544,6 +551,7 @@ static struct clk_lookup bcm6338_clks[]
|
@@ -546,6 +553,7 @@ static struct clk_lookup bcm6338_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -47,7 +47,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -558,6 +566,7 @@ static struct clk_lookup bcm6345_clks[]
|
@@ -560,6 +568,7 @@ static struct clk_lookup bcm6345_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -55,7 +55,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -572,6 +581,7 @@ static struct clk_lookup bcm6348_clks[]
|
@@ -574,6 +583,7 @@ static struct clk_lookup bcm6348_clks[]
|
||||||
/* fixed rate clocks */
|
/* fixed rate clocks */
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
|
@ -63,7 +63,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -588,6 +598,8 @@ static struct clk_lookup bcm6358_clks[]
|
@@ -590,6 +600,8 @@ static struct clk_lookup bcm6358_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -72,7 +72,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||||
@@ -607,7 +619,10 @@ static struct clk_lookup bcm6362_clks[]
|
@@ -609,7 +621,10 @@ static struct clk_lookup bcm6362_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -83,7 +83,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -623,6 +638,8 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -625,6 +640,8 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
@ -92,7 +92,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
@@ -637,7 +654,10 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -639,7 +656,10 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
* Internal peripheral clock
|
* Internal peripheral clock
|
||||||
*/
|
*/
|
||||||
static struct clk clk_periph = {
|
static struct clk clk_periph = {
|
||||||
@@ -624,6 +641,7 @@ static struct clk_lookup bcm6362_clks[]
|
@@ -626,6 +643,7 @@ static struct clk_lookup bcm6362_clks[]
|
||||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||||
@@ -641,6 +659,7 @@ static struct clk_lookup bcm6368_clks[]
|
@@ -643,6 +661,7 @@ static struct clk_lookup bcm6368_clks[]
|
||||||
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
||||||
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||||
@@ -659,6 +678,7 @@ static struct clk_lookup bcm63268_clks[]
|
@@ -661,6 +680,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||||
/* gated clocks */
|
/* gated clocks */
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
From 94c821c74bf5fe0c25e09df5334a16f98608db90 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Seth David Schoen <schoen@loyalty.org>
|
||||||
|
Date: Wed, 12 May 2021 21:37:49 -0700
|
||||||
|
Subject: [PATCH] ip: Treat IPv4 segment's lowest address as unicast
|
||||||
|
|
||||||
|
Treat only the highest, not the lowest, IPv4 address within a local
|
||||||
|
subnet as a broadcast address.
|
||||||
|
|
||||||
|
Signed-off-by: Seth David Schoen <schoen@loyalty.org>
|
||||||
|
Suggested-by: John Gilmore <gnu@toad.com>
|
||||||
|
Acked-by: Dave Taht <dave.taht@gmail.com>
|
||||||
|
Reviewed-by: David Ahern <dsahern@kernel.org>
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
Link: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=94c821c74bf5
|
||||||
|
---
|
||||||
|
net/ipv4/fib_frontend.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/net/ipv4/fib_frontend.c
|
||||||
|
+++ b/net/ipv4/fib_frontend.c
|
||||||
|
@@ -1129,10 +1129,8 @@ void fib_add_ifaddr(struct in_ifaddr *if
|
||||||
|
prefix, ifa->ifa_prefixlen, prim,
|
||||||
|
ifa->ifa_rt_priority);
|
||||||
|
|
||||||
|
- /* Add network specific broadcasts, when it takes a sense */
|
||||||
|
+ /* Add the network broadcast address, when it makes sense */
|
||||||
|
if (ifa->ifa_prefixlen < 31) {
|
||||||
|
- fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix, 32,
|
||||||
|
- prim, 0);
|
||||||
|
fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix | ~mask,
|
||||||
|
32, prim, 0);
|
||||||
|
arp_invalidate(dev, prefix | ~mask, false);
|
|
@ -297,7 +297,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
|
||||||
}
|
}
|
||||||
--- a/kernel/fork.c
|
--- a/kernel/fork.c
|
||||||
+++ b/kernel/fork.c
|
+++ b/kernel/fork.c
|
||||||
@@ -1080,6 +1080,7 @@ static struct mm_struct *mm_init(struct
|
@@ -1083,6 +1083,7 @@ static struct mm_struct *mm_init(struct
|
||||||
goto fail_nocontext;
|
goto fail_nocontext;
|
||||||
|
|
||||||
mm->user_ns = get_user_ns(user_ns);
|
mm->user_ns = get_user_ns(user_ns);
|
||||||
|
@ -305,7 +305,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
|
||||||
return mm;
|
return mm;
|
||||||
|
|
||||||
fail_nocontext:
|
fail_nocontext:
|
||||||
@@ -1122,6 +1123,7 @@ static inline void __mmput(struct mm_str
|
@@ -1125,6 +1126,7 @@ static inline void __mmput(struct mm_str
|
||||||
}
|
}
|
||||||
if (mm->binfmt)
|
if (mm->binfmt)
|
||||||
module_put(mm->binfmt->module);
|
module_put(mm->binfmt->module);
|
||||||
|
@ -313,7 +313,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
|
||||||
mmdrop(mm);
|
mmdrop(mm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2617,6 +2619,13 @@ pid_t kernel_clone(struct kernel_clone_a
|
@@ -2622,6 +2624,13 @@ pid_t kernel_clone(struct kernel_clone_a
|
||||||
get_task_struct(p);
|
get_task_struct(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,4 +103,4 @@ Link: https://lore.kernel.org/linux-mtd/20220622010628.30414-4-ansuelsmth@gmail.
|
||||||
+ mtd_check_of_node(mtd);
|
+ mtd_check_of_node(mtd);
|
||||||
of_node_get(mtd_get_of_node(mtd));
|
of_node_get(mtd_get_of_node(mtd));
|
||||||
error = device_register(&mtd->dev);
|
error = device_register(&mtd->dev);
|
||||||
if (error)
|
if (error) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||||
|
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -1227,6 +1227,34 @@ int __get_mtd_device(struct mtd_info *mt
|
@@ -1229,6 +1229,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||||
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -27,7 +27,7 @@ Link: https://lore.kernel.org/linux-mtd/20221022211318.32009-2-zajec5@gmail.com
|
||||||
|
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
@@ -746,6 +747,17 @@ int add_mtd_device(struct mtd_info *mtd)
|
@@ -748,6 +749,17 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||||
not->add(mtd);
|
not->add(mtd);
|
||||||
|
|
||||||
mutex_unlock(&mtd_table_mutex);
|
mutex_unlock(&mtd_table_mutex);
|
||||||
|
|
|
@ -233,7 +233,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static inline void
|
static inline void
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -863,6 +863,7 @@ enum net_device_path_type {
|
@@ -870,6 +870,7 @@ enum net_device_path_type {
|
||||||
DEV_PATH_BRIDGE,
|
DEV_PATH_BRIDGE,
|
||||||
DEV_PATH_PPPOE,
|
DEV_PATH_PPPOE,
|
||||||
DEV_PATH_DSA,
|
DEV_PATH_DSA,
|
||||||
|
@ -241,7 +241,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
};
|
};
|
||||||
|
|
||||||
struct net_device_path {
|
struct net_device_path {
|
||||||
@@ -888,6 +889,12 @@ struct net_device_path {
|
@@ -895,6 +896,12 @@ struct net_device_path {
|
||||||
int port;
|
int port;
|
||||||
u16 proto;
|
u16 proto;
|
||||||
} dsa;
|
} dsa;
|
||||||
|
|
|
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
stmmac_clear_tx_descriptors(priv, queue);
|
stmmac_clear_tx_descriptors(priv, queue);
|
||||||
|
|
||||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
@@ -7398,6 +7393,25 @@ int stmmac_suspend(struct device *dev)
|
@@ -7400,6 +7395,25 @@ int stmmac_suspend(struct device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
/**
|
/**
|
||||||
* stmmac_reset_queues_param - reset queue parameters
|
* stmmac_reset_queues_param - reset queue parameters
|
||||||
* @priv: device pointer
|
* @priv: device pointer
|
||||||
@@ -7408,22 +7422,11 @@ static void stmmac_reset_queues_param(st
|
@@ -7410,22 +7424,11 @@ static void stmmac_reset_queues_param(st
|
||||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||||
u32 queue;
|
u32 queue;
|
||||||
|
|
||||||
|
|
|
@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
if (netif_running(dev))
|
if (netif_running(dev))
|
||||||
ret = stmmac_open(dev);
|
ret = stmmac_open(dev);
|
||||||
@@ -7344,7 +7348,7 @@ int stmmac_suspend(struct device *dev)
|
@@ -7346,7 +7350,7 @@ int stmmac_suspend(struct device *dev)
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
|
@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
if (priv->eee_enabled) {
|
if (priv->eee_enabled) {
|
||||||
priv->tx_path_in_lpi_mode = false;
|
priv->tx_path_in_lpi_mode = false;
|
||||||
@@ -7395,7 +7399,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
@@ -7397,7 +7401,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
|
@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
rx_q->cur_rx = 0;
|
rx_q->cur_rx = 0;
|
||||||
rx_q->dirty_rx = 0;
|
rx_q->dirty_rx = 0;
|
||||||
@@ -7403,7 +7407,7 @@ static void stmmac_reset_rx_queue(struct
|
@@ -7405,7 +7409,7 @@ static void stmmac_reset_rx_queue(struct
|
||||||
|
|
||||||
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
|
@ -1250,7 +1250,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
stmmac_set_rx_tail_ptr(priv, priv->ioaddr, tail, i);
|
stmmac_set_rx_tail_ptr(priv, priv->ioaddr, tail, i);
|
||||||
stmmac_start_rx(priv, priv->ioaddr, i);
|
stmmac_start_rx(priv, priv->ioaddr, i);
|
||||||
@@ -1680,7 +1680,7 @@ cleanup:
|
@@ -1684,7 +1684,7 @@ cleanup:
|
||||||
static int __stmmac_test_jumbo(struct stmmac_priv *priv, u16 queue)
|
static int __stmmac_test_jumbo(struct stmmac_priv *priv, u16 queue)
|
||||||
{
|
{
|
||||||
struct stmmac_packet_attrs attr = { };
|
struct stmmac_packet_attrs attr = { };
|
||||||
|
@ -1259,7 +1259,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
attr.dst = priv->dev->dev_addr;
|
attr.dst = priv->dev->dev_addr;
|
||||||
attr.max_size = size - ETH_FCS_LEN;
|
attr.max_size = size - ETH_FCS_LEN;
|
||||||
@@ -1763,7 +1763,7 @@ static int stmmac_test_tbs(struct stmmac
|
@@ -1767,7 +1767,7 @@ static int stmmac_test_tbs(struct stmmac
|
||||||
|
|
||||||
/* Find first TBS enabled Queue, if any */
|
/* Find first TBS enabled Queue, if any */
|
||||||
for (i = 0; i < priv->plat->tx_queues_to_use; i++)
|
for (i = 0; i < priv->plat->tx_queues_to_use; i++)
|
||||||
|
|
|
@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
dma_desc_error:
|
dma_desc_error:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -7490,7 +7606,7 @@ int stmmac_resume(struct device *dev)
|
@@ -7492,7 +7608,7 @@ int stmmac_resume(struct device *dev)
|
||||||
stmmac_reset_queues_param(priv);
|
stmmac_reset_queues_param(priv);
|
||||||
|
|
||||||
stmmac_free_tx_skbufs(priv);
|
stmmac_free_tx_skbufs(priv);
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
From 9807ae69746196ee4bbffe7d22d22ab2b61c6ed0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 29 Dec 2022 17:33:32 +0100
|
||||||
|
Subject: [PATCH 1/5] net: dsa: qca8k: fix wrong length value for mgmt eth
|
||||||
|
packet
|
||||||
|
|
||||||
|
The assumption that Documentation was right about how this value work was
|
||||||
|
wrong. It was discovered that the length value of the mgmt header is in
|
||||||
|
step of word size.
|
||||||
|
|
||||||
|
As an example to process 4 byte of data the correct length to set is 2.
|
||||||
|
To process 8 byte 4, 12 byte 6, 16 byte 8...
|
||||||
|
|
||||||
|
Odd values will always return the next size on the ack packet.
|
||||||
|
(length of 3 (6 byte) will always return 8 bytes of data)
|
||||||
|
|
||||||
|
This means that a value of 15 (0xf) actually means reading/writing 32 bytes
|
||||||
|
of data instead of 16 bytes. This behaviour is totally absent and not
|
||||||
|
documented in the switch Documentation.
|
||||||
|
|
||||||
|
In fact from Documentation the max value that mgmt eth can process is
|
||||||
|
16 byte of data while in reality it can process 32 bytes at once.
|
||||||
|
|
||||||
|
To handle this we always round up the length after deviding it for word
|
||||||
|
size. We check if the result is odd and we round another time to align
|
||||||
|
to what the switch will provide in the ack packet.
|
||||||
|
The workaround for the length limit of 15 is still needed as the length
|
||||||
|
reg max value is 0xf(15)
|
||||||
|
|
||||||
|
Reported-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Fixes: 90386223f44e ("net: dsa: qca8k: add support for larger read/write size with mgmt Ethernet")
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Cc: stable@vger.kernel.org # v5.18+
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
drivers/net/dsa/qca/qca8k-8xxx.c | 45 +++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 35 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
@@ -146,7 +146,16 @@ static void qca8k_rw_reg_ack_handler(str
|
||||||
|
|
||||||
|
command = get_unaligned_le32(&mgmt_ethhdr->command);
|
||||||
|
cmd = FIELD_GET(QCA_HDR_MGMT_CMD, command);
|
||||||
|
+
|
||||||
|
len = FIELD_GET(QCA_HDR_MGMT_LENGTH, command);
|
||||||
|
+ /* Special case for len of 15 as this is the max value for len and needs to
|
||||||
|
+ * be increased before converting it from word to dword.
|
||||||
|
+ */
|
||||||
|
+ if (len == 15)
|
||||||
|
+ len++;
|
||||||
|
+
|
||||||
|
+ /* We can ignore odd value, we always round up them in the alloc function. */
|
||||||
|
+ len *= sizeof(u16);
|
||||||
|
|
||||||
|
/* Make sure the seq match the requested packet */
|
||||||
|
if (get_unaligned_le32(&mgmt_ethhdr->seq) == mgmt_eth_data->seq)
|
||||||
|
@@ -193,17 +202,33 @@ static struct sk_buff *qca8k_alloc_mdio_
|
||||||
|
if (!skb)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- /* Max value for len reg is 15 (0xf) but the switch actually return 16 byte
|
||||||
|
- * Actually for some reason the steps are:
|
||||||
|
- * 0: nothing
|
||||||
|
- * 1-4: first 4 byte
|
||||||
|
- * 5-6: first 12 byte
|
||||||
|
- * 7-15: all 16 byte
|
||||||
|
+ /* Hdr mgmt length value is in step of word size.
|
||||||
|
+ * As an example to process 4 byte of data the correct length to set is 2.
|
||||||
|
+ * To process 8 byte 4, 12 byte 6, 16 byte 8...
|
||||||
|
+ *
|
||||||
|
+ * Odd values will always return the next size on the ack packet.
|
||||||
|
+ * (length of 3 (6 byte) will always return 8 bytes of data)
|
||||||
|
+ *
|
||||||
|
+ * This means that a value of 15 (0xf) actually means reading/writing 32 bytes
|
||||||
|
+ * of data.
|
||||||
|
+ *
|
||||||
|
+ * To correctly calculate the length we devide the requested len by word and
|
||||||
|
+ * round up.
|
||||||
|
+ * On the ack function we can skip the odd check as we already handle the
|
||||||
|
+ * case here.
|
||||||
|
*/
|
||||||
|
- if (len == 16)
|
||||||
|
- real_len = 15;
|
||||||
|
- else
|
||||||
|
- real_len = len;
|
||||||
|
+ real_len = DIV_ROUND_UP(len, sizeof(u16));
|
||||||
|
+
|
||||||
|
+ /* We check if the result len is odd and we round up another time to
|
||||||
|
+ * the next size. (length of 3 will be increased to 4 as switch will always
|
||||||
|
+ * return 8 bytes)
|
||||||
|
+ */
|
||||||
|
+ if (real_len % sizeof(u16) != 0)
|
||||||
|
+ real_len++;
|
||||||
|
+
|
||||||
|
+ /* Max reg value is 0xf(15) but switch will always return the next size (32 byte) */
|
||||||
|
+ if (real_len == 16)
|
||||||
|
+ real_len--;
|
||||||
|
|
||||||
|
skb_reset_mac_header(skb);
|
||||||
|
skb_set_network_header(skb, skb->len);
|
|
@ -0,0 +1,34 @@
|
||||||
|
From d9dba91be71f03cc75bcf39fc0d5d99ff33f1ae0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 29 Dec 2022 17:33:33 +0100
|
||||||
|
Subject: [PATCH 2/5] net: dsa: tag_qca: fix wrong MGMT_DATA2 size
|
||||||
|
|
||||||
|
It was discovered that MGMT_DATA2 can contain up to 28 bytes of data
|
||||||
|
instead of the 12 bytes written in the Documentation by accounting the
|
||||||
|
limit of 16 bytes declared in Documentation subtracting the first 4 byte
|
||||||
|
in the packet header.
|
||||||
|
|
||||||
|
Update the define with the real world value.
|
||||||
|
|
||||||
|
Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Fixes: c2ee8181fddb ("net: dsa: tag_qca: add define for handling mgmt Ethernet packet")
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Cc: stable@vger.kernel.org # v5.18+
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
include/linux/dsa/tag_qca.h | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/include/linux/dsa/tag_qca.h
|
||||||
|
+++ b/include/linux/dsa/tag_qca.h
|
||||||
|
@@ -40,8 +40,8 @@
|
||||||
|
QCA_HDR_MGMT_COMMAND_LEN + \
|
||||||
|
QCA_HDR_MGMT_DATA1_LEN)
|
||||||
|
|
||||||
|
-#define QCA_HDR_MGMT_DATA2_LEN 12 /* Other 12 byte for the mdio data */
|
||||||
|
-#define QCA_HDR_MGMT_PADDING_LEN 34 /* Padding to reach the min Ethernet packet */
|
||||||
|
+#define QCA_HDR_MGMT_DATA2_LEN 28 /* Other 28 byte for the mdio data */
|
||||||
|
+#define QCA_HDR_MGMT_PADDING_LEN 18 /* Padding to reach the min Ethernet packet */
|
||||||
|
|
||||||
|
#define QCA_HDR_MGMT_PKT_LEN (QCA_HDR_MGMT_HEADER_LEN + \
|
||||||
|
QCA_HDR_LEN + \
|
|
@ -0,0 +1,172 @@
|
||||||
|
From 03cb9e6d0b32b768e3d9d473c5c4ca1100877664 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 29 Dec 2022 17:33:34 +0100
|
||||||
|
Subject: [PATCH 3/5] Revert "net: dsa: qca8k: cache lo and hi for mdio write"
|
||||||
|
|
||||||
|
This reverts commit 2481d206fae7884cd07014fd1318e63af35e99eb.
|
||||||
|
|
||||||
|
The Documentation is very confusing about the topic.
|
||||||
|
The cache logic for hi and lo is wrong and actually miss some regs to be
|
||||||
|
actually written.
|
||||||
|
|
||||||
|
What the Documentation actually intended was that it's possible to skip
|
||||||
|
writing hi OR lo if half of the reg is not needed to be written or read.
|
||||||
|
|
||||||
|
Revert the change in favor of a better and correct implementation.
|
||||||
|
|
||||||
|
Reported-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Cc: stable@vger.kernel.org # v5.18+
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
drivers/net/dsa/qca/qca8k-8xxx.c | 61 +++++++-------------------------
|
||||||
|
drivers/net/dsa/qca/qca8k.h | 5 ---
|
||||||
|
2 files changed, 12 insertions(+), 54 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
@@ -37,44 +37,6 @@ qca8k_split_addr(u32 regaddr, u16 *r1, u
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
-qca8k_set_lo(struct qca8k_priv *priv, int phy_id, u32 regnum, u16 lo)
|
||||||
|
-{
|
||||||
|
- u16 *cached_lo = &priv->mdio_cache.lo;
|
||||||
|
- struct mii_bus *bus = priv->bus;
|
||||||
|
- int ret;
|
||||||
|
-
|
||||||
|
- if (lo == *cached_lo)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- ret = bus->write(bus, phy_id, regnum, lo);
|
||||||
|
- if (ret < 0)
|
||||||
|
- dev_err_ratelimited(&bus->dev,
|
||||||
|
- "failed to write qca8k 32bit lo register\n");
|
||||||
|
-
|
||||||
|
- *cached_lo = lo;
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static int
|
||||||
|
-qca8k_set_hi(struct qca8k_priv *priv, int phy_id, u32 regnum, u16 hi)
|
||||||
|
-{
|
||||||
|
- u16 *cached_hi = &priv->mdio_cache.hi;
|
||||||
|
- struct mii_bus *bus = priv->bus;
|
||||||
|
- int ret;
|
||||||
|
-
|
||||||
|
- if (hi == *cached_hi)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- ret = bus->write(bus, phy_id, regnum, hi);
|
||||||
|
- if (ret < 0)
|
||||||
|
- dev_err_ratelimited(&bus->dev,
|
||||||
|
- "failed to write qca8k 32bit hi register\n");
|
||||||
|
-
|
||||||
|
- *cached_hi = hi;
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static int
|
||||||
|
qca8k_mii_read32(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
@@ -97,7 +59,7 @@ qca8k_mii_read32(struct mii_bus *bus, in
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-qca8k_mii_write32(struct qca8k_priv *priv, int phy_id, u32 regnum, u32 val)
|
||||||
|
+qca8k_mii_write32(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
|
||||||
|
{
|
||||||
|
u16 lo, hi;
|
||||||
|
int ret;
|
||||||
|
@@ -105,9 +67,12 @@ qca8k_mii_write32(struct qca8k_priv *pri
|
||||||
|
lo = val & 0xffff;
|
||||||
|
hi = (u16)(val >> 16);
|
||||||
|
|
||||||
|
- ret = qca8k_set_lo(priv, phy_id, regnum, lo);
|
||||||
|
+ ret = bus->write(bus, phy_id, regnum, lo);
|
||||||
|
if (ret >= 0)
|
||||||
|
- ret = qca8k_set_hi(priv, phy_id, regnum + 1, hi);
|
||||||
|
+ ret = bus->write(bus, phy_id, regnum + 1, hi);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ dev_err_ratelimited(&bus->dev,
|
||||||
|
+ "failed to write qca8k 32bit register\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
@@ -442,7 +407,7 @@ qca8k_regmap_write(void *ctx, uint32_t r
|
||||||
|
if (ret < 0)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, val);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, val);
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
@@ -475,7 +440,7 @@ qca8k_regmap_update_bits(void *ctx, uint
|
||||||
|
|
||||||
|
val &= ~mask;
|
||||||
|
val |= write_val;
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, val);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, val);
|
||||||
|
|
||||||
|
exit:
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
@@ -750,14 +715,14 @@ qca8k_mdio_write(struct qca8k_priv *priv
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, val);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, val);
|
||||||
|
|
||||||
|
ret = qca8k_mdio_busy_wait(bus, QCA8K_MDIO_MASTER_CTRL,
|
||||||
|
QCA8K_MDIO_MASTER_BUSY);
|
||||||
|
|
||||||
|
exit:
|
||||||
|
/* even if the busy_wait timeouts try to clear the MASTER_EN */
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, 0);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
|
||||||
|
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
||||||
|
@@ -787,7 +752,7 @@ qca8k_mdio_read(struct qca8k_priv *priv,
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, val);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, val);
|
||||||
|
|
||||||
|
ret = qca8k_mdio_busy_wait(bus, QCA8K_MDIO_MASTER_CTRL,
|
||||||
|
QCA8K_MDIO_MASTER_BUSY);
|
||||||
|
@@ -798,7 +763,7 @@ qca8k_mdio_read(struct qca8k_priv *priv,
|
||||||
|
|
||||||
|
exit:
|
||||||
|
/* even if the busy_wait timeouts try to clear the MASTER_EN */
|
||||||
|
- qca8k_mii_write32(priv, 0x10 | r2, r1, 0);
|
||||||
|
+ qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
|
||||||
|
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
||||||
|
@@ -1914,8 +1879,6 @@ qca8k_sw_probe(struct mdio_device *mdiod
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->mdio_cache.page = 0xffff;
|
||||||
|
- priv->mdio_cache.lo = 0xffff;
|
||||||
|
- priv->mdio_cache.hi = 0xffff;
|
||||||
|
|
||||||
|
/* Check the detected switch id */
|
||||||
|
ret = qca8k_read_switch_id(priv);
|
||||||
|
--- a/drivers/net/dsa/qca/qca8k.h
|
||||||
|
+++ b/drivers/net/dsa/qca/qca8k.h
|
||||||
|
@@ -375,11 +375,6 @@ struct qca8k_mdio_cache {
|
||||||
|
* mdio writes
|
||||||
|
*/
|
||||||
|
u16 page;
|
||||||
|
-/* lo and hi can also be cached and from Documentation we can skip one
|
||||||
|
- * extra mdio write if lo or hi is didn't change.
|
||||||
|
- */
|
||||||
|
- u16 lo;
|
||||||
|
- u16 hi;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct qca8k_priv {
|
|
@ -0,0 +1,150 @@
|
||||||
|
From cfbd6de588ef659c198083205dc954a6d3ed2aec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 29 Dec 2022 17:33:35 +0100
|
||||||
|
Subject: [PATCH 4/5] net: dsa: qca8k: introduce single mii read/write lo/hi
|
||||||
|
|
||||||
|
It may be useful to read/write just the lo or hi half of a reg.
|
||||||
|
|
||||||
|
This is especially useful for phy poll with the use of mdio master.
|
||||||
|
The mdio master reg is composed by the first 16 bit related to setup and
|
||||||
|
the other half with the returned data or data to write.
|
||||||
|
|
||||||
|
Refactor the mii function to permit single mii read/write of lo or hi
|
||||||
|
half of the reg.
|
||||||
|
|
||||||
|
Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
drivers/net/dsa/qca/qca8k-8xxx.c | 106 ++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 84 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
@@ -37,42 +37,104 @@ qca8k_split_addr(u32 regaddr, u16 *r1, u
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
-qca8k_mii_read32(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
|
||||||
|
+qca8k_mii_write_lo(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
+ u16 lo;
|
||||||
|
|
||||||
|
- ret = bus->read(bus, phy_id, regnum);
|
||||||
|
- if (ret >= 0) {
|
||||||
|
- *val = ret;
|
||||||
|
- ret = bus->read(bus, phy_id, regnum + 1);
|
||||||
|
- *val |= ret << 16;
|
||||||
|
- }
|
||||||
|
+ lo = val & 0xffff;
|
||||||
|
+ ret = bus->write(bus, phy_id, regnum, lo);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ dev_err_ratelimited(&bus->dev,
|
||||||
|
+ "failed to write qca8k 32bit lo register\n");
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
|
||||||
|
- if (ret < 0) {
|
||||||
|
+static int
|
||||||
|
+qca8k_mii_write_hi(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+ u16 hi;
|
||||||
|
+
|
||||||
|
+ hi = (u16)(val >> 16);
|
||||||
|
+ ret = bus->write(bus, phy_id, regnum, hi);
|
||||||
|
+ if (ret < 0)
|
||||||
|
dev_err_ratelimited(&bus->dev,
|
||||||
|
- "failed to read qca8k 32bit register\n");
|
||||||
|
- *val = 0;
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
+ "failed to write qca8k 32bit hi register\n");
|
||||||
|
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+qca8k_mii_read_lo(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ ret = bus->read(bus, phy_id, regnum);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+ *val = ret & 0xffff;
|
||||||
|
return 0;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ dev_err_ratelimited(&bus->dev,
|
||||||
|
+ "failed to read qca8k 32bit lo register\n");
|
||||||
|
+ *val = 0;
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-qca8k_mii_write32(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
|
||||||
|
+static int
|
||||||
|
+qca8k_mii_read_hi(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
|
||||||
|
{
|
||||||
|
- u16 lo, hi;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- lo = val & 0xffff;
|
||||||
|
- hi = (u16)(val >> 16);
|
||||||
|
+ ret = bus->read(bus, phy_id, regnum);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ goto err;
|
||||||
|
|
||||||
|
- ret = bus->write(bus, phy_id, regnum, lo);
|
||||||
|
- if (ret >= 0)
|
||||||
|
- ret = bus->write(bus, phy_id, regnum + 1, hi);
|
||||||
|
+ *val = ret << 16;
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ dev_err_ratelimited(&bus->dev,
|
||||||
|
+ "failed to read qca8k 32bit hi register\n");
|
||||||
|
+ *val = 0;
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+qca8k_mii_read32(struct mii_bus *bus, int phy_id, u32 regnum, u32 *val)
|
||||||
|
+{
|
||||||
|
+ u32 hi, lo;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ *val = 0;
|
||||||
|
+
|
||||||
|
+ ret = qca8k_mii_read_lo(bus, phy_id, regnum, &lo);
|
||||||
|
if (ret < 0)
|
||||||
|
- dev_err_ratelimited(&bus->dev,
|
||||||
|
- "failed to write qca8k 32bit register\n");
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+ ret = qca8k_mii_read_hi(bus, phy_id, regnum + 1, &hi);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+ *val = lo | hi;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+qca8k_mii_write32(struct mii_bus *bus, int phy_id, u32 regnum, u32 val)
|
||||||
|
+{
|
||||||
|
+ if (qca8k_mii_write_lo(bus, phy_id, regnum, val) < 0)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ qca8k_mii_write_hi(bus, phy_id, regnum + 1, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
|
@ -0,0 +1,73 @@
|
||||||
|
From a4165830ca237f2b3318faf62562bce8ce12a389 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Thu, 29 Dec 2022 17:33:36 +0100
|
||||||
|
Subject: [PATCH 5/5] net: dsa: qca8k: improve mdio master read/write by using
|
||||||
|
single lo/hi
|
||||||
|
|
||||||
|
Improve mdio master read/write by using singe mii read/write lo/hi.
|
||||||
|
|
||||||
|
In a read and write we need to poll the mdio master regs in a busy loop
|
||||||
|
to check for a specific bit present in the upper half of the reg. We can
|
||||||
|
ignore the other half since it won't contain useful data. This will save
|
||||||
|
an additional useless read for each read and write operation.
|
||||||
|
|
||||||
|
In a read operation the returned data is present in the mdio master reg
|
||||||
|
lower half. We can ignore the other half since it won't contain useful
|
||||||
|
data. This will save an additional useless read for each read operation.
|
||||||
|
|
||||||
|
In a read operation it's needed to just set the hi half of the mdio
|
||||||
|
master reg as the lo half will be replaced by the result. This will save
|
||||||
|
an additional useless write for each read operation.
|
||||||
|
|
||||||
|
Tested-by: Ronald Wahl <ronald.wahl@raritan.com>
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
drivers/net/dsa/qca/qca8k-8xxx.c | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||||
|
@@ -740,9 +740,9 @@ qca8k_mdio_busy_wait(struct mii_bus *bus
|
||||||
|
|
||||||
|
qca8k_split_addr(reg, &r1, &r2, &page);
|
||||||
|
|
||||||
|
- ret = read_poll_timeout(qca8k_mii_read32, ret1, !(val & mask), 0,
|
||||||
|
+ ret = read_poll_timeout(qca8k_mii_read_hi, ret1, !(val & mask), 0,
|
||||||
|
QCA8K_BUSY_WAIT_TIMEOUT * USEC_PER_MSEC, false,
|
||||||
|
- bus, 0x10 | r2, r1, &val);
|
||||||
|
+ bus, 0x10 | r2, r1 + 1, &val);
|
||||||
|
|
||||||
|
/* Check if qca8k_read has failed for a different reason
|
||||||
|
* before returnting -ETIMEDOUT
|
||||||
|
@@ -784,7 +784,7 @@ qca8k_mdio_write(struct qca8k_priv *priv
|
||||||
|
|
||||||
|
exit:
|
||||||
|
/* even if the busy_wait timeouts try to clear the MASTER_EN */
|
||||||
|
- qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
|
||||||
|
+ qca8k_mii_write_hi(bus, 0x10 | r2, r1 + 1, 0);
|
||||||
|
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
||||||
|
@@ -814,18 +814,18 @@ qca8k_mdio_read(struct qca8k_priv *priv,
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
- qca8k_mii_write32(bus, 0x10 | r2, r1, val);
|
||||||
|
+ qca8k_mii_write_hi(bus, 0x10 | r2, r1 + 1, val);
|
||||||
|
|
||||||
|
ret = qca8k_mdio_busy_wait(bus, QCA8K_MDIO_MASTER_CTRL,
|
||||||
|
QCA8K_MDIO_MASTER_BUSY);
|
||||||
|
if (ret)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
- ret = qca8k_mii_read32(bus, 0x10 | r2, r1, &val);
|
||||||
|
+ ret = qca8k_mii_read_lo(bus, 0x10 | r2, r1, &val);
|
||||||
|
|
||||||
|
exit:
|
||||||
|
/* even if the busy_wait timeouts try to clear the MASTER_EN */
|
||||||
|
- qca8k_mii_write32(bus, 0x10 | r2, r1, 0);
|
||||||
|
+ qca8k_mii_write_hi(bus, 0x10 | r2, r1 + 1, 0);
|
||||||
|
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
|
@ -77,7 +77,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
#include "mtdcore.h"
|
#include "mtdcore.h"
|
||||||
|
|
||||||
@@ -1079,6 +1080,8 @@ int mtd_device_parse_register(struct mtd
|
@@ -1081,6 +1082,8 @@ int mtd_device_parse_register(struct mtd
|
||||||
|
|
||||||
ret = mtd_otp_nvmem_add(mtd);
|
ret = mtd_otp_nvmem_add(mtd);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -759,7 +759,8 @@ int add_mtd_device(struct mtd_info *mtd)
|
@@ -761,7 +761,8 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||||
|
|
||||||
mutex_unlock(&mtd_table_mutex);
|
mutex_unlock(&mtd_table_mutex);
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -1669,6 +1669,10 @@ enum netdev_priv_flags {
|
@@ -1676,6 +1676,10 @@ enum netdev_priv_flags {
|
||||||
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||||
#define IFF_EBRIDGE IFF_EBRIDGE
|
#define IFF_EBRIDGE IFF_EBRIDGE
|
||||||
#define IFF_BONDING IFF_BONDING
|
#define IFF_BONDING IFF_BONDING
|
||||||
@@ -1701,6 +1705,7 @@ enum netdev_priv_flags {
|
@@ -1708,6 +1712,7 @@ enum netdev_priv_flags {
|
||||||
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
|
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
|
||||||
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
||||||
#define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR
|
#define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
/* Specifies the type of the struct net_device::ml_priv pointer */
|
/* Specifies the type of the struct net_device::ml_priv pointer */
|
||||||
enum netdev_ml_priv_type {
|
enum netdev_ml_priv_type {
|
||||||
@@ -2002,6 +2007,7 @@ struct net_device {
|
@@ -2009,6 +2014,7 @@ struct net_device {
|
||||||
/* Read-mostly cache-line for fast-path access */
|
/* Read-mostly cache-line for fast-path access */
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
unsigned int priv_flags;
|
unsigned int priv_flags;
|
||||||
|
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
const struct net_device_ops *netdev_ops;
|
const struct net_device_ops *netdev_ops;
|
||||||
int ifindex;
|
int ifindex;
|
||||||
unsigned short gflags;
|
unsigned short gflags;
|
||||||
@@ -2062,6 +2068,11 @@ struct net_device {
|
@@ -2069,6 +2075,11 @@ struct net_device {
|
||||||
const struct tlsdev_ops *tlsdev_ops;
|
const struct tlsdev_ops *tlsdev_ops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
const struct header_ops *header_ops;
|
const struct header_ops *header_ops;
|
||||||
|
|
||||||
unsigned char operstate;
|
unsigned char operstate;
|
||||||
@@ -2136,6 +2147,10 @@ struct net_device {
|
@@ -2143,6 +2154,10 @@ struct net_device {
|
||||||
struct mctp_dev __rcu *mctp_ptr;
|
struct mctp_dev __rcu *mctp_ptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
{
|
{
|
||||||
--- a/include/linux/gpio/consumer.h
|
--- a/include/linux/gpio/consumer.h
|
||||||
+++ b/include/linux/gpio/consumer.h
|
+++ b/include/linux/gpio/consumer.h
|
||||||
@@ -715,6 +715,7 @@ static inline void devm_acpi_dev_remove_
|
@@ -712,6 +712,7 @@ static inline void devm_acpi_dev_remove_
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
|
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
|
int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
|
||||||
int gpiod_export_link(struct device *dev, const char *name,
|
int gpiod_export_link(struct device *dev, const char *name,
|
||||||
struct gpio_desc *desc);
|
struct gpio_desc *desc);
|
||||||
@@ -722,6 +723,13 @@ void gpiod_unexport(struct gpio_desc *de
|
@@ -719,6 +720,13 @@ void gpiod_unexport(struct gpio_desc *de
|
||||||
|
|
||||||
#else /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
|
#else /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
|
||||||
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
From d3c5b26768dbe990c4e1bd79e420c11ce7491d51 Mon Sep 17 00:00:00 2001
|
|
||||||
From: OpenWrt community <openwrt-devel@lists.openwrt.org>
|
|
||||||
Date: Wed, 13 Jul 2022 11:36:00 +0200
|
|
||||||
Subject: [PATCH] swab: use stddefs.h instead of compiler.h
|
|
||||||
|
|
||||||
Fix an issue with kernel headers that broke perf.
|
|
||||||
|
|
||||||
---
|
|
||||||
include/uapi/linux/swab.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/include/uapi/linux/swab.h
|
|
||||||
+++ b/include/uapi/linux/swab.h
|
|
||||||
@@ -3,7 +3,7 @@
|
|
||||||
#define _UAPI_LINUX_SWAB_H
|
|
||||||
|
|
||||||
#include <linux/types.h>
|
|
||||||
-#include <linux/compiler.h>
|
|
||||||
+#include <linux/stddef.h>
|
|
||||||
#include <asm/bitsperlong.h>
|
|
||||||
#include <asm/swab.h>
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/spi/spidev.c
|
--- a/drivers/spi/spidev.c
|
||||||
+++ b/drivers/spi/spidev.c
|
+++ b/drivers/spi/spidev.c
|
||||||
@@ -696,6 +696,7 @@ static const struct of_device_id spidev_
|
@@ -707,6 +707,7 @@ static const struct of_device_id spidev_
|
||||||
{ .compatible = "menlo,m53cpld" },
|
{ .compatible = "menlo,m53cpld" },
|
||||||
{ .compatible = "cisco,spi-petra" },
|
{ .compatible = "cisco,spi-petra" },
|
||||||
{ .compatible = "micron,spi-authenta" },
|
{ .compatible = "micron,spi-authenta" },
|
||||||
|
|
|
@ -202,7 +202,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||||
return !!nor->params->erase_map.uniform_erase_type;
|
return !!nor->params->erase_map.uniform_erase_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2388,6 +2390,7 @@ static int spi_nor_select_erase(struct s
|
@@ -2389,6 +2391,7 @@ static int spi_nor_select_erase(struct s
|
||||||
{
|
{
|
||||||
struct spi_nor_erase_map *map = &nor->params->erase_map;
|
struct spi_nor_erase_map *map = &nor->params->erase_map;
|
||||||
const struct spi_nor_erase_type *erase = NULL;
|
const struct spi_nor_erase_type *erase = NULL;
|
||||||
|
@ -210,7 +210,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
u32 wanted_size = nor->info->sector_size;
|
u32 wanted_size = nor->info->sector_size;
|
||||||
int i;
|
int i;
|
||||||
@@ -2420,8 +2423,9 @@ static int spi_nor_select_erase(struct s
|
@@ -2421,8 +2424,9 @@ static int spi_nor_select_erase(struct s
|
||||||
*/
|
*/
|
||||||
for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
|
for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
|
||||||
if (map->erase_type[i].size) {
|
if (map->erase_type[i].size) {
|
||||||
|
@ -222,7 +222,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2429,6 +2433,9 @@ static int spi_nor_select_erase(struct s
|
@@ -2430,6 +2434,9 @@ static int spi_nor_select_erase(struct s
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
mtd->erasesize = erase->size;
|
mtd->erasesize = erase->size;
|
||||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -2089,6 +2089,8 @@ struct net_device {
|
@@ -2096,6 +2096,8 @@ struct net_device {
|
||||||
struct netdev_hw_addr_list mc;
|
struct netdev_hw_addr_list mc;
|
||||||
struct netdev_hw_addr_list dev_addrs;
|
struct netdev_hw_addr_list dev_addrs;
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define if arch has non-standard setup. This is a _PCI_ standard
|
* Define if arch has non-standard setup. This is a _PCI_ standard
|
||||||
@@ -888,6 +891,12 @@ struct ata_port {
|
@@ -894,6 +897,12 @@ struct ata_port {
|
||||||
#ifdef CONFIG_ATA_ACPI
|
#ifdef CONFIG_ATA_ACPI
|
||||||
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,6 +59,9 @@ ipq40xx_setup_interfaces()
|
||||||
compex,wpj428)
|
compex,wpj428)
|
||||||
ucidef_set_interface_lan "lan1 lan2"
|
ucidef_set_interface_lan "lan1 lan2"
|
||||||
;;
|
;;
|
||||||
|
linksys,whw01)
|
||||||
|
ucidef_set_interface_lan "eth1 eth2"
|
||||||
|
;;
|
||||||
glinet,gl-a1300|\
|
glinet,gl-a1300|\
|
||||||
glinet,gl-b1300|\
|
glinet,gl-b1300|\
|
||||||
mobipromo,cm520-79f)
|
mobipromo,cm520-79f)
|
||||||
|
|
|
@ -11,7 +11,7 @@ boot() {
|
||||||
linksys,ea6350v3|\
|
linksys,ea6350v3|\
|
||||||
linksys,ea8300|\
|
linksys,ea8300|\
|
||||||
linksys,mr8300|\
|
linksys,mr8300|\
|
||||||
linksys,whw01-v1)
|
linksys,whw01)
|
||||||
mtd resetbc s_env || true
|
mtd resetbc s_env || true
|
||||||
;;
|
;;
|
||||||
netgear,wac510)
|
netgear,wac510)
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
|
|
||||||
case "$(board_name)" in
|
case "$(board_name)" in
|
||||||
|
linksys,ea6350v3|\
|
||||||
|
linksys,ea8300|\
|
||||||
|
linksys,mr8300|\
|
||||||
ezviz,cs-w3-wd1200g-eup)
|
ezviz,cs-w3-wd1200g-eup)
|
||||||
uci set system.@system[0].compat_version="2.0"
|
uci set system.@system[0].compat_version="2.0"
|
||||||
uci commit system
|
uci commit system
|
||||||
|
|
18
target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh
Executable file → Normal file
18
target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh
Executable file → Normal file
|
@ -47,6 +47,14 @@ linksys_get_target_firmware() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
linksys_is_factory_image() {
|
||||||
|
local board=$(board_name)
|
||||||
|
board=${board##*,}
|
||||||
|
|
||||||
|
# check matching footer signature
|
||||||
|
tail -c 256 $1 | grep -q -i "\.LINKSYS\.........${board}"
|
||||||
|
}
|
||||||
|
|
||||||
platform_do_upgrade_linksys() {
|
platform_do_upgrade_linksys() {
|
||||||
local magic_long="$(get_magic_long "$1")"
|
local magic_long="$(get_magic_long "$1")"
|
||||||
|
|
||||||
|
@ -99,4 +107,14 @@ platform_do_upgrade_linksys() {
|
||||||
echo "writing \"$1\" image to \"$part_label\""
|
echo "writing \"$1\" image to \"$part_label\""
|
||||||
get_image "$1" | mtd write - "$part_label"
|
get_image "$1" | mtd write - "$part_label"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ "$magic_long" = "d00dfeed" ] && {
|
||||||
|
if ! linksys_is_factory_image "$1"; then
|
||||||
|
echo "factory image doesn't match device"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "writing \"$1\" factory image to \"$part_label\""
|
||||||
|
get_image "$1" | mtd -e "$part_label" write - "$part_label"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,7 @@ platform_do_upgrade() {
|
||||||
linksys,ea6350v3 |\
|
linksys,ea6350v3 |\
|
||||||
linksys,ea8300 |\
|
linksys,ea8300 |\
|
||||||
linksys,mr8300 |\
|
linksys,mr8300 |\
|
||||||
linksys,whw01-v1)
|
linksys,whw01)
|
||||||
platform_do_upgrade_linksys "$1"
|
platform_do_upgrade_linksys "$1"
|
||||||
;;
|
;;
|
||||||
meraki,mr33 |\
|
meraki,mr33 |\
|
||||||
|
|
|
@ -1,500 +0,0 @@
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
# CONFIG_APQ_GCC_8084 is not set
|
|
||||||
# CONFIG_APQ_MMCC_8084 is not set
|
|
||||||
CONFIG_ARCH_32BIT_OFF_T=y
|
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
|
||||||
CONFIG_ARCH_IPQ40XX=y
|
|
||||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
|
||||||
# CONFIG_ARCH_MDM9615 is not set
|
|
||||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
||||||
# CONFIG_ARCH_MSM8960 is not set
|
|
||||||
# CONFIG_ARCH_MSM8974 is not set
|
|
||||||
# CONFIG_ARCH_MSM8X60 is not set
|
|
||||||
CONFIG_ARCH_MULTIPLATFORM=y
|
|
||||||
CONFIG_ARCH_MULTI_V6_V7=y
|
|
||||||
CONFIG_ARCH_MULTI_V7=y
|
|
||||||
CONFIG_ARCH_NR_GPIO=0
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
|
||||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
|
||||||
CONFIG_ARCH_QCOM=y
|
|
||||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|
||||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
||||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_ARM_AMBA=y
|
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER=y
|
|
||||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
|
||||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
|
||||||
CONFIG_ARM_CPUIDLE=y
|
|
||||||
# CONFIG_ARM_CPU_TOPOLOGY is not set
|
|
||||||
CONFIG_ARM_CRYPTO=y
|
|
||||||
CONFIG_ARM_GIC=y
|
|
||||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
||||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
||||||
CONFIG_ARM_PATCH_IDIV=y
|
|
||||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
||||||
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
|
|
||||||
# CONFIG_ARM_QCOM_CPUFREQ_NVMEM is not set
|
|
||||||
# CONFIG_ARM_QCOM_SPM_CPUIDLE is not set
|
|
||||||
# CONFIG_ARM_SMMU is not set
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
CONFIG_ARM_UNWIND=y
|
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
|
||||||
CONFIG_AT803X_PHY=y
|
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
CONFIG_BCH=y
|
|
||||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
|
||||||
CONFIG_BLK_CMDLINE_PARSER=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_MQ_PCI=y
|
|
||||||
CONFIG_BOUNCE=y
|
|
||||||
# CONFIG_CACHE_L2X0 is not set
|
|
||||||
CONFIG_CLKDEV_LOOKUP=y
|
|
||||||
CONFIG_CLKSRC_QCOM=y
|
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
|
||||||
CONFIG_CMDLINE_PARTITION=y
|
|
||||||
CONFIG_COMMON_CLK=y
|
|
||||||
CONFIG_COMMON_CLK_QCOM=y
|
|
||||||
CONFIG_COMPAT_32BIT_TIME=y
|
|
||||||
CONFIG_CPUFREQ_DT=y
|
|
||||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_CPU_32v7=y
|
|
||||||
CONFIG_CPU_ABRT_EV7=y
|
|
||||||
CONFIG_CPU_CACHE_V7=y
|
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
|
||||||
CONFIG_CPU_COPY_V6=y
|
|
||||||
CONFIG_CPU_CP15=y
|
|
||||||
CONFIG_CPU_CP15_MMU=y
|
|
||||||
CONFIG_CPU_FREQ=y
|
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
|
||||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
||||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
|
||||||
CONFIG_CPU_FREQ_STAT=y
|
|
||||||
CONFIG_CPU_HAS_ASID=y
|
|
||||||
CONFIG_CPU_IDLE=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
||||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
|
||||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
|
||||||
CONFIG_CPU_PABRT_V7=y
|
|
||||||
CONFIG_CPU_PM=y
|
|
||||||
CONFIG_CPU_RMAP=y
|
|
||||||
CONFIG_CPU_SPECTRE=y
|
|
||||||
CONFIG_CPU_THERMAL=y
|
|
||||||
CONFIG_CPU_THUMB_CAPABLE=y
|
|
||||||
CONFIG_CPU_TLB_V7=y
|
|
||||||
CONFIG_CPU_V7=y
|
|
||||||
CONFIG_CRC16=y
|
|
||||||
# CONFIG_CRC32_SARWATE is not set
|
|
||||||
CONFIG_CRC32_SLICEBY8=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM=y
|
|
||||||
CONFIG_CRYPTO_AES_ARM_BS=y
|
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CBC=y
|
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
|
||||||
CONFIG_CRYPTO_DEFLATE=y
|
|
||||||
CONFIG_CRYPTO_DES=y
|
|
||||||
CONFIG_CRYPTO_DEV_QCE=y
|
|
||||||
# CONFIG_CRYPTO_DEV_QCE_ENABLE_ALL is not set
|
|
||||||
# CONFIG_CRYPTO_DEV_QCE_ENABLE_SHA is not set
|
|
||||||
CONFIG_CRYPTO_DEV_QCE_ENABLE_SKCIPHER=y
|
|
||||||
CONFIG_CRYPTO_DEV_QCE_SKCIPHER=y
|
|
||||||
CONFIG_CRYPTO_DEV_QCE_SW_MAX_LEN=512
|
|
||||||
CONFIG_CRYPTO_DEV_QCOM_RNG=y
|
|
||||||
CONFIG_CRYPTO_DRBG=y
|
|
||||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
|
||||||
CONFIG_CRYPTO_DRBG_MENU=y
|
|
||||||
CONFIG_CRYPTO_ECB=y
|
|
||||||
CONFIG_CRYPTO_HASH_INFO=y
|
|
||||||
CONFIG_CRYPTO_HMAC=y
|
|
||||||
CONFIG_CRYPTO_HW=y
|
|
||||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
|
||||||
CONFIG_CRYPTO_LIB_DES=y
|
|
||||||
CONFIG_CRYPTO_LIB_SHA256=y
|
|
||||||
CONFIG_CRYPTO_LZO=y
|
|
||||||
CONFIG_CRYPTO_RNG=y
|
|
||||||
CONFIG_CRYPTO_RNG2=y
|
|
||||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
|
||||||
CONFIG_CRYPTO_SEQIV=y
|
|
||||||
CONFIG_CRYPTO_SHA1=y
|
|
||||||
CONFIG_CRYPTO_SHA256=y
|
|
||||||
CONFIG_CRYPTO_SHA256_ARM=y
|
|
||||||
CONFIG_CRYPTO_SIMD=y
|
|
||||||
CONFIG_CRYPTO_XTS=y
|
|
||||||
CONFIG_CRYPTO_ZSTD=y
|
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
|
||||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
|
||||||
CONFIG_DEBUG_MISC=y
|
|
||||||
CONFIG_DMADEVICES=y
|
|
||||||
CONFIG_DMA_ENGINE=y
|
|
||||||
CONFIG_DMA_OF=y
|
|
||||||
CONFIG_DMA_OPS=y
|
|
||||||
CONFIG_DMA_REMAP=y
|
|
||||||
CONFIG_DMA_SHARED_BUFFER=y
|
|
||||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
|
||||||
CONFIG_DTC=y
|
|
||||||
CONFIG_DT_IDLE_STATES=y
|
|
||||||
CONFIG_DYNAMIC_DEBUG=y
|
|
||||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
|
||||||
CONFIG_EDAC_SUPPORT=y
|
|
||||||
CONFIG_EEPROM_AT24=y
|
|
||||||
CONFIG_EXTCON=y
|
|
||||||
CONFIG_FIXED_PHY=y
|
|
||||||
CONFIG_FIX_EARLYCON_MEM=y
|
|
||||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
|
||||||
CONFIG_GENERIC_ALLOCATOR=y
|
|
||||||
CONFIG_GENERIC_BUG=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
|
||||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
||||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
||||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
||||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
|
||||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
||||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
|
||||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW=y
|
|
||||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ=y
|
|
||||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_GENERIC_PCI_IOMAP=y
|
|
||||||
CONFIG_GENERIC_PHY=y
|
|
||||||
CONFIG_GENERIC_PINCONF=y
|
|
||||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
|
||||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
|
||||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
|
||||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
||||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
||||||
CONFIG_GENERIC_STRNLEN_USER=y
|
|
||||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
|
||||||
CONFIG_GENERIC_VDSO_32=y
|
|
||||||
CONFIG_GPIOLIB_IRQCHIP=y
|
|
||||||
CONFIG_GPIO_74X164=y
|
|
||||||
CONFIG_GPIO_WATCHDOG=y
|
|
||||||
CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
|
|
||||||
CONFIG_GRO_CELLS=y
|
|
||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
||||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
|
||||||
CONFIG_HAS_DMA=y
|
|
||||||
CONFIG_HAS_IOMEM=y
|
|
||||||
CONFIG_HAS_IOPORT_MAP=y
|
|
||||||
CONFIG_HAVE_SMP=y
|
|
||||||
CONFIG_HIGHMEM=y
|
|
||||||
CONFIG_HIGHPTE=y
|
|
||||||
CONFIG_HWSPINLOCK=y
|
|
||||||
CONFIG_HWSPINLOCK_QCOM=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_HW_RANDOM_OPTEE=y
|
|
||||||
CONFIG_HZ_FIXED=0
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_BOARDINFO=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_I2C_HELPER_AUTO=y
|
|
||||||
# CONFIG_I2C_QCOM_CCI is not set
|
|
||||||
CONFIG_I2C_QUP=y
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_IOMMU_DEBUGFS is not set
|
|
||||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
|
||||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
|
||||||
CONFIG_IOMMU_SUPPORT=y
|
|
||||||
CONFIG_IO_URING=y
|
|
||||||
# CONFIG_IPQ_APSS_PLL is not set
|
|
||||||
CONFIG_IPQ_GCC_4019=y
|
|
||||||
# CONFIG_IPQ_GCC_6018 is not set
|
|
||||||
# CONFIG_IPQ_GCC_806X is not set
|
|
||||||
# CONFIG_IPQ_GCC_8074 is not set
|
|
||||||
# CONFIG_IPQ_LCC_806X is not set
|
|
||||||
CONFIG_IRQCHIP=y
|
|
||||||
CONFIG_IRQ_DOMAIN=y
|
|
||||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
||||||
CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y
|
|
||||||
CONFIG_IRQ_FORCED_THREADING=y
|
|
||||||
CONFIG_IRQ_WORK=y
|
|
||||||
# CONFIG_KPSS_XCC is not set
|
|
||||||
# CONFIG_KRAITCC is not set
|
|
||||||
CONFIG_LEDS_LP5523=y
|
|
||||||
CONFIG_LEDS_LP5562=y
|
|
||||||
CONFIG_LEDS_LP55XX_COMMON=y
|
|
||||||
CONFIG_LEDS_TLC591XX=y
|
|
||||||
CONFIG_LED_TRIGGER_PHY=y
|
|
||||||
CONFIG_LIBFDT=y
|
|
||||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
|
||||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_LZO_COMPRESS=y
|
|
||||||
CONFIG_LZO_DECOMPRESS=y
|
|
||||||
CONFIG_MDIO_BITBANG=y
|
|
||||||
CONFIG_MDIO_BUS=y
|
|
||||||
CONFIG_MDIO_DEVICE=y
|
|
||||||
CONFIG_MDIO_DEVRES=y
|
|
||||||
CONFIG_MDIO_GPIO=y
|
|
||||||
CONFIG_MDIO_IPQ4019=y
|
|
||||||
# CONFIG_MDM_GCC_9615 is not set
|
|
||||||
# CONFIG_MDM_LCC_9615 is not set
|
|
||||||
CONFIG_MEMFD_CREATE=y
|
|
||||||
# CONFIG_MFD_HI6421_SPMI is not set
|
|
||||||
# CONFIG_MFD_QCOM_RPM is not set
|
|
||||||
# CONFIG_MFD_SPMI_PMIC is not set
|
|
||||||
CONFIG_MFD_SYSCON=y
|
|
||||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
||||||
CONFIG_MIGRATION=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_BLOCK=y
|
|
||||||
CONFIG_MMC_CQHCI=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
|
||||||
CONFIG_MMC_SDHCI_MSM=y
|
|
||||||
# CONFIG_MMC_SDHCI_PCI is not set
|
|
||||||
CONFIG_MMC_SDHCI_PLTFM=y
|
|
||||||
CONFIG_MODULES_USE_ELF_REL=y
|
|
||||||
# CONFIG_MSM_GCC_8660 is not set
|
|
||||||
# CONFIG_MSM_GCC_8916 is not set
|
|
||||||
# CONFIG_MSM_GCC_8939 is not set
|
|
||||||
# CONFIG_MSM_GCC_8960 is not set
|
|
||||||
# CONFIG_MSM_GCC_8974 is not set
|
|
||||||
# CONFIG_MSM_GCC_8994 is not set
|
|
||||||
# CONFIG_MSM_GCC_8996 is not set
|
|
||||||
# CONFIG_MSM_GCC_8998 is not set
|
|
||||||
# CONFIG_MSM_GPUCC_8998 is not set
|
|
||||||
# CONFIG_MSM_LCC_8960 is not set
|
|
||||||
# CONFIG_MSM_MMCC_8960 is not set
|
|
||||||
# CONFIG_MSM_MMCC_8974 is not set
|
|
||||||
# CONFIG_MSM_MMCC_8996 is not set
|
|
||||||
# CONFIG_MSM_MMCC_8998 is not set
|
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
|
||||||
CONFIG_MTD_NAND_CORE=y
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
|
||||||
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
|
||||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
|
||||||
CONFIG_MTD_NAND_QCOM=y
|
|
||||||
CONFIG_MTD_RAW_NAND=y
|
|
||||||
CONFIG_MTD_SPI_NAND=y
|
|
||||||
CONFIG_MTD_SPI_NOR=y
|
|
||||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
||||||
CONFIG_MTD_SPLIT_FIT_FW=y
|
|
||||||
CONFIG_MTD_SPLIT_WRGG_FW=y
|
|
||||||
CONFIG_MTD_UBI=y
|
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
||||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
|
||||||
CONFIG_NEON=y
|
|
||||||
CONFIG_NET_DEVLINK=y
|
|
||||||
CONFIG_NET_DSA=y
|
|
||||||
CONFIG_NET_DSA_QCA8K_IPQ4019=y
|
|
||||||
CONFIG_NET_DSA_TAG_IPQ4019=y
|
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
|
||||||
CONFIG_NET_PTP_CLASSIFY=y
|
|
||||||
CONFIG_NET_SWITCHDEV=y
|
|
||||||
CONFIG_NLS=y
|
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_NO_HZ_COMMON=y
|
|
||||||
CONFIG_NO_HZ_IDLE=y
|
|
||||||
CONFIG_NR_CPUS=4
|
|
||||||
CONFIG_NVMEM=y
|
|
||||||
# CONFIG_NVMEM_SPMI_SDAM is not set
|
|
||||||
CONFIG_NVMEM_SYSFS=y
|
|
||||||
CONFIG_OF=y
|
|
||||||
CONFIG_OF_ADDRESS=y
|
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
|
||||||
CONFIG_OF_FLATTREE=y
|
|
||||||
CONFIG_OF_GPIO=y
|
|
||||||
CONFIG_OF_IRQ=y
|
|
||||||
CONFIG_OF_KOBJ=y
|
|
||||||
CONFIG_OF_MDIO=y
|
|
||||||
CONFIG_OF_NET=y
|
|
||||||
CONFIG_OLD_SIGACTION=y
|
|
||||||
CONFIG_OLD_SIGSUSPEND3=y
|
|
||||||
CONFIG_OPTEE=y
|
|
||||||
CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1
|
|
||||||
CONFIG_PADATA=y
|
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_PCIEAER=y
|
|
||||||
CONFIG_PCIEPORTBUS=y
|
|
||||||
CONFIG_PCIE_DW=y
|
|
||||||
CONFIG_PCIE_DW_HOST=y
|
|
||||||
CONFIG_PCIE_QCOM=y
|
|
||||||
CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
|
|
||||||
CONFIG_PCI_DOMAINS=y
|
|
||||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
|
||||||
CONFIG_PCI_MSI=y
|
|
||||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
||||||
CONFIG_PERF_USE_VMALLOC=y
|
|
||||||
CONFIG_PGTABLE_LEVELS=2
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_PHYLINK=y
|
|
||||||
# CONFIG_PHY_QCOM_APQ8064_SATA is not set
|
|
||||||
CONFIG_PHY_QCOM_IPQ4019_USB=y
|
|
||||||
# CONFIG_PHY_QCOM_IPQ806X_SATA is not set
|
|
||||||
# CONFIG_PHY_QCOM_IPQ806X_USB is not set
|
|
||||||
# CONFIG_PHY_QCOM_PCIE2 is not set
|
|
||||||
# CONFIG_PHY_QCOM_QMP is not set
|
|
||||||
# CONFIG_PHY_QCOM_QUSB2 is not set
|
|
||||||
# CONFIG_PHY_QCOM_USB_HS_28NM is not set
|
|
||||||
# CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set
|
|
||||||
# CONFIG_PHY_QCOM_USB_SS is not set
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
# CONFIG_PINCTRL_APQ8064 is not set
|
|
||||||
# CONFIG_PINCTRL_APQ8084 is not set
|
|
||||||
CONFIG_PINCTRL_IPQ4019=y
|
|
||||||
# CONFIG_PINCTRL_IPQ6018 is not set
|
|
||||||
# CONFIG_PINCTRL_IPQ8064 is not set
|
|
||||||
# CONFIG_PINCTRL_IPQ8074 is not set
|
|
||||||
# CONFIG_PINCTRL_MDM9615 is not set
|
|
||||||
CONFIG_PINCTRL_MSM=y
|
|
||||||
# CONFIG_PINCTRL_MSM8226 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8660 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8916 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8960 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8976 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8994 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8996 is not set
|
|
||||||
# CONFIG_PINCTRL_MSM8998 is not set
|
|
||||||
# CONFIG_PINCTRL_QCOM_SPMI_PMIC is not set
|
|
||||||
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
|
|
||||||
# CONFIG_PINCTRL_QCS404 is not set
|
|
||||||
# CONFIG_PINCTRL_SC7180 is not set
|
|
||||||
# CONFIG_PINCTRL_SDM660 is not set
|
|
||||||
# CONFIG_PINCTRL_SDM845 is not set
|
|
||||||
# CONFIG_PINCTRL_SM8150 is not set
|
|
||||||
# CONFIG_PINCTRL_SM8250 is not set
|
|
||||||
CONFIG_PM_OPP=y
|
|
||||||
CONFIG_POWER_RESET=y
|
|
||||||
CONFIG_POWER_RESET_MSM=y
|
|
||||||
CONFIG_POWER_RESET_GPIO_RESTART=y
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
|
||||||
CONFIG_PPS=y
|
|
||||||
CONFIG_PRINTK_TIME=y
|
|
||||||
CONFIG_PTP_1588_CLOCK=y
|
|
||||||
CONFIG_QCA807X_PHY=y
|
|
||||||
CONFIG_QCOM_A53PLL=y
|
|
||||||
CONFIG_QCOM_BAM_DMA=y
|
|
||||||
# CONFIG_QCOM_COMMAND_DB is not set
|
|
||||||
# CONFIG_QCOM_CPR is not set
|
|
||||||
# CONFIG_QCOM_EBI2 is not set
|
|
||||||
# CONFIG_QCOM_GENI_SE is not set
|
|
||||||
# CONFIG_QCOM_GSBI is not set
|
|
||||||
# CONFIG_QCOM_HFPLL is not set
|
|
||||||
# CONFIG_QCOM_IOMMU is not set
|
|
||||||
CONFIG_QCOM_IPQ4019_ESS_EDMA=y
|
|
||||||
# CONFIG_QCOM_LLCC is not set
|
|
||||||
# CONFIG_QCOM_OCMEM is not set
|
|
||||||
# CONFIG_QCOM_PDC is not set
|
|
||||||
CONFIG_QCOM_QFPROM=y
|
|
||||||
# CONFIG_QCOM_RMTFS_MEM is not set
|
|
||||||
# CONFIG_QCOM_RPMH is not set
|
|
||||||
CONFIG_QCOM_SCM=y
|
|
||||||
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
|
|
||||||
CONFIG_QCOM_SMEM=y
|
|
||||||
# CONFIG_QCOM_SMSM is not set
|
|
||||||
# CONFIG_QCOM_SOCINFO is not set
|
|
||||||
CONFIG_QCOM_TCSR=y
|
|
||||||
# CONFIG_QCOM_TSENS is not set
|
|
||||||
CONFIG_QCOM_WDT=y
|
|
||||||
# CONFIG_QCS_GCC_404 is not set
|
|
||||||
# CONFIG_QCS_Q6SSTOP_404 is not set
|
|
||||||
# CONFIG_QCS_TURING_404 is not set
|
|
||||||
CONFIG_RAS=y
|
|
||||||
CONFIG_RATIONAL=y
|
|
||||||
CONFIG_REGMAP=y
|
|
||||||
CONFIG_REGMAP_I2C=y
|
|
||||||
CONFIG_REGMAP_MMIO=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
||||||
# CONFIG_REGULATOR_QCOM_LABIBB is not set
|
|
||||||
# CONFIG_REGULATOR_QCOM_SPMI is not set
|
|
||||||
# CONFIG_REGULATOR_QCOM_USB_VBUS is not set
|
|
||||||
CONFIG_REGULATOR_VCTRL=y
|
|
||||||
CONFIG_REGULATOR_VQMMC_IPQ4019=y
|
|
||||||
CONFIG_RESET_CONTROLLER=y
|
|
||||||
# CONFIG_RESET_QCOM_AOSS is not set
|
|
||||||
# CONFIG_RESET_QCOM_PDC is not set
|
|
||||||
CONFIG_RFS_ACCEL=y
|
|
||||||
CONFIG_RPS=y
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
|
||||||
CONFIG_RTC_MC146818_LIB=y
|
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
||||||
# CONFIG_SC_DISPCC_7180 is not set
|
|
||||||
# CONFIG_SC_GCC_7180 is not set
|
|
||||||
# CONFIG_SC_GPUCC_7180 is not set
|
|
||||||
# CONFIG_SC_LPASS_CORECC_7180 is not set
|
|
||||||
# CONFIG_SC_MSS_7180 is not set
|
|
||||||
# CONFIG_SC_VIDEOCC_7180 is not set
|
|
||||||
# CONFIG_SDM_CAMCC_845 is not set
|
|
||||||
# CONFIG_SDM_DISPCC_845 is not set
|
|
||||||
# CONFIG_SDM_GCC_660 is not set
|
|
||||||
# CONFIG_SDM_GCC_845 is not set
|
|
||||||
# CONFIG_SDM_GPUCC_845 is not set
|
|
||||||
# CONFIG_SDM_LPASSCC_845 is not set
|
|
||||||
# CONFIG_SDM_VIDEOCC_845 is not set
|
|
||||||
CONFIG_SERIAL_8250_FSL=y
|
|
||||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
|
||||||
CONFIG_SERIAL_MSM=y
|
|
||||||
CONFIG_SERIAL_MSM_CONSOLE=y
|
|
||||||
CONFIG_SGL_ALLOC=y
|
|
||||||
CONFIG_SMP=y
|
|
||||||
CONFIG_SMP_ON_UP=y
|
|
||||||
# CONFIG_SM_GCC_8150 is not set
|
|
||||||
# CONFIG_SM_GCC_8250 is not set
|
|
||||||
# CONFIG_SM_GPUCC_8150 is not set
|
|
||||||
# CONFIG_SM_GPUCC_8250 is not set
|
|
||||||
# CONFIG_SM_VIDEOCC_8150 is not set
|
|
||||||
# CONFIG_SM_VIDEOCC_8250 is not set
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
CONFIG_SPI_BITBANG=y
|
|
||||||
CONFIG_SPI_GPIO=y
|
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
CONFIG_SPI_MEM=y
|
|
||||||
CONFIG_SPI_QUP=y
|
|
||||||
CONFIG_SPMI=y
|
|
||||||
# CONFIG_SPMI_HISI3670 is not set
|
|
||||||
CONFIG_SPMI_MSM_PMIC_ARB=y
|
|
||||||
# CONFIG_SPMI_PMIC_CLKDIV is not set
|
|
||||||
CONFIG_SRCU=y
|
|
||||||
CONFIG_SWPHY=y
|
|
||||||
CONFIG_SWP_EMULATE=y
|
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
||||||
CONFIG_TEE=y
|
|
||||||
CONFIG_THERMAL=y
|
|
||||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
|
||||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
||||||
CONFIG_THERMAL_OF=y
|
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
|
||||||
CONFIG_TIMER_OF=y
|
|
||||||
CONFIG_TIMER_PROBE=y
|
|
||||||
CONFIG_TREE_RCU=y
|
|
||||||
CONFIG_TREE_SRCU=y
|
|
||||||
CONFIG_UBIFS_FS=y
|
|
||||||
CONFIG_UEVENT_HELPER_PATH=""
|
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
||||||
CONFIG_UNWINDER_ARM=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_COMMON=y
|
|
||||||
CONFIG_USB_SUPPORT=y
|
|
||||||
CONFIG_USE_OF=y
|
|
||||||
CONFIG_VFP=y
|
|
||||||
CONFIG_VFPv3=y
|
|
||||||
CONFIG_WATCHDOG_CORE=y
|
|
||||||
CONFIG_XPS=y
|
|
||||||
CONFIG_XXHASH=y
|
|
||||||
CONFIG_XZ_DEC_ARM=y
|
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0
|
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
|
||||||
CONFIG_ZLIB_INFLATE=y
|
|
||||||
CONFIG_ZSTD_COMPRESS=y
|
|
||||||
CONFIG_ZSTD_DECOMPRESS=y
|
|
|
@ -269,17 +269,17 @@
|
||||||
label = "kernel";
|
label = "kernel";
|
||||||
reg = <0x00000000 0x02800000>;
|
reg = <0x00000000 0x02800000>;
|
||||||
};
|
};
|
||||||
rootfs@300000 {
|
rootfs@500000 {
|
||||||
label = "rootfs";
|
label = "rootfs";
|
||||||
reg = <0x00300000 0x02500000>;
|
reg = <0x00500000 0x02300000>;
|
||||||
};
|
};
|
||||||
alt_kernel@2800000 {
|
alt_kernel@2800000 {
|
||||||
label = "alt_kernel";
|
label = "alt_kernel";
|
||||||
reg = <0x02800000 0x02800000>;
|
reg = <0x02800000 0x02800000>;
|
||||||
};
|
};
|
||||||
alt_rootfs@2b00000 {
|
alt_rootfs@2d00000 {
|
||||||
label = "alt_rootfs";
|
label = "alt_rootfs";
|
||||||
reg = <0x02b00000 0x02500000>;
|
reg = <0x02d00000 0x02300000>;
|
||||||
};
|
};
|
||||||
sysdiag@5000000 {
|
sysdiag@5000000 {
|
||||||
label = "sysdiag";
|
label = "sysdiag";
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Linksys WHW01 v1";
|
model = "Linksys WHW01";
|
||||||
compatible = "linksys,whw01-v1";
|
compatible = "linksys,whw01";
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &blsp1_uart1;
|
serial0 = &blsp1_uart1;
|
||||||
|
@ -316,3 +316,21 @@
|
||||||
nvmem-cell-names = "pre-calibration";
|
nvmem-cell-names = "pre-calibration";
|
||||||
nvmem-cells = <&precal_art_5000>;
|
nvmem-cells = <&precal_art_5000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&gmac {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&switch {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&swport4 {
|
||||||
|
status = "okay";
|
||||||
|
label = "eth1";
|
||||||
|
};
|
||||||
|
|
||||||
|
&swport5 {
|
||||||
|
status = "okay";
|
||||||
|
label = "eth2";
|
||||||
|
};
|
|
@ -195,9 +195,9 @@
|
||||||
reg = <0x780000 0x5800000>;
|
reg = <0x780000 0x5800000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@a80000 {
|
partition@c80000 {
|
||||||
label = "rootfs";
|
label = "rootfs";
|
||||||
reg = <0xa80000 0x5500000>;
|
reg = <0xc80000 0x5300000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@5f80000 {
|
partition@5f80000 {
|
||||||
|
@ -205,9 +205,9 @@
|
||||||
reg = <0x5f80000 0x5800000>;
|
reg = <0x5f80000 0x5800000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@6280000 {
|
partition@6480000 {
|
||||||
label = "alt_rootfs";
|
label = "alt_rootfs";
|
||||||
reg = <0x6280000 0x5500000>;
|
reg = <0x6480000 0x5300000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@b780000 {
|
partition@b780000 {
|
||||||
|
|
|
@ -359,6 +359,10 @@
|
||||||
macaddr_mfginfo_1d: macaddr@1d {
|
macaddr_mfginfo_1d: macaddr@1d {
|
||||||
reg = <0x1d 0x6>;
|
reg = <0x1d 0x6>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
macaddr_mfginfo_45: macaddr@45 {
|
||||||
|
reg = <0x45 0x6>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@3a0000 {
|
partition@3a0000 {
|
||||||
|
@ -454,17 +458,15 @@
|
||||||
|
|
||||||
&wifi0 {
|
&wifi0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
|
||||||
nvmem-cell-names = "pre-calibration", "mac-address";
|
nvmem-cell-names = "pre-calibration", "mac-address";
|
||||||
nvmem-cells = <&precal_art_1000>, <&macaddr_mfginfo_1d>;
|
nvmem-cells = <&precal_art_1000>, <&macaddr_mfginfo_45>;
|
||||||
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
||||||
};
|
};
|
||||||
|
|
||||||
&wifi1 {
|
&wifi1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
|
||||||
nvmem-cell-names = "pre-calibration", "mac-address";
|
nvmem-cell-names = "pre-calibration", "mac-address";
|
||||||
nvmem-cells = <&precal_art_5000>, <&macaddr_mfginfo_1d>;
|
nvmem-cells = <&precal_art_5000>, <&macaddr_mfginfo_45>;
|
||||||
mac-address-increment = <1>;
|
mac-address-increment = <1>;
|
||||||
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
qcom,ath10k-calibration-variant = "Aruba-AP-303";
|
||||||
};
|
};
|
||||||
|
|
|
@ -637,96 +637,104 @@ endef
|
||||||
# Missing DSA Setup
|
# Missing DSA Setup
|
||||||
#TARGET_DEVICES += glinet_gl-s1300
|
#TARGET_DEVICES += glinet_gl-s1300
|
||||||
|
|
||||||
|
define Device/kernel-size-6350-8300
|
||||||
|
DEVICE_COMPAT_VERSION := 2.0
|
||||||
|
DEVICE_COMPAT_MESSAGE := Kernel partition size must be increased for \
|
||||||
|
this OpenWrt version. Before continuing, you MUST issue either the \
|
||||||
|
command "fw_setenv kernsize 500000" from the OpenWrt command line, \
|
||||||
|
or "setenv kernsize 500000 ; saveenv" from the U-Boot serial console. \
|
||||||
|
Instead of the sysupgrade image, you must then install the OpenWrt \
|
||||||
|
factory image, setting the force flag and wiping the configuration. \
|
||||||
|
(e.g. "sysupgrade -n -F openwrt-squashfs-factory.bin" on command line)
|
||||||
|
endef
|
||||||
|
|
||||||
define Device/linksys_ea6350v3
|
define Device/linksys_ea6350v3
|
||||||
# The Linksys EA6350v3 has a uboot bootloader that does not
|
# The Linksys EA6350v3 has a uboot bootloader that does not
|
||||||
# support either booting lzma kernel images nor booting UBI
|
# support either booting lzma kernel images nor booting UBI
|
||||||
# partitions. This uboot, however, supports raw kernel images and
|
# partitions. This uboot, however, supports raw kernel images and
|
||||||
# gzipped images.
|
# gzipped images.
|
||||||
#
|
#
|
||||||
# As for the time of writing this, the device will boot the kernel
|
# As configured by the OEM factory, the device will boot the kernel
|
||||||
# from a fixed address with a fixed length of 3 MiB. Also, the
|
# from a fixed address with a fixed length of 3 MiB. Also, the
|
||||||
# device has a hard-coded kernel command line that requieres the
|
# device has a hard-coded kernel command line that requires the
|
||||||
# rootfs and alt_rootfs to be in mtd11 and mtd13 respectively.
|
# rootfs and alt_rootfs to be in mtd11 and mtd13 respectively.
|
||||||
# Oh... and the kernel partition overlaps with the rootfs
|
# Oh... and the kernel partition overlaps with the rootfs
|
||||||
# partition (the same for alt_kernel and alt_rootfs).
|
# partition (the same for alt_kernel and alt_rootfs).
|
||||||
#
|
#
|
||||||
# If you are planing re-partitioning the device, you may want to
|
# If you are planing re-partitioning the device, you may want to
|
||||||
# keep those details in mind:
|
# keep these details in mind:
|
||||||
# 1. The kernel adresses you should honor are 0x00000000 and
|
# 1. The kernel addresses you should honor are 0x00000000 and
|
||||||
# 0x02800000 respectively.
|
# 0x02800000 respectively.
|
||||||
# 2. The kernel size (plus the dtb) cannot exceed 3.00MiB in size.
|
# 2. The kernel size (plus the dtb) cannot exceed 3 MiB in size
|
||||||
|
# unless the uboot environment variable "kernsize" is increased.
|
||||||
# 3. You can use 'zImage', but not a raw 'Image' packed with lzma.
|
# 3. You can use 'zImage', but not a raw 'Image' packed with lzma.
|
||||||
# 4. The kernel command line from uboot is harcoded to boot with
|
# 4. The kernel command line from uboot is harcoded to boot with
|
||||||
# rootfs either in mtd11 or mtd13.
|
# rootfs either in mtd11 or mtd13.
|
||||||
$(call Device/FitzImage)
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/kernel-size-6350-8300)
|
||||||
DEVICE_VENDOR := Linksys
|
DEVICE_VENDOR := Linksys
|
||||||
DEVICE_MODEL := EA6350
|
DEVICE_MODEL := EA6350
|
||||||
DEVICE_VARIANT := v3
|
DEVICE_VARIANT := v3
|
||||||
SOC := qcom-ipq4018
|
SOC := qcom-ipq4018
|
||||||
BLOCKSIZE := 128k
|
BLOCKSIZE := 128k
|
||||||
PAGESIZE := 2048
|
PAGESIZE := 2048
|
||||||
KERNEL_SIZE := 3072k
|
KERNEL_SIZE := 5120k
|
||||||
IMAGE_SIZE := 37888k
|
IMAGE_SIZE := 35840k
|
||||||
UBINIZE_OPTS := -E 5
|
UBINIZE_OPTS := -E 5
|
||||||
IMAGES += factory.bin
|
IMAGES += factory.bin
|
||||||
IMAGE/factory.bin := append-kernel | append-uImage-fakehdr filesystem | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA6350v3
|
IMAGE/factory.bin := append-kernel | append-uImage-fakehdr filesystem | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA6350v3
|
||||||
DEFAULT := n
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += linksys_ea6350v3
|
TARGET_DEVICES += linksys_ea6350v3
|
||||||
|
|
||||||
define Device/linksys_ea8300
|
define Device/linksys_ea8300
|
||||||
$(call Device/FitzImage)
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/kernel-size-6350-8300)
|
||||||
DEVICE_VENDOR := Linksys
|
DEVICE_VENDOR := Linksys
|
||||||
DEVICE_MODEL := EA8300
|
DEVICE_MODEL := EA8300
|
||||||
SOC := qcom-ipq4019
|
SOC := qcom-ipq4019
|
||||||
KERNEL_SIZE := 3072k
|
KERNEL_SIZE := 5120k
|
||||||
IMAGE_SIZE := 87040k
|
IMAGE_SIZE := 84992k
|
||||||
BLOCKSIZE := 128k
|
BLOCKSIZE := 128k
|
||||||
PAGESIZE := 2048
|
PAGESIZE := 2048
|
||||||
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||||
IMAGES += factory.bin
|
IMAGES += factory.bin
|
||||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA8300
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA8300
|
||||||
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-linksys_ea8300 kmod-usb-ledtrig-usbport
|
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-linksys_ea8300 kmod-usb-ledtrig-usbport
|
||||||
DEFAULT := n
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += linksys_ea8300
|
TARGET_DEVICES += linksys_ea8300
|
||||||
|
|
||||||
define Device/linksys_mr8300
|
define Device/linksys_mr8300
|
||||||
$(call Device/FitzImage)
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/kernel-size-6350-8300)
|
||||||
DEVICE_VENDOR := Linksys
|
DEVICE_VENDOR := Linksys
|
||||||
DEVICE_MODEL := MR8300
|
DEVICE_MODEL := MR8300
|
||||||
SOC := qcom-ipq4019
|
SOC := qcom-ipq4019
|
||||||
KERNEL_SIZE := 3072k
|
KERNEL_SIZE := 5120k
|
||||||
IMAGE_SIZE := 87040k
|
IMAGE_SIZE := 84992k
|
||||||
BLOCKSIZE := 128k
|
BLOCKSIZE := 128k
|
||||||
PAGESIZE := 2048
|
PAGESIZE := 2048
|
||||||
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||||
IMAGES += factory.bin
|
IMAGES += factory.bin
|
||||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=MR8300
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=MR8300
|
||||||
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-usb-ledtrig-usbport
|
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-usb-ledtrig-usbport
|
||||||
DEFAULT := n
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += linksys_mr8300
|
TARGET_DEVICES += linksys_mr8300
|
||||||
|
|
||||||
define Device/linksys_whw01-v1
|
define Device/linksys_whw01
|
||||||
$(call Device/FitzImage)
|
$(call Device/FitzImage)
|
||||||
DEVICE_VENDOR := Linksys
|
DEVICE_VENDOR := Linksys
|
||||||
DEVICE_MODEL := WHW01
|
DEVICE_MODEL := WHW01
|
||||||
DEVICE_VARIANT := v1
|
|
||||||
KERNEL_SIZE := 6144k
|
KERNEL_SIZE := 6144k
|
||||||
IMAGE_SIZE := 28704512 # 28032k minus linksys signature (256-bytes).
|
IMAGE_SIZE := 75776K
|
||||||
SOC := qcom-ipq4018
|
SOC := qcom-ipq4018
|
||||||
BLOCKSIZE := 128k
|
BLOCKSIZE := 128k
|
||||||
PAGESIZE := 2048
|
PAGESIZE := 2048
|
||||||
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||||
IMAGES += factory.bin
|
IMAGES += factory.bin
|
||||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=WHW01
|
||||||
append-ubi | linksys-image type=WHW01 | pad-to $$$$(PAGESIZE) | \
|
|
||||||
check-size
|
|
||||||
DEVICE_PACKAGES := uboot-envtools kmod-leds-pca963x
|
DEVICE_PACKAGES := uboot-envtools kmod-leds-pca963x
|
||||||
endef
|
endef
|
||||||
# Missing DSA Setup
|
TARGET_DEVICES += linksys_whw01
|
||||||
#TARGET_DEVICES += linksys_whw01-v1
|
|
||||||
|
|
||||||
define Device/luma_wrtq-329acn
|
define Device/luma_wrtq-329acn
|
||||||
$(call Device/FitImage)
|
$(call Device/FitImage)
|
||||||
|
|
|
@ -1,99 +0,0 @@
|
||||||
From b8afc254b40167fd37b4d4263e750dab1f9ef157 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Crispin <john@phrozen.org>
|
|
||||||
Date: Wed, 9 Sep 2020 18:38:31 +0200
|
|
||||||
Subject: [PATCH] ARM: dts: qcom: ipq4019: add USB devicetree nodes
|
|
||||||
|
|
||||||
Since we now have driver for the USB PHY, and USB controller is already supported by the DWC3 driver lets add the necessary nodes to DTSI.
|
|
||||||
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Reviewed-by: Vinod Koul <vkoul@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/r/20200909163831.1894142-1-robert.marko@sartura.hr
|
|
||||||
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 74 +++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 74 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
@@ -606,5 +606,79 @@
|
|
||||||
reg = <4>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+ usb3_ss_phy: ssphy@9a000 {
|
|
||||||
+ compatible = "qcom,usb-ss-ipq4019-phy";
|
|
||||||
+ #phy-cells = <0>;
|
|
||||||
+ reg = <0x9a000 0x800>;
|
|
||||||
+ reg-names = "phy_base";
|
|
||||||
+ resets = <&gcc USB3_UNIPHY_PHY_ARES>;
|
|
||||||
+ reset-names = "por_rst";
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ usb3_hs_phy: hsphy@a6000 {
|
|
||||||
+ compatible = "qcom,usb-hs-ipq4019-phy";
|
|
||||||
+ #phy-cells = <0>;
|
|
||||||
+ reg = <0xa6000 0x40>;
|
|
||||||
+ reg-names = "phy_base";
|
|
||||||
+ resets = <&gcc USB3_HSPHY_POR_ARES>, <&gcc USB3_HSPHY_S_ARES>;
|
|
||||||
+ reset-names = "por_rst", "srif_rst";
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ usb3: usb3@8af8800 {
|
|
||||||
+ compatible = "qcom,dwc3";
|
|
||||||
+ reg = <0x8af8800 0x100>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <1>;
|
|
||||||
+ clocks = <&gcc GCC_USB3_MASTER_CLK>,
|
|
||||||
+ <&gcc GCC_USB3_SLEEP_CLK>,
|
|
||||||
+ <&gcc GCC_USB3_MOCK_UTMI_CLK>;
|
|
||||||
+ clock-names = "master", "sleep", "mock_utmi";
|
|
||||||
+ ranges;
|
|
||||||
+ status = "disabled";
|
|
||||||
+
|
|
||||||
+ dwc3@8a00000 {
|
|
||||||
+ compatible = "snps,dwc3";
|
|
||||||
+ reg = <0x8a00000 0xf8000>;
|
|
||||||
+ interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ phys = <&usb3_hs_phy>, <&usb3_ss_phy>;
|
|
||||||
+ phy-names = "usb2-phy", "usb3-phy";
|
|
||||||
+ dr_mode = "host";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ usb2_hs_phy: hsphy@a8000 {
|
|
||||||
+ compatible = "qcom,usb-hs-ipq4019-phy";
|
|
||||||
+ #phy-cells = <0>;
|
|
||||||
+ reg = <0xa8000 0x40>;
|
|
||||||
+ reg-names = "phy_base";
|
|
||||||
+ resets = <&gcc USB2_HSPHY_POR_ARES>, <&gcc USB2_HSPHY_S_ARES>;
|
|
||||||
+ reset-names = "por_rst", "srif_rst";
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ usb2: usb2@60f8800 {
|
|
||||||
+ compatible = "qcom,dwc3";
|
|
||||||
+ reg = <0x60f8800 0x100>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <1>;
|
|
||||||
+ clocks = <&gcc GCC_USB2_MASTER_CLK>,
|
|
||||||
+ <&gcc GCC_USB2_SLEEP_CLK>,
|
|
||||||
+ <&gcc GCC_USB2_MOCK_UTMI_CLK>;
|
|
||||||
+ clock-names = "master", "sleep", "mock_utmi";
|
|
||||||
+ ranges;
|
|
||||||
+ status = "disabled";
|
|
||||||
+
|
|
||||||
+ dwc3@6000000 {
|
|
||||||
+ compatible = "snps,dwc3";
|
|
||||||
+ reg = <0x6000000 0xf8000>;
|
|
||||||
+ interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ phys = <&usb2_hs_phy>;
|
|
||||||
+ phy-names = "usb2-phy";
|
|
||||||
+ dr_mode = "host";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,44 +0,0 @@
|
||||||
From d1ae4c808e7802008225078d93fbadd4aeea1e2d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Date: Wed, 9 Sep 2020 21:56:37 +0200
|
|
||||||
Subject: [PATCH] ARM: dts: qcom: ipq4019: add more labels
|
|
||||||
|
|
||||||
Lets add labels to more commonly used nodes for easier modification in board DTS files.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Link: https://lore.kernel.org/r/20200909195640.3127341-2-robert.marko@sartura.hr
|
|
||||||
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
@@ -191,7 +191,7 @@
|
|
||||||
reg = <0x1800000 0x60000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- rng@22000 {
|
|
||||||
+ prng: rng@22000 {
|
|
||||||
compatible = "qcom,prng";
|
|
||||||
reg = <0x22000 0x140>;
|
|
||||||
clocks = <&gcc GCC_PRNG_AHB_CLK>;
|
|
||||||
@@ -301,7 +301,7 @@
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
- crypto@8e3a000 {
|
|
||||||
+ crypto: crypto@8e3a000 {
|
|
||||||
compatible = "qcom,crypto-v5.1";
|
|
||||||
reg = <0x08e3a000 0x6000>;
|
|
||||||
clocks = <&gcc GCC_CRYPTO_AHB_CLK>,
|
|
||||||
@@ -387,7 +387,7 @@
|
|
||||||
dma-names = "rx", "tx";
|
|
||||||
};
|
|
||||||
|
|
||||||
- watchdog@b017000 {
|
|
||||||
+ watchdog: watchdog@b017000 {
|
|
||||||
compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";
|
|
||||||
reg = <0xb017000 0x40>;
|
|
||||||
clocks = <&sleep_clk>;
|
|
|
@ -1,35 +0,0 @@
|
||||||
From e14775aa2feac18e7378cb8009b55c13d4236b50 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Date: Mon, 7 Sep 2020 12:19:37 +0200
|
|
||||||
Subject: [PATCH] ARM: dts: qcom: ipq4019: add SDHCI VQMMC LDO node
|
|
||||||
|
|
||||||
Since we now have driver for the SDHCI VQMMC LDO needed
|
|
||||||
for I/0 voltage levels lets introduce the necessary node for it.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Cc: Luka Perkov <luka.perkov@sartura.hr>
|
|
||||||
Link: https://lore.kernel.org/r/20200907101937.10155-1-robert.marko@sartura.hr
|
|
||||||
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/qcom-ipq4019.dtsi | 10 ++++++++++
|
|
||||||
1 file changed, 10 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
@@ -210,6 +210,16 @@
|
|
||||||
interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ vqmmc: regulator@1948000 {
|
|
||||||
+ compatible = "qcom,vqmmc-ipq4019-regulator";
|
|
||||||
+ reg = <0x01948000 0x4>;
|
|
||||||
+ regulator-name = "vqmmc";
|
|
||||||
+ regulator-min-microvolt = <1500000>;
|
|
||||||
+ regulator-max-microvolt = <3000000>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
sdhci: sdhci@7824900 {
|
|
||||||
compatible = "qcom,sdhci-msm-v4";
|
|
||||||
reg = <0x7824900 0x11c>, <0x7824000 0x800>;
|
|
|
@ -1,115 +0,0 @@
|
||||||
From f2b87dc1028b710ec8ce25808b9d21f92b376184 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
|
||||||
Date: Sun, 11 Mar 2018 14:41:31 +0100
|
|
||||||
Subject: [PATCH 2/2] clk: fix apss cpu overclocking
|
|
||||||
|
|
||||||
There's an interaction issue between the clk changes:"
|
|
||||||
clk: qcom: ipq4019: Add the apss cpu pll divider clock node
|
|
||||||
clk: qcom: ipq4019: remove fixed clocks and add pll clocks
|
|
||||||
" and the cpufreq-dt.
|
|
||||||
|
|
||||||
cpufreq-dt is now spamming the kernel-log with the following:
|
|
||||||
|
|
||||||
[ 1099.190658] cpu cpu0: dev_pm_opp_set_rate: failed to find current OPP
|
|
||||||
for freq 761142857 (-34)
|
|
||||||
|
|
||||||
This only happens on certain devices like the Compex WPJ428
|
|
||||||
and AVM FritzBox!4040. However, other devices like the Asus
|
|
||||||
RT-AC58U and Meraki MR33 work just fine.
|
|
||||||
|
|
||||||
The issue stem from the fact that all higher CPU-Clocks
|
|
||||||
are achieved by switching the clock-parent to the P_DDRPLLAPSS
|
|
||||||
(ddrpllapss). Which is set by Qualcomm's proprietary bootcode
|
|
||||||
as part of the DDR calibration.
|
|
||||||
|
|
||||||
For example, the FB4040 uses 256 MiB Nanya NT5CC128M16IP clocked
|
|
||||||
at round 533 MHz (ddrpllsdcc = 190285714 Hz).
|
|
||||||
|
|
||||||
whereas the 128 MiB Nanya NT5CC64M16GP-DI in the ASUS RT-AC58U is
|
|
||||||
clocked at a slightly higher 537 MHz ( ddrpllsdcc = 192000000 Hz).
|
|
||||||
|
|
||||||
This patch attempts to fix the issue by modifying
|
|
||||||
clk_cpu_div_round_rate(), clk_cpu_div_set_rate(), clk_cpu_div_recalc_rate()
|
|
||||||
to use a new qcom_find_freq_close() function, which returns the closest
|
|
||||||
matching frequency, instead of the next higher. This way, the SoC in
|
|
||||||
the FB4040 (with its max clock speed of 710.4 MHz) will no longer
|
|
||||||
try to overclock to 761 MHz.
|
|
||||||
|
|
||||||
Fixes: d83dcacea18 ("clk: qcom: ipq4019: Add the apss cpu pll divider clock node")
|
|
||||||
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
|
||||||
---
|
|
||||||
drivers/clk/qcom/gcc-ipq4019.c | 34 +++++++++++++++++++++++++++++++---
|
|
||||||
1 file changed, 31 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/clk/qcom/gcc-ipq4019.c
|
|
||||||
+++ b/drivers/clk/qcom/gcc-ipq4019.c
|
|
||||||
@@ -1243,6 +1243,29 @@ static const struct clk_fepll_vco gcc_fe
|
|
||||||
.reg = 0x2f020,
|
|
||||||
};
|
|
||||||
|
|
||||||
+
|
|
||||||
+const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f,
|
|
||||||
+ unsigned long rate)
|
|
||||||
+{
|
|
||||||
+ const struct freq_tbl *last = NULL;
|
|
||||||
+
|
|
||||||
+ for ( ; f->freq; f++) {
|
|
||||||
+ if (rate == f->freq)
|
|
||||||
+ return f;
|
|
||||||
+
|
|
||||||
+ if (f->freq > rate) {
|
|
||||||
+ if (!last ||
|
|
||||||
+ (f->freq - rate) < (rate - last->freq))
|
|
||||||
+ return f;
|
|
||||||
+ else
|
|
||||||
+ return last;
|
|
||||||
+ }
|
|
||||||
+ last = f;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return last;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Round rate function for APSS CPU PLL Clock divider.
|
|
||||||
* It looks up the frequency table and returns the next higher frequency
|
|
||||||
@@ -1255,7 +1278,7 @@ static long clk_cpu_div_round_rate(struc
|
|
||||||
struct clk_hw *p_hw;
|
|
||||||
const struct freq_tbl *f;
|
|
||||||
|
|
||||||
- f = qcom_find_freq(pll->freq_tbl, rate);
|
|
||||||
+ f = qcom_find_freq_close(pll->freq_tbl, rate);
|
|
||||||
if (!f)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
@@ -1278,7 +1301,7 @@ static int clk_cpu_div_set_rate(struct c
|
|
||||||
u32 mask;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
- f = qcom_find_freq(pll->freq_tbl, rate);
|
|
||||||
+ f = qcom_find_freq_close(pll->freq_tbl, rate);
|
|
||||||
if (!f)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
@@ -1305,6 +1328,7 @@ static unsigned long
|
|
||||||
clk_cpu_div_recalc_rate(struct clk_hw *hw,
|
|
||||||
unsigned long parent_rate)
|
|
||||||
{
|
|
||||||
+ const struct freq_tbl *f;
|
|
||||||
struct clk_fepll *pll = to_clk_fepll(hw);
|
|
||||||
u32 cdiv, pre_div;
|
|
||||||
u64 rate;
|
|
||||||
@@ -1325,7 +1349,11 @@ clk_cpu_div_recalc_rate(struct clk_hw *h
|
|
||||||
rate = clk_fepll_vco_calc_rate(pll, parent_rate) * 2;
|
|
||||||
do_div(rate, pre_div);
|
|
||||||
|
|
||||||
- return rate;
|
|
||||||
+ f = qcom_find_freq_close(pll->freq_tbl, rate);
|
|
||||||
+ if (!f)
|
|
||||||
+ return rate;
|
|
||||||
+
|
|
||||||
+ return f->freq;
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct clk_ops clk_regmap_cpu_div_ops = {
|
|
|
@ -1,52 +0,0 @@
|
||||||
From 480c1f7648fc586db12d6003c717c23667a4fcf0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ram Chandra Jangir <rjangir@codeaurora.org>
|
|
||||||
Date: Tue, 28 Mar 2017 22:35:33 +0530
|
|
||||||
Subject: [PATCH] clk: qcom: ipq4019: add ess reset
|
|
||||||
|
|
||||||
Added the ESS reset in IPQ4019 GCC.
|
|
||||||
|
|
||||||
Signed-off-by: Ram Chandra Jangir <rjangir@codeaurora.org>
|
|
||||||
---
|
|
||||||
drivers/clk/qcom/gcc-ipq4019.c | 11 +++++++++++
|
|
||||||
include/dt-bindings/clock/qcom,gcc-ipq4019.h | 11 +++++++++++
|
|
||||||
2 files changed, 22 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/clk/qcom/gcc-ipq4019.c
|
|
||||||
+++ b/drivers/clk/qcom/gcc-ipq4019.c
|
|
||||||
@@ -1736,6 +1736,17 @@ static const struct qcom_reset_map gcc_i
|
|
||||||
[GCC_TCSR_BCR] = {0x22000, 0},
|
|
||||||
[GCC_MPM_BCR] = {0x24000, 0},
|
|
||||||
[GCC_SPDM_BCR] = {0x25000, 0},
|
|
||||||
+ [ESS_MAC1_ARES] = {0x1200C, 0},
|
|
||||||
+ [ESS_MAC2_ARES] = {0x1200C, 1},
|
|
||||||
+ [ESS_MAC3_ARES] = {0x1200C, 2},
|
|
||||||
+ [ESS_MAC4_ARES] = {0x1200C, 3},
|
|
||||||
+ [ESS_MAC5_ARES] = {0x1200C, 4},
|
|
||||||
+ [ESS_PSGMII_ARES] = {0x1200C, 5},
|
|
||||||
+ [ESS_MAC1_CLK_DIS] = {0x1200C, 8},
|
|
||||||
+ [ESS_MAC2_CLK_DIS] = {0x1200C, 9},
|
|
||||||
+ [ESS_MAC3_CLK_DIS] = {0x1200C, 10},
|
|
||||||
+ [ESS_MAC4_CLK_DIS] = {0x1200C, 11},
|
|
||||||
+ [ESS_MAC5_CLK_DIS] = {0x1200C, 12},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct regmap_config gcc_ipq4019_regmap_config = {
|
|
||||||
--- a/include/dt-bindings/clock/qcom,gcc-ipq4019.h
|
|
||||||
+++ b/include/dt-bindings/clock/qcom,gcc-ipq4019.h
|
|
||||||
@@ -165,5 +165,16 @@
|
|
||||||
#define GCC_QDSS_BCR 69
|
|
||||||
#define GCC_MPM_BCR 70
|
|
||||||
#define GCC_SPDM_BCR 71
|
|
||||||
+#define ESS_MAC1_ARES 72
|
|
||||||
+#define ESS_MAC2_ARES 73
|
|
||||||
+#define ESS_MAC3_ARES 74
|
|
||||||
+#define ESS_MAC4_ARES 75
|
|
||||||
+#define ESS_MAC5_ARES 76
|
|
||||||
+#define ESS_PSGMII_ARES 77
|
|
||||||
+#define ESS_MAC1_CLK_DIS 78
|
|
||||||
+#define ESS_MAC2_CLK_DIS 79
|
|
||||||
+#define ESS_MAC3_CLK_DIS 80
|
|
||||||
+#define ESS_MAC4_CLK_DIS 81
|
|
||||||
+#define ESS_MAC5_CLK_DIS 82
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,48 +0,0 @@
|
||||||
From 0843a61d6913bdac8889eb048ed89f7903059787 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robimarko@gmail.com>
|
|
||||||
Date: Fri, 30 Oct 2020 13:36:31 +0100
|
|
||||||
Subject: [PATCH] arm: compressed: add appended DTB section
|
|
||||||
|
|
||||||
This adds a appended_dtb section to the ARM decompressor
|
|
||||||
linker script.
|
|
||||||
|
|
||||||
This allows using the existing ARM zImage appended DTB support for
|
|
||||||
appending a DTB to the raw ELF kernel.
|
|
||||||
|
|
||||||
Its size is set to 1MB max to match the zImage appended DTB size limit.
|
|
||||||
|
|
||||||
To use it to pass the DTB to the kernel, objcopy is used:
|
|
||||||
|
|
||||||
objcopy --set-section-flags=.appended_dtb=alloc,contents \
|
|
||||||
--update-section=.appended_dtb=<target>.dtb vmlinux
|
|
||||||
|
|
||||||
This is based off the following patch:
|
|
||||||
https://github.com/openwrt/openwrt/commit/c063e27e02a9dcac0e7f5877fb154e58fa3e1a69
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm/boot/compressed/vmlinux.lds.S | 9 ++++++++-
|
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/compressed/vmlinux.lds.S
|
|
||||||
+++ b/arch/arm/boot/compressed/vmlinux.lds.S
|
|
||||||
@@ -101,6 +101,13 @@ SECTIONS
|
|
||||||
|
|
||||||
_edata = .;
|
|
||||||
|
|
||||||
+ .appended_dtb : {
|
|
||||||
+ /* leave space for appended DTB */
|
|
||||||
+ . += 0x100000;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ _edata_dtb = .;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* The image_end section appears after any additional loadable sections
|
|
||||||
* that the linker may decide to insert in the binary image. Having
|
|
||||||
@@ -138,4 +145,4 @@ SECTIONS
|
|
||||||
|
|
||||||
ARM_ASSERTS
|
|
||||||
}
|
|
||||||
-ASSERT(_edata_real == _edata, "error: zImage file size is incorrect");
|
|
||||||
+ASSERT(_edata_real == _edata_dtb, "error: zImage file size is incorrect");
|
|
|
@ -1,66 +0,0 @@
|
||||||
From 11d6a6128a5a07c429941afc202b6e62a19771be Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Thomson <git@johnthomson.fastmail.com.au>
|
|
||||||
Date: Fri, 23 Oct 2020 19:42:36 +1000
|
|
||||||
Subject: [PATCH 2/2] arm: compressed: set ipq40xx watchdog to allow boot
|
|
||||||
|
|
||||||
For IPQ40XX systems where the SoC watchdog is activated before linux,
|
|
||||||
the watchdog timer may be too small for linux to finish uncompress,
|
|
||||||
boot, and watchdog management start.
|
|
||||||
If the watchdog is enabled, set the timeout for it to 30 seconds.
|
|
||||||
The functionality and offsets were copied from:
|
|
||||||
drivers/watchdog/qcom-wdt.c qcom_wdt_set_timeout & qcom_wdt_start
|
|
||||||
The watchdog memory address was taken from:
|
|
||||||
arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
|
|
||||||
This was required on Mikrotik IPQ40XX consumer hardware using Mikrotik's
|
|
||||||
RouterBoot bootloader.
|
|
||||||
|
|
||||||
Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
|
|
||||||
---
|
|
||||||
arch/arm/boot/compressed/head.S | 35 +++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 35 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/compressed/head.S
|
|
||||||
+++ b/arch/arm/boot/compressed/head.S
|
|
||||||
@@ -602,6 +602,41 @@ not_relocated: mov r0, #0
|
|
||||||
bic r4, r4, #1
|
|
||||||
blne cache_on
|
|
||||||
|
|
||||||
+/* Set the Qualcom IPQ40xx watchdog timeout to 30 seconds
|
|
||||||
+ * if it is enabled, so that there is time for kernel
|
|
||||||
+ * to decompress, boot, and take over the watchdog.
|
|
||||||
+ * data and functionality from drivers/watchdog/qcom-wdt.c
|
|
||||||
+ * address from arch/arm/boot/dts/qcom-ipq4019.dtsi
|
|
||||||
+ */
|
|
||||||
+#ifdef CONFIG_ARCH_IPQ40XX
|
|
||||||
+watchdog_set:
|
|
||||||
+ /* offsets:
|
|
||||||
+ * 0x04 reset (=1 resets countdown)
|
|
||||||
+ * 0x08 enable (=0 disables)
|
|
||||||
+ * 0x0c status (=1 when SoC was reset by watchdog)
|
|
||||||
+ * 0x10 bark (=timeout warning in ticks)
|
|
||||||
+ * 0x14 bite (=timeout reset in ticks)
|
|
||||||
+ * clock rate is 1<<15 hertz
|
|
||||||
+ */
|
|
||||||
+ .equ watchdog, 0x0b017000 @Store watchdog base address
|
|
||||||
+ movw r0, #:lower16:watchdog
|
|
||||||
+ movt r0, #:upper16:watchdog
|
|
||||||
+ ldr r1, [r0, #0x08] @Get enabled?
|
|
||||||
+ cmp r1, #1 @If not enabled, do not change
|
|
||||||
+ bne watchdog_finished
|
|
||||||
+ mov r1, #0
|
|
||||||
+ str r1, [r0, #0x08] @Disable the watchdog
|
|
||||||
+ mov r1, #1
|
|
||||||
+ str r1, [r0, #0x04] @Pet the watchdog
|
|
||||||
+ mov r1, #30 @30 seconds timeout
|
|
||||||
+ lsl r1, r1, #15 @converted to ticks
|
|
||||||
+ str r1, [r0, #0x10] @Set the bark timeout
|
|
||||||
+ str r1, [r0, #0x14] @Set the bite timeout
|
|
||||||
+ mov r1, #1
|
|
||||||
+ str r1, [r0, #0x08] @Enable the watchdog
|
|
||||||
+watchdog_finished:
|
|
||||||
+#endif /* CONFIG_ARCH_IPQ40XX */
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* The C runtime environment should now be setup sufficiently.
|
|
||||||
* Set up some pointers, and start decompressing.
|
|
|
@ -1,24 +0,0 @@
|
||||||
From f63ea127643a605da97090ce585fdd7c2d17fa42 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Date: Mon, 14 Dec 2020 13:35:35 +0100
|
|
||||||
Subject: [PATCH] mmc: sdhci-msm: use sdhci_set_clock
|
|
||||||
|
|
||||||
When using sdhci_msm_set_clock clock setting will fail, so lets
|
|
||||||
use the generic sdhci_set_clock.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
drivers/mmc/host/sdhci-msm.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/mmc/host/sdhci-msm.c
|
|
||||||
+++ b/drivers/mmc/host/sdhci-msm.c
|
|
||||||
@@ -2193,7 +2193,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
|
|
||||||
|
|
||||||
static const struct sdhci_ops sdhci_msm_ops = {
|
|
||||||
.reset = sdhci_msm_reset,
|
|
||||||
- .set_clock = sdhci_msm_set_clock,
|
|
||||||
+ .set_clock = sdhci_set_clock,
|
|
||||||
.get_min_clock = sdhci_msm_get_min_clock,
|
|
||||||
.get_max_clock = sdhci_msm_get_max_clock,
|
|
||||||
.set_bus_width = sdhci_set_bus_width,
|
|
|
@ -1,47 +0,0 @@
|
||||||
--- a/drivers/firmware/qcom_scm.c
|
|
||||||
+++ b/drivers/firmware/qcom_scm.c
|
|
||||||
@@ -404,6 +404,20 @@ static int __qcom_scm_set_dload_mode(str
|
|
||||||
return qcom_scm_call_atomic(__scm->dev, &desc, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int __qcom_scm_disable_sdi(struct device *dev)
|
|
||||||
+{
|
|
||||||
+ struct qcom_scm_desc desc = {
|
|
||||||
+ .svc = QCOM_SCM_SVC_BOOT,
|
|
||||||
+ .cmd = QCOM_SCM_BOOT_CONFIG_SDI,
|
|
||||||
+ .arginfo = QCOM_SCM_ARGS(2),
|
|
||||||
+ .args[0] = 1 /* 1: disable watchdog debug */,
|
|
||||||
+ .args[1] = 0 /* 0: disable SDI */,
|
|
||||||
+ .owner = ARM_SMCCC_OWNER_SIP,
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ return qcom_scm_call(__scm->dev, &desc, NULL);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void qcom_scm_set_download_mode(bool enable)
|
|
||||||
{
|
|
||||||
bool avail;
|
|
||||||
@@ -1250,6 +1264,13 @@ static int qcom_scm_probe(struct platfor
|
|
||||||
if (download_mode)
|
|
||||||
qcom_scm_set_download_mode(true);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Factory firmware leaves SDI (a debug interface), which prevents
|
|
||||||
+ * clean reboot.
|
|
||||||
+ */
|
|
||||||
+ if (of_machine_is_compatible("google,wifi"))
|
|
||||||
+ __qcom_scm_disable_sdi(__scm->dev);
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/drivers/firmware/qcom_scm.h
|
|
||||||
+++ b/drivers/firmware/qcom_scm.h
|
|
||||||
@@ -77,6 +77,7 @@ extern int scm_legacy_call(struct device
|
|
||||||
#define QCOM_SCM_SVC_BOOT 0x01
|
|
||||||
#define QCOM_SCM_BOOT_SET_ADDR 0x01
|
|
||||||
#define QCOM_SCM_BOOT_TERMINATE_PC 0x02
|
|
||||||
+#define QCOM_SCM_BOOT_CONFIG_SDI 0x09
|
|
||||||
#define QCOM_SCM_BOOT_SET_DLOAD_MODE 0x10
|
|
||||||
#define QCOM_SCM_BOOT_SET_REMOTE_STATE 0x0a
|
|
||||||
#define QCOM_SCM_FLUSH_FLAG_MASK 0x3
|
|
|
@ -1,121 +0,0 @@
|
||||||
--- a/drivers/firmware/qcom_scm-legacy.c
|
|
||||||
+++ b/drivers/firmware/qcom_scm-legacy.c
|
|
||||||
@@ -13,6 +13,9 @@
|
|
||||||
#include <linux/arm-smccc.h>
|
|
||||||
#include <linux/dma-mapping.h>
|
|
||||||
|
|
||||||
+#include <asm/cacheflush.h>
|
|
||||||
+#include <asm/outercache.h>
|
|
||||||
+
|
|
||||||
#include "qcom_scm.h"
|
|
||||||
|
|
||||||
static DEFINE_MUTEX(qcom_scm_lock);
|
|
||||||
@@ -117,6 +120,25 @@ static void __scm_legacy_do(const struct
|
|
||||||
} while (res->a0 == QCOM_SCM_INTERRUPTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void qcom_scm_inv_range(unsigned long start, unsigned long end)
|
|
||||||
+{
|
|
||||||
+ u32 cacheline_size, ctr;
|
|
||||||
+
|
|
||||||
+ asm volatile("mrc p15, 0, %0, c0, c0, 1" : "=r" (ctr));
|
|
||||||
+ cacheline_size = 4 << ((ctr >> 16) & 0xf);
|
|
||||||
+
|
|
||||||
+ start = round_down(start, cacheline_size);
|
|
||||||
+ end = round_up(end, cacheline_size);
|
|
||||||
+ outer_inv_range(start, end);
|
|
||||||
+ while (start < end) {
|
|
||||||
+ asm ("mcr p15, 0, %0, c7, c6, 1" : : "r" (start)
|
|
||||||
+ : "memory");
|
|
||||||
+ start += cacheline_size;
|
|
||||||
+ }
|
|
||||||
+ dsb();
|
|
||||||
+ isb();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* qcom_scm_call() - Sends a command to the SCM and waits for the command to
|
|
||||||
* finish processing.
|
|
||||||
@@ -160,10 +182,16 @@ int scm_legacy_call(struct device *dev,
|
|
||||||
|
|
||||||
rsp = scm_legacy_command_to_response(cmd);
|
|
||||||
|
|
||||||
- cmd_phys = dma_map_single(dev, cmd, alloc_len, DMA_TO_DEVICE);
|
|
||||||
- if (dma_mapping_error(dev, cmd_phys)) {
|
|
||||||
- kfree(cmd);
|
|
||||||
- return -ENOMEM;
|
|
||||||
+ if (dev) {
|
|
||||||
+ cmd_phys = dma_map_single(dev, cmd, alloc_len, DMA_TO_DEVICE);
|
|
||||||
+ if (dma_mapping_error(dev, cmd_phys)) {
|
|
||||||
+ kfree(cmd);
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ cmd_phys = virt_to_phys(cmd);
|
|
||||||
+ __cpuc_flush_dcache_area(cmd, alloc_len);
|
|
||||||
+ outer_flush_range(cmd_phys, cmd_phys + alloc_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
smc.args[0] = 1;
|
|
||||||
@@ -179,13 +207,26 @@ int scm_legacy_call(struct device *dev,
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
do {
|
|
||||||
- dma_sync_single_for_cpu(dev, cmd_phys + sizeof(*cmd) + cmd_len,
|
|
||||||
- sizeof(*rsp), DMA_FROM_DEVICE);
|
|
||||||
+ if (dev) {
|
|
||||||
+ dma_sync_single_for_cpu(dev, cmd_phys + sizeof(*cmd) +
|
|
||||||
+ cmd_len, sizeof(*rsp),
|
|
||||||
+ DMA_FROM_DEVICE);
|
|
||||||
+ } else {
|
|
||||||
+ unsigned long start = (uintptr_t)cmd + sizeof(*cmd) +
|
|
||||||
+ cmd_len;
|
|
||||||
+ qcom_scm_inv_range(start, start + sizeof(*rsp));
|
|
||||||
+ }
|
|
||||||
} while (!rsp->is_complete);
|
|
||||||
|
|
||||||
- dma_sync_single_for_cpu(dev, cmd_phys + sizeof(*cmd) + cmd_len +
|
|
||||||
- le32_to_cpu(rsp->buf_offset),
|
|
||||||
- resp_len, DMA_FROM_DEVICE);
|
|
||||||
+ if (dev) {
|
|
||||||
+ dma_sync_single_for_cpu(dev, cmd_phys + sizeof(*cmd) + cmd_len +
|
|
||||||
+ le32_to_cpu(rsp->buf_offset),
|
|
||||||
+ resp_len, DMA_FROM_DEVICE);
|
|
||||||
+ } else {
|
|
||||||
+ unsigned long start = (uintptr_t)cmd + sizeof(*cmd) + cmd_len +
|
|
||||||
+ le32_to_cpu(rsp->buf_offset);
|
|
||||||
+ qcom_scm_inv_range(start, start + resp_len);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
res_buf = scm_legacy_get_response_buffer(rsp);
|
|
||||||
@@ -193,7 +234,8 @@ int scm_legacy_call(struct device *dev,
|
|
||||||
res->result[i] = le32_to_cpu(res_buf[i]);
|
|
||||||
}
|
|
||||||
out:
|
|
||||||
- dma_unmap_single(dev, cmd_phys, alloc_len, DMA_TO_DEVICE);
|
|
||||||
+ if (dev)
|
|
||||||
+ dma_unmap_single(dev, cmd_phys, alloc_len, DMA_TO_DEVICE);
|
|
||||||
kfree(cmd);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
--- a/drivers/firmware/qcom_scm.c
|
|
||||||
+++ b/drivers/firmware/qcom_scm.c
|
|
||||||
@@ -344,6 +344,17 @@ int qcom_scm_set_cold_boot_addr(void *en
|
|
||||||
desc.args[0] = flags;
|
|
||||||
desc.args[1] = virt_to_phys(entry);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Factory firmware doesn't support the atomic variant. Non-atomic SCMs
|
|
||||||
+ * require ugly DMA invalidation support that was dropped upstream a
|
|
||||||
+ * while ago. For more info, see:
|
|
||||||
+ *
|
|
||||||
+ * [RFC] qcom_scm: IPQ4019 firmware does not support atomic API?
|
|
||||||
+ * https://lore.kernel.org/linux-arm-msm/20200913201608.GA3162100@bDebian/
|
|
||||||
+ */
|
|
||||||
+ if (of_machine_is_compatible("google,wifi"))
|
|
||||||
+ return qcom_scm_call(__scm ? __scm->dev : NULL, &desc, NULL);
|
|
||||||
+
|
|
||||||
return qcom_scm_call_atomic(__scm ? __scm->dev : NULL, &desc, NULL);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(qcom_scm_set_cold_boot_addr);
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue