Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33732f4a9c | ||
|
|
65030d81f3 | ||
|
|
b33cfb7eb2 | ||
|
|
4edadfb997 | ||
|
|
cf118077cd | ||
|
|
0e9e5b1553 | ||
|
|
9e2a1af62f | ||
|
|
af79c3bccc | ||
|
|
bc0ca20ca9 | ||
|
|
191822b59f | ||
|
|
d0c8875faf | ||
|
|
c9b6bb43ce | ||
|
|
b2660e67f0 | ||
|
|
21bf718b8c | ||
|
|
2d3a93335a | ||
|
|
8fa6107aee | ||
|
|
6a950afde1 | ||
|
|
7cbd39421e | ||
|
|
085f38351f | ||
|
|
6b7eeb74db | ||
|
|
95d5cbdec3 | ||
|
|
2d21357b65 | ||
|
|
b6c01fec92 | ||
|
|
5000fc53a1 | ||
|
|
a0ca72d9ab | ||
|
|
53cd2299ee | ||
|
|
cff3795450 | ||
|
|
cf2b042855 | ||
|
|
887eb669f9 | ||
|
|
d91b52b1a2 | ||
|
|
2a844349fa | ||
|
|
eca8a2ee0d | ||
|
|
3d1c84d424 | ||
|
|
aed6632d31 | ||
|
|
a229907150 | ||
|
|
4668ae3bed |
@@ -1,4 +1,4 @@
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^1ec76dd7ca647f76a75c4f88b3b70d154221e7e9
|
||||
src-git luci https://git.openwrt.org/project/luci.git^adbbd5cf690cf993e0de1e56266ac6fd2b2dfe91
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^839ea37939ad1c6cbb4ac543962bbb66be4a2a3f
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^99efce0cd27adfcc53384fba93f37e5ee2e517de
|
||||
src-git luci https://git.openwrt.org/project/luci.git^13dd17fca148965d38f0d4e578b19679a7c4daa2
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^efa6e5445adda9c6545f551808829ec927cbade8
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^6f95d6ab3f359ee2ce81c20522700937424d1591
|
||||
|
||||
@@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.14 = .167
|
||||
LINUX_VERSION-4.14 = .171
|
||||
|
||||
LINUX_KERNEL_HASH-4.14.167 = 2bb78fc7a902faf4f5dad47fdbc2f4bf3df3cf9b41f408e7260f36656659fe43
|
||||
LINUX_KERNEL_HASH-4.14.171 = 4fe02489e4b4a187eccf0ef87df6100534c9d485e76d876b1fa247c7635332a0
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@@ -26,13 +26,13 @@ PKG_CONFIG_DEPENDS += \
|
||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
||||
|
||||
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),19.07.1)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),19.07.2)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r10911-c155900f66)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r10947-65030d81f3)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07.1)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07.2)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.openwrt.org/releases/19.07.1"
|
||||
default "http://downloads.openwrt.org/releases/19.07.2"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -35,7 +35,8 @@ yuncore,xd4200)
|
||||
glinet,gl-ar150)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000"
|
||||
;;
|
||||
netgear,wndr3700)
|
||||
netgear,wndr3700|\
|
||||
netgear,wndr3700-v2)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x10000"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From 4282dc057d750c6a7dd92953564b15c26b54c22c Mon Sep 17 00:00:00 2001
|
||||
From: Navid Emamdoost <navid.emamdoost@gmail.com>
|
||||
Date: Sat, 14 Dec 2019 19:51:14 -0600
|
||||
Subject: [PATCH] brcmfmac: Fix memory leak in brcmf_usbdev_qinit
|
||||
|
||||
In the implementation of brcmf_usbdev_qinit() the allocated memory for
|
||||
reqs is leaking if usb_alloc_urb() fails. Release reqs in the error
|
||||
handling path.
|
||||
|
||||
Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
|
||||
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||
@@ -430,6 +430,7 @@ fail:
|
||||
usb_free_urb(req->urb);
|
||||
list_del(q->next);
|
||||
}
|
||||
+ kfree(reqs);
|
||||
return NULL;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
From a32de68edab7b73ded850bcf76cdf6858e92a7e5 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Osipenko <digetx@gmail.com>
|
||||
Date: Sun, 15 Dec 2019 21:42:24 +0300
|
||||
Subject: [PATCH] brcmfmac: Keep OOB wake-interrupt disabled when it shouldn't
|
||||
be enabled
|
||||
|
||||
NVIDIA Tegra SoCs do not like when OOB wake is enabled and WiFi interface
|
||||
is in DOWN state during suspend. This results in a CPU hang on programming
|
||||
OOB wake-up state of the GPIO controller during of system's suspend.
|
||||
|
||||
The solution is trivial: don't enable wake for the OOB interrupt when it
|
||||
should be disabled.
|
||||
|
||||
This fixes hang on Tegra20 (Acer A500) and Tegra30 (Nexus 7) devices which
|
||||
are using BCM4329 and BCM4330 WiFi chips respectively.
|
||||
|
||||
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 10 +++++-----
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 1 -
|
||||
2 files changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -120,7 +120,7 @@ int brcmf_sdiod_intr_register(struct brc
|
||||
brcmf_err("enable_irq_wake failed %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
- sdiodev->irq_wake = true;
|
||||
+ disable_irq_wake(pdata->oob_irq_nr);
|
||||
|
||||
sdio_claim_host(sdiodev->func1);
|
||||
|
||||
@@ -179,10 +179,6 @@ void brcmf_sdiod_intr_unregister(struct
|
||||
sdio_release_host(sdiodev->func1);
|
||||
|
||||
sdiodev->oob_irq_requested = false;
|
||||
- if (sdiodev->irq_wake) {
|
||||
- disable_irq_wake(pdata->oob_irq_nr);
|
||||
- sdiodev->irq_wake = false;
|
||||
- }
|
||||
free_irq(pdata->oob_irq_nr, &sdiodev->func1->dev);
|
||||
sdiodev->irq_en = false;
|
||||
sdiodev->oob_irq_requested = false;
|
||||
@@ -1162,6 +1158,10 @@ static int brcmf_ops_sdio_resume(struct
|
||||
if (ret)
|
||||
brcmf_err("Failed to probe device on resume\n");
|
||||
} else {
|
||||
+ if (sdiodev->wowl_enabled &&
|
||||
+ sdiodev->settings->bus.sdio.oob_irq_supported)
|
||||
+ disable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr);
|
||||
+
|
||||
brcmf_sdiod_freezer_off(sdiodev);
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
|
||||
@@ -178,7 +178,6 @@ struct brcmf_sdio_dev {
|
||||
bool sd_irq_requested;
|
||||
bool irq_en; /* irq enable flags */
|
||||
spinlock_t irq_en_lock;
|
||||
- bool irq_wake; /* irq wake enable flags */
|
||||
bool sg_support;
|
||||
uint max_request_size;
|
||||
ushort max_segment_count;
|
||||
@@ -0,0 +1,27 @@
|
||||
From b92c017deda819e45a0f054f6df6b53e645d7fe4 Mon Sep 17 00:00:00 2001
|
||||
From: zhengbin <zhengbin13@huawei.com>
|
||||
Date: Tue, 24 Dec 2019 22:16:06 +0800
|
||||
Subject: [PATCH] brcmfmac: use true,false for bool variable
|
||||
|
||||
Fixes coccicheck warning:
|
||||
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c:911:2-24: WARNING: Assignment of 0/1 to bool variable
|
||||
|
||||
Reported-by: Hulk Robot <hulkci@huawei.com>
|
||||
Signed-off-by: zhengbin <zhengbin13@huawei.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
@@ -908,7 +908,7 @@ static u8 brcmf_fws_hdrpush(struct brcmf
|
||||
wlh += wlh[1] + 2;
|
||||
|
||||
if (entry->send_tim_signal) {
|
||||
- entry->send_tim_signal = 0;
|
||||
+ entry->send_tim_signal = false;
|
||||
wlh[0] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP;
|
||||
wlh[1] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP_LEN;
|
||||
wlh[2] = entry->mac_handle;
|
||||
@@ -0,0 +1,57 @@
|
||||
From 8c8e60fb86a90a30721bbd797f58f96b3980dcc1 Mon Sep 17 00:00:00 2001
|
||||
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
|
||||
Date: Thu, 26 Dec 2019 10:20:33 +0100
|
||||
Subject: [PATCH] brcmfmac: sdio: Fix OOB interrupt initialization on brcm43362
|
||||
|
||||
Commit 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling
|
||||
brcmf_bus_started()") changed the initialization order of the brcmfmac
|
||||
SDIO driver. Unfortunately since brcmf_sdiod_intr_register() is now
|
||||
called before the sdiodev->bus_if initialization, it reads the wrong
|
||||
chip ID and fails to initialize the GPIO on brcm43362. Thus the chip
|
||||
cannot send interrupts and fails to probe:
|
||||
|
||||
[ 12.517023] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
|
||||
[ 12.531214] ieee80211 phy0: brcmf_bus_started: failed: -110
|
||||
[ 12.536976] ieee80211 phy0: brcmf_attach: dongle is not responding: err=-110
|
||||
[ 12.566467] brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
|
||||
|
||||
Initialize the bus interface earlier to ensure that
|
||||
brcmf_sdiod_intr_register() properly sets up the OOB interrupt.
|
||||
|
||||
BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438
|
||||
Fixes: 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling brcmf_bus_started()")
|
||||
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
|
||||
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -4247,6 +4247,12 @@ static void brcmf_sdio_firmware_callback
|
||||
}
|
||||
|
||||
if (err == 0) {
|
||||
+ /* Assign bus interface call back */
|
||||
+ sdiod->bus_if->dev = sdiod->dev;
|
||||
+ sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
|
||||
+ sdiod->bus_if->chip = bus->ci->chip;
|
||||
+ sdiod->bus_if->chiprev = bus->ci->chiprev;
|
||||
+
|
||||
/* Allow full data communication using DPC from now on. */
|
||||
brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
|
||||
|
||||
@@ -4263,12 +4269,6 @@ static void brcmf_sdio_firmware_callback
|
||||
|
||||
sdio_release_host(sdiod->func1);
|
||||
|
||||
- /* Assign bus interface call back */
|
||||
- sdiod->bus_if->dev = sdiod->dev;
|
||||
- sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
|
||||
- sdiod->bus_if->chip = bus->ci->chip;
|
||||
- sdiod->bus_if->chiprev = bus->ci->chiprev;
|
||||
-
|
||||
err = brcmf_alloc(sdiod->dev, sdiod->settings);
|
||||
if (err) {
|
||||
brcmf_err("brcmf_alloc failed\n");
|
||||
@@ -0,0 +1,103 @@
|
||||
From 24332f8068ff6df7f16aefee45d514de1de4de80 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Thu, 26 Dec 2019 14:30:49 +0100
|
||||
Subject: [PATCH] brcmfmac: simplify building interface combinations
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Move similar/duplicated code out of combination specific code blocks.
|
||||
This simplifies code a bit and allows adding more combinations later.
|
||||
A list of combinations remains unchanged.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 43 ++++++-------------
|
||||
1 file changed, 14 insertions(+), 29 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6471,12 +6471,13 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
struct ieee80211_iface_limit *c0_limits = NULL;
|
||||
struct ieee80211_iface_limit *p2p_limits = NULL;
|
||||
struct ieee80211_iface_limit *mbss_limits = NULL;
|
||||
- bool mbss, p2p, rsdb;
|
||||
+ bool mbss, p2p, rsdb, mchan;
|
||||
int i, c, n_combos;
|
||||
|
||||
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
|
||||
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
|
||||
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
|
||||
+ mchan = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN);
|
||||
|
||||
n_combos = 1 + !!(p2p && !rsdb) + !!mbss;
|
||||
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
|
||||
@@ -6486,6 +6487,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_AP);
|
||||
+ if (p2p)
|
||||
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
+ BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
+ BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
|
||||
c = 0;
|
||||
i = 0;
|
||||
@@ -6497,48 +6502,28 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
|
||||
if (!c0_limits)
|
||||
goto err;
|
||||
- if (p2p && rsdb) {
|
||||
- combo[c].num_different_channels = 2;
|
||||
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
- BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
- BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
- c0_limits[i].max = 2;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
+
|
||||
+ combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan));
|
||||
+ c0_limits[i].max = 1 + rsdb;
|
||||
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
+ if (p2p) {
|
||||
c0_limits[i].max = 1;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
- c0_limits[i].max = 2;
|
||||
+ c0_limits[i].max = 1 + rsdb;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
BIT(NL80211_IFTYPE_P2P_GO);
|
||||
+ }
|
||||
+ if (p2p && rsdb) {
|
||||
c0_limits[i].max = 2;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
|
||||
combo[c].max_interfaces = 5;
|
||||
} else if (p2p) {
|
||||
- if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN))
|
||||
- combo[c].num_different_channels = 2;
|
||||
- else
|
||||
- combo[c].num_different_channels = 1;
|
||||
- c0_limits[i].max = 1;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
- BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
- BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
- c0_limits[i].max = 1;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
- c0_limits[i].max = 1;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
- BIT(NL80211_IFTYPE_P2P_GO);
|
||||
combo[c].max_interfaces = i;
|
||||
} else if (rsdb) {
|
||||
- combo[c].num_different_channels = 2;
|
||||
- c0_limits[i].max = 2;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
c0_limits[i].max = 2;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
|
||||
combo[c].max_interfaces = 3;
|
||||
} else {
|
||||
- combo[c].num_different_channels = 1;
|
||||
- c0_limits[i].max = 1;
|
||||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
c0_limits[i].max = 1;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
|
||||
combo[c].max_interfaces = i;
|
||||
@@ -0,0 +1,345 @@
|
||||
From 20f2c5fa3af060401c72e444999470a4cab641cf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Thu, 26 Dec 2019 14:30:50 +0100
|
||||
Subject: [PATCH] brcmfmac: add initial support for monitor mode
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Report monitor interface availability using cfg80211 and support it in
|
||||
the add_virtual_intf() and del_virtual_intf() callbacks. This new
|
||||
feature is conditional and depends on firmware flagging monitor packets.
|
||||
Receiving monitor frames is already handled by the brcmf_netif_mon_rx().
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 112 ++++++++++++++++--
|
||||
.../broadcom/brcm80211/brcmfmac/core.c | 68 ++++++++++-
|
||||
.../broadcom/brcm80211/brcmfmac/core.h | 2 +
|
||||
.../broadcom/brcm80211/brcmfmac/feature.c | 1 +
|
||||
.../broadcom/brcm80211/brcmfmac/feature.h | 2 +
|
||||
.../broadcom/brcm80211/brcmfmac/fwil.h | 2 +
|
||||
6 files changed, 174 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/vmalloc.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include <net/netlink.h>
|
||||
+#include <uapi/linux/if_arp.h>
|
||||
|
||||
#include <brcmu_utils.h>
|
||||
#include <defs.h>
|
||||
@@ -619,6 +620,82 @@ static bool brcmf_is_ibssmode(struct brc
|
||||
return vif->wdev.iftype == NL80211_IFTYPE_ADHOC;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * brcmf_mon_add_vif() - create monitor mode virtual interface
|
||||
+ *
|
||||
+ * @wiphy: wiphy device of new interface.
|
||||
+ * @name: name of the new interface.
|
||||
+ */
|
||||
+static struct wireless_dev *brcmf_mon_add_vif(struct wiphy *wiphy,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
+ struct brcmf_cfg80211_vif *vif;
|
||||
+ struct net_device *ndev;
|
||||
+ struct brcmf_if *ifp;
|
||||
+ int err;
|
||||
+
|
||||
+ if (cfg->pub->mon_if) {
|
||||
+ err = -EEXIST;
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+
|
||||
+ vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_MONITOR);
|
||||
+ if (IS_ERR(vif)) {
|
||||
+ err = PTR_ERR(vif);
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+
|
||||
+ ndev = alloc_netdev(sizeof(*ifp), name, NET_NAME_UNKNOWN, ether_setup);
|
||||
+ if (!ndev) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto err_free_vif;
|
||||
+ }
|
||||
+ ndev->type = ARPHRD_IEEE80211_RADIOTAP;
|
||||
+ ndev->ieee80211_ptr = &vif->wdev;
|
||||
+ ndev->needs_free_netdev = true;
|
||||
+ ndev->priv_destructor = brcmf_cfg80211_free_netdev;
|
||||
+ SET_NETDEV_DEV(ndev, wiphy_dev(cfg->wiphy));
|
||||
+
|
||||
+ ifp = netdev_priv(ndev);
|
||||
+ ifp->vif = vif;
|
||||
+ ifp->ndev = ndev;
|
||||
+ ifp->drvr = cfg->pub;
|
||||
+
|
||||
+ vif->ifp = ifp;
|
||||
+ vif->wdev.netdev = ndev;
|
||||
+
|
||||
+ err = brcmf_net_mon_attach(ifp);
|
||||
+ if (err) {
|
||||
+ brcmf_err("Failed to attach %s device\n", ndev->name);
|
||||
+ free_netdev(ndev);
|
||||
+ goto err_free_vif;
|
||||
+ }
|
||||
+
|
||||
+ cfg->pub->mon_if = ifp;
|
||||
+
|
||||
+ return &vif->wdev;
|
||||
+
|
||||
+err_free_vif:
|
||||
+ brcmf_free_vif(vif);
|
||||
+err_out:
|
||||
+ return ERR_PTR(err);
|
||||
+}
|
||||
+
|
||||
+static int brcmf_mon_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
|
||||
+{
|
||||
+ struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
+ struct net_device *ndev = wdev->netdev;
|
||||
+
|
||||
+ ndev->netdev_ops->ndo_stop(ndev);
|
||||
+
|
||||
+ brcmf_net_detach(ndev, true);
|
||||
+
|
||||
+ cfg->pub->mon_if = NULL;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static struct wireless_dev *brcmf_cfg80211_add_iface(struct wiphy *wiphy,
|
||||
const char *name,
|
||||
unsigned char name_assign_type,
|
||||
@@ -641,9 +718,10 @@ static struct wireless_dev *brcmf_cfg802
|
||||
case NL80211_IFTYPE_STATION:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
- case NL80211_IFTYPE_MONITOR:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
return ERR_PTR(-EOPNOTSUPP);
|
||||
+ case NL80211_IFTYPE_MONITOR:
|
||||
+ return brcmf_mon_add_vif(wiphy, name);
|
||||
case NL80211_IFTYPE_AP:
|
||||
wdev = brcmf_ap_add_vif(wiphy, name, params);
|
||||
break;
|
||||
@@ -826,9 +904,10 @@ int brcmf_cfg80211_del_iface(struct wiph
|
||||
case NL80211_IFTYPE_STATION:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_WDS:
|
||||
- case NL80211_IFTYPE_MONITOR:
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
return -EOPNOTSUPP;
|
||||
+ case NL80211_IFTYPE_MONITOR:
|
||||
+ return brcmf_mon_del_vif(wiphy, wdev);
|
||||
case NL80211_IFTYPE_AP:
|
||||
return brcmf_cfg80211_del_ap_iface(wiphy, wdev);
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
@@ -6471,9 +6550,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
struct ieee80211_iface_limit *c0_limits = NULL;
|
||||
struct ieee80211_iface_limit *p2p_limits = NULL;
|
||||
struct ieee80211_iface_limit *mbss_limits = NULL;
|
||||
- bool mbss, p2p, rsdb, mchan;
|
||||
- int i, c, n_combos;
|
||||
+ bool mon_flag, mbss, p2p, rsdb, mchan;
|
||||
+ int i, c, n_combos, n_limits;
|
||||
|
||||
+ mon_flag = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MONITOR_FLAG);
|
||||
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
|
||||
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
|
||||
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
|
||||
@@ -6487,6 +6567,8 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_AP);
|
||||
+ if (mon_flag)
|
||||
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_MONITOR);
|
||||
if (p2p)
|
||||
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
@@ -6494,18 +6576,18 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
|
||||
c = 0;
|
||||
i = 0;
|
||||
- if (p2p && rsdb)
|
||||
- c0_limits = kcalloc(4, sizeof(*c0_limits), GFP_KERNEL);
|
||||
- else if (p2p)
|
||||
- c0_limits = kcalloc(3, sizeof(*c0_limits), GFP_KERNEL);
|
||||
- else
|
||||
- c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
|
||||
+ n_limits = 1 + mon_flag + (p2p ? 2 : 0) + (rsdb || !p2p);
|
||||
+ c0_limits = kcalloc(n_limits, sizeof(*c0_limits), GFP_KERNEL);
|
||||
if (!c0_limits)
|
||||
goto err;
|
||||
|
||||
combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan));
|
||||
c0_limits[i].max = 1 + rsdb;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
|
||||
+ if (mon_flag) {
|
||||
+ c0_limits[i].max = 1;
|
||||
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_MONITOR);
|
||||
+ }
|
||||
if (p2p) {
|
||||
c0_limits[i].max = 1;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
@@ -6554,14 +6636,20 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
if (mbss) {
|
||||
c++;
|
||||
i = 0;
|
||||
- mbss_limits = kcalloc(1, sizeof(*mbss_limits), GFP_KERNEL);
|
||||
+ n_limits = 1 + mon_flag;
|
||||
+ mbss_limits = kcalloc(n_limits, sizeof(*mbss_limits),
|
||||
+ GFP_KERNEL);
|
||||
if (!mbss_limits)
|
||||
goto err;
|
||||
mbss_limits[i].max = 4;
|
||||
mbss_limits[i++].types = BIT(NL80211_IFTYPE_AP);
|
||||
+ if (mon_flag) {
|
||||
+ mbss_limits[i].max = 1;
|
||||
+ mbss_limits[i++].types = BIT(NL80211_IFTYPE_MONITOR);
|
||||
+ }
|
||||
combo[c].beacon_int_infra_match = true;
|
||||
combo[c].num_different_channels = 1;
|
||||
- combo[c].max_interfaces = 4;
|
||||
+ combo[c].max_interfaces = 4 + mon_flag;
|
||||
combo[c].n_limits = i;
|
||||
combo[c].limits = mbss_limits;
|
||||
}
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -690,7 +690,7 @@ fail:
|
||||
return -EBADE;
|
||||
}
|
||||
|
||||
-static void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked)
|
||||
+void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked)
|
||||
{
|
||||
if (ndev->reg_state == NETREG_REGISTERED) {
|
||||
if (rtnl_locked)
|
||||
@@ -703,6 +703,72 @@ static void brcmf_net_detach(struct net_
|
||||
}
|
||||
}
|
||||
|
||||
+static int brcmf_net_mon_open(struct net_device *ndev)
|
||||
+{
|
||||
+ struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
+ struct brcmf_pub *drvr = ifp->drvr;
|
||||
+ u32 monitor;
|
||||
+ int err;
|
||||
+
|
||||
+ brcmf_dbg(TRACE, "Enter\n");
|
||||
+
|
||||
+ err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_MONITOR, &monitor);
|
||||
+ if (err) {
|
||||
+ bphy_err(drvr, "BRCMF_C_GET_MONITOR error (%d)\n", err);
|
||||
+ return err;
|
||||
+ } else if (monitor) {
|
||||
+ bphy_err(drvr, "Monitor mode is already enabled\n");
|
||||
+ return -EEXIST;
|
||||
+ }
|
||||
+
|
||||
+ monitor = 3;
|
||||
+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_MONITOR, monitor);
|
||||
+ if (err)
|
||||
+ bphy_err(drvr, "BRCMF_C_SET_MONITOR error (%d)\n", err);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int brcmf_net_mon_stop(struct net_device *ndev)
|
||||
+{
|
||||
+ struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
+ struct brcmf_pub *drvr = ifp->drvr;
|
||||
+ u32 monitor;
|
||||
+ int err;
|
||||
+
|
||||
+ brcmf_dbg(TRACE, "Enter\n");
|
||||
+
|
||||
+ monitor = 0;
|
||||
+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_MONITOR, monitor);
|
||||
+ if (err)
|
||||
+ bphy_err(drvr, "BRCMF_C_SET_MONITOR error (%d)\n", err);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static const struct net_device_ops brcmf_netdev_ops_mon = {
|
||||
+ .ndo_open = brcmf_net_mon_open,
|
||||
+ .ndo_stop = brcmf_net_mon_stop,
|
||||
+};
|
||||
+
|
||||
+int brcmf_net_mon_attach(struct brcmf_if *ifp)
|
||||
+{
|
||||
+ struct brcmf_pub *drvr = ifp->drvr;
|
||||
+ struct net_device *ndev;
|
||||
+ int err;
|
||||
+
|
||||
+ brcmf_dbg(TRACE, "Enter\n");
|
||||
+
|
||||
+ ndev = ifp->ndev;
|
||||
+ ndev->netdev_ops = &brcmf_netdev_ops_mon;
|
||||
+
|
||||
+ err = register_netdevice(ndev);
|
||||
+ if (err)
|
||||
+ bphy_err(drvr, "Failed to register %s device\n", ndev->name);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on)
|
||||
{
|
||||
struct net_device *ndev;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
||||
@@ -210,6 +210,8 @@ void brcmf_txflowblock_if(struct brcmf_i
|
||||
void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success);
|
||||
void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb);
|
||||
void brcmf_netif_mon_rx(struct brcmf_if *ifp, struct sk_buff *skb);
|
||||
+void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked);
|
||||
+int brcmf_net_mon_attach(struct brcmf_if *ifp);
|
||||
void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on);
|
||||
int __init brcmf_core_init(void);
|
||||
void __exit brcmf_core_exit(void);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
|
||||
@@ -38,6 +38,7 @@ static const struct brcmf_feat_fwcap brc
|
||||
{ BRCMF_FEAT_MCHAN, "mchan" },
|
||||
{ BRCMF_FEAT_P2P, "p2p" },
|
||||
{ BRCMF_FEAT_MONITOR, "monitor" },
|
||||
+ { BRCMF_FEAT_MONITOR_FLAG, "rtap" },
|
||||
{ BRCMF_FEAT_MONITOR_FMT_RADIOTAP, "rtap" },
|
||||
{ BRCMF_FEAT_DOT11H, "802.11h" }
|
||||
};
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
|
||||
@@ -23,6 +23,7 @@
|
||||
* GSCAN: enhanced scan offload feature.
|
||||
* FWSUP: Firmware supplicant.
|
||||
* MONITOR: firmware can pass monitor packets to host.
|
||||
+ * MONITOR_FLAG: firmware flags monitor packets.
|
||||
* MONITOR_FMT_RADIOTAP: firmware provides monitor packets with radiotap header
|
||||
* MONITOR_FMT_HW_RX_HDR: firmware provides monitor packets with hw/ucode header
|
||||
* DOT11H: firmware supports 802.11h
|
||||
@@ -43,6 +44,7 @@
|
||||
BRCMF_FEAT_DEF(GSCAN) \
|
||||
BRCMF_FEAT_DEF(FWSUP) \
|
||||
BRCMF_FEAT_DEF(MONITOR) \
|
||||
+ BRCMF_FEAT_DEF(MONITOR_FLAG) \
|
||||
BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) \
|
||||
BRCMF_FEAT_DEF(MONITOR_FMT_HW_RX_HDR) \
|
||||
BRCMF_FEAT_DEF(DOT11H)
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
|
||||
@@ -49,6 +49,8 @@
|
||||
#define BRCMF_C_GET_PM 85
|
||||
#define BRCMF_C_SET_PM 86
|
||||
#define BRCMF_C_GET_REVINFO 98
|
||||
+#define BRCMF_C_GET_MONITOR 107
|
||||
+#define BRCMF_C_SET_MONITOR 108
|
||||
#define BRCMF_C_GET_CURR_RATESET 114
|
||||
#define BRCMF_C_GET_AP 117
|
||||
#define BRCMF_C_SET_AP 118
|
||||
@@ -0,0 +1,24 @@
|
||||
From 627b0d094240c38393b2f2d40626c33a8fff6103 Mon Sep 17 00:00:00 2001
|
||||
From: yuehaibing <yuehaibing@huawei.com>
|
||||
Date: Wed, 8 Jan 2020 21:57:48 +0800
|
||||
Subject: [PATCH] brcmfmac: Remove always false 'idx < 0' statement
|
||||
|
||||
idx is declared as u32, it will never less than 0.
|
||||
|
||||
Signed-off-by: yuehaibing <yuehaibing@huawei.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
|
||||
@@ -365,7 +365,7 @@ brcmf_msgbuf_get_pktid(struct device *de
|
||||
struct brcmf_msgbuf_pktid *pktid;
|
||||
struct sk_buff *skb;
|
||||
|
||||
- if (idx < 0 || idx >= pktids->array_size) {
|
||||
+ if (idx >= pktids->array_size) {
|
||||
brcmf_err("Invalid packet id %d (max %d)\n", idx,
|
||||
pktids->array_size);
|
||||
return NULL;
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1479,6 +1479,7 @@ int __init brcmf_core_init(void)
|
||||
@@ -1545,6 +1545,7 @@ int __init brcmf_core_init(void)
|
||||
{
|
||||
if (!schedule_work(&brcmf_driver_work))
|
||||
return -EBUSY;
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -628,8 +628,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
@@ -705,8 +705,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct wireless_dev *wdev;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2787,6 +2787,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2866,6 +2866,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
* preference in cfg struct to apply this to
|
||||
* FW later while initializing the dongle
|
||||
*/
|
||||
|
||||
@@ -5,9 +5,9 @@ PKG_RELEASE=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
|
||||
PKG_MIRROR_HASH:=c53aae4b8d5ec15625a4cbf7f37e6b62a6cb258ef0310c0f620064ba94589377
|
||||
PKG_SOURCE_DATE:=2020-01-20
|
||||
PKG_SOURCE_VERSION:=43a103ff17ee5872669f8712606578c90c14591d
|
||||
PKG_MIRROR_HASH:=f3b5c23280016bbe4b825de81cd455507ca817f599c5cd9f888370d9a33f6c9e
|
||||
PKG_SOURCE_DATE:=2020-02-27
|
||||
PKG_SOURCE_VERSION:=7da66430de3fc235bfc6ebb0b85fb90ea246138d
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
@@ -86,9 +86,6 @@ DRIVER_MAKEOPTS= \
|
||||
CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
|
||||
CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
|
||||
|
||||
space :=
|
||||
space +=
|
||||
|
||||
ifneq ($(LOCAL_VARIANT),mini)
|
||||
DRIVER_MAKEOPTS += CONFIG_IEEE80211W=$(CONFIG_DRIVER_11W_SUPPORT)
|
||||
endif
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ppp
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/paulusmack/ppp
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 858976b1fc3107f1261aae337831959b511b83c2 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Mackerras <paulus@ozlabs.org>
|
||||
Date: Sat, 4 Jan 2020 12:01:32 +1100
|
||||
Subject: [PATCH] radius: Prevent buffer overflow in rc_mksid()
|
||||
|
||||
On some systems getpid() can return a value greater than 65535.
|
||||
Increase the size of buf[] to allow for this, and use slprintf()
|
||||
to make sure we never overflow it.
|
||||
|
||||
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
|
||||
---
|
||||
pppd/plugins/radius/util.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pppd/plugins/radius/util.c b/pppd/plugins/radius/util.c
|
||||
index 6f976a712951..740131e8377c 100644
|
||||
--- a/pppd/plugins/radius/util.c
|
||||
+++ b/pppd/plugins/radius/util.c
|
||||
@@ -73,9 +73,9 @@ void rc_mdelay(int msecs)
|
||||
char *
|
||||
rc_mksid (void)
|
||||
{
|
||||
- static char buf[15];
|
||||
+ static char buf[32];
|
||||
static unsigned short int cnt = 0;
|
||||
- sprintf (buf, "%08lX%04X%02hX",
|
||||
+ slprintf(buf, sizeof(buf), "%08lX%04X%02hX",
|
||||
(unsigned long int) time (NULL),
|
||||
(unsigned int) getpid (),
|
||||
cnt & 0xFF);
|
||||
@@ -0,0 +1,37 @@
|
||||
From 8d7970b8f3db727fe798b65f3377fe6787575426 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Mackerras <paulus@ozlabs.org>
|
||||
Date: Mon, 3 Feb 2020 15:53:28 +1100
|
||||
Subject: [PATCH] pppd: Fix bounds check in EAP code
|
||||
|
||||
Given that we have just checked vallen < len, it can never be the case
|
||||
that vallen >= len + sizeof(rhostname). This fixes the check so we
|
||||
actually avoid overflowing the rhostname array.
|
||||
|
||||
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
|
||||
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
|
||||
---
|
||||
pppd/eap.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pppd/eap.c b/pppd/eap.c
|
||||
index 94407f56a336..1b93db01aebd 100644
|
||||
--- a/pppd/eap.c
|
||||
+++ b/pppd/eap.c
|
||||
@@ -1420,7 +1420,7 @@ int len;
|
||||
}
|
||||
|
||||
/* Not so likely to happen. */
|
||||
- if (vallen >= len + sizeof (rhostname)) {
|
||||
+ if (len - vallen >= sizeof (rhostname)) {
|
||||
dbglog("EAP: trimming really long peer name down");
|
||||
BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
|
||||
rhostname[sizeof (rhostname) - 1] = '\0';
|
||||
@@ -1846,7 +1846,7 @@ int len;
|
||||
}
|
||||
|
||||
/* Not so likely to happen. */
|
||||
- if (vallen >= len + sizeof (rhostname)) {
|
||||
+ if (len - vallen >= sizeof (rhostname)) {
|
||||
dbglog("EAP: trimming really long peer name down");
|
||||
BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
|
||||
rhostname[sizeof (rhostname) - 1] = '\0';
|
||||
@@ -0,0 +1,61 @@
|
||||
From 8d45443bb5c9372b4c6a362ba2f443d41c5636af Mon Sep 17 00:00:00 2001
|
||||
From: Paul Mackerras <paulus@ozlabs.org>
|
||||
Date: Mon, 3 Feb 2020 16:31:42 +1100
|
||||
Subject: [PATCH] pppd: Ignore received EAP messages when not doing EAP
|
||||
|
||||
This adds some basic checks to the subroutines of eap_input to check
|
||||
that we have requested or agreed to doing EAP authentication before
|
||||
doing any processing on the received packet. The motivation is to
|
||||
make it harder for a malicious peer to disrupt the operation of pppd
|
||||
by sending unsolicited EAP packets. Note that eap_success() already
|
||||
has a check that the EAP client state is reasonable, and does nothing
|
||||
(apart from possibly printing a debug message) if not.
|
||||
|
||||
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
|
||||
---
|
||||
pppd/eap.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/pppd/eap.c b/pppd/eap.c
|
||||
index 1b93db01aebd..082e95343120 100644
|
||||
--- a/pppd/eap.c
|
||||
+++ b/pppd/eap.c
|
||||
@@ -1328,6 +1328,12 @@ int len;
|
||||
int fd;
|
||||
#endif /* USE_SRP */
|
||||
|
||||
+ /*
|
||||
+ * Ignore requests if we're not open
|
||||
+ */
|
||||
+ if (esp->es_client.ea_state <= eapClosed)
|
||||
+ return;
|
||||
+
|
||||
/*
|
||||
* Note: we update es_client.ea_id *only if* a Response
|
||||
* message is being generated. Otherwise, we leave it the
|
||||
@@ -1736,6 +1742,12 @@ int len;
|
||||
u_char dig[SHA_DIGESTSIZE];
|
||||
#endif /* USE_SRP */
|
||||
|
||||
+ /*
|
||||
+ * Ignore responses if we're not open
|
||||
+ */
|
||||
+ if (esp->es_server.ea_state <= eapClosed)
|
||||
+ return;
|
||||
+
|
||||
if (esp->es_server.ea_id != id) {
|
||||
dbglog("EAP: discarding Response %d; expected ID %d", id,
|
||||
esp->es_server.ea_id);
|
||||
@@ -2047,6 +2059,12 @@ u_char *inp;
|
||||
int id;
|
||||
int len;
|
||||
{
|
||||
+ /*
|
||||
+ * Ignore failure messages if we're not open
|
||||
+ */
|
||||
+ if (esp->es_client.ea_state <= eapClosed)
|
||||
+ return;
|
||||
+
|
||||
if (!eap_client_active(esp)) {
|
||||
dbglog("EAP unexpected failure message in state %s (%d)",
|
||||
eap_state_name(esp->es_client.ea_state),
|
||||
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
|
||||
PKG_SOURCE_DATE:=2019-12-22
|
||||
PKG_SOURCE_VERSION:=5f9ae5738372aaa3a6be2f0a278933563d3f191a
|
||||
PKG_MIRROR_HASH:=16977c2d7e68f6db3241f874df625af9bd3bafa06fe4499ecb3561c825321e5d
|
||||
PKG_SOURCE_DATE:=2020-02-12
|
||||
PKG_SOURCE_VERSION:=2ee323c01079248baa9465969df9e25b5fb68cdf
|
||||
PKG_MIRROR_HASH:=ebec09286cf5f977cac893931a5a4f27ba891db88d5e44a9b0de9446ae431527
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 6e88098ca43a3d80ae86908f7badba683c8a0d84 Mon Sep 17 00:00:00 2001
|
||||
From: Corentin Labbe <clabbe@baylibre.com>
|
||||
Date: Wed, 23 Jan 2019 11:24:18 +0000
|
||||
Subject: [PATCH 07/15] crypto: crypto4xx - Fix wrong
|
||||
ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments
|
||||
|
||||
When building without CONFIG_HW_RANDOM_PPC4XX, I hit the following build failure:
|
||||
drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_probe':
|
||||
drivers/crypto/amcc/crypto4xx_core.c:1407:20: error: passing argument 1 of 'ppc4xx_trng_probe' from incompatible pointer type [-Werror=incompatible-pointer-types]
|
||||
In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
|
||||
drivers/crypto/amcc/crypto4xx_trng.h:28:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
|
||||
drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_remove':
|
||||
drivers/crypto/amcc/crypto4xx_core.c:1434:21: error: passing argument 1 of 'ppc4xx_trng_remove' from incompatible pointer type [-Werror=incompatible-pointer-types]
|
||||
In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
|
||||
drivers/crypto/amcc/crypto4xx_trng.h:30:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
|
||||
|
||||
This patch fix the needed argument of ppc4xx_trng_probe()/ppc4xx_trng_remove() in that case.
|
||||
|
||||
Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
|
||||
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
drivers/crypto/amcc/crypto4xx_trng.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_trng.h
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_trng.h
|
||||
@@ -26,9 +26,9 @@ void ppc4xx_trng_probe(struct crypto4xx_
|
||||
void ppc4xx_trng_remove(struct crypto4xx_core_device *core_dev);
|
||||
#else
|
||||
static inline void ppc4xx_trng_probe(
|
||||
- struct crypto4xx_device *dev __maybe_unused) { }
|
||||
+ struct crypto4xx_core_device *dev __maybe_unused) { }
|
||||
static inline void ppc4xx_trng_remove(
|
||||
- struct crypto4xx_device *dev __maybe_unused) { }
|
||||
+ struct crypto4xx_core_device *dev __maybe_unused) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -1299,4 +1299,12 @@ config GPIO_VIPERBOARD
|
||||
@@ -1300,4 +1300,12 @@ config GPIO_VIPERBOARD
|
||||
|
||||
endmenu
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
+#endif
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -1251,7 +1251,6 @@ menu "SPI GPIO expanders"
|
||||
@@ -1252,7 +1252,6 @@ menu "SPI GPIO expanders"
|
||||
|
||||
config GPIO_74X164
|
||||
tristate "74x164 serial-in/parallel-out 8-bits shift register"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -1306,4 +1306,9 @@ config GPIO_NXP_74HC153
|
||||
@@ -1307,4 +1307,9 @@ config GPIO_NXP_74HC153
|
||||
Platform driver for NXP 74HC153 Dual 4-input Multiplexer. This
|
||||
provides a GPIO interface supporting input mode only.
|
||||
|
||||
|
||||
@@ -831,7 +831,7 @@
|
||||
* No flags defined yet.
|
||||
--- a/net/core/utils.c
|
||||
+++ b/net/core/utils.c
|
||||
@@ -424,8 +424,14 @@ void inet_proto_csum_replace16(__sum16 *
|
||||
@@ -441,8 +441,14 @@ void inet_proto_csum_replace16(__sum16 *
|
||||
bool pseudohdr)
|
||||
{
|
||||
__be32 diff[] = {
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
+MODULE_ALIAS("platform:" DRIVER_NAME);
|
||||
--- a/drivers/watchdog/Kconfig
|
||||
+++ b/drivers/watchdog/Kconfig
|
||||
@@ -1646,6 +1646,13 @@ config PIC32_DMT
|
||||
@@ -1647,6 +1647,13 @@ config PIC32_DMT
|
||||
To compile this driver as a loadable module, choose M here.
|
||||
The module will be called pic32-dmt.
|
||||
|
||||
|
||||
@@ -200,8 +200,11 @@ tplink,tl-wr842n-v2)
|
||||
;;
|
||||
ubnt,bullet-m|\
|
||||
ubnt,bullet-m-xw|\
|
||||
ubnt,nanostation-loco-m|\
|
||||
ubnt,nanostation-loco-m-xw|\
|
||||
ubnt,nanostation-m|\
|
||||
ubnt,nanostation-m-xw|\
|
||||
ubnt,picostation-m|\
|
||||
ubnt,rocket-m)
|
||||
ucidef_set_rssimon "wlan0" "200000" "1"
|
||||
ucidef_set_led_rssi "rssilow" "RSSILOW" "ubnt:red:link1" "wlan0" "1" "100"
|
||||
|
||||
@@ -38,6 +38,9 @@ ath79_setup_interfaces()
|
||||
ubnt,lap-120|\
|
||||
ubnt,nanobeam-ac|\
|
||||
ubnt,nanostation-ac-loco|\
|
||||
ubnt,nanostation-loco-m|\
|
||||
ubnt,nanostation-loco-m-xw|\
|
||||
ubnt,picostation-m|\
|
||||
ubnt,rocket-m|\
|
||||
ubnt,unifiac-lite|\
|
||||
ubnt,unifiac-lr|\
|
||||
|
||||
@@ -173,7 +173,9 @@ case "$FIRMWARE" in
|
||||
tplink,tl-wr842n-v1|\
|
||||
ubnt,airrouter|\
|
||||
ubnt,bullet-m|\
|
||||
ubnt,nanostation-loco-m|\
|
||||
ubnt,nanostation-m|\
|
||||
ubnt,picostation-m|\
|
||||
ubnt,rocket-m)
|
||||
ath9k_eeprom_extract "art" 4096 4096
|
||||
;;
|
||||
|
||||
@@ -24,11 +24,12 @@ migrate_wifi_path() {
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"platform/qca955x_wmac")
|
||||
path="platform/ahb/ahb:apb/18100000.wmac"
|
||||
WIFI_PATH_CHANGED=1
|
||||
;;
|
||||
"platform/ar933x_wmac")
|
||||
"platform/ahb/ahb:apb/18100000.wmac"|\
|
||||
"platform/ar933x_wmac"|\
|
||||
"platform/ar934x_wmac"|\
|
||||
"platform/qca953x_wmac"|\
|
||||
"platform/qca955x_wmac"|\
|
||||
"platform/qca956x_wmac")
|
||||
path="platform/ahb/18100000.wmac"
|
||||
WIFI_PATH_CHANGED=1
|
||||
;;
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
partition@50000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x050000 0x020000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@70000 {
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
partition@50000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x050000 0x020000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@70000 {
|
||||
|
||||
13
target/linux/ath79/dts/ar7241_ubnt_nanostation-loco-m.dts
Normal file
13
target/linux/ath79/dts/ar7241_ubnt_nanostation-loco-m.dts
Normal file
@@ -0,0 +1,13 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/dts-v1/;
|
||||
|
||||
#include "ar7241_ubnt_xm_outdoor.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "ubnt,nanostation-loco-m", "ubnt,xm", "qca,ar7241";
|
||||
model = "Ubiquiti Nanostation Loco M";
|
||||
};
|
||||
|
||||
ð1 {
|
||||
compatible = "syscon", "simple-mfd";
|
||||
};
|
||||
13
target/linux/ath79/dts/ar7241_ubnt_picostation-m.dts
Normal file
13
target/linux/ath79/dts/ar7241_ubnt_picostation-m.dts
Normal file
@@ -0,0 +1,13 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/dts-v1/;
|
||||
|
||||
#include "ar7241_ubnt_xm_outdoor.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "ubnt,picostation-m", "ubnt,xm", "qca,ar7241";
|
||||
model = "Ubiquiti Picostation M";
|
||||
};
|
||||
|
||||
ð1 {
|
||||
compatible = "syscon", "simple-mfd";
|
||||
};
|
||||
@@ -22,9 +22,6 @@
|
||||
compatible = "gpio-keys-polled";
|
||||
poll-interval = <20>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&jtag_disable_pins>;
|
||||
|
||||
reset {
|
||||
label = "Reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
@@ -96,7 +93,14 @@
|
||||
};
|
||||
|
||||
&gpio {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&jtag_disable_pins &pmx_usb_power>;
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
pmx_usb_power: usb_power {
|
||||
pinctrl-single,bits = <0x4 0x0 0xff>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
|
||||
@@ -22,9 +22,6 @@
|
||||
compatible = "gpio-keys-polled";
|
||||
poll-interval = <20>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&jtag_disable_pins>;
|
||||
|
||||
reset {
|
||||
label = "Reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
@@ -113,7 +110,14 @@
|
||||
};
|
||||
|
||||
&gpio {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&jtag_disable_pins &pmx_usb_power>;
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
pmx_usb_power: usb_power {
|
||||
pinctrl-single,bits = <0x4 0x0 0xff>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
|
||||
30
target/linux/ath79/dts/ar9342_ubnt_nanostation-loco-m-xw.dts
Normal file
30
target/linux/ath79/dts/ar9342_ubnt_nanostation-loco-m-xw.dts
Normal file
@@ -0,0 +1,30 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "ar9342_ubnt_xw.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "ubnt,nanostation-loco-m-xw", "ubnt,xw", "qca,ar9342";
|
||||
model = "Ubiquiti Nanostation Loco M (XW)";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mask = <0x1>;
|
||||
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
phy-mode = "mii";
|
||||
reset-gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-handle = <&phy1>;
|
||||
};
|
||||
@@ -96,13 +96,13 @@
|
||||
reg = <0x050000 0x760000>;
|
||||
};
|
||||
|
||||
partition@fb0000 {
|
||||
partition@7b0000 {
|
||||
label = "cfg";
|
||||
reg = <0x7b0000 0x040000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
eeprom: partition@ff0000 {
|
||||
eeprom: partition@7f0000 {
|
||||
label = "EEPROM";
|
||||
reg = <0x7f0000 0x010000>;
|
||||
read-only;
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
&apb {
|
||||
&ahb {
|
||||
pcie: pcie-controller@180c0000 {
|
||||
compatible = "qcom,ar9340-pci", "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
ahb {
|
||||
ahb: ahb {
|
||||
compatible = "simple-bus";
|
||||
ranges;
|
||||
|
||||
@@ -133,18 +133,18 @@
|
||||
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,ar9340-gmac";
|
||||
reg = <0x18070000 0x14>;
|
||||
};
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,ar9340-gmac";
|
||||
reg = <0x18070000 0x14>;
|
||||
};
|
||||
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,ar9340-wmac";
|
||||
reg = <0x18100000 0x20000>;
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,ar9340-wmac";
|
||||
reg = <0x18100000 0x20000>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb: usb@1b000000 {
|
||||
@@ -181,8 +181,8 @@
|
||||
usb_phy: usb-phy {
|
||||
compatible = "qca,ar9340-usb-phy", "qca,ar7200-usb-phy";
|
||||
|
||||
reset-names = "usb-phy", "usb-suspend-override";
|
||||
resets = <&rst 4>, <&rst 3>;
|
||||
reset-names = "usb-phy-analog", "usb-phy", "usb-suspend-override";
|
||||
resets = <&rst 11>, <&rst 4>, <&rst 3>;
|
||||
|
||||
#phy-cells = <0>;
|
||||
|
||||
|
||||
@@ -143,43 +143,43 @@
|
||||
qca,ddr-wb-channels = <&ddr_ctrl 4>, <&ddr_ctrl 3>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie0: pcie-controller@180c0000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x180c0000 0x1000>, /* CRP */
|
||||
<0x180f0000 0x100>, /* CTRL */
|
||||
<0x14000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x04000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <1>;
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,ar9330-gmac";
|
||||
reg = <0x18070000 0x4>;
|
||||
};
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
pcie0: pcie-controller@180c0000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x180c0000 0x1000>, /* CRP */
|
||||
<0x180f0000 0x100>, /* CTRL */
|
||||
<0x14000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x04000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie0 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,ar9330-gmac";
|
||||
reg = <0x18070000 0x4>;
|
||||
};
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie0 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9530-wmac";
|
||||
reg = <0x18100000 0x20000>;
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9530-wmac";
|
||||
reg = <0x18100000 0x20000>;
|
||||
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <0>;
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb0: usb@1b000000 {
|
||||
|
||||
@@ -176,65 +176,65 @@
|
||||
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie0: pcie-controller@180c0000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x180c0000 0x1000>, /* CRP */
|
||||
<0x180f0000 0x100>, /* CTRL */
|
||||
<0x14000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <1>;
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,qca9550-gmac";
|
||||
reg = <0x18070000 0x58>;
|
||||
};
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
pcie0: pcie-controller@180c0000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x180c0000 0x1000>, /* CRP */
|
||||
<0x180f0000 0x100>, /* CTRL */
|
||||
<0x14000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie0 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
pcie1: pcie-controller@18250000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x18250000 0x1000>, /* CRP */
|
||||
<0x18280000 0x100>, /* CTRL */
|
||||
<0x16000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000001 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc3>;
|
||||
interrupts = <0>;
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie0 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9550-wmac";
|
||||
reg = <0x18100000 0x10000>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie1 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <0>;
|
||||
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,qca9550-gmac";
|
||||
reg = <0x18070000 0x58>;
|
||||
};
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9550-wmac";
|
||||
reg = <0x18100000 0x10000>;
|
||||
pcie1: pcie-controller@18250000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x18250000 0x1000>, /* CRP */
|
||||
<0x18280000 0x100>, /* CTRL */
|
||||
<0x16000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000001 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc3>;
|
||||
interrupts = <0>;
|
||||
|
||||
interrupt-parent = <&intc2>;
|
||||
interrupts = <0>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie1 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb0: usb@1b000000 {
|
||||
|
||||
@@ -137,38 +137,43 @@
|
||||
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9560-wmac";
|
||||
reg = <0x18100000 0x10000>;
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,qca9560-gmac";
|
||||
reg = <0x18070000 0x64>;
|
||||
};
|
||||
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <2>;
|
||||
wmac: wmac@18100000 {
|
||||
compatible = "qca,qca9560-wmac";
|
||||
reg = <0x18100000 0x10000>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <2>;
|
||||
|
||||
pcie: pcie-controller@18250000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x18250000 0x1000>, /* CRP */
|
||||
<0x18280000 0x100>, /* CTRL */
|
||||
<0x16000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc3>;
|
||||
interrupts = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
pcie: pcie-controller@18250000 {
|
||||
compatible = "qcom,ar7240-pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0x0>;
|
||||
reg = <0x18250000 0x1000>, /* CRP */
|
||||
<0x18280000 0x100>, /* CTRL */
|
||||
<0x16000000 0x1000>; /* CFG */
|
||||
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
||||
ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
|
||||
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
||||
interrupt-parent = <&intc3>;
|
||||
interrupts = <0>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 1>;
|
||||
interrupt-map = <0 0 0 0 &pcie 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb0: usb@1b000000 {
|
||||
@@ -221,11 +226,6 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
gmac: gmac@18070000 {
|
||||
compatible = "qca,qca9560-gmac";
|
||||
reg = <0x18070000 0x64>;
|
||||
};
|
||||
};
|
||||
|
||||
usb_phy0: usb-phy {
|
||||
|
||||
@@ -101,6 +101,14 @@ define Device/ubnt_bullet-m-xw
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_bullet-m-xw
|
||||
|
||||
define Device/ubnt_picostation-m
|
||||
$(Device/ubnt-xm)
|
||||
DEVICE_TITLE := Ubiquiti Picostation M
|
||||
DEVICE_PACKAGES += rssileds
|
||||
SUPPORTED_DEVICES += bullet-m
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_picostation-m
|
||||
|
||||
define Device/ubnt_rocket-m
|
||||
$(Device/ubnt-xm)
|
||||
DEVICE_TITLE := Ubiquiti Rocket-M
|
||||
@@ -109,6 +117,22 @@ define Device/ubnt_rocket-m
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_rocket-m
|
||||
|
||||
define Device/ubnt_nanostation-loco-m
|
||||
$(Device/ubnt-xm)
|
||||
DEVICE_TITLE := Ubiquiti Nanostation Loco M
|
||||
DEVICE_PACKAGES += rssileds
|
||||
SUPPORTED_DEVICES += bullet-m
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanostation-loco-m
|
||||
|
||||
define Device/ubnt_nanostation-loco-m-xw
|
||||
$(Device/ubnt-xw)
|
||||
DEVICE_TITLE := Ubiquiti Nanostation Loco M (XW)
|
||||
DEVICE_PACKAGES += rssileds
|
||||
SUPPORTED_DEVICES += loco-m-xw
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanostation-loco-m-xw
|
||||
|
||||
define Device/ubnt_nanostation-m
|
||||
$(Device/ubnt-xm)
|
||||
DEVICE_TITLE := Ubiquiti Nanostation M
|
||||
|
||||
@@ -103,6 +103,7 @@ define Device/avm_fritz300e
|
||||
append-squashfs-fakeroot-be | pad-to 256 | \
|
||||
append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
|
||||
DEVICE_PACKAGES := fritz-tffs rssileds -swconfig
|
||||
SUPPORTED_DEVICES += fritz300e
|
||||
endef
|
||||
TARGET_DEVICES += avm_fritz300e
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- /dev/null
|
||||
+++ b/drivers/phy/phy-ar7200-usb.c
|
||||
@@ -0,0 +1,123 @@
|
||||
@@ -0,0 +1,135 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2015 Alban Bedel <albeu@free.fr>
|
||||
+ *
|
||||
@@ -212,6 +212,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+
|
||||
+struct ar7200_usb_phy {
|
||||
+ struct reset_control *rst_phy;
|
||||
+ struct reset_control *rst_phy_analog;
|
||||
+ struct reset_control *suspend_override;
|
||||
+ struct phy *phy;
|
||||
+ int gpio;
|
||||
@@ -222,12 +223,12 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ struct ar7200_usb_phy *priv = phy_get_drvdata(phy);
|
||||
+ int err = 0;
|
||||
+
|
||||
+ if (priv->rst_phy)
|
||||
+ err = reset_control_deassert(priv->rst_phy);
|
||||
+ if (!err && priv->suspend_override)
|
||||
+ if (priv->suspend_override)
|
||||
+ err = reset_control_assert(priv->suspend_override);
|
||||
+ if (err && priv->rst_phy)
|
||||
+ err = reset_control_assert(priv->rst_phy);
|
||||
+ if (priv->rst_phy)
|
||||
+ err |= reset_control_deassert(priv->rst_phy);
|
||||
+ if (priv->rst_phy_analog)
|
||||
+ err |= reset_control_deassert(priv->rst_phy_analog);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
@@ -241,6 +242,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ err = reset_control_deassert(priv->suspend_override);
|
||||
+ if (priv->rst_phy)
|
||||
+ err |= reset_control_assert(priv->rst_phy);
|
||||
+ if (priv->rst_phy_analog)
|
||||
+ err |= reset_control_assert(priv->rst_phy_analog);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
@@ -266,6 +269,15 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ return PTR_ERR(priv->rst_phy);
|
||||
+ }
|
||||
+
|
||||
+ priv->rst_phy_analog = devm_reset_control_get_optional(
|
||||
+ &pdev->dev, "usb-phy-analog");
|
||||
+ if (IS_ERR(priv->rst_phy_analog)) {
|
||||
+ if (PTR_ERR(priv->rst_phy_analog) == -ENOENT)
|
||||
+ priv->rst_phy_analog = NULL;
|
||||
+ else
|
||||
+ return PTR_ERR(priv->rst_phy_analog);
|
||||
+ }
|
||||
+
|
||||
+ priv->suspend_override = devm_reset_control_get_optional(
|
||||
+ &pdev->dev, "usb-suspend-override");
|
||||
+ if (IS_ERR(priv->suspend_override)) {
|
||||
|
||||
@@ -811,7 +811,7 @@
|
||||
* No flags defined yet.
|
||||
--- a/net/core/utils.c
|
||||
+++ b/net/core/utils.c
|
||||
@@ -424,8 +424,14 @@ void inet_proto_csum_replace16(__sum16 *
|
||||
@@ -441,8 +441,14 @@ void inet_proto_csum_replace16(__sum16 *
|
||||
bool pseudohdr)
|
||||
{
|
||||
__be32 diff[] = {
|
||||
|
||||
@@ -24,6 +24,13 @@ buffalo,wzr-1750dhp)
|
||||
board_config_flush
|
||||
exit 0
|
||||
;;
|
||||
luxul,abr-4500-v1|\
|
||||
luxul,xbr-4500-v1)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0"
|
||||
board_config_flush
|
||||
exit 0
|
||||
;;
|
||||
phicomm,k3)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan" "1:lan" "2:lan" "3:wan" "5@eth0"
|
||||
|
||||
@@ -83,6 +83,13 @@ define Build/asus-trx
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/luxul-lxl
|
||||
$(STAGING_DIR_HOST)/bin/lxlfw create $@.new \
|
||||
-i $@ \
|
||||
-b $(LUXUL_BOARD)
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/seama-nand
|
||||
# Seama entity
|
||||
$(STAGING_DIR_HOST)/bin/oseama \
|
||||
@@ -102,6 +109,7 @@ endef
|
||||
|
||||
DEVICE_VARS += PRODUCTID SIGNATURE NETGEAR_BOARD_ID NETGEAR_REGION TPLINK_BOARD
|
||||
DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
|
||||
DEVICE_VARS += LUXUL_BOARD
|
||||
|
||||
IEEE8021X := wpad-basic
|
||||
B43 := $(IEEE8021X) kmod-b43
|
||||
@@ -249,6 +257,27 @@ define Device/linksys-ea9500
|
||||
endef
|
||||
# TARGET_DEVICES += linksys-ea9500
|
||||
|
||||
define Device/luxul
|
||||
IMAGES := lxl
|
||||
IMAGE/lxl := append-ubi | trx-nand | luxul-lxl
|
||||
endef
|
||||
|
||||
define Device/luxul-abr-4500
|
||||
$(Device/luxul)
|
||||
DEVICE_TITLE := Luxul ABR-4500
|
||||
DEVICE_PACKAGES := $(USB3_PACKAGES)
|
||||
LUXUL_BOARD := ABR-4500
|
||||
endef
|
||||
TARGET_DEVICES += luxul-abr-4500
|
||||
|
||||
define Device/luxul-xbr-4500
|
||||
$(Device/luxul)
|
||||
DEVICE_TITLE := Luxul XBR-4500
|
||||
DEVICE_PACKAGES := $(USB3_PACKAGES)
|
||||
LUXUL_BOARD := XBR-4500
|
||||
endef
|
||||
TARGET_DEVICES += luxul-xbr-4500
|
||||
|
||||
define Device/netgear
|
||||
IMAGES := chk
|
||||
IMAGE/chk := append-ubi | trx-nand | netgear-chk
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1222,6 +1222,18 @@ static const struct flash_info *spi_nor_
|
||||
@@ -1227,6 +1227,18 @@ static const struct flash_info *spi_nor_
|
||||
}
|
||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||
id[0], id[1], id[2]);
|
||||
|
||||
@@ -88,8 +88,8 @@ Signed-off-by: Slawomir Stepien <sst@poczta.fm>
|
||||
+make sense for developers (since it avoids problems with namespaces).
|
||||
--- a/drivers/of/Kconfig
|
||||
+++ b/drivers/of/Kconfig
|
||||
@@ -112,4 +112,11 @@ config OF_OVERLAY
|
||||
config OF_NUMA
|
||||
@@ -116,4 +116,11 @@ config OF_DMA_DEFAULT_COHERENT
|
||||
# arches should select this if DMA is coherent by default for OF devices
|
||||
bool
|
||||
|
||||
+config OF_CONFIGFS
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/kernel/cgroup/cgroup.c
|
||||
+++ b/kernel/cgroup/cgroup.c
|
||||
@@ -5206,6 +5206,8 @@ int __init cgroup_init_early(void)
|
||||
@@ -5207,6 +5207,8 @@ int __init cgroup_init_early(void)
|
||||
}
|
||||
|
||||
static u16 cgroup_disable_mask __initdata;
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/**
|
||||
* cgroup_init - cgroup initialization
|
||||
@@ -5244,6 +5246,12 @@ int __init cgroup_init(void)
|
||||
@@ -5245,6 +5247,12 @@ int __init cgroup_init(void)
|
||||
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
for_each_subsys(ss, ssid) {
|
||||
if (ss->early_init) {
|
||||
struct cgroup_subsys_state *css =
|
||||
@@ -5635,6 +5643,28 @@ static int __init cgroup_disable(char *s
|
||||
@@ -5636,6 +5644,28 @@ static int __init cgroup_disable(char *s
|
||||
}
|
||||
__setup("cgroup_disable=", cgroup_disable);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2499,7 +2499,7 @@ static void lan78xx_init_stats(struct la
|
||||
@@ -2500,7 +2500,7 @@ static void lan78xx_init_stats(struct la
|
||||
dev->stats.rollover_max.eee_tx_lpi_transitions = 0xFFFFFFFF;
|
||||
dev->stats.rollover_max.eee_tx_lpi_time = 0xFFFFFFFF;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2515,6 +2515,22 @@ static int lan78xx_open(struct net_devic
|
||||
@@ -2516,6 +2516,22 @@ static int lan78xx_open(struct net_devic
|
||||
|
||||
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -1999,6 +1999,7 @@ static int lan78xx_phy_init(struct lan78
|
||||
@@ -2000,6 +2000,7 @@ static int lan78xx_phy_init(struct lan78
|
||||
{
|
||||
int ret;
|
||||
u32 mii_adv;
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
struct phy_device *phydev = dev->net->phydev;
|
||||
|
||||
phydev = phy_find_first(dev->mdiobus);
|
||||
@@ -2071,6 +2072,19 @@ static int lan78xx_phy_init(struct lan78
|
||||
@@ -2072,6 +2073,19 @@ static int lan78xx_phy_init(struct lan78
|
||||
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
|
||||
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -1999,7 +1999,9 @@ static int lan78xx_phy_init(struct lan78
|
||||
@@ -2000,7 +2000,9 @@ static int lan78xx_phy_init(struct lan78
|
||||
{
|
||||
int ret;
|
||||
u32 mii_adv;
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
struct phy_device *phydev = dev->net->phydev;
|
||||
|
||||
phydev = phy_find_first(dev->mdiobus);
|
||||
@@ -2072,18 +2074,27 @@ static int lan78xx_phy_init(struct lan78
|
||||
@@ -2073,18 +2075,27 @@ static int lan78xx_phy_init(struct lan78
|
||||
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
|
||||
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2195,7 +2195,7 @@ static int lan78xx_change_mtu(struct net
|
||||
@@ -2196,7 +2196,7 @@ static int lan78xx_change_mtu(struct net
|
||||
if ((ll_mtu % dev->maxpacket) == 0)
|
||||
return -EDOM;
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
netdev->mtu = new_mtu;
|
||||
|
||||
@@ -2488,7 +2488,8 @@ static int lan78xx_reset(struct lan78xx_
|
||||
@@ -2489,7 +2489,8 @@ static int lan78xx_reset(struct lan78xx_
|
||||
buf |= FCT_TX_CTL_EN_;
|
||||
ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2074,6 +2074,22 @@ static int lan78xx_phy_init(struct lan78
|
||||
@@ -2075,6 +2075,22 @@ static int lan78xx_phy_init(struct lan78
|
||||
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
|
||||
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
|
||||
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Set LED modes:
|
||||
* led: 0=link/activity 1=link1000/activity
|
||||
* 2=link100/activity 3=link10/activity
|
||||
@@ -2541,22 +2557,6 @@ static int lan78xx_open(struct net_devic
|
||||
@@ -2542,22 +2558,6 @@ static int lan78xx_open(struct net_devic
|
||||
|
||||
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2959,8 +2959,12 @@ static void lan78xx_rx_csum_offload(stru
|
||||
@@ -2960,8 +2960,12 @@ static void lan78xx_rx_csum_offload(stru
|
||||
struct sk_buff *skb,
|
||||
u32 rx_cmd_a, u32 rx_cmd_b)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2280,7 +2280,7 @@ static int lan78xx_set_features(struct n
|
||||
@@ -2281,7 +2281,7 @@ static int lan78xx_set_features(struct n
|
||||
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
|
||||
else
|
||||
pdata->rfe_ctl &= ~RFE_CTL_VLAN_FILTER_;
|
||||
@@ -2895,6 +2895,9 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
@@ -2896,6 +2896,9 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
if (DEFAULT_TSO_CSUM_ENABLE)
|
||||
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -64,6 +64,7 @@
|
||||
@@ -65,6 +65,7 @@
|
||||
#define DEFAULT_RX_CSUM_ENABLE (true)
|
||||
#define DEFAULT_TSO_CSUM_ENABLE (true)
|
||||
#define DEFAULT_VLAN_FILTER_ENABLE (true)
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
#define TX_OVERHEAD (8)
|
||||
#define RXW_PADDING 2
|
||||
|
||||
@@ -2280,6 +2281,11 @@ static int lan78xx_set_features(struct n
|
||||
@@ -2281,6 +2282,11 @@ static int lan78xx_set_features(struct n
|
||||
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
if (features & NETIF_F_HW_VLAN_CTAG_FILTER)
|
||||
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
|
||||
else
|
||||
@@ -2895,6 +2901,9 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
@@ -2896,6 +2902,9 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
if (DEFAULT_TSO_CSUM_ENABLE)
|
||||
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
|
||||
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
if (DEFAULT_VLAN_FILTER_ENABLE)
|
||||
dev->net->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
||||
|
||||
@@ -2975,6 +2984,16 @@ static void lan78xx_rx_csum_offload(stru
|
||||
@@ -2976,6 +2985,16 @@ static void lan78xx_rx_csum_offload(stru
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
|
||||
{
|
||||
int status;
|
||||
@@ -3039,6 +3058,8 @@ static int lan78xx_rx(struct lan78xx_net
|
||||
@@ -3040,6 +3059,8 @@ static int lan78xx_rx(struct lan78xx_net
|
||||
if (skb->len == size) {
|
||||
lan78xx_rx_csum_offload(dev, skb,
|
||||
rx_cmd_a, rx_cmd_b);
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
skb_trim(skb, skb->len - 4); /* remove fcs */
|
||||
skb->truesize = size + sizeof(struct sk_buff);
|
||||
@@ -3057,6 +3078,7 @@ static int lan78xx_rx(struct lan78xx_net
|
||||
@@ -3058,6 +3079,7 @@ static int lan78xx_rx(struct lan78xx_net
|
||||
skb_set_tail_pointer(skb2, size);
|
||||
|
||||
lan78xx_rx_csum_offload(dev, skb2, rx_cmd_a, rx_cmd_b);
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2971,12 +2971,13 @@ static void lan78xx_rx_csum_offload(stru
|
||||
@@ -2972,12 +2972,13 @@ static void lan78xx_rx_csum_offload(stru
|
||||
struct sk_buff *skb,
|
||||
u32 rx_cmd_a, u32 rx_cmd_b)
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -415,6 +415,15 @@ static int msg_level = -1;
|
||||
@@ -416,6 +416,15 @@ static int msg_level = -1;
|
||||
module_param(msg_level, int, 0);
|
||||
MODULE_PARM_DESC(msg_level, "Override default message level");
|
||||
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||
{
|
||||
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
||||
@@ -2898,8 +2907,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
@@ -2899,8 +2908,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
if (DEFAULT_RX_CSUM_ENABLE)
|
||||
dev->net->features |= NETIF_F_RXCSUM;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2590,6 +2590,8 @@ static int lan78xx_open(struct net_devic
|
||||
@@ -2591,6 +2591,8 @@ static int lan78xx_open(struct net_devic
|
||||
|
||||
dev->link_on = false;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2590,8 +2590,6 @@ static int lan78xx_open(struct net_devic
|
||||
@@ -2591,8 +2591,6 @@ static int lan78xx_open(struct net_devic
|
||||
|
||||
dev->link_on = false;
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
priv->chip_rev = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_REV);
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -36,7 +36,8 @@
|
||||
@@ -37,7 +37,8 @@
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/microchipphy.h>
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
#include <linux/of_net.h>
|
||||
#include "lan78xx.h"
|
||||
|
||||
@@ -1763,6 +1764,7 @@ done:
|
||||
@@ -1764,6 +1765,7 @@ done:
|
||||
|
||||
static int lan78xx_mdio_init(struct lan78xx_net *dev)
|
||||
{
|
||||
@@ -93,7 +93,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
int ret;
|
||||
|
||||
dev->mdiobus = mdiobus_alloc();
|
||||
@@ -1792,7 +1794,9 @@ static int lan78xx_mdio_init(struct lan7
|
||||
@@ -1793,7 +1795,9 @@ static int lan78xx_mdio_init(struct lan7
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -425,6 +425,11 @@ static bool enable_tso;
|
||||
@@ -426,6 +426,11 @@ static bool enable_tso;
|
||||
module_param(enable_tso, bool, 0644);
|
||||
MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
|
||||
|
||||
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||
{
|
||||
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
||||
@@ -3715,7 +3720,12 @@ static int lan78xx_probe(struct usb_inte
|
||||
@@ -3730,7 +3735,12 @@ static int lan78xx_probe(struct usb_inte
|
||||
dev->pipe_intr = usb_rcvintpipe(dev->udev,
|
||||
dev->ep_intr->desc.bEndpointAddress &
|
||||
USB_ENDPOINT_NUMBER_MASK);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2463,6 +2463,15 @@ static int lan78xx_reset(struct lan78xx_
|
||||
@@ -2464,6 +2464,15 @@ static int lan78xx_reset(struct lan78xx_
|
||||
|
||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||
buf |= HW_CFG_MEF_;
|
||||
|
||||
@@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
@@ -2248,6 +2250,69 @@ static void b44_adjust_link(struct net_d
|
||||
@@ -2251,6 +2253,69 @@ static void b44_adjust_link(struct net_d
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
static int b44_register_phy_one(struct b44 *bp)
|
||||
{
|
||||
struct mii_bus *mii_bus;
|
||||
@@ -2283,6 +2348,9 @@ static int b44_register_phy_one(struct b
|
||||
@@ -2286,6 +2351,9 @@ static int b44_register_phy_one(struct b
|
||||
if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) &&
|
||||
(sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) {
|
||||
|
||||
@@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
dev_info(sdev->dev,
|
||||
"could not find PHY at %i, use fixed one\n",
|
||||
bp->phy_addr);
|
||||
@@ -2477,6 +2545,7 @@ static void b44_remove_one(struct ssb_de
|
||||
@@ -2480,6 +2548,7 @@ static void b44_remove_one(struct ssb_de
|
||||
unregister_netdev(dev);
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
b44_unregister_phy_one(bp);
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
return 0;
|
||||
@@ -2178,6 +2203,8 @@ static int b44_get_invariants(struct b44
|
||||
@@ -2181,6 +2206,8 @@ static int b44_get_invariants(struct b44
|
||||
* valid PHY address. */
|
||||
bp->phy_addr &= 0x1F;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Signed-off-by: Mathias Adam <m.adam--openwrt@adamis.de>
|
||||
|
||||
--- a/drivers/watchdog/Kconfig
|
||||
+++ b/drivers/watchdog/Kconfig
|
||||
@@ -1472,6 +1472,15 @@ config WDT_MTX1
|
||||
@@ -1473,6 +1473,15 @@ config WDT_MTX1
|
||||
Hardware driver for the MTX-1 boards. This is a watchdog timer that
|
||||
will reboot the machine after a 100 seconds timer expired.
|
||||
|
||||
|
||||
@@ -1,203 +0,0 @@
|
||||
From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
Date: Tue, 18 Dec 2018 10:19:02 +0100
|
||||
Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device
|
||||
|
||||
Trying to register the DSP platform device results in a null pointer
|
||||
access:
|
||||
|
||||
[ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20
|
||||
[ 0.135208] Oops[#1]:
|
||||
[ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87
|
||||
...
|
||||
[ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4
|
||||
[ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390
|
||||
...
|
||||
|
||||
This happens because it tries to copy the passed platform data over the
|
||||
platform_device's unpopulated platform_data.
|
||||
|
||||
Since this code has been broken since its submission, no driver was ever
|
||||
submitted for it, and apparently nobody was using it, just remove it
|
||||
instead of trying to fix it.
|
||||
|
||||
Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
|
||||
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
---
|
||||
arch/mips/bcm63xx/Makefile | 6 +--
|
||||
arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 --------
|
||||
arch/mips/bcm63xx/dev-dsp.c | 56 ----------------------
|
||||
.../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------
|
||||
.../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 --
|
||||
5 files changed, 3 insertions(+), 98 deletions(-)
|
||||
delete mode 100644 arch/mips/bcm63xx/dev-dsp.c
|
||||
delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
|
||||
|
||||
--- a/arch/mips/bcm63xx/Makefile
|
||||
+++ b/arch/mips/bcm63xx/Makefile
|
||||
@@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
|
||||
- setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
|
||||
- dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
|
||||
- dev-wdt.o dev-usb-usbd.o
|
||||
+ setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \
|
||||
+ dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \
|
||||
+ dev-usb-usbd.o
|
||||
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
||||
|
||||
obj-y += boards/
|
||||
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <bcm63xx_nvram.h>
|
||||
#include <bcm63xx_dev_pci.h>
|
||||
#include <bcm63xx_dev_enet.h>
|
||||
-#include <bcm63xx_dev_dsp.h>
|
||||
#include <bcm63xx_dev_flash.h>
|
||||
#include <bcm63xx_dev_hsspi.h>
|
||||
#include <bcm63xx_dev_pcmcia.h>
|
||||
@@ -289,14 +288,6 @@ static struct board_info __initdata boar
|
||||
.has_pccard = 1,
|
||||
.has_ehci0 = 1,
|
||||
|
||||
- .has_dsp = 1,
|
||||
- .dsp = {
|
||||
- .gpio_rst = 6,
|
||||
- .gpio_int = 34,
|
||||
- .cs = 2,
|
||||
- .ext_irq = 2,
|
||||
- },
|
||||
-
|
||||
.leds = {
|
||||
{
|
||||
.name = "adsl-fail",
|
||||
@@ -401,14 +392,6 @@ static struct board_info __initdata boar
|
||||
|
||||
.has_ohci0 = 1,
|
||||
|
||||
- .has_dsp = 1,
|
||||
- .dsp = {
|
||||
- .gpio_rst = 6,
|
||||
- .gpio_int = 34,
|
||||
- .ext_irq = 2,
|
||||
- .cs = 2,
|
||||
- },
|
||||
-
|
||||
.leds = {
|
||||
{
|
||||
.name = "adsl-fail",
|
||||
@@ -898,9 +881,6 @@ int __init board_register_devices(void)
|
||||
if (board.has_usbd)
|
||||
bcm63xx_usbd_register(&board.usbd);
|
||||
|
||||
- if (board.has_dsp)
|
||||
- bcm63xx_dsp_register(&board.dsp);
|
||||
-
|
||||
/* Generate MAC address for WLAN and register our SPROM,
|
||||
* do this after registering enet devices
|
||||
*/
|
||||
--- a/arch/mips/bcm63xx/dev-dsp.c
|
||||
+++ /dev/null
|
||||
@@ -1,56 +0,0 @@
|
||||
-/*
|
||||
- * Broadcom BCM63xx VoIP DSP registration
|
||||
- *
|
||||
- * This file is subject to the terms and conditions of the GNU General Public
|
||||
- * License. See the file "COPYING" in the main directory of this archive
|
||||
- * for more details.
|
||||
- *
|
||||
- * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
|
||||
- */
|
||||
-
|
||||
-#include <linux/init.h>
|
||||
-#include <linux/kernel.h>
|
||||
-#include <linux/platform_device.h>
|
||||
-
|
||||
-#include <bcm63xx_cpu.h>
|
||||
-#include <bcm63xx_dev_dsp.h>
|
||||
-#include <bcm63xx_regs.h>
|
||||
-#include <bcm63xx_io.h>
|
||||
-
|
||||
-static struct resource voip_dsp_resources[] = {
|
||||
- {
|
||||
- .start = -1, /* filled at runtime */
|
||||
- .end = -1, /* filled at runtime */
|
||||
- .flags = IORESOURCE_MEM,
|
||||
- },
|
||||
- {
|
||||
- .start = -1, /* filled at runtime */
|
||||
- .flags = IORESOURCE_IRQ,
|
||||
- },
|
||||
-};
|
||||
-
|
||||
-static struct platform_device bcm63xx_voip_dsp_device = {
|
||||
- .name = "bcm63xx-voip-dsp",
|
||||
- .id = -1,
|
||||
- .num_resources = ARRAY_SIZE(voip_dsp_resources),
|
||||
- .resource = voip_dsp_resources,
|
||||
-};
|
||||
-
|
||||
-int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd)
|
||||
-{
|
||||
- struct bcm63xx_dsp_platform_data *dpd;
|
||||
- u32 val;
|
||||
-
|
||||
- /* Get the memory window */
|
||||
- val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1));
|
||||
- val &= MPI_CSBASE_BASE_MASK;
|
||||
- voip_dsp_resources[0].start = val;
|
||||
- voip_dsp_resources[0].end = val + 0xFFFFFFF;
|
||||
- voip_dsp_resources[1].start = pd->ext_irq;
|
||||
-
|
||||
- /* copy given platform data */
|
||||
- dpd = bcm63xx_voip_dsp_device.dev.platform_data;
|
||||
- memcpy(dpd, pd, sizeof (*pd));
|
||||
-
|
||||
- return platform_device_register(&bcm63xx_voip_dsp_device);
|
||||
-}
|
||||
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
|
||||
+++ /dev/null
|
||||
@@ -1,14 +0,0 @@
|
||||
-/* SPDX-License-Identifier: GPL-2.0 */
|
||||
-#ifndef __BCM63XX_DSP_H
|
||||
-#define __BCM63XX_DSP_H
|
||||
-
|
||||
-struct bcm63xx_dsp_platform_data {
|
||||
- unsigned gpio_rst;
|
||||
- unsigned gpio_int;
|
||||
- unsigned cs;
|
||||
- unsigned ext_irq;
|
||||
-};
|
||||
-
|
||||
-int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd);
|
||||
-
|
||||
-#endif /* __BCM63XX_DSP_H */
|
||||
--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
|
||||
+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
|
||||
@@ -7,7 +7,6 @@
|
||||
#include <linux/leds.h>
|
||||
#include <bcm63xx_dev_enet.h>
|
||||
#include <bcm63xx_dev_usb_usbd.h>
|
||||
-#include <bcm63xx_dev_dsp.h>
|
||||
|
||||
/*
|
||||
* flash mapping
|
||||
@@ -31,7 +30,6 @@ struct board_info {
|
||||
unsigned int has_ohci0:1;
|
||||
unsigned int has_ehci0:1;
|
||||
unsigned int has_usbd:1;
|
||||
- unsigned int has_dsp:1;
|
||||
unsigned int has_uart0:1;
|
||||
unsigned int has_uart1:1;
|
||||
|
||||
@@ -43,9 +41,6 @@ struct board_info {
|
||||
/* USB config */
|
||||
struct bcm63xx_usbd_platform_data usbd;
|
||||
|
||||
- /* DSP config */
|
||||
- struct bcm63xx_dsp_platform_data dsp;
|
||||
-
|
||||
/* GPIO LEDs */
|
||||
struct gpio_led leds[5];
|
||||
|
||||
@@ -5738,6 +5738,7 @@ CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_X509_CERTIFICATE_PARSER is not set
|
||||
# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
|
||||
# CONFIG_X86_DECODER_SELFTEST is not set
|
||||
# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
||||
CONFIG_X86_SYSFB=y
|
||||
# CONFIG_XEN is not set
|
||||
|
||||
@@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
config MODULES_TREE_LOOKUP
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3022,9 +3022,11 @@ static struct module *setup_load_info(st
|
||||
@@ -3024,9 +3024,11 @@ static struct module *setup_load_info(st
|
||||
|
||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||
{
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
|
||||
modmagic = NULL;
|
||||
|
||||
@@ -3045,6 +3047,7 @@ static int check_modinfo(struct module *
|
||||
@@ -3047,6 +3049,7 @@ static int check_modinfo(struct module *
|
||||
mod->name);
|
||||
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1461,6 +1461,9 @@ int genphy_update_link(struct phy_device
|
||||
@@ -1462,6 +1462,9 @@ int genphy_update_link(struct phy_device
|
||||
{
|
||||
int status;
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From d68b4aa22e8c625685bfad642dd7337948dc0ad1 Mon Sep 17 00:00:00 2001
|
||||
From: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
||||
Date: Mon, 6 Jan 2020 13:07:56 +0100
|
||||
Subject: [PATCH] mtd: spi-nor: add support for Gigadevice GD25D05
|
||||
|
||||
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
|
||||
---
|
||||
drivers/mtd/spi-nor/spi-nor.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -976,6 +976,11 @@ static const struct flash_info spi_nor_i
|
||||
|
||||
/* GigaDevice */
|
||||
{
|
||||
+ "gd25d05", INFO(0xc84010, 0, 64 * 1024, 1,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ },
|
||||
+ {
|
||||
"gd25q16", INFO(0xc84015, 0, 64 * 1024, 32,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#define PACKET_FANOUT_LB 1
|
||||
--- a/net/packet/af_packet.c
|
||||
+++ b/net/packet/af_packet.c
|
||||
@@ -1830,6 +1830,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1836,6 +1836,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sockaddr_pkt *spkt;
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/*
|
||||
* When we registered the protocol we saved the socket in the data
|
||||
@@ -1837,6 +1838,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1843,6 +1844,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
*/
|
||||
|
||||
sk = pt->af_packet_priv;
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/*
|
||||
* Yank back the headers [hope the device set this
|
||||
@@ -1849,7 +1851,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1855,7 +1857,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
* so that this procedure is noop.
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
goto out;
|
||||
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
@@ -2076,12 +2078,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
@@ -2082,12 +2084,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
unsigned int snaplen, res;
|
||||
bool is_drop_n_account = false;
|
||||
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -2207,12 +2209,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
@@ -2213,12 +2215,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3295,6 +3297,7 @@ static int packet_create(struct net *net
|
||||
@@ -3301,6 +3303,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3908,6 +3911,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3923,6 +3926,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3960,6 +3973,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3975,6 +3988,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
||||
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1922,6 +2084,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1920,6 +2082,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1959,6 +2130,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1957,6 +2128,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_FWMARK])
|
||||
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
||||
@@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2074,6 +2285,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2072,6 +2283,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2103,6 +2320,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2101,6 +2318,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(0) +
|
||||
/* IFLA_IPTUN_FWMARK */
|
||||
nla_total_size(4) +
|
||||
@@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -2110,6 +2345,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2108,6 +2343,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2119,9 +2357,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2117,9 +2355,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||
@@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2161,6 +2417,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2159,6 +2415,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
|
||||
&changeupper_info.info);
|
||||
}
|
||||
@@ -6970,6 +7017,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -6961,6 +7008,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1105,6 +1105,9 @@ void phy_detach(struct phy_device *phyde
|
||||
@@ -1106,6 +1106,9 @@ void phy_detach(struct phy_device *phyde
|
||||
struct module *ndev_owner = dev->dev.parent->driver->owner;
|
||||
struct mii_bus *bus;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1032,6 +1032,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1037,6 +1037,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
@@ -8,7 +8,7 @@
|
||||
{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) },
|
||||
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
|
||||
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
@@ -1201,11 +1202,12 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1206,11 +1207,12 @@ static const struct flash_info spi_nor_i
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
|
||||
if (tmp < 0) {
|
||||
@@ -1216,10 +1218,16 @@ static const struct flash_info *spi_nor_
|
||||
@@ -1221,10 +1223,16 @@ static const struct flash_info *spi_nor_
|
||||
for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) {
|
||||
info = &spi_nor_ids[tmp];
|
||||
if (info->id_len) {
|
||||
@@ -42,7 +42,7 @@
|
||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||
id[0], id[1], id[2]);
|
||||
return ERR_PTR(-ENODEV);
|
||||
@@ -2679,7 +2687,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2684,7 +2692,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
info = spi_nor_match_id(name);
|
||||
/* Try to auto-detect if chip name wasn't specified or not found */
|
||||
if (!info)
|
||||
@@ -51,7 +51,7 @@
|
||||
if (IS_ERR_OR_NULL(info))
|
||||
return -ENOENT;
|
||||
|
||||
@@ -2690,7 +2698,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2695,7 +2703,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (name && info->id_len) {
|
||||
const struct flash_info *jinfo;
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
clock-names = "cpu", "l2";
|
||||
clock-latency = <100000>;
|
||||
cpu-supply = <&smb208_s2b>;
|
||||
voltage-tolerance = <5>;
|
||||
cooling-min-state = <0>;
|
||||
cooling-max-state = <10>;
|
||||
#cooling-cells = <2>;
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
--- a/drivers/cpufreq/cpufreq-dt.c
|
||||
+++ b/drivers/cpufreq/cpufreq-dt.c
|
||||
@@ -49,11 +49,41 @@ static int set_target(struct cpufreq_pol
|
||||
@@ -49,11 +49,42 @@ static int set_target(struct cpufreq_pol
|
||||
struct private_data *priv = policy->driver_data;
|
||||
int ret;
|
||||
unsigned long target_freq = policy->freq_table[index].frequency * 1000;
|
||||
@@ -43,6 +43,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
+ l2_freq = clk_get_rate(l2_clk);
|
||||
+
|
||||
+ if (l2_freq != new_l2_freq) {
|
||||
+ ret = clk_set_rate(l2_clk, policy->l2_rate[0]);
|
||||
+ /* scale l2 with the core */
|
||||
+ ret = clk_set_rate(l2_clk, new_l2_freq);
|
||||
+ }
|
||||
|
||||
@@ -11,7 +11,7 @@ the ubi volume created by the other.
|
||||
---
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1031,7 +1031,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1036,7 +1036,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx25u6435f", INFO(0xc22537, 0, 64 * 1024, 128, SECT_4K) },
|
||||
{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
|
||||
{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
|
||||
|
||||
@@ -77,8 +77,8 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
*
|
||||
* A side effect of the link creation is re-ordering of dpm_list and the
|
||||
* devices_kset list by moving the consumer device and all devices depending
|
||||
@@ -182,7 +182,8 @@ struct device_link *device_link_add(stru
|
||||
struct device_link *link;
|
||||
@@ -183,7 +183,8 @@ struct device_link *device_link_add(stru
|
||||
bool rpm_put_supplier = false;
|
||||
|
||||
if (!consumer || !supplier ||
|
||||
- ((flags & DL_FLAG_STATELESS) && (flags & DL_FLAG_AUTOREMOVE)))
|
||||
@@ -86,8 +86,8 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
+ (flags & DL_FLAG_AUTOREMOVE_CONSUMER)))
|
||||
return NULL;
|
||||
|
||||
device_links_write_lock();
|
||||
@@ -200,8 +201,10 @@ struct device_link *device_link_add(stru
|
||||
if (flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) {
|
||||
@@ -209,8 +210,10 @@ struct device_link *device_link_add(stru
|
||||
}
|
||||
|
||||
list_for_each_entry(link, &supplier->links.consumers, s_node)
|
||||
@@ -99,7 +99,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
link = kzalloc(sizeof(*link), GFP_KERNEL);
|
||||
if (!link)
|
||||
@@ -233,6 +236,7 @@ struct device_link *device_link_add(stru
|
||||
@@ -237,6 +240,7 @@ struct device_link *device_link_add(stru
|
||||
link->consumer = consumer;
|
||||
INIT_LIST_HEAD(&link->c_node);
|
||||
link->flags = flags;
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
/* Determine the initial link state. */
|
||||
if (flags & DL_FLAG_STATELESS) {
|
||||
@@ -303,8 +307,10 @@ static void __device_link_free_srcu(stru
|
||||
@@ -311,8 +315,10 @@ static void __device_link_free_srcu(stru
|
||||
device_link_free(container_of(rhead, struct device_link, rcu_head));
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
dev_info(link->consumer, "Dropping the link to %s\n",
|
||||
dev_name(link->supplier));
|
||||
|
||||
@@ -316,8 +322,10 @@ static void __device_link_del(struct dev
|
||||
@@ -324,8 +330,10 @@ static void __device_link_del(struct dev
|
||||
call_srcu(&device_links_srcu, &link->rcu_head, __device_link_free_srcu);
|
||||
}
|
||||
#else /* !CONFIG_SRCU */
|
||||
@@ -131,7 +131,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
dev_info(link->consumer, "Dropping the link to %s\n",
|
||||
dev_name(link->supplier));
|
||||
|
||||
@@ -335,18 +343,50 @@ static void __device_link_del(struct dev
|
||||
@@ -343,18 +351,50 @@ static void __device_link_del(struct dev
|
||||
* @link: Device link to delete.
|
||||
*
|
||||
* The caller must ensure proper synchronization of this function with runtime
|
||||
@@ -184,7 +184,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
static void device_links_missing_supplier(struct device *dev)
|
||||
{
|
||||
struct device_link *link;
|
||||
@@ -454,8 +494,8 @@ static void __device_links_no_driver(str
|
||||
@@ -462,8 +502,8 @@ static void __device_links_no_driver(str
|
||||
if (link->flags & DL_FLAG_STATELESS)
|
||||
continue;
|
||||
|
||||
@@ -195,7 +195,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
else if (link->status != DL_STATE_SUPPLIER_UNBIND)
|
||||
WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
|
||||
}
|
||||
@@ -490,8 +530,18 @@ void device_links_driver_cleanup(struct
|
||||
@@ -498,8 +538,18 @@ void device_links_driver_cleanup(struct
|
||||
if (link->flags & DL_FLAG_STATELESS)
|
||||
continue;
|
||||
|
||||
@@ -215,7 +215,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
WRITE_ONCE(link->status, DL_STATE_DORMANT);
|
||||
}
|
||||
|
||||
@@ -608,13 +658,13 @@ static void device_links_purge(struct de
|
||||
@@ -616,13 +666,13 @@ static void device_links_purge(struct de
|
||||
|
||||
list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
|
||||
WARN_ON(link->status == DL_STATE_ACTIVE);
|
||||
@@ -231,7 +231,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
}
|
||||
|
||||
device_links_write_unlock();
|
||||
@@ -1036,6 +1086,34 @@ static ssize_t online_store(struct devic
|
||||
@@ -1044,6 +1094,34 @@ static ssize_t online_store(struct devic
|
||||
}
|
||||
static DEVICE_ATTR_RW(online);
|
||||
|
||||
@@ -266,7 +266,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
int device_add_groups(struct device *dev, const struct attribute_group **groups)
|
||||
{
|
||||
return sysfs_create_groups(&dev->kobj, groups);
|
||||
@@ -1207,8 +1285,20 @@ static int device_add_attrs(struct devic
|
||||
@@ -1215,8 +1293,20 @@ static int device_add_attrs(struct devic
|
||||
goto err_remove_dev_groups;
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
err_remove_dev_groups:
|
||||
device_remove_groups(dev, dev->groups);
|
||||
err_remove_type_groups:
|
||||
@@ -1226,6 +1316,8 @@ static void device_remove_attrs(struct d
|
||||
@@ -1234,6 +1324,8 @@ static void device_remove_attrs(struct d
|
||||
struct class *class = dev->class;
|
||||
const struct device_type *type = dev->type;
|
||||
|
||||
@@ -462,7 +462,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
extern int __must_check bus_create_file(struct bus_type *,
|
||||
struct bus_attribute *);
|
||||
@@ -750,14 +752,16 @@ enum device_link_state {
|
||||
@@ -751,14 +753,16 @@ enum device_link_state {
|
||||
* Device link flags.
|
||||
*
|
||||
* STATELESS: The core won't track the presence of supplier/consumer drivers.
|
||||
@@ -484,7 +484,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
/**
|
||||
* struct device_link - Device link representation.
|
||||
@@ -768,6 +772,7 @@ enum device_link_state {
|
||||
@@ -769,6 +773,7 @@ enum device_link_state {
|
||||
* @status: The state of the link (with respect to the presence of drivers).
|
||||
* @flags: Link flags.
|
||||
* @rpm_active: Whether or not the consumer device is runtime-PM-active.
|
||||
@@ -492,7 +492,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
* @rcu_head: An RCU head to use for deferred execution of SRCU callbacks.
|
||||
*/
|
||||
struct device_link {
|
||||
@@ -778,6 +783,7 @@ struct device_link {
|
||||
@@ -779,6 +784,7 @@ struct device_link {
|
||||
enum device_link_state status;
|
||||
u32 flags;
|
||||
bool rpm_active;
|
||||
@@ -500,7 +500,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#ifdef CONFIG_SRCU
|
||||
struct rcu_head rcu_head;
|
||||
#endif
|
||||
@@ -850,6 +856,8 @@ struct dev_links_info {
|
||||
@@ -851,6 +857,8 @@ struct dev_links_info {
|
||||
* @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
|
||||
* hardware supports 64-bit addresses for consistent allocations
|
||||
* such descriptors.
|
||||
@@ -509,7 +509,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
* @dma_pfn_offset: offset of DMA memory range relatively of RAM
|
||||
* @dma_parms: A low level driver may set these to teach IOMMU code about
|
||||
* segment limitations.
|
||||
@@ -929,6 +937,7 @@ struct device {
|
||||
@@ -930,6 +938,7 @@ struct device {
|
||||
not all hardware supports
|
||||
64 bit addresses for consistent
|
||||
allocations such descriptors. */
|
||||
@@ -517,7 +517,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
unsigned long dma_pfn_offset;
|
||||
|
||||
struct device_dma_parameters *dma_parms;
|
||||
@@ -1267,6 +1276,7 @@ extern const char *dev_driver_string(con
|
||||
@@ -1268,6 +1277,7 @@ extern const char *dev_driver_string(con
|
||||
struct device_link *device_link_add(struct device *consumer,
|
||||
struct device *supplier, u32 flags);
|
||||
void device_link_del(struct device_link *link);
|
||||
|
||||
@@ -607,9 +607,9 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
+};
|
||||
+
|
||||
&enet0 {
|
||||
tbi-handle = <&tbi1>;
|
||||
tbi-handle = <&tbi0>;
|
||||
phy-handle = <&sgmii_phy2>;
|
||||
@@ -228,6 +243,10 @@
|
||||
@@ -235,6 +250,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
@@ -620,7 +620,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
&sai1 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -243,3 +262,11 @@
|
||||
@@ -250,3 +269,11 @@
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -740,7 +740,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
dcu: dcu@2ce0000 {
|
||||
compatible = "fsl,ls1021a-dcu";
|
||||
reg = <0x0 0x2ce0000 0x0 0x10000>;
|
||||
@@ -684,6 +734,11 @@
|
||||
@@ -693,6 +743,11 @@
|
||||
dr_mode = "host";
|
||||
snps,quirk-frame-length-adjustment = <0x20>;
|
||||
snps,dis_rxdet_inp3_quirk;
|
||||
@@ -752,7 +752,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
};
|
||||
|
||||
pcie@3400000 {
|
||||
@@ -691,7 +746,9 @@
|
||||
@@ -700,7 +755,9 @@
|
||||
reg = <0x00 0x03400000 0x0 0x00010000 /* controller registers */
|
||||
0x40 0x00000000 0x0 0x00002000>; /* configuration space */
|
||||
reg-names = "regs", "config";
|
||||
@@ -763,7 +763,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
fsl,pcie-scfg = <&scfg 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
@@ -707,6 +764,7 @@
|
||||
@@ -716,6 +773,7 @@
|
||||
<0000 0 0 2 &gic GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0000 0 0 3 &gic GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0000 0 0 4 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@@ -771,7 +771,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
};
|
||||
|
||||
pcie@3500000 {
|
||||
@@ -714,7 +772,9 @@
|
||||
@@ -723,7 +781,9 @@
|
||||
reg = <0x00 0x03500000 0x0 0x00010000 /* controller registers */
|
||||
0x48 0x00000000 0x0 0x00002000>; /* configuration space */
|
||||
reg-names = "regs", "config";
|
||||
@@ -782,7 +782,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
fsl,pcie-scfg = <&scfg 1>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
@@ -730,6 +790,47 @@
|
||||
@@ -739,6 +799,47 @@
|
||||
<0000 0 0 2 &gic GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0000 0 0 3 &gic GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0000 0 0 4 &gic GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
@@ -346,7 +346,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
return 0;
|
||||
|
||||
err4:
|
||||
@@ -1073,6 +1225,8 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1076,6 +1228,8 @@ static void dwc3_get_properties(struct d
|
||||
&hird_threshold);
|
||||
dwc->usb3_lpm_capable = device_property_read_bool(dev,
|
||||
"snps,usb3_lpm_capable");
|
||||
@@ -355,7 +355,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
dwc->disable_scramble_quirk = device_property_read_bool(dev,
|
||||
"snps,disable_scramble_quirk");
|
||||
@@ -1105,8 +1259,16 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1108,8 +1262,16 @@ static void dwc3_get_properties(struct d
|
||||
dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev,
|
||||
"snps,dis-tx-ipgap-linecheck-quirk");
|
||||
|
||||
@@ -372,7 +372,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
device_property_read_u8(dev, "snps,tx_de_emphasis",
|
||||
&tx_de_emphasis);
|
||||
device_property_read_string(dev, "snps,hsphy_interface",
|
||||
@@ -1117,6 +1279,9 @@ static void dwc3_get_properties(struct d
|
||||
@@ -1120,6 +1282,9 @@ static void dwc3_get_properties(struct d
|
||||
dwc->dis_metastability_quirk = device_property_read_bool(dev,
|
||||
"snps,dis_metastability_quirk");
|
||||
|
||||
@@ -382,7 +382,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
|
||||
dwc->tx_de_emphasis = tx_de_emphasis;
|
||||
|
||||
@@ -1368,12 +1533,14 @@ static int dwc3_resume_common(struct dwc
|
||||
@@ -1371,12 +1536,14 @@ static int dwc3_resume_common(struct dwc
|
||||
|
||||
switch (dwc->dr_mode) {
|
||||
case USB_DR_MODE_PERIPHERAL:
|
||||
|
||||
@@ -158,7 +158,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
if (kvm_is_device_pfn(pfn)) {
|
||||
mem_type = PAGE_S2_DEVICE;
|
||||
flags |= KVM_S2PTE_FLAG_IS_IOMAP;
|
||||
@@ -1918,6 +1961,9 @@ int kvm_arch_prepare_memory_region(struc
|
||||
@@ -1919,6 +1962,9 @@ int kvm_arch_prepare_memory_region(struc
|
||||
gpa_t gpa = mem->guest_phys_addr +
|
||||
(vm_start - mem->userspace_addr);
|
||||
phys_addr_t pa;
|
||||
@@ -168,7 +168,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
|
||||
pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||
pa += vm_start - vma->vm_start;
|
||||
@@ -1928,9 +1974,13 @@ int kvm_arch_prepare_memory_region(struc
|
||||
@@ -1929,9 +1975,13 @@ int kvm_arch_prepare_memory_region(struc
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
snprintf(pll->div[i].name, sizeof(pll->div[i].name),
|
||||
"cg-pll%d-div%d", idx, i + 1);
|
||||
|
||||
@@ -1417,6 +1435,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
|
||||
@@ -1418,6 +1436,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls1088a, "fsl,ls1088a-clockgen", clockgen_init);
|
||||
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
|
||||
|
||||
@@ -1512,7 +1512,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
case SNOR_MFR_MICRON:
|
||||
/* Some Micron need WREN command; all will accept it */
|
||||
need_wren = true;
|
||||
@@ -1039,7 +1040,7 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1044,7 +1045,7 @@ static const struct flash_info spi_nor_i
|
||||
{ "mx66l1g45g", INFO(0xc2201b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) },
|
||||
|
||||
@@ -1521,7 +1521,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
{ "n25q016a", INFO(0x20bb15, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_QUAD_READ) },
|
||||
{ "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },
|
||||
{ "n25q032a", INFO(0x20bb16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },
|
||||
@@ -1054,6 +1055,12 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1059,6 +1060,12 @@ static const struct flash_info spi_nor_i
|
||||
{ "n25q00", INFO(0x20ba21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },
|
||||
{ "n25q00a", INFO(0x20bb21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },
|
||||
|
||||
@@ -1534,7 +1534,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
/* PMC */
|
||||
{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
|
||||
{ "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },
|
||||
@@ -2431,6 +2438,7 @@ static int spi_nor_init_params(struct sp
|
||||
@@ -2436,6 +2443,7 @@ static int spi_nor_init_params(struct sp
|
||||
params->quad_enable = macronix_quad_enable;
|
||||
break;
|
||||
|
||||
@@ -1542,7 +1542,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
case SNOR_MFR_MICRON:
|
||||
break;
|
||||
|
||||
@@ -2749,7 +2757,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -2754,7 +2762,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
mtd->_read = spi_nor_read;
|
||||
|
||||
/* NOR protection support for STmicro/Micron chips and similar */
|
||||
|
||||
@@ -5618,7 +5618,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
static void quirk_no_pm_reset(struct pci_dev *dev)
|
||||
{
|
||||
/*
|
||||
@@ -4884,3 +4891,11 @@ static void quirk_no_ats(struct pci_dev
|
||||
@@ -4918,3 +4925,11 @@ static void quirk_no_ats(struct pci_dev
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_no_ats);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_no_ats);
|
||||
#endif /* CONFIG_PCI_ATS */
|
||||
|
||||
@@ -124,7 +124,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
L: keyrings@vger.kernel.org
|
||||
--- a/drivers/tee/optee/Kconfig
|
||||
+++ b/drivers/tee/optee/Kconfig
|
||||
@@ -5,3 +5,11 @@ config OPTEE
|
||||
@@ -6,3 +6,11 @@ config OPTEE
|
||||
help
|
||||
This implements the OP-TEE Trusted Execution Environment (TEE)
|
||||
driver.
|
||||
|
||||
@@ -718,7 +718,7 @@ Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -1154,6 +1154,11 @@ static const struct flash_info spi_nor_i
|
||||
@@ -1159,6 +1159,11 @@ static const struct flash_info spi_nor_i
|
||||
{ "w25x40", INFO(0xef3013, 0, 64 * 1024, 8, SECT_4K) },
|
||||
{ "w25x80", INFO(0xef3014, 0, 64 * 1024, 16, SECT_4K) },
|
||||
{ "w25x16", INFO(0xef3015, 0, 64 * 1024, 32, SECT_4K) },
|
||||
|
||||
@@ -11852,7 +11852,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
|
||||
dev = caam_jr_alloc();
|
||||
if (IS_ERR(dev)) {
|
||||
@@ -361,10 +342,3 @@ free_caam_alloc:
|
||||
@@ -364,10 +345,3 @@ free_caam_alloc:
|
||||
caam_jr_free(dev);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1943,7 +1943,7 @@ static struct phy_driver genphy_driver =
|
||||
@@ -1944,7 +1944,7 @@ static struct phy_driver genphy_driver =
|
||||
.config_init = genphy_config_init,
|
||||
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
|
||||
SUPPORTED_AUI | SUPPORTED_FIBRE |
|
||||
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
|
||||
struct mtk_thermal;
|
||||
|
||||
struct thermal_bank_cfg {
|
||||
@@ -765,7 +758,7 @@ static struct platform_driver mtk_therma
|
||||
@@ -767,7 +760,7 @@ static struct platform_driver mtk_therma
|
||||
.probe = mtk_thermal_probe,
|
||||
.remove = mtk_thermal_remove,
|
||||
.driver = {
|
||||
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Shunli Wang <shunli.wang@mediatek.com>
|
||||
/**
|
||||
* raw_to_mcelsius - convert a raw ADC value to mcelsius
|
||||
* @mt: The thermal controller
|
||||
@@ -631,6 +662,10 @@ static const struct of_device_id mtk_the
|
||||
@@ -633,6 +664,10 @@ static const struct of_device_id mtk_the
|
||||
{
|
||||
.compatible = "mediatek,mt2712-thermal",
|
||||
.data = (void *)&mt2712_thermal_data,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/arch/powerpc/Kconfig
|
||||
+++ b/arch/powerpc/Kconfig
|
||||
@@ -836,6 +836,14 @@ config CMDLINE_FORCE
|
||||
@@ -837,6 +837,14 @@ config CMDLINE_FORCE
|
||||
This is useful if you cannot or don't want to change the
|
||||
command-line options your boot loader passes to the kernel.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user