mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Add kernel 6.7 support for generic and x86_64 bases on mptcp_net-next tree
This commit is contained in:
parent
eb899ee09f
commit
b2a933513f
153 changed files with 32655 additions and 16 deletions
|
|
@ -0,0 +1,11 @@
|
|||
--- a/ath10k-6.4/debug.c 2023-12-22 20:15:58.689480802 +0100
|
||||
+++ b/ath10k-6.4/debug.c 2023-12-22 20:16:29.156946389 +0100
|
||||
@@ -3961,7 +3961,7 @@
|
||||
|
||||
buf[buf_size] = '\0';
|
||||
|
||||
- if (strtobool(buf, &val) != 0)
|
||||
+ if (kstrtobool(buf, &val) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
ar->debug.use_ofdm_peak_power = val;
|
||||
1071
6.7/package/kernel/linux/modules/crypto.mk
Normal file
1071
6.7/package/kernel/linux/modules/crypto.mk
Normal file
File diff suppressed because it is too large
Load diff
721
6.7/package/kernel/linux/modules/fs.mk
Normal file
721
6.7/package/kernel/linux/modules/fs.mk
Normal file
|
|
@ -0,0 +1,721 @@
|
|||
#
|
||||
# Copyright (C) 2006-2011 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
FS_MENU:=Filesystems
|
||||
|
||||
define KernelPackage/fs-9p
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Plan 9 Resource Sharing Support
|
||||
DEPENDS:=+kmod-9pnet +LINUX_6_1:kmod-fs-netfs
|
||||
KCONFIG:=\
|
||||
CONFIG_9P_FS \
|
||||
CONFIG_9P_FS_POSIX_ACL=n \
|
||||
CONFIG_9P_FS_SECURITY=n \
|
||||
CONFIG_9P_FSCACHE=n
|
||||
FILES:=$(LINUX_DIR)/fs/9p/9p.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,9p)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-9p/description
|
||||
Kernel module for Plan 9 Resource Sharing Support support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-9p))
|
||||
|
||||
|
||||
define KernelPackage/fs-afs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Andrew FileSystem client
|
||||
DEFAULT:=n
|
||||
DEPENDS:=+kmod-rxrpc +kmod-dnsresolver +kmod-fs-fscache
|
||||
KCONFIG:=\
|
||||
CONFIG_AFS_FS=m \
|
||||
CONFIG_AFS_DEBUG=n \
|
||||
CONFIG_AFS_FSCACHE=y
|
||||
FILES:=$(LINUX_DIR)/fs/afs/kafs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,kafs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-afs/description
|
||||
Kernel module for Andrew FileSystem client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-afs))
|
||||
|
||||
define KernelPackage/fs-autofs4
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=AUTOFS4 filesystem support
|
||||
KCONFIG:= \
|
||||
CONFIG_AUTOFS4_FS \
|
||||
CONFIG_AUTOFS_FS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/autofs/autofs4.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,autofs4)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-autofs4/description
|
||||
Kernel module for AutoFS4 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-autofs4))
|
||||
|
||||
|
||||
define KernelPackage/fs-btrfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=BTRFS filesystem support
|
||||
DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +kmod-lib-zstd
|
||||
KCONFIG:=\
|
||||
CONFIG_BTRFS_FS \
|
||||
CONFIG_BTRFS_FS_CHECK_INTEGRITY=n
|
||||
FILES:=\
|
||||
$(LINUX_DIR)/fs/btrfs/btrfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,btrfs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-btrfs/description
|
||||
Kernel module for BTRFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-btrfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-smbfs-common
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=SMBFS common dependencies support
|
||||
HIDDEN:=1
|
||||
KCONFIG:=\
|
||||
CONFIG_SMBFS_COMMON@lt6.1 \
|
||||
CONFIG_SMBFS@ge6.1
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/smbfs_common/cifs_arc4.ko@lt6.1 \
|
||||
$(LINUX_DIR)/fs/smbfs_common/cifs_md4.ko@lt6.1 \
|
||||
$(LINUX_DIR)/fs/smb/common/cifs_arc4.ko@ge6.1 \
|
||||
$(LINUX_DIR)/fs/smb/common/cifs_md4.ko@ge6.1
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-smbfs-common/description
|
||||
Kernel module dependency for CIFS or SMB_SERVER support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-smbfs-common))
|
||||
|
||||
|
||||
define KernelPackage/fs-cifs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=CIFS support
|
||||
KCONFIG:= \
|
||||
CONFIG_CIFS \
|
||||
CONFIG_CIFS_DFS_UPCALL=n \
|
||||
CONFIG_CIFS_UPCALL=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/cifs/cifs.ko@lt6.1 \
|
||||
$(LINUX_DIR)/fs/smb/client/cifs.ko@ge6.1
|
||||
AUTOLOAD:=$(call AutoLoad,30,cifs)
|
||||
$(call AddDepends/nls)
|
||||
DEPENDS+= \
|
||||
+kmod-fs-smbfs-common \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-sha256 \
|
||||
+kmod-crypto-sha512 \
|
||||
+kmod-crypto-cmac \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-aead \
|
||||
+kmod-crypto-ccm \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-des \
|
||||
+kmod-asn1-decoder \
|
||||
+kmod-oid-registry \
|
||||
+kmod-dnsresolver
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-cifs/description
|
||||
Kernel module for CIFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-cifs))
|
||||
|
||||
|
||||
define KernelPackage/fs-configfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Configuration filesystem support
|
||||
KCONFIG:= \
|
||||
CONFIG_CONFIGFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/configfs/configfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,configfs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-configfs/description
|
||||
Kernel module for configfs support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-configfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-cramfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Compressed RAM/ROM filesystem support
|
||||
DEPENDS:=+kmod-lib-zlib-inflate
|
||||
KCONFIG:= \
|
||||
CONFIG_CRAMFS
|
||||
FILES:=$(LINUX_DIR)/fs/cramfs/cramfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,cramfs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-cramfs/description
|
||||
Kernel module for cramfs support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-cramfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-efivarfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=efivar filesystem support
|
||||
KCONFIG:=CONFIG_EFIVAR_FS
|
||||
FILES:=$(LINUX_DIR)/fs/efivarfs/efivarfs.ko
|
||||
DEPENDS:=@(x86_64||x86)
|
||||
AUTOLOAD:=$(call Autoload,90,efivarfs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-efivarfs/description
|
||||
Kernel module to support efivarfs file system mountpoint.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-efivarfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-exfat
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=exFAT filesystem support
|
||||
KCONFIG:= \
|
||||
CONFIG_EXFAT_FS \
|
||||
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
|
||||
FILES:= $(LINUX_DIR)/fs/exfat/exfat.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,exfat,1)
|
||||
DEPENDS:=+kmod-nls-base
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-exfat/description
|
||||
Kernel module for exFAT filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-exfat))
|
||||
|
||||
|
||||
define KernelPackage/fs-exportfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=exportfs kernel server support
|
||||
KCONFIG:=CONFIG_EXPORTFS
|
||||
FILES=$(LINUX_DIR)/fs/exportfs/exportfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,20,exportfs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-exportfs/description
|
||||
Kernel module for exportfs. Needed for some other modules.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-exportfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-ext4
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=EXT4 filesystem support
|
||||
DEPENDS := \
|
||||
+kmod-lib-crc16 \
|
||||
+kmod-crypto-hash \
|
||||
+kmod-crypto-crc32c
|
||||
KCONFIG:= \
|
||||
CONFIG_EXT4_FS \
|
||||
CONFIG_EXT4_ENCRYPTION=n \
|
||||
CONFIG_JBD2
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/ext4/ext4.ko \
|
||||
$(LINUX_DIR)/fs/jbd2/jbd2.ko \
|
||||
$(LINUX_DIR)/fs/mbcache.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,mbcache jbd2 ext4,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-ext4/description
|
||||
Kernel module for EXT4 filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ext4))
|
||||
|
||||
|
||||
define KernelPackage/fs-f2fs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=F2FS filesystem support
|
||||
DEPENDS:= +kmod-crypto-hash +kmod-crypto-crc32 +kmod-nls-base
|
||||
KCONFIG:=CONFIG_F2FS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/f2fs/f2fs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,f2fs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-f2fs/description
|
||||
Kernel module for F2FS filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-f2fs))
|
||||
|
||||
|
||||
define KernelPackage/fs-fscache
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=General filesystem local cache manager
|
||||
DEPENDS:=+kmod-fs-netfs
|
||||
KCONFIG:=\
|
||||
CONFIG_FSCACHE \
|
||||
CONFIG_FSCACHE_STATS=y \
|
||||
CONFIG_FSCACHE_HISTOGRAM=n \
|
||||
CONFIG_FSCACHE_DEBUG=n \
|
||||
CONFIG_FSCACHE_OBJECT_LIST=n \
|
||||
CONFIG_CACHEFILES \
|
||||
CONFIG_CACHEFILES_DEBUG=n \
|
||||
CONFIG_CACHEFILES_HISTOGRAM=n \
|
||||
CONFIG_CACHEFILES_ERROR_INJECTION=n@ge5.17 \
|
||||
CONFIG_CACHEFILES_ONDEMAND=n@ge5.19
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/fscache/fscache.ko \
|
||||
$(LINUX_DIR)/fs/cachefiles/cachefiles.ko
|
||||
AUTOLOAD:=$(call AutoLoad,29,fscache cachefiles)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-fscache))
|
||||
|
||||
|
||||
define KernelPackage/fs-hfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=HFS filesystem support
|
||||
DEPENDS:=+kmod-cdrom
|
||||
KCONFIG:=CONFIG_HFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/hfs/hfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,hfs)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-hfs/description
|
||||
Kernel module for HFS filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-hfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-hfsplus
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=HFS+ filesystem support
|
||||
DEPENDS:=+kmod-cdrom
|
||||
KCONFIG:=CONFIG_HFSPLUS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/hfsplus/hfsplus.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,hfsplus)
|
||||
$(call AddDepends/nls,utf8)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-hfsplus/description
|
||||
Kernel module for HFS+ filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-hfsplus))
|
||||
|
||||
|
||||
define KernelPackage/fs-isofs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=ISO9660 filesystem support
|
||||
DEPENDS:=+kmod-lib-zlib-inflate +kmod-cdrom
|
||||
KCONFIG:=CONFIG_ISO9660_FS CONFIG_JOLIET=y CONFIG_ZISOFS=n
|
||||
FILES:=$(LINUX_DIR)/fs/isofs/isofs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,isofs)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-isofs/description
|
||||
Kernel module for ISO9660 filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-isofs))
|
||||
|
||||
|
||||
define KernelPackage/fs-jfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=JFS filesystem support
|
||||
KCONFIG:=CONFIG_JFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,jfs,1)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-jfs/description
|
||||
Kernel module for JFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-jfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-ksmbd
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=SMB kernel server support
|
||||
DEPENDS:= \
|
||||
+kmod-nls-base \
|
||||
+kmod-nls-utf8 \
|
||||
+kmod-crypto-md4 \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-des \
|
||||
+kmod-crypto-sha256 \
|
||||
+kmod-crypto-cmac \
|
||||
+kmod-crypto-sha512 \
|
||||
+kmod-crypto-aead \
|
||||
+kmod-crypto-ccm \
|
||||
+kmod-crypto-gcm \
|
||||
+kmod-asn1-decoder \
|
||||
+kmod-oid-registry \
|
||||
+kmod-fs-smbfs-common
|
||||
KCONFIG:= \
|
||||
CONFIG_SMB_SERVER \
|
||||
CONFIG_SMB_SERVER_SMBDIRECT=n \
|
||||
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=n \
|
||||
CONFIG_SMB_SERVER_KERBEROS5=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/ksmbd/ksmbd.ko@lt6.1 \
|
||||
$(LINUX_DIR)/fs/smb/server/ksmbd.ko@ge6.1
|
||||
AUTOLOAD:=$(call AutoLoad,41,ksmbd)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-ksmbd/description
|
||||
Kernel module for SMB kernel server support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ksmbd))
|
||||
|
||||
|
||||
define KernelPackage/fs-minix
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Minix filesystem support
|
||||
KCONFIG:=CONFIG_MINIX_FS
|
||||
FILES:=$(LINUX_DIR)/fs/minix/minix.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,minix)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-minix/description
|
||||
Kernel module for Minix filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-minix))
|
||||
|
||||
|
||||
define KernelPackage/fs-msdos
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=MSDOS filesystem support
|
||||
DEPENDS:=+kmod-fs-vfat
|
||||
KCONFIG:=CONFIG_MSDOS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/fat/msdos.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,msdos)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-msdos/description
|
||||
Kernel module for MSDOS filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-msdos))
|
||||
|
||||
|
||||
define KernelPackage/fs-netfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Network Filesystems support
|
||||
KCONFIG:= CONFIG_NETFS_SUPPORT
|
||||
FILES:=$(LINUX_DIR)/fs/netfs/netfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,28,netfs)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-netfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs-common +kmod-dnsresolver
|
||||
KCONFIG:= \
|
||||
CONFIG_NFS_FS \
|
||||
CONFIG_NFS_USE_LEGACY_DNS=n \
|
||||
CONFIG_NFS_USE_NEW_IDMAPPER=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,nfs)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs/description
|
||||
Kernel module for NFS client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-common
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Common NFS filesystem modules
|
||||
DEPENDS:=+kmod-oid-registry
|
||||
KCONFIG:= \
|
||||
CONFIG_LOCKD \
|
||||
CONFIG_SUNRPC \
|
||||
CONFIG_GRACE_PERIOD \
|
||||
CONFIG_NFS_V4=y \
|
||||
CONFIG_NFS_V4_1=y \
|
||||
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" \
|
||||
CONFIG_NFS_V4_1_MIGRATION=n \
|
||||
CONFIG_NFS_V4_2=y \
|
||||
CONFIG_NFS_V4_2_READ_PLUS=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/lockd/lockd.ko \
|
||||
$(LINUX_DIR)/net/sunrpc/sunrpc.ko \
|
||||
$(LINUX_DIR)/fs/nfs_common/grace.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,grace sunrpc lockd)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-common))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-common-rpcsec
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS Secure RPC
|
||||
DEPENDS:= \
|
||||
+kmod-fs-nfs-common \
|
||||
+kmod-crypto-des \
|
||||
+kmod-crypto-cbc \
|
||||
+kmod-crypto-cts \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-sha1 \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-arc4
|
||||
KCONFIG:= \
|
||||
CONFIG_SUNRPC_GSS \
|
||||
CONFIG_RPCSEC_GSS_KRB5
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/sunrpc/auth_gss/auth_rpcgss.ko \
|
||||
$(LINUX_DIR)/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
|
||||
AUTOLOAD:=$(call AutoLoad,31,auth_rpcgss rpcsec_gss_krb5)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-common-rpcsec/description
|
||||
Kernel modules for NFS Secure RPC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-common-rpcsec))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-v3
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS3 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv3.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv3)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v3/description
|
||||
Kernel module for NFS v3 client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v3))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfs-v4
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS4 filesystem client support
|
||||
DEPENDS:=+kmod-fs-nfs
|
||||
KCONFIG:= \
|
||||
CONFIG_NFS_V4=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/nfs/nfsv4.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,nfsv4)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfs-v4/description
|
||||
Kernel module for NFS v4 client support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfs-v4))
|
||||
|
||||
|
||||
define KernelPackage/fs-nfsd
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NFS kernel server support
|
||||
DEPENDS:=+kmod-fs-nfs-common +kmod-fs-exportfs +kmod-fs-nfs-common-rpcsec
|
||||
KCONFIG:= \
|
||||
CONFIG_NFSD \
|
||||
CONFIG_NFSD_V4=y \
|
||||
CONFIG_NFSD_V4_SECURITY_LABEL=n \
|
||||
CONFIG_NFSD_BLOCKLAYOUT=n \
|
||||
CONFIG_NFSD_SCSILAYOUT=n \
|
||||
CONFIG_NFSD_FLEXFILELAYOUT=n \
|
||||
CONFIG_NFSD_FAULT_INJECTION=n \
|
||||
CONFIG_NFSD_V4_2_INTER_SSC=n
|
||||
FILES:=$(LINUX_DIR)/fs/nfsd/nfsd.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,nfsd)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-nfsd/description
|
||||
Kernel module for NFS kernel server support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-nfsd))
|
||||
|
||||
|
||||
define KernelPackage/fs-ntfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NTFS filesystem read-only (old driver) support
|
||||
KCONFIG:=CONFIG_NTFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/ntfs/ntfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,ntfs)
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-ntfs/description
|
||||
Kernel module for limited NTFS filesystem support. Support for writing
|
||||
is extremely limited and disabled as a result.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ntfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-ntfs3
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=NTFS filesystem read & write (new driver) support
|
||||
KCONFIG:= CONFIG_NTFS3_FS CONFIG_NTFS3_FS_POSIX_ACL=y
|
||||
FILES:=$(LINUX_DIR)/fs/ntfs3/ntfs3.ko
|
||||
$(call AddDepends/nls)
|
||||
AUTOLOAD:=$(call AutoLoad,80,ntfs3)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-ntfs3/description
|
||||
Kernel module for fully functional NTFS filesystem support. It allows
|
||||
reading as well as writing.
|
||||
|
||||
It supports NTFS versions up to 3.1.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ntfs3))
|
||||
|
||||
|
||||
define KernelPackage/fs-reiserfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=ReiserFS filesystem support
|
||||
KCONFIG:=CONFIG_REISERFS_FS
|
||||
FILES:=$(LINUX_DIR)/fs/reiserfs/reiserfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,reiserfs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-reiserfs/description
|
||||
Kernel module for ReiserFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-reiserfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-squashfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=SquashFS 4.0 filesystem support
|
||||
KCONFIG:=CONFIG_SQUASHFS \
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
FILES:=$(LINUX_DIR)/fs/squashfs/squashfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,squashfs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-squashfs/description
|
||||
Kernel module for SquashFS 4.0 support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-squashfs))
|
||||
|
||||
|
||||
define KernelPackage/fs-udf
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=UDF filesystem support
|
||||
KCONFIG:=CONFIG_UDF_FS
|
||||
FILES:=$(LINUX_DIR)/fs/udf/udf.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,udf)
|
||||
DEPENDS:=+kmod-lib-crc-itu-t +kmod-cdrom
|
||||
$(call AddDepends/nls)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-udf/description
|
||||
Kernel module for UDF filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-udf))
|
||||
|
||||
|
||||
define KernelPackage/fs-vfat
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=VFAT filesystem support
|
||||
KCONFIG:= \
|
||||
CONFIG_FAT_FS \
|
||||
CONFIG_VFAT_FS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/fat/fat.ko \
|
||||
$(LINUX_DIR)/fs/fat/vfat.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,fat vfat,1)
|
||||
$(call AddDepends/nls,cp437 iso8859-1 utf8)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-vfat/description
|
||||
Kernel module for VFAT filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-vfat))
|
||||
|
||||
|
||||
define KernelPackage/fs-xfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=XFS filesystem support
|
||||
KCONFIG:=CONFIG_XFS_FS
|
||||
DEPENDS:= +kmod-fs-exportfs +kmod-lib-crc32c
|
||||
FILES:=$(LINUX_DIR)/fs/xfs/xfs.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,xfs,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-xfs/description
|
||||
Kernel module for XFS support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-xfs))
|
||||
|
||||
|
||||
define KernelPackage/fuse
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=FUSE (Filesystem in Userspace) support
|
||||
KCONFIG:= CONFIG_FUSE_FS
|
||||
FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko
|
||||
AUTOLOAD:=$(call AutoLoad,80,fuse)
|
||||
endef
|
||||
|
||||
define KernelPackage/fuse/description
|
||||
Kernel module for userspace filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fuse))
|
||||
|
||||
|
||||
define KernelPackage/pstore
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Pstore file system
|
||||
DEFAULT:=m if ALL_KMODS
|
||||
KCONFIG:= \
|
||||
CONFIG_PSTORE \
|
||||
CONFIG_PSTORE_COMPRESS=y \
|
||||
CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" \
|
||||
CONFIG_PSTORE_DEFLATE_COMPRESS=y \
|
||||
CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
|
||||
FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,pstore,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/pstore/description
|
||||
Kernel module for pstore filesystem support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,pstore))
|
||||
1739
6.7/package/kernel/linux/modules/netdevices.mk
Normal file
1739
6.7/package/kernel/linux/modules/netdevices.mk
Normal file
File diff suppressed because it is too large
Load diff
1601
6.7/package/kernel/linux/modules/netsupport.mk
Normal file
1601
6.7/package/kernel/linux/modules/netsupport.mk
Normal file
File diff suppressed because it is too large
Load diff
1360
6.7/package/kernel/linux/modules/other.mk
Normal file
1360
6.7/package/kernel/linux/modules/other.mk
Normal file
File diff suppressed because it is too large
Load diff
140
6.7/package/kernel/linux/modules/virt.mk
Normal file
140
6.7/package/kernel/linux/modules/virt.mk
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
#
|
||||
# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
define KernelPackage/irqbypass
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=IRQ offload/bypass manager
|
||||
KCONFIG:=CONFIG_IRQ_BYPASS_MANAGER
|
||||
HIDDEN:=1
|
||||
FILES:= $(LINUX_DIR)/virt/lib/irqbypass.ko
|
||||
AUTOLOAD:=$(call AutoProbe,irqbypass.ko)
|
||||
endef
|
||||
$(eval $(call KernelPackage,irqbypass))
|
||||
|
||||
|
||||
define KernelPackage/kvm-x86
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=Kernel-based Virtual Machine (KVM) support
|
||||
DEPENDS:=@TARGET_x86_generic||TARGET_x86_64 +kmod-irqbypass
|
||||
KCONFIG:=\
|
||||
CONFIG_KVM \
|
||||
CONFIG_KVM_MMU_AUDIT=n \
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
FILES:= $(LINUX_DIR)/arch/$(LINUX_KARCH)/kvm/kvm.ko
|
||||
AUTOLOAD:=$(call AutoProbe,kvm.ko)
|
||||
endef
|
||||
|
||||
define KernelPackage/kvm-x86/description
|
||||
Support hosting fully virtualized guest machines using hardware
|
||||
virtualization extensions. You will need a fairly recent
|
||||
processor equipped with virtualization extensions. You will also
|
||||
need to select one or more of the processor modules.
|
||||
|
||||
This module provides access to the hardware capabilities through
|
||||
a character device node named /dev/kvm.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,kvm-x86))
|
||||
|
||||
|
||||
define KernelPackage/kvm-intel
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=KVM for Intel processors support
|
||||
DEPENDS:=+kmod-kvm-x86
|
||||
KCONFIG:=CONFIG_KVM_INTEL
|
||||
FILES:= $(LINUX_DIR)/arch/$(LINUX_KARCH)/kvm/kvm-intel.ko
|
||||
AUTOLOAD:=$(call AutoProbe,kvm-intel.ko)
|
||||
endef
|
||||
|
||||
define KernelPackage/kvm-intel/description
|
||||
Provides support for KVM on Intel processors equipped with the VT
|
||||
extensions.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,kvm-intel))
|
||||
|
||||
|
||||
define KernelPackage/kvm-amd
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=KVM for AMD processors support
|
||||
DEPENDS:=+kmod-kvm-x86
|
||||
KCONFIG:=CONFIG_KVM_AMD
|
||||
FILES:= $(LINUX_DIR)/arch/$(LINUX_KARCH)/kvm/kvm-amd.ko
|
||||
AUTOLOAD:=$(call AutoProbe,kvm-amd.ko)
|
||||
endef
|
||||
|
||||
define KernelPackage/kvm-amd/description
|
||||
Provides support for KVM on AMD processors equipped with the AMD-V
|
||||
(SVM) extensions.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,kvm-amd))
|
||||
|
||||
|
||||
define KernelPackage/vfio
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=VFIO Non-Privileged userspace driver framework
|
||||
DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8
|
||||
KCONFIG:= \
|
||||
CONFIG_VFIO \
|
||||
CONFIG_VFIO_NOIOMMU=n \
|
||||
CONFIG_VFIO_MDEV=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/vfio/vfio.ko \
|
||||
$(LINUX_DIR)/drivers/vfio/vfio_iommu_type1.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vfio vfio_iommu_type1)
|
||||
endef
|
||||
|
||||
define KernelPackage/vfio/description
|
||||
VFIO provides a framework for secure userspace device drivers.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vfio))
|
||||
|
||||
|
||||
define KernelPackage/vfio-pci
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=Generic VFIO support for any PCI device
|
||||
DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 @PCI_SUPPORT +kmod-vfio +kmod-irqbypass
|
||||
KCONFIG:= \
|
||||
CONFIG_VFIO_PCI \
|
||||
CONFIG_VFIO_PCI_IGD=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/vfio/pci/vfio-pci-core.ko \
|
||||
$(LINUX_DIR)/drivers/vfio/pci/vfio-pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vfio-pci)
|
||||
endef
|
||||
|
||||
define KernelPackage/vfio-pci/description
|
||||
Support for the generic PCI VFIO bus driver which can connect any PCI
|
||||
device to the VFIO framework.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vfio-pci))
|
||||
|
||||
|
||||
define KernelPackage/vhost
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=Host kernel accelerator for virtio (base)
|
||||
KCONFIG:=CONFIG_VHOST
|
||||
FILES:=$(LINUX_DIR)/drivers/vhost/vhost.ko \
|
||||
$(LINUX_DIR)/drivers/vhost/vhost_iotlb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vhost vhost_iotlb)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vhost))
|
||||
|
||||
|
||||
define KernelPackage/vhost-net
|
||||
SUBMENU:=Virtualization
|
||||
TITLE:=Host kernel accelerator for virtio-net
|
||||
DEPENDS:=+kmod-tun +kmod-vhost
|
||||
KCONFIG:=CONFIG_VHOST_NET
|
||||
FILES:=$(LINUX_DIR)/drivers/vhost/vhost_net.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vhost_net)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vhost-net))
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
--- a/drivers/net/wireless/ath/ath10k/pci.c 2023-12-22 19:22:13.061853464 +0100
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c 2023-12-22 19:23:22.184610463 +0100
|
||||
@@ -3163,7 +3163,11 @@
|
||||
* immediate servicing.
|
||||
*/
|
||||
if (ath10k_ce_interrupt_summary(ar)) {
|
||||
+#if LINUX_VERSION_IS_LESS(6,7,0)
|
||||
napi_reschedule(ctx);
|
||||
+#else
|
||||
+ napi_schedule(ctx);
|
||||
+#endif
|
||||
goto out;
|
||||
}
|
||||
ath10k_pci_enable_legacy_irq(ar);
|
||||
31
6.7/package/kernel/mac80211/patches/build/900-userhdr.patch
Normal file
31
6.7/package/kernel/mac80211/patches/build/900-userhdr.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
--- a/backport-include/net/genetlink.h 2023-10-19 17:24:48.721119999 +0200
|
||||
+++ b/backport-include/net/genetlink.h 2023-10-19 17:35:11.810569190 +0200
|
||||
@@ -3,6 +3,7 @@
|
||||
#include_next <net/genetlink.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
+#if LINUX_VERSION_IS_LESS(6,5,0)
|
||||
static inline void __bp_genl_info_userhdr_set(struct genl_info *info,
|
||||
void *userhdr)
|
||||
{
|
||||
@@ -13,6 +14,7 @@
|
||||
{
|
||||
return info->userhdr;
|
||||
}
|
||||
+#endif /* < 6.5.0 */
|
||||
|
||||
#if LINUX_VERSION_IS_LESS(4,12,0)
|
||||
#define GENL_SET_ERR_MSG(info, msg) NL_SET_ERR_MSG(genl_info_extack(info), msg)
|
||||
@@ -47,10 +47,12 @@
|
||||
}
|
||||
|
||||
/* this gets put in place of info->userhdr, since we use that above */
|
||||
+#if LINUX_VERSION_IS_LESS(6,5,0)
|
||||
static inline void *genl_info_userhdr(struct genl_info *info)
|
||||
{
|
||||
return (u8 *)info->genlhdr + GENL_HDRLEN;
|
||||
}
|
||||
+#endif
|
||||
|
||||
#if LINUX_VERSION_IS_LESS(4,10,0)
|
||||
#define __genl_ro_after_init
|
||||
587
6.7/package/kernel/mt76/Makefile
Normal file
587
6.7/package/kernel/mt76/Makefile
Normal file
|
|
@ -0,0 +1,587 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mt76
|
||||
PKG_RELEASE=5
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2023-05-13
|
||||
PKG_SOURCE_VERSION:=969b7b5ebd129068ca56e4b0d831593a2f92382f
|
||||
PKG_MIRROR_HASH:=d28869591d1cb9a967b72f5cd8215c7b2c3388b7b31147b7b18c797018ab8ffb
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_USE_NINJA:=0
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS += \
|
||||
CONFIG_PACKAGE_kmod-mt76-usb \
|
||||
CONFIG_PACKAGE_kmod-mt76x02-common \
|
||||
CONFIG_PACKAGE_kmod-mt76x0-common \
|
||||
CONFIG_PACKAGE_kmod-mt76x0u \
|
||||
CONFIG_PACKAGE_kmod-mt76x2-common \
|
||||
CONFIG_PACKAGE_kmod-mt76x2 \
|
||||
CONFIG_PACKAGE_kmod-mt76x2u \
|
||||
CONFIG_PACKAGE_kmod-mt7603 \
|
||||
CONFIG_PACKAGE_CFG80211_TESTMODE
|
||||
|
||||
STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
CMAKE_SOURCE_DIR:=$(PKG_BUILD_DIR)/tools
|
||||
CMAKE_BINARY_DIR:=$(PKG_BUILD_DIR)/tools
|
||||
|
||||
define KernelPackage/mt76-default
|
||||
SUBMENU:=Wireless Drivers
|
||||
DEPENDS:= \
|
||||
+kmod-mac80211 \
|
||||
+@DRIVER_11AC_SUPPORT \
|
||||
+@KERNEL_PAGE_POOL
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76
|
||||
SUBMENU:=Wireless Drivers
|
||||
TITLE:=MediaTek MT76x2/MT7603 wireless driver (metapackage)
|
||||
DEPENDS:= \
|
||||
+kmod-mt76-core +kmod-mt76x2 +kmod-mt7603
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76-core
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76xx wireless driver
|
||||
HIDDEN:=1
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76-usb
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76xx wireless driver USB support
|
||||
DEPENDS += +kmod-usb-core +kmod-mt76-core
|
||||
HIDDEN:=1
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76-usb.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x02-usb
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x0/MT76x2 USB wireless driver common code
|
||||
DEPENDS+=+kmod-mt76-usb +kmod-mt76x02-common
|
||||
HIDDEN:=1
|
||||
FILES:=$(PKG_BUILD_DIR)/mt76x02-usb.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x02-common
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x0/MT76x2 wireless driver common code
|
||||
DEPENDS+=+kmod-mt76-core
|
||||
HIDDEN:=1
|
||||
FILES:=$(PKG_BUILD_DIR)/mt76x02-lib.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x0-common
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x0 wireless driver common code
|
||||
DEPENDS+=+kmod-mt76x02-common
|
||||
HIDDEN:=1
|
||||
FILES:=$(PKG_BUILD_DIR)/mt76x0/mt76x0-common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x0e
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x0E wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76x0-common
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76x0/mt76x0e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt76x0e)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x0u
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x0U wireless driver
|
||||
DEPENDS+=+kmod-mt76x0-common +kmod-mt76x02-usb
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76x0/mt76x0u.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt76x0u)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x2-common
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x2 wireless driver common code
|
||||
DEPENDS+=+kmod-mt76-core +kmod-mt76x02-common
|
||||
HIDDEN:=1
|
||||
FILES:=$(PKG_BUILD_DIR)/mt76x2/mt76x2-common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x2u
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x2U wireless driver
|
||||
DEPENDS+=+kmod-mt76x2-common +kmod-mt76x02-usb
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76x2/mt76x2u.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt76x2u)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x2
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT76x2 wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76x2-common
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt76x2/mt76x2e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt76x2e)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7603
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7603 wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76-core
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt7603/mt7603e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7603e)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76-connac
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615/MT79xx wireless driver common code
|
||||
HIDDEN:=1
|
||||
DEPENDS+=+kmod-mt76-core
|
||||
FILES:= $(PKG_BUILD_DIR)/mt76-connac-lib.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76-sdio
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615/MT79xx SDIO driver common code
|
||||
HIDDEN:=1
|
||||
DEPENDS+=+kmod-mt76-core +kmod-mmc
|
||||
FILES:= $(PKG_BUILD_DIR)/mt76-sdio.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7615-common
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615 wireless driver common code
|
||||
HIDDEN:=1
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76-core +kmod-mt76-connac +kmod-hwmon-core
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615-common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7615-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615e firmware
|
||||
DEPENDS+=+kmod-mt7615e
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7615e
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615e wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7615e)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7622-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7622 firmware
|
||||
DEPENDS+=+kmod-mt7615e
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663-firmware-ap
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7663e firmware (optimized for AP)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663-firmware-sta
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7663e firmware (client mode offload)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663-usb-sdio
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7663 USB/SDIO shared code
|
||||
DEPENDS+=+kmod-mt7615-common
|
||||
HIDDEN:=1
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/mt7615/mt7663-usb-sdio-common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663s
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7663s wireless driver
|
||||
DEPENDS+=+kmod-mt76-sdio +kmod-mt7615-common +kmod-mt7663-usb-sdio
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/mt7615/mt7663s.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7663s)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663u
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7663u wireless driver
|
||||
DEPENDS+=+kmod-mt76-usb +kmod-mt7615-common +kmod-mt7663-usb-sdio
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7615/mt7663u.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7663u)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7915-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7915 firmware
|
||||
DEPENDS+=+kmod-mt7915e
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7915e
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7915e wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76-connac +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT +@KERNEL_RELAY
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7915e)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7916-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
DEPENDS+=+kmod-mt7915e
|
||||
TITLE:=MediaTek MT7916 firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7981-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
DEPENDS:=@TARGET_mediatek_filogic
|
||||
TITLE:=MediaTek MT7981 firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7986-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
DEPENDS:=@TARGET_mediatek_filogic
|
||||
TITLE:=MediaTek MT7986 firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7921 firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7922-firmware
|
||||
$(KernelPackage/mt76-default)
|
||||
DEPENDS+=+kmod-mt7921-common
|
||||
TITLE:=MediaTek MT7922 firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921-common
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7615 wireless driver common code
|
||||
HIDDEN:=1
|
||||
DEPENDS+=+kmod-mt76-connac +kmod-mt7921-firmware +@DRIVER_11AX_SUPPORT
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921-common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921u
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7921U wireless driver
|
||||
DEPENDS+=+kmod-mt76-usb +kmod-mt7921-common
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921u.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7921u)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921s
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7921S wireless driver
|
||||
DEPENDS+=+kmod-mt76-sdio +kmod-mt7921-common
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921s.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7921s)
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921e
|
||||
$(KernelPackage/mt76-default)
|
||||
TITLE:=MediaTek MT7921e wireless driver
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt7921-common
|
||||
FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921e.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mt7921e)
|
||||
endef
|
||||
|
||||
define Package/mt76-test
|
||||
SECTION:=devel
|
||||
CATEGORY:=Development
|
||||
TITLE:=mt76 testmode CLI
|
||||
DEPENDS:=kmod-mt76-core +libnl-tiny
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
|
||||
|
||||
NOSTDINC_FLAGS := \
|
||||
$(KERNEL_NOSTDINC_FLAGS) \
|
||||
-I$(PKG_BUILD_DIR) \
|
||||
-I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
|
||||
-I$(STAGING_DIR)/usr/include/mac80211-backport \
|
||||
-I$(STAGING_DIR)/usr/include/mac80211/uapi \
|
||||
-I$(STAGING_DIR)/usr/include/mac80211 \
|
||||
-include backport/autoconf.h \
|
||||
-include backport/backport.h
|
||||
|
||||
ifdef CONFIG_PACKAGE_MAC80211_MESH
|
||||
NOSTDINC_FLAGS += -DCONFIG_MAC80211_MESH
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PACKAGE_CFG80211_TESTMODE
|
||||
NOSTDINC_FLAGS += -DCONFIG_NL80211_TESTMODE
|
||||
PKG_MAKE_FLAGS += CONFIG_NL80211_TESTMODE=y
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76-usb
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76_USB=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x02-common
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x02_LIB=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x02-usb
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x02_USB=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x0-common
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x0_COMMON=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x0e
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x0E=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x0u
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x0U=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x2-common
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x2_COMMON=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x2
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x2E=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76x2u
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76x2U=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7603
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7603E=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76-connac
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76_CONNAC_LIB=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt76-sdio
|
||||
PKG_MAKE_FLAGS += CONFIG_MT76_SDIO=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7615-common
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7615_COMMON=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7615e
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7615E=m
|
||||
ifdef CONFIG_TARGET_mediatek_mt7622
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7622_WMAC=y
|
||||
NOSTDINC_FLAGS += -DCONFIG_MT7622_WMAC
|
||||
endif
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7663-usb-sdio
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7663_USB_SDIO_COMMON=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7663s
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7663S=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7663u
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7663U=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7915e
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7915E=m
|
||||
ifdef CONFIG_TARGET_mediatek_filogic
|
||||
PKG_MAKE_FLAGS += CONFIG_MT798X_WMAC=y
|
||||
NOSTDINC_FLAGS += -DCONFIG_MT798X_WMAC
|
||||
endif
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7921-common
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7921_COMMON=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7921u
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7921U=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7921s
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7921S=m
|
||||
endif
|
||||
ifdef CONFIG_PACKAGE_kmod-mt7921e
|
||||
PKG_MAKE_FLAGS += CONFIG_MT7921E=m
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
+$(KERNEL_MAKE) $(PKG_JOBS) \
|
||||
$(PKG_MAKE_FLAGS) \
|
||||
M="$(PKG_BUILD_DIR)" \
|
||||
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
|
||||
modules
|
||||
$(MAKE) -C $(PKG_BUILD_DIR)/tools
|
||||
endef
|
||||
|
||||
define Build/Install
|
||||
:
|
||||
endef
|
||||
|
||||
define Package/kmod-mt76/install
|
||||
true
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x0-common/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7610e.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x2-common/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7662_rom_patch.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7662.bin \
|
||||
$(1)/lib/firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x0u/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
ln -sf mt7610e.bin $(1)/lib/firmware/mediatek/mt7610u.bin
|
||||
endef
|
||||
|
||||
define KernelPackage/mt76x2u/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
ln -sf ../mt7662.bin $(1)/lib/firmware/mediatek/mt7662u.bin
|
||||
ln -sf ../mt7662_rom_patch.bin $(1)/lib/firmware/mediatek/mt7662u_rom_patch.bin
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7603/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
cp $(if $(CONFIG_TARGET_ramips_mt76x8), \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7628_e1.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7628_e2.bin \
|
||||
,\
|
||||
$(PKG_BUILD_DIR)/firmware/mt7603_e1.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7603_e2.bin \
|
||||
) \
|
||||
$(1)/lib/firmware
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7615-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7615_cr4.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7615_n9.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7615_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7622-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7622_n9.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7622_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663-firmware-ap/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7663_n9_rebb.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7663pr2h_rebb.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7663-firmware-sta/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7663_n9_v3.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7663pr2h.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7915-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7915_wa.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7915_wm.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7915_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7916-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7916_wa.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7916_wm.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7916_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7981-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7981_wa.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7981_wm.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7981_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7986-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7986_wa.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7986_wm_mt7975.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7986_wm.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7986_rom_patch_mt7975.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/mt7986_rom_patch.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_MT7961_patch_mcu_1_2_hdr.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7961_1.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7922-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_MT7922_patch_mcu_1_1_hdr.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7922_1.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define Package/mt76-test/install
|
||||
mkdir -p $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mt76-core))
|
||||
$(eval $(call KernelPackage,mt76-usb))
|
||||
$(eval $(call KernelPackage,mt76x02-usb))
|
||||
$(eval $(call KernelPackage,mt76x02-common))
|
||||
$(eval $(call KernelPackage,mt76x0-common))
|
||||
$(eval $(call KernelPackage,mt76x0e))
|
||||
$(eval $(call KernelPackage,mt76x0u))
|
||||
$(eval $(call KernelPackage,mt76x2-common))
|
||||
$(eval $(call KernelPackage,mt76x2u))
|
||||
$(eval $(call KernelPackage,mt76x2))
|
||||
$(eval $(call KernelPackage,mt7603))
|
||||
$(eval $(call KernelPackage,mt76-connac))
|
||||
$(eval $(call KernelPackage,mt76-sdio))
|
||||
$(eval $(call KernelPackage,mt7615-common))
|
||||
$(eval $(call KernelPackage,mt7615-firmware))
|
||||
$(eval $(call KernelPackage,mt7622-firmware))
|
||||
$(eval $(call KernelPackage,mt7615e))
|
||||
$(eval $(call KernelPackage,mt7663-firmware-ap))
|
||||
$(eval $(call KernelPackage,mt7663-firmware-sta))
|
||||
$(eval $(call KernelPackage,mt7663-usb-sdio))
|
||||
$(eval $(call KernelPackage,mt7663u))
|
||||
$(eval $(call KernelPackage,mt7663s))
|
||||
$(eval $(call KernelPackage,mt7915-firmware))
|
||||
$(eval $(call KernelPackage,mt7915e))
|
||||
$(eval $(call KernelPackage,mt7916-firmware))
|
||||
$(eval $(call KernelPackage,mt7981-firmware))
|
||||
$(eval $(call KernelPackage,mt7986-firmware))
|
||||
$(eval $(call KernelPackage,mt7921-firmware))
|
||||
$(eval $(call KernelPackage,mt7922-firmware))
|
||||
$(eval $(call KernelPackage,mt7921-common))
|
||||
$(eval $(call KernelPackage,mt7921u))
|
||||
$(eval $(call KernelPackage,mt7921s))
|
||||
$(eval $(call KernelPackage,mt7921e))
|
||||
$(eval $(call KernelPackage,mt76))
|
||||
$(eval $(call BuildPackage,mt76-test))
|
||||
59
6.7/package/kernel/mt76/patches/001-allow-vht-on-2g.patch
Normal file
59
6.7/package/kernel/mt76/patches/001-allow-vht-on-2g.patch
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
From ed0b9c38becdbf9379787ca0b4db557f03a31dd7 Mon Sep 17 00:00:00 2001
|
||||
From: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
|
||||
Date: Mon, 23 Nov 2020 10:46:37 +0800
|
||||
Subject: [PATCH] mt76: allow VHT rate on 2.4GHz
|
||||
|
||||
Allow chips that support 11ac to use 256QAM on 2.4GHz
|
||||
|
||||
Signed-off-by: DENG Qingfang <dqfext@gmail.com>
|
||||
---
|
||||
mac80211.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/mac80211.c b/mac80211.c
|
||||
index 766681a4..06aa4228 100644
|
||||
--- a/mac80211.c
|
||||
+++ b/mac80211.c
|
||||
@@ -282,7 +282,7 @@ static void mt76_init_stream_cap(struct mt76_phy *phy,
|
||||
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
|
||||
{
|
||||
if (phy->cap.has_2ghz)
|
||||
- mt76_init_stream_cap(phy, &phy->sband_2g.sband, false);
|
||||
+ mt76_init_stream_cap(phy, &phy->sband_2g.sband, vht);
|
||||
if (phy->cap.has_5ghz)
|
||||
mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
|
||||
if (phy->cap.has_6ghz)
|
||||
@@ -349,13 +349,13 @@ mt76_init_sband(struct mt76_phy *phy, struct mt76_sband *msband,
|
||||
|
||||
static int
|
||||
mt76_init_sband_2g(struct mt76_phy *phy, struct ieee80211_rate *rates,
|
||||
- int n_rates)
|
||||
+ int n_rates, bool vht)
|
||||
{
|
||||
phy->hw->wiphy->bands[NL80211_BAND_2GHZ] = &phy->sband_2g.sband;
|
||||
|
||||
return mt76_init_sband(phy, &phy->sband_2g, mt76_channels_2ghz,
|
||||
ARRAY_SIZE(mt76_channels_2ghz), rates,
|
||||
- n_rates, true, false);
|
||||
+ n_rates, true, vht);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -508,7 +508,7 @@ int mt76_register_phy(struct mt76_phy *phy, bool vht,
|
||||
return ret;
|
||||
|
||||
if (phy->cap.has_2ghz) {
|
||||
- ret = mt76_init_sband_2g(phy, rates, n_rates);
|
||||
+ ret = mt76_init_sband_2g(phy, rates, n_rates, vht);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
@@ -691,7 +691,7 @@ int mt76_register_device(struct mt76_dev *dev, bool vht,
|
||||
return ret;
|
||||
|
||||
if (phy->cap.has_2ghz) {
|
||||
- ret = mt76_init_sband_2g(phy, rates, n_rates);
|
||||
+ ret = mt76_init_sband_2g(phy, rates, n_rates, vht);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
33
6.7/package/kernel/r2ec/Makefile
Normal file
33
6.7/package/kernel/r2ec/Makefile
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# Copyright (C) 2008-2012 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=r2ec
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/r2ec
|
||||
SUBMENU:=Other modules
|
||||
TITLE:=STM32 R2EC (Router to Embedded board Communication) Driver
|
||||
FILES:=$(PKG_BUILD_DIR)/r2ec.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,r2ec,1)
|
||||
# DEPENDS:=@TARGET_ipq40xx @LINUX_5_4
|
||||
DEPENDS:=@TARGET_ipq40xx
|
||||
KCONFIG:=
|
||||
endef
|
||||
|
||||
MAKE_OPTS:= $(KERNEL_MAKE_FLAGS) M="$(PKG_BUILD_DIR)"
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,r2ec))
|
||||
1
6.7/package/kernel/r2ec/src/Makefile
Normal file
1
6.7/package/kernel/r2ec/src/Makefile
Normal file
|
|
@ -0,0 +1 @@
|
|||
obj-m += r2ec.o
|
||||
60
6.7/package/kernel/r2ec/src/io.h
Normal file
60
6.7/package/kernel/r2ec/src/io.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#ifndef R2EC_IO_H
|
||||
#define R2EC_IO_H
|
||||
|
||||
#define NO_OF_GPIOS 37
|
||||
|
||||
enum proto_version {
|
||||
PROTO_VERSION_1 = 0x01,
|
||||
PROTO_VERSION_2 = 0x02
|
||||
};
|
||||
|
||||
enum cmd_type_id {
|
||||
CMD_GPIO = 0x06,
|
||||
CMD_PROTO = 0xFC,
|
||||
CMD_FW = 0xFD,
|
||||
CMD_BOOT = 0xFE
|
||||
};
|
||||
|
||||
enum proto_id {
|
||||
PROTO_GET_SUPPORTED = 0x03
|
||||
};
|
||||
|
||||
enum boot_id {
|
||||
BOOT_START_APP = 0x03,
|
||||
BOOT_STATE = 0xFD,
|
||||
BOOT_VERSION = 0xFE
|
||||
};
|
||||
|
||||
enum state_id {
|
||||
NO_IMAGE_FOUND = 0x17,
|
||||
BOOT_STARTED = 0x18,
|
||||
WATCHDOG_RESET = 0x1B,
|
||||
APPLICATION_START_FAIL = 0x99,
|
||||
HARD_FAULT_ERROR = 0x9A,
|
||||
APP_STARTED = 0xFC,
|
||||
NO_DATA_AVAILABLE = 0xFF
|
||||
};
|
||||
|
||||
enum ack_id {
|
||||
STATUS_ACK = 0x7D,
|
||||
STATUS_NACK = 0x7E
|
||||
};
|
||||
|
||||
enum gpio_state {
|
||||
GPIO_STATE_HIGH = 0x1E,
|
||||
GPIO_STATE_LOW = 0x9F
|
||||
};
|
||||
|
||||
enum gpio_mode {
|
||||
GPIO_VALUE_SET_LOW = 0x00,
|
||||
GPIO_VALUE_SET_HIGH = 0x01,
|
||||
GPIO_VALUE_GET = 0x02,
|
||||
GPIO_MODE_SET_OUTPUT = 0x04,
|
||||
GPIO_MODE_SET_INPUT = 0x05
|
||||
};
|
||||
|
||||
enum fw_id {
|
||||
FW_VERSION = 0x01
|
||||
};
|
||||
|
||||
#endif // R2EC_IO_H
|
||||
752
6.7/package/kernel/r2ec/src/r2ec.c
Normal file
752
6.7/package/kernel/r2ec/src/r2ec.c
Normal file
|
|
@ -0,0 +1,752 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include "io.h"
|
||||
|
||||
static const struct i2c_device_id r2ec_id[] = {
|
||||
{ "stm32v1", NO_OF_GPIOS },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, r2ec_id);
|
||||
|
||||
static const struct of_device_id r2ec_of_table[] = {
|
||||
{ .compatible = "tlt,stm32v1" },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, r2ec_of_table);
|
||||
|
||||
static uint8_t g_proto;
|
||||
|
||||
struct r2ec {
|
||||
struct gpio_chip chip;
|
||||
struct irq_chip irqchip;
|
||||
struct i2c_client *client;
|
||||
struct mutex i2c_lock;
|
||||
struct mutex irq_lock;
|
||||
int ic_ready;
|
||||
};
|
||||
|
||||
struct r2ec_platform_data {
|
||||
unsigned gpio_base;
|
||||
|
||||
int (*setup)(struct i2c_client *client, int gpio, unsigned ngpio,
|
||||
void *context);
|
||||
|
||||
int (*teardown)(struct i2c_client *client, int gpio, unsigned ngpio,
|
||||
void *context);
|
||||
|
||||
void *context;
|
||||
};
|
||||
|
||||
struct i2c_request {
|
||||
uint8_t version;
|
||||
uint16_t length;
|
||||
uint8_t command;
|
||||
uint8_t data[1];
|
||||
// uint8_t checksum; // invisible
|
||||
} __attribute__((packed));
|
||||
|
||||
struct i2c_response {
|
||||
uint8_t version;
|
||||
uint8_t length;
|
||||
uint8_t command;
|
||||
uint8_t data[7];
|
||||
uint8_t checksum;
|
||||
} __attribute__((packed));
|
||||
|
||||
static uint8_t calc_crc8(const uint8_t *data, size_t len)
|
||||
{
|
||||
uint8_t crc = 0xFF;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
|
||||
for (j = 0; j < len; j++) {
|
||||
crc ^= data[j];
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
crc = (crc & 0x80) ? (crc ^ 0xD5) << 1 : crc << 1;
|
||||
}
|
||||
}
|
||||
|
||||
return crc;
|
||||
}
|
||||
|
||||
// generate outcoming mesage checksum and write i2c data
|
||||
static int stm32_write(struct i2c_client *client, uint8_t ver, uint8_t cmd, uint8_t *data, size_t len)
|
||||
{
|
||||
struct i2c_request *req = NULL;
|
||||
const int tmp_len = sizeof(struct i2c_request) + 1;
|
||||
uint8_t tmp[sizeof(struct i2c_request) + 1];
|
||||
int err = 0;
|
||||
|
||||
if (!client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
req = (struct i2c_request *)tmp;
|
||||
req->version = ver;
|
||||
req->length = 2 + len; // 2 + data_len
|
||||
req->command = cmd;
|
||||
|
||||
memcpy(req->data, data, len);
|
||||
|
||||
req->data[len] = calc_crc8(tmp, tmp_len - 1);
|
||||
|
||||
if ((err = i2c_master_send(client, tmp, tmp_len)) < 0) {
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// attempt to read i2c data
|
||||
static int stm32_read(struct i2c_client *client, uint8_t *data, size_t len)
|
||||
{
|
||||
char buffer[64] = { 0 };
|
||||
uint8_t checksum;
|
||||
int err;
|
||||
unsigned i, cnt = 0;
|
||||
|
||||
if (!client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
retry:
|
||||
if ((err = i2c_master_recv(client, data, len)) < 0) {
|
||||
if (err == -ETIMEDOUT && cnt < 10) {
|
||||
cnt++;
|
||||
msleep(10);
|
||||
goto retry;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
if (len == 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ignore checksum on partial i2c response
|
||||
if (len == sizeof(struct i2c_response) - 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 0xFF - no data available
|
||||
if (*(data + 3) == 0xFF) {
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
// generate checksum and verify
|
||||
checksum = calc_crc8(data, len - 1);
|
||||
|
||||
if (checksum != *(data + len - 1)) {
|
||||
for (i = 0; i < len; i++) {
|
||||
snprintf(buffer + strlen(buffer), sizeof(buffer),
|
||||
"%02X ", *(data + i));
|
||||
}
|
||||
|
||||
dev_err(&client->dev, "Checksum of incoming message "
|
||||
"does not match!\n"
|
||||
"Received: %s\n", buffer);
|
||||
|
||||
// for some reason checksum might appear as 1st byte in the
|
||||
// data buffer, and actual checksum byte is zero
|
||||
// apply quirk - discard first byte, skip checksum checking
|
||||
if (!*(data + len - 1)) {
|
||||
dev_err(&client->dev,
|
||||
"Applying wrong-checksum quirk...\n");
|
||||
memmove(data, data + 1, len - 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -EBADE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// attempt to retrieve supported protocol version, then retrieve device state
|
||||
// and boot into application state
|
||||
// this is done without interrupt, so there should be delay after writing
|
||||
// request and before reading response for protocol versions up until v2
|
||||
static int stm32_prepare(struct r2ec *gpio, struct i2c_client *client)
|
||||
{
|
||||
struct i2c_response rsp;
|
||||
uint8_t data[1], recv[1];
|
||||
int ret;
|
||||
|
||||
memset(&rsp, 0, sizeof(rsp));
|
||||
|
||||
data[0] = PROTO_GET_SUPPORTED;
|
||||
|
||||
if ((ret = stm32_write(client, 1, CMD_PROTO, data, 1))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: proto version write failed (%d)\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// due compatibility reasons delay is needed between write/read
|
||||
// operations
|
||||
msleep(10);
|
||||
|
||||
if ((ret = stm32_read(client, (uint8_t *)&rsp, sizeof(rsp)))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: proto version read failed (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
g_proto = rsp.data[1];
|
||||
|
||||
// fallback to version 1
|
||||
if (g_proto != PROTO_VERSION_1 && g_proto != PROTO_VERSION_2) {
|
||||
printk("STM32 fallback protocol: %u\n", g_proto);
|
||||
g_proto = PROTO_VERSION_1;
|
||||
}
|
||||
|
||||
printk("STM32 supported protocol: %u\n", g_proto);
|
||||
|
||||
data[0] = BOOT_STATE;
|
||||
|
||||
if ((ret = stm32_write(client, g_proto, CMD_BOOT, data, 1))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: boot state write failed (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = stm32_read(client, recv, 1))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: boot state read failed (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// device might be not ready aka in bootloader state
|
||||
// we might need to ignore gpio_write status value
|
||||
gpio->ic_ready = 0;
|
||||
|
||||
// handle the following possible states reported either from
|
||||
// bootloader or system:
|
||||
switch (recv[0]) {
|
||||
case NO_IMAGE_FOUND:
|
||||
case APP_STARTED:
|
||||
// device is ready, no need to ignore gpio_write status value
|
||||
// note: on no_image_found, user-space flasher will reflash
|
||||
// firmware and device will be rebooted
|
||||
gpio->ic_ready = 1;
|
||||
return 0;
|
||||
case BOOT_STARTED:
|
||||
case WATCHDOG_RESET:
|
||||
case APPLICATION_START_FAIL:
|
||||
case HARD_FAULT_ERROR:
|
||||
case NO_DATA_AVAILABLE:
|
||||
break;
|
||||
default:
|
||||
dev_err(&client->dev, "Device did not responded with correct "
|
||||
"state! Actual response was 0x%02X. "
|
||||
"Unable to get device state!\n", recv[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
data[0] = BOOT_START_APP;
|
||||
|
||||
if ((ret = stm32_write(client, g_proto, CMD_BOOT, data, 1))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: boot start write failed (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = stm32_read(client, recv, 1))) {
|
||||
dev_err(&client->dev,
|
||||
"stm32_prepare: boot start read failed (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (recv[0] != STATUS_ACK && recv[0] != NO_DATA_AVAILABLE) {
|
||||
dev_err(&client->dev, "Device did not responded with ACK. "
|
||||
"Actual response was 0x%02X. "
|
||||
"Unable to set device state!\n", recv[0]);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stm32_gpio_write(struct r2ec *gpio, int pin, int val)
|
||||
{
|
||||
struct i2c_request *req;
|
||||
size_t len = 2;
|
||||
uint8_t tmp[sizeof(struct i2c_request) + 2];
|
||||
//int err;
|
||||
|
||||
if (!gpio->client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
req = (struct i2c_request *)tmp;
|
||||
req->version = PROTO_VERSION_2;
|
||||
req->length = 2 + len; // command + crc + data
|
||||
req->command = CMD_GPIO;
|
||||
req->data[0] = pin;
|
||||
req->data[1] = val;
|
||||
|
||||
i2c_master_send(gpio->client, tmp, sizeof(tmp));
|
||||
// if ((err = i2c_master_send(gpio->client, tmp, sizeof(tmp))) < 0) {
|
||||
// if (err != -ENXIO) {
|
||||
// return err;
|
||||
// }
|
||||
|
||||
// we need to ignore errors while device is not ready
|
||||
// otherwise none of GPIOs/LEDs will be probed by the kernel
|
||||
// if (!gpio->ic_ready) {
|
||||
// err = 0;
|
||||
// }
|
||||
//
|
||||
// return err;
|
||||
// }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stm32_gpio_read(struct r2ec *gpio, int pin, int val)
|
||||
{
|
||||
struct i2c_request *req;
|
||||
size_t len = 2;
|
||||
uint8_t tmp[sizeof(struct i2c_request) + 2];
|
||||
uint8_t recv[1];
|
||||
int err;
|
||||
|
||||
if (!gpio->client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
req = (struct i2c_request *)tmp;
|
||||
req->version = PROTO_VERSION_2;
|
||||
req->length = 2 + len; // command + crc + data
|
||||
req->command = CMD_GPIO;
|
||||
req->data[0] = pin;
|
||||
req->data[1] = val;
|
||||
|
||||
if ((err = i2c_master_send(gpio->client, tmp, sizeof(tmp))) < 0) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((err = i2c_master_recv(gpio->client, recv, sizeof(recv))) < 0) {
|
||||
return err;
|
||||
}
|
||||
|
||||
switch (recv[0]) {
|
||||
case GPIO_STATE_HIGH:
|
||||
return 1;
|
||||
case GPIO_STATE_LOW:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
static int r2ec_get(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct r2ec *gpio = gpiochip_get_data(chip);
|
||||
int value;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
value = stm32_gpio_read(gpio, offset, GPIO_VALUE_GET);
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static void r2ec_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||
{
|
||||
struct r2ec *gpio = gpiochip_get_data(chip);
|
||||
int val = value ? GPIO_VALUE_SET_HIGH : GPIO_VALUE_SET_LOW;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
stm32_gpio_write(gpio, offset, val);
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
}
|
||||
|
||||
static int r2ec_input(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct r2ec *gpio = gpiochip_get_data(chip);
|
||||
int status;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
status = stm32_gpio_write(gpio, offset, GPIO_MODE_SET_INPUT);
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static int r2ec_output(struct gpio_chip *chip, unsigned offset, int value)
|
||||
{
|
||||
struct r2ec *gpio = gpiochip_get_data(chip);
|
||||
int status;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
status = stm32_gpio_write(gpio, offset, GPIO_MODE_SET_OUTPUT);
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
|
||||
r2ec_set(chip, offset, value);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static void noop(struct irq_data *data) { }
|
||||
|
||||
static int noop_wake(struct irq_data *data, unsigned on)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static irqreturn_t r2ec_irq(int irq, void *data)
|
||||
{
|
||||
struct r2ec *gpio = data;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < gpio->chip.ngpio; i++) {
|
||||
handle_nested_irq(irq_find_mapping(gpio->chip.irq.domain, i));
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static void r2ec_irq_bus_lock(struct irq_data *data)
|
||||
{
|
||||
struct r2ec *gpio = irq_data_get_irq_chip_data(data);
|
||||
mutex_lock(&gpio->irq_lock);
|
||||
}
|
||||
|
||||
static void r2ec_irq_bus_sync_unlock(struct irq_data *data)
|
||||
{
|
||||
struct r2ec *gpio = irq_data_get_irq_chip_data(data);
|
||||
mutex_unlock(&gpio->irq_lock);
|
||||
}
|
||||
|
||||
static int chip_label_match(struct gpio_chip *chip, void *data)
|
||||
{
|
||||
return !strcmp(chip->label, data);
|
||||
}
|
||||
|
||||
static int get_stm32_version(struct device *dev, uint8_t type, char *buffer)
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct r2ec *gpio;
|
||||
uint8_t recv[sizeof(struct i2c_response)];
|
||||
uint8_t data[1];
|
||||
int ret;
|
||||
|
||||
struct pt_fw_get_ver {
|
||||
unsigned char command_ex;
|
||||
unsigned char major;
|
||||
unsigned char middle;
|
||||
unsigned char minor;
|
||||
unsigned char rev;
|
||||
} __attribute__((packed)) *res;
|
||||
|
||||
chip = gpiochip_find("stm32v1", chip_label_match);
|
||||
if (!chip) {
|
||||
printk(KERN_ERR "Unable to find R2EC gpio chip!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
gpio = gpiochip_get_data(chip);
|
||||
|
||||
if (!gpio->client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
data[0] = (type == CMD_FW) ? FW_VERSION : BOOT_VERSION;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
|
||||
if ((ret = stm32_write(gpio->client, g_proto, type, data, 1))) {
|
||||
printk("%s: firmware version write failed (%d)\n",
|
||||
__func__, ret);
|
||||
goto done;
|
||||
}
|
||||
|
||||
// prevent possible I2C bus lockup when master requests more than 1 byte
|
||||
// and slave only sends a couple of bytes, but master is still waiting
|
||||
// and SCL line is down; there is no recovery except power cycle
|
||||
// first read 1 byte and compare with supported protocol versions
|
||||
// if they match, then full messsage can be read, otherwise drop
|
||||
// everything to not introduce bus lockup
|
||||
if ((ret = stm32_read(gpio->client, data, 1))) {
|
||||
printk("%s: firmware version read failed (%d)\n",
|
||||
__func__, ret);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (data[0] != PROTO_VERSION_1 && data[0] != PROTO_VERSION_2) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
recv[0] = data[0];
|
||||
|
||||
if ((ret = stm32_read(gpio->client, &recv[1], sizeof(recv) - 1))) {
|
||||
printk("%s: firmware version read failed (%d)\n",
|
||||
__func__, ret);
|
||||
goto done;
|
||||
}
|
||||
|
||||
// device is ready now, running in application-mode
|
||||
// this is called by autoflasher script first time
|
||||
if (!gpio->ic_ready) {
|
||||
gpio->ic_ready = 1;
|
||||
}
|
||||
|
||||
res = (struct pt_fw_get_ver *)(&recv[3]);
|
||||
|
||||
sprintf(buffer, "%02d.%02d.%02d rev. %02d\n",
|
||||
res->major, res->middle, res->minor, res->rev);
|
||||
|
||||
done:
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
return strlen(buffer);
|
||||
}
|
||||
|
||||
static ssize_t app_version_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buffer)
|
||||
{
|
||||
return get_stm32_version(dev, CMD_FW, buffer);
|
||||
}
|
||||
|
||||
static ssize_t boot_version_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buffer)
|
||||
{
|
||||
return get_stm32_version(dev, CMD_BOOT, buffer);
|
||||
}
|
||||
|
||||
static ssize_t reset_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buff, size_t count)
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct r2ec *gpio;
|
||||
uint8_t data[1];
|
||||
|
||||
chip = gpiochip_find("stm32v1", chip_label_match);
|
||||
if (!chip) {
|
||||
printk(KERN_ERR "Unable to find R2EC gpio chip!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
gpio = gpiochip_get_data(chip);
|
||||
|
||||
if (!gpio->client) {
|
||||
printk(KERN_ERR "R2EC I2C client is not ready!\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
data[0] = BOOT_START_APP;
|
||||
|
||||
mutex_lock(&gpio->i2c_lock);
|
||||
if (stm32_write(gpio->client, g_proto, CMD_BOOT, data, 1)) {
|
||||
printk(KERN_ERR "Unable transmit R2EC data!\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
mutex_unlock(&gpio->i2c_lock);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static struct device_attribute g_r2ec_kobj_attr[] = {
|
||||
__ATTR_RO(app_version),
|
||||
__ATTR_RO(boot_version),
|
||||
__ATTR_WO(reset)
|
||||
};
|
||||
|
||||
static struct attribute *g_r2ec_attrs[] = {
|
||||
&g_r2ec_kobj_attr[0].attr,
|
||||
&g_r2ec_kobj_attr[1].attr,
|
||||
&g_r2ec_kobj_attr[2].attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct attribute_group g_r2ec_attr_group = { .attrs = g_r2ec_attrs };
|
||||
static struct kobject *g_r2ec_kobj;
|
||||
|
||||
static int r2ec_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
{
|
||||
struct r2ec_platform_data *pdata = dev_get_platdata(&client->dev);
|
||||
// dev_err(&client->dev,
|
||||
// "r2ec_probe: dev_get_platdata(0x%x, %s): 0x%x\n",
|
||||
// client->addr, client->name, pdata);
|
||||
struct r2ec *gpio;
|
||||
struct gpio_irq_chip *girq;
|
||||
int status, i;
|
||||
|
||||
gpio = devm_kzalloc(&client->dev, sizeof(*gpio), GFP_KERNEL);
|
||||
if (!gpio) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
if (!(status = stm32_prepare(gpio, client))) {
|
||||
break;
|
||||
}
|
||||
|
||||
dev_err(&client->dev,
|
||||
"Unable to initialize device, retrying...\n");
|
||||
|
||||
// give some time for next interation...
|
||||
msleep(500);
|
||||
}
|
||||
|
||||
if (status) {
|
||||
dev_err(&client->dev, "Unable to initialize device!\n");
|
||||
devm_kfree(&client->dev, gpio);
|
||||
return status;
|
||||
}
|
||||
|
||||
mutex_init(&gpio->irq_lock);
|
||||
mutex_init(&gpio->i2c_lock);
|
||||
|
||||
lockdep_set_subclass(&gpio->i2c_lock,
|
||||
i2c_adapter_depth(client->adapter));
|
||||
|
||||
gpio->chip.base = pdata ? pdata->gpio_base : -1;
|
||||
gpio->chip.can_sleep = true;
|
||||
gpio->chip.parent = &client->dev;
|
||||
gpio->chip.owner = THIS_MODULE;
|
||||
gpio->chip.get = r2ec_get;
|
||||
gpio->chip.set = r2ec_set;
|
||||
gpio->chip.direction_input = r2ec_input;
|
||||
gpio->chip.direction_output = r2ec_output;
|
||||
gpio->chip.ngpio = id->driver_data;
|
||||
gpio->chip.label = client->name;
|
||||
gpio->client = client;
|
||||
|
||||
i2c_set_clientdata(client, gpio);
|
||||
|
||||
if (client->irq) {
|
||||
gpio->irqchip.name = "r2ec";
|
||||
gpio->irqchip.irq_enable = noop,
|
||||
gpio->irqchip.irq_disable = noop,
|
||||
gpio->irqchip.irq_ack = noop,
|
||||
gpio->irqchip.irq_mask = noop,
|
||||
gpio->irqchip.irq_unmask = noop,
|
||||
gpio->irqchip.irq_set_wake = noop_wake,
|
||||
gpio->irqchip.irq_bus_lock = r2ec_irq_bus_lock;
|
||||
gpio->irqchip.irq_bus_sync_unlock = r2ec_irq_bus_sync_unlock;
|
||||
|
||||
girq = &gpio->chip.irq;
|
||||
girq->chip = &gpio->irqchip;
|
||||
/* This will let us handle the parent IRQ in the driver */
|
||||
girq->parent_handler = NULL;
|
||||
girq->num_parents = 0;
|
||||
girq->parents = NULL;
|
||||
girq->default_type = IRQ_TYPE_NONE;
|
||||
girq->handler = handle_bad_irq;
|
||||
girq->threaded = true;
|
||||
|
||||
status = devm_gpiochip_add_data(&client->dev, &gpio->chip, gpio);
|
||||
|
||||
if (status) {
|
||||
dev_err(&client->dev, "cannot add irqchip\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
status = devm_request_threaded_irq(&client->dev, client->irq,
|
||||
NULL, r2ec_irq,
|
||||
IRQF_ONESHOT |
|
||||
IRQF_TRIGGER_FALLING |
|
||||
IRQF_SHARED,
|
||||
dev_name(&client->dev),
|
||||
gpio);
|
||||
if (status) {
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata && pdata->setup) {
|
||||
status = pdata->setup(client, gpio->chip.base, gpio->chip.ngpio,
|
||||
pdata->context);
|
||||
|
||||
if (status < 0) {
|
||||
dev_warn(&client->dev, "setup --> %d\n", status);
|
||||
}
|
||||
}
|
||||
|
||||
dev_info(&client->dev, "probed\n");
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
devm_kfree(&client->dev, gpio);
|
||||
dev_dbg(&client->dev, "probe error %d for %s\n", status, client->name);
|
||||
return status;
|
||||
}
|
||||
|
||||
static void r2ec_remove(struct i2c_client *client)
|
||||
{
|
||||
struct r2ec_platform_data *pdata = dev_get_platdata(&client->dev);
|
||||
struct r2ec *gpio = i2c_get_clientdata(client);
|
||||
int status = 0;
|
||||
|
||||
if (pdata && pdata->teardown) {
|
||||
status = pdata->teardown(client, gpio->chip.base, gpio->chip.ngpio,
|
||||
pdata->context);
|
||||
|
||||
if (status < 0) {
|
||||
dev_err(&client->dev, "%s --> %d\n", "teardown", status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static struct i2c_driver r2ec_driver = {
|
||||
.driver = {
|
||||
.name = "r2ec",
|
||||
.of_match_table = of_match_ptr(r2ec_of_table),
|
||||
},
|
||||
.probe = r2ec_probe,
|
||||
.remove = r2ec_remove,
|
||||
.id_table = r2ec_id,
|
||||
};
|
||||
|
||||
static int __init r2ec_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = i2c_add_driver(&r2ec_driver);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "Unable to initialize `r2ec` driver!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
g_r2ec_kobj = kobject_create_and_add("r2ec", NULL);
|
||||
if (!g_r2ec_kobj) {
|
||||
i2c_del_driver(&r2ec_driver);
|
||||
printk(KERN_ERR "Unable to create `r2ec` kobject!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (sysfs_create_group(g_r2ec_kobj, &g_r2ec_attr_group)) {
|
||||
kobject_put(g_r2ec_kobj);
|
||||
i2c_del_driver(&r2ec_driver);
|
||||
printk(KERN_ERR "Unable to create `r2ec` sysfs group!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit r2ec_exit(void)
|
||||
{
|
||||
kobject_put(g_r2ec_kobj);
|
||||
i2c_del_driver(&r2ec_driver);
|
||||
}
|
||||
|
||||
module_init(r2ec_init);
|
||||
module_exit(r2ec_exit);
|
||||
|
||||
MODULE_AUTHOR("Jokubas Maciulaitis <jokubas.maciulaitis@teltonika.lt>");
|
||||
MODULE_DESCRIPTION("STM32F0 (R2EC) I2C GPIO Expander driver");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
Loading…
Add table
Add a link
Reference in a new issue