kernel: bump 5.4 to 5.4.106
Ran update_kernel.sh in a fresh clone without any existing toolchains. Manually rebased: bcm27xx/950-0993-xhci-quirks-add-link-TRB-quirk-for-VL805.patch layerscape/701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch Build system: x86_64 Build-tested: ipq806x/R7800 Run-tested: ipq806x/R7800 No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> [remove accidental whitespace edit] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
		 John Audia
					John Audia
				
			
				
					committed by
					
						 Adrian Schmutzler
						Adrian Schmutzler
					
				
			
			
				
	
			
			
			 Adrian Schmutzler
						Adrian Schmutzler
					
				
			
						parent
						
							abbaf696f6
						
					
				
				
					commit
					2c81b16964
				
			| @@ -6,10 +6,10 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
|   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) |   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) | ||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-5.4 = .105 | LINUX_VERSION-5.4 = .106 | ||||||
| LINUX_VERSION-5.10 = .23 | LINUX_VERSION-5.10 = .23 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-5.4.105 = 244e4cd16184285df55ec5a9501daba011aa8b85c5527ee05eab4592e70fb8b6 | LINUX_KERNEL_HASH-5.4.106 = cc873b2c39c1823d4bc4f6cde527943c8cfd28ae94cb517804b0f9679359c8db | ||||||
| LINUX_KERNEL_HASH-5.10.23 = f6e21c03ec6ff85b26d77c59fdab81e64707792a57593643307df192749edb6a | LINUX_KERNEL_HASH-5.10.23 = f6e21c03ec6ff85b26d77c59fdab81e64707792a57593643307df192749edb6a | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
|   | |||||||
| @@ -48,9 +48,9 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> | |||||||
|   |   | ||||||
|  #include "xhci.h" |  #include "xhci.h" | ||||||
|  #include "xhci-trace.h" |  #include "xhci-trace.h" | ||||||
| @@ -63,6 +65,44 @@ | @@ -64,6 +66,44 @@ | ||||||
|  #define PCI_DEVICE_ID_ASMEDIA_1142_XHCI			0x1242 |  | ||||||
|  #define PCI_DEVICE_ID_ASMEDIA_2142_XHCI			0x2142 |  #define PCI_DEVICE_ID_ASMEDIA_2142_XHCI			0x2142 | ||||||
|  |  #define PCI_DEVICE_ID_ASMEDIA_3242_XHCI			0x3242 | ||||||
|   |   | ||||||
| +#define RENESAS_FW_VERSION				0x6C | +#define RENESAS_FW_VERSION				0x6C | ||||||
| +#define RENESAS_ROM_CONFIG				0xF0 | +#define RENESAS_ROM_CONFIG				0xF0 | ||||||
| @@ -93,7 +93,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> | |||||||
|  static const char hcd_name[] = "xhci_hcd"; |  static const char hcd_name[] = "xhci_hcd"; | ||||||
|   |   | ||||||
|  static struct hc_driver __read_mostly xhci_pci_hc_driver; |  static struct hc_driver __read_mostly xhci_pci_hc_driver; | ||||||
| @@ -298,6 +338,873 @@ static void xhci_pme_acpi_rtd3_enable(st | @@ -307,6 +347,873 @@ static void xhci_pme_acpi_rtd3_enable(st | ||||||
|  static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } |  static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } | ||||||
|  #endif /* CONFIG_ACPI */ |  #endif /* CONFIG_ACPI */ | ||||||
|   |   | ||||||
| @@ -967,7 +967,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> | |||||||
|  /* called during probe() after chip reset completes */ |  /* called during probe() after chip reset completes */ | ||||||
|  static int xhci_pci_setup(struct usb_hcd *hcd) |  static int xhci_pci_setup(struct usb_hcd *hcd) | ||||||
|  { |  { | ||||||
| @@ -339,6 +1246,27 @@ static int xhci_pci_probe(struct pci_dev | @@ -348,6 +1255,27 @@ static int xhci_pci_probe(struct pci_dev | ||||||
|  	struct hc_driver *driver; |  	struct hc_driver *driver; | ||||||
|  	struct usb_hcd *hcd; |  	struct usb_hcd *hcd; | ||||||
|   |   | ||||||
| @@ -995,7 +995,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> | |||||||
|  	driver = (struct hc_driver *)id->driver_data; |  	driver = (struct hc_driver *)id->driver_data; | ||||||
|   |   | ||||||
|  	/* Prevent runtime suspending between USB-2 and USB-3 initialization */ |  	/* Prevent runtime suspending between USB-2 and USB-3 initialization */ | ||||||
| @@ -400,6 +1328,16 @@ static void xhci_pci_remove(struct pci_d | @@ -409,6 +1337,16 @@ static void xhci_pci_remove(struct pci_d | ||||||
|  { |  { | ||||||
|  	struct xhci_hcd *xhci; |  	struct xhci_hcd *xhci; | ||||||
|   |   | ||||||
| @@ -1012,7 +1012,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org> | |||||||
|  	xhci = hcd_to_xhci(pci_get_drvdata(dev)); |  	xhci = hcd_to_xhci(pci_get_drvdata(dev)); | ||||||
|  	xhci->xhc_state |= XHCI_STATE_REMOVING; |  	xhci->xhc_state |= XHCI_STATE_REMOVING; | ||||||
|   |   | ||||||
| @@ -539,6 +1477,11 @@ static int xhci_pci_resume(struct usb_hc | @@ -548,6 +1486,11 @@ static int xhci_pci_resume(struct usb_hc | ||||||
|  	if (pdev->vendor == PCI_VENDOR_ID_INTEL) |  	if (pdev->vendor == PCI_VENDOR_ID_INTEL) | ||||||
|  		usb_enable_intel_xhci_ports(pdev); |  		usb_enable_intel_xhci_ports(pdev); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ produce a noisy warning. | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-pci.c | --- a/drivers/usb/host/xhci-pci.c | ||||||
| +++ b/drivers/usb/host/xhci-pci.c | +++ b/drivers/usb/host/xhci-pci.c | ||||||
| @@ -285,6 +285,7 @@ static void xhci_pci_quirks(struct devic | @@ -286,6 +286,7 @@ static void xhci_pci_quirks(struct devic | ||||||
|  	    pdev->device == 0x0015) { |  	    pdev->device == 0x0015) { | ||||||
|  		xhci->quirks |= XHCI_RESET_ON_RESUME; |  		xhci->quirks |= XHCI_RESET_ON_RESUME; | ||||||
|  		xhci->quirks |= XHCI_ZERO_64B_REGS; |  		xhci->quirks |= XHCI_ZERO_64B_REGS; | ||||||
| @@ -43,7 +43,7 @@ produce a noisy warning. | |||||||
|  		hcd->msi_enabled = 1; |  		hcd->msi_enabled = 1; | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -1882,6 +1882,7 @@ struct xhci_hcd { | @@ -1883,6 +1883,7 @@ struct xhci_hcd { | ||||||
|  	struct xhci_hub		usb2_rhub; |  	struct xhci_hub		usb2_rhub; | ||||||
|  	struct xhci_hub		usb3_rhub; |  	struct xhci_hub		usb3_rhub; | ||||||
|  	/* support xHCI 1.0 spec USB2 hardware LPM */ |  	/* support xHCI 1.0 spec USB2 hardware LPM */ | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-pci.c | --- a/drivers/usb/host/xhci-pci.c | ||||||
| +++ b/drivers/usb/host/xhci-pci.c | +++ b/drivers/usb/host/xhci-pci.c | ||||||
| @@ -254,6 +254,10 @@ static void xhci_pci_quirks(struct devic | @@ -255,6 +255,10 @@ static void xhci_pci_quirks(struct devic | ||||||
|  			pdev->device == 0x3432) |  			pdev->device == 0x3432) | ||||||
|  		xhci->quirks |= XHCI_BROKEN_STREAMS; |  		xhci->quirks |= XHCI_BROKEN_STREAMS; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -1456,6 +1456,103 @@ command_cleanup: | @@ -1464,6 +1464,103 @@ command_cleanup: | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  /* |  /* | ||||||
| @@ -119,7 +119,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|   * non-error returns are a promise to giveback() the urb later |   * non-error returns are a promise to giveback() the urb later | ||||||
|   * we drop ownership so next owner (or urb unlink) can get it |   * we drop ownership so next owner (or urb unlink) can get it | ||||||
|   */ |   */ | ||||||
| @@ -5337,6 +5434,7 @@ static const struct hc_driver xhci_hc_dr | @@ -5345,6 +5442,7 @@ static const struct hc_driver xhci_hc_dr | ||||||
|  	.endpoint_reset =	xhci_endpoint_reset, |  	.endpoint_reset =	xhci_endpoint_reset, | ||||||
|  	.check_bandwidth =	xhci_check_bandwidth, |  	.check_bandwidth =	xhci_check_bandwidth, | ||||||
|  	.reset_bandwidth =	xhci_reset_bandwidth, |  	.reset_bandwidth =	xhci_reset_bandwidth, | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-pci.c | --- a/drivers/usb/host/xhci-pci.c | ||||||
| +++ b/drivers/usb/host/xhci-pci.c | +++ b/drivers/usb/host/xhci-pci.c | ||||||
| @@ -255,8 +255,10 @@ static void xhci_pci_quirks(struct devic | @@ -256,8 +256,10 @@ static void xhci_pci_quirks(struct devic | ||||||
|  		xhci->quirks |= XHCI_BROKEN_STREAMS; |  		xhci->quirks |= XHCI_BROKEN_STREAMS; | ||||||
|   |   | ||||||
|  	if (pdev->vendor == PCI_VENDOR_ID_VIA && |  	if (pdev->vendor == PCI_VENDOR_ID_VIA && | ||||||
| @@ -87,4 +87,4 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
| +#define XHCI_EP_CTX_BROKEN_DCS	BIT_ULL(36) | +#define XHCI_EP_CTX_BROKEN_DCS	BIT_ULL(36) | ||||||
|  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) |  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) | ||||||
|  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) |  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) | ||||||
|   |  #define XHCI_NO_SOFT_RETRY	BIT_ULL(40) | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/Makefile | --- a/Makefile | ||||||
| +++ b/Makefile | +++ b/Makefile | ||||||
| @@ -1261,6 +1261,9 @@ ifneq ($(dtstree),) | @@ -1267,6 +1267,9 @@ ifneq ($(dtstree),) | ||||||
|  %.dtb: include/config/kernel.release scripts_dtc |  %.dtb: include/config/kernel.release scripts_dtc | ||||||
|  	$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ |  	$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ | ||||||
|   |   | ||||||
|   | |||||||
| @@ -85,7 +85,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  			zhole_size[ZONE_NORMAL] -= normal_end - normal_start; |  			zhole_size[ZONE_NORMAL] -= normal_end - normal_start; | ||||||
|  		} |  		} | ||||||
|  	} |  	} | ||||||
| @@ -410,9 +410,9 @@ void __init arm64_memblock_init(void) | @@ -422,9 +422,9 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	/* 4GB maximum for 32-bit only capable devices */ |  	/* 4GB maximum for 32-bit only capable devices */ | ||||||
|  	if (IS_ENABLED(CONFIG_ZONE_DMA32)) |  	if (IS_ENABLED(CONFIG_ZONE_DMA32)) | ||||||
| @@ -97,7 +97,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|   |   | ||||||
|  	reserve_crashkernel(); |  	reserve_crashkernel(); | ||||||
|   |   | ||||||
| @@ -420,7 +420,7 @@ void __init arm64_memblock_init(void) | @@ -432,7 +432,7 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; |  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; | ||||||
|   |   | ||||||
| @@ -106,7 +106,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  void __init bootmem_init(void) |  void __init bootmem_init(void) | ||||||
| @@ -524,7 +524,7 @@ static void __init free_unused_memmap(vo | @@ -536,7 +536,7 @@ static void __init free_unused_memmap(vo | ||||||
|  void __init mem_init(void) |  void __init mem_init(void) | ||||||
|  { |  { | ||||||
|  	if (swiotlb_force == SWIOTLB_FORCE || |  	if (swiotlb_force == SWIOTLB_FORCE || | ||||||
|   | |||||||
| @@ -140,7 +140,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  		} |  		} | ||||||
|  #endif |  #endif | ||||||
|  		if (end > max_dma32) { |  		if (end > max_dma32) { | ||||||
| @@ -408,9 +430,11 @@ void __init arm64_memblock_init(void) | @@ -420,9 +442,11 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	early_init_fdt_scan_reserved_mem(); |  	early_init_fdt_scan_reserved_mem(); | ||||||
|   |   | ||||||
| @@ -154,7 +154,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  	else |  	else | ||||||
|  		arm64_dma32_phys_limit = PHYS_MASK + 1; |  		arm64_dma32_phys_limit = PHYS_MASK + 1; | ||||||
|   |   | ||||||
| @@ -420,7 +444,7 @@ void __init arm64_memblock_init(void) | @@ -432,7 +456,7 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; |  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; | ||||||
|   |   | ||||||
| @@ -163,7 +163,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  void __init bootmem_init(void) |  void __init bootmem_init(void) | ||||||
| @@ -524,7 +548,7 @@ static void __init free_unused_memmap(vo | @@ -536,7 +560,7 @@ static void __init free_unused_memmap(vo | ||||||
|  void __init mem_init(void) |  void __init mem_init(void) | ||||||
|  { |  { | ||||||
|  	if (swiotlb_force == SWIOTLB_FORCE || |  	if (swiotlb_force == SWIOTLB_FORCE || | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  /* |  /* | ||||||
|   * We need to be able to catch inadvertent references to memstart_addr |   * We need to be able to catch inadvertent references to memstart_addr | ||||||
|   * that occur (potentially in generic code) before arm64_memblock_init() |   * that occur (potentially in generic code) before arm64_memblock_init() | ||||||
| @@ -430,8 +433,10 @@ void __init arm64_memblock_init(void) | @@ -442,8 +445,10 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	early_init_fdt_scan_reserved_mem(); |  	early_init_fdt_scan_reserved_mem(); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Nataliya Korovkina <malus.brandywine@gmail.com> | |||||||
|  |  | ||||||
| --- a/Makefile | --- a/Makefile | ||||||
| +++ b/Makefile | +++ b/Makefile | ||||||
| @@ -1261,7 +1261,7 @@ ifneq ($(dtstree),) | @@ -1267,7 +1267,7 @@ ifneq ($(dtstree),) | ||||||
|  %.dtb: include/config/kernel.release scripts_dtc |  %.dtb: include/config/kernel.release scripts_dtc | ||||||
|  	$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ |  	$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ | ||||||
|   |   | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> | |||||||
|  				crash_size, SZ_2M); |  				crash_size, SZ_2M); | ||||||
|  		if (crash_base == 0) { |  		if (crash_base == 0) { | ||||||
|  			pr_warn("cannot allocate crashkernel (size:0x%llx)\n", |  			pr_warn("cannot allocate crashkernel (size:0x%llx)\n", | ||||||
| @@ -449,7 +449,7 @@ void __init arm64_memblock_init(void) | @@ -461,7 +461,7 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; |  	high_memory = __va(memblock_end_of_DRAM() - 1) + 1; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-pci.c | --- a/drivers/usb/host/xhci-pci.c | ||||||
| +++ b/drivers/usb/host/xhci-pci.c | +++ b/drivers/usb/host/xhci-pci.c | ||||||
| @@ -258,6 +258,7 @@ static void xhci_pci_quirks(struct devic | @@ -259,6 +259,7 @@ static void xhci_pci_quirks(struct devic | ||||||
|  			pdev->device == 0x3483) { |  			pdev->device == 0x3483) { | ||||||
|  		xhci->quirks |= XHCI_LPM_SUPPORT; |  		xhci->quirks |= XHCI_LPM_SUPPORT; | ||||||
|  		xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; |  		xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; | ||||||
| @@ -56,6 +56,6 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> | |||||||
|  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) |  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) | ||||||
|  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) |  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) | ||||||
| +#define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(39) | +#define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(39) | ||||||
|  |  #define XHCI_NO_SOFT_RETRY	BIT_ULL(40) | ||||||
|   |   | ||||||
|  	unsigned int		num_active_eps; |  	unsigned int		num_active_eps; | ||||||
|  	unsigned int		limit_active_eps; |  | ||||||
|   | |||||||
| @@ -134,4 +134,4 @@ it on BCM4708 family. | |||||||
| +#define XHCI_FAKE_DOORBELL	BIT_ULL(36) | +#define XHCI_FAKE_DOORBELL	BIT_ULL(36) | ||||||
|  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) |  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) | ||||||
|  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) |  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) | ||||||
|   |  #define XHCI_NO_SOFT_RETRY	BIT_ULL(40) | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  #include <linux/workqueue.h> |  #include <linux/workqueue.h> | ||||||
|  #include <linux/mdio.h> |  #include <linux/mdio.h> | ||||||
|  #include <linux/io.h> |  #include <linux/io.h> | ||||||
| @@ -842,6 +843,9 @@ void phy_stop(struct phy_device *phydev) | @@ -843,6 +844,9 @@ void phy_stop(struct phy_device *phydev) | ||||||
|   |   | ||||||
|  	mutex_lock(&phydev->lock); |  	mutex_lock(&phydev->lock); | ||||||
|   |   | ||||||
| @@ -34,7 +34,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  	phydev->state = PHY_HALTED; |  	phydev->state = PHY_HALTED; | ||||||
|   |   | ||||||
|  	mutex_unlock(&phydev->lock); |  	mutex_unlock(&phydev->lock); | ||||||
| @@ -904,6 +908,9 @@ void phy_state_machine(struct work_struc | @@ -905,6 +909,9 @@ void phy_state_machine(struct work_struc | ||||||
|   |   | ||||||
|  	old_state = phydev->state; |  	old_state = phydev->state; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Poonam Aggrwal <poonam.aggrwal@nxp.com> | |||||||
|  |  | ||||||
| --- a/arch/arm64/mm/init.c | --- a/arch/arm64/mm/init.c | ||||||
| +++ b/arch/arm64/mm/init.c | +++ b/arch/arm64/mm/init.c | ||||||
| @@ -406,6 +406,8 @@ void __init arm64_memblock_init(void) | @@ -418,6 +418,8 @@ void __init arm64_memblock_init(void) | ||||||
|  		initrd_end = initrd_start + phys_initrd_size; |  		initrd_end = initrd_start + phys_initrd_size; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -23,7 +23,7 @@ Signed-off-by: Poonam Aggrwal <poonam.aggrwal@nxp.com> | |||||||
|  	early_init_fdt_scan_reserved_mem(); |  	early_init_fdt_scan_reserved_mem(); | ||||||
|   |   | ||||||
|  	/* 4GB maximum for 32-bit only capable devices */ |  	/* 4GB maximum for 32-bit only capable devices */ | ||||||
| @@ -416,8 +418,6 @@ void __init arm64_memblock_init(void) | @@ -428,8 +430,6 @@ void __init arm64_memblock_init(void) | ||||||
|   |   | ||||||
|  	reserve_crashkernel(); |  	reserve_crashkernel(); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  fsl-enetc-mdio-y := enetc_pci_mdio.o enetc_mdio.o |  fsl-enetc-mdio-y := enetc_pci_mdio.o enetc_mdio.o | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.c | --- a/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| @@ -1427,8 +1427,7 @@ int enetc_close(struct net_device *ndev) | @@ -1422,8 +1422,7 @@ int enetc_close(struct net_device *ndev) | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -67,7 +67,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	struct enetc_ndev_priv *priv = netdev_priv(ndev); |  	struct enetc_ndev_priv *priv = netdev_priv(ndev); | ||||||
|  	struct tc_mqprio_qopt *mqprio = type_data; |  	struct tc_mqprio_qopt *mqprio = type_data; | ||||||
| @@ -1436,9 +1435,6 @@ int enetc_setup_tc(struct net_device *nd | @@ -1431,9 +1430,6 @@ int enetc_setup_tc(struct net_device *nd | ||||||
|  	u8 num_tc; |  	u8 num_tc; | ||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
| @@ -77,7 +77,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS; |  	mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS; | ||||||
|  	num_tc = mqprio->num_tc; |  	num_tc = mqprio->num_tc; | ||||||
|   |   | ||||||
| @@ -1483,6 +1479,19 @@ int enetc_setup_tc(struct net_device *nd | @@ -1478,6 +1474,19 @@ int enetc_setup_tc(struct net_device *nd | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	struct enetc_ndev_priv *priv = netdev_priv(ndev); |  	struct enetc_ndev_priv *priv = netdev_priv(ndev); | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.h | --- a/drivers/net/ethernet/freescale/enetc/enetc.h | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.h | +++ b/drivers/net/ethernet/freescale/enetc/enetc.h | ||||||
| @@ -244,3 +244,10 @@ int enetc_set_fs_entry(struct enetc_si * | @@ -249,3 +249,10 @@ int enetc_set_fs_entry(struct enetc_si * | ||||||
|  void enetc_set_rss_key(struct enetc_hw *hw, const u8 *bytes); |  void enetc_set_rss_key(struct enetc_hw *hw, const u8 *bytes); | ||||||
|  int enetc_get_rss_table(struct enetc_si *si, u32 *table, int count); |  int enetc_get_rss_table(struct enetc_si *si, u32 *table, int count); | ||||||
|  int enetc_set_rss_table(struct enetc_si *si, const u32 *table, int count); |  int enetc_set_rss_table(struct enetc_si *si, const u32 *table, int count); | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int enetc_dma_alloc_bdr(struct enetc_bdr *r, size_t bd_size) |  static int enetc_dma_alloc_bdr(struct enetc_bdr *r, size_t bd_size) | ||||||
| @@ -1314,8 +1319,12 @@ static void enetc_disable_interrupts(str | @@ -1309,8 +1314,12 @@ static void enetc_disable_interrupts(str | ||||||
|   |   | ||||||
|  static void adjust_link(struct net_device *ndev) |  static void adjust_link(struct net_device *ndev) | ||||||
|  { |  { | ||||||
| @@ -91,7 +91,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	struct enetc_bdr *tx_ring[16]; |  	struct enetc_bdr *tx_ring[16]; | ||||||
|  	struct enetc_bdr *rx_ring[16]; |  	struct enetc_bdr *rx_ring[16]; | ||||||
|   |   | ||||||
| @@ -248,6 +254,8 @@ int enetc_send_cmd(struct enetc_si *si, | @@ -253,6 +259,8 @@ int enetc_send_cmd(struct enetc_si *si, | ||||||
|   |   | ||||||
|  #ifdef CONFIG_FSL_ENETC_QOS |  #ifdef CONFIG_FSL_ENETC_QOS | ||||||
|  int enetc_setup_tc_taprio(struct net_device *ndev, void *type_data); |  int enetc_setup_tc_taprio(struct net_device *ndev, void *type_data); | ||||||
|   | |||||||
| @@ -79,8 +79,8 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
| +} | +} | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| @@ -852,6 +852,61 @@ static int enetc_init_port_rss_memory(st | @@ -872,6 +872,61 @@ static void enetc_init_unused_port(struc | ||||||
|  	return err; |  	enetc_free_cbdr(dev, &si->cbd_ring); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| +static void enetc_configure_sgmii(struct mii_bus *imdio) | +static void enetc_configure_sgmii(struct mii_bus *imdio) | ||||||
| @@ -141,7 +141,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  static int enetc_pf_probe(struct pci_dev *pdev, |  static int enetc_pf_probe(struct pci_dev *pdev, | ||||||
|  			  const struct pci_device_id *ent) |  			  const struct pci_device_id *ent) | ||||||
|  { |  { | ||||||
| @@ -928,6 +983,10 @@ static int enetc_pf_probe(struct pci_dev | @@ -956,6 +1011,10 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|  	if (err) |  	if (err) | ||||||
|  		dev_warn(&pdev->dev, "Fallback to PHY-less operation\n"); |  		dev_warn(&pdev->dev, "Fallback to PHY-less operation\n"); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -125,7 +125,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  /* Initialize the entire shared memory for the flow steering entries |  /* Initialize the entire shared memory for the flow steering entries | ||||||
| @@ -933,6 +936,10 @@ static int enetc_pf_probe(struct pci_dev | @@ -955,6 +958,10 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|  	pf->si = si; |  	pf->si = si; | ||||||
|  	pf->total_vfs = pci_sriov_get_totalvfs(pdev); |  	pf->total_vfs = pci_sriov_get_totalvfs(pdev); | ||||||
|   |   | ||||||
| @@ -136,7 +136,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  	enetc_configure_port(pf); |  	enetc_configure_port(pf); | ||||||
|   |   | ||||||
|  	enetc_get_si_caps(si); |  	enetc_get_si_caps(si); | ||||||
| @@ -947,6 +954,8 @@ static int enetc_pf_probe(struct pci_dev | @@ -969,6 +976,8 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|  	enetc_pf_netdev_setup(si, ndev, &enetc_ndev_ops); |  	enetc_pf_netdev_setup(si, ndev, &enetc_ndev_ops); | ||||||
|   |   | ||||||
|  	priv = netdev_priv(ndev); |  	priv = netdev_priv(ndev); | ||||||
| @@ -145,7 +145,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|   |   | ||||||
|  	enetc_init_si_rings_params(priv); |  	enetc_init_si_rings_params(priv); | ||||||
|   |   | ||||||
| @@ -974,10 +983,6 @@ static int enetc_pf_probe(struct pci_dev | @@ -1002,10 +1011,6 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|  		goto err_alloc_msix; |  		goto err_alloc_msix; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -156,23 +156,23 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  	err = enetc_configure_serdes(priv); |  	err = enetc_configure_serdes(priv); | ||||||
|  	if (err) |  	if (err) | ||||||
|  		dev_warn(&pdev->dev, "Attempted serdes config but failed\n"); |  		dev_warn(&pdev->dev, "Attempted serdes config but failed\n"); | ||||||
| @@ -995,7 +1000,6 @@ static int enetc_pf_probe(struct pci_dev | @@ -1023,7 +1028,6 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|   |   | ||||||
|  err_reg_netdev: |  err_reg_netdev: | ||||||
|  	enetc_mdio_remove(pf); |  	enetc_mdio_remove(pf); | ||||||
| -	enetc_of_put_phy(priv); | -	enetc_of_put_phy(priv); | ||||||
|  	enetc_free_msix(priv); |  	enetc_free_msix(priv); | ||||||
|  |  err_config_si: | ||||||
|  err_init_port_rss: |  err_init_port_rss: | ||||||
|  err_init_port_rfs: | @@ -1034,6 +1038,7 @@ err_alloc_si_res: | ||||||
| @@ -1005,6 +1009,7 @@ err_alloc_si_res: |  | ||||||
|  	si->ndev = NULL; |  	si->ndev = NULL; | ||||||
|  	free_netdev(ndev); |  	free_netdev(ndev); | ||||||
|  err_alloc_netdev: |  err_alloc_netdev: | ||||||
| +	enetc_of_put_phy(pf); | +	enetc_of_put_phy(pf); | ||||||
|  |  err_device_disabled: | ||||||
|  err_map_pf_space: |  err_map_pf_space: | ||||||
|  	enetc_pci_remove(pdev); |  	enetc_pci_remove(pdev); | ||||||
|   | @@ -1057,7 +1062,7 @@ static void enetc_pf_remove(struct pci_d | ||||||
| @@ -1027,7 +1032,7 @@ static void enetc_pf_remove(struct pci_d |  | ||||||
|  	unregister_netdev(si->ndev); |  	unregister_netdev(si->ndev); | ||||||
|   |   | ||||||
|  	enetc_mdio_remove(pf); |  	enetc_mdio_remove(pf); | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> | |||||||
|  		enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII); |  		enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -889,7 +890,8 @@ static int enetc_configure_serdes(struct | @@ -909,7 +910,8 @@ static int enetc_configure_serdes(struct | ||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
|  	if (priv->if_mode != PHY_INTERFACE_MODE_SGMII && |  	if (priv->if_mode != PHY_INTERFACE_MODE_SGMII && | ||||||
| @@ -33,7 +33,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> | |||||||
|  		return 0; |  		return 0; | ||||||
|   |   | ||||||
|  	err = enetc_imdio_init(pf); |  	err = enetc_imdio_init(pf); | ||||||
| @@ -899,7 +901,8 @@ static int enetc_configure_serdes(struct | @@ -919,7 +921,8 @@ static int enetc_configure_serdes(struct | ||||||
|  	if (priv->if_mode == PHY_INTERFACE_MODE_SGMII) |  	if (priv->if_mode == PHY_INTERFACE_MODE_SGMII) | ||||||
|  		enetc_configure_sgmii(pf->imdio); |  		enetc_configure_sgmii(pf->imdio); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -397,7 +397,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> | |||||||
|  #define enetc_mdio_rd(mdio_priv, off) \ |  #define enetc_mdio_rd(mdio_priv, off) \ | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| @@ -1046,6 +1046,9 @@ static void enetc_pf_remove(struct pci_d | @@ -1076,6 +1076,9 @@ static void enetc_pf_remove(struct pci_d | ||||||
|  	enetc_pci_remove(pdev); |  	enetc_pci_remove(pdev); | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -371,7 +371,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  #define enetc_rd(hw, off)		enetc_rd_reg((hw)->reg + (off)) |  #define enetc_rd(hw, off)		enetc_rd_reg((hw)->reg + (off)) | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| @@ -1046,8 +1046,9 @@ static void enetc_pf_remove(struct pci_d | @@ -1076,8 +1076,9 @@ static void enetc_pf_remove(struct pci_d | ||||||
|  	enetc_pci_remove(pdev); |  	enetc_pci_remove(pdev); | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -48,11 +48,11 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | ||||||
| @@ -1012,6 +1012,7 @@ err_alloc_si_res: | @@ -1041,6 +1041,7 @@ err_alloc_si_res: | ||||||
|  	si->ndev = NULL; |  	si->ndev = NULL; | ||||||
|  	free_netdev(ndev); |  	free_netdev(ndev); | ||||||
|  err_alloc_netdev: |  err_alloc_netdev: | ||||||
| +	enetc_mdio_remove(pf); | +	enetc_mdio_remove(pf); | ||||||
|  	enetc_of_put_phy(pf); |  	enetc_of_put_phy(pf); | ||||||
|  |  err_device_disabled: | ||||||
|  err_map_pf_space: |  err_map_pf_space: | ||||||
|  	enetc_pci_remove(pdev); |  | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
| +	  taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu). | +	  taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu). | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.c | --- a/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| @@ -1524,6 +1524,8 @@ int enetc_setup_tc(struct net_device *nd | @@ -1519,6 +1519,8 @@ int enetc_setup_tc(struct net_device *nd | ||||||
|  		return enetc_setup_tc_mqprio(ndev, type_data); |  		return enetc_setup_tc_mqprio(ndev, type_data); | ||||||
|  	case TC_SETUP_QDISC_TAPRIO: |  	case TC_SETUP_QDISC_TAPRIO: | ||||||
|  		return enetc_setup_tc_taprio(ndev, type_data); |  		return enetc_setup_tc_taprio(ndev, type_data); | ||||||
| @@ -58,7 +58,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	} |  	} | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.h | --- a/drivers/net/ethernet/freescale/enetc/enetc.h | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.h | +++ b/drivers/net/ethernet/freescale/enetc/enetc.h | ||||||
| @@ -255,7 +255,9 @@ int enetc_send_cmd(struct enetc_si *si, | @@ -260,7 +260,9 @@ int enetc_send_cmd(struct enetc_si *si, | ||||||
|  #ifdef CONFIG_FSL_ENETC_QOS |  #ifdef CONFIG_FSL_ENETC_QOS | ||||||
|  int enetc_setup_tc_taprio(struct net_device *ndev, void *type_data); |  int enetc_setup_tc_taprio(struct net_device *ndev, void *type_data); | ||||||
|  void enetc_sched_speed_set(struct net_device *ndev); |  void enetc_sched_speed_set(struct net_device *ndev); | ||||||
|   | |||||||
| @@ -179,7 +179,7 @@ Signed-off-by: Po Liu <Po.Liu@nxp.com> | |||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  struct enetc_ndev_priv { |  struct enetc_ndev_priv { | ||||||
| @@ -261,3 +292,10 @@ int enetc_setup_tc_cbs(struct net_device | @@ -266,3 +297,10 @@ int enetc_setup_tc_cbs(struct net_device | ||||||
|  #define enetc_sched_speed_set(ndev) (void)0 |  #define enetc_sched_speed_set(ndev) (void)0 | ||||||
|  #define enetc_setup_tc_cbs(ndev, type_data) -EOPNOTSUPP |  #define enetc_setup_tc_cbs(ndev, type_data) -EOPNOTSUPP | ||||||
|  #endif |  #endif | ||||||
| @@ -839,7 +839,7 @@ Signed-off-by: Po Liu <Po.Liu@nxp.com> | |||||||
|  	/* pick up primary MAC address from SI */ |  	/* pick up primary MAC address from SI */ | ||||||
|  	enetc_get_primary_mac_addr(&si->hw, ndev->dev_addr); |  	enetc_get_primary_mac_addr(&si->hw, ndev->dev_addr); | ||||||
|  } |  } | ||||||
| @@ -999,6 +1006,8 @@ static int enetc_pf_probe(struct pci_dev | @@ -1027,6 +1034,8 @@ static int enetc_pf_probe(struct pci_dev | ||||||
|  	netif_info(priv, probe, ndev, "%s v%s\n", |  	netif_info(priv, probe, ndev, "%s v%s\n", | ||||||
|  		   enetc_drv_name, enetc_drv_ver); |  		   enetc_drv_name, enetc_drv_ver); | ||||||
|   |   | ||||||
| @@ -848,7 +848,7 @@ Signed-off-by: Po Liu <Po.Liu@nxp.com> | |||||||
|  	return 0; |  	return 0; | ||||||
|   |   | ||||||
|  err_reg_netdev: |  err_reg_netdev: | ||||||
| @@ -1033,6 +1042,8 @@ static void enetc_pf_remove(struct pci_d | @@ -1063,6 +1072,8 @@ static void enetc_pf_remove(struct pci_d | ||||||
|  	netif_info(priv, drv, si->ndev, "%s v%s remove\n", |  	netif_info(priv, drv, si->ndev, "%s v%s remove\n", | ||||||
|  		   enetc_drv_name, enetc_drv_ver); |  		   enetc_drv_name, enetc_drv_ver); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.c | --- a/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| @@ -1369,6 +1369,7 @@ static int enetc_phy_connect(struct net_ | @@ -1364,6 +1364,7 @@ static int enetc_phy_connect(struct net_ | ||||||
|  { |  { | ||||||
|  	struct enetc_ndev_priv *priv = netdev_priv(ndev); |  	struct enetc_ndev_priv *priv = netdev_priv(ndev); | ||||||
|  	struct phy_device *phydev; |  	struct phy_device *phydev; | ||||||
| @@ -25,7 +25,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|   |   | ||||||
|  	if (!priv->phy_node) |  	if (!priv->phy_node) | ||||||
|  		return 0; /* phy-less mode */ |  		return 0; /* phy-less mode */ | ||||||
| @@ -1382,6 +1383,10 @@ static int enetc_phy_connect(struct net_ | @@ -1377,6 +1378,10 @@ static int enetc_phy_connect(struct net_ | ||||||
|   |   | ||||||
|  	phy_attached_info(phydev); |  	phy_attached_info(phydev); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -344,7 +344,7 @@ MDIO erratum. | |||||||
|  static int enetc_of_get_phy(struct enetc_pf *pf) |  static int enetc_of_get_phy(struct enetc_pf *pf) | ||||||
|  { |  { | ||||||
|  	struct device *dev = &pf->si->pdev->dev; |  	struct device *dev = &pf->si->pdev->dev; | ||||||
| @@ -891,6 +938,30 @@ static void enetc_configure_sxgmii(struc | @@ -911,6 +958,30 @@ static void enetc_configure_sxgmii(struc | ||||||
|  		     ENETC_PCS_CR_LANE_RESET | ENETC_PCS_CR_RESET_AN); |  		     ENETC_PCS_CR_LANE_RESET | ENETC_PCS_CR_RESET_AN); | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/freescale/enetc/enetc.c | --- a/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | +++ b/drivers/net/ethernet/freescale/enetc/enetc.c | ||||||
| @@ -1661,7 +1661,10 @@ int enetc_ioctl(struct net_device *ndev, | @@ -1656,7 +1656,10 @@ int enetc_ioctl(struct net_device *ndev, | ||||||
|  	if (cmd == SIOCGHWTSTAMP) |  	if (cmd == SIOCGHWTSTAMP) | ||||||
|  		return enetc_hwtstamp_get(ndev, rq); |  		return enetc_hwtstamp_get(ndev, rq); | ||||||
|  #endif |  #endif | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  |  | ||||||
| --- a/drivers/net/can/flexcan.c | --- a/drivers/net/can/flexcan.c | ||||||
| +++ b/drivers/net/can/flexcan.c | +++ b/drivers/net/can/flexcan.c | ||||||
| @@ -1573,7 +1573,6 @@ static int flexcan_probe(struct platform | @@ -1579,7 +1579,6 @@ static int flexcan_probe(struct platform | ||||||
|  	struct net_device *dev; |  	struct net_device *dev; | ||||||
|  	struct flexcan_priv *priv; |  	struct flexcan_priv *priv; | ||||||
|  	struct regulator *reg_xceiver; |  	struct regulator *reg_xceiver; | ||||||
| @@ -25,7 +25,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	struct clk *clk_ipg = NULL, *clk_per = NULL; |  	struct clk *clk_ipg = NULL, *clk_per = NULL; | ||||||
|  	struct flexcan_regs __iomem *regs; |  	struct flexcan_regs __iomem *regs; | ||||||
|  	int err, irq; |  	int err, irq; | ||||||
| @@ -1608,12 +1607,11 @@ static int flexcan_probe(struct platform | @@ -1614,12 +1613,11 @@ static int flexcan_probe(struct platform | ||||||
|  		clock_freq = clk_get_rate(clk_per); |  		clock_freq = clk_get_rate(clk_per); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  		netif_wake_queue(dev); |  		netif_wake_queue(dev); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1321,7 +1321,7 @@ static int flexcan_open(struct net_devic | @@ -1323,7 +1323,7 @@ static int flexcan_open(struct net_devic | ||||||
|  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); |  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); | ||||||
|   |   | ||||||
|  	priv->reg_imask1_default = 0; |  	priv->reg_imask1_default = 0; | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|   |   | ||||||
|  	return (u64)iflag2 << 32 | iflag1; |  	return (u64)iflag2 << 32 | iflag1; | ||||||
|  } |  } | ||||||
| @@ -1225,8 +1225,8 @@ static int flexcan_chip_start(struct net | @@ -1227,8 +1227,8 @@ static int flexcan_chip_start(struct net | ||||||
|  	/* enable interrupts atomically */ |  	/* enable interrupts atomically */ | ||||||
|  	disable_irq(dev->irq); |  	disable_irq(dev->irq); | ||||||
|  	priv->write(priv->reg_ctrl_default, ®s->ctrl); |  	priv->write(priv->reg_ctrl_default, ®s->ctrl); | ||||||
| @@ -72,7 +72,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	enable_irq(dev->irq); |  	enable_irq(dev->irq); | ||||||
|   |   | ||||||
|  	/* print chip status */ |  	/* print chip status */ | ||||||
| @@ -1320,8 +1320,8 @@ static int flexcan_open(struct net_devic | @@ -1322,8 +1322,8 @@ static int flexcan_open(struct net_devic | ||||||
|  	priv->tx_mb_idx = priv->mb_count - 1; |  	priv->tx_mb_idx = priv->mb_count - 1; | ||||||
|  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); |  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); | ||||||
|   |   | ||||||
| @@ -83,7 +83,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|   |   | ||||||
|  	priv->offload.mailbox_read = flexcan_mailbox_read; |  	priv->offload.mailbox_read = flexcan_mailbox_read; | ||||||
|   |   | ||||||
| @@ -1333,12 +1333,12 @@ static int flexcan_open(struct net_devic | @@ -1335,12 +1335,12 @@ static int flexcan_open(struct net_devic | ||||||
|   |   | ||||||
|  		imask = GENMASK_ULL(priv->offload.mb_last, |  		imask = GENMASK_ULL(priv->offload.mb_last, | ||||||
|  				    priv->offload.mb_first); |  				    priv->offload.mb_first); | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	iflag1 = priv->read(®s->iflag1) & priv->rx_mask1; |  	iflag1 = priv->read(®s->iflag1) & priv->rx_mask1; | ||||||
|   |   | ||||||
|  	return (u64)iflag2 << 32 | iflag1; |  	return (u64)iflag2 << 32 | iflag1; | ||||||
| @@ -1226,7 +1225,7 @@ static int flexcan_chip_start(struct net | @@ -1228,7 +1227,7 @@ static int flexcan_chip_start(struct net | ||||||
|  	disable_irq(dev->irq); |  	disable_irq(dev->irq); | ||||||
|  	priv->write(priv->reg_ctrl_default, ®s->ctrl); |  	priv->write(priv->reg_ctrl_default, ®s->ctrl); | ||||||
|  	priv->write(priv->rx_mask1, ®s->imask1); |  	priv->write(priv->rx_mask1, ®s->imask1); | ||||||
| @@ -43,7 +43,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	enable_irq(dev->irq); |  	enable_irq(dev->irq); | ||||||
|   |   | ||||||
|  	/* print chip status */ |  	/* print chip status */ | ||||||
| @@ -1320,9 +1319,6 @@ static int flexcan_open(struct net_devic | @@ -1322,9 +1321,6 @@ static int flexcan_open(struct net_devic | ||||||
|  	priv->tx_mb_idx = priv->mb_count - 1; |  	priv->tx_mb_idx = priv->mb_count - 1; | ||||||
|  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); |  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); | ||||||
|   |   | ||||||
| @@ -53,7 +53,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	priv->offload.mailbox_read = flexcan_mailbox_read; |  	priv->offload.mailbox_read = flexcan_mailbox_read; | ||||||
|   |   | ||||||
|  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { |  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { | ||||||
| @@ -1333,12 +1329,12 @@ static int flexcan_open(struct net_devic | @@ -1335,12 +1331,12 @@ static int flexcan_open(struct net_devic | ||||||
|   |   | ||||||
|  		imask = GENMASK_ULL(priv->offload.mb_last, |  		imask = GENMASK_ULL(priv->offload.mb_last, | ||||||
|  				    priv->offload.mb_first); |  				    priv->offload.mb_first); | ||||||
|   | |||||||
| @@ -70,7 +70,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	int err, i; |  	int err, i; | ||||||
|  	struct flexcan_mb __iomem *mb; |  	struct flexcan_mb __iomem *mb; | ||||||
|   |   | ||||||
| @@ -1224,8 +1224,9 @@ static int flexcan_chip_start(struct net | @@ -1226,8 +1226,9 @@ static int flexcan_chip_start(struct net | ||||||
|  	/* enable interrupts atomically */ |  	/* enable interrupts atomically */ | ||||||
|  	disable_irq(dev->irq); |  	disable_irq(dev->irq); | ||||||
|  	priv->write(priv->reg_ctrl_default, ®s->ctrl); |  	priv->write(priv->reg_ctrl_default, ®s->ctrl); | ||||||
| @@ -82,7 +82,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	enable_irq(dev->irq); |  	enable_irq(dev->irq); | ||||||
|   |   | ||||||
|  	/* print chip status */ |  	/* print chip status */ | ||||||
| @@ -1322,19 +1323,14 @@ static int flexcan_open(struct net_devic | @@ -1324,19 +1325,14 @@ static int flexcan_open(struct net_devic | ||||||
|  	priv->offload.mailbox_read = flexcan_mailbox_read; |  	priv->offload.mailbox_read = flexcan_mailbox_read; | ||||||
|   |   | ||||||
|  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { |  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  		netif_wake_queue(dev); |  		netif_wake_queue(dev); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1224,7 +1225,7 @@ static int flexcan_chip_start(struct net | @@ -1226,7 +1227,7 @@ static int flexcan_chip_start(struct net | ||||||
|  	/* enable interrupts atomically */ |  	/* enable interrupts atomically */ | ||||||
|  	disable_irq(dev->irq); |  	disable_irq(dev->irq); | ||||||
|  	priv->write(priv->reg_ctrl_default, ®s->ctrl); |  	priv->write(priv->reg_ctrl_default, ®s->ctrl); | ||||||
| @@ -80,7 +80,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	priv->write(upper_32_bits(reg_imask), ®s->imask2); |  	priv->write(upper_32_bits(reg_imask), ®s->imask2); | ||||||
|  	priv->write(lower_32_bits(reg_imask), ®s->imask1); |  	priv->write(lower_32_bits(reg_imask), ®s->imask1); | ||||||
|  	enable_irq(dev->irq); |  	enable_irq(dev->irq); | ||||||
| @@ -1319,6 +1320,7 @@ static int flexcan_open(struct net_devic | @@ -1321,6 +1322,7 @@ static int flexcan_open(struct net_devic | ||||||
|  			flexcan_get_mb(priv, FLEXCAN_TX_MB_RESERVED_OFF_FIFO); |  			flexcan_get_mb(priv, FLEXCAN_TX_MB_RESERVED_OFF_FIFO); | ||||||
|  	priv->tx_mb_idx = priv->mb_count - 1; |  	priv->tx_mb_idx = priv->mb_count - 1; | ||||||
|  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); |  	priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx); | ||||||
|   | |||||||
| @@ -324,7 +324,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	u64 reg_imask; |  	u64 reg_imask; | ||||||
|  	int err, i; |  	int err, i; | ||||||
|  	struct flexcan_mb __iomem *mb; |  	struct flexcan_mb __iomem *mb; | ||||||
| @@ -1164,6 +1312,26 @@ static int flexcan_chip_start(struct net | @@ -1166,6 +1314,26 @@ static int flexcan_chip_start(struct net | ||||||
|  	netdev_dbg(dev, "%s: writing ctrl=0x%08x", __func__, reg_ctrl); |  	netdev_dbg(dev, "%s: writing ctrl=0x%08x", __func__, reg_ctrl); | ||||||
|  	priv->write(reg_ctrl, ®s->ctrl); |  	priv->write(reg_ctrl, ®s->ctrl); | ||||||
|   |   | ||||||
| @@ -351,7 +351,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	if ((priv->devtype_data->quirks & FLEXCAN_QUIRK_ENABLE_EACEN_RRS)) { |  	if ((priv->devtype_data->quirks & FLEXCAN_QUIRK_ENABLE_EACEN_RRS)) { | ||||||
|  		reg_ctrl2 = priv->read(®s->ctrl2); |  		reg_ctrl2 = priv->read(®s->ctrl2); | ||||||
|  		reg_ctrl2 |= FLEXCAN_CTRL2_EACEN | FLEXCAN_CTRL2_RRS; |  		reg_ctrl2 |= FLEXCAN_CTRL2_EACEN | FLEXCAN_CTRL2_RRS; | ||||||
| @@ -1304,6 +1472,12 @@ static int flexcan_open(struct net_devic | @@ -1306,6 +1474,12 @@ static int flexcan_open(struct net_devic | ||||||
|  	struct flexcan_priv *priv = netdev_priv(dev); |  	struct flexcan_priv *priv = netdev_priv(dev); | ||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
| @@ -364,7 +364,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	err = pm_runtime_get_sync(priv->dev); |  	err = pm_runtime_get_sync(priv->dev); | ||||||
|  	if (err < 0) { |  	if (err < 0) { | ||||||
|  		pm_runtime_put_noidle(priv->dev); |  		pm_runtime_put_noidle(priv->dev); | ||||||
| @@ -1322,7 +1496,10 @@ static int flexcan_open(struct net_devic | @@ -1324,7 +1498,10 @@ static int flexcan_open(struct net_devic | ||||||
|  	if (err) |  	if (err) | ||||||
|  		goto out_transceiver_disable; |  		goto out_transceiver_disable; | ||||||
|   |   | ||||||
| @@ -376,7 +376,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	priv->mb_count = (sizeof(priv->regs->mb[0]) / priv->mb_size) + |  	priv->mb_count = (sizeof(priv->regs->mb[0]) / priv->mb_size) + | ||||||
|  			 (sizeof(priv->regs->mb[1]) / priv->mb_size); |  			 (sizeof(priv->regs->mb[1]) / priv->mb_size); | ||||||
|   |   | ||||||
| @@ -1670,6 +1847,18 @@ static int flexcan_probe(struct platform | @@ -1676,6 +1853,18 @@ static int flexcan_probe(struct platform | ||||||
|  	priv->devtype_data = devtype_data; |  	priv->devtype_data = devtype_data; | ||||||
|  	priv->reg_xceiver = reg_xceiver; |  	priv->reg_xceiver = reg_xceiver; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|   |   | ||||||
|  /* FLEXCAN memory error control register (MECR) bits */ |  /* FLEXCAN memory error control register (MECR) bits */ | ||||||
|  #define FLEXCAN_MECR_ECRWRDIS		BIT(31) |  #define FLEXCAN_MECR_ECRWRDIS		BIT(31) | ||||||
| @@ -1324,6 +1325,7 @@ static int flexcan_chip_start(struct net | @@ -1326,6 +1327,7 @@ static int flexcan_chip_start(struct net | ||||||
|  		reg_fdctrl = priv->read(®s->fdctrl) & ~FLEXCAN_FDCTRL_FDRATE; |  		reg_fdctrl = priv->read(®s->fdctrl) & ~FLEXCAN_FDCTRL_FDRATE; | ||||||
|  		reg_fdctrl &= ~(FLEXCAN_FDCTRL_MBDSR1(0x3) | FLEXCAN_FDCTRL_MBDSR0(0x3)); |  		reg_fdctrl &= ~(FLEXCAN_FDCTRL_MBDSR1(0x3) | FLEXCAN_FDCTRL_MBDSR0(0x3)); | ||||||
|  		reg_mcr = priv->read(®s->mcr) & ~FLEXCAN_MCR_FDEN; |  		reg_mcr = priv->read(®s->mcr) & ~FLEXCAN_MCR_FDEN; | ||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|   |   | ||||||
|  		/* support BRS when set CAN FD mode |  		/* support BRS when set CAN FD mode | ||||||
|  		 * 64 bytes payload per MB and 7 MBs per RAM block by default |  		 * 64 bytes payload per MB and 7 MBs per RAM block by default | ||||||
| @@ -1333,10 +1335,14 @@ static int flexcan_chip_start(struct net | @@ -1335,10 +1337,14 @@ static int flexcan_chip_start(struct net | ||||||
|  			reg_fdctrl |= FLEXCAN_FDCTRL_FDRATE; |  			reg_fdctrl |= FLEXCAN_FDCTRL_FDRATE; | ||||||
|  			reg_fdctrl |= FLEXCAN_FDCTRL_MBDSR1(0x3) | FLEXCAN_FDCTRL_MBDSR0(0x3); |  			reg_fdctrl |= FLEXCAN_FDCTRL_MBDSR1(0x3) | FLEXCAN_FDCTRL_MBDSR0(0x3); | ||||||
|  			reg_mcr |= FLEXCAN_MCR_FDEN; |  			reg_mcr |= FLEXCAN_MCR_FDEN; | ||||||
| @@ -54,7 +54,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	if ((priv->devtype_data->quirks & FLEXCAN_QUIRK_ENABLE_EACEN_RRS)) { |  	if ((priv->devtype_data->quirks & FLEXCAN_QUIRK_ENABLE_EACEN_RRS)) { | ||||||
| @@ -1856,7 +1862,7 @@ static int flexcan_probe(struct platform | @@ -1862,7 +1868,7 @@ static int flexcan_probe(struct platform | ||||||
|   |   | ||||||
|  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_TIMESTAMP_SUPPORT_FD) { |  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_TIMESTAMP_SUPPORT_FD) { | ||||||
|  		if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { |  		if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) { | ||||||
|   | |||||||
| @@ -60,7 +60,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  			if (bt->brp != dbt->brp) |  			if (bt->brp != dbt->brp) | ||||||
|  				netdev_warn(dev, "Warning!! data brp = %d and brp = %d don't match.\n" |  				netdev_warn(dev, "Warning!! data brp = %d and brp = %d don't match.\n" | ||||||
|  					    "flexcan may not work. consider using different bitrate or data bitrate\n", |  					    "flexcan may not work. consider using different bitrate or data bitrate\n", | ||||||
| @@ -1323,6 +1339,7 @@ static int flexcan_chip_start(struct net | @@ -1325,6 +1341,7 @@ static int flexcan_chip_start(struct net | ||||||
|  	/* FDCTRL */ |  	/* FDCTRL */ | ||||||
|  	if (priv->can.ctrlmode_supported & CAN_CTRLMODE_FD) { |  	if (priv->can.ctrlmode_supported & CAN_CTRLMODE_FD) { | ||||||
|  		reg_fdctrl = priv->read(®s->fdctrl) & ~FLEXCAN_FDCTRL_FDRATE; |  		reg_fdctrl = priv->read(®s->fdctrl) & ~FLEXCAN_FDCTRL_FDRATE; | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  static const struct flexcan_devtype_data fsl_vf610_devtype_data = { |  static const struct flexcan_devtype_data fsl_vf610_devtype_data = { | ||||||
|  	.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS | |  	.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS | | ||||||
|  		FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP | |  		FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP | | ||||||
| @@ -1763,6 +1770,7 @@ out_put_node: | @@ -1769,6 +1776,7 @@ out_put_node: | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  static const struct of_device_id flexcan_of_match[] = { |  static const struct of_device_id flexcan_of_match[] = { | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |||||||
|  static const struct flexcan_devtype_data fsl_ls1021a_r2_devtype_data = { |  static const struct flexcan_devtype_data fsl_ls1021a_r2_devtype_data = { | ||||||
|  	.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS | |  	.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS | | ||||||
|  		FLEXCAN_QUIRK_BROKEN_PERR_STATE | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP, |  		FLEXCAN_QUIRK_BROKEN_PERR_STATE | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP, | ||||||
| @@ -1779,6 +1786,7 @@ static const struct of_device_id flexcan | @@ -1785,6 +1792,7 @@ static const struct of_device_id flexcan | ||||||
|  	{ .compatible = "fsl,p1010-flexcan", .data = &fsl_p1010_devtype_data, }, |  	{ .compatible = "fsl,p1010-flexcan", .data = &fsl_p1010_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,vf610-flexcan", .data = &fsl_vf610_devtype_data, }, |  	{ .compatible = "fsl,vf610-flexcan", .data = &fsl_vf610_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,ls1021ar2-flexcan", .data = &fsl_ls1021a_r2_devtype_data, }, |  	{ .compatible = "fsl,ls1021ar2-flexcan", .data = &fsl_ls1021a_r2_devtype_data, }, | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> | |||||||
|  #include <linux/regmap.h> |  #include <linux/regmap.h> | ||||||
|   |   | ||||||
|  #define DRV_NAME			"flexcan" |  #define DRV_NAME			"flexcan" | ||||||
| @@ -1959,9 +1960,7 @@ static int __maybe_unused flexcan_suspen | @@ -1965,9 +1966,7 @@ static int __maybe_unused flexcan_suspen | ||||||
|  			if (err) |  			if (err) | ||||||
|  				return err; |  				return err; | ||||||
|  		} else { |  		} else { | ||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> | |||||||
|  		} |  		} | ||||||
|  		netif_stop_queue(dev); |  		netif_stop_queue(dev); | ||||||
|  		netif_device_detach(dev); |  		netif_device_detach(dev); | ||||||
| @@ -1987,7 +1986,9 @@ static int __maybe_unused flexcan_resume | @@ -1993,7 +1992,9 @@ static int __maybe_unused flexcan_resume | ||||||
|  			if (err) |  			if (err) | ||||||
|  				return err; |  				return err; | ||||||
|  		} else { |  		} else { | ||||||
|   | |||||||
| @@ -126,7 +126,7 @@ Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> | |||||||
|   |   | ||||||
|   |   | ||||||
|  	reg_mcr = priv->read(®s->mcr); |  	reg_mcr = priv->read(®s->mcr); | ||||||
| @@ -1770,11 +1814,6 @@ static int flexcan_setup_stop_mode(struc | @@ -1776,11 +1820,6 @@ static int flexcan_setup_stop_mode(struc | ||||||
|  		gpr_np->full_name, priv->stm.req_gpr, priv->stm.req_bit, |  		gpr_np->full_name, priv->stm.req_gpr, priv->stm.req_bit, | ||||||
|  		priv->stm.ack_gpr, priv->stm.ack_bit); |  		priv->stm.ack_gpr, priv->stm.ack_bit); | ||||||
|   |   | ||||||
| @@ -138,7 +138,7 @@ Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> | |||||||
|  	return 0; |  	return 0; | ||||||
|   |   | ||||||
|  out_put_node: |  out_put_node: | ||||||
| @@ -1782,6 +1821,30 @@ out_put_node: | @@ -1788,6 +1827,30 @@ out_put_node: | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -169,7 +169,7 @@ Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com> | |||||||
|  static const struct of_device_id flexcan_of_match[] = { |  static const struct of_device_id flexcan_of_match[] = { | ||||||
|  	{ .compatible = "fsl,imx8qm-flexcan", .data = &fsl_imx8qm_devtype_data, }, |  	{ .compatible = "fsl,imx8qm-flexcan", .data = &fsl_imx8qm_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,imx6q-flexcan", .data = &fsl_imx6q_devtype_data, }, |  	{ .compatible = "fsl,imx6q-flexcan", .data = &fsl_imx6q_devtype_data, }, | ||||||
| @@ -1924,9 +1987,19 @@ static int flexcan_probe(struct platform | @@ -1930,9 +1993,19 @@ static int flexcan_probe(struct platform | ||||||
|  	devm_can_led_init(dev); |  	devm_can_led_init(dev); | ||||||
|   |   | ||||||
|  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_SETUP_STOP_MODE) { |  	if (priv->devtype_data->quirks & FLEXCAN_QUIRK_SETUP_STOP_MODE) { | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ Reviewed-by: Leonard Crestez <leonard.crestez@nxp.com> | |||||||
|  static const struct can_bittiming_const flexcan_bittiming_const = { |  static const struct can_bittiming_const flexcan_bittiming_const = { | ||||||
|  	.name = DRV_NAME, |  	.name = DRV_NAME, | ||||||
|  	.tseg1_min = 4, |  	.tseg1_min = 4, | ||||||
| @@ -1856,6 +1861,8 @@ static const struct of_device_id flexcan | @@ -1862,6 +1867,8 @@ static const struct of_device_id flexcan | ||||||
|  	{ .compatible = "fsl,vf610-flexcan", .data = &fsl_vf610_devtype_data, }, |  	{ .compatible = "fsl,vf610-flexcan", .data = &fsl_vf610_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,ls1021ar2-flexcan", .data = &fsl_ls1021a_r2_devtype_data, }, |  	{ .compatible = "fsl,ls1021ar2-flexcan", .data = &fsl_ls1021a_r2_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,lx2160ar1-flexcan", .data = &fsl_lx2160a_r1_devtype_data, }, |  	{ .compatible = "fsl,lx2160ar1-flexcan", .data = &fsl_lx2160a_r1_devtype_data, }, | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> | |||||||
|   |   | ||||||
|  		if (writable) |  		if (writable) | ||||||
|  			pte = kvm_s2pte_mkwrite(pte); |  			pte = kvm_s2pte_mkwrite(pte); | ||||||
| @@ -2362,7 +2364,7 @@ int kvm_arch_prepare_memory_region(struc | @@ -2361,7 +2363,7 @@ int kvm_arch_prepare_memory_region(struc | ||||||
|   |   | ||||||
|  			ret = kvm_phys_addr_ioremap(kvm, gpa, pa, |  			ret = kvm_phys_addr_ioremap(kvm, gpa, pa, | ||||||
|  						    vm_end - vm_start, |  						    vm_end - vm_start, | ||||||
|   | |||||||
| @@ -105,7 +105,7 @@ Signed-off-by: Diana Craciun <diana.craciun@nxp.com> | |||||||
|  	if (kvm_is_device_pfn(pfn)) { |  	if (kvm_is_device_pfn(pfn)) { | ||||||
|  		mem_type = PAGE_S2_DEVICE; |  		mem_type = PAGE_S2_DEVICE; | ||||||
|  		flags |= KVM_S2PTE_FLAG_IS_IOMAP; |  		flags |= KVM_S2PTE_FLAG_IS_IOMAP; | ||||||
| @@ -2352,6 +2396,9 @@ int kvm_arch_prepare_memory_region(struc | @@ -2351,6 +2395,9 @@ int kvm_arch_prepare_memory_region(struc | ||||||
|  			gpa_t gpa = mem->guest_phys_addr + |  			gpa_t gpa = mem->guest_phys_addr + | ||||||
|  				    (vm_start - mem->userspace_addr); |  				    (vm_start - mem->userspace_addr); | ||||||
|  			phys_addr_t pa; |  			phys_addr_t pa; | ||||||
| @@ -115,7 +115,7 @@ Signed-off-by: Diana Craciun <diana.craciun@nxp.com> | |||||||
|   |   | ||||||
|  			pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT; |  			pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT; | ||||||
|  			pa += vm_start - vma->vm_start; |  			pa += vm_start - vma->vm_start; | ||||||
| @@ -2362,9 +2409,13 @@ int kvm_arch_prepare_memory_region(struc | @@ -2361,9 +2408,13 @@ int kvm_arch_prepare_memory_region(struc | ||||||
|  				goto out; |  				goto out; | ||||||
|  			} |  			} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  			retval = xhci_enter_test_mode(xhci, test_mode, wIndex, |  			retval = xhci_enter_test_mode(xhci, test_mode, wIndex, | ||||||
| --- a/drivers/usb/host/xhci-ring.c | --- a/drivers/usb/host/xhci-ring.c | ||||||
| +++ b/drivers/usb/host/xhci-ring.c | +++ b/drivers/usb/host/xhci-ring.c | ||||||
| @@ -3591,6 +3591,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * | @@ -3592,6 +3592,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -174,7 +174,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|   * bursts that are required to move all packets in this TD.  Only SuperSpeed |   * bursts that are required to move all packets in this TD.  Only SuperSpeed | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -5364,6 +5364,7 @@ static const struct hc_driver xhci_hc_dr | @@ -5372,6 +5372,7 @@ static const struct hc_driver xhci_hc_dr | ||||||
|  	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout, |  	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout, | ||||||
|  	.find_raw_port_number =	xhci_find_raw_port_number, |  	.find_raw_port_number =	xhci_find_raw_port_number, | ||||||
|  	.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete, |  	.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete, | ||||||
| @@ -184,7 +184,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  void xhci_init_driver(struct hc_driver *drv, |  void xhci_init_driver(struct hc_driver *drv, | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -2149,6 +2149,16 @@ int xhci_find_raw_port_number(struct usb | @@ -2150,6 +2150,16 @@ int xhci_find_raw_port_number(struct usb | ||||||
|  struct xhci_hub *xhci_get_rhub(struct usb_hcd *hcd); |  struct xhci_hub *xhci_get_rhub(struct usb_hcd *hcd); | ||||||
|   |   | ||||||
|  void xhci_hc_died(struct xhci_hcd *xhci); |  void xhci_hc_died(struct xhci_hcd *xhci); | ||||||
|   | |||||||
| @@ -39,4 +39,4 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
| +#define XHCI_CDNS_HOST		BIT_ULL(36) | +#define XHCI_CDNS_HOST		BIT_ULL(36) | ||||||
|  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) |  #define XHCI_SKIP_PHY_INIT	BIT_ULL(37) | ||||||
|  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) |  #define XHCI_DISABLE_SPARSE	BIT_ULL(38) | ||||||
|   |  #define XHCI_NO_SOFT_RETRY	BIT_ULL(40) | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -5385,6 +5385,8 @@ void xhci_init_driver(struct hc_driver * | @@ -5393,6 +5393,8 @@ void xhci_init_driver(struct hc_driver * | ||||||
|  			drv->check_bandwidth = over->check_bandwidth; |  			drv->check_bandwidth = over->check_bandwidth; | ||||||
|  		if (over->reset_bandwidth) |  		if (over->reset_bandwidth) | ||||||
|  			drv->reset_bandwidth = over->reset_bandwidth; |  			drv->reset_bandwidth = over->reset_bandwidth; | ||||||
| @@ -35,7 +35,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  EXPORT_SYMBOL_GPL(xhci_init_driver); |  EXPORT_SYMBOL_GPL(xhci_init_driver); | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -1915,6 +1915,7 @@ struct xhci_driver_overrides { | @@ -1916,6 +1916,7 @@ struct xhci_driver_overrides { | ||||||
|  	int (*start)(struct usb_hcd *hcd); |  	int (*start)(struct usb_hcd *hcd); | ||||||
|  	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *); |  	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *); | ||||||
|  	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *); |  	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *); | ||||||
|   | |||||||
| @@ -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 | ||||||
| @@ -1452,7 +1452,9 @@ static void mt7530_phylink_mac_link_down | @@ -1450,7 +1450,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 | ||||||
| @@ -490,17 +490,6 @@ mt7530_mib_reset(struct dsa_switch *ds) | @@ -488,17 +488,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; | ||||||
| @@ -674,7 +663,7 @@ mt7530_port_enable(struct dsa_switch *ds | @@ -672,7 +661,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); | ||||||
|   |   | ||||||
| @@ -697,7 +686,7 @@ mt7530_port_disable(struct dsa_switch *d | @@ -695,7 +684,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); | ||||||
|  } |  } | ||||||
| @@ -1407,8 +1396,7 @@ static void mt7530_phylink_mac_config(st | @@ -1405,8 +1394,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; | ||||||
|   |   | ||||||
| @@ -1416,26 +1404,6 @@ static void mt7530_phylink_mac_config(st | @@ -1414,26 +1402,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); | ||||||
|  } |  } | ||||||
| @@ -1446,7 +1414,7 @@ static void mt7530_phylink_mac_link_down | @@ -1444,7 +1412,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, | ||||||
| @@ -1457,8 +1425,31 @@ static void mt7530_phylink_mac_link_up(s | @@ -1455,8 +1423,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; | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com> | |||||||
|  		return -EINVAL; |  		return -EINVAL; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1344,12 +1346,11 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1342,12 +1344,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 */ | ||||||
| @@ -1358,33 +1359,114 @@ static void mt7530_phylink_mac_config(st | @@ -1356,33 +1357,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; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1452,61 +1534,44 @@ static void mt7530_phylink_mac_link_up(s | @@ -1450,61 +1532,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); | ||||||
|   |   | ||||||
| @@ -1602,12 +1667,45 @@ static int mt7530_set_mac_eee(struct dsa | @@ -1600,12 +1665,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, | ||||||
| @@ -1624,18 +1722,43 @@ static const struct dsa_switch_ops mt753 | @@ -1622,18 +1720,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); | ||||||
| @@ -1673,8 +1796,21 @@ mt7530_probe(struct mdio_device *mdiodev | @@ -1671,8 +1794,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. | ||||||
|  	 */ |  	 */ | ||||||
|   | |||||||
| @@ -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; | ||||||
| @@ -483,6 +489,108 @@ mt7530_pad_clk_setup(struct dsa_switch * | @@ -481,6 +487,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) | ||||||
|  { |  { | ||||||
| @@ -507,6 +615,217 @@ static int mt7530_phy_write(struct dsa_s | @@ -505,6 +613,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) | ||||||
| @@ -623,9 +942,14 @@ unlock_exit: | @@ -621,9 +940,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); | ||||||
| @@ -638,7 +962,7 @@ mt7530_cpu_port_enable(struct mt7530_pri | @@ -636,7 +960,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))); | ||||||
| @@ -1132,27 +1456,42 @@ mt7530_port_vlan_del(struct dsa_switch * | @@ -1130,27 +1454,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) { | ||||||
| @@ -1167,7 +1506,7 @@ static int mt7530_port_mirror_add(struct | @@ -1165,7 +1504,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; | ||||||
| @@ -1184,9 +1523,9 @@ static void mt7530_port_mirror_del(struc | @@ -1182,9 +1521,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> | |||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1292,7 +1631,7 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1290,7 +1629,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); | ||||||
|   |   | ||||||
| @@ -1346,6 +1685,118 @@ mt7530_setup(struct dsa_switch *ds) | @@ -1344,6 +1683,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) | ||||||
| @@ -1384,6 +1835,47 @@ unsupported: | @@ -1382,6 +1833,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) | ||||||
| @@ -1416,6 +1908,227 @@ mt7530_mac_config(struct dsa_switch *ds, | @@ -1414,6 +1906,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) | ||||||
| @@ -1451,6 +2164,8 @@ mt753x_phylink_mac_config(struct dsa_swi | @@ -1449,6 +2162,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) | ||||||
| @@ -1470,7 +2185,8 @@ unsupported: | @@ -1468,7 +2183,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; | ||||||
| @@ -1480,7 +2196,7 @@ unsupported: | @@ -1478,7 +2194,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)) | ||||||
| @@ -1490,7 +2206,18 @@ unsupported: | @@ -1488,7 +2204,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) | ||||||
|  { |  { | ||||||
| @@ -1499,7 +2226,19 @@ static void mt7530_phylink_mac_link_down | @@ -1497,7 +2224,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, | ||||||
| @@ -1509,18 +2248,29 @@ static void mt7530_phylink_mac_link_up(s | @@ -1507,18 +2246,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) { | ||||||
| @@ -1534,6 +2284,45 @@ static void mt7530_phylink_mac_link_up(s | @@ -1532,6 +2282,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) | ||||||
| @@ -1542,6 +2331,14 @@ mt7530_mac_port_validate(struct dsa_swit | @@ -1540,6 +2329,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, | ||||||
| @@ -1558,7 +2355,8 @@ mt753x_phylink_validate(struct dsa_switc | @@ -1556,7 +2353,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); | ||||||
| @@ -1577,6 +2375,11 @@ mt753x_phylink_validate(struct dsa_switc | @@ -1575,6 +2373,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 | ||||||
| @@ -1667,6 +2470,63 @@ static int mt7530_set_mac_eee(struct dsa | @@ -1665,6 +2468,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) | ||||||
| @@ -1720,13 +2580,14 @@ static const struct dsa_switch_ops mt753 | @@ -1718,13 +2578,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, | ||||||
|  }; |  }; | ||||||
| @@ -1754,11 +2615,26 @@ static const struct mt753x_info mt753x_t | @@ -1752,11 +2613,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, | ||||||
|  	}, |  	}, | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy.c | --- a/drivers/net/phy/phy.c | ||||||
| +++ b/drivers/net/phy/phy.c | +++ b/drivers/net/phy/phy.c | ||||||
| @@ -546,7 +546,10 @@ static int phy_check_link_status(struct | @@ -547,7 +547,10 @@ static int phy_check_link_status(struct | ||||||
|  		phy_link_up(phydev); |  		phy_link_up(phydev); | ||||||
|  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { |  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { | ||||||
|  		phydev->state = PHY_NOLINK; |  		phydev->state = PHY_NOLINK; | ||||||
| @@ -23,7 +23,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -926,7 +929,10 @@ void phy_state_machine(struct work_struc | @@ -927,7 +930,10 @@ void phy_state_machine(struct work_struc | ||||||
|  	case PHY_HALTED: |  	case PHY_HALTED: | ||||||
|  		if (phydev->link) { |  		if (phydev->link) { | ||||||
|  			phydev->link = 0; |  			phydev->link = 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user