Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
992e9ec072
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .99
|
||||
LINUX_KERNEL_HASH-6.1.99 = c086ee9ce2b1eeba6e085d569bc97ae764a5d15f6322847f0ebc9f787ae34dd3
|
||||
LINUX_VERSION-6.1 = .100
|
||||
LINUX_KERNEL_HASH-6.1.100 = b9aa6ec1a00f234d6c6f2d428fbb0a6bf459606c259263df978f86685b65a8b9
|
||||
|
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .40
|
||||
LINUX_KERNEL_HASH-6.6.40 = 5c3a3c03c055b8d601a6d7f80d1465ada6b83a12299f6ace2027b47f0baff538
|
||||
LINUX_VERSION-6.6 = .41
|
||||
LINUX_KERNEL_HASH-6.6.41 = 9ec99c578158ab85d99b37791a76643d2ea4c3f72ecbef7b5eb6d60f3de032ef
|
||||
|
@ -96,6 +96,7 @@ echo "COUNT=$count"
|
||||
|
||||
# if there's no range, we're done
|
||||
[ $# -eq 0 ] && exit 0
|
||||
[ -z "$1$2" ] && exit 0
|
||||
|
||||
if [ "$prefix" -le 30 ]; then
|
||||
lower=$((network + 1))
|
||||
|
@ -57,11 +57,11 @@ nand_find_ubi() {
|
||||
}
|
||||
|
||||
nand_get_magic_long() {
|
||||
(${3}cat "$1" | dd bs=4 "skip=${2:-0}" count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
|
||||
($2 < "$1" | dd bs=4 "skip=${3:-0}" count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
|
||||
}
|
||||
|
||||
get_magic_long_tar() {
|
||||
(tar xO${3}f "$1" "$2" | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
|
||||
($2 < "$1" | tar xOf - "$3" | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
|
||||
}
|
||||
|
||||
identify() {
|
||||
@ -73,7 +73,7 @@ identify_tar() {
|
||||
}
|
||||
|
||||
identify_if_gzip() {
|
||||
if [ "$(identify "$1")" = gzip ]; then echo -n z; fi
|
||||
if [ "$(identify "$1" "cat")" = gzip ]; then echo -n z; fi
|
||||
}
|
||||
|
||||
nand_restore_config() {
|
||||
@ -259,64 +259,64 @@ nand_upgrade_prepare_ubi() {
|
||||
# Write the UBI image to MTD ubi partition
|
||||
nand_upgrade_ubinized() {
|
||||
local ubi_file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
|
||||
local ubi_length=$( (${gz}cat "$ubi_file" | wc -c) 2> /dev/null)
|
||||
local ubi_length=$( ($cmd < "$ubi_file" | wc -c) 2> /dev/null)
|
||||
|
||||
nand_detach_ubi "$CI_UBIPART" || return 1
|
||||
|
||||
local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
|
||||
${gz}cat "$ubi_file" | ubiformat "/dev/mtd$mtdnum" -S "$ubi_length" -y -f - && ubiattach -m "$mtdnum"
|
||||
$cmd < "$ubi_file" | ubiformat "/dev/mtd$mtdnum" -S "$ubi_length" -y -f - && ubiattach -m "$mtdnum"
|
||||
}
|
||||
|
||||
# Write the UBIFS image to UBI rootfs volume
|
||||
nand_upgrade_ubifs() {
|
||||
local ubifs_file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
|
||||
local ubifs_length=$( (${gz}cat "$ubifs_file" | wc -c) 2> /dev/null)
|
||||
local ubifs_length=$( ($cmd < "$ubifs_file" | wc -c) 2> /dev/null)
|
||||
|
||||
nand_upgrade_prepare_ubi "$ubifs_length" "ubifs" "" "" || return 1
|
||||
|
||||
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
local root_ubivol="$(nand_find_volume $ubidev "$CI_ROOTPART")"
|
||||
${gz}cat "$ubifs_file" | ubiupdatevol /dev/$root_ubivol -s "$ubifs_length" -
|
||||
$cmd < "$ubifs_file" | ubiupdatevol /dev/$root_ubivol -s "$ubifs_length" -
|
||||
}
|
||||
|
||||
# Write the FIT image to UBI kernel volume
|
||||
nand_upgrade_fit() {
|
||||
local fit_file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
|
||||
local fit_length=$( (${gz}cat "$fit_file" | wc -c) 2> /dev/null)
|
||||
local fit_length=$( ($cmd < "$fit_file" | wc -c) 2> /dev/null)
|
||||
|
||||
nand_upgrade_prepare_ubi "" "" "$fit_length" "1" || return 1
|
||||
|
||||
local fit_ubidev="$(nand_find_ubi "$CI_UBIPART")"
|
||||
local fit_ubivol="$(nand_find_volume $fit_ubidev "$CI_KERNPART")"
|
||||
${gz}cat "$fit_file" | ubiupdatevol /dev/$fit_ubivol -s "$fit_length" -
|
||||
$cmd < "$fit_file" | ubiupdatevol /dev/$fit_ubivol -s "$fit_length" -
|
||||
}
|
||||
|
||||
# Write images in the TAR file to MTD partitions and/or UBI volumes as required
|
||||
nand_upgrade_tar() {
|
||||
local tar_file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
local jffs2_markers="${CI_JFFS2_CLEAN_MARKERS:-0}"
|
||||
|
||||
# WARNING: This fails if tar contains more than one 'sysupgrade-*' directory.
|
||||
local board_dir="$(tar t${gz}f "$tar_file" | grep -m 1 '^sysupgrade-.*/$')"
|
||||
local board_dir="$($cmd < "$tar_file" | tar tf - | grep -m 1 '^sysupgrade-.*/$')"
|
||||
board_dir="${board_dir%/}"
|
||||
|
||||
local kernel_mtd kernel_length
|
||||
if [ "$CI_KERNPART" != "none" ]; then
|
||||
kernel_mtd="$(find_mtd_index "$CI_KERNPART")"
|
||||
kernel_length=$( (tar xO${gz}f "$tar_file" "$board_dir/kernel" | wc -c) 2> /dev/null)
|
||||
kernel_length=$( ($cmd < "$tar_file" | tar xOf - "$board_dir/kernel" | wc -c) 2> /dev/null)
|
||||
[ "$kernel_length" = 0 ] && kernel_length=
|
||||
fi
|
||||
local rootfs_length=$( (tar xO${gz}f "$tar_file" "$board_dir/root" | wc -c) 2> /dev/null)
|
||||
local rootfs_length=$( ($cmd < "$tar_file" | tar xOf - "$board_dir/root" | wc -c) 2> /dev/null)
|
||||
[ "$rootfs_length" = 0 ] && rootfs_length=
|
||||
local rootfs_type
|
||||
[ "$rootfs_length" ] && rootfs_type="$(identify_tar "$tar_file" "$board_dir/root" "$gz")"
|
||||
[ "$rootfs_length" ] && rootfs_type="$(identify_tar "$tar_file" "$cmd" "$board_dir/root")"
|
||||
|
||||
local ubi_kernel_length
|
||||
if [ "$kernel_length" ]; then
|
||||
@ -337,23 +337,23 @@ nand_upgrade_tar() {
|
||||
if [ "$rootfs_length" ]; then
|
||||
local ubidev="$( nand_find_ubi "${CI_ROOT_UBIPART:-$CI_UBIPART}" )"
|
||||
local root_ubivol="$( nand_find_volume $ubidev "$CI_ROOTPART" )"
|
||||
tar xO${gz}f "$tar_file" "$board_dir/root" | \
|
||||
$cmd < "$tar_file" | tar xOf - "$board_dir/root" | \
|
||||
ubiupdatevol /dev/$root_ubivol -s "$rootfs_length" -
|
||||
fi
|
||||
if [ "$kernel_length" ]; then
|
||||
if [ "$kernel_mtd" ]; then
|
||||
if [ "$jffs2_markers" = 1 ]; then
|
||||
flash_erase -j "/dev/mtd${kernel_mtd}" 0 0
|
||||
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \
|
||||
$cmd < "$tar_file" | tar xOf - "$board_dir/kernel" | \
|
||||
nandwrite "/dev/mtd${kernel_mtd}" -
|
||||
else
|
||||
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \
|
||||
$cmd < "$tar_file" | tar xOf - "$board_dir/kernel" | \
|
||||
mtd write - "$CI_KERNPART"
|
||||
fi
|
||||
else
|
||||
local ubidev="$( nand_find_ubi "${CI_KERN_UBIPART:-$CI_UBIPART}" )"
|
||||
local kern_ubivol="$( nand_find_volume $ubidev "$CI_KERNPART" )"
|
||||
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \
|
||||
$cmd < "$tar_file" | tar xOf - "$board_dir/kernel" | \
|
||||
ubiupdatevol /dev/$kern_ubivol -s "$kernel_length" -
|
||||
fi
|
||||
fi
|
||||
@ -363,9 +363,9 @@ nand_upgrade_tar() {
|
||||
|
||||
nand_verify_if_gzip_file() {
|
||||
local file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
|
||||
if [ "$gz" = z ]; then
|
||||
if [ "$cmd" = zcat ]; then
|
||||
echo "verifying compressed sysupgrade file integrity"
|
||||
if ! gzip -t "$file"; then
|
||||
echo "corrupted compressed sysupgrade file"
|
||||
@ -376,10 +376,10 @@ nand_verify_if_gzip_file() {
|
||||
|
||||
nand_verify_tar_file() {
|
||||
local file="$1"
|
||||
local gz="$2"
|
||||
local cmd="$2"
|
||||
|
||||
echo "verifying sysupgrade tar file integrity"
|
||||
if ! tar xO${gz}f "$file" > /dev/null; then
|
||||
if ! $cmd < "$file" | tar xOf - > /dev/null; then
|
||||
echo "corrupted sysupgrade tar file"
|
||||
return 1
|
||||
fi
|
||||
@ -388,27 +388,27 @@ nand_verify_tar_file() {
|
||||
nand_do_flash_file() {
|
||||
local file="$1"
|
||||
|
||||
local gz="$(identify_if_gzip "$file")"
|
||||
local file_type="$(identify "$file" "" "$gz")"
|
||||
local cmd="$(identify_if_gzip "$file")cat"
|
||||
local file_type="$(identify "$file" "$cmd" "")"
|
||||
|
||||
[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART=rootfs
|
||||
|
||||
case "$file_type" in
|
||||
"fit")
|
||||
nand_verify_if_gzip_file "$file" "$gz" || return 1
|
||||
nand_upgrade_fit "$file" "$gz"
|
||||
nand_verify_if_gzip_file "$file" "$cmd" || return 1
|
||||
nand_upgrade_fit "$file" "$cmd"
|
||||
;;
|
||||
"ubi")
|
||||
nand_verify_if_gzip_file "$file" "$gz" || return 1
|
||||
nand_upgrade_ubinized "$file" "$gz"
|
||||
nand_verify_if_gzip_file "$file" "$cmd" || return 1
|
||||
nand_upgrade_ubinized "$file" "$cmd"
|
||||
;;
|
||||
"ubifs")
|
||||
nand_verify_if_gzip_file "$file" "$gz" || return 1
|
||||
nand_upgrade_ubifs "$file" "$gz"
|
||||
nand_verify_if_gzip_file "$file" "$cmd" || return 1
|
||||
nand_upgrade_ubifs "$file" "$cmd"
|
||||
;;
|
||||
*)
|
||||
nand_verify_tar_file "$file" "$gz" || return 1
|
||||
nand_upgrade_tar "$file" "$gz"
|
||||
nand_verify_tar_file "$file" "$cmd" || return 1
|
||||
nand_upgrade_tar "$file" "$cmd"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@ -419,6 +419,16 @@ nand_do_restore_config() {
|
||||
}
|
||||
|
||||
# Recognize type of passed file and start the upgrade process
|
||||
#
|
||||
# Supported firmware containers:
|
||||
# 1. Raw file
|
||||
# 2. Gzip
|
||||
#
|
||||
# Supported data formats:
|
||||
# 1. Tar with kernel/rootfs
|
||||
# 2. UBI image (built using "ubinized")
|
||||
# 3. UBIFS image (to update UBI volume with)
|
||||
# 4. FIT image (to update UBI volume with)
|
||||
nand_do_upgrade() {
|
||||
local file="$1"
|
||||
|
||||
@ -460,18 +470,18 @@ nand_do_platform_check() {
|
||||
local board_name="$1"
|
||||
local file="$2"
|
||||
|
||||
local gz="$(identify_if_gzip "$file")"
|
||||
local file_type="$(identify "$file" "" "$gz")"
|
||||
local control_length=$( (tar xO${gz}f "$file" "sysupgrade-${board_name//,/_}/CONTROL" | wc -c) 2> /dev/null)
|
||||
local cmd="$(identify_if_gzip "$file")cat"
|
||||
local file_type="$(identify "$file" "$cmd" "")"
|
||||
local control_length=$( ($cmd < "$file" | tar xOf - "sysupgrade-${board_name//,/_}/CONTROL" | wc -c) 2> /dev/null)
|
||||
|
||||
if [ "$control_length" = 0 ]; then
|
||||
control_length=$( (tar xO${gz}f "$file" "sysupgrade-${board_name//_/,}/CONTROL" | wc -c) 2> /dev/null)
|
||||
control_length=$( ($cmd < "$file" | tar xOf - "sysupgrade-${board_name//_/,}/CONTROL" | wc -c) 2> /dev/null)
|
||||
fi
|
||||
|
||||
if [ "$control_length" != 0 ]; then
|
||||
nand_verify_tar_file "$file" "$gz" || return 1
|
||||
nand_verify_tar_file "$file" "$cmd" || return 1
|
||||
else
|
||||
nand_verify_if_gzip_file "$file" "$gz" || return 1
|
||||
nand_verify_if_gzip_file "$file" "$cmd" || return 1
|
||||
if [ "$file_type" != "fit" -a "$file_type" != "ubi" -a "$file_type" != "ubifs" ]; then
|
||||
echo "invalid sysupgrade file"
|
||||
return 1
|
||||
|
@ -118,7 +118,8 @@ domywifi,dw33d)
|
||||
glinet,gl-ar150)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000"
|
||||
;;
|
||||
huawei,ap5030dn)
|
||||
huawei,ap5030dn|\
|
||||
huawei,ap6010dn)
|
||||
ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x20000" "0x20000"
|
||||
;;
|
||||
netgear,wndr3700|\
|
||||
|
@ -85,6 +85,9 @@ zbtlink,zbt-z8103ax)
|
||||
comfast,cf-e393ax)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x80000"
|
||||
;;
|
||||
dlink,aquila-pro-ai-m30-a1)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
|
||||
;;
|
||||
glinet,gl-mt2500|\
|
||||
glinet,gl-mt6000)
|
||||
local envdev=$(find_mmc_part "u-boot-env")
|
||||
@ -93,9 +96,6 @@ glinet,gl-mt6000)
|
||||
glinet,gl-mt3000)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
|
||||
;;
|
||||
dlink,aquila-pro-ai-m30-a1)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
|
||||
;;
|
||||
imou,lc-hx3001-ubootmod)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x80000" "1"
|
||||
;;
|
||||
|
@ -148,6 +148,10 @@ xiaomi,mi-router-cr6608|\
|
||||
xiaomi,mi-router-cr6609)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000"
|
||||
;;
|
||||
netgear,wax214v2)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
||||
ubootenv_add_uci_sys_config "/dev/mtd1" "0x20000" "0x8000" "0x20000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
|
@ -267,7 +267,7 @@
|
||||
+
|
||||
+ partition@380000 {
|
||||
+ label = "fip";
|
||||
+ reg = <0x380000 0x0200000>;
|
||||
+ reg = <0x380000 0x200000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@580000 {
|
43
package/firmware/lantiq/dsl_vr11_firmware_xdsl/Makefile
Normal file
43
package/firmware/lantiq/dsl_vr11_firmware_xdsl/Makefile
Normal file
@ -0,0 +1,43 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dsl_vr11_firmware_xdsl
|
||||
PKG_VERSION:=8.13.1.5.0.7
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.com/prpl-foundation/intel/dsl_vr11_firmware_xdsl.git
|
||||
PKG_SOURCE_VERSION:=99cf1fe7a1711b9aa128eeb8419eab698448df9f
|
||||
PKG_MIRROR_HASH:=7fb37723f8db2558d774ba972f011598d2399609158c5dbc287eca0873b040f1
|
||||
|
||||
PKG_LICENSE:=MaxLinear-Software-License-Agreement
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
ANNEX_A_VER:=8D1507_8D0901
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=VRX518 / VR11 CPE xDSL Annex A firmware
|
||||
URL:=http://www.intel.com
|
||||
DEPENDS:=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
VRX518 / VR11 CPE VDSL and ADSL Annex A firmware
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/LICENSE $(1)/lib/firmware/xcpe_$(ANNEX_A_VER).bin.LICENSE
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/xcpe_$(ANNEX_A_VER).bin $(1)/lib/firmware/
|
||||
ln -s xcpe_$(ANNEX_A_VER).bin $(1)/lib/firmware/vdsl.bin
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
40
package/firmware/lantiq/vrx518_aca_fw/Makefile
Normal file
40
package/firmware/lantiq/vrx518_aca_fw/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=vrx518_aca_fw
|
||||
PKG_VERSION:=1.5.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.com/prpl-foundation/intel/vrx518_aca_fw.git
|
||||
PKG_SOURCE_VERSION:=c509b89c77c26a7df0f0999aabf78b82ca9c9ff0
|
||||
PKG_MIRROR_HASH:=fba91071f18599617434d93e78c67dad91b3e4c5811b77c15961e3a13b506d2e
|
||||
|
||||
PKG_LICENSE:=MaxLinear-Software-License-Agreement
|
||||
PKG_LICENSE_FILES:=platform/xrx500/LICENSE
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=VRX518 ACA firmware
|
||||
URL:=http://www.intel.com
|
||||
DEPENDS:=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
VRX518 ACA firmware
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/09a9
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/platform/xrx500/LICENSE $(1)/lib/firmware/09a9/aca_fw.bin.LICENSE
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/platform/xrx500/aca_fw.bin $(1)/lib/firmware/09a9
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
40
package/firmware/lantiq/vrx518_ppe_fw/Makefile
Normal file
40
package/firmware/lantiq/vrx518_ppe_fw/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=vrx518_ppe_fw
|
||||
PKG_VERSION:=1.3.7
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gitlab.com/prpl-foundation/intel/vrx518_ppe_fw.git
|
||||
PKG_SOURCE_VERSION:=47c48d52ba59df733ab21fd0c18f6d1a7b0e7229
|
||||
PKG_MIRROR_HASH:=33dd15b6c6205b5031498aac9a5a4876f8217aefea06dc511ac60ca1343b50d1
|
||||
|
||||
PKG_LICENSE:=MaxLinear-Software-License-Agreement
|
||||
PKG_LICENSE_FILES:=platform/xrx500/LICENSE
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=VRX518 PPE firmware
|
||||
URL:=http://www.intel.com
|
||||
DEPENDS:=@TARGET_ipq40xx
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/description
|
||||
VRX518 PPE firmware
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/platform/xrx500/LICENSE $(1)/lib/firmware/ppe_fw.bin.LICENSE
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/platform/xrx500/ppe_fw.bin $(1)/lib/firmware/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
@ -27,13 +27,11 @@ PKG_BUILD_FLAGS:=no-mold
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
# TODO this driver depends on the vrx518 dsl firmware, add this dependency if
|
||||
# that ever gets a compatible license
|
||||
define KernelPackage/ltq-vdsl-vr11
|
||||
TITLE:=vdsl driver
|
||||
SECTION:=sys
|
||||
SUBMENU:=Network Devices
|
||||
DEPENDS:=@TARGET_ipq40xx +kmod-ltq-vdsl-vr11-mei
|
||||
DEPENDS:=@TARGET_ipq40xx +kmod-ltq-vdsl-vr11-mei +dsl_vr11_firmware_xdsl
|
||||
FILES:=$(PKG_BUILD_DIR)/src/drv_dsl_cpe_api.ko
|
||||
AUTOLOAD:=$(call AutoLoad,51,drv_dsl_cpe_api)
|
||||
endef
|
||||
|
@ -15,14 +15,12 @@ PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
# TODO this driver depends on the vrx518 aca firmware, add this dependency if
|
||||
# that ever gets a compatible license
|
||||
define KernelPackage/vrx518_ep
|
||||
SECTION:=sys
|
||||
CATEGORY:=Kernel modules
|
||||
SUBMENU:=Network Devices
|
||||
TITLE:=VRX518 EP Support
|
||||
DEPENDS:=@TARGET_ipq40xx
|
||||
DEPENDS:=@TARGET_ipq40xx +vrx518_aca_fw
|
||||
AUTOLOAD:=$(call AutoLoad,26,vrx518)
|
||||
FILES:=$(PKG_BUILD_DIR)/vrx518.ko
|
||||
endef
|
||||
|
@ -28,8 +28,6 @@ include $(INCLUDE_DIR)/package.mk
|
||||
PLAT_DIR:=dcdp
|
||||
PKG_EXTMOD_SUBDIRS:=$(PLAT_DIR)
|
||||
|
||||
# TODO this driver depends on the vrx518 ppe firmware, add this dependency if
|
||||
# that ever gets a compatible license
|
||||
define KernelPackage/$(PKG_NAME)
|
||||
SECTION:=sys
|
||||
CATEGORY:=Kernel modules
|
||||
@ -39,7 +37,7 @@ define KernelPackage/$(PKG_NAME)
|
||||
CONFIG_ATM_LANE=m \
|
||||
CONFIG_ATM_MPOA=m \
|
||||
CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT=y
|
||||
DEPENDS:=@TARGET_ipq40xx +kmod-vrx518_ep +kmod-crypto-md5 +kmod-atm +kmod-ipoa +br2684ctl
|
||||
DEPENDS:=@TARGET_ipq40xx +kmod-vrx518_ep +vrx518_ppe_fw +kmod-crypto-md5 +kmod-atm +kmod-ipoa +br2684ctl
|
||||
AUTOLOAD:=$(call AutoLoad,27,vrx518_tc)
|
||||
FILES:=$(PKG_BUILD_DIR)/$(PLAT_DIR)/$(PKG_NAME).ko
|
||||
endef
|
||||
|
@ -873,6 +873,21 @@ endef
|
||||
$(eval $(call KernelPackage,video-gspca-pac207))
|
||||
|
||||
|
||||
define KernelPackage/video-gspca-pac7302
|
||||
TITLE:=pac7302 webcam support
|
||||
KCONFIG:=CONFIG_USB_GSPCA_PAC7302
|
||||
FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/gspca/gspca_pac7302.ko
|
||||
AUTOLOAD:=$(call AutoProbe,gspca_pac7302)
|
||||
$(call AddDepends/camera-gspca)
|
||||
endef
|
||||
|
||||
define KernelPackage/video-gspca-pac7302/description
|
||||
The Pixart PAC7302 USB Camera Driver (pac7302) kernel module
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,video-gspca-pac7302))
|
||||
|
||||
|
||||
define KernelPackage/video-gspca-pac7311
|
||||
TITLE:=pac7311 webcam support
|
||||
KCONFIG:=CONFIG_USB_GSPCA_PAC7311
|
||||
|
@ -0,0 +1,76 @@
|
||||
--- a/kconf/conf.c
|
||||
+++ b/kconf/conf.c
|
||||
@@ -86,7 +86,7 @@ static int conf_askvalue(struct symbol *
|
||||
enum symbol_type type = sym_get_type(sym);
|
||||
|
||||
if (!sym_has_value(sym))
|
||||
- printf(_("(NEW) "));
|
||||
+ printf("%s", _("(NEW) "));
|
||||
|
||||
line[0] = '\n';
|
||||
line[1] = 0;
|
||||
@@ -282,7 +282,7 @@ static int conf_choice(struct menu *menu
|
||||
if (child->sym->name)
|
||||
printf(" (%s)", child->sym->name);
|
||||
if (!sym_has_value(child->sym))
|
||||
- printf(_(" (NEW)"));
|
||||
+ printf("%s", _(" (NEW)"));
|
||||
printf("\n");
|
||||
}
|
||||
printf(_("%*schoice"), indent - 1, "");
|
||||
@@ -437,7 +437,7 @@ static void check_conf(struct menu *menu
|
||||
}
|
||||
} else {
|
||||
if (!conf_cnt++)
|
||||
- printf(_("*\n* Restart config...\n*\n"));
|
||||
+ printf("%s", _("*\n* Restart config...\n*\n"));
|
||||
rootEntry = menu_get_parent_menu(menu);
|
||||
conf(rootEntry);
|
||||
}
|
||||
@@ -614,7 +614,7 @@ int main(int ac, char **av)
|
||||
name = getenv("KCONFIG_NOSILENTUPDATE");
|
||||
if (name && *name) {
|
||||
fprintf(stderr,
|
||||
- _("\n*** The configuration requires explicit update.\n\n"));
|
||||
+ "%s", _("\n*** The configuration requires explicit update.\n\n"));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -666,22 +666,22 @@ int main(int ac, char **av)
|
||||
* All other commands are only used to generate a config.
|
||||
*/
|
||||
if (conf_get_changed() && conf_write(NULL)) {
|
||||
- fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
|
||||
+ fprintf(stderr, "%s", _("\n*** Error during writing of the configuration.\n\n"));
|
||||
exit(1);
|
||||
}
|
||||
if (conf_write_autoconf()) {
|
||||
- fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
|
||||
+ fprintf(stderr, "%s", _("\n*** Error during update of the configuration.\n\n"));
|
||||
return 1;
|
||||
}
|
||||
} else if (input_mode == savedefconfig) {
|
||||
if (conf_write_defconfig(defconfig_file)) {
|
||||
- fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
|
||||
+ fprintf(stderr, _("\n*** Error while saving defconfig to: %s\n\n"),
|
||||
defconfig_file);
|
||||
return 1;
|
||||
}
|
||||
} else if (input_mode != listnewconfig) {
|
||||
if (conf_write(NULL)) {
|
||||
- fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
|
||||
+ fprintf(stderr, "%s", _("\n*** Error during writing of the configuration.\n\n"));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
--- a/kconf/Makefile
|
||||
+++ b/kconf/Makefile
|
||||
@@ -17,7 +17,7 @@ clean:
|
||||
zconf.tab.c: zconf.lex.c
|
||||
|
||||
%.tab.c: %.y
|
||||
- $(YACC) -o$@ -t -l $<
|
||||
+ $(YACC) -Wno-yacc -o$@ -t -l $<
|
||||
|
||||
%.lex.c: %.l
|
||||
$(LEX) -o$@ -L $<
|
@ -8,11 +8,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libbpf
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_VERSION:=1.4.5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/libbpf/libbpf
|
||||
PKG_MIRROR_HASH:=53f2f290fced9663da309e9e03ddcb0b176a47d39d61639c74dbc555d6b979a8
|
||||
PKG_MIRROR_HASH:=09ad44597d170c12f9f710f7ac4bacfa2b01d110c45810ac0f16c6a3f5d51a0d
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
|
||||
PKG_ABI_VERSION:=$(firstword $(subst .,$(space),$(PKG_VERSION)))
|
||||
|
243
target/linux/ath79/dts/ar9344_huawei_ap6010dn.dts
Normal file
243
target/linux/ath79/dts/ar9344_huawei_ap6010dn.dts
Normal file
@ -0,0 +1,243 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "ar9344.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
model = "Huawei AP6010DN";
|
||||
compatible = "huawei,ap6010dn", "qca,ar9344";
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,9600n8";
|
||||
};
|
||||
|
||||
aliases {
|
||||
led-boot = &led_function_green;
|
||||
led-failsafe = &led_function_red;
|
||||
led-running = &led_function_green;
|
||||
led-upgrade = &led_function_red;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_function_green: led-status-green {
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led_function_red: led-status-red {
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
restart {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
watchdog {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wdt_gpio15>;
|
||||
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <100>;
|
||||
always-running;
|
||||
};
|
||||
|
||||
virtual_flash {
|
||||
compatible = "mtd-concat";
|
||||
devices = <&fwconcat0 &fwconcat1>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "firmware";
|
||||
reg = <0x0 0x1e00000>;
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot-a";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "BootupA";
|
||||
reg = <0x80000 0x20000>;
|
||||
};
|
||||
|
||||
partition@a0000 {
|
||||
label = "BootupB";
|
||||
reg = <0xa0000 0x20000>;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0xc0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@e0000 {
|
||||
label = "BoardData";
|
||||
reg = <0xe0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
// In the vendor layout, there are the "SysImageA" (12 MiB)
|
||||
// and the "ConfigA" (3 MiB) partitions here.
|
||||
fwconcat0: partition@100000 {
|
||||
label = "fwconcat0";
|
||||
reg = <0x100000 0xf00000>;
|
||||
};
|
||||
|
||||
partition@1000000 {
|
||||
label = "u-boot-b";
|
||||
reg = <0x1000000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1080000 {
|
||||
label = "ResultA";
|
||||
reg = <0x1080000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@10a0000 {
|
||||
label = "ResultB";
|
||||
reg = <0x10a0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
// In the vendor layout, there are the "SysImageB" (12 MiB)
|
||||
// and the "ConfigB" (3 MiB) partitions here.
|
||||
fwconcat1: partition@10c0000 {
|
||||
label = "fwconcat1";
|
||||
reg = <0x10c0000 0xf00000>;
|
||||
};
|
||||
|
||||
art: partition@1fc0000 {
|
||||
label = "art";
|
||||
reg = <0x1fc0000 0x40000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_art_2005b: macaddr@2005b {
|
||||
compatible = "mac-base";
|
||||
reg = <0x2005b 0x6>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
cal_art_1000: cal@1000 {
|
||||
reg = <0x1000 0x440>;
|
||||
};
|
||||
|
||||
cal_art_5000: cal@5000 {
|
||||
reg = <0x5000 0x844>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
nvmem-cells = <&macaddr_art_2005b 1>, <&cal_art_1000>;
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
|
||||
ath9k: wifi@0,0 {
|
||||
compatible = "pci168c,0033";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
nvmem-cells = <&macaddr_art_2005b 2>, <&cal_art_5000>;
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
};
|
||||
};
|
||||
|
||||
&ref {
|
||||
clock-frequency = <40000000>;
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
nvmem-cells = <&macaddr_art_2005b 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
|
||||
pll-data = <0x06000000 0x04000101 0x0c001313>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <&phy>;
|
||||
|
||||
gmac-config {
|
||||
device = <&gmac>;
|
||||
rgmii-gmac0 = <1>;
|
||||
rxdv-delay = <3>;
|
||||
rxd-delay = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy: ethernet-phy@18 {
|
||||
reg = <0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
wdt_gpio15: pinmux_wdt_gpio15 {
|
||||
pinctrl-single,bits = <0xc 0x0 0xFF000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&wdt {
|
||||
status = "disabled";
|
||||
};
|
@ -52,6 +52,7 @@ ath79_setup_interfaces()
|
||||
glinet,gl-ar300m-lite|\
|
||||
glinet,gl-usb150|\
|
||||
hak5,wifi-pineapple-nano|\
|
||||
huawei,ap6010dn|\
|
||||
meraki,mr16|\
|
||||
netgear,ex7300|\
|
||||
netgear,ex7300-v2|\
|
||||
|
@ -68,7 +68,8 @@ platform_do_upgrade() {
|
||||
ROOTFS_FILE="root.squashfs"
|
||||
platform_do_upgrade_failsafe_datachk "$1"
|
||||
;;
|
||||
huawei,ap5030dn)
|
||||
huawei,ap5030dn|\
|
||||
huawei,ap6010dn)
|
||||
# Store beginning address of the "firmware" partition
|
||||
# as KernelA address and KernelB address, each to BootupA & BootupB
|
||||
# This is the address from which the bootloader will try to load the kernel.
|
||||
|
@ -24,6 +24,7 @@ define Device/ubnt_amplifi-router-hd
|
||||
UBNT_TYPE := AFi-R
|
||||
UBNT_VERSION := 3.6.3
|
||||
SOC := qca9563
|
||||
DEVICE_VENDOR := Ubiquiti
|
||||
DEVICE_MODEL := AmpliFi Router HD
|
||||
UBNT_CHIP := qca956x
|
||||
DEVICE_PACKAGES += kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct kmod-usb2
|
||||
|
@ -1807,6 +1807,21 @@ define Device/huawei_ap5030dn
|
||||
endef
|
||||
TARGET_DEVICES += huawei_ap5030dn
|
||||
|
||||
define Device/huawei_ap6010dn
|
||||
SOC := ar9344
|
||||
DEVICE_VENDOR := Huawei
|
||||
DEVICE_MODEL := AP6010DN
|
||||
LOADER_TYPE := bin
|
||||
LOADER_FLASH_OFFS := 0x111DC0
|
||||
KERNEL_SIZE := 15360k
|
||||
IMAGE_SIZE := 30720k
|
||||
COMPILE := loader-$(1).bin
|
||||
COMPILE/loader-$(1).bin := loader-okli-compile | pad-to 64k | uImage none
|
||||
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 | loader-okli $(1) 8128
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | uImage none
|
||||
endef
|
||||
TARGET_DEVICES += huawei_ap6010dn
|
||||
|
||||
define Device/iodata_etg3-r
|
||||
SOC := ar9342
|
||||
DEVICE_VENDOR := I-O DATA
|
||||
|
@ -670,6 +670,7 @@
|
||||
#define AR934X_GPIO_FUNC_SPI_CS_0_EN BIT(13)
|
||||
|
||||
#define AR934X_GPIO_OUT_GPIO 0x00
|
||||
#define AR934X_GPIO_OUTSEL_CLK_OBS4 0x14
|
||||
|
||||
#define QCA955X_GPIO_OUTSEL_CLK_OBS5 0x54
|
||||
|
||||
|
@ -182,34 +182,40 @@ static inline void mr18_init(void)
|
||||
static inline void mr18_init(void) { }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BOARD_HUAWEI_AP5030DN
|
||||
static inline void ap5030dn_init(void)
|
||||
#if defined(CONFIG_BOARD_HUAWEI_AP5030DN) || defined(CONFIG_BOARD_HUAWEI_AP6010DN)
|
||||
static inline void huawei_ap_init(void)
|
||||
{
|
||||
const unsigned int ap5030dn_watchdog_gpio = 15;
|
||||
const unsigned int watchdog_gpio = 15;
|
||||
unsigned int gpiobase, reg;
|
||||
|
||||
gpiobase = KSEG1ADDR(AR71XX_GPIO_BASE);
|
||||
|
||||
printf("Huawei AP5030DN\n");
|
||||
printf("Huawei AP\n");
|
||||
|
||||
reg = READREG(gpiobase + AR71XX_GPIO_REG_OE);
|
||||
WRITEREG(gpiobase + AR71XX_GPIO_REG_OE,
|
||||
reg & ~(1 << ap5030dn_watchdog_gpio));
|
||||
reg & ~(1 << watchdog_gpio));
|
||||
|
||||
/* Set GPIO15 MUX to output CLK_OBS5 (= CPU_CLK/4)
|
||||
* to keep the watchdog happy until wdt-gpio takes over
|
||||
* or CLK_OBS4 (= AHB_CLK/2) to keep the watchdog happy
|
||||
* until wdt-gpio takes over
|
||||
*/
|
||||
reg = READREG(gpiobase + AR934X_GPIO_REG_OUT_FUNC3);
|
||||
#if defined(CONFIG_BOARD_HUAWEI_AP5030DN)
|
||||
WRITEREG(gpiobase + AR934X_GPIO_REG_OUT_FUNC3,
|
||||
reg | (QCA955X_GPIO_OUTSEL_CLK_OBS5 << 24));
|
||||
#else if defined(CONFIG_BOARD_HUAWEI_AP6010DN)
|
||||
WRITEREG(gpiobase + AR934X_GPIO_REG_OUT_FUNC3,
|
||||
reg | (AR934X_GPIO_OUTSEL_CLK_OBS4 << 24));
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
static inline void ap5030dn_init(void) { }
|
||||
static inline void huawei_ap_init(void) {}
|
||||
#endif
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
tlwr1043nd_init();
|
||||
mr18_init();
|
||||
ap5030dn_init();
|
||||
huawei_ap_init();
|
||||
}
|
||||
|
@ -751,7 +751,7 @@ SVN-Revision: 35130
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4205,14 +4205,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4214,14 +4214,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1487,6 +1487,109 @@ command_cleanup:
|
||||
@@ -1497,6 +1497,109 @@ command_cleanup:
|
||||
}
|
||||
|
||||
/*
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* non-error returns are a promise to giveback() the urb later
|
||||
* we drop ownership so next owner (or urb unlink) can get it
|
||||
*/
|
||||
@@ -5316,6 +5419,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5326,6 +5429,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1576,7 +1576,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
@@ -1586,7 +1586,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
return;
|
||||
}
|
||||
ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -764,7 +764,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -763,7 +763,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (!nvmem)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
};
|
||||
|
||||
static DEFINE_MUTEX(nvmem_mutex);
|
||||
@@ -1122,7 +1123,8 @@ struct nvmem_device *devm_nvmem_device_g
|
||||
@@ -1121,7 +1122,8 @@ struct nvmem_device *devm_nvmem_device_g
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_nvmem_device_get);
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
{
|
||||
struct nvmem_cell *cell;
|
||||
const char *name = NULL;
|
||||
@@ -1141,6 +1143,7 @@ static struct nvmem_cell *nvmem_create_c
|
||||
@@ -1140,6 +1142,7 @@ static struct nvmem_cell *nvmem_create_c
|
||||
|
||||
cell->id = name;
|
||||
cell->entry = entry;
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
return cell;
|
||||
}
|
||||
@@ -1179,7 +1182,7 @@ nvmem_cell_get_from_lookup(struct device
|
||||
@@ -1178,7 +1181,7 @@ nvmem_cell_get_from_lookup(struct device
|
||||
__nvmem_device_put(nvmem);
|
||||
cell = ERR_PTR(-ENOENT);
|
||||
} else {
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (IS_ERR(cell))
|
||||
__nvmem_device_put(nvmem);
|
||||
}
|
||||
@@ -1227,15 +1230,27 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
@@ -1226,15 +1229,27 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
struct nvmem_device *nvmem;
|
||||
struct nvmem_cell_entry *cell_entry;
|
||||
struct nvmem_cell *cell;
|
||||
@ -105,7 +105,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
nvmem_np = of_get_parent(cell_np);
|
||||
if (!nvmem_np) {
|
||||
@@ -1257,7 +1272,7 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
@@ -1256,7 +1271,7 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
return ERR_PTR(-ENOENT);
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (IS_ERR(cell))
|
||||
__nvmem_device_put(nvmem);
|
||||
|
||||
@@ -1410,8 +1425,8 @@ static void nvmem_shift_read_buffer_in_p
|
||||
@@ -1409,8 +1424,8 @@ static void nvmem_shift_read_buffer_in_p
|
||||
}
|
||||
|
||||
static int __nvmem_cell_read(struct nvmem_device *nvmem,
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -1425,7 +1440,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1424,7 +1439,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
nvmem_shift_read_buffer_in_place(cell, buf);
|
||||
|
||||
if (nvmem->cell_post_process) {
|
||||
@ -134,7 +134,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
cell->offset, buf, cell->bytes);
|
||||
if (rc)
|
||||
return rc;
|
||||
@@ -1460,7 +1475,7 @@ void *nvmem_cell_read(struct nvmem_cell
|
||||
@@ -1459,7 +1474,7 @@ void *nvmem_cell_read(struct nvmem_cell
|
||||
if (!buf)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (rc) {
|
||||
kfree(buf);
|
||||
return ERR_PTR(rc);
|
||||
@@ -1773,7 +1788,7 @@ ssize_t nvmem_device_cell_read(struct nv
|
||||
@@ -1772,7 +1787,7 @@ ssize_t nvmem_device_cell_read(struct nv
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -515,7 +515,7 @@ static int nvmem_add_cells(struct nvmem_
|
||||
@@ -514,7 +514,7 @@ static int nvmem_add_cells(struct nvmem_
|
||||
int ncells)
|
||||
{
|
||||
struct nvmem_cell_entry **cells;
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
cells = kcalloc(ncells, sizeof(*cells), GFP_KERNEL);
|
||||
if (!cells)
|
||||
@@ -525,28 +525,22 @@ static int nvmem_add_cells(struct nvmem_
|
||||
@@ -524,28 +524,22 @@ static int nvmem_add_cells(struct nvmem_
|
||||
cells[i] = kzalloc(sizeof(**cells), GFP_KERNEL);
|
||||
if (!cells[i]) {
|
||||
rval = -ENOMEM;
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -502,6 +502,36 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
@@ -501,6 +501,36 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
}
|
||||
|
||||
/**
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
* nvmem_add_cells() - Add cell information to an nvmem device
|
||||
*
|
||||
* @nvmem: nvmem device to add cells to.
|
||||
@@ -514,34 +544,15 @@ static int nvmem_add_cells(struct nvmem_
|
||||
@@ -513,34 +543,15 @@ static int nvmem_add_cells(struct nvmem_
|
||||
const struct nvmem_cell_info *info,
|
||||
int ncells)
|
||||
{
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -688,15 +688,14 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -687,15 +687,14 @@ static int nvmem_validate_keepouts(struc
|
||||
|
||||
static int nvmem_add_cells_from_of(struct nvmem_device *nvmem)
|
||||
{
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
addr = of_get_property(child, "reg", &len);
|
||||
if (!addr)
|
||||
continue;
|
||||
@@ -706,40 +705,24 @@ static int nvmem_add_cells_from_of(struc
|
||||
@@ -705,40 +704,24 @@ static int nvmem_add_cells_from_of(struc
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
|
||||
void *val, size_t bytes)
|
||||
{
|
||||
@@ -728,6 +732,101 @@ static int nvmem_add_cells_from_of(struc
|
||||
@@ -727,6 +731,101 @@ static int nvmem_add_cells_from_of(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
/**
|
||||
* nvmem_register() - Register a nvmem device for given nvmem_config.
|
||||
* Also creates a binary entry in /sys/bus/nvmem/devices/dev-name/nvmem
|
||||
@@ -834,6 +933,12 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -833,6 +932,12 @@ struct nvmem_device *nvmem_register(cons
|
||||
goto err_put_device;
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->cells) {
|
||||
rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
|
||||
if (rval)
|
||||
@@ -854,12 +959,17 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -853,12 +958,17 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@ -236,7 +236,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->compat)
|
||||
nvmem_sysfs_remove_compat(nvmem, config);
|
||||
err_put_device:
|
||||
@@ -881,6 +991,7 @@ static void nvmem_device_release(struct
|
||||
@@ -880,6 +990,7 @@ static void nvmem_device_release(struct
|
||||
device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
|
||||
|
||||
nvmem_device_remove_all_cells(nvmem);
|
||||
@ -244,7 +244,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
device_unregister(&nvmem->dev);
|
||||
}
|
||||
|
||||
@@ -1246,6 +1357,15 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
@@ -1245,6 +1356,15 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -755,7 +755,7 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
|
||||
@@ -754,7 +754,7 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
|
||||
static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
|
||||
{
|
||||
struct device_node *layout_np, *np = nvmem->dev.of_node;
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
layout_np = of_get_child_by_name(np, "nvmem-layout");
|
||||
if (!layout_np)
|
||||
@@ -938,6 +938,13 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -937,6 +937,13 @@ struct nvmem_device *nvmem_register(cons
|
||||
* pointer will be NULL and nvmem_layout_put() will be a noop.
|
||||
*/
|
||||
nvmem->layout = config->layout ?: nvmem_layout_get(nvmem);
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
if (config->cells) {
|
||||
rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
|
||||
@@ -970,6 +977,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -969,6 +976,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
err_remove_cells:
|
||||
nvmem_device_remove_all_cells(nvmem);
|
||||
nvmem_layout_put(nvmem->layout);
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#include <linux/slab.h>
|
||||
|
||||
struct nvmem_device {
|
||||
@@ -761,6 +762,13 @@ static struct nvmem_layout *nvmem_layout
|
||||
@@ -760,6 +761,13 @@ static struct nvmem_layout *nvmem_layout
|
||||
if (!layout_np)
|
||||
return NULL;
|
||||
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct device_node *np;
|
||||
struct nvmem_device *nvmem;
|
||||
struct list_head node;
|
||||
@@ -470,6 +471,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
@@ -469,6 +470,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
cell->offset = info->offset;
|
||||
cell->bytes = info->bytes;
|
||||
cell->name = info->name;
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
cell->bit_offset = info->bit_offset;
|
||||
cell->nbits = info->nbits;
|
||||
@@ -1563,6 +1565,13 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1562,6 +1564,13 @@ static int __nvmem_cell_read(struct nvme
|
||||
if (cell->bit_offset || cell->nbits)
|
||||
nvmem_shift_read_buffer_in_place(cell, buf);
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (nvmem->cell_post_process) {
|
||||
rc = nvmem->cell_post_process(nvmem->priv, id, index,
|
||||
cell->offset, buf, cell->bytes);
|
||||
@@ -1671,6 +1680,14 @@ static int __nvmem_cell_entry_write(stru
|
||||
@@ -1670,6 +1679,14 @@ static int __nvmem_cell_entry_write(stru
|
||||
(cell->bit_offset == 0 && len != cell->bytes))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -695,6 +695,7 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -694,6 +694,7 @@ static int nvmem_validate_keepouts(struc
|
||||
|
||||
static int nvmem_add_cells_from_of(struct nvmem_device *nvmem)
|
||||
{
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct device *dev = &nvmem->dev;
|
||||
struct device_node *child;
|
||||
const __be32 *addr;
|
||||
@@ -724,6 +725,9 @@ static int nvmem_add_cells_from_of(struc
|
||||
@@ -723,6 +724,9 @@ static int nvmem_add_cells_from_of(struc
|
||||
|
||||
info.np = of_node_get(child);
|
||||
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct gpio_desc *wp_gpio;
|
||||
struct nvmem_layout *layout;
|
||||
void *priv;
|
||||
@@ -903,7 +902,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -902,7 +901,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
nvmem->type = config->type;
|
||||
nvmem->reg_read = config->reg_read;
|
||||
nvmem->reg_write = config->reg_write;
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
nvmem->keepout = config->keepout;
|
||||
nvmem->nkeepout = config->nkeepout;
|
||||
if (config->of_node)
|
||||
@@ -1575,13 +1573,6 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1574,13 +1572,6 @@ static int __nvmem_cell_read(struct nvme
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct device_node *np;
|
||||
struct nvmem_device *nvmem;
|
||||
struct list_head node;
|
||||
@@ -471,6 +472,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
@@ -470,6 +471,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
cell->bytes = info->bytes;
|
||||
cell->name = info->name;
|
||||
cell->read_post_process = info->read_post_process;
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
cell->bit_offset = info->bit_offset;
|
||||
cell->nbits = info->nbits;
|
||||
@@ -1568,7 +1570,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1567,7 +1569,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
nvmem_shift_read_buffer_in_place(cell, buf);
|
||||
|
||||
if (cell->read_post_process) {
|
||||
|
@ -51,7 +51,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
int bytes;
|
||||
int bit_offset;
|
||||
int nbits;
|
||||
@@ -469,6 +470,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
@@ -468,6 +469,7 @@ static int nvmem_cell_info_to_nvmem_cell
|
||||
{
|
||||
cell->nvmem = nvmem;
|
||||
cell->offset = info->offset;
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
cell->bytes = info->bytes;
|
||||
cell->name = info->name;
|
||||
cell->read_post_process = info->read_post_process;
|
||||
@@ -1560,7 +1562,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1559,7 +1561,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
{
|
||||
int rc;
|
||||
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
if (rc)
|
||||
return rc;
|
||||
@@ -1571,7 +1573,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1570,7 +1572,7 @@ static int __nvmem_cell_read(struct nvme
|
||||
|
||||
if (cell->read_post_process) {
|
||||
rc = cell->read_post_process(cell->priv, id, index,
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
@@ -1594,14 +1596,15 @@ static int __nvmem_cell_read(struct nvme
|
||||
@@ -1593,14 +1595,15 @@ static int __nvmem_cell_read(struct nvme
|
||||
*/
|
||||
void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -696,7 +696,7 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -695,7 +695,7 @@ static int nvmem_validate_keepouts(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
{
|
||||
struct nvmem_layout *layout = nvmem->layout;
|
||||
struct device *dev = &nvmem->dev;
|
||||
@@ -704,7 +704,7 @@ static int nvmem_add_cells_from_of(struc
|
||||
@@ -703,7 +703,7 @@ static int nvmem_add_cells_from_of(struc
|
||||
const __be32 *addr;
|
||||
int len, ret;
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct nvmem_cell_info info = {0};
|
||||
|
||||
addr = of_get_property(child, "reg", &len);
|
||||
@@ -742,6 +742,28 @@ static int nvmem_add_cells_from_of(struc
|
||||
@@ -741,6 +741,28 @@ static int nvmem_add_cells_from_of(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
int __nvmem_layout_register(struct nvmem_layout *layout, struct module *owner)
|
||||
{
|
||||
layout->owner = owner;
|
||||
@@ -972,7 +994,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -971,7 +993,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@@ -982,6 +1004,10 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -981,6 +1003,10 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -998,17 +998,17 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -997,17 +997,17 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -786,10 +786,10 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
|
||||
@@ -785,10 +785,10 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
|
||||
|
||||
static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -772,12 +772,16 @@ int __nvmem_layout_register(struct nvmem
|
||||
@@ -771,12 +771,16 @@ int __nvmem_layout_register(struct nvmem
|
||||
list_add(&layout->node, &nvmem_layouts);
|
||||
spin_unlock(&nvmem_layout_lock);
|
||||
|
||||
|
@ -95,7 +95,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
.stride = sizeof(u32),
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -998,9 +998,11 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -997,9 +997,11 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@ -132,7 +132,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
imx_ocotp_nvmem_config.priv = priv;
|
||||
--- a/drivers/nvmem/meson-efuse.c
|
||||
+++ b/drivers/nvmem/meson-efuse.c
|
||||
@@ -74,6 +74,7 @@ static int meson_efuse_probe(struct plat
|
||||
@@ -80,6 +80,7 @@ static int meson_efuse_probe(struct plat
|
||||
|
||||
econfig->dev = dev;
|
||||
econfig->name = dev_name(dev);
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
mtd->nvmem = nvmem_register(&config);
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -936,7 +936,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -935,7 +935,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
nvmem->nkeepout = config->nkeepout;
|
||||
if (config->of_node)
|
||||
nvmem->dev.of_node = config->of_node;
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -797,6 +797,12 @@ static struct nvmem_layout *nvmem_layout
|
||||
@@ -796,6 +796,12 @@ static struct nvmem_layout *nvmem_layout
|
||||
if (!layout_np)
|
||||
return NULL;
|
||||
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -848,14 +848,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
@@ -847,14 +847,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_OF)
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -817,7 +817,7 @@ static int nvmem_add_cells_from_layout(s
|
||||
@@ -816,7 +816,7 @@ static int nvmem_add_cells_from_layout(s
|
||||
int ret;
|
||||
|
||||
if (layout && layout->add_cells) {
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -676,7 +676,6 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -675,7 +675,6 @@ static int nvmem_validate_keepouts(struc
|
||||
|
||||
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct device *dev = &nvmem->dev;
|
||||
struct device_node *child;
|
||||
const __be32 *addr;
|
||||
@@ -706,8 +705,8 @@ static int nvmem_add_cells_from_dt(struc
|
||||
@@ -705,8 +704,8 @@ static int nvmem_add_cells_from_dt(struc
|
||||
|
||||
info.np = of_node_get(child);
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
ret = nvmem_add_one_cell(nvmem, &info);
|
||||
kfree(info.name);
|
||||
@@ -896,6 +895,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -895,6 +894,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
|
||||
kref_init(&nvmem->refcnt);
|
||||
INIT_LIST_HEAD(&nvmem->cells);
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
|
||||
void *val, size_t bytes)
|
||||
{
|
||||
@@ -741,97 +738,22 @@ static int nvmem_add_cells_from_fixed_la
|
||||
@@ -740,97 +737,22 @@ static int nvmem_add_cells_from_fixed_la
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
const void *nvmem_layout_get_match_data(struct nvmem_device *nvmem,
|
||||
struct nvmem_layout *layout)
|
||||
{
|
||||
@@ -839,7 +761,7 @@ const void *nvmem_layout_get_match_data(
|
||||
@@ -838,7 +760,7 @@ const void *nvmem_layout_get_match_data(
|
||||
const struct of_device_id *match;
|
||||
|
||||
layout_np = of_nvmem_layout_get_container(nvmem);
|
||||
@ -198,7 +198,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
return match ? match->data : NULL;
|
||||
}
|
||||
@@ -951,19 +873,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -950,19 +872,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
goto err_put_device;
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->cells) {
|
||||
rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
|
||||
if (rval)
|
||||
@@ -984,24 +893,24 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -983,24 +892,24 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@ -249,7 +249,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->compat)
|
||||
nvmem_sysfs_remove_compat(nvmem, config);
|
||||
err_put_device:
|
||||
@@ -1023,7 +932,7 @@ static void nvmem_device_release(struct
|
||||
@@ -1022,7 +931,7 @@ static void nvmem_device_release(struct
|
||||
device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
|
||||
|
||||
nvmem_device_remove_all_cells(nvmem);
|
||||
@ -258,7 +258,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
device_unregister(&nvmem->dev);
|
||||
}
|
||||
|
||||
@@ -1325,6 +1234,12 @@ nvmem_cell_get_from_lookup(struct device
|
||||
@@ -1324,6 +1233,12 @@ nvmem_cell_get_from_lookup(struct device
|
||||
return cell;
|
||||
}
|
||||
|
||||
@ -271,7 +271,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#if IS_ENABLED(CONFIG_OF)
|
||||
static struct nvmem_cell_entry *
|
||||
nvmem_find_cell_entry_by_node(struct nvmem_device *nvmem, struct device_node *np)
|
||||
@@ -1343,6 +1258,18 @@ nvmem_find_cell_entry_by_node(struct nvm
|
||||
@@ -1342,6 +1257,18 @@ nvmem_find_cell_entry_by_node(struct nvm
|
||||
return cell;
|
||||
}
|
||||
|
||||
@ -290,7 +290,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
/**
|
||||
* of_nvmem_cell_get() - Get a nvmem cell from given device node and cell id
|
||||
*
|
||||
@@ -1405,16 +1332,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
@@ -1404,16 +1331,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
return ERR_CAST(nvmem);
|
||||
}
|
||||
|
||||
@ -322,7 +322,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
return cell;
|
||||
}
|
||||
@@ -1528,6 +1468,7 @@ void nvmem_cell_put(struct nvmem_cell *c
|
||||
@@ -1527,6 +1467,7 @@ void nvmem_cell_put(struct nvmem_cell *c
|
||||
|
||||
kfree(cell);
|
||||
__nvmem_device_put(nvmem);
|
||||
@ -330,7 +330,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_cell_put);
|
||||
|
||||
@@ -2105,11 +2046,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
@@ -2104,11 +2045,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
|
||||
static int __init nvmem_init(void)
|
||||
{
|
||||
|
@ -111,7 +111,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
static struct bin_attribute bin_attr_nvmem_eeprom_compat = {
|
||||
.attr = {
|
||||
.name = "eeprom",
|
||||
@@ -381,6 +428,68 @@ static void nvmem_sysfs_remove_compat(st
|
||||
@@ -380,6 +427,68 @@ static void nvmem_sysfs_remove_compat(st
|
||||
device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
|
||||
}
|
||||
|
||||
@ -180,7 +180,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#else /* CONFIG_NVMEM_SYSFS */
|
||||
|
||||
static int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
|
||||
@@ -740,11 +849,25 @@ static int nvmem_add_cells_from_fixed_la
|
||||
@@ -739,11 +848,25 @@ static int nvmem_add_cells_from_fixed_la
|
||||
|
||||
int nvmem_layout_register(struct nvmem_layout *layout)
|
||||
{
|
||||
@ -207,7 +207,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_layout_register);
|
||||
|
||||
@@ -903,10 +1026,20 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -902,10 +1025,20 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_dev;
|
||||
|
||||
|
@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -855,7 +855,7 @@ int nvmem_layout_register(struct nvmem_l
|
||||
@@ -854,7 +854,7 @@ int nvmem_layout_register(struct nvmem_l
|
||||
return -EINVAL;
|
||||
|
||||
/* Populate the cells */
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -877,19 +877,6 @@ void nvmem_layout_unregister(struct nvme
|
||||
@@ -876,19 +876,6 @@ void nvmem_layout_unregister(struct nvme
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_layout_unregister);
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -2164,6 +2164,19 @@ const char *nvmem_dev_name(struct nvmem_
|
||||
@@ -2163,6 +2163,19 @@ const char *nvmem_dev_name(struct nvmem_
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
mtd->nvmem = nvmem_register(&config);
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -941,7 +941,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -940,7 +940,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
nvmem->nkeepout = config->nkeepout;
|
||||
if (config->of_node)
|
||||
nvmem->dev.of_node = config->of_node;
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -847,14 +847,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
@@ -846,14 +846,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_OF)
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -816,7 +816,7 @@ static int nvmem_add_cells_from_layout(s
|
||||
@@ -815,7 +815,7 @@ static int nvmem_add_cells_from_layout(s
|
||||
int ret;
|
||||
|
||||
if (layout && layout->add_cells) {
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -675,7 +675,6 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -674,7 +674,6 @@ static int nvmem_validate_keepouts(struc
|
||||
|
||||
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
struct device *dev = &nvmem->dev;
|
||||
struct device_node *child;
|
||||
const __be32 *addr;
|
||||
@@ -705,8 +704,8 @@ static int nvmem_add_cells_from_dt(struc
|
||||
@@ -704,8 +703,8 @@ static int nvmem_add_cells_from_dt(struc
|
||||
|
||||
info.np = of_node_get(child);
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
ret = nvmem_add_one_cell(nvmem, &info);
|
||||
kfree(info.name);
|
||||
@@ -895,6 +894,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -894,6 +893,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
|
||||
kref_init(&nvmem->refcnt);
|
||||
INIT_LIST_HEAD(&nvmem->cells);
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
|
||||
void *val, size_t bytes)
|
||||
{
|
||||
@@ -740,97 +737,22 @@ static int nvmem_add_cells_from_fixed_la
|
||||
@@ -739,97 +736,22 @@ static int nvmem_add_cells_from_fixed_la
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
const void *nvmem_layout_get_match_data(struct nvmem_device *nvmem,
|
||||
struct nvmem_layout *layout)
|
||||
{
|
||||
@@ -838,7 +760,7 @@ const void *nvmem_layout_get_match_data(
|
||||
@@ -837,7 +759,7 @@ const void *nvmem_layout_get_match_data(
|
||||
const struct of_device_id *match;
|
||||
|
||||
layout_np = of_nvmem_layout_get_container(nvmem);
|
||||
@ -198,7 +198,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
return match ? match->data : NULL;
|
||||
}
|
||||
@@ -950,19 +872,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -949,19 +871,6 @@ struct nvmem_device *nvmem_register(cons
|
||||
goto err_put_device;
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->cells) {
|
||||
rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
|
||||
if (rval)
|
||||
@@ -983,24 +892,24 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -982,24 +891,24 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
@ -249,7 +249,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
if (config->compat)
|
||||
nvmem_sysfs_remove_compat(nvmem, config);
|
||||
err_put_device:
|
||||
@@ -1022,7 +931,7 @@ static void nvmem_device_release(struct
|
||||
@@ -1021,7 +930,7 @@ static void nvmem_device_release(struct
|
||||
device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
|
||||
|
||||
nvmem_device_remove_all_cells(nvmem);
|
||||
@ -258,7 +258,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
device_unregister(&nvmem->dev);
|
||||
}
|
||||
|
||||
@@ -1324,6 +1233,12 @@ nvmem_cell_get_from_lookup(struct device
|
||||
@@ -1323,6 +1232,12 @@ nvmem_cell_get_from_lookup(struct device
|
||||
return cell;
|
||||
}
|
||||
|
||||
@ -271,7 +271,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#if IS_ENABLED(CONFIG_OF)
|
||||
static struct nvmem_cell_entry *
|
||||
nvmem_find_cell_entry_by_node(struct nvmem_device *nvmem, struct device_node *np)
|
||||
@@ -1342,6 +1257,18 @@ nvmem_find_cell_entry_by_node(struct nvm
|
||||
@@ -1341,6 +1256,18 @@ nvmem_find_cell_entry_by_node(struct nvm
|
||||
return cell;
|
||||
}
|
||||
|
||||
@ -290,7 +290,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
/**
|
||||
* of_nvmem_cell_get() - Get a nvmem cell from given device node and cell id
|
||||
*
|
||||
@@ -1404,16 +1331,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
@@ -1403,16 +1330,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
|
||||
return ERR_CAST(nvmem);
|
||||
}
|
||||
|
||||
@ -322,7 +322,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
return cell;
|
||||
}
|
||||
@@ -1527,6 +1467,7 @@ void nvmem_cell_put(struct nvmem_cell *c
|
||||
@@ -1526,6 +1466,7 @@ void nvmem_cell_put(struct nvmem_cell *c
|
||||
|
||||
kfree(cell);
|
||||
__nvmem_device_put(nvmem);
|
||||
@ -330,7 +330,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_cell_put);
|
||||
|
||||
@@ -2104,11 +2045,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
@@ -2103,11 +2044,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
|
||||
static int __init nvmem_init(void)
|
||||
{
|
||||
|
@ -111,7 +111,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
static struct bin_attribute bin_attr_nvmem_eeprom_compat = {
|
||||
.attr = {
|
||||
.name = "eeprom",
|
||||
@@ -380,6 +427,68 @@ static void nvmem_sysfs_remove_compat(st
|
||||
@@ -379,6 +426,68 @@ static void nvmem_sysfs_remove_compat(st
|
||||
device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
|
||||
}
|
||||
|
||||
@ -180,7 +180,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#else /* CONFIG_NVMEM_SYSFS */
|
||||
|
||||
static int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
|
||||
@@ -739,11 +848,25 @@ static int nvmem_add_cells_from_fixed_la
|
||||
@@ -738,11 +847,25 @@ static int nvmem_add_cells_from_fixed_la
|
||||
|
||||
int nvmem_layout_register(struct nvmem_layout *layout)
|
||||
{
|
||||
@ -207,7 +207,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_layout_register);
|
||||
|
||||
@@ -902,10 +1025,20 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -901,10 +1024,20 @@ struct nvmem_device *nvmem_register(cons
|
||||
if (rval)
|
||||
goto err_remove_dev;
|
||||
|
||||
|
@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -854,7 +854,7 @@ int nvmem_layout_register(struct nvmem_l
|
||||
@@ -853,7 +853,7 @@ int nvmem_layout_register(struct nvmem_l
|
||||
return -EINVAL;
|
||||
|
||||
/* Populate the cells */
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -876,19 +876,6 @@ void nvmem_layout_unregister(struct nvme
|
||||
@@ -875,19 +875,6 @@ void nvmem_layout_unregister(struct nvme
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_layout_unregister);
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -2163,6 +2163,19 @@ const char *nvmem_dev_name(struct nvmem_
|
||||
@@ -2162,6 +2162,19 @@ const char *nvmem_dev_name(struct nvmem_
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvmem_dev_name);
|
||||
|
||||
|
@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -4367,6 +4367,7 @@ int wake_up_state(struct task_struct *p,
|
||||
@@ -4366,6 +4366,7 @@ int wake_up_state(struct task_struct *p,
|
||||
{
|
||||
return try_to_wake_up(p, state, 0);
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!pe)
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -4447,6 +4447,8 @@ static const struct seq_operations vmall
|
||||
@@ -4455,6 +4455,8 @@ static const struct seq_operations vmall
|
||||
|
||||
static int __init proc_vmalloc_init(void)
|
||||
{
|
||||
|
@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -4487,6 +4487,7 @@ int wake_up_state(struct task_struct *p,
|
||||
@@ -4486,6 +4486,7 @@ int wake_up_state(struct task_struct *p,
|
||||
{
|
||||
return try_to_wake_up(p, state, 0);
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ string.
|
||||
#include <linux/init.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/module.h>
|
||||
@@ -780,6 +783,62 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -779,6 +782,62 @@ static int nvmem_validate_keepouts(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ string.
|
||||
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
struct device *dev = &nvmem->dev;
|
||||
@@ -814,6 +873,25 @@ static int nvmem_add_cells_from_dt(struc
|
||||
@@ -813,6 +872,25 @@ static int nvmem_add_cells_from_dt(struc
|
||||
if (nvmem->fixup_dt_cell_info)
|
||||
nvmem->fixup_dt_cell_info(nvmem, &info);
|
||||
|
||||
|
@ -33,7 +33,7 @@ string.
|
||||
#include <linux/init.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/module.h>
|
||||
@@ -779,6 +782,62 @@ static int nvmem_validate_keepouts(struc
|
||||
@@ -778,6 +781,62 @@ static int nvmem_validate_keepouts(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ string.
|
||||
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
struct device *dev = &nvmem->dev;
|
||||
@@ -813,6 +872,25 @@ static int nvmem_add_cells_from_dt(struc
|
||||
@@ -812,6 +871,25 @@ static int nvmem_add_cells_from_dt(struc
|
||||
if (nvmem->fixup_dt_cell_info)
|
||||
nvmem->fixup_dt_cell_info(nvmem, &info);
|
||||
|
||||
|
@ -4,7 +4,7 @@ Subject: [PATCH] UGW_SW-29163: ATM oam support
|
||||
|
||||
--- a/drivers/net/ppp/ppp_generic.c
|
||||
+++ b/drivers/net/ppp/ppp_generic.c
|
||||
@@ -2953,6 +2953,22 @@ char *ppp_dev_name(struct ppp_channel *c
|
||||
@@ -2968,6 +2968,22 @@ char *ppp_dev_name(struct ppp_channel *c
|
||||
return name;
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ Subject: [PATCH] UGW_SW-29163: ATM oam support
|
||||
|
||||
/*
|
||||
* Disconnect a channel from the generic layer.
|
||||
@@ -3599,6 +3615,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
|
||||
@@ -3614,6 +3630,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
|
||||
EXPORT_SYMBOL(ppp_channel_index);
|
||||
EXPORT_SYMBOL(ppp_unit_number);
|
||||
EXPORT_SYMBOL(ppp_dev_name);
|
||||
|
@ -0,0 +1,31 @@
|
||||
From 9283477e28913c1e7625c0a8d6959745e2431533 Mon Sep 17 00:00:00 2001
|
||||
From: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Date: Sat, 13 Jul 2024 19:09:20 +0200
|
||||
Subject: [PATCH] net: ethernet: lantiq_etop: remove redundant device name
|
||||
setup
|
||||
|
||||
The same name is set when allocating the netdevice structure in the
|
||||
alloc_etherdev_mq()->alloc_etherrdev_mqs() function. Therefore, there
|
||||
is no need to manually set it.
|
||||
|
||||
This fixes CheckPatch warnings:
|
||||
WARNING: Prefer strscpy over strcpy - see: https://github.com/KSPP/linux/issues/88
|
||||
strcpy(dev->name, "eth%d");
|
||||
|
||||
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
Link: https://patch.msgid.link/20240713170920.863171-1-olek2@wp.pl
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/lantiq_etop.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/lantiq_etop.c
|
||||
+++ b/drivers/net/ethernet/lantiq_etop.c
|
||||
@@ -675,7 +675,6 @@ ltq_etop_probe(struct platform_device *p
|
||||
err = -ENOMEM;
|
||||
goto err_out;
|
||||
}
|
||||
- strcpy(dev->name, "eth%d");
|
||||
dev->netdev_ops = <q_eth_netdev_ops;
|
||||
dev->ethtool_ops = <q_etop_ethtool_ops;
|
||||
priv = netdev_priv(dev);
|
@ -5,8 +5,8 @@ Subject: [PATCH 28/36] NET: lantiq: various etop fixes
|
||||
|
||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
---
|
||||
drivers/net/ethernet/lantiq_etop.c | 555 +++++++++++++++++++++++++-----------
|
||||
1 file changed, 389 insertions(+), 166 deletions(-)
|
||||
drivers/net/ethernet/lantiq_etop.c | 530 ++++++++++++++++++++---------
|
||||
1 file changed, 375 insertions(+), 155 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/lantiq_etop.c
|
||||
+++ b/drivers/net/ethernet/lantiq_etop.c
|
||||
@ -66,10 +66,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
-#define LTQ_ETOP_IGPLEN 0x16080
|
||||
+
|
||||
+#define MAC_CFG_MASK 0xfff
|
||||
+#define MAC_CFG_CGEN (1 << 11)
|
||||
+#define MAC_CFG_DUPLEX (1 << 2)
|
||||
+#define MAC_CFG_SPEED (1 << 1)
|
||||
+#define MAC_CFG_LINK (1 << 0)
|
||||
+#define MAC_CFG_CGEN BIT(11)
|
||||
+#define MAC_CFG_DUPLEX BIT(2)
|
||||
+#define MAC_CFG_SPEED BIT(1)
|
||||
+#define MAC_CFG_LINK BIT(0)
|
||||
|
||||
#define MAX_DMA_CHAN 0x8
|
||||
#define MAX_DMA_CRC_LEN 0x4
|
||||
@ -89,11 +89,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
-#define IS_TX(x) ((x) == LTQ_ETOP_TX_CHANNEL)
|
||||
-#define IS_RX(x) ((x) == LTQ_ETOP_RX_CHANNEL)
|
||||
+#define ETOP_CFG_MASK 0xfff
|
||||
+#define ETOP_CFG_FEN0 (1 << 8)
|
||||
+#define ETOP_CFG_SEN0 (1 << 6)
|
||||
+#define ETOP_CFG_OFF1 (1 << 3)
|
||||
+#define ETOP_CFG_REMII0 (1 << 1)
|
||||
+#define ETOP_CFG_OFF0 (1 << 0)
|
||||
+#define ETOP_CFG_FEN0 BIT(8)
|
||||
+#define ETOP_CFG_SEN0 BIT(6)
|
||||
+#define ETOP_CFG_OFF1 BIT(3)
|
||||
+#define ETOP_CFG_REMII0 BIT(1)
|
||||
+#define ETOP_CFG_OFF0 BIT(0)
|
||||
+
|
||||
+#define LTQ_GBIT_MDIO_CTL 0xCC
|
||||
+#define LTQ_GBIT_MDIO_DATA 0xd0
|
||||
@ -103,8 +103,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+#define LTQ_GBIT_PMAC_RX_IPG 0xa8
|
||||
+#define LTQ_GBIT_RGMII_CTL 0x78
|
||||
+
|
||||
+#define PMAC_HD_CTL_AS (1 << 19)
|
||||
+#define PMAC_HD_CTL_RXSH (1 << 22)
|
||||
+#define PMAC_HD_CTL_AS BIT(19)
|
||||
+#define PMAC_HD_CTL_RXSH BIT(22)
|
||||
+
|
||||
+/* Switch Enable (0=disable, 1=enable) */
|
||||
+#define GCTL0_SE 0x80000000
|
||||
@ -170,14 +170,13 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
int tx_burst_len;
|
||||
int rx_burst_len;
|
||||
|
||||
- spinlock_t lock;
|
||||
+ int tx_irq;
|
||||
+ int rx_irq;
|
||||
+
|
||||
+ unsigned char mac[6];
|
||||
+ phy_interface_t mii_mode;
|
||||
+
|
||||
+ spinlock_t lock;
|
||||
+
|
||||
spinlock_t lock;
|
||||
+
|
||||
+ struct clk *clk_ppe;
|
||||
+ struct clk *clk_switch;
|
||||
@ -186,7 +185,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
};
|
||||
|
||||
+static int ltq_etop_mdio_wr(struct mii_bus *bus, int phy_addr,
|
||||
+ int phy_reg, u16 phy_data);
|
||||
+ int phy_reg, u16 phy_data);
|
||||
+
|
||||
static int
|
||||
ltq_etop_alloc_skb(struct ltq_etop_chan *ch)
|
||||
@ -256,12 +255,12 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -202,9 +278,10 @@ static irqreturn_t
|
||||
@@ -202,9 +278,11 @@ static irqreturn_t
|
||||
ltq_etop_dma_irq(int irq, void *_priv)
|
||||
{
|
||||
struct ltq_etop_priv *priv = _priv;
|
||||
- int ch = irq - LTQ_DMA_CH0_INT;
|
||||
-
|
||||
|
||||
- napi_schedule(&priv->ch[ch].napi);
|
||||
+ if (irq == priv->txch.dma.irq)
|
||||
+ napi_schedule(&priv->txch.napi);
|
||||
@ -270,16 +269,16 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@@ -216,7 +293,7 @@ ltq_etop_free_channel(struct net_device
|
||||
@@ -216,7 +294,7 @@ ltq_etop_free_channel(struct net_device
|
||||
ltq_dma_free(&ch->dma);
|
||||
if (ch->dma.irq)
|
||||
free_irq(ch->dma.irq, priv);
|
||||
- if (IS_RX(ch->idx)) {
|
||||
+ if (ch == &priv->txch) {
|
||||
int desc;
|
||||
+ if (ch == &priv->rxch) {
|
||||
struct ltq_dma_channel *dma = &ch->dma;
|
||||
|
||||
for (desc = 0; desc < LTQ_DESC_NUM; desc++)
|
||||
@@ -228,80 +305,135 @@ static void
|
||||
for (dma->desc = 0; dma->desc < LTQ_DESC_NUM; dma->desc++)
|
||||
@@ -228,80 +306,137 @@ static void
|
||||
ltq_etop_hw_exit(struct net_device *dev)
|
||||
{
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
@ -320,13 +319,14 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ ltq_gbit_w32_mask(0x300, 0, LTQ_GBIT_GCTL0);
|
||||
+ /* disable pmac & dmac headers */
|
||||
+ ltq_gbit_w32_mask(PMAC_HD_CTL_AS | PMAC_HD_CTL_RXSH, 0,
|
||||
+ LTQ_GBIT_PMAC_HD_CTL);
|
||||
+ LTQ_GBIT_PMAC_HD_CTL);
|
||||
+ /* Due to traffic halt when burst length 8,
|
||||
+ replace default IPG value with 0x3B */
|
||||
+ *replace default IPG value with 0x3B
|
||||
+ */
|
||||
+ ltq_gbit_w32(0x3B, LTQ_GBIT_PMAC_RX_IPG);
|
||||
+ /* set mdc clock to 2.5 MHz */
|
||||
+ ltq_gbit_w32_mask(MDC_CLOCK_MASK, 4 << MDC_CLOCK_OFFSET,
|
||||
+ LTQ_GBIT_RGMII_CTL);
|
||||
+ LTQ_GBIT_RGMII_CTL);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -336,11 +336,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
- int i;
|
||||
- int err;
|
||||
+ phy_interface_t mii_mode = priv->mii_mode;
|
||||
|
||||
- ltq_pmu_enable(PMU_PPE);
|
||||
+
|
||||
+ clk_enable(priv->clk_ppe);
|
||||
|
||||
- switch (priv->pldata->mii_mode) {
|
||||
- ltq_pmu_enable(PMU_PPE);
|
||||
+ if (of_machine_is_compatible("lantiq,ar9")) {
|
||||
+ ltq_etop_gbit_init(dev);
|
||||
+ /* force the etops link to the gbit to MII */
|
||||
@ -349,7 +348,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ ltq_etop_w32_mask(MDIO_CFG_MASK, 0, LTQ_ETOP_MDIO_CFG);
|
||||
+ ltq_etop_w32_mask(MAC_CFG_MASK, MAC_CFG_CGEN | MAC_CFG_DUPLEX |
|
||||
+ MAC_CFG_SPEED | MAC_CFG_LINK, LTQ_ETOP_MAC_CFG);
|
||||
+
|
||||
|
||||
- switch (priv->pldata->mii_mode) {
|
||||
+ switch (mii_mode) {
|
||||
case PHY_INTERFACE_MODE_RMII:
|
||||
- ltq_etop_w32_mask(ETOP_MII_MASK, ETOP_MII_REVERSE,
|
||||
@ -373,7 +373,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ /* enable clock for internal PHY */
|
||||
+ clk_enable(priv->clk_ephycgu);
|
||||
+ /* we need to write this magic to the internal phy to
|
||||
+ make it work */
|
||||
+ * make it work
|
||||
+ */
|
||||
+ ltq_etop_mdio_wr(NULL, 0x8, 0x12, 0xC020);
|
||||
+ pr_info("Selected EPHY mode\n");
|
||||
+ break;
|
||||
@ -464,12 +465,12 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -320,6 +452,39 @@ static const struct ethtool_ops ltq_etop
|
||||
@@ -320,6 +455,39 @@ static const struct ethtool_ops ltq_etop
|
||||
};
|
||||
|
||||
static int
|
||||
+ltq_etop_mdio_wr_xr9(struct mii_bus *bus, int phy_addr,
|
||||
+ int phy_reg, u16 phy_data)
|
||||
+ int phy_reg, u16 phy_data)
|
||||
+{
|
||||
+ u32 val = MDIO_XR9_REQUEST | MDIO_XR9_WRITE |
|
||||
+ (phy_data << MDIO_XR9_WR_OFFSET) |
|
||||
@ -504,7 +505,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
ltq_etop_mdio_wr(struct mii_bus *bus, int phy_addr, int phy_reg, u16 phy_data)
|
||||
{
|
||||
u32 val = MDIO_REQUEST |
|
||||
@@ -327,9 +492,9 @@ ltq_etop_mdio_wr(struct mii_bus *bus, in
|
||||
@@ -327,9 +495,9 @@ ltq_etop_mdio_wr(struct mii_bus *bus, in
|
||||
((phy_reg & MDIO_REG_MASK) << MDIO_REG_OFFSET) |
|
||||
phy_data;
|
||||
|
||||
@ -516,7 +517,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -340,12 +505,12 @@ ltq_etop_mdio_rd(struct mii_bus *bus, in
|
||||
@@ -340,12 +508,12 @@ ltq_etop_mdio_rd(struct mii_bus *bus, in
|
||||
((phy_addr & MDIO_ADDR_MASK) << MDIO_ADDR_OFFSET) |
|
||||
((phy_reg & MDIO_REG_MASK) << MDIO_REG_OFFSET);
|
||||
|
||||
@ -533,7 +534,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -361,7 +526,10 @@ ltq_etop_mdio_probe(struct net_device *d
|
||||
@@ -361,7 +529,10 @@ ltq_etop_mdio_probe(struct net_device *d
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
struct phy_device *phydev;
|
||||
|
||||
@ -545,7 +546,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
if (!phydev) {
|
||||
netdev_err(dev, "no PHY found\n");
|
||||
@@ -369,14 +537,17 @@ ltq_etop_mdio_probe(struct net_device *d
|
||||
@@ -369,14 +540,17 @@ ltq_etop_mdio_probe(struct net_device *d
|
||||
}
|
||||
|
||||
phydev = phy_connect(dev, phydev_name(phydev),
|
||||
@ -565,7 +566,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
phy_attached_info(phydev);
|
||||
|
||||
@@ -397,8 +568,13 @@ ltq_etop_mdio_init(struct net_device *de
|
||||
@@ -397,8 +571,13 @@ ltq_etop_mdio_init(struct net_device *de
|
||||
}
|
||||
|
||||
priv->mii_bus->priv = dev;
|
||||
@ -581,7 +582,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
priv->mii_bus->name = "ltq_mii";
|
||||
snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
|
||||
priv->pdev->name, priv->pdev->id);
|
||||
@@ -435,18 +611,21 @@ static int
|
||||
@@ -435,18 +614,21 @@ static int
|
||||
ltq_etop_open(struct net_device *dev)
|
||||
{
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
@ -613,7 +614,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
netif_tx_start_all_queues(dev);
|
||||
return 0;
|
||||
}
|
||||
@@ -455,18 +634,19 @@ static int
|
||||
@@ -455,18 +637,19 @@ static int
|
||||
ltq_etop_stop(struct net_device *dev)
|
||||
{
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
@ -643,7 +644,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -476,15 +656,16 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
@@ -476,15 +659,16 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
int queue = skb_get_queue_mapping(skb);
|
||||
struct netdev_queue *txq = netdev_get_tx_queue(dev, queue);
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
@ -660,11 +661,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
- if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) || ch->skb[ch->dma.desc]) {
|
||||
+ if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) ||
|
||||
+ priv->txch.skb[priv->txch.dma.desc]) {
|
||||
+ priv->txch.skb[priv->txch.dma.desc]) {
|
||||
netdev_err(dev, "tx ring full\n");
|
||||
netif_tx_stop_queue(txq);
|
||||
return NETDEV_TX_BUSY;
|
||||
@@ -492,7 +673,7 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
@@ -492,7 +676,7 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
|
||||
/* dma needs to start on a burst length value aligned address */
|
||||
byte_offset = CPHYSADDR(skb->data) % (priv->tx_burst_len * 4);
|
||||
@ -673,7 +674,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
netif_trans_update(dev);
|
||||
|
||||
@@ -503,11 +684,11 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
@@ -503,11 +687,11 @@ ltq_etop_tx(struct sk_buff *skb, struct
|
||||
wmb();
|
||||
desc->ctl = LTQ_DMA_OWN | LTQ_DMA_SOP | LTQ_DMA_EOP |
|
||||
LTQ_DMA_TX_OFFSET(byte_offset) | (len & LTQ_DMA_SIZE_MASK);
|
||||
@ -688,7 +689,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
netif_tx_stop_queue(txq);
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
@@ -518,11 +699,14 @@ ltq_etop_change_mtu(struct net_device *d
|
||||
@@ -518,11 +702,14 @@ ltq_etop_change_mtu(struct net_device *d
|
||||
{
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
@ -704,7 +705,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
return 0;
|
||||
@@ -575,6 +759,9 @@ ltq_etop_init(struct net_device *dev)
|
||||
@@ -575,6 +762,9 @@ ltq_etop_init(struct net_device *dev)
|
||||
if (err)
|
||||
goto err_hw;
|
||||
ltq_etop_change_mtu(dev, 1500);
|
||||
@ -714,7 +715,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
memcpy(&mac, &priv->pldata->mac, sizeof(struct sockaddr));
|
||||
if (!is_valid_ether_addr(mac.sa_data)) {
|
||||
@@ -592,9 +779,10 @@ ltq_etop_init(struct net_device *dev)
|
||||
@@ -592,9 +782,10 @@ ltq_etop_init(struct net_device *dev)
|
||||
dev->addr_assign_type = NET_ADDR_RANDOM;
|
||||
|
||||
ltq_etop_set_multicast_list(dev);
|
||||
@ -724,11 +725,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ if (!ltq_etop_mdio_init(dev))
|
||||
+ dev->ethtool_ops = <q_etop_ethtool_ops;
|
||||
+ else
|
||||
+ pr_warn("etop: mdio probe failed\n");;
|
||||
+ pr_warn("etop: mdio probe failed\n");
|
||||
return 0;
|
||||
|
||||
err_netdev:
|
||||
@@ -614,6 +802,9 @@ ltq_etop_tx_timeout(struct net_device *d
|
||||
@@ -614,6 +805,9 @@ ltq_etop_tx_timeout(struct net_device *d
|
||||
err = ltq_etop_hw_init(dev);
|
||||
if (err)
|
||||
goto err_hw;
|
||||
@ -738,7 +739,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
netif_trans_update(dev);
|
||||
netif_wake_queue(dev);
|
||||
return;
|
||||
@@ -637,14 +828,18 @@ static const struct net_device_ops ltq_e
|
||||
@@ -637,14 +831,18 @@ static const struct net_device_ops ltq_e
|
||||
.ndo_tx_timeout = ltq_etop_tx_timeout,
|
||||
};
|
||||
|
||||
@ -761,7 +762,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res) {
|
||||
@@ -670,19 +865,55 @@ ltq_etop_probe(struct platform_device *p
|
||||
@@ -670,18 +868,54 @@ ltq_etop_probe(struct platform_device *p
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
@ -777,7 +778,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+ ltq_gbit_membase = devm_ioremap(&pdev->dev,
|
||||
+ gbit_res->start, resource_size(gbit_res));
|
||||
+ gbit_res->start, resource_size(gbit_res));
|
||||
+ if (!ltq_gbit_membase) {
|
||||
+ dev_err(&pdev->dev, "failed to remap gigabit switch %d\n",
|
||||
+ pdev->id);
|
||||
@ -787,7 +788,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
}
|
||||
+
|
||||
+ dev = alloc_etherdev_mq(sizeof(struct ltq_etop_priv), 4);
|
||||
strcpy(dev->name, "eth%d");
|
||||
dev->netdev_ops = <q_eth_netdev_ops;
|
||||
- dev->ethtool_ops = <q_etop_ethtool_ops;
|
||||
priv = netdev_priv(dev);
|
||||
@ -823,7 +823,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
spin_lock_init(&priv->lock);
|
||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||
|
||||
@@ -698,15 +929,10 @@ ltq_etop_probe(struct platform_device *p
|
||||
@@ -697,15 +931,10 @@ ltq_etop_probe(struct platform_device *p
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
@ -843,7 +843,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
err = register_netdev(dev);
|
||||
if (err)
|
||||
@@ -735,31 +961,22 @@ ltq_etop_remove(struct platform_device *
|
||||
@@ -734,31 +963,22 @@ ltq_etop_remove(struct platform_device *
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -203,7 +203,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+early_param("ethaddr", setup_ethaddr);
|
||||
--- a/drivers/net/ethernet/lantiq_etop.c
|
||||
+++ b/drivers/net/ethernet/lantiq_etop.c
|
||||
@@ -763,7 +763,11 @@ ltq_etop_init(struct net_device *dev)
|
||||
@@ -766,7 +766,11 @@ ltq_etop_init(struct net_device *dev)
|
||||
if (err)
|
||||
goto err_hw;
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Johann Neuhauser <johann@it-neuhauser.de>
|
||||
|
||||
#include <asm/checksum.h>
|
||||
|
||||
@@ -558,7 +559,8 @@ static int
|
||||
@@ -561,7 +562,8 @@ static int
|
||||
ltq_etop_mdio_init(struct net_device *dev)
|
||||
{
|
||||
struct ltq_etop_priv *priv = netdev_priv(dev);
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Johann Neuhauser <johann@it-neuhauser.de>
|
||||
|
||||
priv->mii_bus = mdiobus_alloc();
|
||||
if (!priv->mii_bus) {
|
||||
@@ -578,7 +580,15 @@ ltq_etop_mdio_init(struct net_device *de
|
||||
@@ -581,7 +583,15 @@ ltq_etop_mdio_init(struct net_device *de
|
||||
priv->mii_bus->name = "ltq_mii";
|
||||
snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
|
||||
priv->pdev->name, priv->pdev->id);
|
||||
|
@ -24,7 +24,7 @@
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
memory {
|
||||
memory@40000000 {
|
||||
reg = <0 0x40000000 0 0x10000000>;
|
||||
};
|
||||
|
||||
@ -156,7 +156,7 @@
|
||||
spi-tx-bus-width = <4>;
|
||||
spi-rx-bus-width = <4>;
|
||||
|
||||
partitions: partitions {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
@ -517,7 +517,7 @@ endef
|
||||
TARGET_DEVICES += cmcc_rax3000m
|
||||
|
||||
define Device/comfast_cf-e393ax
|
||||
DEVICE_VENDOR := Comfast
|
||||
DEVICE_VENDOR := COMFAST
|
||||
DEVICE_MODEL := CF-E393AX
|
||||
DEVICE_DTS := mt7981a-comfast-cf-e393ax
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
|
201
target/linux/ramips/dts/mt7620a_wavlink_wl-wn531g3-a2.dts
Normal file
201
target/linux/ramips/dts/mt7620a_wavlink_wl-wn531g3-a2.dts
Normal file
@ -0,0 +1,201 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "mt7620a.dtsi"
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
compatible = "wavlink,wl-wn531g3", "ralink,mt7620a-soc";
|
||||
model = "Wavlink WL-WN531G3";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_status_blue;
|
||||
led-failsafe = &led_status_red;
|
||||
led-running = &led_status_blue;
|
||||
led-upgrade = &led_status_red;
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
|
||||
turbo {
|
||||
label = "turbo";
|
||||
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_1>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
|
||||
touchlink {
|
||||
label = "touchlink";
|
||||
gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status_blue: led_status_blue {
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led_status_red: led_status_red {
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x30000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x30000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
factory: partition@40000 {
|
||||
label = "factory";
|
||||
reg = <0x40000 0x10000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_factory_28: macaddr@28 {
|
||||
reg = <0x28 0x6>;
|
||||
};
|
||||
|
||||
macaddr_factory_2e: macaddr@2e {
|
||||
reg = <0x2e 0x6>;
|
||||
};
|
||||
|
||||
eeprom_radio_0: eeprom@0 {
|
||||
reg = <0x0 0x200>;
|
||||
};
|
||||
|
||||
eeprom_radio_8000: eeprom@8000 {
|
||||
reg = <0x8000 0x200>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
partition@50000 {
|
||||
compatible = "denx,uimage";
|
||||
label = "firmware";
|
||||
reg = <0x50000 0x7b0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ðernet {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgmii1_pins>, <&rgmii2_pins>, <&mdio_pins>;
|
||||
|
||||
nvmem-cells = <&macaddr_factory_28>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
|
||||
mediatek,portmap = "llllw";
|
||||
|
||||
port@4 {
|
||||
status = "okay";
|
||||
phy-handle = <&phy4>;
|
||||
phy-mode = "rgmii";
|
||||
|
||||
nvmem-cells = <&macaddr_factory_2e>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
port@5 {
|
||||
status = "okay";
|
||||
phy-handle = <&phy5>;
|
||||
phy-mode = "rgmii";
|
||||
};
|
||||
|
||||
mdio-bus {
|
||||
status = "okay";
|
||||
|
||||
phy4: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
phy-mode = "rgmii";
|
||||
};
|
||||
|
||||
phy5: ethernet-phy@5 {
|
||||
reg = <5>;
|
||||
phy-mode = "rgmii";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
mt76@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&eeprom_radio_8000>;
|
||||
nvmem-cell-names = "eeprom";
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gsw {
|
||||
mediatek,port4-gmac;
|
||||
};
|
||||
|
||||
&wmac {
|
||||
nvmem-cells = <&eeprom_radio_0>;
|
||||
nvmem-cell-names = "eeprom";
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "i2c", "uartf";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
247
target/linux/ramips/dts/mt7621_keenetic_kn-3510.dts
Normal file
247
target/linux/ramips/dts/mt7621_keenetic_kn-3510.dts
Normal file
@ -0,0 +1,247 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
compatible = "keenetic,kn-3510", "mediatek,mt7621-soc";
|
||||
model = "Keenetic KN-3510";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_status_green;
|
||||
led-failsafe = &led_status_green;
|
||||
led-running = &led_status_green;
|
||||
led-upgrade = &led_status_green;
|
||||
label-mac-device = &gmac0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
function = LED_FUNCTION_WPS;
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_green: led-1 {
|
||||
function = LED_FUNCTION_STATUS;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
|
||||
fn1 {
|
||||
label = "fn1";
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
};
|
||||
};
|
||||
|
||||
virtual_flash {
|
||||
compatible = "mtd-concat";
|
||||
devices = <&firmware1 &storage1 &firmware2 &storage2>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "kernel";
|
||||
reg = <0x0 0x400000>;
|
||||
};
|
||||
|
||||
partition@400000 {
|
||||
label = "ubi";
|
||||
reg = <0x400000 0x0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "uart3", "jtag";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "u-config";
|
||||
reg = <0x80000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
label = "rf-eeprom";
|
||||
reg = <0x100000 0x80000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory_0: eeprom@0 {
|
||||
reg = <0x0 0xe00>;
|
||||
};
|
||||
|
||||
macaddr_factory_4: macaddr@4 {
|
||||
reg = <0x4 0x6>;
|
||||
};
|
||||
|
||||
macaddr_factory_a: macaddr@a {
|
||||
reg = <0xa 0x6>;
|
||||
};
|
||||
|
||||
precal_factory_e10: precal@e10 {
|
||||
reg = <0xe10 0x19c10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
firmware1: partition@180000 {
|
||||
label = "firmware_1";
|
||||
reg = <0x180000 0x1a40000>;
|
||||
};
|
||||
|
||||
partition@1bc0000 {
|
||||
label = "config_1";
|
||||
reg = <0x1bc0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1dc0000 {
|
||||
label = "storage_legacy";
|
||||
reg = <0x1dc0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1fc0000 {
|
||||
label = "dump";
|
||||
reg = <0x1fc0000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
storage1: partition@2000000 {
|
||||
label = "storage_a";
|
||||
reg = <0x2000000 0x1fc0000>;
|
||||
};
|
||||
|
||||
partition@3fc0000 {
|
||||
label = "u-state";
|
||||
reg = <0x3fc0000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@4040000 {
|
||||
label = "u-config_res";
|
||||
reg = <0x4040000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40c0000 {
|
||||
label = "rf-eeprom_res";
|
||||
reg = <0x40c0000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
firmware2: partition@4140000 {
|
||||
label = "firmware_2";
|
||||
reg = <0x4140000 0x1a40000>;
|
||||
};
|
||||
|
||||
partition@5b80000 {
|
||||
label = "config_2";
|
||||
reg = <0x5d00000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
storage2: partition@5d80000 {
|
||||
label = "storage_b";
|
||||
reg = <0x5d80000 0x2200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ðphy0 {
|
||||
/delete-property/ interrupts;
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
nvmem-cells = <&macaddr_factory_4>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
status = "okay";
|
||||
label = "wan";
|
||||
phy-handle = <ðphy0>;
|
||||
|
||||
nvmem-cells = <&macaddr_factory_a>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@3 {
|
||||
status = "okay";
|
||||
label = "lan";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&eeprom_factory_0>, <&precal_factory_e10>;
|
||||
nvmem-cell-names = "eeprom", "precal";
|
||||
mediatek,disable-radar-background;
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
status = "disabled";
|
||||
};
|
228
target/linux/ramips/dts/mt7621_netgear_wax214v2.dts
Normal file
228
target/linux/ramips/dts/mt7621_netgear_wax214v2.dts
Normal file
@ -0,0 +1,228 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
compatible = "netgear,wax214v2", "mediatek,mt7621-soc";
|
||||
model = "Netgear WAX214v2";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_power_green;
|
||||
led-failsafe = &led_power_amber;
|
||||
led-running = &led_power_green;
|
||||
led-upgrade = &led_power_blue;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_power_green: power_green {
|
||||
function = LED_FUNCTION_POWER;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_power_blue: power_blue {
|
||||
function = LED_FUNCTION_POWER;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_power_amber: power_amber {
|
||||
function = LED_FUNCTION_POWER;
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
wifin_green {
|
||||
function = LED_FUNCTION_WLAN_2GHZ;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "phy0radio";
|
||||
};
|
||||
|
||||
wifia_green {
|
||||
function = LED_FUNCTION_WLAN_5GHZ;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "phy1radio";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "Bootloader";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "Config";
|
||||
reg = <0x80000 0x80000>;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
label = "Factory";
|
||||
reg = <0x100000 0x80000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory_0: eeprom@0 {
|
||||
reg = <0x0 0xe00>;
|
||||
};
|
||||
|
||||
precal_factory_e10: precal@e10 {
|
||||
reg = <0xe10 0x19c10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
partition@180000 {
|
||||
label = "firmware";
|
||||
reg = <0x180000 0x2600000>;
|
||||
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "kernel";
|
||||
reg = <0x0 0x400000>;
|
||||
};
|
||||
|
||||
partition@400000 {
|
||||
label = "ubi";
|
||||
reg = <0x400000 0x2200000>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@2780000 {
|
||||
label = "firmware_backup";
|
||||
reg = <0x2780000 0x2600000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@4d80000 {
|
||||
label = "CFG";
|
||||
reg = <0x4d80000 0x800000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@5580000 {
|
||||
label = "RAE";
|
||||
reg = <0x5580000 0x400000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@5980000 {
|
||||
label = "POT";
|
||||
reg = <0x5980000 0x100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@5a80000 {
|
||||
label = "Language";
|
||||
reg = <0x5a80000 0x400000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@5e80000 {
|
||||
label = "Traffic";
|
||||
reg = <0x5e80000 0x200000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6080000 {
|
||||
label = "Cert";
|
||||
reg = <0x6080000 0x100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6180000 {
|
||||
label = "NTGRcryptK";
|
||||
reg = <0x6180000 0x100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6280000 {
|
||||
label = "NTGRcryptD";
|
||||
reg = <0x6280000 0x500000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6780000 {
|
||||
label = "LOG";
|
||||
reg = <0x6780000 0x100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6880000 {
|
||||
label = "User_data";
|
||||
reg = <0x6880000 0x640000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&eeprom_factory_0>, <&precal_factory_e10>;
|
||||
nvmem-cell-names = "eeprom", "precal";
|
||||
};
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "uart3", "uart2", "jtag";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@0 {
|
||||
status = "okay";
|
||||
label = "lan";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
status = "disabled";
|
||||
};
|
@ -1232,7 +1232,7 @@ define Device/tplink_archer-c2-v1
|
||||
DEVICE_MODEL := Archer C2
|
||||
DEVICE_VARIANT := v1
|
||||
DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci \
|
||||
kmod-usb-ledtrig-usbport kmod-switch-rtl8366-smi kmod-switch-rtl8367b
|
||||
kmod-usb-ledtrig-usbport kmod-switch-rtl8367b
|
||||
endef
|
||||
TARGET_DEVICES += tplink_archer-c2-v1
|
||||
|
||||
@ -1361,6 +1361,16 @@ define Device/wavlink_wl-wn531g3
|
||||
endef
|
||||
TARGET_DEVICES += wavlink_wl-wn531g3
|
||||
|
||||
|
||||
define Device/wavlink_wl-wn531g3-a2
|
||||
SOC := mt7620a
|
||||
IMAGE_SIZE := 7872k
|
||||
DEVICE_VENDOR := Wavlink
|
||||
DEVICE_MODEL := WL-WN531G3-A2
|
||||
DEVICE_PACKAGES := kmod-mt76x2 kmod-phy-realtek kmod-usb2 kmod-usb-ohci
|
||||
endef
|
||||
TARGET_DEVICES += wavlink_wl-wn531g3-a2
|
||||
|
||||
define Device/wavlink_wl-wn535k1
|
||||
SOC := mt7620a
|
||||
IMAGE_SIZE := 7360k
|
||||
@ -1617,7 +1627,7 @@ define Device/zyxel_keenetic-viva
|
||||
DEVICE_VENDOR := ZyXEL
|
||||
DEVICE_MODEL := Keenetic Viva
|
||||
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
|
||||
kmod-switch-rtl8366-smi kmod-switch-rtl8367b
|
||||
kmod-switch-rtl8367b
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := $$(sysupgrade_bin) | pad-to 64k | check-size | \
|
||||
zyimage -d 8997 -v "ZyXEL Keenetic Viva"
|
||||
|
@ -605,7 +605,7 @@ define Device/comfast_cf-e390ax
|
||||
$(Device/dsa-migration)
|
||||
$(Device/uimage-lzma-loader)
|
||||
IMAGE_SIZE := 15808k
|
||||
DEVICE_VENDOR := ComFast
|
||||
DEVICE_VENDOR := COMFAST
|
||||
DEVICE_MODEL := CF-E390AX
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
|
||||
IMAGES += factory.bin
|
||||
@ -619,7 +619,7 @@ define Device/comfast_cf-ew72-v2
|
||||
$(Device/dsa-migration)
|
||||
$(Device/uimage-lzma-loader)
|
||||
IMAGE_SIZE := 15808k
|
||||
DEVICE_VENDOR := ComFast
|
||||
DEVICE_VENDOR := COMFAST
|
||||
DEVICE_MODEL := CF-EW72 V2
|
||||
DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap \
|
||||
-uboot-envtools
|
||||
@ -1662,6 +1662,19 @@ define Device/keenetic_kn-3010
|
||||
endef
|
||||
TARGET_DEVICES += keenetic_kn-3010
|
||||
|
||||
define Device/keenetic_kn-3510
|
||||
$(Device/nand)
|
||||
$(Device/uimage-lzma-loader)
|
||||
IMAGE_SIZE := 121088k
|
||||
DEVICE_VENDOR := Keenetic
|
||||
DEVICE_MODEL := KN-3510
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
|
||||
check-size | zyimage -d 0x803510 -v "KN-3510"
|
||||
endef
|
||||
TARGET_DEVICES += keenetic_kn-3510
|
||||
|
||||
define Device/lenovo_newifi-d1
|
||||
$(Device/dsa-migration)
|
||||
$(Device/uimage-lzma-loader)
|
||||
@ -2126,6 +2139,24 @@ define Device/netgear_wax202
|
||||
endef
|
||||
TARGET_DEVICES += netgear_wax202
|
||||
|
||||
define Device/netgear_wax214v2
|
||||
$(Device/nand)
|
||||
DEVICE_VENDOR := NETGEAR
|
||||
DEVICE_MODEL := WAX214v2
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware
|
||||
NETGEAR_ENC_MODEL := WAX214v2
|
||||
NETGEAR_ENC_REGION := US
|
||||
IMAGE_SIZE := 38912k
|
||||
KERNEL_LOADADDR := 0x82000000
|
||||
KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
|
||||
append-squashfs4-fakeroot
|
||||
IMAGES += factory.img
|
||||
IMAGE/factory.img := append-kernel | pad-to $$(KERNEL_SIZE) | \
|
||||
append-ubi | check-size | netgear-encrypted-factory
|
||||
endef
|
||||
TARGET_DEVICES += netgear_wax214v2
|
||||
|
||||
define Device/netgear_wndr3700-v5
|
||||
$(Device/dsa-migration)
|
||||
$(Device/netgear_sercomm_nor)
|
||||
|
@ -135,7 +135,7 @@ TARGET_DEVICES += buffalo_wcr-1166ds
|
||||
define Device/comfast_cf-wr617ac
|
||||
IMAGE_SIZE := 7872k
|
||||
DTS := CF-WR617AC
|
||||
DEVICE_VENDOR := Comfast
|
||||
DEVICE_VENDOR := COMFAST
|
||||
DEVICE_MODEL := CF-WR617AC
|
||||
DEVICE_PACKAGES := kmod-mt76x2 kmod-rt2800-pci
|
||||
endef
|
||||
|
@ -258,6 +258,10 @@ ramips_setup_interfaces()
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan:4" "1:lan:3" "2:lan:2" "5:lan:1" "4:wan" "6@eth0"
|
||||
;;
|
||||
wavlink,wl-wn531g3-a2)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan:4" "1:lan:3" "2:lan:2" "5:lan:1" "4:wan" "6@eth0"
|
||||
;;
|
||||
wavlink,wl-wn535k1)
|
||||
ucidef_add_switch "switch0" \
|
||||
"2:lan:2" "5:lan:1" "4:wan" "6@eth0"
|
||||
@ -432,6 +436,7 @@ ramips_setup_macs()
|
||||
wan_mac=$(macaddr_add "$(mtd_get_mac_binary rom 0xf100)" 1)
|
||||
;;
|
||||
wavlink,wl-wn531g3|\
|
||||
wavlink,wl-wn531g3-a2|\
|
||||
zbtlink,zbt-we1026-5g-16m)
|
||||
label_mac=$(mtd_get_mac_binary factory 0x4)
|
||||
;;
|
||||
|
@ -48,6 +48,7 @@ ramips_setup_interfaces()
|
||||
mikrotik,routerboard-m11g|\
|
||||
netgear,eax12|\
|
||||
netgear,ex6150|\
|
||||
netgear,wax214v2|\
|
||||
sercomm,na502|\
|
||||
sercomm,na502s|\
|
||||
thunder,timecloud|\
|
||||
@ -67,6 +68,7 @@ ramips_setup_interfaces()
|
||||
;;
|
||||
asiarf,ap7621-001|\
|
||||
humax,e10|\
|
||||
keenetic,kn-3510|\
|
||||
openfi,5pro|\
|
||||
wavlink,ws-wn572hp3-4g|\
|
||||
winstars,ws-wn583a6)
|
||||
@ -327,6 +329,10 @@ ramips_setup_macs()
|
||||
wan_mac=$(macaddr_add "$lan_mac" 1)
|
||||
label_mac=$lan_mac
|
||||
;;
|
||||
netgear,wax214v2)
|
||||
lan_mac=$(mtd_get_mac_ascii Config ethaddr)
|
||||
label_mac=$lan_mac
|
||||
;;
|
||||
yuncore,ax820)
|
||||
label_mac=$(mtd_get_mac_binary Factory 0x4)
|
||||
;;
|
||||
|
@ -126,6 +126,10 @@ case "$board" in
|
||||
[ "$PHYNBR" = "1" ] && \
|
||||
macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
keenetic,kn-3510)
|
||||
[ "$PHYNBR" = "1" ] && \
|
||||
macaddr_setbit_la "$(mtd_get_mac_binary rf-eeprom 0x4)" > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
linksys,e5600|\
|
||||
linksys,ea6350-v4|\
|
||||
linksys,ea7300-v1|\
|
||||
@ -153,6 +157,11 @@ case "$board" in
|
||||
[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
|
||||
[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
netgear,wax214v2)
|
||||
hw_mac_addr=$(mtd_get_mac_ascii Config ethaddr)
|
||||
[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
|
||||
[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
mercusys,mr70x-v1|\
|
||||
tplink,archer-ax23-v1)
|
||||
hw_mac_addr="$(mtd_get_mac_binary config 0x8)"
|
||||
|
@ -100,6 +100,7 @@ platform_do_upgrade() {
|
||||
iptime,ax2004m|\
|
||||
iptime,t5004|\
|
||||
jcg,q20|\
|
||||
keenetic,kn-3510|\
|
||||
linksys,e5600|\
|
||||
linksys,e7350|\
|
||||
linksys,ea6350-v4|\
|
||||
@ -122,6 +123,7 @@ platform_do_upgrade() {
|
||||
netgear,wac104|\
|
||||
netgear,wac124|\
|
||||
netgear,wax202|\
|
||||
netgear,wax214v2|\
|
||||
netis,wf2881|\
|
||||
raisecom,msg1500-x-00|\
|
||||
rostelecom,rt-fe-1a|\
|
||||
|
@ -239,7 +239,7 @@ define Device/radxa_e25
|
||||
UBOOT_DEVICE_NAME := radxa-e25-rk3568
|
||||
BOOT_FLOW := pine64-img
|
||||
BOOT_SCRIPT := radxa-e25
|
||||
DEVICE_PACKAGES := kmod-r8125 kmod-ata-ahci-platform
|
||||
DEVICE_PACKAGES := kmod-r8125 kmod-ata-ahci-dwc
|
||||
endef
|
||||
TARGET_DEVICES += radxa_e25
|
||||
|
||||
|
@ -0,0 +1,107 @@
|
||||
From 4c3a3af679bd59660ac80889b560bddaf475ba81 Mon Sep 17 00:00:00 2001
|
||||
From: Michel Promonet <michel.promonet@free.fr>
|
||||
Date: Sun, 21 Jul 2024 19:04:19 +0200
|
||||
Subject: [PATCH] sunxi: add csi video support for nanopi-neo-air
|
||||
|
||||
---
|
||||
.../dts/allwinner/sun8i-h3-nanopi-neo-air.dts | 85 +++++++++++++++++++
|
||||
1 file changed, 85 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts
|
||||
+++ b/arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts
|
||||
@@ -77,6 +77,39 @@
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||
};
|
||||
+
|
||||
+ cam_xclk: cam-xclk {
|
||||
+ #clock-cells = <0>;
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <24000000>;
|
||||
+ clock-output-names = "cam-xclk";
|
||||
+ };
|
||||
+
|
||||
+ reg_cam_avdd: cam-avdd {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "cam-avdd";
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ vin-supply = <®_vcc3v3>;
|
||||
+ };
|
||||
+
|
||||
+ reg_cam_dovdd: cam-dovdd {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "cam-dovdd";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <®_vcc3v3>;
|
||||
+ };
|
||||
+
|
||||
+ reg_cam_dvdd: cam-dvdd {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "cam-dvdd";
|
||||
+ regulator-min-microvolt = <1500000>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ vin-supply = <®_vcc3v3>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
@@ -141,3 +174,55 @@
|
||||
/* USB VBUS is always on */
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&csi {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ port {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ /* Parallel bus endpoint */
|
||||
+ csi_from_ov5640: endpoint {
|
||||
+ remote-endpoint = <&ov5640_to_csi>;
|
||||
+ bus-width = <8>;
|
||||
+ data-shift = <2>;
|
||||
+ hsync-active = <1>; /* Active high */
|
||||
+ vsync-active = <0>; /* Active low */
|
||||
+ data-active = <1>; /* Active high */
|
||||
+ pclk-sample = <1>; /* Rising */
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ov5640: camera@3c {
|
||||
+ compatible = "ovti,ov5640";
|
||||
+ reg = <0x3c>;
|
||||
+ clocks = <&cam_xclk>;
|
||||
+ clock-names = "xclk";
|
||||
+
|
||||
+ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>;
|
||||
+ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>;
|
||||
+ AVDD-supply = <®_cam_avdd>;
|
||||
+ DOVDD-supply = <®_cam_dovdd>;
|
||||
+ DVDD-supply = <®_cam_dvdd>;
|
||||
+
|
||||
+ port {
|
||||
+ ov5640_to_csi: endpoint {
|
||||
+ remote-endpoint = <&csi_from_ov5640>;
|
||||
+ bus-width = <8>;
|
||||
+ data-shift = <2>;
|
||||
+ hsync-active = <1>; /* Active high */
|
||||
+ vsync-active = <0>; /* Active low */
|
||||
+ data-active = <1>; /* Active high */
|
||||
+ pclk-sample = <1>; /* Rising */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+&i2c2_pins {
|
||||
+ bias-pull-up;
|
||||
+};
|
Loading…
x
Reference in New Issue
Block a user