kernel: bump 5.10 to 5.10.32
Deleted (reverse-appliable): mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch Automatically refreshed: ath79/patches-5.10/0036-GPIO-add-named-gpio-exports.patch generic/backport-5.10/600-v5.12-net-extract-napi-poll-functionality-to-__napi_poll.patch generic/backport-5.10/601-v5.12-net-implement-threaded-able-napi-poll-loop-support.patch generic/backport-5.10/602-v5.12-net-add-sysfs-attribute-to-control-napi-threaded-mod.patch generic/backport-5.10/603-v5.12-net-fix-race-between-napi-kthread-mode-and-busy-poll.patch generic/pending-5.10/600-netfilter_conntrack_flush.patch generic/pending-5.10/613-netfilter_optional_tcp_window_check.patch generic/pending-5.10/680-NET-skip-GRO-for-foreign-MAC-addresses.patch generic/pending-5.10/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch lantiq/patches-5.10/0030-GPIO-add-named-gpio-exports.patch ramips/patches-5.10/800-GPIO-add-named-gpio-exports.patch Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
This commit is contained in:
		
				
					committed by
					
						
						Kevin Darbyshire-Bryant
					
				
			
			
				
	
			
			
			
						parent
						
							3e3af1908c
						
					
				
				
					commit
					182eaa4916
				
			@@ -7,10 +7,10 @@ ifdef CONFIG_TESTING_KERNEL
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION-5.4 = .113
 | 
			
		||||
LINUX_VERSION-5.10 = .31
 | 
			
		||||
LINUX_VERSION-5.10 = .32
 | 
			
		||||
 | 
			
		||||
LINUX_KERNEL_HASH-5.4.113 = 30cde92463c474b75f9eb197654570dd6dbb32ec20695544c5469f292662da47
 | 
			
		||||
LINUX_KERNEL_HASH-5.10.31 = 54eef1a4d29a2582281375e028ac73c2c5d90dfa21500fa8c3b00e529a2b510d
 | 
			
		||||
LINUX_KERNEL_HASH-5.10.32 = 644f8e326e4cb8eac65f0874774c09ccf91cbe0b55eb8438c1e8711d3d07d7ba
 | 
			
		||||
 | 
			
		||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 | 
			
		||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
+module_platform_driver(gpio_export_driver);
 | 
			
		||||
