mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
kernel: bump 5.4 to 5.4.163
Removed upstreamed: target/linux/mvebu/patches-5.4/001-PCI-aardvark-Wait-for-endpoint-to-be-ready-before-tr.patch target/linux/mvebu/patches-5.4/016-PCI-aardvark-Train-link-immediately-after-enabling-t.patch target/linux/mvebu/patches-5.4/017-PCI-aardvark-Improve-link-training.patch target/linux/mvebu/patches-5.4/018-PCI-aardvark-Issue-PERST-via-GPIO.patch target/linux/mvebu/patches-5.4/020-arm64-dts-marvell-armada-37xx-Set-pcie_reset_pin-to-.patch The following patch does not apply to upstream any more and needs some more work to make it work fully again. I am not sure if we are still able to set the UART to a none standard baud rate. target/linux/ath79/patches-5.4/921-serial-core-add-support-for-boot-console-with-arbitr.patch These patches needed manually changes: target/linux/generic/pending-5.4/110-ehci_hcd_ignore_oc.patch target/linux/ipq806x/patches-5.4/0065-arm-override-compiler-flags.patch target/linux/layerscape/patches-5.4/804-crypto-0016-MLKU-114-1-crypto-caam-reduce-page-0-regs-access-to-.patch target/linux/mvebu/patches-5.4/019-PCI-aardvark-Add-PHY-support.patch target/linux/octeontx/patches-5.4/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch All others updated automatically. Compile-tested on: malta/le, armvirt/64, lantiq/xrx200 Runtime-tested on: malta/le, armvirt/64, lantiq/xrx200 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
06547e0a58
commit
14940aee45
@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-5.4 = .158
|
||||
LINUX_VERSION-5.4 = .163
|
||||
|
||||
LINUX_KERNEL_HASH-5.4.158 = 6e018fecdc8fc24553756e582d83b82d65b10a6b03ef36262a24911f839b8d59
|
||||
LINUX_KERNEL_HASH-5.4.163 = 6246fe1776d83039d71f74eb839f38ebdec23e1b37a7bf76f3bce13cbf0290be
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@@ -65,6 +67,44 @@
|
||||
@@ -72,6 +74,44 @@
|
||||
#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142
|
||||
#define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
static const char hcd_name[] = "xhci_hcd";
|
||||
|
||||
static struct hc_driver __read_mostly xhci_pci_hc_driver;
|
||||
@@ -311,6 +351,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
@@ -327,6 +367,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
@ -967,7 +967,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
/* called during probe() after chip reset completes */
|
||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
@@ -352,6 +1259,27 @@ static int xhci_pci_probe(struct pci_dev
|
||||
@@ -368,6 +1275,27 @@ static int xhci_pci_probe(struct pci_dev
|
||||
struct hc_driver *driver;
|
||||
struct usb_hcd *hcd;
|
||||
|
||||
@ -995,7 +995,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
driver = (struct hc_driver *)id->driver_data;
|
||||
|
||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||
@@ -413,6 +1341,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
@@ -429,6 +1357,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
{
|
||||
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->xhc_state |= XHCI_STATE_REMOVING;
|
||||
|
||||
@@ -552,6 +1490,11 @@ static int xhci_pci_resume(struct usb_hc
|
||||
@@ -568,6 +1506,11 @@ static int xhci_pci_resume(struct usb_hc
|
||||
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
|
||||
usb_enable_intel_xhci_ports(pdev);
|
||||
|
||||
|
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -290,6 +290,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
|
@ -754,7 +754,7 @@
|
||||
ptr = ip6hoff + sizeof(struct ipv6hdr);
|
||||
--- a/include/net/neighbour.h
|
||||
+++ b/include/net/neighbour.h
|
||||
@@ -274,8 +274,10 @@ static inline bool neigh_key_eq128(const
|
||||
@@ -275,8 +275,10 @@ static inline bool neigh_key_eq128(const
|
||||
const u32 *n32 = (const u32 *)n->primary_key;
|
||||
const u32 *p32 = pkey;
|
||||
|
||||
|
@ -1,54 +0,0 @@
|
||||
From 4d3c17975c7814884a721fe693b3adf5c426d759 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Tue, 10 Nov 2015 22:18:39 +0100
|
||||
Subject: [RFC] serial: core: add support for boot console with arbitrary
|
||||
baud rates
|
||||
|
||||
The Arduino Yun uses a baud rate of 250000 by default. The serial is
|
||||
going over the Atmel ATmega and is used to connect to this chip.
|
||||
Without this patch Linux wants to switch the console to 9600 Baud.
|
||||
|
||||
With this patch Linux will use the configured baud rate and not a
|
||||
default one specified in uart_register_driver().
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
[rebased to 4.14, slightly reworded commit message]
|
||||
Signed-off-by: Sungbo Eo <mans0n@gorani.run>
|
||||
---
|
||||
drivers/tty/serial/serial_core.c | 6 +++++-
|
||||
include/linux/console.h | 1 +
|
||||
2 files changed, 6 insertions(+), 1 deletions(-)
|
||||
|
||||
--- a/drivers/tty/serial/serial_core.c
|
||||
+++ b/drivers/tty/serial/serial_core.c
|
||||
@@ -220,6 +220,8 @@ static int uart_port_startup(struct tty_
|
||||
if (retval == 0) {
|
||||
if (uart_console(uport) && uport->cons->cflag) {
|
||||
tty->termios.c_cflag = uport->cons->cflag;
|
||||
+ tty->termios.c_ospeed = uport->cons->baud;
|
||||
+ tty->termios.c_ispeed = uport->cons->baud;
|
||||
uport->cons->cflag = 0;
|
||||
}
|
||||
/*
|
||||
@@ -2110,8 +2112,10 @@ uart_set_options(struct uart_port *port,
|
||||
* Allow the setting of the UART parameters with a NULL console
|
||||
* too:
|
||||
*/
|
||||
- if (co)
|
||||
+ if (co) {
|
||||
co->cflag = termios.c_cflag;
|
||||
+ co->baud = baud;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/include/linux/console.h
|
||||
+++ b/include/linux/console.h
|
||||
@@ -153,6 +153,7 @@ struct console {
|
||||
short flags;
|
||||
short index;
|
||||
int cflag;
|
||||
+ int baud;
|
||||
void *data;
|
||||
struct console *next;
|
||||
};
|
@ -1040,7 +1040,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5369,7 +5369,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5379,7 +5379,7 @@ static void port_event(struct usb_hub *h
|
||||
port_dev->over_current_count++;
|
||||
port_over_current_notify(port_dev);
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/kernel/cgroup/cgroup.c
|
||||
+++ b/kernel/cgroup/cgroup.c
|
||||
@@ -5721,6 +5721,9 @@ int __init cgroup_init_early(void)
|
||||
@@ -5744,6 +5744,9 @@ int __init cgroup_init_early(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/**
|
||||
* cgroup_init - cgroup initialization
|
||||
*
|
||||
@@ -5759,6 +5762,12 @@ int __init cgroup_init(void)
|
||||
@@ -5782,6 +5785,12 @@ int __init cgroup_init(void)
|
||||
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
for_each_subsys(ss, ssid) {
|
||||
if (ss->early_init) {
|
||||
struct cgroup_subsys_state *css =
|
||||
@@ -6168,6 +6177,10 @@ static int __init cgroup_disable(char *s
|
||||
@@ -6191,6 +6200,10 @@ static int __init cgroup_disable(char *s
|
||||
strcmp(token, ss->legacy_name))
|
||||
continue;
|
||||
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static_branch_disable(cgroup_subsys_enabled_key[i]);
|
||||
pr_info("Disabling %s control group subsystem\n",
|
||||
ss->name);
|
||||
@@ -6177,6 +6190,31 @@ static int __init cgroup_disable(char *s
|
||||
@@ -6200,6 +6213,31 @@ static int __init cgroup_disable(char *s
|
||||
}
|
||||
__setup("cgroup_disable=", cgroup_disable);
|
||||
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -259,6 +259,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -266,6 +266,10 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3432)
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
|
@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -260,8 +260,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -267,8 +267,10 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
|
||||
|
@ -82,7 +82,7 @@ Cc: linux-rockchip@lists.infradead.org
|
||||
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1176,7 +1176,8 @@ static int advk_pcie_probe(struct platfo
|
||||
@@ -1523,7 +1523,8 @@ static int advk_pcie_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -402,7 +402,7 @@ Cc: linux-rockchip@lists.infradead.org
|
||||
}
|
||||
--- a/include/linux/pci.h
|
||||
+++ b/include/linux/pci.h
|
||||
@@ -2279,6 +2279,7 @@ struct irq_domain;
|
||||
@@ -2281,6 +2281,7 @@ struct irq_domain;
|
||||
struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
|
||||
int pci_parse_request_of_pci_ranges(struct device *dev,
|
||||
struct list_head *resources,
|
||||
@ -410,7 +410,7 @@ Cc: linux-rockchip@lists.infradead.org
|
||||
struct resource **bus_range);
|
||||
|
||||
/* Arch may override this (weak) */
|
||||
@@ -2287,9 +2288,11 @@ struct device_node *pcibios_get_phb_of_n
|
||||
@@ -2289,9 +2290,11 @@ struct device_node *pcibios_get_phb_of_n
|
||||
#else /* CONFIG_OF */
|
||||
static inline struct irq_domain *
|
||||
pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
|
||||
|
@ -838,7 +838,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
break;
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1356,6 +1356,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1374,6 +1374,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_VP8_FRAME: descr = "VP8 Frame"; break;
|
||||
case V4L2_PIX_FMT_VP9: descr = "VP9"; break;
|
||||
case V4L2_PIX_FMT_HEVC: descr = "HEVC"; break; /* aka H.265 */
|
||||
|
@ -278,7 +278,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
pixfmt-nv24
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1258,6 +1258,8 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1276,6 +1276,8 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_NV61M: descr = "Y/CrCb 4:2:2 (N-C)"; break;
|
||||
case V4L2_PIX_FMT_NV12MT: descr = "Y/CbCr 4:2:0 (64x32 MB, N-C)"; break;
|
||||
case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB, N-C)"; break;
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
#define MAX_TUNING_LOOP 40
|
||||
|
||||
@@ -2768,7 +2768,7 @@ static void sdhci_timeout_timer(struct t
|
||||
@@ -2780,7 +2780,7 @@ static void sdhci_timeout_timer(struct t
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
|
||||
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
mmc_hostname(host->mmc));
|
||||
sdhci_dumpregs(host);
|
||||
|
||||
@@ -2790,7 +2790,7 @@ static void sdhci_timeout_data_timer(str
|
||||
@@ -2802,7 +2802,7 @@ static void sdhci_timeout_data_timer(str
|
||||
|
||||
if (host->data || host->data_cmd ||
|
||||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
|
||||
|
@ -65,7 +65,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
|
||||
+
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1332,6 +1332,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1350,6 +1350,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break;
|
||||
case V4L2_META_FMT_UVC: descr = "UVC Payload Header Metadata"; break;
|
||||
case V4L2_META_FMT_D4XX: descr = "Intel D4xx UVC Metadata"; break;
|
||||
|
@ -74,7 +74,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
|
||||
+
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1333,6 +1333,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1351,6 +1351,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_META_FMT_UVC: descr = "UVC Payload Header Metadata"; break;
|
||||
case V4L2_META_FMT_D4XX: descr = "Intel D4xx UVC Metadata"; break;
|
||||
case V4L2_META_FMT_SENSOR_DATA: descr = "Sensor Ancillary Metadata"; break;
|
||||
|
@ -119,7 +119,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
|
||||
unsigned int i;
|
||||
int mbps, ret;
|
||||
|
||||
@@ -520,10 +571,18 @@ static int rcsi2_start_receiver(struct r
|
||||
@@ -522,10 +573,18 @@ static int rcsi2_start_receiver(struct r
|
||||
fld |= FLD_FLD_NUM(1);
|
||||
}
|
||||
|
||||
@ -140,7 +140,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
|
||||
if (mbps < 0)
|
||||
return mbps;
|
||||
|
||||
@@ -570,7 +629,7 @@ static int rcsi2_start_receiver(struct r
|
||||
@@ -572,7 +631,7 @@ static int rcsi2_start_receiver(struct r
|
||||
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ);
|
||||
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ | PHYCNT_RSTZ);
|
||||
|
||||
@ -149,7 +149,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -747,6 +806,7 @@ static int rcsi2_notify_bound(struct v4l
|
||||
@@ -749,6 +808,7 @@ static int rcsi2_notify_bound(struct v4l
|
||||
}
|
||||
|
||||
priv->remote = subdev;
|
||||
|
@ -125,7 +125,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
+ - R\ :sub:`33high`
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1298,6 +1298,10 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1316,6 +1316,10 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_SGBRG12P: descr = "12-bit Bayer GBGB/RGRG Packed"; break;
|
||||
case V4L2_PIX_FMT_SGRBG12P: descr = "12-bit Bayer GRGR/BGBG Packed"; break;
|
||||
case V4L2_PIX_FMT_SRGGB12P: descr = "12-bit Bayer RGRG/GBGB Packed"; break;
|
||||
|
@ -111,7 +111,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
pixfmt-y16
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1212,6 +1212,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1230,6 +1230,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_Y6: descr = "6-bit Greyscale"; break;
|
||||
case V4L2_PIX_FMT_Y10: descr = "10-bit Greyscale"; break;
|
||||
case V4L2_PIX_FMT_Y12: descr = "12-bit Greyscale"; break;
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
pixfmt-y10p
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1217,6 +1217,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1235,6 +1235,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_Y16_BE: descr = "16-bit Greyscale BE"; break;
|
||||
case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break;
|
||||
case V4L2_PIX_FMT_Y10P: descr = "10-bit Greyscale (MIPI Packed)"; break;
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
pixfmt-y16
|
||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
||||
@@ -1218,6 +1218,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
@@ -1236,6 +1236,7 @@ static void v4l_fill_fmtdesc(struct v4l2
|
||||
case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break;
|
||||
case V4L2_PIX_FMT_Y10P: descr = "10-bit Greyscale (MIPI Packed)"; break;
|
||||
case V4L2_PIX_FMT_Y12P: descr = "12-bit Greyscale (MIPI Packed)"; break;
|
||||
|
@ -94,7 +94,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
#include <video/mipi_display.h>
|
||||
|
||||
#include "fbtft.h"
|
||||
@@ -1199,6 +1200,7 @@ static struct fbtft_platform_data *fbtft
|
||||
@@ -1192,6 +1193,7 @@ static struct fbtft_platform_data *fbtft
|
||||
* @display: Display properties
|
||||
* @sdev: SPI device
|
||||
* @pdev: Platform device
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
*
|
||||
* Allocates, initializes and registers a framebuffer
|
||||
*
|
||||
@@ -1208,12 +1210,15 @@ static struct fbtft_platform_data *fbtft
|
||||
@@ -1201,12 +1203,15 @@ static struct fbtft_platform_data *fbtft
|
||||
*/
|
||||
int fbtft_probe_common(struct fbtft_display *display,
|
||||
struct spi_device *sdev,
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
int ret;
|
||||
|
||||
if (sdev)
|
||||
@@ -1229,6 +1234,14 @@ int fbtft_probe_common(struct fbtft_disp
|
||||
@@ -1222,6 +1227,14 @@ int fbtft_probe_common(struct fbtft_disp
|
||||
pdata = fbtft_probe_dt(dev);
|
||||
if (IS_ERR(pdata))
|
||||
return PTR_ERR(pdata);
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -263,6 +263,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -270,6 +270,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3483) {
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -350,6 +350,14 @@
|
||||
@@ -352,6 +352,14 @@
|
||||
};
|
||||
};
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
mdio: mdio@18003000 {
|
||||
compatible = "brcm,iproc-mdio";
|
||||
reg = <0x18003000 0x8>;
|
||||
@@ -417,12 +425,12 @@
|
||||
@@ -419,12 +427,12 @@
|
||||
function = "spi";
|
||||
};
|
||||
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -392,6 +392,15 @@
|
||||
@@ -394,6 +394,15 @@
|
||||
reg = <0x18105000 0x1000>;
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -252,6 +252,10 @@
|
||||
@@ -254,6 +254,10 @@
|
||||
reg = <0x00013000 0x1000>;
|
||||
};
|
||||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -265,7 +265,7 @@
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
#usb-cells = <0>;
|
||||
|
||||
compatible = "generic-ehci";
|
||||
@@ -287,7 +287,7 @@
|
||||
@@ -289,7 +289,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -318,7 +318,7 @@
|
||||
@@ -320,7 +320,7 @@
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
|
@ -38,7 +38,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -428,7 +428,7 @@
|
||||
@@ -430,7 +430,7 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -482,7 +482,7 @@
|
||||
@@ -484,7 +484,7 @@
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
|
@ -71,7 +71,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -483,7 +483,7 @@
|
||||
@@ -485,7 +485,7 @@
|
||||
};
|
||||
|
||||
srab: ethernet-switch@18007000 {
|
||||
|
@ -155,7 +155,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
label = "lan4";
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -489,6 +489,10 @@
|
||||
@@ -491,6 +491,10 @@
|
||||
status = "disabled";
|
||||
|
||||
/* ports are defined in board DTS */
|
||||
|
@ -9,7 +9,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -422,16 +422,12 @@
|
||||
@@ -424,16 +424,12 @@
|
||||
#size-cells = <1>;
|
||||
|
||||
cru@100 {
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -678,6 +678,10 @@ int ehci_setup(struct usb_hcd *hcd)
|
||||
@@ -687,6 +687,10 @@ int ehci_setup(struct usb_hcd *hcd)
|
||||
|
||||
/* cache this readonly data; minimize chip reads */
|
||||
ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);
|
||||
|
@ -107,7 +107,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
}
|
||||
|
||||
static struct clk clk_pcie = {
|
||||
@@ -536,6 +550,21 @@ static struct clk_lookup bcm6368_clks[]
|
||||
@@ -542,6 +556,21 @@ static struct clk_lookup bcm6368_clks[]
|
||||
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
|
||||
};
|
||||
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
#define HSSPI_PLL_HZ_6328 133333333
|
||||
#define HSSPI_PLL_HZ_6362 400000000
|
||||
|
||||
@@ -568,6 +597,10 @@ static int __init bcm63xx_clk_init(void)
|
||||
@@ -574,6 +603,10 @@ static int __init bcm63xx_clk_init(void)
|
||||
case BCM6368_CPU_ID:
|
||||
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
|
||||
break;
|
||||
|
@ -57,7 +57,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||
mask = CKCTL_6328_HSSPI_EN;
|
||||
else if (BCMCPU_IS_6362())
|
||||
mask = CKCTL_6362_HSSPI_EN;
|
||||
@@ -444,6 +446,19 @@ static struct clk_lookup bcm3368_clks[]
|
||||
@@ -450,6 +452,19 @@ static struct clk_lookup bcm3368_clks[]
|
||||
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
|
||||
};
|
||||
|
||||
@ -77,7 +77,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||
static struct clk_lookup bcm6328_clks[] = {
|
||||
/* fixed rate clocks */
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
@@ -565,6 +580,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||
@@ -571,6 +586,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
|
||||
};
|
||||
|
||||
@ -85,7 +85,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
|
||||
#define HSSPI_PLL_HZ_6328 133333333
|
||||
#define HSSPI_PLL_HZ_6362 400000000
|
||||
|
||||
@@ -574,6 +590,10 @@ static int __init bcm63xx_clk_init(void)
|
||||
@@ -580,6 +596,10 @@ static int __init bcm63xx_clk_init(void)
|
||||
case BCM3368_CPU_ID:
|
||||
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
|
||||
break;
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
|
||||
--- a/arch/mips/bcm63xx/clk.c
|
||||
+++ b/arch/mips/bcm63xx/clk.c
|
||||
@@ -489,6 +489,8 @@ static struct clk_lookup bcm3368_clks[]
|
||||
@@ -495,6 +495,8 @@ static struct clk_lookup bcm3368_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
@ -18,7 +18,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||
@@ -505,7 +507,9 @@ static struct clk_lookup bcm6318_clks[]
|
||||
@@ -511,7 +513,9 @@ static struct clk_lookup bcm6318_clks[]
|
||||
/* fixed rate clocks */
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
@ -28,7 +28,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
@@ -519,7 +523,10 @@ static struct clk_lookup bcm6328_clks[]
|
||||
@@ -525,7 +529,10 @@ static struct clk_lookup bcm6328_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
@ -39,7 +39,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
@@ -532,6 +539,7 @@ static struct clk_lookup bcm6338_clks[]
|
||||
@@ -538,6 +545,7 @@ static struct clk_lookup bcm6338_clks[]
|
||||
/* fixed rate clocks */
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
@ -47,7 +47,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||
@@ -546,6 +554,7 @@ static struct clk_lookup bcm6345_clks[]
|
||||
@@ -552,6 +560,7 @@ static struct clk_lookup bcm6345_clks[]
|
||||
/* fixed rate clocks */
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
@ -55,7 +55,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||
@@ -560,6 +569,7 @@ static struct clk_lookup bcm6348_clks[]
|
||||
@@ -566,6 +575,7 @@ static struct clk_lookup bcm6348_clks[]
|
||||
/* fixed rate clocks */
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
@ -63,7 +63,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||
@@ -576,6 +586,8 @@ static struct clk_lookup bcm6358_clks[]
|
||||
@@ -582,6 +592,8 @@ static struct clk_lookup bcm6358_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
@ -72,7 +72,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
|
||||
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
|
||||
@@ -595,7 +607,10 @@ static struct clk_lookup bcm6362_clks[]
|
||||
@@ -601,7 +613,10 @@ static struct clk_lookup bcm6362_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
@ -83,7 +83,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
@@ -611,6 +626,8 @@ static struct clk_lookup bcm6368_clks[]
|
||||
@@ -617,6 +632,8 @@ static struct clk_lookup bcm6368_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
@ -92,7 +92,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
|
||||
/* gated clocks */
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
@@ -625,7 +642,10 @@ static struct clk_lookup bcm63268_clks[]
|
||||
@@ -631,7 +648,10 @@ static struct clk_lookup bcm63268_clks[]
|
||||
CLKDEV_INIT(NULL, "periph", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
|
||||
|
@ -24,7 +24,7 @@
|
||||
* Internal peripheral clock
|
||||
*/
|
||||
static struct clk clk_periph = {
|
||||
@@ -612,6 +629,7 @@ static struct clk_lookup bcm6362_clks[]
|
||||
@@ -618,6 +635,7 @@ static struct clk_lookup bcm6362_clks[]
|
||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||
/* gated clocks */
|
||||
@ -32,7 +32,7 @@
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||
@@ -629,6 +647,7 @@ static struct clk_lookup bcm6368_clks[]
|
||||
@@ -635,6 +653,7 @@ static struct clk_lookup bcm6368_clks[]
|
||||
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
||||
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
||||
/* gated clocks */
|
||||
@ -40,7 +40,7 @@
|
||||
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
||||
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
||||
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
||||
@@ -647,6 +666,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||
@@ -653,6 +672,7 @@ static struct clk_lookup bcm63268_clks[]
|
||||
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
||||
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
||||
/* gated clocks */
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5429,8 +5429,7 @@ static inline void skb_gro_reset_offset(
|
||||
@@ -5432,8 +5432,7 @@ static inline void skb_gro_reset_offset(
|
||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||
NAPI_GRO_CB(skb)->frag0_len = 0;
|
||||
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
kfree(sdev->inquiry);
|
||||
kfree(sdev);
|
||||
|
||||
@@ -883,6 +892,8 @@ static struct bin_attribute dev_attr_vpd
|
||||
@@ -891,6 +900,8 @@ static struct bin_attribute dev_attr_vpd
|
||||
|
||||
sdev_vpd_pg_attr(pg83);
|
||||
sdev_vpd_pg_attr(pg80);
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
|
||||
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
@@ -1215,12 +1226,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
|
||||
@@ -1223,12 +1234,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
return S_IRUGO;
|
||||
}
|
||||
|
||||
@@ -1263,8 +1280,10 @@ static struct attribute *scsi_sdev_attrs
|
||||
@@ -1271,8 +1288,10 @@ static struct attribute *scsi_sdev_attrs
|
||||
};
|
||||
|
||||
static struct bin_attribute *scsi_sdev_bin_attrs[] = {
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1159,6 +1159,10 @@ config SYNC_R4K
|
||||
@@ -1162,6 +1162,10 @@ config SYNC_R4K
|
||||
config MIPS_MACHINE
|
||||
def_bool n
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/net/sch_generic.h
|
||||
+++ b/include/net/sch_generic.h
|
||||
@@ -615,12 +615,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
|
||||
@@ -617,12 +617,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
|
||||
extern struct Qdisc_ops pfifo_fast_ops;
|
||||
extern struct Qdisc_ops mq_qdisc_ops;
|
||||
extern struct Qdisc_ops noqueue_qdisc_ops;
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3198,10 +3198,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3200,10 +3200,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -158,7 +158,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
IPC_SEM_IDS, sysvipc_sem_proc_show);
|
||||
--- a/ipc/shm.c
|
||||
+++ b/ipc/shm.c
|
||||
@@ -144,6 +144,8 @@ pure_initcall(ipc_ns_init);
|
||||
@@ -154,6 +154,8 @@ pure_initcall(ipc_ns_init);
|
||||
|
||||
void __init shm_init(void)
|
||||
{
|
||||
|
@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
selftest.o \
|
||||
--- a/drivers/dma-buf/dma-buf.c
|
||||
+++ b/drivers/dma-buf/dma-buf.c
|
||||
@@ -1313,4 +1313,5 @@ static void __exit dma_buf_deinit(void)
|
||||
@@ -1314,4 +1314,5 @@ static void __exit dma_buf_deinit(void)
|
||||
dma_buf_uninit_debugfs();
|
||||
kern_unmount(dma_buf_mnt);
|
||||
}
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -2767,6 +2767,7 @@ int wake_up_state(struct task_struct *p,
|
||||
@@ -2770,6 +2770,7 @@ int wake_up_state(struct task_struct *p,
|
||||
{
|
||||
return try_to_wake_up(p, state, 0);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2037,7 +2037,8 @@ config CPU_MIPS32
|
||||
@@ -2041,7 +2041,8 @@ config CPU_MIPS32
|
||||
|
||||
config CPU_MIPS64
|
||||
bool
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -651,7 +651,7 @@ static int ehci_run (struct usb_hcd *hcd
|
||||
@@ -660,7 +660,7 @@ static int ehci_run (struct usb_hcd *hcd
|
||||
"USB %x.%x started, EHCI %x.%02x%s\n",
|
||||
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
||||
temp >> 8, temp & 0xff,
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
/*
|
||||
--- a/drivers/usb/host/ehci-platform.c
|
||||
+++ b/drivers/usb/host/ehci-platform.c
|
||||
@@ -319,6 +319,8 @@ static int ehci_platform_probe(struct pl
|
||||
@@ -325,6 +325,8 @@ static int ehci_platform_probe(struct pl
|
||||
hcd->has_tt = 1;
|
||||
if (pdata->reset_on_resume)
|
||||
priv->reset_on_resume = true;
|
||||
@ -59,10 +59,10 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
if (ehci->big_endian_mmio) {
|
||||
--- a/drivers/usb/host/ehci.h
|
||||
+++ b/drivers/usb/host/ehci.h
|
||||
@@ -218,6 +218,7 @@ struct ehci_hcd { /* one per controlle
|
||||
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
||||
@@ -219,6 +219,7 @@ struct ehci_hcd { /* one per controlle
|
||||
unsigned need_oc_pp_cycle:1; /* MPC834X port power */
|
||||
unsigned imx28_write_fix:1; /* For Freescale i.MX28 */
|
||||
unsigned is_aspeed:1;
|
||||
+ unsigned ignore_oc:1;
|
||||
|
||||
/* required for usb32 quirk */
|
||||
|
@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
---
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1069,9 +1069,6 @@ config FW_ARC
|
||||
@@ -1072,9 +1072,6 @@ config FW_ARC
|
||||
config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
|
||||
@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
config CEVT_BCM1480
|
||||
bool
|
||||
|
||||
@@ -3044,6 +3041,18 @@ choice
|
||||
@@ -3048,6 +3045,18 @@ choice
|
||||
bool "Extend builtin kernel arguments with bootloader arguments"
|
||||
endchoice
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include "vlan.h"
|
||||
#include "vlanproc.h"
|
||||
#include <linux/if_vlan.h>
|
||||
@@ -744,6 +749,27 @@ static int vlan_dev_get_iflink(const str
|
||||
@@ -747,6 +752,27 @@ static int vlan_dev_get_iflink(const str
|
||||
return real_dev->ifindex;
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static const struct ethtool_ops vlan_ethtool_ops = {
|
||||
.get_link_ksettings = vlan_ethtool_get_link_ksettings,
|
||||
.get_drvinfo = vlan_ethtool_get_drvinfo,
|
||||
@@ -782,6 +808,9 @@ static const struct net_device_ops vlan_
|
||||
@@ -785,6 +811,9 @@ static const struct net_device_ops vlan_
|
||||
#endif
|
||||
.ndo_fix_features = vlan_dev_fix_features,
|
||||
.ndo_get_iflink = vlan_dev_get_iflink,
|
||||
|
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4434,6 +4453,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4453,6 +4472,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -4914,7 +4944,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6037,6 +6068,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6056,6 +6087,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6048,6 +6081,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6067,6 +6100,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6240,6 +6274,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6259,6 +6293,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6250,11 +6286,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6269,11 +6305,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6278,6 +6324,8 @@ out:
|
||||
@@ -6297,6 +6343,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6297,6 +6345,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6316,6 +6364,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6374,6 +6423,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6393,6 +6442,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5495,6 +5495,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -5498,6 +5498,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -7297,6 +7300,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7300,6 +7303,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7347,6 +7392,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7350,6 +7395,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7440,6 +7486,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -7443,6 +7489,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -8170,6 +8217,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -8173,6 +8220,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
static int netif_rx_internal(struct sk_buff *skb);
|
||||
static int call_netdevice_notifiers_info(unsigned long val,
|
||||
@@ -5937,6 +5938,11 @@ void __napi_schedule(struct napi_struct
|
||||
@@ -5940,6 +5941,11 @@ void __napi_schedule(struct napi_struct
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
local_irq_save(flags);
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
local_irq_restore(flags);
|
||||
@@ -5988,6 +5994,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||
@@ -5991,6 +5997,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||
*/
|
||||
void __napi_schedule_irqoff(struct napi_struct *n)
|
||||
{
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
else
|
||||
@@ -6252,9 +6263,89 @@ static void init_gro_hash(struct napi_st
|
||||
@@ -6255,9 +6266,89 @@ static void init_gro_hash(struct napi_st
|
||||
napi->gro_bitmask = 0;
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
INIT_LIST_HEAD(&napi->poll_list);
|
||||
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
|
||||
napi->timer.function = napi_watchdog;
|
||||
@@ -6271,6 +6362,7 @@ void netif_napi_add(struct net_device *d
|
||||
@@ -6274,6 +6365,7 @@ void netif_napi_add(struct net_device *d
|
||||
#ifdef CONFIG_NETPOLL
|
||||
napi->poll_owner = -1;
|
||||
#endif
|
||||
@ -217,7 +217,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
set_bit(NAPI_STATE_SCHED, &napi->state);
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
@@ -6311,6 +6403,7 @@ static void flush_gro_hash(struct napi_s
|
||||
@@ -6314,6 +6406,7 @@ static void flush_gro_hash(struct napi_s
|
||||
void netif_napi_del(struct napi_struct *napi)
|
||||
{
|
||||
might_sleep();
|
||||
@ -225,7 +225,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (napi_hash_del(napi))
|
||||
synchronize_net();
|
||||
list_del_init(&napi->dev_list);
|
||||
@@ -6323,50 +6416,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
||||
@@ -6326,50 +6419,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
||||
|
||||
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||
{
|
||||
@ -280,7 +280,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/* Some drivers may have called napi_schedule
|
||||
* prior to exhausting their budget.
|
||||
@@ -10346,6 +10407,10 @@ static int __init net_dev_init(void)
|
||||
@@ -10349,6 +10410,10 @@ static int __init net_dev_init(void)
|
||||
sd->backlog.weight = weight_p;
|
||||
}
|
||||
|
||||
@ -293,7 +293,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* The loopback device is special if any other network devices
|
||||
--- a/net/core/net-sysfs.c
|
||||
+++ b/net/core/net-sysfs.c
|
||||
@@ -442,6 +442,52 @@ static ssize_t proto_down_store(struct d
|
||||
@@ -470,6 +470,52 @@ static ssize_t proto_down_store(struct d
|
||||
}
|
||||
NETDEVICE_SHOW_RW(proto_down, fmt_dec);
|
||||
|
||||
@ -346,7 +346,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static ssize_t phys_port_id_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@@ -532,6 +578,7 @@ static struct attribute *net_class_attrs
|
||||
@@ -581,6 +627,7 @@ static struct attribute *net_class_attrs
|
||||
&dev_attr_flags.attr,
|
||||
&dev_attr_tx_queue_len.attr,
|
||||
&dev_attr_gro_flush_timeout.attr,
|
||||
|
@ -13,9 +13,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
@@ -67,7 +67,7 @@ KBUILD_CFLAGS += $(call cc-option,-fno-i
|
||||
# macro, but instead defines a whole series of macros which makes
|
||||
# testing for a specific architecture or later rather impossible.
|
||||
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
|
||||
-arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
|
||||
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
|
||||
-arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
|
||||
+arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -mcpu=cortex-a15
|
||||
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
|
||||
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6
|
||||
# Only override the compiler option if ARMv6. The ARMv6K extensions are
|
||||
# always available in ARMv7
|
||||
|
@ -5480,7 +5480,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
(transaction layer end-to-end CRC checking).
|
||||
--- a/include/linux/pci.h
|
||||
+++ b/include/linux/pci.h
|
||||
@@ -1390,6 +1390,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
||||
@@ -1392,6 +1392,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
||||
void *userdata);
|
||||
int pci_cfg_space_size(struct pci_dev *dev);
|
||||
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2379,6 +2379,12 @@ config MIPS_VPE_LOADER
|
||||
@@ -2383,6 +2383,12 @@ config MIPS_VPE_LOADER
|
||||
Includes a loader for loading an elf relocatable object
|
||||
onto another VPE and running it.
|
||||
|
||||
|
@ -13,7 +13,7 @@ Reviewed-by: Stuart Yoder <stuart.yoder@freescale.com>
|
||||
|
||||
--- a/arch/arm64/include/asm/pgtable.h
|
||||
+++ b/arch/arm64/include/asm/pgtable.h
|
||||
@@ -422,6 +422,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
|
||||
@@ -428,6 +428,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN)
|
||||
#define pgprot_writecombine(prot) \
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
|
||||
|
@ -11,7 +11,7 @@ Signed-off-by: Haiying Wang <Haiying.wang@freescale.com>
|
||||
|
||||
--- a/arch/arm64/include/asm/pgtable.h
|
||||
+++ b/arch/arm64/include/asm/pgtable.h
|
||||
@@ -425,6 +425,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
|
||||
@@ -431,6 +431,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
|
||||
#define pgprot_cached(prot) \
|
||||
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL) | \
|
||||
PTE_PXN | PTE_UXN)
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
big-endian;
|
||||
};
|
||||
|
||||
@@ -371,7 +372,7 @@
|
||||
@@ -338,7 +339,7 @@
|
||||
};
|
||||
|
||||
i2c0: i2c@2180000 {
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x0 0x2180000 0x0 0x10000>;
|
||||
@@ -380,11 +381,12 @@
|
||||
@@ -347,11 +348,12 @@
|
||||
clocks = <&clockgen 4 1>;
|
||||
dma-names = "tx", "rx";
|
||||
dmas = <&edma0 1 39>, <&edma0 1 38>;
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x0 0x2190000 0x0 0x10000>;
|
||||
@@ -393,6 +395,7 @@
|
||||
@@ -360,6 +362,7 @@
|
||||
clocks = <&clockgen 4 1>;
|
||||
dma-names = "tx", "rx";
|
||||
dmas = <&edma0 1 37>, <&edma0 1 36>;
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -579,6 +582,16 @@
|
||||
@@ -546,6 +549,16 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
pwm1: pwm@29e0000 {
|
||||
compatible = "fsl,vf610-ftm-pwm";
|
||||
#pwm-cells = <3>;
|
||||
@@ -861,6 +874,8 @@
|
||||
@@ -828,6 +841,8 @@
|
||||
dr_mode = "host";
|
||||
snps,quirk-frame-length-adjustment = <0x20>;
|
||||
snps,dis_rxdet_inp3_quirk;
|
||||
@ -132,7 +132,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
|
||||
};
|
||||
|
||||
@@ -869,7 +884,9 @@
|
||||
@@ -836,7 +851,9 @@
|
||||
reg = <0x00 0x03400000 0x0 0x00010000 /* controller registers */
|
||||
0x40 0x00000000 0x0 0x00002000>; /* configuration space */
|
||||
reg-names = "regs", "config";
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
fsl,pcie-scfg = <&scfg 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
@@ -893,7 +910,9 @@
|
||||
@@ -860,7 +877,9 @@
|
||||
reg = <0x00 0x03500000 0x0 0x00010000 /* controller registers */
|
||||
0x48 0x00000000 0x0 0x00002000>; /* configuration space */
|
||||
reg-names = "regs", "config";
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/ls1021a.dtsi
|
||||
+++ b/arch/arm/boot/dts/ls1021a.dtsi
|
||||
@@ -877,6 +877,7 @@
|
||||
@@ -844,6 +844,7 @@
|
||||
usb3-lpm-capable;
|
||||
snps,dis-u1u2-when-u3-quirk;
|
||||
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
};
|
||||
|
||||
cpus {
|
||||
@@ -582,16 +583,6 @@
|
||||
@@ -549,16 +550,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
pwm1: pwm@29e0000 {
|
||||
compatible = "fsl,vf610-ftm-pwm";
|
||||
#pwm-cells = <3>;
|
||||
@@ -1003,5 +994,18 @@
|
||||
@@ -970,6 +961,19 @@
|
||||
big-endian;
|
||||
};
|
||||
|
||||
@ -59,4 +59,5 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
+ big-endian;
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/ls1021a.dtsi
|
||||
+++ b/arch/arm/boot/dts/ls1021a.dtsi
|
||||
@@ -998,6 +998,12 @@
|
||||
@@ -965,6 +965,12 @@
|
||||
compatible = "fsl,ls1021a-rcpm", "fsl,qoriq-rcpm-2.1+";
|
||||
reg = <0x0 0x1ee2140 0x0 0x8>;
|
||||
#fsl,rcpm-wakeup-cells = <2>;
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Alison Wang <alison.wang@nxp.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/ls1021a.dtsi
|
||||
+++ b/arch/arm/boot/dts/ls1021a.dtsi
|
||||
@@ -682,8 +682,9 @@
|
||||
@@ -649,8 +649,9 @@
|
||||
reg = <0x0 0x2b50000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clockgen 4 1>, <&clockgen 4 1>,
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Alison Wang <alison.wang@nxp.com>
|
||||
dma-names = "tx", "rx";
|
||||
dmas = <&edma0 1 47>,
|
||||
<&edma0 1 46>;
|
||||
@@ -696,8 +697,9 @@
|
||||
@@ -663,8 +664,9 @@
|
||||
reg = <0x0 0x2b60000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clockgen 4 1>, <&clockgen 4 1>,
|
||||
|
@ -87,7 +87,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3873,6 +3889,7 @@ static int cgroup_add_file(struct cgroup
|
||||
@@ -3896,6 +3912,7 @@ static int cgroup_add_file(struct cgroup
|
||||
{
|
||||
char name[CGROUP_FILE_NAME_MAX];
|
||||
struct kernfs_node *kn;
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
struct lock_class_key *key = NULL;
|
||||
int ret;
|
||||
|
||||
@@ -3903,6 +3920,14 @@ static int cgroup_add_file(struct cgroup
|
||||
@@ -3926,6 +3943,14 @@ static int cgroup_add_file(struct cgroup
|
||||
spin_unlock_irq(&cgroup_file_kn_lock);
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3889,7 +3873,6 @@ static int cgroup_add_file(struct cgroup
|
||||
@@ -3912,7 +3896,6 @@ static int cgroup_add_file(struct cgroup
|
||||
{
|
||||
char name[CGROUP_FILE_NAME_MAX];
|
||||
struct kernfs_node *kn;
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
||||
struct lock_class_key *key = NULL;
|
||||
int ret;
|
||||
|
||||
@@ -3920,14 +3903,6 @@ static int cgroup_add_file(struct cgroup
|
||||
@@ -3943,14 +3926,6 @@ static int cgroup_add_file(struct cgroup
|
||||
spin_unlock_irq(&cgroup_file_kn_lock);
|
||||
}
|
||||
|
||||
|
@ -226,7 +226,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1306,6 +1331,7 @@ static int ocelot_port_attr_set(struct n
|
||||
@@ -1303,6 +1328,7 @@ static int ocelot_port_attr_set(struct n
|
||||
struct switchdev_trans *trans)
|
||||
{
|
||||
struct ocelot_port *ocelot_port = netdev_priv(dev);
|
||||
@ -234,7 +234,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int err = 0;
|
||||
|
||||
switch (attr->id) {
|
||||
@@ -1317,8 +1343,8 @@ static int ocelot_port_attr_set(struct n
|
||||
@@ -1314,8 +1340,8 @@ static int ocelot_port_attr_set(struct n
|
||||
ocelot_port_attr_ageing_set(ocelot_port, attr->u.ageing_time);
|
||||
break;
|
||||
case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING:
|
||||
@ -245,7 +245,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
break;
|
||||
case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED:
|
||||
ocelot_port_attr_mc_set(ocelot_port, !attr->u.mc_disabled);
|
||||
@@ -1520,20 +1546,20 @@ static int ocelot_port_bridge_join(struc
|
||||
@@ -1517,20 +1543,20 @@ static int ocelot_port_bridge_join(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -273,7 +273,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static void ocelot_set_aggr_pgids(struct ocelot *ocelot)
|
||||
@@ -1687,11 +1713,8 @@ static int ocelot_netdevice_port_event(s
|
||||
@@ -1684,11 +1710,8 @@ static int ocelot_netdevice_port_event(s
|
||||
err = ocelot_port_bridge_join(ocelot_port,
|
||||
info->upper_dev);
|
||||
else
|
||||
@ -287,7 +287,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
if (netif_is_lag_master(info->upper_dev)) {
|
||||
if (info->linking)
|
||||
@@ -2009,6 +2032,7 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2006,6 +2029,7 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
{
|
||||
struct ocelot_port *ocelot_port;
|
||||
struct net_device *dev;
|
||||
@ -295,7 +295,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int err;
|
||||
|
||||
dev = alloc_etherdev(sizeof(struct ocelot_port));
|
||||
@@ -2044,7 +2068,15 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2041,7 +2065,15 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
}
|
||||
|
||||
/* Basic L2 initialization */
|
||||
|
@ -236,7 +236,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1129,9 +1161,9 @@ static const struct net_device_ops ocelo
|
||||
@@ -1123,9 +1155,9 @@ static const struct net_device_ops ocelo
|
||||
.ndo_get_phys_port_name = ocelot_port_get_phys_port_name,
|
||||
.ndo_set_mac_address = ocelot_port_set_mac_address,
|
||||
.ndo_get_stats64 = ocelot_get_stats64,
|
||||
|
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
break;
|
||||
default:
|
||||
return -ERANGE;
|
||||
@@ -1136,8 +1136,9 @@ static int ocelot_hwstamp_set(struct oce
|
||||
@@ -1130,8 +1130,9 @@ static int ocelot_hwstamp_set(struct oce
|
||||
|
||||
static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* The function is only used for PTP operations for now */
|
||||
if (!ocelot->ptp)
|
||||
@@ -1145,9 +1146,9 @@ static int ocelot_ioctl(struct net_devic
|
||||
@@ -1139,9 +1140,9 @@ static int ocelot_ioctl(struct net_devic
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSHWTSTAMP:
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -1285,26 +1285,20 @@ static const struct ethtool_ops ocelot_e
|
||||
@@ -1282,26 +1282,20 @@ static const struct ethtool_ops ocelot_e
|
||||
.get_ts_info = ocelot_get_ts_info,
|
||||
};
|
||||
|
||||
@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Fallthrough */
|
||||
case BR_STATE_LEARNING:
|
||||
port_cfg |= ANA_PORT_PORT_CFG_LEARN_ENA;
|
||||
@@ -1312,19 +1306,18 @@ static int ocelot_port_attr_stp_state_se
|
||||
@@ -1309,19 +1303,18 @@ static int ocelot_port_attr_stp_state_se
|
||||
|
||||
default:
|
||||
port_cfg &= ~ANA_PORT_PORT_CFG_LEARN_ENA;
|
||||
@ -78,7 +78,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
for (i = 0; i < ocelot->num_phys_ports; i++) {
|
||||
unsigned long bond_mask = ocelot->lags[i];
|
||||
@@ -1332,7 +1325,7 @@ static int ocelot_port_attr_stp_state_se
|
||||
@@ -1329,7 +1322,7 @@ static int ocelot_port_attr_stp_state_se
|
||||
if (!bond_mask)
|
||||
continue;
|
||||
|
||||
@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mask &= ~bond_mask;
|
||||
break;
|
||||
}
|
||||
@@ -1340,47 +1333,55 @@ static int ocelot_port_attr_stp_state_se
|
||||
@@ -1337,47 +1330,55 @@ static int ocelot_port_attr_stp_state_se
|
||||
|
||||
ocelot_write_rix(ocelot,
|
||||
BIT(ocelot->num_phys_ports) | mask,
|
||||
@ -162,7 +162,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static int ocelot_port_attr_set(struct net_device *dev,
|
||||
@@ -1389,22 +1390,23 @@ static int ocelot_port_attr_set(struct n
|
||||
@@ -1386,22 +1387,23 @@ static int ocelot_port_attr_set(struct n
|
||||
{
|
||||
struct ocelot_port *ocelot_port = netdev_priv(dev);
|
||||
struct ocelot *ocelot = ocelot_port->ocelot;
|
||||
|
@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1586,11 +1586,9 @@ static int ocelot_port_obj_del(struct ne
|
||||
@@ -1583,11 +1583,9 @@ static int ocelot_port_obj_del(struct ne
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (!ocelot->bridge_mask) {
|
||||
ocelot->hw_bridge_dev = bridge;
|
||||
} else {
|
||||
@@ -1600,17 +1598,14 @@ static int ocelot_port_bridge_join(struc
|
||||
@@ -1597,17 +1595,14 @@ static int ocelot_port_bridge_join(struc
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
ocelot->bridge_mask &= ~BIT(port);
|
||||
|
||||
if (!ocelot->bridge_mask)
|
||||
@@ -1679,14 +1674,12 @@ static void ocelot_setup_lag(struct ocel
|
||||
@@ -1676,14 +1671,12 @@ static void ocelot_setup_lag(struct ocel
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
rcu_read_lock();
|
||||
for_each_netdev_in_bond_rcu(bond, ndev) {
|
||||
@@ -1701,17 +1694,17 @@ static int ocelot_port_lag_join(struct o
|
||||
@@ -1698,17 +1691,17 @@ static int ocelot_port_lag_join(struct o
|
||||
/* If the new port is the lowest one, use it as the logical port from
|
||||
* now on
|
||||
*/
|
||||
@ -156,7 +156,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
ocelot_setup_lag(ocelot, lag);
|
||||
@@ -1720,34 +1713,32 @@ static int ocelot_port_lag_join(struct o
|
||||
@@ -1717,34 +1710,32 @@ static int ocelot_port_lag_join(struct o
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -200,7 +200,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
ocelot_set_aggr_pgids(ocelot);
|
||||
}
|
||||
@@ -1763,24 +1754,26 @@ static int ocelot_netdevice_port_event(s
|
||||
@@ -1760,24 +1751,26 @@ static int ocelot_netdevice_port_event(s
|
||||
struct netdev_notifier_changeupper_info *info)
|
||||
{
|
||||
struct ocelot_port *ocelot_port = netdev_priv(dev);
|
||||
@ -231,7 +231,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
info->upper_dev);
|
||||
}
|
||||
break;
|
||||
@@ -2138,7 +2131,7 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2135,7 +2128,7 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
REW_PORT_VLAN_CFG, port);
|
||||
|
||||
/* Enable vcap lookups */
|
||||
|
@ -518,7 +518,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
ppid->id_len = sizeof(ocelot->base_mac);
|
||||
memcpy(&ppid->id, &ocelot->base_mac, ppid->id_len);
|
||||
@@ -1136,9 +1154,9 @@ static int ocelot_hwstamp_set(struct oce
|
||||
@@ -1130,9 +1148,9 @@ static int ocelot_hwstamp_set(struct oce
|
||||
|
||||
static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
@ -531,7 +531,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* The function is only used for PTP operations for now */
|
||||
if (!ocelot->ptp)
|
||||
@@ -1175,8 +1193,8 @@ static const struct net_device_ops ocelo
|
||||
@@ -1169,8 +1187,8 @@ static const struct net_device_ops ocelo
|
||||
|
||||
static void ocelot_get_strings(struct net_device *netdev, u32 sset, u8 *data)
|
||||
{
|
||||
@ -542,7 +542,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int i;
|
||||
|
||||
if (sset != ETH_SS_STATS)
|
||||
@@ -1230,8 +1248,9 @@ static void ocelot_check_stats_work(stru
|
||||
@@ -1224,8 +1242,9 @@ static void ocelot_check_stats_work(stru
|
||||
static void ocelot_get_ethtool_stats(struct net_device *dev,
|
||||
struct ethtool_stats *stats, u64 *data)
|
||||
{
|
||||
@ -554,7 +554,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int i;
|
||||
|
||||
/* check and update now */
|
||||
@@ -1239,13 +1258,13 @@ static void ocelot_get_ethtool_stats(str
|
||||
@@ -1233,13 +1252,13 @@ static void ocelot_get_ethtool_stats(str
|
||||
|
||||
/* Copy all counters */
|
||||
for (i = 0; i < ocelot->num_stats; i++)
|
||||
@ -571,7 +571,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if (sset != ETH_SS_STATS)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -1255,8 +1274,8 @@ static int ocelot_get_sset_count(struct
|
||||
@@ -1249,8 +1268,8 @@ static int ocelot_get_sset_count(struct
|
||||
static int ocelot_get_ts_info(struct net_device *dev,
|
||||
struct ethtool_ts_info *info)
|
||||
{
|
||||
@ -582,7 +582,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if (!ocelot->ptp)
|
||||
return ethtool_op_get_ts_info(dev, info);
|
||||
@@ -1388,9 +1407,9 @@ static int ocelot_port_attr_set(struct n
|
||||
@@ -1385,9 +1404,9 @@ static int ocelot_port_attr_set(struct n
|
||||
const struct switchdev_attr *attr,
|
||||
struct switchdev_trans *trans)
|
||||
{
|
||||
@ -595,7 +595,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int err = 0;
|
||||
|
||||
switch (attr->id) {
|
||||
@@ -1402,8 +1421,8 @@ static int ocelot_port_attr_set(struct n
|
||||
@@ -1399,8 +1418,8 @@ static int ocelot_port_attr_set(struct n
|
||||
ocelot_port_attr_ageing_set(ocelot, port, attr->u.ageing_time);
|
||||
break;
|
||||
case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING:
|
||||
@ -606,7 +606,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
break;
|
||||
case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED:
|
||||
ocelot_port_attr_mc_set(ocelot, port, !attr->u.mc_disabled);
|
||||
@@ -1468,15 +1487,17 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
@@ -1465,15 +1484,17 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
const struct switchdev_obj_port_mdb *mdb,
|
||||
struct switchdev_trans *trans)
|
||||
{
|
||||
@ -628,7 +628,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mc = ocelot_multicast_get(ocelot, mdb->addr, vid);
|
||||
if (!mc) {
|
||||
@@ -1500,7 +1521,7 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
@@ -1497,7 +1518,7 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
ocelot_mact_forget(ocelot, addr, vid);
|
||||
}
|
||||
|
||||
@ -637,7 +637,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
addr[2] = mc->ports << 0;
|
||||
addr[1] = mc->ports << 8;
|
||||
|
||||
@@ -1510,14 +1531,16 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
@@ -1507,14 +1528,16 @@ static int ocelot_port_obj_add_mdb(struc
|
||||
static int ocelot_port_obj_del_mdb(struct net_device *dev,
|
||||
const struct switchdev_obj_port_mdb *mdb)
|
||||
{
|
||||
@ -658,7 +658,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mc = ocelot_multicast_get(ocelot, mdb->addr, vid);
|
||||
if (!mc)
|
||||
@@ -1529,7 +1552,7 @@ static int ocelot_port_obj_del_mdb(struc
|
||||
@@ -1526,7 +1549,7 @@ static int ocelot_port_obj_del_mdb(struc
|
||||
addr[0] = 0;
|
||||
ocelot_mact_forget(ocelot, addr, vid);
|
||||
|
||||
@ -667,7 +667,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (!mc->ports) {
|
||||
list_del(&mc->list);
|
||||
devm_kfree(ocelot->dev, mc);
|
||||
@@ -1683,9 +1706,9 @@ static int ocelot_port_lag_join(struct o
|
||||
@@ -1680,9 +1703,9 @@ static int ocelot_port_lag_join(struct o
|
||||
|
||||
rcu_read_lock();
|
||||
for_each_netdev_in_bond_rcu(bond, ndev) {
|
||||
@ -679,7 +679,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
@@ -1753,20 +1776,23 @@ static int ocelot_netdevice_port_event(s
|
||||
@@ -1750,20 +1773,23 @@ static int ocelot_netdevice_port_event(s
|
||||
unsigned long event,
|
||||
struct netdev_notifier_changeupper_info *info)
|
||||
{
|
||||
@ -707,7 +707,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
if (netif_is_lag_master(info->upper_dev)) {
|
||||
if (info->linking)
|
||||
@@ -2082,21 +2108,23 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2079,21 +2105,23 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
void __iomem *regs,
|
||||
struct phy_device *phy)
|
||||
{
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -1191,10 +1191,9 @@ static const struct net_device_ops ocelo
|
||||
@@ -1185,10 +1185,9 @@ static const struct net_device_ops ocelo
|
||||
.ndo_do_ioctl = ocelot_ioctl,
|
||||
};
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int i;
|
||||
|
||||
if (sset != ETH_SS_STATS)
|
||||
@@ -1205,6 +1204,16 @@ static void ocelot_get_strings(struct ne
|
||||
@@ -1199,6 +1198,16 @@ static void ocelot_get_strings(struct ne
|
||||
ETH_GSTRING_LEN);
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void ocelot_update_stats(struct ocelot *ocelot)
|
||||
{
|
||||
int i, j;
|
||||
@@ -1245,12 +1254,8 @@ static void ocelot_check_stats_work(stru
|
||||
@@ -1239,12 +1248,8 @@ static void ocelot_check_stats_work(stru
|
||||
OCELOT_STATS_CHECK_DELAY);
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int i;
|
||||
|
||||
/* check and update now */
|
||||
@@ -1261,25 +1266,37 @@ static void ocelot_get_ethtool_stats(str
|
||||
@@ -1255,25 +1260,37 @@ static void ocelot_get_ethtool_stats(str
|
||||
*data++ = ocelot->stats[port * ocelot->num_stats + i];
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
info->phc_index = ocelot->ptp_clock ?
|
||||
ptp_clock_index(ocelot->ptp_clock) : -1;
|
||||
info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE |
|
||||
@@ -1295,13 +1312,26 @@ static int ocelot_get_ts_info(struct net
|
||||
@@ -1292,13 +1309,26 @@ static int ocelot_get_ts_info(struct net
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2135,6 +2135,28 @@ static int ocelot_init_timestamp(struct
|
||||
@@ -2132,6 +2132,28 @@ static int ocelot_init_timestamp(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int ocelot_probe_port(struct ocelot *ocelot, u8 port,
|
||||
void __iomem *regs,
|
||||
struct phy_device *phy)
|
||||
@@ -2142,7 +2164,6 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2139,7 +2161,6 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
struct ocelot_port_private *priv;
|
||||
struct ocelot_port *ocelot_port;
|
||||
struct net_device *dev;
|
||||
@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int err;
|
||||
|
||||
dev = alloc_etherdev(sizeof(struct ocelot_port_private));
|
||||
@@ -2170,32 +2191,14 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2167,32 +2188,14 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr, ocelot_port->pvid,
|
||||
ENTRYTYPE_LOCKED);
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2245,6 +2245,7 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2242,6 +2242,7 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
if (!ocelot->stats_queue)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Set vlan ingress filter mask to all ports but the CPU port by
|
||||
* default.
|
||||
*/
|
||||
@@ -2226,11 +2220,52 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
@@ -2223,11 +2217,52 @@ int ocelot_probe_port(struct ocelot *oce
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_probe_port);
|
||||
|
||||
@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
ocelot->lags = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports,
|
||||
sizeof(u32), GFP_KERNEL);
|
||||
@@ -2310,13 +2345,6 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2307,13 +2342,6 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_SRC + port);
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Allow broadcast MAC frames. */
|
||||
for (i = ocelot->num_phys_ports + 1; i < PGID_CPU; i++) {
|
||||
u32 val = ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports - 1, 0));
|
||||
@@ -2329,13 +2357,6 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2326,13 +2354,6 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4);
|
||||
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6);
|
||||
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -1383,7 +1383,7 @@ static void ocelot_bridge_stp_state_set(
|
||||
@@ -1380,7 +1380,7 @@ static void ocelot_bridge_stp_state_set(
|
||||
* a source for the other ports.
|
||||
*/
|
||||
for (p = 0; p < ocelot->num_phys_ports; p++) {
|
||||
@ -39,7 +39,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
unsigned long mask = ocelot->bridge_fwd_mask & ~BIT(p);
|
||||
|
||||
for (i = 0; i < ocelot->num_phys_ports; i++) {
|
||||
@@ -1398,15 +1398,18 @@ static void ocelot_bridge_stp_state_set(
|
||||
@@ -1395,15 +1395,18 @@ static void ocelot_bridge_stp_state_set(
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static void ocelot_port_adjust_link(struct net_device *dev)
|
||||
@@ -2143,11 +2102,53 @@ static int ocelot_init_timestamp(struct
|
||||
@@ -2140,11 +2099,53 @@ static int ocelot_init_timestamp(struct
|
||||
static void ocelot_init_port(struct ocelot *ocelot, int port)
|
||||
{
|
||||
struct ocelot_port *ocelot_port = ocelot->ports[port];
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2099,11 +2099,32 @@ static int ocelot_init_timestamp(struct
|
||||
@@ -2096,11 +2096,32 @@ static int ocelot_init_timestamp(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
INIT_LIST_HEAD(&ocelot_port->skbs);
|
||||
|
||||
/* Basic L2 initialization */
|
||||
@@ -2124,8 +2145,7 @@ static void ocelot_init_port(struct ocel
|
||||
@@ -2121,8 +2142,7 @@ static void ocelot_init_port(struct ocel
|
||||
DEV_MAC_HDX_CFG);
|
||||
|
||||
/* Set Max Length and maximum tags allowed */
|
||||
@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
ocelot_port_writel(ocelot_port, DEV_MAC_TAGS_CFG_TAG_ID(ETH_P_8021AD) |
|
||||
DEV_MAC_TAGS_CFG_VLAN_AWR_ENA |
|
||||
DEV_MAC_TAGS_CFG_VLAN_LEN_AWR_ENA,
|
||||
@@ -2135,20 +2155,6 @@ static void ocelot_init_port(struct ocel
|
||||
@@ -2132,20 +2152,6 @@ static void ocelot_init_port(struct ocel
|
||||
ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_HIGH_CFG);
|
||||
ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_LOW_CFG);
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2232,9 +2232,18 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
@@ -2229,9 +2229,18 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
* Only one port can be an NPI at the same time.
|
||||
*/
|
||||
if (cpu < ocelot->num_phys_ports) {
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2271,6 +2271,14 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2268,6 +2268,14 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
int i, ret;
|
||||
u32 port;
|
||||
|
||||
|
@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static int ocelot_port_fdb_dump(struct sk_buff *skb,
|
||||
struct netlink_callback *cb,
|
||||
@@ -1153,8 +1160,7 @@ static const struct net_device_ops ocelo
|
||||
@@ -1147,8 +1154,7 @@ static const struct net_device_ops ocelo
|
||||
.ndo_do_ioctl = ocelot_ioctl,
|
||||
};
|
||||
|
||||
@ -205,7 +205,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -1165,6 +1171,7 @@ static void ocelot_get_strings(struct oc
|
||||
@@ -1159,6 +1165,7 @@ static void ocelot_get_strings(struct oc
|
||||
memcpy(data + i * ETH_GSTRING_LEN, ocelot->stats_layout[i].name,
|
||||
ETH_GSTRING_LEN);
|
||||
}
|
||||
@ -213,7 +213,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static void ocelot_port_get_strings(struct net_device *netdev, u32 sset,
|
||||
u8 *data)
|
||||
@@ -1216,7 +1223,7 @@ static void ocelot_check_stats_work(stru
|
||||
@@ -1210,7 +1217,7 @@ static void ocelot_check_stats_work(stru
|
||||
OCELOT_STATS_CHECK_DELAY);
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -1227,6 +1234,7 @@ static void ocelot_get_ethtool_stats(str
|
||||
@@ -1221,6 +1228,7 @@ static void ocelot_get_ethtool_stats(str
|
||||
for (i = 0; i < ocelot->num_stats; i++)
|
||||
*data++ = ocelot->stats[port * ocelot->num_stats + i];
|
||||
}
|
||||
@ -230,7 +230,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static void ocelot_port_get_ethtool_stats(struct net_device *dev,
|
||||
struct ethtool_stats *stats,
|
||||
@@ -1239,13 +1247,14 @@ static void ocelot_port_get_ethtool_stat
|
||||
@@ -1233,13 +1241,14 @@ static void ocelot_port_get_ethtool_stat
|
||||
ocelot_get_ethtool_stats(ocelot, port, data);
|
||||
}
|
||||
|
||||
@ -246,7 +246,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static int ocelot_port_get_sset_count(struct net_device *dev, int sset)
|
||||
{
|
||||
@@ -1256,8 +1265,8 @@ static int ocelot_port_get_sset_count(st
|
||||
@@ -1250,8 +1259,8 @@ static int ocelot_port_get_sset_count(st
|
||||
return ocelot_get_sset_count(ocelot, port, sset);
|
||||
}
|
||||
|
||||
@ -257,7 +257,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
info->phc_index = ocelot->ptp_clock ?
|
||||
ptp_clock_index(ocelot->ptp_clock) : -1;
|
||||
@@ -1273,6 +1282,7 @@ static int ocelot_get_ts_info(struct oce
|
||||
@@ -1270,6 +1279,7 @@ static int ocelot_get_ts_info(struct oce
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -265,7 +265,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static int ocelot_port_get_ts_info(struct net_device *dev,
|
||||
struct ethtool_ts_info *info)
|
||||
@@ -1296,8 +1306,7 @@ static const struct ethtool_ops ocelot_e
|
||||
@@ -1293,8 +1303,7 @@ static const struct ethtool_ops ocelot_e
|
||||
.get_ts_info = ocelot_port_get_ts_info,
|
||||
};
|
||||
|
||||
@ -275,7 +275,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
u32 port_cfg;
|
||||
int p, i;
|
||||
@@ -1358,6 +1367,7 @@ static void ocelot_bridge_stp_state_set(
|
||||
@@ -1355,6 +1364,7 @@ static void ocelot_bridge_stp_state_set(
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -283,7 +283,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static void ocelot_port_attr_stp_state_set(struct ocelot *ocelot, int port,
|
||||
struct switchdev_trans *trans,
|
||||
@@ -1369,11 +1379,12 @@ static void ocelot_port_attr_stp_state_s
|
||||
@@ -1366,11 +1376,12 @@ static void ocelot_port_attr_stp_state_s
|
||||
ocelot_bridge_stp_state_set(ocelot, port, state);
|
||||
}
|
||||
|
||||
@ -297,7 +297,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static void ocelot_port_attr_ageing_set(struct ocelot *ocelot, int port,
|
||||
unsigned long ageing_clock_t)
|
||||
@@ -1604,8 +1615,8 @@ static int ocelot_port_obj_del(struct ne
|
||||
@@ -1601,8 +1612,8 @@ static int ocelot_port_obj_del(struct ne
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -308,7 +308,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
if (!ocelot->bridge_mask) {
|
||||
ocelot->hw_bridge_dev = bridge;
|
||||
@@ -1620,9 +1631,10 @@ static int ocelot_port_bridge_join(struc
|
||||
@@ -1617,9 +1628,10 @@ static int ocelot_port_bridge_join(struc
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -321,7 +321,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
ocelot->bridge_mask &= ~BIT(port);
|
||||
|
||||
@@ -1633,6 +1645,7 @@ static int ocelot_port_bridge_leave(stru
|
||||
@@ -1630,6 +1642,7 @@ static int ocelot_port_bridge_leave(stru
|
||||
ocelot_port_set_pvid(ocelot, port, 0);
|
||||
return ocelot_port_set_native_vlan(ocelot, port, 0);
|
||||
}
|
||||
@ -329,7 +329,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
static void ocelot_set_aggr_pgids(struct ocelot *ocelot)
|
||||
{
|
||||
@@ -2121,7 +2134,7 @@ static void ocelot_port_set_mtu(struct o
|
||||
@@ -2118,7 +2131,7 @@ static void ocelot_port_set_mtu(struct o
|
||||
ocelot_write(ocelot, ocelot_wm_enc(atop_wm), SYS_ATOP_TOT_CFG);
|
||||
}
|
||||
|
||||
@ -338,7 +338,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
struct ocelot_port *ocelot_port = ocelot->ports[port];
|
||||
|
||||
@@ -2168,6 +2181,7 @@ static void ocelot_init_port(struct ocel
|
||||
@@ -2165,6 +2178,7 @@ static void ocelot_init_port(struct ocel
|
||||
/* Enable vcap lookups */
|
||||
ocelot_vcap_enable(ocelot, port);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
struct ocelot_port *ocelot_port = ocelot->ports[port];
|
||||
struct hwtstamp_config cfg;
|
||||
@@ -1120,6 +1119,7 @@ static int ocelot_hwstamp_set(struct oce
|
||||
@@ -1114,6 +1113,7 @@ static int ocelot_hwstamp_set(struct oce
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0;
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_get_txtstamp);
|
||||
@@ -2208,7 +2199,7 @@ void ocelot_init_port(struct ocelot *oce
|
||||
@@ -2205,7 +2196,7 @@ void ocelot_init_port(struct ocelot *oce
|
||||
{
|
||||
struct ocelot_port *ocelot_port = ocelot->ports[port];
|
||||
|
||||
@ -105,7 +105,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Basic L2 initialization */
|
||||
|
||||
@@ -2493,9 +2484,7 @@ EXPORT_SYMBOL(ocelot_init);
|
||||
@@ -2490,9 +2481,7 @@ EXPORT_SYMBOL(ocelot_init);
|
||||
|
||||
void ocelot_deinit(struct ocelot *ocelot)
|
||||
{
|
||||
@ -115,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int i;
|
||||
|
||||
cancel_delayed_work(&ocelot->stats_work);
|
||||
@@ -2507,14 +2496,7 @@ void ocelot_deinit(struct ocelot *ocelot
|
||||
@@ -2504,14 +2493,7 @@ void ocelot_deinit(struct ocelot *ocelot
|
||||
|
||||
for (i = 0; i < ocelot->num_phys_ports; i++) {
|
||||
port = ocelot->ports[i];
|
||||
|
@ -41,7 +41,7 @@ Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
|
||||
ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i);
|
||||
|
||||
__dev_mc_sync(dev, ocelot_mc_sync, ocelot_mc_unsync);
|
||||
@@ -2410,10 +2410,11 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2407,10 +2407,11 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
SYS_FRM_AGING_MAX_AGE(307692), SYS_FRM_AGING);
|
||||
|
||||
/* Setup flooding PGIDs */
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2340,6 +2340,20 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
@@ -2337,6 +2337,20 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_set_cpu_port);
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
int ocelot_init(struct ocelot *ocelot)
|
||||
{
|
||||
char queue_name[32];
|
||||
@@ -2477,6 +2491,13 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
@@ -2474,6 +2488,13 @@ int ocelot_init(struct ocelot *ocelot)
|
||||
"Timestamp initialization failed\n");
|
||||
return ret;
|
||||
}
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -2491,6 +2512,8 @@ void ocelot_deinit(struct ocelot *ocelot
|
||||
@@ -2488,6 +2509,8 @@ void ocelot_deinit(struct ocelot *ocelot
|
||||
cancel_delayed_work(&ocelot->stats_work);
|
||||
destroy_workqueue(ocelot->stats_queue);
|
||||
mutex_destroy(&ocelot->stats_lock);
|
||||
|
@ -128,7 +128,7 @@ Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -2294,6 +2294,18 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
@@ -2291,6 +2291,18 @@ void ocelot_set_cpu_port(struct ocelot *
|
||||
enum ocelot_tag_prefix injection,
|
||||
enum ocelot_tag_prefix extraction)
|
||||
{
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
|
||||
--- a/drivers/net/ethernet/mscc/ocelot.c
|
||||
+++ b/drivers/net/ethernet/mscc/ocelot.c
|
||||
@@ -1680,6 +1680,8 @@ static int ocelot_port_obj_del(struct ne
|
||||
@@ -1677,6 +1677,8 @@ static int ocelot_port_obj_del(struct ne
|
||||
int ocelot_port_bridge_join(struct ocelot *ocelot, int port,
|
||||
struct net_device *bridge)
|
||||
{
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
if (!ocelot->bridge_mask) {
|
||||
ocelot->hw_bridge_dev = bridge;
|
||||
} else {
|
||||
@@ -1691,6 +1693,12 @@ int ocelot_port_bridge_join(struct ocelo
|
||||
@@ -1688,6 +1690,12 @@ int ocelot_port_bridge_join(struct ocelo
|
||||
|
||||
ocelot->bridge_mask |= BIT(port);
|
||||
|
||||
|
@ -51,7 +51,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
static int caam_get_era_from_hw(struct caam_ctrl __iomem *ctrl)
|
||||
--- a/drivers/crypto/caam/regs.h
|
||||
+++ b/drivers/crypto/caam/regs.h
|
||||
@@ -492,7 +492,8 @@ struct rngtst {
|
||||
@@ -495,7 +495,8 @@ struct rngtst {
|
||||
|
||||
/* RNG4 TRNG test registers */
|
||||
struct rng4tst {
|
||||
|
@ -103,16 +103,16 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
@@ -1099,10 +1099,10 @@ int caam_pkc_init(struct device *ctrldev
|
||||
|
||||
/* Determine public key hardware accelerator presence. */
|
||||
if (priv->era < 10)
|
||||
if (priv->era < 10) {
|
||||
- pk_inst = (rd_reg32(&priv->ctrl->perfmon.cha_num_ls) &
|
||||
+ pk_inst = (rd_reg32(&priv->jr[0]->perfmon.cha_num_ls) &
|
||||
CHA_ID_LS_PK_MASK) >> CHA_ID_LS_PK_SHIFT;
|
||||
else
|
||||
- pk_inst = rd_reg32(&priv->ctrl->vreg.pkha) & CHA_VER_NUM_MASK;
|
||||
+ pk_inst = rd_reg32(&priv->jr[0]->vreg.pkha) & CHA_VER_NUM_MASK;
|
||||
} else {
|
||||
- pkha = rd_reg32(&priv->ctrl->vreg.pkha);
|
||||
+ pkha = rd_reg32(&priv->jr[0]->vreg.pkha);
|
||||
pk_inst = pkha & CHA_VER_NUM_MASK;
|
||||
|
||||
/* Do not register algorithms if PKHA is not present. */
|
||||
if (!pk_inst)
|
||||
/*
|
||||
--- a/drivers/crypto/caam/caamrng.c
|
||||
+++ b/drivers/crypto/caam/caamrng.c
|
||||
@@ -363,10 +363,10 @@ int caam_rng_init(struct device *ctrldev
|
||||
|
@ -261,7 +261,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
|
||||
--- a/drivers/crypto/caam/regs.h
|
||||
+++ b/drivers/crypto/caam/regs.h
|
||||
@@ -382,6 +382,12 @@ struct version_regs {
|
||||
@@ -385,6 +385,12 @@ struct version_regs {
|
||||
#define CHA_VER_VID_MD_LP512 0x1ull
|
||||
#define CHA_VER_VID_MD_HP 0x2ull
|
||||
|
||||
@ -274,7 +274,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
struct sec_vid {
|
||||
u16 ip_id;
|
||||
u8 maj_rev;
|
||||
@@ -412,17 +418,22 @@ struct caam_perfmon {
|
||||
@@ -415,17 +421,22 @@ struct caam_perfmon {
|
||||
#define CTPR_MS_PG_SZ_SHIFT 4
|
||||
u32 comp_parms_ms; /* CTPR - Compile Parameters Register */
|
||||
u32 comp_parms_ls; /* CTPR - Compile Parameters Register */
|
||||
@ -300,7 +300,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
|
||||
/* Component Instantiation Parameters fe0-fff */
|
||||
u32 rtic_id; /* RVID - RTIC Version ID */
|
||||
@@ -441,6 +452,62 @@ struct caam_perfmon {
|
||||
@@ -444,6 +455,62 @@ struct caam_perfmon {
|
||||
u32 caam_id_ls; /* CAAMVID - CAAM Version ID LS */
|
||||
};
|
||||
|
||||
@ -363,7 +363,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
/* LIODN programming for DMA configuration */
|
||||
#define MSTRID_LOCK_LIODN 0x80000000
|
||||
#define MSTRID_LOCK_MAKETRUSTED 0x00010000 /* only for JR masterid */
|
||||
@@ -645,6 +712,35 @@ struct caam_ctrl {
|
||||
@@ -648,6 +715,35 @@ struct caam_ctrl {
|
||||
#define JRSTART_JR2_START 0x00000004 /* Start Job ring 2 */
|
||||
#define JRSTART_JR3_START 0x00000008 /* Start Job ring 3 */
|
||||
|
||||
@ -399,7 +399,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
/*
|
||||
* caam_job_ring - direct job ring setup
|
||||
* 1-4 possible per instantiation, base + 1000/2000/3000/4000
|
||||
@@ -815,6 +911,62 @@ struct caam_job_ring {
|
||||
@@ -818,6 +914,62 @@ struct caam_job_ring {
|
||||
|
||||
#define JRCR_RESET 0x01
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
|
||||
--- a/drivers/crypto/caam/regs.h
|
||||
+++ b/drivers/crypto/caam/regs.h
|
||||
@@ -518,12 +518,6 @@ struct masterid {
|
||||
@@ -521,12 +521,6 @@ struct masterid {
|
||||
u32 liodn_ls; /* LIODN for non-sequence and seq access */
|
||||
};
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
||||
/* RNGB test mode (replicated twice in some configurations) */
|
||||
/* Padded out to 0x100 */
|
||||
struct rngtst {
|
||||
@@ -637,7 +631,7 @@ struct caam_ctrl {
|
||||
@@ -640,7 +634,7 @@ struct caam_ctrl {
|
||||
u32 deco_rsr; /* DECORSR - Deco Request Source */
|
||||
u32 rsvd11;
|
||||
u32 deco_rq; /* DECORR - DECO Request */
|
||||
|
@ -558,7 +558,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
|
||||
},
|
||||
--- a/drivers/crypto/caam/regs.h
|
||||
+++ b/drivers/crypto/caam/regs.h
|
||||
@@ -631,8 +631,7 @@ struct caam_ctrl {
|
||||
@@ -634,8 +634,7 @@ struct caam_ctrl {
|
||||
u32 deco_rsr; /* DECORSR - Deco Request Source */
|
||||
u32 rsvd11;
|
||||
u32 deco_rq; /* DECORR - DECO Request */
|
||||
|
@ -229,7 +229,7 @@ Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
|
||||
* fall back to INTx or other interrupts, e.g., a system shared
|
||||
--- a/include/linux/pci.h
|
||||
+++ b/include/linux/pci.h
|
||||
@@ -2022,6 +2022,7 @@ static inline void pcibios_penalize_isa_
|
||||
@@ -2024,6 +2024,7 @@ static inline void pcibios_penalize_isa_
|
||||
int pcibios_alloc_irq(struct pci_dev *dev);
|
||||
void pcibios_free_irq(struct pci_dev *dev);
|
||||
resource_size_t pcibios_default_alignment(void);
|
||||
|
@ -163,7 +163,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -1245,6 +1245,10 @@ static const struct hc_driver ehci_hc_dr
|
||||
@@ -1254,6 +1254,10 @@ static const struct hc_driver ehci_hc_dr
|
||||
* device support
|
||||
*/
|
||||
.free_dev = ehci_remove_device,
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-hub.c
|
||||
+++ b/drivers/usb/host/xhci-hub.c
|
||||
@@ -1420,6 +1420,15 @@ int xhci_hub_control(struct usb_hcd *hcd
|
||||
@@ -1421,6 +1421,15 @@ int xhci_hub_control(struct usb_hcd *hcd
|
||||
/* 4.19.6 Port Test Modes (USB2 Test Mode) */
|
||||
if (hcd->speed != HCD_USB2)
|
||||
goto error;
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Li Jun <jun.li@freescale.com>
|
||||
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -4779,7 +4779,8 @@ hub_port_init(struct usb_hub *hub, struc
|
||||
@@ -4777,7 +4777,8 @@ hub_port_init(struct usb_hub *hub, struc
|
||||
}
|
||||
if (r) {
|
||||
if (r != -ENODEV)
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Li Jun <jun.li@nxp.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-hub.c
|
||||
+++ b/drivers/usb/host/xhci-hub.c
|
||||
@@ -1738,7 +1738,8 @@ static bool xhci_port_missing_cas_quirk(
|
||||
@@ -1739,7 +1739,8 @@ static bool xhci_port_missing_cas_quirk(
|
||||
return false;
|
||||
|
||||
if (((portsc & PORT_PLS_MASK) != XDEV_POLLING) &&
|
||||
|
@ -95,7 +95,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
netif_tx_start_all_queues(port->dev);
|
||||
@@ -5137,8 +5141,11 @@ static void mvpp2_mac_config(struct phyl
|
||||
@@ -5125,8 +5129,11 @@ static void mvpp2_mac_config(struct phyl
|
||||
mvpp2_port_enable(port);
|
||||
}
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
From f4c7d053d7f77cd5c1a1ba7c7ce085ddba13d1d7 Mon Sep 17 00:00:00 2001
|
||||
From: Remi Pommarel <repk@triplefau.lt>
|
||||
Date: Wed, 22 May 2019 23:33:50 +0200
|
||||
Subject: [PATCH] PCI: aardvark: Wait for endpoint to be ready before training
|
||||
link
|
||||
|
||||
When configuring pcie reset pin from gpio (e.g. initially set by
|
||||
u-boot) to pcie function this pin goes low for a brief moment
|
||||
asserting the PERST# signal. Thus connected device enters fundamental
|
||||
reset process and link configuration can only begin after a minimal
|
||||
100ms delay (see [1]).
|
||||
|
||||
Because the pin configuration comes from the "default" pinctrl it is
|
||||
implicitly configured before the probe callback is called:
|
||||
|
||||
driver_probe_device()
|
||||
really_probe()
|
||||
...
|
||||
pinctrl_bind_pins() /* Here pin goes from gpio to PCIE reset
|
||||
function and PERST# is asserted */
|
||||
...
|
||||
drv->probe()
|
||||
|
||||
[1] "PCI Express Base Specification", REV. 4.0
|
||||
PCI Express, February 19 2014, 6.6.1 Conventional Reset
|
||||
|
||||
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
|
||||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
drivers/pci/controller/pci-aardvark.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -353,6 +353,14 @@ static void advk_pcie_setup_hw(struct ad
|
||||
reg |= PIO_CTRL_ADDR_WIN_DISABLE;
|
||||
advk_writel(pcie, reg, PIO_CTRL);
|
||||
|
||||
+ /*
|
||||
+ * PERST# signal could have been asserted by pinctrl subsystem before
|
||||
+ * probe() callback has been called, making the endpoint going into
|
||||
+ * fundamental reset. As required by PCI Express spec a delay for at
|
||||
+ * least 100ms after such a reset before link training is needed.
|
||||
+ */
|
||||
+ msleep(PCI_PM_D3COLD_WAIT);
|
||||
+
|
||||
/* Start link training */
|
||||
reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
reg |= PCIE_CORE_LINK_TRAINING;
|
@ -1,60 +0,0 @@
|
||||
From 6964494582f56a3882c2c53b0edbfe99eb32b2e1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
|
||||
Date: Thu, 30 Apr 2020 10:06:14 +0200
|
||||
Subject: [PATCH] PCI: aardvark: Train link immediately after enabling training
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Adding even 100ms (PCI_PM_D3COLD_WAIT) delay between enabling link
|
||||
training and starting link training causes detection issues with some
|
||||
buggy cards (such as Compex WLE900VX).
|
||||
|
||||
Move the code which enables link training immediately before the one
|
||||
which starts link traning.
|
||||
|
||||
This fixes detection issues of Compex WLE900VX card on Turris MOX after
|
||||
cold boot.
|
||||
|
||||
Link: https://lore.kernel.org/r/20200430080625.26070-2-pali@kernel.org
|
||||
Fixes: f4c7d053d7f7 ("PCI: aardvark: Wait for endpoint to be ready...")
|
||||
Tested-by: Tomasz Maciej Nowak <tmn505@gmail.com>
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
drivers/pci/controller/pci-aardvark.c | 15 +++++++++------
|
||||
1 file changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -315,11 +315,6 @@ static void advk_pcie_setup_hw(struct ad
|
||||
reg |= LANE_COUNT_1;
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
|
||||
- /* Enable link training */
|
||||
- reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
- reg |= LINK_TRAINING_EN;
|
||||
- advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
-
|
||||
/* Enable MSI */
|
||||
reg = advk_readl(pcie, PCIE_CORE_CTRL2_REG);
|
||||
reg |= PCIE_CORE_CTRL2_MSI_ENABLE;
|
||||
@@ -361,7 +356,15 @@ static void advk_pcie_setup_hw(struct ad
|
||||
*/
|
||||
msleep(PCI_PM_D3COLD_WAIT);
|
||||
|
||||
- /* Start link training */
|
||||
+ /* Enable link training */
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
+ reg |= LINK_TRAINING_EN;
|
||||
+ advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
+
|
||||
+ /*
|
||||
+ * Start link training immediately after enabling it.
|
||||
+ * This solves problems for some buggy cards.
|
||||
+ */
|
||||
reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
reg |= PCIE_CORE_LINK_TRAINING;
|
||||
advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG);
|
@ -1,208 +0,0 @@
|
||||
From 43fc679ced18006b12d918d7a8a4af392b7fbfe7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <marek.behun@nic.cz>
|
||||
Date: Thu, 30 Apr 2020 10:06:17 +0200
|
||||
Subject: [PATCH] PCI: aardvark: Improve link training
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Currently the aardvark driver trains link in PCIe gen2 mode. This may
|
||||
cause some buggy gen1 cards (such as Compex WLE900VX) to be unstable or
|
||||
even not detected. Moreover when ASPM code tries to retrain link second
|
||||
time, these cards may stop responding and link goes down. If gen1 is
|
||||
used this does not happen.
|
||||
|
||||
Unconditionally forcing gen1 is not a good solution since it may have
|
||||
performance impact on gen2 cards.
|
||||
|
||||
To overcome this, read 'max-link-speed' property (as defined in PCI
|
||||
device tree bindings) and use this as max gen mode. Then iteratively try
|
||||
link training at this mode or lower until successful. After successful
|
||||
link training choose final controller gen based on Negotiated Link Speed
|
||||
from Link Status register, which should match card speed.
|
||||
|
||||
Link: https://lore.kernel.org/r/20200430080625.26070-5-pali@kernel.org
|
||||
Tested-by: Tomasz Maciej Nowak <tmn505@gmail.com>
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
Signed-off-by: Marek Behún <marek.behun@nic.cz>
|
||||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
drivers/pci/controller/pci-aardvark.c | 114 ++++++++++++++++++++------
|
||||
1 file changed, 89 insertions(+), 25 deletions(-)
|
||||
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -39,6 +39,7 @@
|
||||
#define PCIE_CORE_LINK_CTRL_STAT_REG 0xd0
|
||||
#define PCIE_CORE_LINK_L0S_ENTRY BIT(0)
|
||||
#define PCIE_CORE_LINK_TRAINING BIT(5)
|
||||
+#define PCIE_CORE_LINK_SPEED_SHIFT 16
|
||||
#define PCIE_CORE_LINK_WIDTH_SHIFT 20
|
||||
#define PCIE_CORE_ERR_CAPCTL_REG 0x118
|
||||
#define PCIE_CORE_ERR_CAPCTL_ECRC_CHK_TX BIT(5)
|
||||
@@ -206,6 +207,7 @@ struct advk_pcie {
|
||||
struct mutex msi_used_lock;
|
||||
u16 msi_msg;
|
||||
int root_bus_nr;
|
||||
+ int link_gen;
|
||||
struct pci_bridge_emul bridge;
|
||||
};
|
||||
|
||||
@@ -230,20 +232,16 @@ static int advk_pcie_link_up(struct advk
|
||||
|
||||
static int advk_pcie_wait_for_link(struct advk_pcie *pcie)
|
||||
{
|
||||
- struct device *dev = &pcie->pdev->dev;
|
||||
int retries;
|
||||
|
||||
/* check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
- if (advk_pcie_link_up(pcie)) {
|
||||
- dev_info(dev, "link up\n");
|
||||
+ if (advk_pcie_link_up(pcie))
|
||||
return 0;
|
||||
- }
|
||||
|
||||
usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
||||
}
|
||||
|
||||
- dev_err(dev, "link never came up\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
@@ -258,6 +256,85 @@ static void advk_pcie_wait_for_retrain(s
|
||||
}
|
||||
}
|
||||
|
||||
+static int advk_pcie_train_at_gen(struct advk_pcie *pcie, int gen)
|
||||
+{
|
||||
+ int ret, neg_gen;
|
||||
+ u32 reg;
|
||||
+
|
||||
+ /* Setup link speed */
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
+ reg &= ~PCIE_GEN_SEL_MSK;
|
||||
+ if (gen == 3)
|
||||
+ reg |= SPEED_GEN_3;
|
||||
+ else if (gen == 2)
|
||||
+ reg |= SPEED_GEN_2;
|
||||
+ else
|
||||
+ reg |= SPEED_GEN_1;
|
||||
+ advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
+
|
||||
+ /*
|
||||
+ * Enable link training. This is not needed in every call to this
|
||||
+ * function, just once suffices, but it does not break anything either.
|
||||
+ */
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
+ reg |= LINK_TRAINING_EN;
|
||||
+ advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
+
|
||||
+ /*
|
||||
+ * Start link training immediately after enabling it.
|
||||
+ * This solves problems for some buggy cards.
|
||||
+ */
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
+ reg |= PCIE_CORE_LINK_TRAINING;
|
||||
+ advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
+
|
||||
+ ret = advk_pcie_wait_for_link(pcie);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
+ neg_gen = (reg >> PCIE_CORE_LINK_SPEED_SHIFT) & 0xf;
|
||||
+
|
||||
+ return neg_gen;
|
||||
+}
|
||||
+
|
||||
+static void advk_pcie_train_link(struct advk_pcie *pcie)
|
||||
+{
|
||||
+ struct device *dev = &pcie->pdev->dev;
|
||||
+ int neg_gen = -1, gen;
|
||||
+
|
||||
+ /*
|
||||
+ * Try link training at link gen specified by device tree property
|
||||
+ * 'max-link-speed'. If this fails, iteratively train at lower gen.
|
||||
+ */
|
||||
+ for (gen = pcie->link_gen; gen > 0; --gen) {
|
||||
+ neg_gen = advk_pcie_train_at_gen(pcie, gen);
|
||||
+ if (neg_gen > 0)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (neg_gen < 0)
|
||||
+ goto err;
|
||||
+
|
||||
+ /*
|
||||
+ * After successful training if negotiated gen is lower than requested,
|
||||
+ * train again on negotiated gen. This solves some stability issues for
|
||||
+ * some buggy gen1 cards.
|
||||
+ */
|
||||
+ if (neg_gen < gen) {
|
||||
+ gen = neg_gen;
|
||||
+ neg_gen = advk_pcie_train_at_gen(pcie, gen);
|
||||
+ }
|
||||
+
|
||||
+ if (neg_gen == gen) {
|
||||
+ dev_info(dev, "link up at gen %i\n", gen);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+err:
|
||||
+ dev_err(dev, "link never came up\n");
|
||||
+}
|
||||
+
|
||||
static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 reg;
|
||||
@@ -303,12 +380,6 @@ static void advk_pcie_setup_hw(struct ad
|
||||
PCIE_CORE_CTRL2_TD_ENABLE;
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG);
|
||||
|
||||
- /* Set GEN2 */
|
||||
- reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
- reg &= ~PCIE_GEN_SEL_MSK;
|
||||
- reg |= SPEED_GEN_2;
|
||||
- advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
-
|
||||
/* Set lane X1 */
|
||||
reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
reg &= ~LANE_CNT_MSK;
|
||||
@@ -356,20 +427,7 @@ static void advk_pcie_setup_hw(struct ad
|
||||
*/
|
||||
msleep(PCI_PM_D3COLD_WAIT);
|
||||
|
||||
- /* Enable link training */
|
||||
- reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
- reg |= LINK_TRAINING_EN;
|
||||
- advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
-
|
||||
- /*
|
||||
- * Start link training immediately after enabling it.
|
||||
- * This solves problems for some buggy cards.
|
||||
- */
|
||||
- reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
- reg |= PCIE_CORE_LINK_TRAINING;
|
||||
- advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG);
|
||||
-
|
||||
- advk_pcie_wait_for_link(pcie);
|
||||
+ advk_pcie_train_link(pcie);
|
||||
|
||||
reg = advk_readl(pcie, PCIE_CORE_CMD_STATUS_REG);
|
||||
reg |= PCIE_CORE_CMD_MEM_ACCESS_EN |
|
||||
@@ -1193,6 +1251,12 @@ static int advk_pcie_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ ret = of_pci_get_max_link_speed(dev->of_node);
|
||||
+ if (ret <= 0 || ret > 3)
|
||||
+ pcie->link_gen = 3;
|
||||
+ else
|
||||
+ pcie->link_gen = ret;
|
||||
+
|
||||
advk_pcie_setup_hw(pcie);
|
||||
|
||||
ret = advk_sw_pci_bridge_init(pcie);
|
@ -1,123 +0,0 @@
|
||||
From 5169a9851daaa2782a7bd2bb83d5b1bd224b2879 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
|
||||
Date: Thu, 30 Apr 2020 10:06:18 +0200
|
||||
Subject: [PATCH] PCI: aardvark: Issue PERST via GPIO
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add support for issuing PERST via GPIO specified in 'reset-gpios'
|
||||
property (as described in PCI device tree bindings).
|
||||
|
||||
Some buggy cards (e.g. Compex WLE900VX or WLE1216) are not detected
|
||||
after reboot when PERST is not issued during driver initialization.
|
||||
|
||||
If bootloader already enabled link training then issuing PERST has no
|
||||
effect for some buggy cards (e.g. Compex WLE900VX) and these cards are
|
||||
not detected. We therefore clear the LINK_TRAINING_EN register before.
|
||||
|
||||
It was observed that Compex WLE900VX card needs to be in PERST reset
|
||||
for at least 10ms if bootloader enabled link training.
|
||||
|
||||
Tested on Turris MOX.
|
||||
|
||||
Link: https://lore.kernel.org/r/20200430080625.26070-6-pali@kernel.org
|
||||
Tested-by: Tomasz Maciej Nowak <tmn505@gmail.com>
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
drivers/pci/controller/pci-aardvark.c | 43 ++++++++++++++++++++++++++-
|
||||
1 file changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
+#include <linux/gpio.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
@@ -17,6 +18,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/of_address.h>
|
||||
+#include <linux/of_gpio.h>
|
||||
#include <linux/of_pci.h>
|
||||
|
||||
#include "../pci.h"
|
||||
@@ -209,6 +211,7 @@ struct advk_pcie {
|
||||
int root_bus_nr;
|
||||
int link_gen;
|
||||
struct pci_bridge_emul bridge;
|
||||
+ struct gpio_desc *reset_gpio;
|
||||
};
|
||||
|
||||
static inline void advk_writel(struct advk_pcie *pcie, u32 val, u64 reg)
|
||||
@@ -335,10 +338,31 @@ err:
|
||||
dev_err(dev, "link never came up\n");
|
||||
}
|
||||
|
||||
+static void advk_pcie_issue_perst(struct advk_pcie *pcie)
|
||||
+{
|
||||
+ u32 reg;
|
||||
+
|
||||
+ if (!pcie->reset_gpio)
|
||||
+ return;
|
||||
+
|
||||
+ /* PERST does not work for some cards when link training is enabled */
|
||||
+ reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);
|
||||
+ reg &= ~LINK_TRAINING_EN;
|
||||
+ advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
+
|
||||
+ /* 10ms delay is needed for some cards */
|
||||
+ dev_info(&pcie->pdev->dev, "issuing PERST via reset GPIO for 10ms\n");
|
||||
+ gpiod_set_value_cansleep(pcie->reset_gpio, 1);
|
||||
+ usleep_range(10000, 11000);
|
||||
+ gpiod_set_value_cansleep(pcie->reset_gpio, 0);
|
||||
+}
|
||||
+
|
||||
static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
+ advk_pcie_issue_perst(pcie);
|
||||
+
|
||||
/* Set to Direct mode */
|
||||
reg = advk_readl(pcie, CTRL_CONFIG_REG);
|
||||
reg &= ~(CTRL_MODE_MASK << CTRL_MODE_SHIFT);
|
||||
@@ -421,7 +445,8 @@ static void advk_pcie_setup_hw(struct ad
|
||||
|
||||
/*
|
||||
* PERST# signal could have been asserted by pinctrl subsystem before
|
||||
- * probe() callback has been called, making the endpoint going into
|
||||
+ * probe() callback has been called or issued explicitly by reset gpio
|
||||
+ * function advk_pcie_issue_perst(), making the endpoint going into
|
||||
* fundamental reset. As required by PCI Express spec a delay for at
|
||||
* least 100ms after such a reset before link training is needed.
|
||||
*/
|
||||
@@ -1251,6 +1276,22 @@ static int advk_pcie_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node,
|
||||
+ "reset-gpios", 0,
|
||||
+ GPIOD_OUT_LOW,
|
||||
+ "pcie1-reset");
|
||||
+ ret = PTR_ERR_OR_ZERO(pcie->reset_gpio);
|
||||
+ if (ret) {
|
||||
+ if (ret == -ENOENT) {
|
||||
+ pcie->reset_gpio = NULL;
|
||||
+ } else {
|
||||
+ if (ret != -EPROBE_DEFER)
|
||||
+ dev_err(dev, "Failed to get reset-gpio: %i\n",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
ret = of_pci_get_max_link_speed(dev->of_node);
|
||||
if (ret <= 0 || ret > 3)
|
||||
pcie->link_gen = 3;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user