kernel: bump 5.4 to 5.4.142
Compile-tested: ath79-generic ipq40xx-generic Run-tested: ipq40xx-generic Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
		| @@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
|   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) |   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) | ||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-5.4 = .137 | LINUX_VERSION-5.4 = .142 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-5.4.137 = f09e5e366ce5d8bde887cda229ef17138fd1653706a702221f934f99aaa31f7c | LINUX_KERNEL_HASH-5.4.142 = 99785728968564ba27c7e552d024b560072dcbc885540912eabb5c021e231451 | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
| sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Subject: [PATCH] Added Device IDs for August DVB-T 205 | |||||||
|  |  | ||||||
| --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c | --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c | ||||||
| +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c | +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c | ||||||
| @@ -1938,6 +1938,10 @@ static const struct usb_device_id rtl28x | @@ -1947,6 +1947,10 @@ static const struct usb_device_id rtl28x | ||||||
|  		&rtl28xxu_props, "Compro VideoMate U650F", NULL) }, |  		&rtl28xxu_props, "Compro VideoMate U650F", NULL) }, | ||||||
|  	{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394, |  	{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394, | ||||||
|  		&rtl28xxu_props, "MaxMedia HU394-T", NULL) }, |  		&rtl28xxu_props, "MaxMedia HU394-T", NULL) }, | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/media/common/videobuf2/videobuf2-core.c | --- a/drivers/media/common/videobuf2/videobuf2-core.c | ||||||
| +++ b/drivers/media/common/videobuf2/videobuf2-core.c | +++ b/drivers/media/common/videobuf2/videobuf2-core.c | ||||||
| @@ -2073,12 +2073,12 @@ static int __find_plane_by_offset(struct | @@ -2084,12 +2084,12 @@ static int __find_plane_by_offset(struct | ||||||
|  	return -EINVAL; |  	return -EINVAL; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -35,7 +35,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> | |||||||
|  	struct dma_buf *dbuf; |  	struct dma_buf *dbuf; | ||||||
|   |   | ||||||
|  	if (q->memory != VB2_MEMORY_MMAP) { |  	if (q->memory != VB2_MEMORY_MMAP) { | ||||||
| @@ -2128,6 +2128,21 @@ int vb2_core_expbuf(struct vb2_queue *q, | @@ -2139,6 +2139,21 @@ int vb2_core_expbuf(struct vb2_queue *q, | ||||||
|  		return -EINVAL; |  		return -EINVAL; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -249,7 +249,7 @@ Signed-off-by: Christoph Hellwig <hch@lst.de> | |||||||
|   * @dma_pfn_offset: offset of DMA memory range relatively of RAM |   * @dma_pfn_offset: offset of DMA memory range relatively of RAM | ||||||
|   * @dma_parms:	A low level driver may set these to teach IOMMU code about |   * @dma_parms:	A low level driver may set these to teach IOMMU code about | ||||||
|   * 		segment limitations. |   * 		segment limitations. | ||||||
| @@ -1270,7 +1270,7 @@ struct device { | @@ -1271,7 +1271,7 @@ struct device { | ||||||
|  					     not all hardware supports |  					     not all hardware supports | ||||||
|  					     64 bit addresses for consistent |  					     64 bit addresses for consistent | ||||||
|  					     allocations such descriptors. */ |  					     allocations such descriptors. */ | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | |||||||
|  |  | ||||||
| --- a/drivers/media/v4l2-core/v4l2-mem2mem.c | --- a/drivers/media/v4l2-core/v4l2-mem2mem.c | ||||||
| +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c | +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c | ||||||
| @@ -1218,6 +1218,59 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struc | @@ -1216,6 +1216,59 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struc | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_try_decoder_cmd); |  EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_try_decoder_cmd); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -168,7 +168,7 @@ Signed-off-by: John Cox <jc@kynesim.co.uk> | |||||||
|  	} |  	} | ||||||
|  	schedule_next = _v4l2_m2m_job_finish(m2m_dev, m2m_ctx); |  	schedule_next = _v4l2_m2m_job_finish(m2m_dev, m2m_ctx); | ||||||
|  unlock: |  unlock: | ||||||
| @@ -983,12 +1074,14 @@ struct v4l2_m2m_ctx *v4l2_m2m_ctx_init(s | @@ -981,12 +1072,14 @@ struct v4l2_m2m_ctx *v4l2_m2m_ctx_init(s | ||||||
|  	m2m_ctx->priv = drv_priv; |  	m2m_ctx->priv = drv_priv; | ||||||
|  	m2m_ctx->m2m_dev = m2m_dev; |  	m2m_ctx->m2m_dev = m2m_dev; | ||||||
|  	init_waitqueue_head(&m2m_ctx->finished); |  	init_waitqueue_head(&m2m_ctx->finished); | ||||||
|   | |||||||
| @@ -1,56 +0,0 @@ | |||||||
| From 22198e801db7542c59098a75bdab120bcbc42652 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Phil Elwell <phil@raspberrypi.com> |  | ||||||
| Date: Wed, 30 Sep 2020 19:23:43 +0100 |  | ||||||
| Subject: [PATCH] USB: gadget: f_hid: avoid crashes and log spam |  | ||||||
|  |  | ||||||
| Disconnecting and reconnecting the USB cable can lead to crashes and a |  | ||||||
| variety of kernel log spam. Try to fix or minimise both. |  | ||||||
|  |  | ||||||
| See: https://github.com/raspberrypi/linux/issues/3870 |  | ||||||
|  |  | ||||||
| Signed-off-by: Phil Elwell <phil@raspberrypi.com> |  | ||||||
| --- |  | ||||||
|  drivers/usb/gadget/function/f_hid.c | 18 +++++++++++++++++- |  | ||||||
|  1 file changed, 17 insertions(+), 1 deletion(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/usb/gadget/function/f_hid.c |  | ||||||
| +++ b/drivers/usb/gadget/function/f_hid.c |  | ||||||
| @@ -344,6 +344,11 @@ static ssize_t f_hidg_write(struct file |  | ||||||
|   |  | ||||||
|  	spin_lock_irqsave(&hidg->write_spinlock, flags); |  | ||||||
|   |  | ||||||
| +	if (!hidg->req) { |  | ||||||
| +		spin_unlock_irqrestore(&hidg->write_spinlock, flags); |  | ||||||
| +		return -ESHUTDOWN; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
|  #define WRITE_COND (!hidg->write_pending) |  | ||||||
|  try_again: |  | ||||||
|  	/* write queue */ |  | ||||||
| @@ -364,7 +369,13 @@ try_again: |  | ||||||
|  	count  = min_t(unsigned, count, hidg->report_length); |  | ||||||
|   |  | ||||||
|  	spin_unlock_irqrestore(&hidg->write_spinlock, flags); |  | ||||||
| -	status = copy_from_user(req->buf, buffer, count); |  | ||||||
| +	if (req) { |  | ||||||
| +		status = copy_from_user(req->buf, buffer, count); |  | ||||||
| +	} else { |  | ||||||
| +		ERROR(hidg->func.config->cdev, "hidg->req is NULL\n"); |  | ||||||
| +		status = -ESHUTDOWN; |  | ||||||
| +		goto release_write_pending; |  | ||||||
| +	} |  | ||||||
|   |  | ||||||
|  	if (status != 0) { |  | ||||||
|  		ERROR(hidg->func.config->cdev, |  | ||||||
| @@ -393,6 +404,11 @@ try_again: |  | ||||||
|   |  | ||||||
|  	spin_unlock_irqrestore(&hidg->write_spinlock, flags); |  | ||||||
|   |  | ||||||
| +	if (!hidg->in_ep->enabled) { |  | ||||||
| +		ERROR(hidg->func.config->cdev, "in_ep is disabled\n"); |  | ||||||
| +		status = -ESHUTDOWN; |  | ||||||
| +		goto release_write_pending; |  | ||||||
| +	} |  | ||||||
|  	status = usb_ep_queue(hidg->in_ep, req, GFP_ATOMIC); |  | ||||||
|  	if (status < 0) { |  | ||||||
|  		ERROR(hidg->func.config->cdev, |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| From 5018dc559136e2bca24973e71ed8747adf0f37f3 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Phil Elwell <phil@raspberrypi.com> |  | ||||||
| Date: Mon, 5 Oct 2020 15:41:15 +0100 |  | ||||||
| Subject: [PATCH] SQUASH: USB: gadget: f_hid: remove more spam |  | ||||||
|  |  | ||||||
| Tidying up the previous patch to this file dropped the deletion of a |  | ||||||
| particularly noisy error message. Restore its removal. |  | ||||||
|  |  | ||||||
| See: https://github.com/raspberrypi/linux/issues/3870 |  | ||||||
|  |  | ||||||
| Signed-off-by: Phil Elwell <phil@raspberrypi.com> |  | ||||||
| --- |  | ||||||
|  drivers/usb/gadget/function/f_hid.c | 2 -- |  | ||||||
|  1 file changed, 2 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/usb/gadget/function/f_hid.c |  | ||||||
| +++ b/drivers/usb/gadget/function/f_hid.c |  | ||||||
| @@ -411,8 +411,6 @@ try_again: |  | ||||||
|  	} |  | ||||||
|  	status = usb_ep_queue(hidg->in_ep, req, GFP_ATOMIC); |  | ||||||
|  	if (status < 0) { |  | ||||||
| -		ERROR(hidg->func.config->cdev, |  | ||||||
| -			"usb_ep_queue error on int endpoint %zd\n", status); |  | ||||||
|  		goto release_write_pending; |  | ||||||
|  	} else { |  | ||||||
|  		status = count; |  | ||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  |  | ||||||
| --- a/net/netfilter/nf_conntrack_core.c | --- a/net/netfilter/nf_conntrack_core.c | ||||||
| +++ b/net/netfilter/nf_conntrack_core.c | +++ b/net/netfilter/nf_conntrack_core.c | ||||||
| @@ -1207,18 +1207,6 @@ static bool gc_worker_can_early_drop(con | @@ -1212,18 +1212,6 @@ static bool gc_worker_can_early_drop(con | ||||||
|  	return false; |  	return false; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  static void gc_worker(struct work_struct *work) |  static void gc_worker(struct work_struct *work) | ||||||
|  { |  { | ||||||
|  	unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u); |  	unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u); | ||||||
| @@ -1255,10 +1243,8 @@ static void gc_worker(struct work_struct | @@ -1260,10 +1248,8 @@ static void gc_worker(struct work_struct | ||||||
|  			tmp = nf_ct_tuplehash_to_ctrack(h); |  			tmp = nf_ct_tuplehash_to_ctrack(h); | ||||||
|   |   | ||||||
|  			scanned++; |  			scanned++; | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -1145,6 +1145,64 @@ mt7530_port_vlan_del(struct dsa_switch * | @@ -1146,6 +1146,64 @@ mt7530_port_vlan_del(struct dsa_switch * | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  static enum dsa_tag_protocol |  static enum dsa_tag_protocol | ||||||
|  mtk_get_tag_protocol(struct dsa_switch *ds, int port) |  mtk_get_tag_protocol(struct dsa_switch *ds, int port) | ||||||
|  { |  { | ||||||
| @@ -1522,6 +1580,8 @@ static const struct dsa_switch_ops mt753 | @@ -1523,6 +1581,8 @@ static const struct dsa_switch_ops mt753 | ||||||
|  	.port_vlan_prepare	= mt7530_port_vlan_prepare, |  	.port_vlan_prepare	= mt7530_port_vlan_prepare, | ||||||
|  	.port_vlan_add		= mt7530_port_vlan_add, |  	.port_vlan_add		= mt7530_port_vlan_add, | ||||||
|  	.port_vlan_del		= mt7530_port_vlan_del, |  	.port_vlan_del		= mt7530_port_vlan_del, | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -1085,12 +1085,6 @@ mt7530_port_vlan_add(struct dsa_switch * | @@ -1086,12 +1086,6 @@ mt7530_port_vlan_add(struct dsa_switch * | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|  	u16 vid; |  	u16 vid; | ||||||
|   |   | ||||||
| @@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	mutex_lock(&priv->reg_mutex); |  	mutex_lock(&priv->reg_mutex); | ||||||
|   |   | ||||||
|  	for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) { |  	for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) { | ||||||
| @@ -1116,12 +1110,6 @@ mt7530_port_vlan_del(struct dsa_switch * | @@ -1117,12 +1111,6 @@ mt7530_port_vlan_del(struct dsa_switch * | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|  	u16 vid, pvid; |  	u16 vid, pvid; | ||||||
|   |   | ||||||
| @@ -41,7 +41,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	mutex_lock(&priv->reg_mutex); |  	mutex_lock(&priv->reg_mutex); | ||||||
|   |   | ||||||
|  	pvid = priv->ports[port].pvid; |  	pvid = priv->ports[port].pvid; | ||||||
| @@ -1234,6 +1222,7 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1235,6 +1223,7 @@ mt7530_setup(struct dsa_switch *ds) | ||||||
|  	 * as two netdev instances. |  	 * as two netdev instances. | ||||||
|  	 */ |  	 */ | ||||||
|  	dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent; |  	dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent; | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -427,34 +427,32 @@ mt7530_pad_clk_setup(struct dsa_switch * | @@ -428,34 +428,32 @@ mt7530_pad_clk_setup(struct dsa_switch * | ||||||
|  			     TD_DM_DRVP(8) | TD_DM_DRVN(8)); |  			     TD_DM_DRVP(8) | TD_DM_DRVN(8)); | ||||||
|   |   | ||||||
|  	/* Setup core clock for MT7530 */ |  	/* Setup core clock for MT7530 */ | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	}								\ |  	}								\ | ||||||
|  									\ |  									\ | ||||||
|  	/* __*init sections */						\ |  	/* __*init sections */						\ | ||||||
| @@ -904,6 +914,8 @@ | @@ -905,6 +915,8 @@ | ||||||
|  	EXIT_TEXT							\ |  	EXIT_TEXT							\ | ||||||
|  	EXIT_DATA							\ |  	EXIT_DATA							\ | ||||||
|  	EXIT_CALL							\ |  	EXIT_CALL							\ | ||||||
|   | |||||||
| @@ -1,56 +0,0 @@ | |||||||
| From 8c9254d41881c81bea610193c6ac59c8cb8b79fe Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Florian Eckert <fe@dev.tdt.de> |  | ||||||
| Date: Fri, 27 Mar 2020 16:11:55 +0100 |  | ||||||
| Subject: [PATCH] Revert "platform/x86: pcengines-apuv2: wire up simswitch gpio |  | ||||||
|  as led" |  | ||||||
|  |  | ||||||
| This reverts commit 5037d4ddda31c2dbbb018109655f61054b1756dc. |  | ||||||
|  |  | ||||||
| Commit message from linux: |  | ||||||
| The APU3+ boards have two SIM sockets, while only one of them |  | ||||||
| can be routed to the mpcie slots at a time. Selection is done |  | ||||||
| via simswap gpio. |  | ||||||
|  |  | ||||||
| We currently don't have a fitting subsystem for those cases yet, |  | ||||||
| so just wire it up to a LED for the time being. While this isn't |  | ||||||
| really semantically correct, it's a good compromise. |  | ||||||
|  |  | ||||||
| Explanation why this does not work: |  | ||||||
| This change connects the simswap to the LED subsystem of the kernel. |  | ||||||
| From my point of view, it's nonsense. If we do it this way, then this |  | ||||||
| can be switched relatively easily via the LED subsystem (trigger: |  | ||||||
| none/default-on) and that is dangerous! If this is used, it would be |  | ||||||
| unfavorable, since there is also another trigger (trigger: heartbeat/netdev). |  | ||||||
| This LED also appears in the LuCI and can therefore be switched by the user. |  | ||||||
|  |  | ||||||
| Therefore, this simswap GPIO should remain in the GPIO |  | ||||||
| subsystem and be switched via it and not be connected to the LED |  | ||||||
| subsystem. To avoid the problems mentioned above. The LED subsystem is |  | ||||||
| not made for this and it is not a good compromise, but rather dangerous. |  | ||||||
|  |  | ||||||
| Signed-off-by: Florian Eckert <fe@dev.tdt.de> |  | ||||||
| --- |  | ||||||
|  drivers/platform/x86/pcengines-apuv2.c | 5 +---- |  | ||||||
|  1 file changed, 1 insertion(+), 4 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/platform/x86/pcengines-apuv2.c |  | ||||||
| +++ b/drivers/platform/x86/pcengines-apuv2.c |  | ||||||
| @@ -77,8 +77,7 @@ static const struct amd_fch_gpio_pdata b |  | ||||||
|  static const struct gpio_led apu2_leds[] = { |  | ||||||
|  	{ .name = "apu:green:1" }, |  | ||||||
|  	{ .name = "apu:green:2" }, |  | ||||||
| -	{ .name = "apu:green:3" }, |  | ||||||
| -	{ .name = "apu:simswap" }, |  | ||||||
| +	{ .name = "apu:green:3" } |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  static const struct gpio_led_platform_data apu2_leds_pdata = { |  | ||||||
| @@ -95,8 +94,6 @@ static struct gpiod_lookup_table gpios_l |  | ||||||
|  				NULL, 1, GPIO_ACTIVE_LOW), |  | ||||||
|  		GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_LED3, |  | ||||||
|  				NULL, 2, GPIO_ACTIVE_LOW), |  | ||||||
| -		GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_SIMSWAP, |  | ||||||
| -				NULL, 3, GPIO_ACTIVE_LOW), |  | ||||||
|  	} |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  #define PPP_VERSION	"2.4.2" |  #define PPP_VERSION	"2.4.2" | ||||||
|   |   | ||||||
|  /* |  /* | ||||||
| @@ -1362,12 +1367,37 @@ static void ppp_dev_priv_destructor(stru | @@ -1373,12 +1378,37 @@ static void ppp_dev_priv_destructor(stru | ||||||
|  		ppp_destroy_interface(ppp); |  		ppp_destroy_interface(ppp); | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit | |||||||
| Signed-off-by: René van Dorst <opensource@vdorst.com> | Signed-off-by: René van Dorst <opensource@vdorst.com> | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -1409,9 +1409,13 @@ static void mt7530_phylink_mac_config(st | @@ -1410,9 +1410,13 @@ static void mt7530_phylink_mac_config(st | ||||||
|  	switch (state->speed) { |  	switch (state->speed) { | ||||||
|  	case SPEED_1000: |  	case SPEED_1000: | ||||||
|  		mcr_new |= PMCR_FORCE_SPEED_1000; |  		mcr_new |= PMCR_FORCE_SPEED_1000; | ||||||
| @@ -23,7 +23,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com> | |||||||
|  		break; |  		break; | ||||||
|  	} |  	} | ||||||
|  	if (state->duplex == DUPLEX_FULL) { |  	if (state->duplex == DUPLEX_FULL) { | ||||||
| @@ -1547,6 +1551,54 @@ mt7530_phylink_mac_link_state(struct dsa | @@ -1548,6 +1552,54 @@ mt7530_phylink_mac_link_state(struct dsa | ||||||
|  	return 1; |  	return 1; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -78,7 +78,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com> | |||||||
|  static const struct dsa_switch_ops mt7530_switch_ops = { |  static const struct dsa_switch_ops mt7530_switch_ops = { | ||||||
|  	.get_tag_protocol	= mtk_get_tag_protocol, |  	.get_tag_protocol	= mtk_get_tag_protocol, | ||||||
|  	.setup			= mt7530_setup, |  	.setup			= mt7530_setup, | ||||||
| @@ -1574,6 +1626,8 @@ static const struct dsa_switch_ops mt753 | @@ -1575,6 +1627,8 @@ static const struct dsa_switch_ops mt753 | ||||||
|  	.phylink_mac_config	= mt7530_phylink_mac_config, |  	.phylink_mac_config	= mt7530_phylink_mac_config, | ||||||
|  	.phylink_mac_link_down	= mt7530_phylink_mac_link_down, |  	.phylink_mac_link_down	= mt7530_phylink_mac_link_down, | ||||||
|  	.phylink_mac_link_up	= mt7530_phylink_mac_link_up, |  	.phylink_mac_link_up	= mt7530_phylink_mac_link_up, | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  	 * All 3.1 IP version constants are greater than the 3.0 IP |  	 * All 3.1 IP version constants are greater than the 3.0 IP | ||||||
| --- a/drivers/usb/dwc3/gadget.c | --- a/drivers/usb/dwc3/gadget.c | ||||||
| +++ b/drivers/usb/dwc3/gadget.c | +++ b/drivers/usb/dwc3/gadget.c | ||||||
| @@ -3578,6 +3578,10 @@ int dwc3_gadget_init(struct dwc3 *dwc) | @@ -3656,6 +3656,10 @@ int dwc3_gadget_init(struct dwc3 *dwc) | ||||||
|  	dwc->gadget.sg_supported	= true; |  	dwc->gadget.sg_supported	= true; | ||||||
|  	dwc->gadget.name		= "dwc3-gadget"; |  	dwc->gadget.name		= "dwc3-gadget"; | ||||||
|  	dwc->gadget.lpm_capable		= true; |  	dwc->gadget.lpm_capable		= true; | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	struct ethtool_eee *p = &priv->dev->ports[port].eee; |  	struct ethtool_eee *p = &priv->dev->ports[port].eee; | ||||||
| --- a/drivers/net/dsa/lantiq_gswip.c | --- a/drivers/net/dsa/lantiq_gswip.c | ||||||
| +++ b/drivers/net/dsa/lantiq_gswip.c | +++ b/drivers/net/dsa/lantiq_gswip.c | ||||||
| @@ -1657,7 +1657,9 @@ static void gswip_phylink_mac_link_down( | @@ -1663,7 +1663,9 @@ static void gswip_phylink_mac_link_down( | ||||||
|  static void gswip_phylink_mac_link_up(struct dsa_switch *ds, int port, |  static void gswip_phylink_mac_link_up(struct dsa_switch *ds, int port, | ||||||
|  				      unsigned int mode, |  				      unsigned int mode, | ||||||
|  				      phy_interface_t interface, |  				      phy_interface_t interface, | ||||||
| @@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -1442,7 +1442,9 @@ static void mt7530_phylink_mac_link_down | @@ -1443,7 +1443,9 @@ static void mt7530_phylink_mac_link_down | ||||||
|  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port, |  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port, | ||||||
|  				       unsigned int mode, |  				       unsigned int mode, | ||||||
|  				       phy_interface_t interface, |  				       phy_interface_t interface, | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -488,17 +488,6 @@ mt7530_mib_reset(struct dsa_switch *ds) | @@ -489,17 +489,6 @@ mt7530_mib_reset(struct dsa_switch *ds) | ||||||
|  	mt7530_write(priv, MT7530_MIB_CCR, CCR_MIB_ACTIVATE); |  	mt7530_write(priv, MT7530_MIB_CCR, CCR_MIB_ACTIVATE); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -33,7 +33,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  static int mt7530_phy_read(struct dsa_switch *ds, int port, int regnum) |  static int mt7530_phy_read(struct dsa_switch *ds, int port, int regnum) | ||||||
|  { |  { | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
| @@ -672,7 +661,7 @@ mt7530_port_enable(struct dsa_switch *ds | @@ -673,7 +662,7 @@ mt7530_port_enable(struct dsa_switch *ds | ||||||
|  	priv->ports[port].enable = true; |  	priv->ports[port].enable = true; | ||||||
|  	mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, |  	mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, | ||||||
|  		   priv->ports[port].pm); |  		   priv->ports[port].pm); | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	mutex_unlock(&priv->reg_mutex); |  	mutex_unlock(&priv->reg_mutex); | ||||||
|   |   | ||||||
| @@ -695,7 +684,7 @@ mt7530_port_disable(struct dsa_switch *d | @@ -696,7 +685,7 @@ mt7530_port_disable(struct dsa_switch *d | ||||||
|  	priv->ports[port].enable = false; |  	priv->ports[port].enable = false; | ||||||
|  	mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, |  	mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK, | ||||||
|  		   PCR_MATRIX_CLR); |  		   PCR_MATRIX_CLR); | ||||||
| @@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	mutex_unlock(&priv->reg_mutex); |  	mutex_unlock(&priv->reg_mutex); | ||||||
|  } |  } | ||||||
| @@ -1397,8 +1386,7 @@ static void mt7530_phylink_mac_config(st | @@ -1398,8 +1387,7 @@ static void mt7530_phylink_mac_config(st | ||||||
|   |   | ||||||
|  	mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port)); |  	mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port)); | ||||||
|  	mcr_new = mcr_cur; |  	mcr_new = mcr_cur; | ||||||
| @@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN | |  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN | | ||||||
|  		   PMCR_BACKPR_EN | PMCR_FORCE_MODE; |  		   PMCR_BACKPR_EN | PMCR_FORCE_MODE; | ||||||
|   |   | ||||||
| @@ -1406,26 +1394,6 @@ static void mt7530_phylink_mac_config(st | @@ -1407,26 +1395,6 @@ static void mt7530_phylink_mac_config(st | ||||||
|  	if (port == 5 && dsa_is_user_port(ds, 5)) |  	if (port == 5 && dsa_is_user_port(ds, 5)) | ||||||
|  		mcr_new |= PMCR_EXT_PHY; |  		mcr_new |= PMCR_EXT_PHY; | ||||||
|   |   | ||||||
| @@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	if (mcr_new != mcr_cur) |  	if (mcr_new != mcr_cur) | ||||||
|  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); |  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); | ||||||
|  } |  } | ||||||
| @@ -1436,7 +1404,7 @@ static void mt7530_phylink_mac_link_down | @@ -1437,7 +1405,7 @@ static void mt7530_phylink_mac_link_down | ||||||
|  { |  { | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|   |   | ||||||
| @@ -97,7 +97,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port, |  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port, | ||||||
| @@ -1447,8 +1415,31 @@ static void mt7530_phylink_mac_link_up(s | @@ -1448,8 +1416,31 @@ static void mt7530_phylink_mac_link_up(s | ||||||
|  				       bool tx_pause, bool rx_pause) |  				       bool tx_pause, bool rx_pause) | ||||||
|  { |  { | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -372,8 +372,9 @@ mt7530_fdb_write(struct mt7530_priv *pri | @@ -373,8 +373,9 @@ mt7530_fdb_write(struct mt7530_priv *pri | ||||||
|  		mt7530_write(priv, MT7530_ATA1 + (i * 4), reg[i]); |  		mt7530_write(priv, MT7530_ATA1 + (i * 4), reg[i]); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  { |  { | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|  	u32 ncpo1, ssc_delta, trgint, i, xtal; |  	u32 ncpo1, ssc_delta, trgint, i, xtal; | ||||||
| @@ -387,7 +388,7 @@ mt7530_pad_clk_setup(struct dsa_switch * | @@ -388,7 +389,7 @@ mt7530_pad_clk_setup(struct dsa_switch * | ||||||
|  		return -EINVAL; |  		return -EINVAL; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -37,7 +37,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	case PHY_INTERFACE_MODE_RGMII: |  	case PHY_INTERFACE_MODE_RGMII: | ||||||
|  		trgint = 0; |  		trgint = 0; | ||||||
|  		/* PLL frequency: 125MHz */ |  		/* PLL frequency: 125MHz */ | ||||||
| @@ -409,7 +410,8 @@ mt7530_pad_clk_setup(struct dsa_switch * | @@ -410,7 +411,8 @@ mt7530_pad_clk_setup(struct dsa_switch * | ||||||
|  		} |  		} | ||||||
|  		break; |  		break; | ||||||
|  	default: |  	default: | ||||||
| @@ -47,7 +47,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		return -EINVAL; |  		return -EINVAL; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1334,12 +1336,11 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1335,12 +1337,11 @@ mt7530_setup(struct dsa_switch *ds) | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -63,7 +63,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|   |   | ||||||
|  	switch (port) { |  	switch (port) { | ||||||
|  	case 0: /* Internal phy */ |  	case 0: /* Internal phy */ | ||||||
| @@ -1348,33 +1349,114 @@ static void mt7530_phylink_mac_config(st | @@ -1349,33 +1350,114 @@ static void mt7530_phylink_mac_config(st | ||||||
|  	case 3: |  	case 3: | ||||||
|  	case 4: |  	case 4: | ||||||
|  		if (state->interface != PHY_INTERFACE_MODE_GMII) |  		if (state->interface != PHY_INTERFACE_MODE_GMII) | ||||||
| @@ -189,7 +189,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		return; |  		return; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1442,61 +1524,44 @@ static void mt7530_phylink_mac_link_up(s | @@ -1443,61 +1525,44 @@ static void mt7530_phylink_mac_link_up(s | ||||||
|  	mt7530_set(priv, MT7530_PMCR_P(port), mcr); |  	mt7530_set(priv, MT7530_PMCR_P(port), mcr); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -274,7 +274,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	phylink_set(mask, Pause); |  	phylink_set(mask, Pause); | ||||||
|  	phylink_set(mask, Asym_Pause); |  	phylink_set(mask, Asym_Pause); | ||||||
|   |   | ||||||
| @@ -1592,12 +1657,45 @@ static int mt7530_set_mac_eee(struct dsa | @@ -1593,12 +1658,45 @@ static int mt7530_set_mac_eee(struct dsa | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -323,7 +323,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	.get_ethtool_stats	= mt7530_get_ethtool_stats, |  	.get_ethtool_stats	= mt7530_get_ethtool_stats, | ||||||
|  	.get_sset_count		= mt7530_get_sset_count, |  	.get_sset_count		= mt7530_get_sset_count, | ||||||
|  	.port_enable		= mt7530_port_enable, |  	.port_enable		= mt7530_port_enable, | ||||||
| @@ -1614,18 +1712,43 @@ static const struct dsa_switch_ops mt753 | @@ -1615,18 +1713,43 @@ static const struct dsa_switch_ops mt753 | ||||||
|  	.port_vlan_del		= mt7530_port_vlan_del, |  	.port_vlan_del		= mt7530_port_vlan_del, | ||||||
|  	.port_mirror_add	= mt7530_port_mirror_add, |  	.port_mirror_add	= mt7530_port_mirror_add, | ||||||
|  	.port_mirror_del	= mt7530_port_mirror_del, |  	.port_mirror_del	= mt7530_port_mirror_del, | ||||||
| @@ -372,7 +372,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	{ /* sentinel */ }, |  	{ /* sentinel */ }, | ||||||
|  }; |  }; | ||||||
|  MODULE_DEVICE_TABLE(of, mt7530_of_match); |  MODULE_DEVICE_TABLE(of, mt7530_of_match); | ||||||
| @@ -1663,8 +1786,21 @@ mt7530_probe(struct mdio_device *mdiodev | @@ -1664,8 +1787,21 @@ mt7530_probe(struct mdio_device *mdiodev | ||||||
|  	/* Get the hardware identifier from the devicetree node. |  	/* Get the hardware identifier from the devicetree node. | ||||||
|  	 * We will need it for some of the clock and regulator setup. |  	 * We will need it for some of the clock and regulator setup. | ||||||
|  	 */ |  	 */ | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/dsa/mt7530.c | --- a/drivers/net/dsa/mt7530.c | ||||||
| +++ b/drivers/net/dsa/mt7530.c | +++ b/drivers/net/dsa/mt7530.c | ||||||
| @@ -234,6 +234,12 @@ mt7530_write(struct mt7530_priv *priv, u | @@ -235,6 +235,12 @@ mt7530_write(struct mt7530_priv *priv, u | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  static u32 |  static u32 | ||||||
| @@ -41,7 +41,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  _mt7530_read(struct mt7530_dummy_poll *p) |  _mt7530_read(struct mt7530_dummy_poll *p) | ||||||
|  { |  { | ||||||
|  	struct mii_bus		*bus = p->priv->bus; |  	struct mii_bus		*bus = p->priv->bus; | ||||||
| @@ -481,6 +487,108 @@ mt7530_pad_clk_setup(struct dsa_switch * | @@ -482,6 +488,108 @@ mt7530_pad_clk_setup(struct dsa_switch * | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -150,7 +150,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static void |  static void | ||||||
|  mt7530_mib_reset(struct dsa_switch *ds) |  mt7530_mib_reset(struct dsa_switch *ds) | ||||||
|  { |  { | ||||||
| @@ -505,6 +613,217 @@ static int mt7530_phy_write(struct dsa_s | @@ -506,6 +614,217 @@ static int mt7530_phy_write(struct dsa_s | ||||||
|  	return mdiobus_write_nested(priv->bus, port, regnum, val); |  	return mdiobus_write_nested(priv->bus, port, regnum, val); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -368,7 +368,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static void |  static void | ||||||
|  mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset, |  mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset, | ||||||
|  		   uint8_t *data) |  		   uint8_t *data) | ||||||
| @@ -621,9 +940,14 @@ unlock_exit: | @@ -622,9 +941,14 @@ unlock_exit: | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int |  static int | ||||||
| @@ -385,7 +385,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	/* Enable Mediatek header mode on the cpu port */ |  	/* Enable Mediatek header mode on the cpu port */ | ||||||
|  	mt7530_write(priv, MT7530_PVC_P(port), |  	mt7530_write(priv, MT7530_PVC_P(port), | ||||||
|  		     PORT_SPEC_TAG); |  		     PORT_SPEC_TAG); | ||||||
| @@ -636,7 +960,7 @@ mt7530_cpu_port_enable(struct mt7530_pri | @@ -637,7 +961,7 @@ mt7530_cpu_port_enable(struct mt7530_pri | ||||||
|  		mt7530_rmw(priv, MT7530_MFC, CPU_MASK, CPU_EN | CPU_PORT(port)); |  		mt7530_rmw(priv, MT7530_MFC, CPU_MASK, CPU_EN | CPU_PORT(port)); | ||||||
|   |   | ||||||
|  	/* CPU port gets connected to all user ports of |  	/* CPU port gets connected to all user ports of | ||||||
| @@ -394,7 +394,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	 */ |  	 */ | ||||||
|  	mt7530_write(priv, MT7530_PCR_P(port), |  	mt7530_write(priv, MT7530_PCR_P(port), | ||||||
|  		     PCR_MATRIX(dsa_user_ports(priv->ds))); |  		     PCR_MATRIX(dsa_user_ports(priv->ds))); | ||||||
| @@ -1122,27 +1446,42 @@ mt7530_port_vlan_del(struct dsa_switch * | @@ -1123,27 +1447,42 @@ mt7530_port_vlan_del(struct dsa_switch * | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -444,7 +444,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|   |   | ||||||
|  	val = mt7530_read(priv, MT7530_PCR_P(port)); |  	val = mt7530_read(priv, MT7530_PCR_P(port)); | ||||||
|  	if (ingress) { |  	if (ingress) { | ||||||
| @@ -1157,7 +1496,7 @@ static int mt7530_port_mirror_add(struct | @@ -1158,7 +1497,7 @@ static int mt7530_port_mirror_add(struct | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -453,7 +453,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  				   struct dsa_mall_mirror_tc_entry *mirror) |  				   struct dsa_mall_mirror_tc_entry *mirror) | ||||||
|  { |  { | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
| @@ -1174,9 +1513,9 @@ static void mt7530_port_mirror_del(struc | @@ -1175,9 +1514,9 @@ static void mt7530_port_mirror_del(struc | ||||||
|  	mt7530_write(priv, MT7530_PCR_P(port), val); |  	mt7530_write(priv, MT7530_PCR_P(port), val); | ||||||
|   |   | ||||||
|  	if (!priv->mirror_rx && !priv->mirror_tx) { |  	if (!priv->mirror_rx && !priv->mirror_tx) { | ||||||
| @@ -466,7 +466,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1282,7 +1621,7 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1283,7 +1622,7 @@ mt7530_setup(struct dsa_switch *ds) | ||||||
|  			   PCR_MATRIX_CLR); |  			   PCR_MATRIX_CLR); | ||||||
|   |   | ||||||
|  		if (dsa_is_cpu_port(ds, i)) |  		if (dsa_is_cpu_port(ds, i)) | ||||||
| @@ -475,7 +475,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		else |  		else | ||||||
|  			mt7530_port_disable(ds, i); |  			mt7530_port_disable(ds, i); | ||||||
|   |   | ||||||
| @@ -1336,6 +1675,118 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1337,6 +1676,118 @@ mt7530_setup(struct dsa_switch *ds) | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -594,7 +594,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static bool |  static bool | ||||||
|  mt7530_phy_mode_supported(struct dsa_switch *ds, int port, |  mt7530_phy_mode_supported(struct dsa_switch *ds, int port, | ||||||
|  			  const struct phylink_link_state *state) |  			  const struct phylink_link_state *state) | ||||||
| @@ -1374,6 +1825,47 @@ unsupported: | @@ -1375,6 +1826,47 @@ unsupported: | ||||||
|  	return false; |  	return false; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -642,7 +642,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static bool |  static bool | ||||||
|  mt753x_phy_mode_supported(struct dsa_switch *ds, int port, |  mt753x_phy_mode_supported(struct dsa_switch *ds, int port, | ||||||
|  			  const struct phylink_link_state *state) |  			  const struct phylink_link_state *state) | ||||||
| @@ -1406,6 +1898,227 @@ mt7530_mac_config(struct dsa_switch *ds, | @@ -1407,6 +1899,227 @@ mt7530_mac_config(struct dsa_switch *ds, | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -870,7 +870,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static int |  static int | ||||||
|  mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode, |  mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode, | ||||||
|  		  const struct phylink_link_state *state) |  		  const struct phylink_link_state *state) | ||||||
| @@ -1441,6 +2154,8 @@ mt753x_phylink_mac_config(struct dsa_swi | @@ -1442,6 +2155,8 @@ mt753x_phylink_mac_config(struct dsa_swi | ||||||
|  		if (mt753x_mac_config(ds, port, mode, state) < 0) |  		if (mt753x_mac_config(ds, port, mode, state) < 0) | ||||||
|  			goto unsupported; |  			goto unsupported; | ||||||
|   |   | ||||||
| @@ -879,7 +879,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		break; |  		break; | ||||||
|  	case 6: /* 1st cpu port */ |  	case 6: /* 1st cpu port */ | ||||||
|  		if (priv->p6_interface == state->interface) |  		if (priv->p6_interface == state->interface) | ||||||
| @@ -1460,7 +2175,8 @@ unsupported: | @@ -1461,7 +2176,8 @@ unsupported: | ||||||
|  		return; |  		return; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -889,7 +889,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		dev_err(ds->dev, "%s: in-band negotiation unsupported\n", |  		dev_err(ds->dev, "%s: in-band negotiation unsupported\n", | ||||||
|  			__func__); |  			__func__); | ||||||
|  		return; |  		return; | ||||||
| @@ -1470,7 +2186,7 @@ unsupported: | @@ -1471,7 +2187,7 @@ unsupported: | ||||||
|  	mcr_new = mcr_cur; |  	mcr_new = mcr_cur; | ||||||
|  	mcr_new &= ~PMCR_LINK_SETTINGS_MASK; |  	mcr_new &= ~PMCR_LINK_SETTINGS_MASK; | ||||||
|  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN | |  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN | | ||||||
| @@ -898,7 +898,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|   |   | ||||||
|  	/* Are we connected to external phy */ |  	/* Are we connected to external phy */ | ||||||
|  	if (port == 5 && dsa_is_user_port(ds, 5)) |  	if (port == 5 && dsa_is_user_port(ds, 5)) | ||||||
| @@ -1480,7 +2196,18 @@ unsupported: | @@ -1481,7 +2197,18 @@ unsupported: | ||||||
|  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); |  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -918,7 +918,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  					 unsigned int mode, |  					 unsigned int mode, | ||||||
|  					 phy_interface_t interface) |  					 phy_interface_t interface) | ||||||
|  { |  { | ||||||
| @@ -1489,7 +2216,19 @@ static void mt7530_phylink_mac_link_down | @@ -1490,7 +2217,19 @@ static void mt7530_phylink_mac_link_down | ||||||
|  	mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK); |  	mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -939,7 +939,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  				       unsigned int mode, |  				       unsigned int mode, | ||||||
|  				       phy_interface_t interface, |  				       phy_interface_t interface, | ||||||
|  				       struct phy_device *phydev, |  				       struct phy_device *phydev, | ||||||
| @@ -1499,18 +2238,29 @@ static void mt7530_phylink_mac_link_up(s | @@ -1500,18 +2239,29 @@ static void mt7530_phylink_mac_link_up(s | ||||||
|  	struct mt7530_priv *priv = ds->priv; |  	struct mt7530_priv *priv = ds->priv; | ||||||
|  	u32 mcr; |  	u32 mcr; | ||||||
|   |   | ||||||
| @@ -971,7 +971,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		break; |  		break; | ||||||
|  	} |  	} | ||||||
|  	if (duplex == DUPLEX_FULL) { |  	if (duplex == DUPLEX_FULL) { | ||||||
| @@ -1524,6 +2274,45 @@ static void mt7530_phylink_mac_link_up(s | @@ -1525,6 +2275,45 @@ static void mt7530_phylink_mac_link_up(s | ||||||
|  	mt7530_set(priv, MT7530_PMCR_P(port), mcr); |  	mt7530_set(priv, MT7530_PMCR_P(port), mcr); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1017,7 +1017,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static void |  static void | ||||||
|  mt7530_mac_port_validate(struct dsa_switch *ds, int port, |  mt7530_mac_port_validate(struct dsa_switch *ds, int port, | ||||||
|  			 unsigned long *supported) |  			 unsigned long *supported) | ||||||
| @@ -1532,6 +2321,14 @@ mt7530_mac_port_validate(struct dsa_swit | @@ -1533,6 +2322,14 @@ mt7530_mac_port_validate(struct dsa_swit | ||||||
|  		phylink_set(supported, 1000baseX_Full); |  		phylink_set(supported, 1000baseX_Full); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1032,7 +1032,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static void |  static void | ||||||
|  mt753x_phylink_validate(struct dsa_switch *ds, int port, |  mt753x_phylink_validate(struct dsa_switch *ds, int port, | ||||||
|  			unsigned long *supported, |  			unsigned long *supported, | ||||||
| @@ -1548,7 +2345,8 @@ mt753x_phylink_validate(struct dsa_switc | @@ -1549,7 +2346,8 @@ mt753x_phylink_validate(struct dsa_switc | ||||||
|   |   | ||||||
|  	phylink_set_port_modes(mask); |  	phylink_set_port_modes(mask); | ||||||
|   |   | ||||||
| @@ -1042,7 +1042,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		phylink_set(mask, 10baseT_Half); |  		phylink_set(mask, 10baseT_Half); | ||||||
|  		phylink_set(mask, 10baseT_Full); |  		phylink_set(mask, 10baseT_Full); | ||||||
|  		phylink_set(mask, 100baseT_Half); |  		phylink_set(mask, 100baseT_Half); | ||||||
| @@ -1567,6 +2365,11 @@ mt753x_phylink_validate(struct dsa_switc | @@ -1568,6 +2366,11 @@ mt753x_phylink_validate(struct dsa_switc | ||||||
|   |   | ||||||
|  	linkmode_and(supported, supported, mask); |  	linkmode_and(supported, supported, mask); | ||||||
|  	linkmode_and(state->advertising, state->advertising, mask); |  	linkmode_and(state->advertising, state->advertising, mask); | ||||||
| @@ -1054,7 +1054,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int |  static int | ||||||
| @@ -1657,6 +2460,63 @@ static int mt7530_set_mac_eee(struct dsa | @@ -1658,6 +2461,63 @@ static int mt7530_set_mac_eee(struct dsa | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1118,7 +1118,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  static int |  static int | ||||||
|  mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port, |  mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port, | ||||||
|  			      struct phylink_link_state *state) |  			      struct phylink_link_state *state) | ||||||
| @@ -1710,13 +2570,14 @@ static const struct dsa_switch_ops mt753 | @@ -1711,13 +2571,14 @@ static const struct dsa_switch_ops mt753 | ||||||
|  	.port_vlan_prepare	= mt7530_port_vlan_prepare, |  	.port_vlan_prepare	= mt7530_port_vlan_prepare, | ||||||
|  	.port_vlan_add		= mt7530_port_vlan_add, |  	.port_vlan_add		= mt7530_port_vlan_add, | ||||||
|  	.port_vlan_del		= mt7530_port_vlan_del, |  	.port_vlan_del		= mt7530_port_vlan_del, | ||||||
| @@ -1137,7 +1137,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  	.get_mac_eee		= mt7530_get_mac_eee, |  	.get_mac_eee		= mt7530_get_mac_eee, | ||||||
|  	.set_mac_eee		= mt7530_set_mac_eee, |  	.set_mac_eee		= mt7530_set_mac_eee, | ||||||
|  }; |  }; | ||||||
| @@ -1744,11 +2605,26 @@ static const struct mt753x_info mt753x_t | @@ -1745,11 +2606,26 @@ static const struct mt753x_info mt753x_t | ||||||
|  		.mac_port_get_state = mt7530_phylink_mac_link_state, |  		.mac_port_get_state = mt7530_phylink_mac_link_state, | ||||||
|  		.mac_port_config = mt7530_mac_config, |  		.mac_port_config = mt7530_mac_config, | ||||||
|  	}, |  	}, | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ | |||||||
|  	}, |  	}, | ||||||
|  	[PORT_NPCM] = { |  	[PORT_NPCM] = { | ||||||
|  		.name		= "Nuvoton 16550", |  		.name		= "Nuvoton 16550", | ||||||
| @@ -2591,6 +2591,11 @@ serial8250_do_set_termios(struct uart_po | @@ -2597,6 +2597,11 @@ serial8250_do_set_termios(struct uart_po | ||||||
|  	unsigned long flags; |  	unsigned long flags; | ||||||
|  	unsigned int baud, quot, frac = 0; |  	unsigned int baud, quot, frac = 0; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -69,7 +69,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> | |||||||
|  /* J6 */ |  /* J6 */ | ||||||
| --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| @@ -126,10 +126,6 @@ | @@ -127,10 +127,6 @@ | ||||||
|  	}; |  	}; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> | |||||||
|  	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; |  	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; | ||||||
| --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| @@ -132,7 +132,6 @@ | @@ -133,7 +133,6 @@ | ||||||
|  	status = "okay"; |  	status = "okay"; | ||||||
|  	max-link-speed = <2>; |  	max-link-speed = <2>; | ||||||
|  	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; |  	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> | |||||||
|  |  | ||||||
| --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | ||||||
| @@ -130,7 +130,6 @@ | @@ -131,7 +131,6 @@ | ||||||
|  	pinctrl-names = "default"; |  	pinctrl-names = "default"; | ||||||
|  	pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>; |  	pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>; | ||||||
|  	status = "okay"; |  	status = "okay"; | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  |  | ||||||
| --- a/drivers/pci/controller/pci-mvebu.c | --- a/drivers/pci/controller/pci-mvebu.c | ||||||
| +++ b/drivers/pci/controller/pci-mvebu.c | +++ b/drivers/pci/controller/pci-mvebu.c | ||||||
| @@ -928,6 +928,7 @@ static int mvebu_pcie_powerup(struct mve | @@ -936,6 +936,7 @@ static int mvebu_pcie_powerup(struct mve | ||||||
|   |   | ||||||
|  	if (port->reset_gpio) { |  	if (port->reset_gpio) { | ||||||
|  		u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000; |  		u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000; | ||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|   |   | ||||||
|  		of_property_read_u32(port->dn, "reset-delay-us", |  		of_property_read_u32(port->dn, "reset-delay-us", | ||||||
|  				     &reset_udelay); |  				     &reset_udelay); | ||||||
| @@ -935,7 +936,13 @@ static int mvebu_pcie_powerup(struct mve | @@ -943,7 +944,13 @@ static int mvebu_pcie_powerup(struct mve | ||||||
|  		udelay(100); |  		udelay(100); | ||||||
|   |   | ||||||
|  		gpiod_set_value_cansleep(port->reset_gpio, 0); |  		gpiod_set_value_cansleep(port->reset_gpio, 0); | ||||||
| @@ -36,7 +36,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -1099,15 +1106,16 @@ static int mvebu_pcie_probe(struct platf | @@ -1107,15 +1114,16 @@ static int mvebu_pcie_probe(struct platf | ||||||
|  		if (!child) |  		if (!child) | ||||||
|  			continue; |  			continue; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net> | |||||||
|  #include <linux/crc32.h> |  #include <linux/crc32.h> | ||||||
|  #include <linux/if_vlan.h> |  #include <linux/if_vlan.h> | ||||||
|  #include <linux/uaccess.h> |  #include <linux/uaccess.h> | ||||||
| @@ -4335,6 +4336,22 @@ static void rtl_tally_reset(struct r8152 | @@ -4336,6 +4337,22 @@ static void rtl_tally_reset(struct r8152 | ||||||
|  	ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data); |  	ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net> | |||||||
|  static void r8152b_init(struct r8152 *tp) |  static void r8152b_init(struct r8152 *tp) | ||||||
|  { |  { | ||||||
|  	u32 ocp_data; |  	u32 ocp_data; | ||||||
| @@ -4376,6 +4393,8 @@ static void r8152b_init(struct r8152 *tp | @@ -4377,6 +4394,8 @@ static void r8152b_init(struct r8152 *tp | ||||||
|  	ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL); |  	ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL); | ||||||
|  	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN); |  	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN); | ||||||
|  	ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data); |  	ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data); | ||||||
| @@ -54,7 +54,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void r8153_init(struct r8152 *tp) |  static void r8153_init(struct r8152 *tp) | ||||||
| @@ -4510,6 +4529,8 @@ static void r8153_init(struct r8152 *tp) | @@ -4511,6 +4530,8 @@ static void r8153_init(struct r8152 *tp) | ||||||
|  		tp->coalesce = COALESCE_SLOW; |  		tp->coalesce = COALESCE_SLOW; | ||||||
|  		break; |  		break; | ||||||
|  	} |  	} | ||||||
| @@ -63,7 +63,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void r8153b_init(struct r8152 *tp) |  static void r8153b_init(struct r8152 *tp) | ||||||
| @@ -4586,6 +4607,8 @@ static void r8153b_init(struct r8152 *tp | @@ -4587,6 +4608,8 @@ static void r8153b_init(struct r8152 *tp | ||||||
|  	rtl_tally_reset(tp); |  	rtl_tally_reset(tp); | ||||||
|   |   | ||||||
|  	tp->coalesce = 15000;	/* 15 us */ |  	tp->coalesce = 15000;	/* 15 us */ | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> | |||||||
|  |  | ||||||
| --- a/drivers/platform/x86/pcengines-apuv2.c | --- a/drivers/platform/x86/pcengines-apuv2.c | ||||||
| +++ b/drivers/platform/x86/pcengines-apuv2.c | +++ b/drivers/platform/x86/pcengines-apuv2.c | ||||||
| @@ -186,6 +186,33 @@ static const struct dmi_system_id apu_gp | @@ -188,6 +188,33 @@ static const struct dmi_system_id apu_gp | ||||||
|  		}, |  		}, | ||||||
|  		.driver_data = (void *)&board_apu2, |  		.driver_data = (void *)&board_apu2, | ||||||
|  	}, |  	}, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 David Bauer
					David Bauer