--- a/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
+++ b/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
@@ -564,7 +564,7 @@ static struct class gpio_class = {
 | 
			
		||||
@@ -572,7 +572,7 @@ static struct class gpio_class = {
 | 
			
		||||
  *
 | 
			
		||||
  * Returns zero on success, else an error.
 | 
			
		||||
  */
 | 
			
		||||
@@ -102,7 +102,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 {
 | 
			
		||||
 	struct gpio_chip	*chip;
 | 
			
		||||
 	struct gpio_device	*gdev;
 | 
			
		||||
@@ -626,6 +626,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
@@ -634,6 +634,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
 	offset = gpio_chip_hwgpio(desc);
 | 
			
		||||
 	if (chip->names && chip->names[offset])
 | 
			
		||||
 		ioname = chip->names[offset];
 | 
			
		||||
@@ -111,7 +111,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 
 | 
			
		||||
 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
 | 
			
		||||
 					MKDEV(0, 0), data, gpio_groups,
 | 
			
		||||
@@ -647,6 +649,12 @@ err_unlock:
 | 
			
		||||
@@ -655,6 +657,12 @@ err_unlock:
 | 
			
		||||
 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
 | 
			
		||||
 	return status;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 | 
			
		||||
--- a/net/core/dev.c
 | 
			
		||||
+++ b/net/core/dev.c
 | 
			
		||||
@@ -6752,15 +6752,10 @@ void __netif_napi_del(struct napi_struct
 | 
			
		||||
@@ -6753,15 +6753,10 @@ void __netif_napi_del(struct napi_struct
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(__netif_napi_del);
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 	weight = n->weight;
 | 
			
		||||
 
 | 
			
		||||
 	/* This NAPI_STATE_SCHED test is for avoiding a race
 | 
			
		||||
@@ -6780,7 +6775,7 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
@@ -6781,7 +6776,7 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
 			    n->poll, work, weight);
 | 
			
		||||
 
 | 
			
		||||
 	if (likely(work < weight))
 | 
			
		||||
@@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 
 | 
			
		||||
 	/* Drivers must not modify the NAPI state if they
 | 
			
		||||
 	 * consume the entire weight.  In such cases this code
 | 
			
		||||
@@ -6789,7 +6784,7 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
@@ -6790,7 +6785,7 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
 	 */
 | 
			
		||||
 	if (unlikely(napi_disable_pending(n))) {
 | 
			
		||||
 		napi_complete(n);
 | 
			
		||||
@@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	if (n->gro_bitmask) {
 | 
			
		||||
@@ -6807,12 +6802,29 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
@@ -6808,12 +6803,29 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
 	if (unlikely(!list_empty(&n->poll_list))) {
 | 
			
		||||
 		pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
 | 
			
		||||
 			     n->dev ? n->dev->name : "backlog");
 | 
			
		||||
 
 | 
			
		||||
@@ -153,7 +153,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 	list_add_tail(&napi->poll_list, &sd->poll_list);
 | 
			
		||||
 	__raise_softirq_irqoff(NET_RX_SOFTIRQ);
 | 
			
		||||
 }
 | 
			
		||||
@@ -6705,6 +6742,12 @@ void netif_napi_add(struct net_device *d
 | 
			
		||||
@@ -6706,6 +6743,12 @@ void netif_napi_add(struct net_device *d
 | 
			
		||||
 	set_bit(NAPI_STATE_NPSVC, &napi->state);
 | 
			
		||||
 	list_add_rcu(&napi->dev_list, &dev->napi_list);
 | 
			
		||||
 	napi_hash_add(napi);
 | 
			
		||||
@@ -166,7 +166,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(netif_napi_add);
 | 
			
		||||
 
 | 
			
		||||
@@ -6721,9 +6764,28 @@ void napi_disable(struct napi_struct *n)
 | 
			
		||||
@@ -6722,9 +6765,28 @@ void napi_disable(struct napi_struct *n)
 | 
			
		||||
 	hrtimer_cancel(&n->timer);
 | 
			
		||||
 
 | 
			
		||||
 	clear_bit(NAPI_STATE_DISABLE, &n->state);
 | 
			
		||||
@@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 static void flush_gro_hash(struct napi_struct *napi)
 | 
			
		||||
 {
 | 
			
		||||
 	int i;
 | 
			
		||||
@@ -6749,6 +6811,11 @@ void __netif_napi_del(struct napi_struct
 | 
			
		||||
@@ -6750,6 +6812,11 @@ void __netif_napi_del(struct napi_struct
 | 
			
		||||
 
 | 
			
		||||
 	flush_gro_hash(napi);
 | 
			
		||||
 	napi->gro_bitmask = 0;
 | 
			
		||||
@@ -207,7 +207,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(__netif_napi_del);
 | 
			
		||||
 
 | 
			
		||||
@@ -6830,6 +6897,51 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
@@ -6831,6 +6898,51 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
 	return work;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
			
		||||
 		 * wake_up_process() when it's not NULL.
 | 
			
		||||
 		 */
 | 
			
		||||
 		thread = READ_ONCE(napi->thread);
 | 
			
		||||
@@ -6715,6 +6716,49 @@ static void init_gro_hash(struct napi_st
 | 
			
		||||
@@ -6716,6 +6717,49 @@ static void init_gro_hash(struct napi_st
 | 
			
		||||
 	napi->gro_bitmask = 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
 | 
			
		||||
 			wake_up_process(thread);
 | 
			
		||||
 			return;
 | 
			
		||||
 		}
 | 
			
		||||
@@ -6507,7 +6509,8 @@ bool napi_complete_done(struct napi_stru
 | 
			
		||||
@@ -6508,7 +6510,8 @@ bool napi_complete_done(struct napi_stru
 | 
			
		||||
 
 | 
			
		||||
 		WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
 | 
			
		||||
 
 | 
			
		||||
 		/* If STATE_MISSED was set, leave STATE_SCHED set,
 | 
			
		||||
 		 * because we will call napi->poll() one more time.
 | 
			
		||||
@@ -6943,16 +6946,25 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
@@ -6944,16 +6947,25 @@ static int napi_poll(struct napi_struct
 | 
			
		||||
 
 | 
			
		||||
 static int napi_thread_wait(struct napi_struct *napi)
 | 
			
		||||
 {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 #include <net/net_namespace.h>
 | 
			
		||||
 #ifdef CONFIG_SYSCTL
 | 
			
		||||
 #include <linux/sysctl.h>
 | 
			
		||||
@@ -456,6 +457,56 @@ static int ct_cpu_seq_show(struct seq_fi
 | 
			
		||||
@@ -457,6 +458,56 @@ static int ct_cpu_seq_show(struct seq_fi
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 static const struct seq_operations ct_cpu_seq_ops = {
 | 
			
		||||
 	.start	= ct_cpu_seq_start,
 | 
			
		||||
 	.next	= ct_cpu_seq_next,
 | 
			
		||||
@@ -469,8 +520,9 @@ static int nf_conntrack_standalone_init_
 | 
			
		||||
@@ -470,8 +521,9 @@ static int nf_conntrack_standalone_init_
 | 
			
		||||
 	kuid_t root_uid;
 | 
			
		||||
 	kgid_t root_gid;
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 static bool enable_hooks __read_mostly;
 | 
			
		||||
 MODULE_PARM_DESC(enable_hooks, "Always enable conntrack hooks");
 | 
			
		||||
 module_param(enable_hooks, bool, 0000);
 | 
			
		||||
@@ -651,6 +654,7 @@ enum nf_ct_sysctl_index {
 | 
			
		||||
@@ -652,6 +655,7 @@ enum nf_ct_sysctl_index {
 | 
			
		||||
 	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE_STREAM,
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	__NF_SYSCTL_CT_LAST_SYSCTL,
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@@ -977,6 +981,13 @@ static struct ctl_table nf_ct_sysctl_tab
 | 
			
		||||
@@ -978,6 +982,13 @@ static struct ctl_table nf_ct_sysctl_tab
 | 
			
		||||
 		.proc_handler   = proc_dointvec_jiffies,
 | 
			
		||||
 	},
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	__u16			tc_index;	/* traffic control index */
 | 
			
		||||
--- a/net/core/dev.c
 | 
			
		||||
+++ b/net/core/dev.c
 | 
			
		||||
@@ -6017,6 +6017,9 @@ static enum gro_result dev_gro_receive(s
 | 
			
		||||
@@ -6018,6 +6018,9 @@ static enum gro_result dev_gro_receive(s
 | 
			
		||||
 	int same_flow;
 | 
			
		||||
 	int grow;
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	if (netif_elide_gro(skb->dev))
 | 
			
		||||
 		goto normal;
 | 
			
		||||
 
 | 
			
		||||
@@ -7985,6 +7988,48 @@ static void __netdev_adjacent_dev_unlink
 | 
			
		||||
@@ -7986,6 +7989,48 @@ static void __netdev_adjacent_dev_unlink
 | 
			
		||||
 					   &upper_dev->adj_list.lower);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 static int __netdev_upper_dev_link(struct net_device *dev,
 | 
			
		||||
 				   struct net_device *upper_dev, bool master,
 | 
			
		||||
 				   void *upper_priv, void *upper_info,
 | 
			
		||||
@@ -8036,6 +8081,7 @@ static int __netdev_upper_dev_link(struc
 | 
			
		||||
@@ -8037,6 +8082,7 @@ static int __netdev_upper_dev_link(struc
 | 
			
		||||
 	if (ret)
 | 
			
		||||
 		return ret;
 | 
			
		||||
 
 | 
			
		||||
@@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
 | 
			
		||||
 					    &changeupper_info.info);
 | 
			
		||||
 	ret = notifier_to_errno(ret);
 | 
			
		||||
@@ -8132,6 +8178,7 @@ static void __netdev_upper_dev_unlink(st
 | 
			
		||||
@@ -8133,6 +8179,7 @@ static void __netdev_upper_dev_unlink(st
 | 
			
		||||
 
 | 
			
		||||
 	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
 | 
			
		||||
 				      &changeupper_info.info);
 | 
			
		||||
 
 | 
			
		||||
@@ -8918,6 +8965,7 @@ int dev_set_mac_address(struct net_devic
 | 
			
		||||
@@ -8919,6 +8966,7 @@ int dev_set_mac_address(struct net_devic
 | 
			
		||||
 	if (err)
 | 
			
		||||
 		return err;
 | 
			
		||||
 	dev->addr_assign_type = NET_ADDR_SET;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
 | 
			
		||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
 | 
			
		||||
@@ -5405,6 +5405,7 @@ static int mv88e6xxx_register_switch(str
 | 
			
		||||
@@ -5401,6 +5401,7 @@ static int mv88e6xxx_register_switch(str
 | 
			
		||||
 	ds->ops = &mv88e6xxx_switch_ops;
 | 
			
		||||
 	ds->ageing_time_min = chip->info->age_time_coeff;
 | 
			
		||||
 	ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
 | 
			
		||||
 
 | 
			
		||||
@@ -136,7 +136,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 {
 | 
			
		||||
--- a/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
+++ b/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
@@ -564,7 +564,7 @@ static struct class gpio_class = {
 | 
			
		||||
@@ -572,7 +572,7 @@ static struct class gpio_class = {
 | 
			
		||||
  *
 | 
			
		||||
  * Returns zero on success, else an error.
 | 
			
		||||
  */
 | 
			
		||||
@@ -145,7 +145,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 {
 | 
			
		||||
 	struct gpio_chip	*chip;
 | 
			
		||||
 	struct gpio_device	*gdev;
 | 
			
		||||
@@ -626,6 +626,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
@@ -634,6 +634,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
 	offset = gpio_chip_hwgpio(desc);
 | 
			
		||||
 	if (chip->names && chip->names[offset])
 | 
			
		||||
 		ioname = chip->names[offset];
 | 
			
		||||
@@ -154,7 +154,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 
 | 
			
		||||
 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
 | 
			
		||||
 					MKDEV(0, 0), data, gpio_groups,
 | 
			
		||||
@@ -647,6 +649,12 @@ err_unlock:
 | 
			
		||||
@@ -655,6 +657,12 @@ err_unlock:
 | 
			
		||||
 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
 | 
			
		||||
 	return status;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
From 4a4854761c9dedeedbf72c25d1317ab2e7600d4f Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
Date: Mon, 8 Mar 2021 23:16:17 +0100
 | 
			
		||||
Subject: [PATCH] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout
 | 
			
		||||
 | 
			
		||||
This fixes NAND_OP_WAITRDY_INSTR operation in the driver. Without this
 | 
			
		||||
change the driver waits till the system is busy, but we should wait till
 | 
			
		||||
the busy flag is cleared. The readl_poll_timeout() function gets a break
 | 
			
		||||
condition, not a wait condition.
 | 
			
		||||
 | 
			
		||||
In addition fix the timeout. The timeout_ms is given in ms, but the
 | 
			
		||||
readl_poll_timeout() function takes the timeout in us. Multiple the
 | 
			
		||||
given timeout by 1000 to convert it.
 | 
			
		||||
 | 
			
		||||
Without this change, the driver does not work at all, it doesn't even
 | 
			
		||||
identify the NAND chip.
 | 
			
		||||
 | 
			
		||||
Fixes: 5197360f9e09 ("mtd: rawnand: mtk: Convert the driver to exec_op()")
 | 
			
		||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
---
 | 
			
		||||
 drivers/mtd/nand/raw/mtk_nand.c | 4 ++--
 | 
			
		||||
 1 file changed, 2 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
--- a/drivers/mtd/nand/raw/mtk_nand.c
 | 
			
		||||
+++ b/drivers/mtd/nand/raw/mtk_nand.c
 | 
			
		||||
@@ -488,8 +488,8 @@ static int mtk_nfc_exec_instr(struct nan
 | 
			
		||||
 		return 0;
 | 
			
		||||
 	case NAND_OP_WAITRDY_INSTR:
 | 
			
		||||
 		return readl_poll_timeout(nfc->regs + NFI_STA, status,
 | 
			
		||||
-					  status & STA_BUSY, 20,
 | 
			
		||||
-					  instr->ctx.waitrdy.timeout_ms);
 | 
			
		||||
+					  !(status & STA_BUSY), 20,
 | 
			
		||||
+					  instr->ctx.waitrdy.timeout_ms * 1000);
 | 
			
		||||
 	default:
 | 
			
		||||
 		break;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -93,7 +93,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
+module_platform_driver(gpio_export_driver);
 | 
			
		||||
--- a/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
+++ b/drivers/gpio/gpiolib-sysfs.c
 | 
			
		||||
@@ -564,7 +564,7 @@ static struct class gpio_class = {
 | 
			
		||||
@@ -572,7 +572,7 @@ static struct class gpio_class = {
 | 
			
		||||
  *
 | 
			
		||||
  * Returns zero on success, else an error.
 | 
			
		||||
  */
 | 
			
		||||
@@ -102,7 +102,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 {
 | 
			
		||||
 	struct gpio_chip	*chip;
 | 
			
		||||
 	struct gpio_device	*gdev;
 | 
			
		||||
@@ -626,6 +626,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
@@ -634,6 +634,8 @@ int gpiod_export(struct gpio_desc *desc,
 | 
			
		||||
 	offset = gpio_chip_hwgpio(desc);
 | 
			
		||||
 	if (chip->names && chip->names[offset])
 | 
			
		||||
 		ioname = chip->names[offset];
 | 
			
		||||
@@ -111,7 +111,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 
 | 
			
		||||
 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
 | 
			
		||||
 					MKDEV(0, 0), data, gpio_groups,
 | 
			
		||||
@@ -647,6 +649,12 @@ err_unlock:
 | 
			
		||||
@@ -655,6 +657,12 @@ err_unlock:
 | 
			
		||||
 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
 | 
			
		||||
 	return status;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user