diff --git a/patch.sh b/patch.sh index f684c5de0e9d25564b74e600f80d3531a91a2673..0e14d132849fcc03f408490db9e2b21f9ebba9be 100644 --- a/patch.sh +++ b/patch.sh @@ -429,7 +429,7 @@ local_patch () { } #external_git -#aufs +aufs wpanusb #rt wireless_regdb @@ -473,35 +473,20 @@ patch_backports (){ } backports () { - backport_tag="v5.12" + backport_tag="v4.x-y" - subsystem="greybus" + subsystem="xyz" #regenerate="enable" if [ "x${regenerate}" = "xenable" ] ; then pre_backports - cp -rv ~/linux-src/drivers/greybus/* ./drivers/greybus/ - cp -rv ~/linux-src/drivers/staging/greybus/* ./drivers/staging/greybus/ + mkdir -p ./x/ + cp -v ~/linux-src/x/* ./x/ post_backports exit 2 -# else -# patch_backports - fi - - backport_tag="v5.12" - - subsystem="wlcore" - #regenerate="enable" - if [ "x${regenerate}" = "xenable" ] ; then - pre_backports - - cp -rv ~/linux-src/drivers/net/wireless/ti/* ./drivers/net/wireless/ti/ - - post_backports - exit 2 -# else -# patch_backports + else + patch_backports fi } @@ -534,10 +519,10 @@ drivers () { dir 'drivers/ti/cpsw' dir 'drivers/ti/serial' dir 'drivers/ti/tsc' + dir 'drivers/ti/gpio' dir 'drivers/greybus' dir 'drivers/serdev' dir 'drivers/fb_ssd1306' - dir 'drivers/bluetooth' } soc () { @@ -556,7 +541,7 @@ soc packaging () { #do_backport="enable" if [ "x${do_backport}" = "xenable" ] ; then - backport_tag="v5.10.46" + backport_tag="v5.10.50" subsystem="bindeb-pkg" #regenerate="enable" diff --git a/patches/aufs/0001-merge-aufs-kbuild.patch b/patches/aufs/0001-merge-aufs-kbuild.patch index 66a91f3bd0afa2fa3ae41be60a1732f6e8988776..63845f783e85b6c563a61a6e4d49f30dc678c1ea 100644 --- a/patches/aufs/0001-merge-aufs-kbuild.patch +++ b/patches/aufs/0001-merge-aufs-kbuild.patch @@ -1,6 +1,6 @@ -From 8e6c1679dab270cabf1bc2938159bbd781362ca7 Mon Sep 17 00:00:00 2001 +From df155940794f55f0a0f06553dbb7f7dc0c912cc2 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 4 May 2021 14:38:55 -0500 +Date: Wed, 14 Jul 2021 16:21:15 -0500 Subject: [PATCH 1/5] merge: aufs-kbuild Signed-off-by: Robert Nelson <robertcnelson@gmail.com> @@ -10,10 +10,10 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> 2 files changed, 2 insertions(+) diff --git a/fs/Kconfig b/fs/Kconfig -index a55bda4233bb..c4984b5bf340 100644 +index 141a856c50e7..6741d695b1df 100644 --- a/fs/Kconfig +++ b/fs/Kconfig -@@ -288,6 +288,7 @@ source "fs/sysv/Kconfig" +@@ -292,6 +292,7 @@ source "fs/sysv/Kconfig" source "fs/ufs/Kconfig" source "fs/erofs/Kconfig" source "fs/vboxsf/Kconfig" @@ -22,10 +22,10 @@ index a55bda4233bb..c4984b5bf340 100644 endif # MISC_FILESYSTEMS diff --git a/fs/Makefile b/fs/Makefile -index 3215fe205256..7218277473b8 100644 +index 9c708e1fbe8f..fde6be84a083 100644 --- a/fs/Makefile +++ b/fs/Makefile -@@ -135,3 +135,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +@@ -136,3 +136,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ obj-$(CONFIG_EROFS_FS) += erofs/ obj-$(CONFIG_VBOXSF_FS) += vboxsf/ obj-$(CONFIG_ZONEFS_FS) += zonefs/ diff --git a/patches/aufs/0002-merge-aufs-base.patch b/patches/aufs/0002-merge-aufs-base.patch index 8445e962872a0c1258a63580b773ad66059b4460..1c14fb46ec4a5aea7f379ce24d6dfb5414149491 100644 --- a/patches/aufs/0002-merge-aufs-base.patch +++ b/patches/aufs/0002-merge-aufs-base.patch @@ -1,6 +1,6 @@ -From dd44ec92671a343a28e4304c443485f86357ead2 Mon Sep 17 00:00:00 2001 +From 576c9dd4cfb5a5aabf31afd2b920c7afb4dd3b6e Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 4 May 2021 14:38:55 -0500 +Date: Wed, 14 Jul 2021 16:21:15 -0500 Subject: [PATCH 2/5] merge: aufs-base Signed-off-by: Robert Nelson <robertcnelson@gmail.com> @@ -21,12 +21,12 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> 13 files changed, 65 insertions(+), 10 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS -index 9450e052f1b1..f7db6edba5a3 100644 +index 0cce91cd5624..717b6a2402f9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -2992,6 +2992,19 @@ F: include/linux/audit.h - F: include/uapi/linux/audit.h +@@ -3040,6 +3040,19 @@ F: include/uapi/linux/audit.h F: kernel/audit* + F: lib/*audit.c +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" <hooanon05g@gmail.com> @@ -45,10 +45,10 @@ index 9450e052f1b1..f7db6edba5a3 100644 M: Miguel Ojeda <ojeda@kernel.org> S: Maintained diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index a370cde3ddd4..01ca256575fb 100644 +index 8271df125153..ddd36de11b9a 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -761,6 +761,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -762,6 +762,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, return error; } @@ -74,10 +74,10 @@ index a370cde3ddd4..01ca256575fb 100644 static ssize_t loop_attr_show(struct device *dev, char *page, diff --git a/fs/dcache.c b/fs/dcache.c -index 7d24ff7eb206..3caa7ab4b84f 100644 +index cf871a81f4fd..bc5095b734f5 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1318,7 +1318,7 @@ enum d_walk_ret { +@@ -1320,7 +1320,7 @@ enum d_walk_ret { * * The @enter() callbacks are called with d_lock held. */ @@ -109,10 +109,10 @@ index dfc72f15be7f..d8a12eb63961 100644 return error; diff --git a/fs/inode.c b/fs/inode.c -index a047ab306f9a..ba1df0895b69 100644 +index c93500d84264..f24d21236ad0 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1772,7 +1772,7 @@ EXPORT_SYMBOL(generic_update_time); +@@ -1778,7 +1778,7 @@ EXPORT_SYMBOL(generic_update_time); * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ @@ -122,7 +122,7 @@ index a047ab306f9a..ba1df0895b69 100644 if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); diff --git a/fs/namespace.c b/fs/namespace.c -index 56bb5a5fdc0d..540679d7e043 100644 +index c3f1a78ba369..07e6c53964fc 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -807,6 +807,12 @@ static inline int check_mnt(struct mount *mnt) @@ -180,10 +180,10 @@ index 1373a610dc78..b7b5a0a0df6f 100644 if (wait) sync_inodes_sb(sb); diff --git a/include/linux/fs.h b/include/linux/fs.h -index ec8f3ddf4a6a..4fa4b24535fd 100644 +index c3c88fdb9b2a..93eb43e002d9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1332,6 +1332,7 @@ extern void fasync_free(struct fasync_struct *); +@@ -1335,6 +1335,7 @@ extern void fasync_free(struct fasync_struct *); /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); @@ -191,7 +191,7 @@ index ec8f3ddf4a6a..4fa4b24535fd 100644 extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); -@@ -1909,6 +1910,7 @@ struct file_operations { +@@ -2043,6 +2044,7 @@ struct file_operations { ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); @@ -199,7 +199,7 @@ index ec8f3ddf4a6a..4fa4b24535fd 100644 int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -2428,6 +2430,7 @@ extern int current_umask(void); +@@ -2565,6 +2567,7 @@ extern int current_umask(void); extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); @@ -207,7 +207,7 @@ index ec8f3ddf4a6a..4fa4b24535fd 100644 /* /sys/fs */ extern struct kobject *fs_kobj; -@@ -2668,6 +2671,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) +@@ -2805,6 +2808,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) } void emergency_thaw_all(void); @@ -216,7 +216,7 @@ index ec8f3ddf4a6a..4fa4b24535fd 100644 extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h -index 7b7ebf2e28ec..20c46305e057 100644 +index 5cf387813754..59b65e1a9e85 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h @@ -248,6 +248,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, @@ -264,10 +264,10 @@ index a55179fd60fc..8e21c53cf883 100644 + unsigned int flags); #endif diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index f160f1c97ca1..fe71c2737eb9 100644 +index 9125bd419216..a5e25d0e6751 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -188,7 +188,7 @@ static +@@ -189,7 +189,7 @@ static struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; static DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); @@ -276,7 +276,7 @@ index f160f1c97ca1..fe71c2737eb9 100644 { unsigned int class_idx = hlock->class_idx; -@@ -209,6 +209,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) +@@ -210,6 +210,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) */ return lock_classes + class_idx; } diff --git a/patches/aufs/0003-merge-aufs-mmap.patch b/patches/aufs/0003-merge-aufs-mmap.patch index 58325177d082cb34ebe1b37efd10d11362e3fda8..3c36a9235a6f830f104ce41186237f5680f4a92e 100644 --- a/patches/aufs/0003-merge-aufs-mmap.patch +++ b/patches/aufs/0003-merge-aufs-mmap.patch @@ -1,6 +1,6 @@ -From 30d9dd6b2c29f1e9f4d339bcfc42e03d48a039e7 Mon Sep 17 00:00:00 2001 +From 1f31aabbafb731fcb83d05a52a6a3a2ebd64f700 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 4 May 2021 14:38:55 -0500 +Date: Wed, 14 Jul 2021 16:21:15 -0500 Subject: [PATCH 3/5] merge: aufs-mmap Signed-off-by: Robert Nelson <robertcnelson@gmail.com> @@ -21,7 +21,7 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> create mode 100644 mm/prfile.c diff --git a/fs/proc/base.c b/fs/proc/base.c -index 3851bfcdba56..d632ddd5f5ee 100644 +index 9cbd915025ad..8a47b17c557e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2183,7 +2183,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) @@ -50,7 +50,7 @@ index 13452b32e2bd..38acccfef9d4 100644 ino = inode->i_ino; } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index e862cab69583..5c45041943a6 100644 +index 7389df326edd..0c6a9fc1db58 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -280,7 +280,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma) @@ -65,7 +65,7 @@ index e862cab69583..5c45041943a6 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1861,7 +1864,7 @@ static int show_numa_map(struct seq_file *m, void *v) +@@ -1864,7 +1867,7 @@ static int show_numa_map(struct seq_file *m, void *v) struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; @@ -91,10 +91,10 @@ index a6d21fc0033c..02c2de31196e 100644 ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; diff --git a/include/linux/mm.h b/include/linux/mm.h -index 8ba434287387..6d23d40ad152 100644 +index 9afb8998e7e5..df2b3c73235c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1759,6 +1759,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, +@@ -1801,6 +1801,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, unmap_mapping_range(mapping, holebegin, holelen, 0); } @@ -124,7 +124,7 @@ index 8ba434287387..6d23d40ad152 100644 void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 6613b26a8894..e94df45b5483 100644 +index 8f0fb62e8975..5043c0702c10 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -279,6 +279,7 @@ struct vm_region { @@ -144,10 +144,10 @@ index 6613b26a8894..e94df45b5483 100644 #ifdef CONFIG_SWAP diff --git a/kernel/fork.c b/kernel/fork.c -index 426cd0c51f9e..ea0ae494c6dd 100644 +index 567fee340500..5ffbfa7ddcfa 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -555,7 +555,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, +@@ -559,7 +559,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; @@ -157,7 +157,7 @@ index 426cd0c51f9e..ea0ae494c6dd 100644 put_write_access(inode); i_mmap_lock_write(mapping); diff --git a/mm/Makefile b/mm/Makefile -index 72227b24a616..5d03943b08e0 100644 +index bf71e295e9f6..bd223b81c564 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -52,7 +52,7 @@ obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ @@ -170,10 +170,10 @@ index 72227b24a616..5d03943b08e0 100644 # Give 'page_alloc' its own module-parameter namespace page-alloc-y := page_alloc.o diff --git a/mm/filemap.c b/mm/filemap.c -index 6ce832dc59e7..8b7a71b6f0e6 100644 +index 66f7e9fdfbc4..f9a8ff48e697 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -3162,7 +3162,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) +@@ -3240,7 +3240,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) vm_fault_t ret = VM_FAULT_LOCKED; sb_start_pagefault(mapping->host->i_sb); @@ -183,10 +183,10 @@ index 6ce832dc59e7..8b7a71b6f0e6 100644 if (page->mapping != mapping) { unlock_page(page); diff --git a/mm/mmap.c b/mm/mmap.c -index 3f287599a7a3..eb36f1b18f04 100644 +index 0584e540246e..8b2f082002a9 100644 --- a/mm/mmap.c +++ b/mm/mmap.c -@@ -179,7 +179,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +@@ -185,7 +185,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -195,7 +195,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 mpol_put(vma_policy(vma)); vm_area_free(vma); return next; -@@ -949,7 +949,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, +@@ -955,7 +955,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -204,7 +204,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1895,7 +1895,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1901,7 +1901,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, return addr; unmap_and_free_vma: @@ -213,7 +213,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 vma->vm_file = NULL; /* Undo any partial mapping done by a device driver. */ -@@ -2755,7 +2755,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2761,7 +2761,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, goto out_free_mpol; if (new->vm_file) @@ -222,7 +222,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2774,7 +2774,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2780,7 +2780,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -231,7 +231,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2967,7 +2967,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2973,7 +2973,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -240,9 +240,9 @@ index 3f287599a7a3..eb36f1b18f04 100644 pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); -@@ -3042,10 +3042,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, - } - } +@@ -3032,10 +3032,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + if (vma->vm_flags & VM_LOCKED) + flags |= MAP_LOCKED; - file = get_file(vma->vm_file); + vma_get_file(vma); @@ -269,7 +269,7 @@ index 3f287599a7a3..eb36f1b18f04 100644 out: mmap_write_unlock(mm); if (populate) -@@ -3332,7 +3349,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -3322,7 +3339,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -279,10 +279,10 @@ index 3f287599a7a3..eb36f1b18f04 100644 new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); diff --git a/mm/nommu.c b/mm/nommu.c -index 5c9ab799c0e6..dd78905704c1 100644 +index 85a3a68dffb6..a2bee44172cc 100644 --- a/mm/nommu.c +++ b/mm/nommu.c -@@ -533,7 +533,7 @@ static void __put_nommu_region(struct vm_region *region) +@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region) up_write(&nommu_region_sem); if (region->vm_file) @@ -291,7 +291,7 @@ index 5c9ab799c0e6..dd78905704c1 100644 /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -665,7 +665,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -655,7 +655,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -300,7 +300,7 @@ index 5c9ab799c0e6..dd78905704c1 100644 put_nommu_region(vma->vm_region); vm_area_free(vma); } -@@ -1188,7 +1188,7 @@ unsigned long do_mmap(struct file *file, +@@ -1178,7 +1178,7 @@ unsigned long do_mmap(struct file *file, goto error_just_free; } } @@ -309,7 +309,7 @@ index 5c9ab799c0e6..dd78905704c1 100644 kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1265,10 +1265,10 @@ unsigned long do_mmap(struct file *file, +@@ -1255,10 +1255,10 @@ unsigned long do_mmap(struct file *file, up_write(&nommu_region_sem); error: if (region->vm_file) diff --git a/patches/aufs/0004-merge-aufs-standalone.patch b/patches/aufs/0004-merge-aufs-standalone.patch index 8bcf24d2cabb73cf3a3cbb50995fbcb9bea40226..227f0224200d6c7ce8fbc3ea1f9a60a84784d846 100644 --- a/patches/aufs/0004-merge-aufs-standalone.patch +++ b/patches/aufs/0004-merge-aufs-standalone.patch @@ -1,6 +1,6 @@ -From 16a5029a90f84452449328dc3b8fa741009fcd9c Mon Sep 17 00:00:00 2001 +From 796e669f00c89410d829a36fa93d985d15e1e699 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 4 May 2021 14:38:56 -0500 +Date: Wed, 14 Jul 2021 16:21:16 -0500 Subject: [PATCH 4/5] merge: aufs-standalone Signed-off-by: Robert Nelson <robertcnelson@gmail.com> @@ -23,10 +23,10 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> 15 files changed, 28 insertions(+) diff --git a/fs/dcache.c b/fs/dcache.c -index 3caa7ab4b84f..00e97c9ae7c4 100644 +index bc5095b734f5..9508bd57a3bc 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1423,6 +1423,7 @@ void d_walk(struct dentry *parent, void *data, +@@ -1425,6 +1425,7 @@ void d_walk(struct dentry *parent, void *data, seq = 1; goto again; } @@ -34,7 +34,7 @@ index 3caa7ab4b84f..00e97c9ae7c4 100644 struct check_mount { struct vfsmount *mnt; -@@ -2968,6 +2969,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) +@@ -2970,6 +2971,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) write_sequnlock(&rename_lock); } @@ -43,7 +43,7 @@ index 3caa7ab4b84f..00e97c9ae7c4 100644 /** * d_ancestor - search for an ancestor diff --git a/fs/exec.c b/fs/exec.c -index 18594f11c31f..ac38c0424d2a 100644 +index d7c4187ca023..9a004bc61169 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -114,6 +114,7 @@ bool path_noexec(const struct path *path) @@ -87,10 +87,10 @@ index 45437f8e1003..786af52904fc 100644 void __init files_init(void) { diff --git a/fs/inode.c b/fs/inode.c -index ba1df0895b69..0672530acf7d 100644 +index f24d21236ad0..78de5b5dc084 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1778,6 +1778,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags) +@@ -1784,6 +1784,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags) return inode->i_op->update_time(inode, time, flags); return generic_update_time(inode, time, flags); } @@ -99,7 +99,7 @@ index ba1df0895b69..0672530acf7d 100644 /** * atime_needs_update - update the access time diff --git a/fs/namespace.c b/fs/namespace.c -index 540679d7e043..74957d5edaa8 100644 +index 07e6c53964fc..df3e9a94be95 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -438,6 +438,7 @@ void __mnt_drop_write(struct vfsmount *mnt) @@ -118,7 +118,7 @@ index 540679d7e043..74957d5edaa8 100644 /* * vfsmount lock must be held for write -@@ -1985,6 +1987,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -1987,6 +1989,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } @@ -127,7 +127,7 @@ index 540679d7e043..74957d5edaa8 100644 static void lock_mnt_tree(struct mount *mnt) { diff --git a/fs/notify/group.c b/fs/notify/group.c -index ffd723ffe46d..ec6172836b6f 100644 +index fb89c351295d..460ad19c2570 100644 --- a/fs/notify/group.c +++ b/fs/notify/group.c @@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group) @@ -139,7 +139,7 @@ index ffd723ffe46d..ec6172836b6f 100644 /* * Drop a reference to a group. Free it if it's through. diff --git a/fs/open.c b/fs/open.c -index e53af13b5835..f37da065e654 100644 +index 53bc0573c0ec..4be00d1ec649 100644 --- a/fs/open.c +++ b/fs/open.c @@ -65,6 +65,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry, @@ -203,10 +203,10 @@ index b7b5a0a0df6f..fa5c7fba7f1b 100644 /* * Write out and wait upon all dirty data associated with this diff --git a/fs/xattr.c b/fs/xattr.c -index b3444e06cded..7b0f851b63d7 100644 +index 5c8c5175b385..ff7e9ff774b7 100644 --- a/fs/xattr.c +++ b/fs/xattr.c -@@ -383,6 +383,7 @@ vfs_getxattr_alloc(struct user_namespace *mnt_userns, struct dentry *dentry, +@@ -384,6 +384,7 @@ vfs_getxattr_alloc(struct user_namespace *mnt_userns, struct dentry *dentry, *xattr_value = value; return error; } @@ -215,10 +215,10 @@ index b3444e06cded..7b0f851b63d7 100644 ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index fe71c2737eb9..185531f89239 100644 +index a5e25d0e6751..38b2a5a512eb 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -209,6 +209,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) +@@ -210,6 +210,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) */ return lock_classes + class_idx; } @@ -227,19 +227,19 @@ index fe71c2737eb9..185531f89239 100644 #ifdef CONFIG_LOCK_STAT diff --git a/kernel/task_work.c b/kernel/task_work.c -index 9cde961875c0..ac8c79dc8181 100644 +index 1698fbe6f0e1..081b05acadf8 100644 --- a/kernel/task_work.c +++ b/kernel/task_work.c -@@ -143,3 +143,4 @@ void task_work_run(void) +@@ -167,3 +167,4 @@ void task_work_run(void) } while (work); } } +EXPORT_SYMBOL_GPL(task_work_run); diff --git a/security/security.c b/security/security.c -index 5ac96b16f8fa..46d334d6ac1f 100644 +index b38155b2de83..386c2741886c 100644 --- a/security/security.c +++ b/security/security.c -@@ -1102,6 +1102,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) +@@ -1146,6 +1146,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } @@ -247,7 +247,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_unlink(const struct path *dir, struct dentry *dentry) { -@@ -1118,6 +1119,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, +@@ -1162,6 +1163,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } @@ -255,7 +255,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) -@@ -1126,6 +1128,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, +@@ -1170,6 +1172,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } @@ -263,7 +263,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, -@@ -1153,6 +1156,7 @@ int security_path_truncate(const struct path *path) +@@ -1197,6 +1200,7 @@ int security_path_truncate(const struct path *path) return 0; return call_int_hook(path_truncate, 0, path); } @@ -271,7 +271,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_chmod(const struct path *path, umode_t mode) { -@@ -1160,6 +1164,7 @@ int security_path_chmod(const struct path *path, umode_t mode) +@@ -1204,6 +1208,7 @@ int security_path_chmod(const struct path *path, umode_t mode) return 0; return call_int_hook(path_chmod, 0, path, mode); } @@ -279,7 +279,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) { -@@ -1167,6 +1172,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) +@@ -1211,6 +1216,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) return 0; return call_int_hook(path_chown, 0, path, uid, gid); } @@ -287,7 +287,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_path_chroot(const struct path *path) { -@@ -1267,6 +1273,7 @@ int security_inode_permission(struct inode *inode, int mask) +@@ -1311,6 +1317,7 @@ int security_inode_permission(struct inode *inode, int mask) return 0; return call_int_hook(inode_permission, 0, inode, mask); } @@ -295,7 +295,7 @@ index 5ac96b16f8fa..46d334d6ac1f 100644 int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { -@@ -1464,6 +1471,7 @@ int security_file_permission(struct file *file, int mask) +@@ -1508,6 +1515,7 @@ int security_file_permission(struct file *file, int mask) return fsnotify_perm(file, mask); } diff --git a/patches/aufs/0005-merge-aufs.patch b/patches/aufs/0005-merge-aufs.patch index cd4590a48adc82f3589b44c0ac7d24ec754ac604..e4f77487edc6e380d08f157e620a395065aefa43 100644 --- a/patches/aufs/0005-merge-aufs.patch +++ b/patches/aufs/0005-merge-aufs.patch @@ -1,14 +1,14 @@ -From 8efa266890e45a66bf298f4ca67d0158e97ba6bb Mon Sep 17 00:00:00 2001 +From 99a364978d1754f32458f213ef03b6fed9ccea43 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 4 May 2021 14:38:57 -0500 +Date: Wed, 14 Jul 2021 16:21:17 -0500 Subject: [PATCH 5/5] merge: aufs -https://github.com/sfjro/aufs5-standalone/commit/f6866937f66eb6ceacfed9b4fe534611030cc813 +https://github.com/sfjro/aufs5-standalone/commit/6944bcbb5361558f4ec97194c6f9a1686f93a16d Signed-off-by: Robert Nelson <robertcnelson@gmail.com> --- Documentation/ABI/testing/debugfs-aufs | 55 + Documentation/ABI/testing/sysfs-aufs | 31 + - Documentation/filesystems/aufs/README | 401 ++++ + Documentation/filesystems/aufs/README | 396 ++++ .../filesystems/aufs/design/01intro.txt | 171 ++ .../filesystems/aufs/design/02struct.txt | 258 +++ .../filesystems/aufs/design/03atomic_open.txt | 85 + @@ -98,7 +98,7 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> fs/aufs/xattr.c | 368 ++++ fs/aufs/xino.c | 1925 +++++++++++++++++ include/uapi/linux/aufs_type.h | 452 ++++ - 92 files changed, 37821 insertions(+) + 92 files changed, 37816 insertions(+) create mode 100644 Documentation/ABI/testing/debugfs-aufs create mode 100644 Documentation/ABI/testing/sysfs-aufs create mode 100644 Documentation/filesystems/aufs/README @@ -292,10 +292,10 @@ index 000000000000..48500c0569e6 + will be empty. About XINO files, see the aufs manual. diff --git a/Documentation/filesystems/aufs/README b/Documentation/filesystems/aufs/README new file mode 100644 -index 000000000000..3e655d357134 +index 000000000000..d08a56444e22 --- /dev/null +++ b/Documentation/filesystems/aufs/README -@@ -0,0 +1,401 @@ +@@ -0,0 +1,396 @@ + +Aufs5 -- advanced multi layered unification filesystem version 5.x +http://aufs.sf.net @@ -480,6 +480,16 @@ index 000000000000..3e655d357134 +For aufs5-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. ++- for aufs5.13 and later ++ Because aufs is not only an ordinary filesystem (callee of VFS), but ++ also a caller of VFS functions for branch filesystems, subclassing of ++ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging ++ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will ++ need to customize some LOCKDEP numbers. Here are what I use on my ++ test environment. ++ CONFIG_LOCKDEP_BITS=21 ++ CONFIG_LOCKDEP_CHAINS_BITS=21 ++ CONFIG_LOCKDEP_STACK_TRACE_BITS=24 + +For aufs5-standalone tree, +There are several ways to build. @@ -547,13 +557,6 @@ index 000000000000..3e655d357134 + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message like "you may want to try + another patch for loopback file". -+- proc_mounts.patch -+ When there are many mountpoints and many mount(2)/umount(2) are -+ running, then /proc/mounts may not show the all mountpoints. This -+ patch makes /proc/mounts always show the full mountpoints list. -+ If you don't want to apply this patch and meet such problem, then you -+ need to increase the value of 'ProcMounts_Times' make-variable in -+ aufs-util.git as a second best solution. +- vfs-ino.patch + Modifies a system global kernel internal function get_next_ino() in + order to stop assigning 0 for an inode-number. Not directly related to @@ -564,14 +567,6 @@ index 000000000000..3e655d357134 + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. -+- lockdep-debug.patch -+ Because aufs is not only an ordinary filesystem (callee of VFS), but -+ also a caller of VFS functions for branch filesystems, subclassing of -+ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging -+ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will -+ need to apply this debug patch to expand several constant values. -+ If you don't know what LOCKDEP is, then you don't have apply this -+ patch. + + +4. Usage @@ -38109,7 +38104,7 @@ index 000000000000..a9ce74d1ad0d +} diff --git a/include/uapi/linux/aufs_type.h b/include/uapi/linux/aufs_type.h new file mode 100644 -index 000000000000..e0dc87a3b3cb +index 000000000000..fa04f623f382 --- /dev/null +++ b/include/uapi/linux/aufs_type.h @@ -0,0 +1,452 @@ @@ -38155,7 +38150,7 @@ index 000000000000..e0dc87a3b3cb +#include <limits.h> +#endif /* __KERNEL__ */ + -+#define AUFS_VERSION "5.12-20210503" ++#define AUFS_VERSION "5.13-20210705" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') diff --git a/patches/defconfig b/patches/defconfig index 8f877cc321841f0defb80f1106959a62fbfa0150..a86ce315d153aa64b6e4ecec0ce35c0ae246090d 100644 --- a/patches/defconfig +++ b/patches/defconfig @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 5.13.0 Kernel Configuration +# Linux/arm 5.13.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="arm-linux-gnueabi-gcc (GCC) 11.1.0" CONFIG_CC_IS_GCC=y @@ -2112,6 +2112,7 @@ CONFIG_TI_ST=m # CONFIG_SENSORS_LIS3_SPI is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set +CONFIG_BEAGLEBONE_PINMUX_HELPER=y # CONFIG_ECHO is not set # CONFIG_MISC_RTSX_USB is not set # CONFIG_UACCE is not set @@ -2646,7 +2647,13 @@ CONFIG_IEEE802154_CA8210=m # CONFIG_IEEE802154_CA8210_DEBUGFS is not set CONFIG_IEEE802154_MCR20A=m CONFIG_IEEE802154_HWSIM=m + +# +# Wireless WAN +# # CONFIG_WWAN is not set +# end of Wireless WAN + # CONFIG_NETDEVSIM is not set CONFIG_NET_FAILOVER=m # CONFIG_ISDN is not set @@ -3182,6 +3189,7 @@ CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_OF_HELPER=y CONFIG_GPIO_GENERIC=y CONFIG_GPIO_MAX730X=m @@ -7013,6 +7021,23 @@ CONFIG_ROMFS_ON_MTD=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EROFS_FS is not set +CONFIG_AUFS_FS=m +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_EXPORT=y +CONFIG_AUFS_XATTR=y +# CONFIG_AUFS_FHSM is not set +# CONFIG_AUFS_RDU is not set +# CONFIG_AUFS_DIRREN is not set +# CONFIG_AUFS_SHWH is not set +# CONFIG_AUFS_BR_RAMFS is not set +# CONFIG_AUFS_BR_FUSE is not set +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_DEBUG is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V2=y diff --git a/patches/drivers/bluetooth/0001-Bluetooth-Remove-spurious-error-message.patch b/patches/drivers/bluetooth/0001-Bluetooth-Remove-spurious-error-message.patch deleted file mode 100644 index 15ef3345221edd804edd3652eff165aae577f6e1..0000000000000000000000000000000000000000 --- a/patches/drivers/bluetooth/0001-Bluetooth-Remove-spurious-error-message.patch +++ /dev/null @@ -1,90 +0,0 @@ -From f972bdde34544ac612af6059b7e515ad58628969 Mon Sep 17 00:00:00 2001 -From: Szymon Janc <szymon.janc@codecoup.pl> -Date: Tue, 18 May 2021 16:54:36 +0200 -Subject: [PATCH] Bluetooth: Remove spurious error message - -Even with rate limited reporting this is very spammy and since -it is remote device that is providing bogus data there is no -need to report this as error. - -Since real_len variable was used only to allow conditional error -message it is now also removed. - -[72454.143336] bt_err_ratelimited: 10 callbacks suppressed -[72454.143337] Bluetooth: hci0: advertising data len corrected -[72454.296314] Bluetooth: hci0: advertising data len corrected -[72454.892329] Bluetooth: hci0: advertising data len corrected -[72455.051319] Bluetooth: hci0: advertising data len corrected -[72455.357326] Bluetooth: hci0: advertising data len corrected -[72455.663295] Bluetooth: hci0: advertising data len corrected -[72455.787278] Bluetooth: hci0: advertising data len corrected -[72455.942278] Bluetooth: hci0: advertising data len corrected -[72456.094276] Bluetooth: hci0: advertising data len corrected -[72456.249137] Bluetooth: hci0: advertising data len corrected -[72459.416333] bt_err_ratelimited: 13 callbacks suppressed -[72459.416334] Bluetooth: hci0: advertising data len corrected -[72459.721334] Bluetooth: hci0: advertising data len corrected -[72460.011317] Bluetooth: hci0: advertising data len corrected -[72460.327171] Bluetooth: hci0: advertising data len corrected -[72460.638294] Bluetooth: hci0: advertising data len corrected -[72460.946350] Bluetooth: hci0: advertising data len corrected -[72461.225320] Bluetooth: hci0: advertising data len corrected -[72461.690322] Bluetooth: hci0: advertising data len corrected -[72462.118318] Bluetooth: hci0: advertising data len corrected -[72462.427319] Bluetooth: hci0: advertising data len corrected -[72464.546319] bt_err_ratelimited: 7 callbacks suppressed -[72464.546319] Bluetooth: hci0: advertising data len corrected -[72464.857318] Bluetooth: hci0: advertising data len corrected -[72465.163332] Bluetooth: hci0: advertising data len corrected -[72465.278331] Bluetooth: hci0: advertising data len corrected -[72465.432323] Bluetooth: hci0: advertising data len corrected -[72465.891334] Bluetooth: hci0: advertising data len corrected -[72466.045334] Bluetooth: hci0: advertising data len corrected -[72466.197321] Bluetooth: hci0: advertising data len corrected -[72466.340318] Bluetooth: hci0: advertising data len corrected -[72466.498335] Bluetooth: hci0: advertising data len corrected -[72469.803299] bt_err_ratelimited: 10 callbacks suppressed - -Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl> -Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=203753 -Cc: stable@vger.kernel.org -Signed-off-by: Marcel Holtmann <marcel@holtmann.org> ---- - net/bluetooth/hci_event.c | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) - -diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c -index 016b2999f219..7d05f6c476d6 100644 ---- a/net/bluetooth/hci_event.c -+++ b/net/bluetooth/hci_event.c -@@ -5441,7 +5441,7 @@ static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr, - struct hci_conn *conn; - bool match; - u32 flags; -- u8 *ptr, real_len; -+ u8 *ptr; - - switch (type) { - case LE_ADV_IND: -@@ -5472,14 +5472,10 @@ static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr, - break; - } - -- real_len = ptr - data; -- -- /* Adjust for actual length */ -- if (len != real_len) { -- bt_dev_err_ratelimited(hdev, "advertising data len corrected %u -> %u", -- len, real_len); -- len = real_len; -- } -+ /* Adjust for actual length. This handles the case when remote -+ * device is advertising with incorrect data length. -+ */ -+ len = ptr - data; - - /* If the direct address is present, then this report is from - * a LE Direct Advertising Report event. In that case it is --- -2.30.2 - diff --git a/patches/drivers/ti/gpio/0001-gpio-of-helper.patch b/patches/drivers/ti/gpio/0001-gpio-of-helper.patch new file mode 100644 index 0000000000000000000000000000000000000000..9141ddd70426d6edcc8b51e83b06a2ef823feef2 --- /dev/null +++ b/patches/drivers/ti/gpio/0001-gpio-of-helper.patch @@ -0,0 +1,587 @@ +From 6035eabd69ccc821d6246ee371120ed602389822 Mon Sep 17 00:00:00 2001 +From: Robert Nelson <robertcnelson@gmail.com> +Date: Mon, 12 Jul 2021 14:23:07 -0500 +Subject: [PATCH] gpio-of-helper + +Authors: +Pantelis Antoniou <panto@antoniou-consulting.com> +Charles Steinkuehler <charles@steinkuehler.net> +Jason Kridner <jdk@ti.com> +Robert Nelson <robertcnelson@gmail.com> +Tobias Müller <Tobias_Mueller@twam.info> +Matthijs van Duin <matthijsvanduin@gmail.com> + +This patch was derived from 19 commits: +https://github.com/RobertCNelson/linux-dev/tree/35e301ae8436e9f56f65bf1a7440021eda42f948/patches/drivers/ti/gpio + +Signed-off-by: Robert Nelson <robertcnelson@gmail.com> +--- + drivers/gpio/Kconfig | 14 ++ + drivers/gpio/Makefile | 1 + + drivers/gpio/gpio-of-helper.c | 420 ++++++++++++++++++++++++++++++++++ + drivers/gpio/gpiolib-sysfs.c | 35 ++- + 4 files changed, 467 insertions(+), 3 deletions(-) + create mode 100644 drivers/gpio/gpio-of-helper.c + +diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig +index 14751c7ccd1f..48f778eb128c 100644 +--- a/drivers/gpio/Kconfig ++++ b/drivers/gpio/Kconfig +@@ -94,6 +94,20 @@ config GPIO_CDEV_V1 + + If unsure, say Y. + ++config GPIO_OF_HELPER ++ bool "GPIO OF helper device (EXPERIMENTAL)" ++ depends on OF_GPIO ++ help ++ Say Y here to add an GPIO OF helper driver ++ ++ Allows you specify a GPIO helper based on OF ++ which allows simple export of GPIO functionality ++ in user-space. ++ ++ Features include, value set/get, direction control, ++ interrupt/value change poll support, event counting ++ and others. ++ + config GPIO_GENERIC + depends on HAS_IOMEM # Only for IOMEM drivers + tristate +diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile +index 09dada80ac34..649544f69e4c 100644 +--- a/drivers/gpio/Makefile ++++ b/drivers/gpio/Makefile +@@ -10,6 +10,7 @@ obj-$(CONFIG_OF_GPIO) += gpiolib-of.o + obj-$(CONFIG_GPIO_CDEV) += gpiolib-cdev.o + obj-$(CONFIG_GPIO_SYSFS) += gpiolib-sysfs.o + obj-$(CONFIG_GPIO_ACPI) += gpiolib-acpi.o ++obj-$(CONFIG_GPIO_OF_HELPER) += gpio-of-helper.o + + # Device drivers. Generally keep list sorted alphabetically + obj-$(CONFIG_GPIO_REGMAP) += gpio-regmap.o +diff --git a/drivers/gpio/gpio-of-helper.c b/drivers/gpio/gpio-of-helper.c +new file mode 100644 +index 000000000000..54479fca07e9 +--- /dev/null ++++ b/drivers/gpio/gpio-of-helper.c +@@ -0,0 +1,420 @@ ++/* ++ * GPIO OF based helper ++ * ++ * A simple DT based driver to provide access to GPIO functionality ++ * to user-space via sysfs. ++ * ++ * Copyright (C) 2013 Pantelis Antoniou <panto@antoniou-consulting.com> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/string.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/bitops.h> ++#include <linux/err.h> ++#include <linux/of.h> ++#include <linux/of_device.h> ++#include <linux/of_gpio.h> ++#include <linux/pinctrl/pinctrl.h> ++#include <linux/pinctrl/pinmux.h> ++#include <linux/pinctrl/consumer.h> ++#include <linux/atomic.h> ++#include <linux/clk.h> ++#include <linux/interrupt.h> ++#include <linux/math64.h> ++#include <linux/atomic.h> ++#include <linux/idr.h> ++ ++/* fwd decl. */ ++struct gpio_of_helper_info; ++ ++enum gpio_type { ++ GPIO_TYPE_INPUT = 0, ++ GPIO_TYPE_OUTPUT = 1, ++}; ++ ++struct gpio_of_entry { ++ int id; ++ struct gpio_of_helper_info *info; ++ struct device_node *node; ++ enum gpio_type type; ++ int gpio; ++ int irq; ++ const char *name; ++ atomic64_t counter; ++ unsigned int count_flags; ++#define COUNT_RISING_EDGE (1 << 0) ++#define COUNT_FALLING_EDGE (1 << 1) ++}; ++ ++struct gpio_of_helper_info { ++ struct platform_device *pdev; ++ struct idr idr; ++}; ++ ++static const struct of_device_id gpio_of_helper_of_match[] = { ++ { ++ .compatible = "gpio-of-helper", ++ }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(of, gpio_of_helper_of_match); ++ ++static ssize_t gpio_of_helper_show_status(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct gpio_of_helper_info *info = platform_get_drvdata(pdev); ++ struct gpio_of_entry *entry; ++ char *p, *e; ++ int id, n; ++ ++ p = buf; ++ e = p + PAGE_SIZE; ++ n = 0; ++ idr_for_each_entry(&info->idr, entry, id) { ++ switch (entry->type) { ++ case GPIO_TYPE_INPUT: ++ n = snprintf(p, e - p, "%2d %-24s %3d %-3s %llu\n", ++ entry->id, entry->name, entry->gpio, "IN", ++ (unsigned long long) ++ atomic64_read(&entry->counter)); ++ break; ++ case GPIO_TYPE_OUTPUT: ++ n = snprintf(p, e - p, "%2d %-24s %3d %-3s\n", ++ entry->id, entry->name, entry->gpio, "OUT"); ++ break; ++ } ++ p += n; ++ } ++ ++ return p - buf; ++} ++ ++static DEVICE_ATTR(status, S_IRUGO, ++ gpio_of_helper_show_status, NULL); ++ ++static irqreturn_t gpio_of_helper_handler(int irq, void *ptr) ++{ ++ struct gpio_of_entry *entry = ptr; ++ ++ /* caution - low speed interfaces only! */ ++ atomic64_inc(&entry->counter); ++ ++ return IRQ_HANDLED; ++} ++ ++static struct gpio_of_entry * ++gpio_of_entry_create(struct gpio_of_helper_info *info, ++ struct device_node *node) ++{ ++ struct platform_device *pdev = info->pdev; ++ struct device *dev = &pdev->dev; ++ struct gpio_of_entry *entry; ++ int err, gpio, irq; ++ unsigned int req_flags, count_flags, irq_flags; ++ enum gpio_type type; ++ enum of_gpio_flags gpio_flags; ++ const char *name; ++ ++ /* get the type of the node first */ ++ if (of_property_read_bool(node, "input")) ++ type = GPIO_TYPE_INPUT; ++ else if (of_property_read_bool(node, "output") ++ || of_property_read_bool(node, "init-low") ++ || of_property_read_bool(node, "init-high")) ++ type = GPIO_TYPE_OUTPUT; ++ else { ++ dev_err(dev, "Not valid gpio node type\n"); ++ err = -EINVAL; ++ goto err_bad_node; ++ } ++ ++ /* get the name */ ++ if (of_property_read_string(node, "line-name", &name)) ++ if (of_property_read_string(node, "gpio-name", &name)) ++ name = node->name; ++ ++ err = of_get_named_gpio_flags(node, "gpio", 0, &gpio_flags); ++ if (IS_ERR_VALUE(err)) { ++ dev_err(dev, "Failed to get gpio property of '%s'\n", name); ++ goto err_bad_node; ++ } ++ gpio = err; ++ ++ req_flags = 0; ++ count_flags = 0; ++ ++ /* set the request flags */ ++ switch (type) { ++ case GPIO_TYPE_INPUT: ++ req_flags = GPIOF_DIR_IN | GPIOF_EXPORT; ++ if (of_property_read_bool(node, "count-falling-edge")) ++ count_flags |= COUNT_FALLING_EDGE; ++ if (of_property_read_bool(node, "count-rising-edge")) ++ count_flags |= COUNT_RISING_EDGE; ++ break; ++ case GPIO_TYPE_OUTPUT: ++ req_flags = GPIOF_DIR_OUT | GPIOF_EXPORT; ++ if (of_property_read_bool(node, "init-high")) ++ req_flags |= GPIOF_OUT_INIT_HIGH; ++ else if (of_property_read_bool(node, "init-low")) ++ req_flags |= GPIOF_OUT_INIT_LOW; ++ break; ++ } ++ if (of_property_read_bool(node, "dir-changeable")) ++ req_flags |= GPIOF_EXPORT_CHANGEABLE; ++ if (gpio_flags & OF_GPIO_ACTIVE_LOW) ++ req_flags |= GPIOF_ACTIVE_LOW; ++ if (gpio_flags & OF_GPIO_SINGLE_ENDED) { ++ if (gpio_flags & OF_GPIO_ACTIVE_LOW) ++ req_flags |= GPIOF_OPEN_DRAIN; ++ else ++ req_flags |= GPIOF_OPEN_SOURCE; ++ } ++ ++ /* request the gpio */ ++ err = devm_gpio_request_one(dev, gpio, req_flags, name); ++ if (err != 0) { ++ dev_err(dev, "Failed to request gpio '%s'\n", name); ++ goto err_bad_node; ++ } ++ ++ irq = -1; ++ irq_flags = 0; ++ ++ /* counter mode requested - need an interrupt */ ++ if (count_flags != 0) { ++ irq = gpio_to_irq(gpio); ++ if (IS_ERR_VALUE(irq)) { ++ dev_err(dev, "Failed to request gpio '%s'\n", name); ++ goto err_bad_node; ++ } ++ ++ if (count_flags & COUNT_RISING_EDGE) ++ irq_flags |= IRQF_TRIGGER_RISING; ++ if (count_flags & COUNT_FALLING_EDGE) ++ irq_flags |= IRQF_TRIGGER_FALLING; ++ } ++ ++ idr_preload(GFP_KERNEL); ++ ++ entry = devm_kzalloc(dev, sizeof(*entry), GFP_KERNEL); ++ if (entry == NULL) { ++ dev_err(dev, "Failed to allocate gpio entry of '%s'\n", name); ++ err = -ENOMEM; ++ goto err_no_mem; ++ } ++ ++ entry->id = -1; ++ entry->info = info; ++ entry->node = of_node_get(node); /* get node reference */ ++ entry->type = type; ++ entry->gpio = gpio; ++ entry->irq = irq; ++ entry->name = name; ++ ++ /* interrupt enable is last thing done */ ++ if (irq >= 0) { ++ atomic64_set(&entry->counter, 0); ++ entry->count_flags = count_flags; ++ err = devm_request_irq(dev, irq, gpio_of_helper_handler, ++ irq_flags, name, entry); ++ if (err != 0) { ++ dev_err(dev, "Failed to request irq of '%s'\n", name); ++ goto err_no_irq; ++ } ++ } ++ ++ err = idr_alloc(&info->idr, entry, 0, 0, GFP_NOWAIT); ++ if (err >= 0) ++ entry->id = err; ++ ++ idr_preload_end(); ++ ++ if (err < 0) { ++ dev_err(dev, "Failed to idr_get_new of '%s'\n", name); ++ goto err_fail_idr; ++ } ++ ++ dev_info(dev, "Allocated GPIO id=%d name='%s'\n", entry->id, name); ++ ++ return entry; ++ ++err_fail_idr: ++ /* nothing to do */ ++err_no_irq: ++ /* release node ref */ ++ of_node_put(node); ++ /* nothing else needs to be done, devres handles it */ ++err_no_mem: ++err_bad_node: ++ return ERR_PTR(err); ++} ++ ++static int gpio_of_entry_destroy(struct gpio_of_entry *entry) ++{ ++ struct gpio_of_helper_info *info = entry->info; ++ struct platform_device *pdev = info->pdev; ++ struct device *dev = &pdev->dev; ++ ++ dev_dbg(dev, "Destroying GPIO id=%d\n", entry->id); ++ ++ /* remove from the IDR */ ++ idr_remove(&info->idr, entry->id); ++ ++ /* remove node ref */ ++ of_node_put(entry->node); ++ ++ /* free gpio */ ++ devm_gpio_free(dev, entry->gpio); ++ ++ /* gree irq */ ++ if (entry->irq >= 0) ++ devm_free_irq(dev, entry->irq, entry); ++ ++ /* and free */ ++ devm_kfree(dev, entry); ++ ++ return 0; ++} ++ ++static int gpio_of_helper_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct gpio_of_helper_info *info; ++ struct gpio_of_entry *entry; ++ struct device_node *pnode = pdev->dev.of_node; ++ struct device_node *cnode; ++ struct pinctrl *pinctrl; ++ int err; ++ ++ /* we only support OF */ ++ if (pnode == NULL) { ++ dev_err(&pdev->dev, "No platform of_node!\n"); ++ return -ENODEV; ++ } ++ ++ pinctrl = devm_pinctrl_get_select_default(&pdev->dev); ++ if (IS_ERR(pinctrl)) { ++ /* special handling for probe defer */ ++ if (PTR_ERR(pinctrl) == -EPROBE_DEFER) ++ return -EPROBE_DEFER; ++ ++ dev_warn(&pdev->dev, ++ "pins are not configured from the driver\n"); ++ } ++ ++ info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); ++ if (info == NULL) { ++ dev_err(&pdev->dev, "Failed to allocate info\n"); ++ err = -ENOMEM; ++ goto err_no_mem; ++ } ++ platform_set_drvdata(pdev, info); ++ info->pdev = pdev; ++ ++ idr_init(&info->idr); ++ ++ err = device_create_file(dev, &dev_attr_status); ++ if (err != 0) { ++ dev_err(dev, "Failed to create status sysfs attribute\n"); ++ goto err_no_sysfs; ++ } ++ ++ for_each_child_of_node(pnode, cnode) { ++ ++ entry = gpio_of_entry_create(info, cnode); ++ if (IS_ERR_OR_NULL(entry)) { ++ dev_err(dev, "Failed to create gpio entry\n"); ++ err = PTR_ERR(entry); ++ goto err_fail_entry; ++ } ++ } ++ ++ dev_info(&pdev->dev, "ready\n"); ++ ++ return 0; ++err_fail_entry: ++ device_remove_file(&pdev->dev, &dev_attr_status); ++err_no_sysfs: ++err_no_mem: ++ return err; ++} ++ ++static int gpio_of_helper_remove(struct platform_device *pdev) ++{ ++ struct gpio_of_helper_info *info = platform_get_drvdata(pdev); ++ struct gpio_of_entry *entry; ++ int id; ++ ++ dev_info(&pdev->dev, "removing\n"); ++ ++ device_remove_file(&pdev->dev, &dev_attr_status); ++ ++ id = 0; ++ idr_for_each_entry(&info->idr, entry, id) { ++ /* destroy each and every one */ ++ gpio_of_entry_destroy(entry); ++ } ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int gpio_of_helper_runtime_suspend(struct device *dev) ++{ ++ /* place holder */ ++ return 0; ++} ++ ++static int gpio_of_helper_runtime_resume(struct device *dev) ++{ ++ /* place holder */ ++ return 0; ++} ++ ++static struct dev_pm_ops gpio_of_helper_pm_ops = { ++ SET_RUNTIME_PM_OPS(gpio_of_helper_runtime_suspend, ++ gpio_of_helper_runtime_resume, NULL) ++}; ++#define GPIO_OF_HELPER_PM_OPS (&gpio_of_helper_pm_ops) ++#else ++#define GPIO_OF_HELPER_PM_OPS NULL ++#endif /* CONFIG_PM */ ++ ++struct platform_driver gpio_of_helper_driver = { ++ .probe = gpio_of_helper_probe, ++ .remove = gpio_of_helper_remove, ++ .driver = { ++ .name = "gpio-of-helper", ++ .owner = THIS_MODULE, ++ .pm = GPIO_OF_HELPER_PM_OPS, ++ .of_match_table = gpio_of_helper_of_match, ++ }, ++}; ++ ++module_platform_driver(gpio_of_helper_driver); ++ ++MODULE_AUTHOR("Pantelis Antoniou <panto@antoniou-consulting.com>"); ++MODULE_DESCRIPTION("GPIO OF Helper driver"); ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS("platform:gpio-of-helper"); +diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c +index fa5d945b2f28..2a7b2c6388fb 100644 +--- a/drivers/gpio/gpiolib-sysfs.c ++++ b/drivers/gpio/gpiolib-sysfs.c +@@ -38,10 +38,10 @@ static DEFINE_MUTEX(sysfs_lock); + /* + * /sys/class/gpio/gpioN... only for GPIOs that are exported + * /direction +- * * MAY BE OMITTED if kernel won't allow direction changes + * * is read/write as "in" or "out" + * * may also be written as "high" or "low", initializing + * output value as specified ("out" implies "low") ++ * * read-only if kernel won't allow direction changes + * /value + * * always readable, subject to hardware behavior + * * may be writable, as zero/nonzero +@@ -54,6 +54,8 @@ static DEFINE_MUTEX(sysfs_lock); + * * is read/write as zero/nonzero + * * also affects existing and subsequent "falling" and "rising" + * /edge configuration ++ * /label ++ * * descriptor label + */ + + static ssize_t direction_show(struct device *dev, +@@ -84,7 +86,9 @@ static ssize_t direction_store(struct device *dev, + + mutex_lock(&data->mutex); + +- if (sysfs_streq(buf, "high")) ++ if (!data->direction_can_change) ++ status = -EPERM; ++ else if (sysfs_streq(buf, "high")) + status = gpiod_direction_output_raw(desc, 1); + else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low")) + status = gpiod_direction_output_raw(desc, 0); +@@ -363,6 +367,23 @@ static ssize_t active_low_store(struct device *dev, + } + static DEVICE_ATTR_RW(active_low); + ++static ssize_t label_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct gpiod_data *data = dev_get_drvdata(dev); ++ struct gpio_desc *desc = data->desc; ++ ssize_t status; ++ ++ mutex_lock(&data->mutex); ++ ++ status = sprintf(buf, "%s\n", desc->label); ++ ++ mutex_unlock(&data->mutex); ++ ++ return status; ++} ++static DEVICE_ATTR_RO(label); ++ + static umode_t gpio_is_visible(struct kobject *kobj, struct attribute *attr, + int n) + { +@@ -374,12 +395,15 @@ static umode_t gpio_is_visible(struct kobject *kobj, struct attribute *attr, + + if (attr == &dev_attr_direction.attr) { + if (!show_direction) +- mode = 0; ++ mode &= 0444; + } else if (attr == &dev_attr_edge.attr) { + if (gpiod_to_irq(desc) < 0) + mode = 0; + if (!show_direction && test_bit(FLAG_IS_OUT, &desc->flags)) + mode = 0; ++ } else if (attr == &dev_attr_value.attr) { ++ if (!show_direction && !test_bit(FLAG_IS_OUT, &desc->flags)) ++ mode &= 0444; + } + + return mode; +@@ -390,6 +414,7 @@ static struct attribute *gpio_attrs[] = { + &dev_attr_edge.attr, + &dev_attr_value.attr, + &dev_attr_active_low.attr, ++ &dev_attr_label.attr, + NULL, + }; + +@@ -403,6 +428,10 @@ static const struct attribute_group *gpio_groups[] = { + NULL + }; + ++/* bwlegh, a second device in the same file... get out of my namespace! */ ++#define dev_attr_label dev_attr_chip_label ++#define label_show chip_label_show ++ + /* + * /sys/class/gpio/gpiochipN/ + * /base ... matching gpio_chip.base (N) +-- +2.30.2 + diff --git a/patches/drivers/ti/gpio/0002-bone-pinmux-helper.patch b/patches/drivers/ti/gpio/0002-bone-pinmux-helper.patch new file mode 100644 index 0000000000000000000000000000000000000000..219949e1365ed95ebfa84437e685680c4350884d --- /dev/null +++ b/patches/drivers/ti/gpio/0002-bone-pinmux-helper.patch @@ -0,0 +1,356 @@ +From e7063673a32ac510bbc27b0eab9206028aeb1b55 Mon Sep 17 00:00:00 2001 +From: Robert Nelson <robertcnelson@gmail.com> +Date: Mon, 12 Jul 2021 14:35:03 -0500 +Subject: [PATCH 2/2] bone-pinmux-helper + +Authors: +Pantelis Antoniou <panto@antoniou-consulting.com> +Charles Steinkuehler <charles@steinkuehler.net> +Jason Kridner <jdk@ti.com> +Robert Nelson <robertcnelson@gmail.com> +Tobias Müller <Tobias_Mueller@twam.info> +Matthijs van Duin <matthijsvanduin@gmail.com> + +This patch was derived from 19 commits: +https://github.com/RobertCNelson/linux-dev/tree/35e301ae8436e9f56f65bf1a7440021eda42f948/patches/drivers/ti/gpio + +Signed-off-by: Robert Nelson <robertcnelson@gmail.com> +--- + drivers/misc/Kconfig | 1 + + drivers/misc/Makefile | 1 + + drivers/misc/cape/Kconfig | 5 + + drivers/misc/cape/Makefile | 5 + + drivers/misc/cape/beaglebone/Kconfig | 10 + + drivers/misc/cape/beaglebone/Makefile | 5 + + .../misc/cape/beaglebone/bone-pinmux-helper.c | 242 ++++++++++++++++++ + 7 files changed, 269 insertions(+) + create mode 100644 drivers/misc/cape/Kconfig + create mode 100644 drivers/misc/cape/Makefile + create mode 100644 drivers/misc/cape/beaglebone/Kconfig + create mode 100644 drivers/misc/cape/beaglebone/Makefile + create mode 100644 drivers/misc/cape/beaglebone/bone-pinmux-helper.c + +diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig +index f4fb5c52b863..8403506a4abf 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig +@@ -456,6 +456,7 @@ source "drivers/misc/altera-stapl/Kconfig" + source "drivers/misc/mei/Kconfig" + source "drivers/misc/vmw_vmci/Kconfig" + source "drivers/misc/genwqe/Kconfig" ++source "drivers/misc/cape/Kconfig" + source "drivers/misc/echo/Kconfig" + source "drivers/misc/cxl/Kconfig" + source "drivers/misc/ocxl/Kconfig" +diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile +index e92a56d4442f..2756a0302d60 100644 +--- a/drivers/misc/Makefile ++++ b/drivers/misc/Makefile +@@ -45,6 +45,7 @@ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o + obj-$(CONFIG_SRAM) += sram.o + obj-$(CONFIG_SRAM_EXEC) += sram-exec.o + obj-$(CONFIG_GENWQE) += genwqe/ ++obj-y += cape/ + obj-$(CONFIG_ECHO) += echo/ + obj-$(CONFIG_CXL_BASE) += cxl/ + obj-$(CONFIG_DW_XDATA_PCIE) += dw-xdata-pcie.o +diff --git a/drivers/misc/cape/Kconfig b/drivers/misc/cape/Kconfig +new file mode 100644 +index 000000000000..a2ef85e0415c +--- /dev/null ++++ b/drivers/misc/cape/Kconfig +@@ -0,0 +1,5 @@ ++# ++# Capes ++# ++ ++source "drivers/misc/cape/beaglebone/Kconfig" +diff --git a/drivers/misc/cape/Makefile b/drivers/misc/cape/Makefile +new file mode 100644 +index 000000000000..7c4eb96ab29e +--- /dev/null ++++ b/drivers/misc/cape/Makefile +@@ -0,0 +1,5 @@ ++# ++# Makefile for cape like devices ++# ++ ++obj-y += beaglebone/ +diff --git a/drivers/misc/cape/beaglebone/Kconfig b/drivers/misc/cape/beaglebone/Kconfig +new file mode 100644 +index 000000000000..eeb67828fd82 +--- /dev/null ++++ b/drivers/misc/cape/beaglebone/Kconfig +@@ -0,0 +1,10 @@ ++# ++# Beaglebone capes ++# ++ ++config BEAGLEBONE_PINMUX_HELPER ++ tristate "Beaglebone Pinmux Helper" ++ depends on ARCH_OMAP2PLUS && OF ++ default n ++ help ++ Say Y here to include support for the pinmux helper +diff --git a/drivers/misc/cape/beaglebone/Makefile b/drivers/misc/cape/beaglebone/Makefile +new file mode 100644 +index 000000000000..7f4617a01e26 +--- /dev/null ++++ b/drivers/misc/cape/beaglebone/Makefile +@@ -0,0 +1,5 @@ ++# ++# Makefile for beaglebone capes ++# ++ ++obj-$(CONFIG_BEAGLEBONE_PINMUX_HELPER) += bone-pinmux-helper.o +diff --git a/drivers/misc/cape/beaglebone/bone-pinmux-helper.c b/drivers/misc/cape/beaglebone/bone-pinmux-helper.c +new file mode 100644 +index 000000000000..d81363a77b10 +--- /dev/null ++++ b/drivers/misc/cape/beaglebone/bone-pinmux-helper.c +@@ -0,0 +1,242 @@ ++/* ++ * Pinmux helper driver ++ * ++ * Copyright (C) 2013 Pantelis Antoniou <panto@antoniou-consulting.com> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/errno.h> ++#include <linux/init.h> ++#include <linux/err.h> ++#include <linux/of.h> ++#include <linux/of_device.h> ++#include <linux/of_gpio.h> ++#include <linux/slab.h> ++#include <linux/pinctrl/pinctrl.h> ++#include <linux/pinctrl/pinmux.h> ++#include <linux/pinctrl/consumer.h> ++ ++static const struct of_device_id bone_pinmux_helper_of_match[] = { ++ { ++ .compatible = "bone-pinmux-helper", ++ }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(of, bone_pinmux_helper_of_match); ++ ++struct pinmux_helper_data { ++ struct pinctrl *pinctrl; ++ char *selected_state_name; ++}; ++ ++static ssize_t pinmux_helper_show_state(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct pinmux_helper_data *data = platform_get_drvdata(pdev); ++ const char *name; ++ ++ name = data->selected_state_name; ++ if (name == NULL || strlen(name) == 0) ++ name = "none"; ++ return sprintf(buf, "%s\n", name); ++} ++ ++static ssize_t pinmux_helper_store_state(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t count) ++{ ++ struct platform_device *pdev = to_platform_device(dev); ++ struct pinmux_helper_data *data = platform_get_drvdata(pdev); ++ struct pinctrl_state *state; ++ char *state_name; ++ char *s; ++ int err; ++ ++ /* duplicate (as a null terminated string) */ ++ state_name = kmalloc(count + 1, GFP_KERNEL); ++ if (state_name == NULL) ++ return -ENOMEM; ++ memcpy(state_name, buf, count); ++ state_name[count] = '\0'; ++ ++ /* and chop off newline */ ++ s = strchr(state_name, '\n'); ++ if (s != NULL) ++ *s = '\0'; ++ ++ /* try to select default state at first (if it exists) */ ++ state = pinctrl_lookup_state(data->pinctrl, state_name); ++ if (!IS_ERR(state)) { ++ err = pinctrl_select_state(data->pinctrl, state); ++ if (err != 0) ++ dev_err(dev, "Failed to select state %s\n", ++ state_name); ++ } else { ++ dev_err(dev, "Failed to find state %s\n", state_name); ++ err = PTR_RET(state); ++ } ++ ++ if (err == 0) { ++ kfree(data->selected_state_name); ++ data->selected_state_name = state_name; ++ } ++ ++ return err ? err : count; ++} ++ ++static DEVICE_ATTR(state, S_IWUSR | S_IRUGO, ++ pinmux_helper_show_state, pinmux_helper_store_state); ++ ++static struct attribute *pinmux_helper_attributes[] = { ++ &dev_attr_state.attr, ++ NULL ++}; ++ ++static const struct attribute_group pinmux_helper_attr_group = { ++ .attrs = pinmux_helper_attributes, ++}; ++ ++static int bone_pinmux_helper_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct pinmux_helper_data *data; ++ struct pinctrl_state *state; ++ char *state_name; ++ const char *mode_name; ++ int mode_len; ++ int err; ++ ++ data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); ++ if (data == NULL) { ++ dev_err(dev, "Failed to allocate data\n"); ++ err = -ENOMEM; ++ goto err_no_mem; ++ } ++ ++ state_name = kmalloc(strlen(PINCTRL_STATE_DEFAULT) + 1, ++ GFP_KERNEL); ++ if (state_name == NULL) { ++ dev_err(dev, "Failed to allocate state name\n"); ++ err = -ENOMEM; ++ goto err_no_state_mem; ++ } ++ data->selected_state_name = state_name; ++ strcpy(data->selected_state_name, PINCTRL_STATE_DEFAULT); ++ ++ platform_set_drvdata(pdev, data); ++ ++ data->pinctrl = devm_pinctrl_get(dev); ++ if (IS_ERR(data->pinctrl)) { ++ dev_err(dev, "Failed to get pinctrl\n"); ++ err = PTR_RET(data->pinctrl); ++ goto err_no_pinctrl; ++ } ++ ++ /* See if an initial mode is specified in the device tree */ ++ mode_name = of_get_property(dev->of_node, "mode", &mode_len); ++ ++ err = -1; ++ if (mode_name != NULL ) { ++ state_name = kmalloc(mode_len + 1, GFP_KERNEL); ++ if (state_name == NULL) { ++ dev_err(dev, "Failed to allocate state name\n"); ++ err = -ENOMEM; ++ goto err_no_mode_mem; ++ } ++ strncpy(state_name, mode_name, mode_len); ++ ++ /* try to select requested mode */ ++ state = pinctrl_lookup_state(data->pinctrl, state_name); ++ if (!IS_ERR(state)) { ++ err = pinctrl_select_state(data->pinctrl, state); ++ if (err != 0) { ++ dev_warn(dev, "Unable to select requested mode %s\n", state_name); ++ kfree(state_name); ++ } else { ++ kfree(data->selected_state_name); ++ data->selected_state_name = state_name; ++ dev_notice(dev, "Set initial pinmux mode to %s\n", state_name); ++ } ++ } ++ } ++ ++ /* try to select default state if mode_name failed */ ++ if ( err != 0) { ++ state = pinctrl_lookup_state(data->pinctrl, ++ data->selected_state_name); ++ if (!IS_ERR(state)) { ++ err = pinctrl_select_state(data->pinctrl, state); ++ if (err != 0) { ++ dev_err(dev, "Failed to select default state\n"); ++ goto err_no_state; ++ } ++ } else { ++ data->selected_state_name = '\0'; ++ } ++ } ++ ++ /* Register sysfs hooks */ ++ err = sysfs_create_group(&dev->kobj, &pinmux_helper_attr_group); ++ if (err) { ++ dev_err(dev, "Failed to create sysfs group\n"); ++ goto err_no_sysfs; ++ } ++ ++ return 0; ++ ++err_no_sysfs: ++err_no_state: ++err_no_mode_mem: ++ devm_pinctrl_put(data->pinctrl); ++err_no_pinctrl: ++ devm_kfree(dev, data->selected_state_name); ++err_no_state_mem: ++ devm_kfree(dev, data); ++err_no_mem: ++ return err; ++} ++ ++static int bone_pinmux_helper_remove(struct platform_device *pdev) ++{ ++ struct pinmux_helper_data *data = platform_get_drvdata(pdev); ++ struct device *dev = &pdev->dev; ++ ++ sysfs_remove_group(&dev->kobj, &pinmux_helper_attr_group); ++ kfree(data->selected_state_name); ++ devm_pinctrl_put(data->pinctrl); ++ devm_kfree(dev, data); ++ ++ return 0; ++} ++ ++struct platform_driver bone_pinmux_helper_driver = { ++ .probe = bone_pinmux_helper_probe, ++ .remove = bone_pinmux_helper_remove, ++ .driver = { ++ .name = "bone-pinmux-helper", ++ .owner = THIS_MODULE, ++ .of_match_table = bone_pinmux_helper_of_match, ++ }, ++}; ++ ++module_platform_driver(bone_pinmux_helper_driver); ++ ++MODULE_AUTHOR("Pantelis Antoniou"); ++MODULE_DESCRIPTION("Beaglebone pinmux helper driver"); ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS("platform:bone-pinmux-helper"); +-- +2.30.2 + diff --git a/patches/drivers/ti/gpio/0003-hack-gpiolib-yes-we-have-drivers-stomping-on-each-ot.patch b/patches/drivers/ti/gpio/0003-hack-gpiolib-yes-we-have-drivers-stomping-on-each-ot.patch new file mode 100644 index 0000000000000000000000000000000000000000..1284ff7f8224d546913a3e9a1d37b47097fe2b38 --- /dev/null +++ b/patches/drivers/ti/gpio/0003-hack-gpiolib-yes-we-have-drivers-stomping-on-each-ot.patch @@ -0,0 +1,31 @@ +From 88aec6df5236f77caf0fa8520cfa2561e5ffb4dc Mon Sep 17 00:00:00 2001 +From: Robert Nelson <robertcnelson@gmail.com> +Date: Sun, 30 Dec 2018 19:44:02 -0600 +Subject: [PATCH 2/2] hack: gpiolib: yes we have drivers stomping on each + other, we need to find a better way to share gpio... + +Signed-off-by: Robert Nelson <robertcnelson@gmail.com> +--- + drivers/gpio/gpiolib.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c +index c85fdc78fcc9..6f5458a0dfbc 100644 +--- a/drivers/gpio/gpiolib.c ++++ b/drivers/gpio/gpiolib.c +@@ -1852,9 +1852,9 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label) + + if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) { + desc_set_label(desc, label ? : "?"); +- } else { +- ret = -EBUSY; +- goto out_free_unlock; ++// } else { ++// ret = -EBUSY; ++// goto out_free_unlock; + } + + if (gc->request) { +-- +2.30.2 + diff --git a/patches/drivers/ti/gpio/0004-v5.7-rc2-bone-pinmux-helper-Replace-PTR_RET-with-PTR.patch b/patches/drivers/ti/gpio/0004-v5.7-rc2-bone-pinmux-helper-Replace-PTR_RET-with-PTR.patch new file mode 100644 index 0000000000000000000000000000000000000000..e9463c546bbb482590a556569ba978580d0461c6 --- /dev/null +++ b/patches/drivers/ti/gpio/0004-v5.7-rc2-bone-pinmux-helper-Replace-PTR_RET-with-PTR.patch @@ -0,0 +1,36 @@ +From 2bb6a9c66b877ef7498dac03aa39d04adc9b7c00 Mon Sep 17 00:00:00 2001 +From: Robert Nelson <robertcnelson@gmail.com> +Date: Tue, 21 Apr 2020 18:33:57 -0500 +Subject: [PATCH 3/3] v5.7-rc2: bone-pinmux-helper: Replace PTR_RET with + PTR_ERR_OR_ZERO + +Signed-off-by: Robert Nelson <robertcnelson@gmail.com> +--- + drivers/misc/cape/beaglebone/bone-pinmux-helper.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/misc/cape/beaglebone/bone-pinmux-helper.c b/drivers/misc/cape/beaglebone/bone-pinmux-helper.c +index d81363a77b10..57703d8bcac7 100644 +--- a/drivers/misc/cape/beaglebone/bone-pinmux-helper.c ++++ b/drivers/misc/cape/beaglebone/bone-pinmux-helper.c +@@ -88,7 +88,7 @@ static ssize_t pinmux_helper_store_state(struct device *dev, + state_name); + } else { + dev_err(dev, "Failed to find state %s\n", state_name); +- err = PTR_RET(state); ++ err = PTR_ERR_OR_ZERO(state); + } + + if (err == 0) { +@@ -143,7 +143,7 @@ static int bone_pinmux_helper_probe(struct platform_device *pdev) + data->pinctrl = devm_pinctrl_get(dev); + if (IS_ERR(data->pinctrl)) { + dev_err(dev, "Failed to get pinctrl\n"); +- err = PTR_RET(data->pinctrl); ++ err = PTR_ERR_OR_ZERO(data->pinctrl); + goto err_no_pinctrl; + } + +-- +2.26.1 + diff --git a/patches/git/AUFS b/patches/git/AUFS new file mode 100644 index 0000000000000000000000000000000000000000..73a1587c5f52f7a1e36b0b92cbfc1e5f9c2f70f9 --- /dev/null +++ b/patches/git/AUFS @@ -0,0 +1 @@ +AUFS: https://github.com/sfjro/aufs5-standalone/commit/6944bcbb5361558f4ec97194c6f9a1686f93a16d diff --git a/patches/git/BBDTBS b/patches/git/BBDTBS index 16edda53276a287fcf3d06ac4098fde4652cd4d3..3967f4cacdd1ad2c268074ca735fb5a46699331b 100644 --- a/patches/git/BBDTBS +++ b/patches/git/BBDTBS @@ -1 +1 @@ -BBDTBS: https://github.com/beagleboard/BeagleBoard-DeviceTrees/commit/399463995d629fb60e8964006392bd5c770412d2 +BBDTBS: https://github.com/beagleboard/BeagleBoard-DeviceTrees/commit/fb8cca16fb2dc7369f6ac88e1b2f888ef97326c3 diff --git a/patches/git/WIRELESS_REGDB b/patches/git/WIRELESS_REGDB index 161a7cd0054b22315ffab66684398afffe58a35f..f0b4a34bf16552bb520e8fe33f6c315c0d015877 100644 --- a/patches/git/WIRELESS_REGDB +++ b/patches/git/WIRELESS_REGDB @@ -1 +1 @@ -WIRELESS_REGDB: https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/commit/?id=04f3e5411b1cdc59292775e7b8e05a5d35ea4a80 +WIRELESS_REGDB: https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/commit/?id=a4468e8f1ff2710982d2a8042e974d801e3a7ba0 diff --git a/patches/ref_omap2plus_defconfig b/patches/ref_omap2plus_defconfig index 1192e733b06cf75b04315942a04ad7e3db727850..0fca285269d8b9e4073b4c3b3219593566f67dca 100644 --- a/patches/ref_omap2plus_defconfig +++ b/patches/ref_omap2plus_defconfig @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 5.13.0 Kernel Configuration +# Linux/arm 5.13.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="arm-linux-gnueabi-gcc (GCC) 11.1.0" CONFIG_CC_IS_GCC=y @@ -1919,6 +1919,7 @@ CONFIG_EEPROM_93CX6=y # CONFIG_SENSORS_LIS3_SPI is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set +# CONFIG_BEAGLEBONE_PINMUX_HELPER is not set # CONFIG_ECHO is not set # CONFIG_BCM_VK is not set # CONFIG_MISC_ALCOR_PCI is not set @@ -2537,7 +2538,13 @@ CONFIG_WLAN_VENDOR_QUANTENNA=y # CONFIG_USB_NET_RNDIS_WLAN is not set # CONFIG_VIRT_WIFI is not set # CONFIG_WAN is not set + +# +# Wireless WAN +# # CONFIG_WWAN is not set +# end of Wireless WAN + # CONFIG_VMXNET3 is not set # CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set @@ -3013,6 +3020,7 @@ CONFIG_DEBUG_GPIO=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y +# CONFIG_GPIO_OF_HELPER is not set # # Memory mapped GPIO drivers @@ -6445,6 +6453,7 @@ CONFIG_CRAMFS_BLOCKDEV=y # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_EROFS_FS is not set +# CONFIG_AUFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V2=y diff --git a/patches/soc/ti/beagleboard_dtbs/0001-Add-BeagleBoard.org-DTBS-v5.13.x.patch b/patches/soc/ti/beagleboard_dtbs/0001-Add-BeagleBoard.org-DTBS-v5.13.x.patch index 4bbc33c9419475d89bee51e43d2a6f6ffc9359ba..ddf5a90789b0ebb195e5b6ee8a3233aefa81a91b 100644 --- a/patches/soc/ti/beagleboard_dtbs/0001-Add-BeagleBoard.org-DTBS-v5.13.x.patch +++ b/patches/soc/ti/beagleboard_dtbs/0001-Add-BeagleBoard.org-DTBS-v5.13.x.patch @@ -1,11 +1,11 @@ -From 6d912847e298343908beef258c0b6fa9d1b4b430 Mon Sep 17 00:00:00 2001 +From cb7df66d35e13b64cd3fcd3cad2a86c884f1c215 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 29 Jun 2021 14:40:13 -0500 +Date: Wed, 14 Jul 2021 16:22:25 -0500 Subject: [PATCH] Add BeagleBoard.org DTBS: v5.13.x https://github.com/beagleboard/BeagleBoard-DeviceTrees/tree/v5.13.x -https://github.com/beagleboard/BeagleBoard-DeviceTrees/commit/399463995d629fb60e8964006392bd5c770412d2 +https://github.com/beagleboard/BeagleBoard-DeviceTrees/commit/fb8cca16fb2dc7369f6ac88e1b2f888ef97326c3 Signed-off-by: Robert Nelson <robertcnelson@gmail.com> --- arch/arm/boot/dts/Makefile | 3 + @@ -39,7 +39,8 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> arch/arm/boot/dts/overlays/BONE-ADC.dts | 28 +++ arch/arm/boot/dts/overlays/Makefile | 14 ++ arch/arm/boot/dts/twl6030.dtsi | 5 + - 31 files changed, 895 insertions(+), 136 deletions(-) + include/dt-bindings/pinctrl/omap.h | 4 +- + 32 files changed, 897 insertions(+), 138 deletions(-) create mode 100644 arch/arm/boot/dts/am335x-bbb-bone-buses.dtsi create mode 100644 arch/arm/boot/dts/am335x-boneblack-uboot.dts create mode 100644 arch/arm/boot/dts/am335x-bonegreen-gateway.dts @@ -1488,6 +1489,21 @@ index 9d588cfaa5cb..c0094e0c4e0f 100644 twl_usb_comparator: usb-comparator { compatible = "ti,twl6030-usb"; interrupts = <4>, <10>; +diff --git a/include/dt-bindings/pinctrl/omap.h b/include/dt-bindings/pinctrl/omap.h +index f48245ff87e5..625718042413 100644 +--- a/include/dt-bindings/pinctrl/omap.h ++++ b/include/dt-bindings/pinctrl/omap.h +@@ -64,8 +64,8 @@ + #define OMAP3_WKUP_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x2a00) (val) + #define DM814X_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) + #define DM816X_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) +-#define AM33XX_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) (0) +-#define AM33XX_PADCONF(pa, conf, mux) OMAP_IOPAD_OFFSET((pa), 0x0800) (conf) (mux) ++#define AM33XX_IOPAD(pa, val) OMAP_IOPAD_OFFSET((pa), 0x0800) (val) ++#define AM33XX_PADCONF(pa, dir, mux) OMAP_IOPAD_OFFSET((pa), 0x0800) ((dir) | (mux)) + + /* + * Macros to allow using the offset from the padconf physical address -- 2.30.2 diff --git a/patches/wireless_regdb/0001-Add-wireless-regdb-regulatory-database-file.patch b/patches/wireless_regdb/0001-Add-wireless-regdb-regulatory-database-file.patch index fbe0a248ccbfe5809f1a8afdd4195a41f5fe1403..6455168c4aaa6d3b4403cb98f143edcc56c0d0e0 100644 --- a/patches/wireless_regdb/0001-Add-wireless-regdb-regulatory-database-file.patch +++ b/patches/wireless_regdb/0001-Add-wireless-regdb-regulatory-database-file.patch @@ -1,12 +1,12 @@ -From 4a25b6070f308a81863f7d23262adbbcad562c91 Mon Sep 17 00:00:00 2001 +From 2284c2017ddf7711afbdd877aa46ff2f0c629df7 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 29 Jun 2021 14:05:50 -0500 +Date: Wed, 14 Jul 2021 16:22:00 -0500 Subject: [PATCH] Add wireless-regdb regulatory database file -https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/commit/?id=04f3e5411b1cdc59292775e7b8e05a5d35ea4a80 +https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/commit/?id=a4468e8f1ff2710982d2a8042e974d801e3a7ba0 Signed-off-by: Robert Nelson <robertcnelson@gmail.com> --- - firmware/regulatory.db | Bin 0 -> 4016 bytes + firmware/regulatory.db | Bin 0 -> 4036 bytes firmware/regulatory.db.p7s | Bin 0 -> 1182 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 firmware/regulatory.db @@ -14,52 +14,53 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com> diff --git a/firmware/regulatory.db b/firmware/regulatory.db new file mode 100644 -index 0000000000000000000000000000000000000000..32df7e5945f90d06c8006a03ff9fda394b5162ad +index 0000000000000000000000000000000000000000..e0db5f8be0f4d5d3f0279864594855d73de461d7 GIT binary patch -literal 4016 -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 +literal 4036 +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 +HF2sKU30BCv literal 0 HcmV?d00001 diff --git a/firmware/regulatory.db.p7s b/firmware/regulatory.db.p7s new file mode 100644 -index 0000000000000000000000000000000000000000..b477e52de1205811ab2e2f980c6f8e3a47f7eebf +index 0000000000000000000000000000000000000000..730aef4f364c55791a56566ff585b444823343bb GIT binary patch literal 1182 zcmXqLVwuIpsnzDu_MMlJooPW6OSeH2OFI)IqanWmFB@k<n+IbmGYb<VD}w<yLLuXV @@ -76,13 +77,13 @@ zwl_NPY%Twq^Pwf~#g`ddw{t6nsnpKrT*=oq&pdigF4N7P69HL|B0r0<z1rloHR9i{ zi;dw@?>AX=M0{IyM6Wwa{mIf7OHQT7tSL%AoG*M>*R=9_*YmGe6b-ztep`IAGVBw- z!1vk<fs^&!f7E(&wS)?B)%sb>YwQ2f*qmwdu%Ti1qxCzl8GMutX;+>(KaknSwU#Nh zc=g}&Q_k>OCH%D!(HApbsVILsU}Hb?y9H@0#VSP%n;5qNQ^_V^qBc;#nzqnVFjAsl -zkZB+RPtu&shRAuqKn5YhYRE6nYh-9(0!+%Lrlv+_Q3m=5Sr$Vj7KIo3FJtW5x~r5O -z3d21o<=;-=JbwM^*_GQ&zV4nRz)+Ko9Cg6N&C<lk!27%Uo1SM<UJ~o6w_M-#u76J4 -zw8<|tF2GdnZMyj)lm6qi(r-%>GBgu%w#3eeE7<9(T)gk9VUmB#3GWF;Q*t{J=5i{` -zu8Ft0_WaUfcHRvOUZ0kY@->>3?l&=5+5PjKp40E_L%BmmE=X<IQfzo^6HCS=C;5ZZ -z*1tM`B5{>Np<K(d9W53g&)Majoof4`<@Ag*^9!z5EDbTW`5&W{w{fELgQMT4Zh0DU -zZAxFH)-$d4)l;^Z+5chntuT7te9EMh!`%A)T-7=rxzBD~kIJ|&HJCTYn}^)rwU&8q -uyUG-qOUgX)2MSIVzb<`#SVGQgcZJRUuZ15Xnx@pe2=|azx6#mf{SE*oSJ(sq +zkZB+RPtu&shRAuqKn5YhYRE6nYh-9(ZfIg?W@K(?6lI`~kYzDcVo^wm)H^wIZ!|-h +zyo*ZZ%}o>kZF<=qRJN>Y>;2ywx2rcQB1auCakDfrGBgOQ{#Cp<Wo_5r&W{IPF0<$T +z=l7ZQcWhAR^t19idtcjL`*L?${jsS+F>~%agfs{|P`t9`I^SFIK7GE8JA2;+a~<ER +z$PxNl@cBv(Kh<Vat%;iUR#jn1XIS5IvaKog-nrPiGiL(-H3z%wQ*ry2w5t6u;^jDV +zAjMyoKOytZ%6kU?&UM)H*yK4{Kk44nniV?hkmjuFRr+!X^|P#}%Xo%;Nk0`Psq#&4 +zZSbDx8RzYU-l>@sDgL)U_0^E`!<5(0>bL!8>R_r%55F|6$2?kZonmRm3!Ph~rE_1a +vC{~5BNC!nso7%2yq20X1H1~dZiLcnRn_ne&mardQx|4rX;qObf4^9IB_&U~k literal 0 HcmV?d00001 diff --git a/patches/wpanusb/0001-merge-wpanusb-https-github.com-statropy-wpanusb.patch b/patches/wpanusb/0001-merge-wpanusb-https-github.com-statropy-wpanusb.patch index 0ebd4613c067da3409247ba1e82e1a2eec1e940a..7fafbb0d45ca242e981d09e12710ee55ff0735ff 100644 --- a/patches/wpanusb/0001-merge-wpanusb-https-github.com-statropy-wpanusb.patch +++ b/patches/wpanusb/0001-merge-wpanusb-https-github.com-statropy-wpanusb.patch @@ -1,6 +1,6 @@ -From 06dc6fbe87eabc7cc0ef747f0949edc6c3c63735 Mon Sep 17 00:00:00 2001 +From 305a99df26313aae62bfb168bef1fc7a48e54b22 Mon Sep 17 00:00:00 2001 From: Robert Nelson <robertcnelson@gmail.com> -Date: Tue, 29 Jun 2021 14:03:05 -0500 +Date: Wed, 14 Jul 2021 16:21:40 -0500 Subject: [PATCH] merge: wpanusb: https://github.com/statropy/wpanusb https://github.com/statropy/wpanusb/commit/251f0167545bf2dcaa3cad991a59dbf5ab05490a diff --git a/tools/host_det.sh b/tools/host_det.sh index d1ba639d166a46132455f38696cdded9649ac232..c2e2071aa89a48e4e2b4a6c75b521c0ed7e4ff5f 100755 --- a/tools/host_det.sh +++ b/tools/host_det.sh @@ -310,6 +310,7 @@ debian_regs () { ;; debbie) #LMDE 4 + #http://packages.linuxmint.com/index.php deb_distro="buster" ;; debian) @@ -413,6 +414,11 @@ debian_regs () { #http://packages.linuxmint.com/index.php deb_distro="focal" ;; + uma) + #20.2 + #http://packages.linuxmint.com/index.php + deb_distro="focal" + ;; esac #Future Debian Code names: @@ -530,7 +536,7 @@ debian_regs () { fi if [ "${deb_pkgs}" ] ; then - echo "Debian/Ubuntu/Mint: missing dependencies, please install:" + echo "Debian/Ubuntu/Mint: missing dependencies, please install these packages via:" echo "-----------------------------" echo "sudo apt-get update" echo "sudo apt-get install ${deb_pkgs}" diff --git a/version.sh b/version.sh index f1270399f5678f27a0e9d3ec48fde9dbfcd35956..666434cb434bfb9aae392ff24526ccc292581744 100644 --- a/version.sh +++ b/version.sh @@ -38,10 +38,10 @@ toolchain="gcc_11_arm" #Kernel KERNEL_REL=5.13 -KERNEL_TAG=${KERNEL_REL} +KERNEL_TAG=${KERNEL_REL}.2 kernel_rt=".X-rtY" #Kernel Build -BUILD=${build_prefix}10 +BUILD=${build_prefix}10.1 #v5.X-rcX + upto SHA #prev_KERNEL_SHA=""