Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8004e3f2c6 | ||
|
|
d81a8a3e29 | ||
|
|
e1b62c85f5 | ||
|
|
8c6668f088 | ||
|
|
455ae024d5 | ||
|
|
b1eeb5dd2a | ||
|
|
b72b37d6ff | ||
|
|
471baf3f74 | ||
|
|
336aaedc9c | ||
|
|
e838957ad9 | ||
|
|
6b128326df | ||
|
|
97e9be4e3a | ||
|
|
85c4d374c2 | ||
|
|
83ce31d3d8 | ||
|
|
c280710d7a | ||
|
|
27dddb67c0 | ||
|
|
8623b58c1d | ||
|
|
e242125d71 | ||
|
|
84b74bcb0d | ||
|
|
66ba44c9ec | ||
|
|
b901563611 | ||
|
|
2152722bd3 | ||
|
|
c3337e8f48 | ||
|
|
d08a63770c | ||
|
|
022f3898b1 | ||
|
|
5d92949019 | ||
|
|
361b555672 | ||
|
|
1cbde3eb9c | ||
|
|
bd3b8480ab | ||
|
|
2777947a75 | ||
|
|
7863a8f302 | ||
|
|
daed78ab55 | ||
|
|
8f6debf633 | ||
|
|
72ddeffc09 | ||
|
|
70b73f6470 | ||
|
|
6e2e5d1bf8 | ||
|
|
f6f916b3e5 | ||
|
|
0e85ace840 | ||
|
|
45fefa0459 | ||
|
|
b0d99e32db | ||
|
|
22fe68643f | ||
|
|
2219b0258d | ||
|
|
0a9147be6a | ||
|
|
b9e685eed5 | ||
|
|
8179ac3dc1 | ||
|
|
6962c1e495 | ||
|
|
e6a7eacfea | ||
|
|
f65330d27d | ||
|
|
ab6addc95d | ||
|
|
f503bc3d25 | ||
|
|
506bfaa126 | ||
|
|
c89437e398 | ||
|
|
ea8f7d74ba | ||
|
|
79fd7593a2 | ||
|
|
3d3a933315 | ||
|
|
862a885103 | ||
|
|
05c858ff6a | ||
|
|
c1d19b37d5 | ||
|
|
dfd8c3bfdc | ||
|
|
69bc68b46b |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,6 +16,7 @@
|
||||
/overlay
|
||||
/package/feeds
|
||||
/package/openwrt-packages
|
||||
/*.patch
|
||||
key-build*
|
||||
*.orig
|
||||
*.rej
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^340d5ce71ee60c1d699e7e0ead9422bed6f8519f
|
||||
src-git luci https://git.openwrt.org/project/luci.git^bc17ef673f734ea8e7e696ba5735588da9111dcd
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^c52779c05a4cf838c736327d8b042ee59f782331
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^06a5323734038c3866f507787256581dba3d8522
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^b0df5d33652220a384593d7b52a8453b022b8f9b
|
||||
src-git luci https://git.openwrt.org/project/luci.git^868abc1a564ca8366bbb018a967923cbdc5ee27a
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^9fa2b249cc286176f07efe343fd9518b383462fc
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^8ecbdabc7c5cadbe571eb947f5cd333a5a785010
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-4.9 = .198
|
||||
LINUX_VERSION-4.14 = .151
|
||||
LINUX_VERSION-4.9 = .208
|
||||
LINUX_VERSION-4.14 = .162
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.198 = 9572ebfa6ba0efcf9f1ec7b62c7b89baa36a621ab9fd4c5ad025196c549605ac
|
||||
LINUX_KERNEL_HASH-4.14.151 = ff519c428ee9bbb513a84db5ec32a7e3705cd8c23a57104b25b944cb79583fae
|
||||
LINUX_KERNEL_HASH-4.9.208 = b7ad1c9841d671d026c55a4c91c77205f8b488ca5f980f838591c68662e0525a
|
||||
LINUX_KERNEL_HASH-4.14.162 = f65170224cd4359ce8b2793b492bd8127abdd0b91350484e001bce13f0c98b4b
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@@ -141,10 +141,12 @@ $(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \
|
||||
$(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
|
||||
perl --version | grep "perl.*v5"))
|
||||
|
||||
$(eval $(call CleanupPython3))
|
||||
|
||||
$(eval $(call SetupHostCommand,python,Please install Python 2.x, \
|
||||
python2.7 -V 2>&1 | grep Python, \
|
||||
python2 -V 2>&1 | grep Python, \
|
||||
python -V 2>&1 | grep Python))
|
||||
python2.7 -V 2>&1 | grep 'Python 2.7', \
|
||||
python2 -V 2>&1 | grep 'Python 2', \
|
||||
python -V 2>&1 | grep 'Python 2'))
|
||||
|
||||
$(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
||||
git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule))
|
||||
|
||||
@@ -66,6 +66,18 @@ define RequireHeader
|
||||
$$(eval $$(call Require,$(1),$(2)))
|
||||
endef
|
||||
|
||||
define CleanupPython3
|
||||
define Require/python3-cleanup
|
||||
if [ -f "$(STAGING_DIR_HOST)/bin/python" ] && \
|
||||
$(STAGING_DIR_HOST)/bin/python -V 2>&1 | \
|
||||
grep -q 'Python 3'; then \
|
||||
rm $(STAGING_DIR_HOST)/bin/python; \
|
||||
fi
|
||||
endef
|
||||
|
||||
$$(eval $$(call Require,python3-cleanup))
|
||||
endef
|
||||
|
||||
define QuoteHostCommand
|
||||
'$(subst ','"'"',$(strip $(1)))'
|
||||
endef
|
||||
|
||||
@@ -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),18.06.5)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06.6)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r7897-9d401013fc)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r7957-d81a8a3e29)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/18.06.5)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/18.06.6)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
|
||||
include $(INCLUDE_DIR)/feeds.mk
|
||||
|
||||
PKG_NAME:=base-files
|
||||
PKG_RELEASE:=194.2
|
||||
PKG_RELEASE:=194.3
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||
|
||||
@@ -85,12 +85,16 @@ generate_network() {
|
||||
set network.$1.proto='none'
|
||||
EOF
|
||||
|
||||
[ -n "$macaddr" ] && uci -q batch <<-EOF
|
||||
delete network.$1_dev
|
||||
set network.$1_dev='device'
|
||||
set network.$1_dev.name='$ifname'
|
||||
set network.$1_dev.macaddr='$macaddr'
|
||||
EOF
|
||||
if [ -n "$macaddr" ]; then
|
||||
for name in $ifname; do
|
||||
uci -q batch <<-EOF
|
||||
delete network.$1_${name/./_}_dev
|
||||
set network.$1_${name/./_}_dev='device'
|
||||
set network.$1_${name/./_}_dev.name='$name'
|
||||
set network.$1_${name/./_}_dev.macaddr='$macaddr'
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
|
||||
case "$protocol" in
|
||||
static)
|
||||
|
||||
@@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.openwrt.org/releases/18.06.5"
|
||||
default "http://downloads.openwrt.org/releases/18.06.6"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -57,7 +57,10 @@ sr3200|\
|
||||
t830|\
|
||||
tube2h|\
|
||||
wam250|\
|
||||
wndr3700|\
|
||||
wnr1000-v2|\
|
||||
wnr2000-v3|\
|
||||
wnr2200|\
|
||||
wnr612-v2|\
|
||||
xd3200)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
|
||||
;;
|
||||
@@ -91,6 +94,12 @@ qihoo-c301)
|
||||
wi2a-ac200i)
|
||||
ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x8000" "0x10000"
|
||||
;;
|
||||
wndr3700)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x10000"
|
||||
;;
|
||||
wndr4300)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=i2c-gpio-custom
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
#define DRV_NAME "i2c-gpio-custom"
|
||||
#define DRV_DESC "Custom GPIO-based I2C driver"
|
||||
#define DRV_VERSION "0.1.1"
|
||||
#define DRV_VERSION "0.1.2"
|
||||
|
||||
#define PFX DRV_NAME ": "
|
||||
|
||||
@@ -96,7 +96,7 @@ static void i2c_gpio_custom_cleanup(void)
|
||||
|
||||
for (i = 0; i < nr_devices; i++)
|
||||
if (devices[i])
|
||||
platform_device_put(devices[i]);
|
||||
platform_device_unregister(devices[i]);
|
||||
}
|
||||
|
||||
static int __init i2c_gpio_custom_add_one(unsigned int id, unsigned int *params)
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
From e3c57dd949835419cee8d3b45db38de58bf6ebd5 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 18 Nov 2019 01:13:37 +0100
|
||||
Subject: [PATCH] backports: Adapt to changes to skb_get_hash_perturb()
|
||||
|
||||
The skb_get_hash_perturb() function now takes a siphash_key_t instead of
|
||||
an u32. This was changed in commit 55667441c84f ("net/flow_dissector:
|
||||
switch to siphash"). Use the correct type in the fq header file
|
||||
depending on the kernel version.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
include/net/fq.h | 8 ++++++++
|
||||
include/net/fq_impl.h | 8 ++++++++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
--- a/include/net/fq.h
|
||||
+++ b/include/net/fq.h
|
||||
@@ -70,7 +70,15 @@ struct fq {
|
||||
struct list_head backlogs;
|
||||
spinlock_t lock;
|
||||
u32 flows_cnt;
|
||||
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||
+ siphash_key_t perturbation;
|
||||
+#else
|
||||
u32 perturbation;
|
||||
+#endif
|
||||
u32 limit;
|
||||
u32 memory_limit;
|
||||
u32 memory_usage;
|
||||
--- a/include/net/fq_impl.h
|
||||
+++ b/include/net/fq_impl.h
|
||||
@@ -118,7 +118,15 @@ static struct fq_flow *fq_flow_classify(
|
||||
|
||||
lockdep_assert_held(&fq->lock);
|
||||
|
||||
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||
+ hash = skb_get_hash_perturb(skb, &fq->perturbation);
|
||||
+#else
|
||||
hash = skb_get_hash_perturb(skb, fq->perturbation);
|
||||
+#endif
|
||||
idx = reciprocal_scale(hash, fq->flows_cnt);
|
||||
flow = &fq->flows[idx];
|
||||
|
||||
@@ -307,7 +315,15 @@ static int fq_init(struct fq *fq, int fl
|
||||
INIT_LIST_HEAD(&fq->backlogs);
|
||||
spin_lock_init(&fq->lock);
|
||||
fq->flows_cnt = max_t(u32, flows_cnt, 1);
|
||||
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||
+ get_random_bytes(&fq->perturbation, sizeof(fq->perturbation));
|
||||
+#else
|
||||
fq->perturbation = prandom_u32();
|
||||
+#endif
|
||||
fq->quantum = 300;
|
||||
fq->limit = 8192;
|
||||
fq->memory_limit = 16 << 20; /* 16 MBytes */
|
||||
@@ -0,0 +1,54 @@
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 18 Nov 2019 11:52:41 +0100
|
||||
Subject: [PATCH FIX] brcmfmac: disable PCIe interrupts before bus reset
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Keeping interrupts on could result in brcmfmac freeing some resources
|
||||
and then IRQ handlers trying to use them. That was obviously a straight
|
||||
path for crashing a kernel.
|
||||
|
||||
Example:
|
||||
CPU0 CPU1
|
||||
---- ----
|
||||
brcmf_pcie_reset
|
||||
brcmf_pcie_bus_console_read
|
||||
brcmf_detach
|
||||
...
|
||||
brcmf_fweh_detach
|
||||
brcmf_proto_detach
|
||||
brcmf_pcie_isr_thread
|
||||
...
|
||||
brcmf_proto_msgbuf_rx_trigger
|
||||
...
|
||||
drvr->proto->pd
|
||||
brcmf_pcie_release_irq
|
||||
|
||||
[ 363.789218] Unable to handle kernel NULL pointer dereference at virtual address 00000038
|
||||
[ 363.797339] pgd = c0004000
|
||||
[ 363.800050] [00000038] *pgd=00000000
|
||||
[ 363.803635] Internal error: Oops: 17 [#1] SMP ARM
|
||||
(...)
|
||||
[ 364.029209] Backtrace:
|
||||
[ 364.031725] [<bf243838>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf2471dc>] (brcmf_pcie_isr_thread+0x228/0x274 [brcmfmac])
|
||||
[ 364.043662] r7:00000001 r6:c8ca0000 r5:00010000 r4:c7b4f800
|
||||
|
||||
Fixes: 4684997d9eea ("brcmfmac: reset PCIe bus on a firmware crash")
|
||||
Cc: stable@vger.kernel.org # v5.2+
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -1437,6 +1437,8 @@ static int brcmf_pcie_reset(struct devic
|
||||
struct brcmf_fw_request *fwreq;
|
||||
int err;
|
||||
|
||||
+ brcmf_pcie_intr_disable(devinfo);
|
||||
+
|
||||
brcmf_pcie_bus_console_read(devinfo, true);
|
||||
|
||||
brcmf_detach(dev);
|
||||
@@ -0,0 +1,30 @@
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 18 Nov 2019 13:35:20 +0100
|
||||
Subject: [PATCH 5.5] brcmfmac: remove monitor interface when detaching
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes a minor WARNING in the cfg80211:
|
||||
[ 130.658034] ------------[ cut here ]------------
|
||||
[ 130.662805] WARNING: CPU: 1 PID: 610 at net/wireless/core.c:954 wiphy_unregister+0xb4/0x198 [cfg80211]
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1380,6 +1380,11 @@ void brcmf_detach(struct device *dev)
|
||||
brcmf_fweh_detach(drvr);
|
||||
brcmf_proto_detach(drvr);
|
||||
|
||||
+ if (drvr->mon_if) {
|
||||
+ brcmf_net_detach(drvr->mon_if->ndev, false);
|
||||
+ drvr->mon_if = NULL;
|
||||
+ }
|
||||
+
|
||||
/* make sure primary interface removed last */
|
||||
for (i = BRCMF_MAX_IFS - 1; i > -1; i--) {
|
||||
if (drvr->iflist[i])
|
||||
@@ -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
|
||||
@@ -1481,6 +1481,7 @@ int __init brcmf_core_init(void)
|
||||
@@ -1486,6 +1486,7 @@ int __init brcmf_core_init(void)
|
||||
{
|
||||
if (!schedule_work(&brcmf_driver_work))
|
||||
return -EBUSY;
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=w1-gpio-custom
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
#define DRV_NAME "w1-gpio-custom"
|
||||
#define DRV_DESC "Custom GPIO-based W1 driver"
|
||||
#define DRV_VERSION "0.1.1"
|
||||
#define DRV_VERSION "0.1.2"
|
||||
|
||||
#define PFX DRV_NAME ": "
|
||||
|
||||
@@ -86,7 +86,7 @@ static void w1_gpio_custom_cleanup(void)
|
||||
|
||||
for (i = 0; i < nr_devices; i++)
|
||||
if (devices[i])
|
||||
platform_device_put(devices[i]);
|
||||
platform_device_unregister(devices[i]);
|
||||
}
|
||||
|
||||
static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=openssl
|
||||
PKG_BASE:=1.0.2
|
||||
PKG_BUGFIX:=t
|
||||
PKG_BUGFIX:=u
|
||||
PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
|
||||
PKG_RELEASE:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
@@ -24,7 +24,7 @@ PKG_SOURCE_URL:= \
|
||||
http://gd.tuwien.ac.at/infosys/security/openssl/source/ \
|
||||
http://www.openssl.org/source/ \
|
||||
http://www.openssl.org/source/old/$(PKG_BASE)/
|
||||
PKG_HASH:=14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc
|
||||
PKG_HASH:=ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16
|
||||
|
||||
PKG_LICENSE:=OpenSSL
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@@ -46,6 +46,8 @@ proto_dhcp_setup() {
|
||||
json_for_each_item proto_dhcp_add_sendopts sendopts dhcpopts
|
||||
|
||||
[ -z "$hostname" ] && hostname="$(cat /proc/sys/kernel/hostname)"
|
||||
[ "$hostname" = "*" ] && hostname=
|
||||
|
||||
[ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts=
|
||||
[ "$broadcast" = 1 ] && broadcast="-B" || broadcast=
|
||||
[ "$release" = 1 ] && release="-R" || release=
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=uhttpd
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
|
||||
PKG_SOURCE_DATE:=2018-11-28
|
||||
PKG_SOURCE_VERSION:=cdfc902a4cb77bc538a729f9e1c8a8578454a0e5
|
||||
PKG_MIRROR_HASH:=6b21111547a4453355bd6c941a47f0116a652a77d87c1e05a035168b8ab2aa6f
|
||||
PKG_SOURCE_DATE:=2019-12-22
|
||||
PKG_SOURCE_VERSION:=5f9ae5738372aaa3a6be2f0a278933563d3f191a
|
||||
PKG_MIRROR_HASH:=16977c2d7e68f6db3241f874df625af9bd3bafa06fe4499ecb3561c825321e5d
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=e2fsprogs
|
||||
PKG_VERSION:=1.44.1
|
||||
PKG_HASH:=0ca164c1c87724df904c918b2d7051ef989b51de725db66c67514dbe6dd2b9ef
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/tytso/e2fsprogs/v$(PKG_VERSION)/
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
From 09fe1fd2a1f9efc3091b4fc61f1876d0785956a8 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Sun, 1 Sep 2019 00:59:16 -0400
|
||||
Subject: libsupport: add checks to prevent buffer overrun bugs in quota code
|
||||
|
||||
A maliciously corrupted file systems can trigger buffer overruns in
|
||||
the quota code used by e2fsck. To fix this, add sanity checks to the
|
||||
quota header fields as well as to block number references in the quota
|
||||
tree.
|
||||
|
||||
Addresses: CVE-2019-5094
|
||||
Addresses: TALOS-2019-0887
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
(cherry picked from commit 8dbe7b475ec5e91ed767239f0e85880f416fc384)
|
||||
---
|
||||
lib/support/mkquota.c | 1 +
|
||||
lib/support/quotaio_tree.c | 71 ++++++++++++++++++++++++++++++----------------
|
||||
lib/support/quotaio_v2.c | 28 ++++++++++++++++++
|
||||
3 files changed, 76 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/lib/support/mkquota.c
|
||||
+++ b/lib/support/mkquota.c
|
||||
@@ -663,6 +663,7 @@ errcode_t quota_compare_and_update(quota
|
||||
err = qh.qh_ops->scan_dquots(&qh, scan_dquots_callback, &scan_data);
|
||||
if (err) {
|
||||
log_debug("Error scanning dquots");
|
||||
+ *usage_inconsistent = 1;
|
||||
goto out_close_qh;
|
||||
}
|
||||
|
||||
--- a/lib/support/quotaio_tree.c
|
||||
+++ b/lib/support/quotaio_tree.c
|
||||
@@ -540,6 +540,17 @@ struct dquot *qtree_read_dquot(struct qu
|
||||
return dquot;
|
||||
}
|
||||
|
||||
+static int check_reference(struct quota_handle *h, unsigned int blk)
|
||||
+{
|
||||
+ if (blk >= h->qh_info.u.v2_mdqi.dqi_qtree.dqi_blocks) {
|
||||
+ log_err("Illegal reference (%u >= %u) in %s quota file",
|
||||
+ blk, h->qh_info.u.v2_mdqi.dqi_qtree.dqi_blocks,
|
||||
+ quota_type2name(h->qh_type));
|
||||
+ return -1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Scan all dquots in file and call callback on each
|
||||
*/
|
||||
@@ -558,7 +569,7 @@ static int report_block(struct dquot *dq
|
||||
int entries, i;
|
||||
|
||||
if (!buf)
|
||||
- return 0;
|
||||
+ return -1;
|
||||
|
||||
set_bit(bitmap, blk);
|
||||
read_blk(dquot->dq_h, blk, buf);
|
||||
@@ -580,23 +591,12 @@ static int report_block(struct dquot *dq
|
||||
return entries;
|
||||
}
|
||||
|
||||
-static void check_reference(struct quota_handle *h, unsigned int blk)
|
||||
-{
|
||||
- if (blk >= h->qh_info.u.v2_mdqi.dqi_qtree.dqi_blocks)
|
||||
- log_err("Illegal reference (%u >= %u) in %s quota file. "
|
||||
- "Quota file is probably corrupted.\n"
|
||||
- "Please run e2fsck (8) to fix it.",
|
||||
- blk,
|
||||
- h->qh_info.u.v2_mdqi.dqi_qtree.dqi_blocks,
|
||||
- quota_type2name(h->qh_type));
|
||||
-}
|
||||
-
|
||||
static int report_tree(struct dquot *dquot, unsigned int blk, int depth,
|
||||
char *bitmap,
|
||||
int (*process_dquot) (struct dquot *, void *),
|
||||
void *data)
|
||||
{
|
||||
- int entries = 0, i;
|
||||
+ int entries = 0, ret, i;
|
||||
dqbuf_t buf = getdqbuf();
|
||||
__le32 *ref = (__le32 *) buf;
|
||||
|
||||
@@ -607,22 +607,40 @@ static int report_tree(struct dquot *dqu
|
||||
if (depth == QT_TREEDEPTH - 1) {
|
||||
for (i = 0; i < QT_BLKSIZE >> 2; i++) {
|
||||
blk = ext2fs_le32_to_cpu(ref[i]);
|
||||
- check_reference(dquot->dq_h, blk);
|
||||
- if (blk && !get_bit(bitmap, blk))
|
||||
- entries += report_block(dquot, blk, bitmap,
|
||||
- process_dquot, data);
|
||||
+ if (check_reference(dquot->dq_h, blk)) {
|
||||
+ entries = -1;
|
||||
+ goto errout;
|
||||
+ }
|
||||
+ if (blk && !get_bit(bitmap, blk)) {
|
||||
+ ret = report_block(dquot, blk, bitmap,
|
||||
+ process_dquot, data);
|
||||
+ if (ret < 0) {
|
||||
+ entries = ret;
|
||||
+ goto errout;
|
||||
+ }
|
||||
+ entries += ret;
|
||||
+ }
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < QT_BLKSIZE >> 2; i++) {
|
||||
blk = ext2fs_le32_to_cpu(ref[i]);
|
||||
if (blk) {
|
||||
- check_reference(dquot->dq_h, blk);
|
||||
- entries += report_tree(dquot, blk, depth + 1,
|
||||
- bitmap, process_dquot,
|
||||
- data);
|
||||
+ if (check_reference(dquot->dq_h, blk)) {
|
||||
+ entries = -1;
|
||||
+ goto errout;
|
||||
+ }
|
||||
+ ret = report_tree(dquot, blk, depth + 1,
|
||||
+ bitmap, process_dquot,
|
||||
+ data);
|
||||
+ if (ret < 0) {
|
||||
+ entries = ret;
|
||||
+ goto errout;
|
||||
+ }
|
||||
+ entries += ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
+errout:
|
||||
freedqbuf(buf);
|
||||
return entries;
|
||||
}
|
||||
@@ -642,6 +660,7 @@ int qtree_scan_dquots(struct quota_handl
|
||||
int (*process_dquot) (struct dquot *, void *),
|
||||
void *data)
|
||||
{
|
||||
+ int ret;
|
||||
char *bitmap;
|
||||
struct v2_mem_dqinfo *v2info = &h->qh_info.u.v2_mdqi;
|
||||
struct qtree_mem_dqinfo *info = &v2info->dqi_qtree;
|
||||
@@ -655,10 +674,14 @@ int qtree_scan_dquots(struct quota_handl
|
||||
ext2fs_free_mem(&dquot);
|
||||
return -1;
|
||||
}
|
||||
- v2info->dqi_used_entries = report_tree(dquot, QT_TREEOFF, 0, bitmap,
|
||||
- process_dquot, data);
|
||||
+ ret = report_tree(dquot, QT_TREEOFF, 0, bitmap, process_dquot, data);
|
||||
+ if (ret < 0)
|
||||
+ goto errout;
|
||||
+ v2info->dqi_used_entries = ret;
|
||||
v2info->dqi_data_blocks = find_set_bits(bitmap, info->dqi_blocks);
|
||||
+ ret = 0;
|
||||
+errout:
|
||||
ext2fs_free_mem(&bitmap);
|
||||
ext2fs_free_mem(&dquot);
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
--- a/lib/support/quotaio_v2.c
|
||||
+++ b/lib/support/quotaio_v2.c
|
||||
@@ -175,6 +175,8 @@ static int v2_check_file(struct quota_ha
|
||||
static int v2_init_io(struct quota_handle *h)
|
||||
{
|
||||
struct v2_disk_dqinfo ddqinfo;
|
||||
+ struct v2_mem_dqinfo *info;
|
||||
+ __u64 filesize;
|
||||
|
||||
h->qh_info.u.v2_mdqi.dqi_qtree.dqi_entry_size =
|
||||
sizeof(struct v2r1_disk_dqblk);
|
||||
@@ -185,6 +187,32 @@ static int v2_init_io(struct quota_handl
|
||||
sizeof(ddqinfo)) != sizeof(ddqinfo))
|
||||
return -1;
|
||||
v2_disk2memdqinfo(&h->qh_info, &ddqinfo);
|
||||
+
|
||||
+ /* Check to make sure quota file info is sane */
|
||||
+ info = &h->qh_info.u.v2_mdqi;
|
||||
+ if (ext2fs_file_get_lsize(h->qh_qf.e2_file, &filesize))
|
||||
+ return -1;
|
||||
+ if ((filesize > (1U << 31)) ||
|
||||
+ (info->dqi_qtree.dqi_blocks >
|
||||
+ (filesize + QT_BLKSIZE - 1) >> QT_BLKSIZE_BITS)) {
|
||||
+ log_err("Quota inode %u corrupted: file size %llu; "
|
||||
+ "dqi_blocks %u", h->qh_qf.ino,
|
||||
+ filesize, info->dqi_qtree.dqi_blocks);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (info->dqi_qtree.dqi_free_blk >= info->dqi_qtree.dqi_blocks) {
|
||||
+ log_err("Quota inode %u corrupted: free_blk %u; dqi_blocks %u",
|
||||
+ h->qh_qf.ino, info->dqi_qtree.dqi_free_blk,
|
||||
+ info->dqi_qtree.dqi_blocks);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (info->dqi_qtree.dqi_free_entry >= info->dqi_qtree.dqi_blocks) {
|
||||
+ log_err("Quota inode %u corrupted: free_entry %u; "
|
||||
+ "dqi_blocks %u", h->qh_qf.ino,
|
||||
+ info->dqi_qtree.dqi_free_entry,
|
||||
+ info->dqi_qtree.dqi_blocks);
|
||||
+ return -1;
|
||||
+ }
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -197,6 +197,7 @@ foreach my $mirror (@ARGV) {
|
||||
push @mirrors, "https://mirror.netcologne.de/apache.org/$1";
|
||||
push @mirrors, "https://mirror.aarnet.edu.au/pub/apache/$1";
|
||||
push @mirrors, "https://mirror.csclub.uwaterloo.ca/apache/$1";
|
||||
push @mirrors, "https://archive.apache.org/dist/$1";
|
||||
push @mirrors, "http://mirror.cogentco.com/pub/apache/$1";
|
||||
push @mirrors, "http://mirror.navercorp.com/apache/$1";
|
||||
push @mirrors, "http://ftp.jaist.ac.jp/pub/apache/$1";
|
||||
|
||||
@@ -67,7 +67,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -973,7 +973,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -969,7 +969,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
|
||||
sa->sa_command_1.bf.hash_crypto_offset = 0;
|
||||
pd->pd_ctl.w = ctx->pd_ctl;
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1125,7 +1125,9 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1121,7 +1121,9 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_name = "cbc(aes)",
|
||||
.cra_driver_name = "cbc-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1090,7 +1090,6 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -1086,7 +1086,6 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
pd->pd_ctl.bf.pe_done = 0;
|
||||
crypto4xx_pd_done(core_dev->dev, tail);
|
||||
crypto4xx_put_pd_to_pdr(core_dev->dev, tail);
|
||||
|
||||
@@ -109,7 +109,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/sha.h>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
@@ -1144,6 +1145,103 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1140,6 +1141,103 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
}
|
||||
}
|
||||
}},
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
#include "crypto4xx_sa.h"
|
||||
@@ -483,111 +484,44 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
@@ -479,111 +480,44 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
return (struct ce_sd *)(dev->sdr + sizeof(struct ce_sd) * idx);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,9 +27,9 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
- dev->scatter_buffer_size * PPC4XX_NUM_SD,
|
||||
+ PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD,
|
||||
&dev->scatter_buffer_pa, GFP_ATOMIC);
|
||||
if (!dev->scatter_buffer_va) {
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
@@ -412,7 +411,7 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
if (!dev->scatter_buffer_va)
|
||||
return -ENOMEM;
|
||||
@@ -408,7 +407,7 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
|
||||
for (i = 0; i < PPC4XX_NUM_SD; i++) {
|
||||
sd_array[i].ptr = dev->scatter_buffer_pa +
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -427,7 +426,7 @@ static void crypto4xx_destroy_sdr(struct
|
||||
@@ -423,7 +422,7 @@ static void crypto4xx_destroy_sdr(struct
|
||||
|
||||
if (dev->scatter_buffer_va)
|
||||
dma_free_coherent(dev->core_dev->device,
|
||||
|
||||
@@ -171,9 +171,9 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
/* alloc memory for scatter descriptor ring */
|
||||
dev->sdr = dma_alloc_coherent(dev->core_dev->device,
|
||||
@@ -407,10 +403,8 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
@@ -403,10 +399,8 @@ static u32 crypto4xx_build_sdr(struct cr
|
||||
if (!dev->scatter_buffer_va)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
- sd_array = dev->sdr;
|
||||
-
|
||||
@@ -183,7 +183,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
PPC4XX_SD_BUFFER_SIZE * i;
|
||||
}
|
||||
|
||||
@@ -480,7 +474,7 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
@@ -476,7 +470,7 @@ static inline struct ce_sd *crypto4xx_ge
|
||||
{
|
||||
*sd_dma = dev->sdr_pa + sizeof(struct ce_sd) * idx;
|
||||
|
||||
@@ -192,7 +192,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static void crypto4xx_copy_pkt_to_dst(struct crypto4xx_device *dev,
|
||||
@@ -529,11 +523,10 @@ static u32 crypto4xx_copy_digest_to_dst(
|
||||
@@ -525,11 +519,10 @@ static u32 crypto4xx_copy_digest_to_dst(
|
||||
struct crypto4xx_ctx *ctx)
|
||||
{
|
||||
struct dynamic_sa_ctl *sa = (struct dynamic_sa_ctl *) ctx->sa_in;
|
||||
@@ -206,7 +206,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
SA_HASH_ALG_SHA1_DIGEST_SIZE);
|
||||
}
|
||||
|
||||
@@ -616,11 +609,9 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
@@ -612,11 +605,9 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
|
||||
static u32 crypto4xx_pd_done(struct crypto4xx_device *dev, u32 idx)
|
||||
{
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (crypto_tfm_alg_type(pd_uinfo->async_req->tfm) ==
|
||||
CRYPTO_ALG_TYPE_ABLKCIPHER)
|
||||
return crypto4xx_ablkcipher_done(dev, pd_uinfo, pd);
|
||||
@@ -721,7 +712,6 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -717,7 +708,6 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
unsigned long flags;
|
||||
struct pd_uinfo *pd_uinfo = NULL;
|
||||
unsigned int nbytes = datalen, idx;
|
||||
@@ -228,7 +228,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
u32 gd_idx = 0;
|
||||
|
||||
/* figure how many gd is needed */
|
||||
@@ -780,17 +770,15 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -776,17 +766,15 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->core_dev->lock, flags);
|
||||
|
||||
@@ -248,7 +248,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (ctx->direction == DIR_INBOUND)
|
||||
memcpy(sa, ctx->sa_in, ctx->sa_len * 4);
|
||||
else
|
||||
@@ -800,14 +788,15 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -796,14 +784,15 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
&pd_uinfo->sr_pa, 4);
|
||||
|
||||
if (iv_len)
|
||||
@@ -267,7 +267,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
}
|
||||
pd->sa_len = ctx->sa_len;
|
||||
@@ -1015,9 +1004,8 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -1011,9 +1000,8 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
|
||||
while (core_dev->dev->pdr_head != core_dev->dev->pdr_tail) {
|
||||
tail = core_dev->dev->pdr_tail;
|
||||
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1157,7 +1157,7 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1153,7 +1153,7 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.min_keysize = AES_MIN_KEY_SIZE,
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
#include "crypto4xx_sa.h"
|
||||
@@ -582,8 +583,10 @@ static u32 crypto4xx_ablkcipher_done(str
|
||||
@@ -578,8 +579,10 @@ static u32 crypto4xx_ablkcipher_done(str
|
||||
}
|
||||
|
||||
crypto4xx_ret_sg_desc(dev, pd_uinfo);
|
||||
@@ -69,7 +69,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -600,9 +603,10 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
@@ -596,9 +599,10 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
crypto4xx_copy_digest_to_dst(pd_uinfo,
|
||||
crypto_tfm_ctx(ahash_req->base.tfm));
|
||||
crypto4xx_ret_sg_desc(dev, pd_uinfo);
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -713,6 +717,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -709,6 +713,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
struct pd_uinfo *pd_uinfo = NULL;
|
||||
unsigned int nbytes = datalen, idx;
|
||||
u32 gd_idx = 0;
|
||||
@@ -91,7 +91,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
/* figure how many gd is needed */
|
||||
num_gd = sg_nents_for_len(src, datalen);
|
||||
@@ -743,6 +748,31 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -739,6 +744,31 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
* already got must be return the original place.
|
||||
*/
|
||||
spin_lock_irqsave(&dev->core_dev->lock, flags);
|
||||
@@ -123,7 +123,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (num_gd) {
|
||||
fst_gd = crypto4xx_get_n_gd(dev, num_gd);
|
||||
if (fst_gd == ERING_WAS_FULL) {
|
||||
@@ -897,11 +927,12 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -893,11 +923,12 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
sa->sa_command_1.bf.hash_crypto_offset = 0;
|
||||
pd->pd_ctl.w = ctx->pd_ctl;
|
||||
pd->pd_ctl_len.w = 0x00400000 | datalen;
|
||||
@@ -138,7 +138,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1006,7 +1037,7 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -1002,7 +1033,7 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
tail = core_dev->dev->pdr_tail;
|
||||
pd_uinfo = &core_dev->dev->pdr_uinfo[tail];
|
||||
pd = &core_dev->dev->pdr[tail];
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
ctx->is_hash = 0;
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -623,42 +623,6 @@ static u32 crypto4xx_pd_done(struct cryp
|
||||
@@ -619,42 +619,6 @@ static u32 crypto4xx_pd_done(struct cryp
|
||||
return crypto4xx_ahash_done(dev, pd_uinfo);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
static void crypto4xx_stop_all(struct crypto4xx_core_device *core_dev)
|
||||
{
|
||||
crypto4xx_destroy_pdr(core_dev->dev);
|
||||
@@ -818,8 +782,8 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -814,8 +778,8 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
&pd_uinfo->sr_pa, 4);
|
||||
|
||||
if (iv_len)
|
||||
|
||||
@@ -263,7 +263,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/**
|
||||
* alloc memory for the gather ring
|
||||
* no need to alloc buf for the ring
|
||||
@@ -520,18 +514,16 @@ static void crypto4xx_copy_pkt_to_dst(st
|
||||
@@ -516,18 +510,16 @@ static void crypto4xx_copy_pkt_to_dst(st
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static void crypto4xx_ret_sg_desc(struct crypto4xx_device *dev,
|
||||
@@ -600,7 +592,7 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
@@ -596,7 +588,7 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
ahash_req = ahash_request_cast(pd_uinfo->async_req);
|
||||
ctx = crypto_tfm_ctx(ahash_req->base.tfm);
|
||||
|
||||
@@ -294,7 +294,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
crypto_tfm_ctx(ahash_req->base.tfm));
|
||||
crypto4xx_ret_sg_desc(dev, pd_uinfo);
|
||||
|
||||
@@ -660,17 +652,17 @@ static u32 get_next_sd(u32 current)
|
||||
@@ -656,17 +648,17 @@ static u32 get_next_sd(u32 current)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
struct ce_gd *gd;
|
||||
struct ce_pd *pd;
|
||||
u32 num_gd, num_sd;
|
||||
@@ -678,8 +670,9 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -674,8 +666,9 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
u32 fst_sd = 0xffffffff;
|
||||
u32 pd_entry;
|
||||
unsigned long flags;
|
||||
@@ -329,7 +329,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
u32 gd_idx = 0;
|
||||
bool is_busy;
|
||||
|
||||
@@ -693,7 +686,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -689,7 +682,7 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
num_gd = 0;
|
||||
|
||||
/* figure how many sd is needed */
|
||||
@@ -338,7 +338,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
num_sd = 0;
|
||||
} else {
|
||||
if (datalen > PPC4XX_SD_BUFFER_SIZE) {
|
||||
@@ -764,37 +757,27 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -760,37 +753,27 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->core_dev->lock, flags);
|
||||
|
||||
@@ -389,7 +389,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/* get first gd we are going to use */
|
||||
gd_idx = fst_gd;
|
||||
pd_uinfo->first_gd = fst_gd;
|
||||
@@ -803,27 +786,30 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -799,27 +782,30 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
pd->src = gd_dma;
|
||||
/* enable gather */
|
||||
sa->sa_command_0.bf.gather = 1;
|
||||
@@ -430,7 +430,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/*
|
||||
* Disable gather in sa command
|
||||
*/
|
||||
@@ -834,25 +820,24 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -830,25 +816,24 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
pd_uinfo->first_gd = 0xffffffff;
|
||||
pd_uinfo->num_gd = 0;
|
||||
}
|
||||
@@ -463,7 +463,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
u32 sd_idx = fst_sd;
|
||||
nbytes = datalen;
|
||||
sa->sa_command_0.bf.scatter = 1;
|
||||
@@ -866,7 +851,6 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -862,7 +847,6 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
sd->ctl.done = 0;
|
||||
sd->ctl.rdy = 1;
|
||||
/* sd->ptr should be setup by sd_init routine*/
|
||||
@@ -471,7 +471,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (nbytes >= PPC4XX_SD_BUFFER_SIZE)
|
||||
nbytes -= PPC4XX_SD_BUFFER_SIZE;
|
||||
else
|
||||
@@ -877,19 +861,23 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -873,19 +857,23 @@ u32 crypto4xx_build_pd(struct crypto_asy
|
||||
/* setup scatter descriptor */
|
||||
sd->ctl.done = 0;
|
||||
sd->ctl.rdy = 1;
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (n >= PPC4XX_NUM_GD)
|
||||
return ERING_WAS_FULL;
|
||||
|
||||
@@ -625,17 +626,6 @@ static void crypto4xx_stop_all(struct cr
|
||||
@@ -621,17 +622,6 @@ static void crypto4xx_stop_all(struct cr
|
||||
kfree(core_dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -863,16 +866,16 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -859,16 +862,16 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
writel(1, dev->ce_base + CRYPTO4XX_INT_DESCR_RD);
|
||||
return is_busy ? -EBUSY : -EINPROGRESS;
|
||||
}
|
||||
@@ -973,23 +976,23 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -969,23 +972,23 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
struct crypto4xx_core_device *core_dev = dev_get_drvdata(dev);
|
||||
struct pd_uinfo *pd_uinfo;
|
||||
struct ce_pd *pd;
|
||||
|
||||
@@ -167,7 +167,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/**
|
||||
* alloc memory for the gather ring
|
||||
* no need to alloc buf for the ring
|
||||
@@ -892,8 +861,6 @@ static int crypto4xx_alg_init(struct cry
|
||||
@@ -888,8 +857,6 @@ static int crypto4xx_alg_init(struct cry
|
||||
ctx->dev = amcc_alg->dev;
|
||||
ctx->sa_in = NULL;
|
||||
ctx->sa_out = NULL;
|
||||
@@ -176,7 +176,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
ctx->sa_len = 0;
|
||||
|
||||
switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) {
|
||||
@@ -914,7 +881,6 @@ static void crypto4xx_alg_exit(struct cr
|
||||
@@ -910,7 +877,6 @@ static void crypto4xx_alg_exit(struct cr
|
||||
struct crypto4xx_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
|
||||
crypto4xx_free_sa(ctx);
|
||||
|
||||
@@ -116,7 +116,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/internal/skcipher.h>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
@@ -518,7 +520,7 @@ static void crypto4xx_ret_sg_desc(struct
|
||||
@@ -514,7 +516,7 @@ static void crypto4xx_ret_sg_desc(struct
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
struct pd_uinfo *pd_uinfo,
|
||||
struct ce_pd *pd)
|
||||
{
|
||||
@@ -552,11 +554,9 @@ static u32 crypto4xx_ablkcipher_done(str
|
||||
@@ -548,11 +550,9 @@ static u32 crypto4xx_ablkcipher_done(str
|
||||
if (pd_uinfo->state & PD_ENTRY_BUSY)
|
||||
ablkcipher_request_complete(ablk_req, -EINPROGRESS);
|
||||
ablkcipher_request_complete(ablk_req, 0);
|
||||
@@ -138,7 +138,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
struct pd_uinfo *pd_uinfo)
|
||||
{
|
||||
struct crypto4xx_ctx *ctx;
|
||||
@@ -572,20 +572,88 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
@@ -568,20 +568,88 @@ static u32 crypto4xx_ahash_done(struct c
|
||||
if (pd_uinfo->state & PD_ENTRY_BUSY)
|
||||
ahash_request_complete(ahash_req, -EINPROGRESS);
|
||||
ahash_request_complete(ahash_req, 0);
|
||||
@@ -234,7 +234,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static void crypto4xx_stop_all(struct crypto4xx_core_device *core_dev)
|
||||
@@ -621,8 +689,10 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -617,8 +685,10 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
const unsigned int datalen,
|
||||
const __le32 *iv, const u32 iv_len,
|
||||
const struct dynamic_sa_ctl *req_sa,
|
||||
@@ -246,7 +246,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
struct crypto4xx_device *dev = ctx->dev;
|
||||
struct dynamic_sa_ctl *sa;
|
||||
struct ce_gd *gd;
|
||||
@@ -636,18 +706,25 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -632,18 +702,25 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
unsigned int nbytes = datalen;
|
||||
size_t offset_to_sr_ptr;
|
||||
u32 gd_idx = 0;
|
||||
@@ -279,7 +279,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
if (sg_is_last(dst)) {
|
||||
num_sd = 0;
|
||||
} else {
|
||||
@@ -733,6 +810,7 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -729,6 +806,7 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
sa = pd_uinfo->sa_va;
|
||||
memcpy(sa, req_sa, sa_len * 4);
|
||||
|
||||
@@ -287,7 +287,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
offset_to_sr_ptr = get_dynamic_sa_offset_state_ptr_field(sa);
|
||||
*(u32 *)((unsigned long)sa + offset_to_sr_ptr) = pd_uinfo->sr_pa;
|
||||
|
||||
@@ -839,7 +917,7 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -835,7 +913,7 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
((crypto_tfm_alg_type(req->tfm) == CRYPTO_ALG_TYPE_AHASH) |
|
||||
(crypto_tfm_alg_type(req->tfm) == CRYPTO_ALG_TYPE_AEAD) ?
|
||||
PD_CTL_HASH_FINAL : 0);
|
||||
@@ -296,7 +296,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
pd_uinfo->state = PD_ENTRY_INUSE | (is_busy ? PD_ENTRY_BUSY : 0);
|
||||
|
||||
wmb();
|
||||
@@ -852,40 +930,68 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -848,40 +926,68 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
/**
|
||||
* Algorithm Registration Functions
|
||||
*/
|
||||
@@ -385,7 +385,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
{
|
||||
struct crypto4xx_alg *alg;
|
||||
int i;
|
||||
@@ -900,6 +1006,10 @@ int crypto4xx_register_alg(struct crypto
|
||||
@@ -896,6 +1002,10 @@ int crypto4xx_register_alg(struct crypto
|
||||
alg->dev = sec_dev;
|
||||
|
||||
switch (alg->alg.type) {
|
||||
@@ -396,7 +396,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
case CRYPTO_ALG_TYPE_AHASH:
|
||||
rc = crypto_register_ahash(&alg->alg.u.hash);
|
||||
break;
|
||||
@@ -929,6 +1039,10 @@ static void crypto4xx_unregister_alg(str
|
||||
@@ -925,6 +1035,10 @@ static void crypto4xx_unregister_alg(str
|
||||
crypto_unregister_ahash(&alg->alg.u.hash);
|
||||
break;
|
||||
|
||||
@@ -407,7 +407,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
default:
|
||||
crypto_unregister_alg(&alg->alg.u.cipher);
|
||||
}
|
||||
@@ -982,7 +1096,7 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
@@ -978,7 +1092,7 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
/**
|
||||
* Supported Crypto Algorithms
|
||||
*/
|
||||
@@ -416,7 +416,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/* Crypto AES modes */
|
||||
{ .type = CRYPTO_ALG_TYPE_ABLKCIPHER, .u.cipher = {
|
||||
.cra_name = "cbc(aes)",
|
||||
@@ -994,8 +1108,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -990,8 +1104,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_type = &crypto_ablkcipher_type,
|
||||
@@ -427,7 +427,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_u = {
|
||||
.ablkcipher = {
|
||||
@@ -1018,8 +1132,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1014,8 +1128,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_type = &crypto_ablkcipher_type,
|
||||
@@ -438,7 +438,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_u = {
|
||||
.ablkcipher = {
|
||||
@@ -1042,8 +1156,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1038,8 +1152,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_type = &crypto_ablkcipher_type,
|
||||
@@ -449,7 +449,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_u = {
|
||||
.ablkcipher = {
|
||||
@@ -1068,8 +1182,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1064,8 +1178,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_type = &crypto_ablkcipher_type,
|
||||
@@ -460,7 +460,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_u = {
|
||||
.ablkcipher = {
|
||||
@@ -1091,8 +1205,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
@@ -1087,8 +1201,8 @@ struct crypto4xx_alg_common crypto4xx_al
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_type = &crypto_ablkcipher_type,
|
||||
@@ -471,7 +471,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_u = {
|
||||
.ablkcipher = {
|
||||
@@ -1158,6 +1272,7 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1154,6 +1268,7 @@ static int crypto4xx_probe(struct platfo
|
||||
core_dev->device = dev;
|
||||
spin_lock_init(&core_dev->lock);
|
||||
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
||||
|
||||
@@ -209,7 +209,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
*/
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1219,6 +1219,29 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1215,6 +1215,29 @@ static struct crypto4xx_alg_common crypt
|
||||
}
|
||||
}
|
||||
} },
|
||||
|
||||
@@ -178,7 +178,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/sha.h>
|
||||
#include <crypto/scatterwalk.h>
|
||||
#include <crypto/internal/aead.h>
|
||||
@@ -1236,6 +1237,27 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1232,6 +1233,27 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_NEED_FALLBACK |
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1084,9 +1084,6 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
@@ -1080,9 +1080,6 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
struct device *dev = (struct device *)data;
|
||||
struct crypto4xx_core_device *core_dev = dev_get_drvdata(dev);
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
writel(PPC4XX_INTERRUPT_CLR,
|
||||
core_dev->dev->ce_base + CRYPTO4XX_INT_CLR);
|
||||
tasklet_schedule(&core_dev->tasklet);
|
||||
@@ -1334,13 +1331,6 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1330,13 +1327,6 @@ static int crypto4xx_probe(struct platfo
|
||||
tasklet_init(&core_dev->tasklet, crypto4xx_bh_tasklet_cb,
|
||||
(unsigned long) dev);
|
||||
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
core_dev->dev->ce_base = of_iomap(ofdev->dev.of_node, 0);
|
||||
if (!core_dev->dev->ce_base) {
|
||||
dev_err(dev, "failed to of_iomap\n");
|
||||
@@ -1348,6 +1338,13 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1344,6 +1334,13 @@ static int crypto4xx_probe(struct platfo
|
||||
goto err_iomap;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
/* need to setup pdr, rdr, gdr and sdr before this */
|
||||
crypto4xx_hw_init(core_dev->dev);
|
||||
|
||||
@@ -1361,11 +1358,11 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1357,11 +1354,11 @@ static int crypto4xx_probe(struct platfo
|
||||
return 0;
|
||||
|
||||
err_start_dev:
|
||||
|
||||
@@ -35,7 +35,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
}
|
||||
|
||||
int crypto4xx_alloc_sa(struct crypto4xx_ctx *ctx, u32 size)
|
||||
@@ -1079,18 +1086,29 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
@@ -1075,18 +1082,29 @@ static void crypto4xx_bh_tasklet_cb(unsi
|
||||
/**
|
||||
* Top Half of isr.
|
||||
*/
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
/**
|
||||
* Supported Crypto Algorithms
|
||||
*/
|
||||
@@ -1272,6 +1290,8 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1268,6 +1286,8 @@ static int crypto4xx_probe(struct platfo
|
||||
struct resource res;
|
||||
struct device *dev = &ofdev->dev;
|
||||
struct crypto4xx_core_device *core_dev;
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
rc = of_address_to_resource(ofdev->dev.of_node, 0, &res);
|
||||
if (rc)
|
||||
@@ -1288,6 +1308,7 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1284,6 +1304,7 @@ static int crypto4xx_probe(struct platfo
|
||||
mfdcri(SDR0, PPC405EX_SDR0_SRST) | PPC405EX_CE_RESET);
|
||||
mtdcri(SDR0, PPC405EX_SDR0_SRST,
|
||||
mfdcri(SDR0, PPC405EX_SDR0_SRST) & ~PPC405EX_CE_RESET);
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
} else if (of_find_compatible_node(NULL, NULL,
|
||||
"amcc,ppc460sx-crypto")) {
|
||||
mtdcri(SDR0, PPC460SX_SDR0_SRST,
|
||||
@@ -1310,7 +1331,22 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1306,7 +1327,22 @@ static int crypto4xx_probe(struct platfo
|
||||
if (!core_dev->dev)
|
||||
goto err_alloc_dev;
|
||||
|
||||
@@ -108,7 +108,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
core_dev->device = dev;
|
||||
spin_lock_init(&core_dev->lock);
|
||||
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
||||
@@ -1340,7 +1376,9 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1336,7 +1372,9 @@ static int crypto4xx_probe(struct platfo
|
||||
|
||||
/* Register for Crypto isr, Crypto Engine IRQ */
|
||||
core_dev->irq = irq_of_parse_and_map(ofdev->dev.of_node, 0);
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1379,7 +1379,7 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1375,7 +1375,7 @@ static int crypto4xx_probe(struct platfo
|
||||
rc = request_irq(core_dev->irq, is_revb ?
|
||||
crypto4xx_ce_interrupt_handler_revb :
|
||||
crypto4xx_ce_interrupt_handler, 0,
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1441,7 +1441,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match)
|
||||
@@ -1437,7 +1437,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match)
|
||||
|
||||
static struct platform_driver crypto4xx_driver = {
|
||||
.driver = {
|
||||
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
SA_CIPHER_ALG_AES,
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -586,15 +586,14 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -582,15 +582,14 @@ static void crypto4xx_aead_done(struct c
|
||||
struct pd_uinfo *pd_uinfo,
|
||||
struct ce_pd *pd)
|
||||
{
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
if (pd_uinfo->using_sd) {
|
||||
crypto4xx_copy_pkt_to_dst(dev, pd, pd_uinfo,
|
||||
pd->pd_ctl_len.bf.pkt_len,
|
||||
@@ -606,38 +605,39 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -602,38 +601,39 @@ static void crypto4xx_aead_done(struct c
|
||||
|
||||
if (pd_uinfo->sa_va->sa_command_0.bf.dir == DIR_OUTBOUND) {
|
||||
/* append icv at the end */
|
||||
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/**
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -589,7 +589,7 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -585,7 +585,7 @@ static void crypto4xx_aead_done(struct c
|
||||
struct scatterlist *dst = pd_uinfo->dest_va;
|
||||
size_t cp_len = crypto_aead_authsize(
|
||||
crypto_aead_reqtfm(aead_req));
|
||||
@@ -80,7 +80,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
int err = 0;
|
||||
|
||||
if (pd_uinfo->using_sd) {
|
||||
@@ -604,7 +604,7 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -600,7 +600,7 @@ static void crypto4xx_aead_done(struct c
|
||||
if (pd_uinfo->sa_va->sa_command_0.bf.dir == DIR_OUTBOUND) {
|
||||
/* append icv at the end */
|
||||
crypto4xx_memcpy_from_le32(icv, pd_uinfo->sr_va->save_digest,
|
||||
@@ -89,7 +89,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
scatterwalk_map_and_copy(icv, dst, aead_req->cryptlen,
|
||||
cp_len, 1);
|
||||
@@ -614,7 +614,7 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -610,7 +610,7 @@ static void crypto4xx_aead_done(struct c
|
||||
aead_req->assoclen + aead_req->cryptlen -
|
||||
cp_len, cp_len, 0);
|
||||
|
||||
@@ -98,7 +98,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
if (crypto_memneq(icv, pd_uinfo->sr_va->save_digest, cp_len))
|
||||
err = -EBADMSG;
|
||||
@@ -1131,8 +1131,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1127,8 +1127,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_cbc,
|
||||
@@ -109,7 +109,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
}
|
||||
}},
|
||||
@@ -1155,8 +1155,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1151,8 +1151,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_cfb,
|
||||
@@ -120,7 +120,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
}
|
||||
} },
|
||||
@@ -1204,8 +1204,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1200,8 +1200,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.min_keysize = AES_MIN_KEY_SIZE,
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_ecb,
|
||||
@@ -131,7 +131,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
}
|
||||
} },
|
||||
@@ -1228,8 +1228,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1224,8 +1224,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_ofb,
|
||||
|
||||
@@ -196,7 +196,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/internal/aead.h>
|
||||
#include <crypto/internal/skcipher.h>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
@@ -526,21 +527,19 @@ static void crypto4xx_ret_sg_desc(struct
|
||||
@@ -522,21 +523,19 @@ static void crypto4xx_ret_sg_desc(struct
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
} else {
|
||||
dst = pd_uinfo->dest_va;
|
||||
addr = dma_map_page(dev->core_dev->device, sg_page(dst),
|
||||
@@ -558,8 +557,8 @@ static void crypto4xx_ablkcipher_done(st
|
||||
@@ -554,8 +553,8 @@ static void crypto4xx_ablkcipher_done(st
|
||||
crypto4xx_ret_sg_desc(dev, pd_uinfo);
|
||||
|
||||
if (pd_uinfo->state & PD_ENTRY_BUSY)
|
||||
@@ -234,7 +234,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static void crypto4xx_ahash_done(struct crypto4xx_device *dev,
|
||||
@@ -650,8 +649,8 @@ static void crypto4xx_pd_done(struct cry
|
||||
@@ -646,8 +645,8 @@ static void crypto4xx_pd_done(struct cry
|
||||
struct pd_uinfo *pd_uinfo = &dev->pdr_uinfo[idx];
|
||||
|
||||
switch (crypto_tfm_alg_type(pd_uinfo->async_req->tfm)) {
|
||||
@@ -245,7 +245,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
break;
|
||||
case CRYPTO_ALG_TYPE_AEAD:
|
||||
crypto4xx_aead_done(dev, pd_uinfo, pd);
|
||||
@@ -945,15 +944,14 @@ static void crypto4xx_ctx_init(struct cr
|
||||
@@ -941,15 +940,14 @@ static void crypto4xx_ctx_init(struct cr
|
||||
ctx->sa_len = 0;
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -962,9 +960,11 @@ static void crypto4xx_common_exit(struct
|
||||
@@ -958,9 +956,11 @@ static void crypto4xx_common_exit(struct
|
||||
crypto4xx_free_sa(ctx);
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static int crypto4xx_aead_init(struct crypto_aead *tfm)
|
||||
@@ -1021,7 +1021,7 @@ static int crypto4xx_register_alg(struct
|
||||
@@ -1017,7 +1017,7 @@ static int crypto4xx_register_alg(struct
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -287,7 +287,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1050,7 +1050,7 @@ static void crypto4xx_unregister_alg(str
|
||||
@@ -1046,7 +1046,7 @@ static void crypto4xx_unregister_alg(str
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -296,7 +296,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
kfree(alg);
|
||||
}
|
||||
@@ -1112,126 +1112,109 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
@@ -1108,126 +1108,109 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
*/
|
||||
static struct crypto4xx_alg_common crypto4xx_alg[] = {
|
||||
/* Crypto AES modes */
|
||||
|
||||
@@ -160,7 +160,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -950,6 +950,19 @@ static int crypto4xx_sk_init(struct cryp
|
||||
@@ -946,6 +946,19 @@ static int crypto4xx_sk_init(struct cryp
|
||||
struct crypto4xx_alg *amcc_alg;
|
||||
struct crypto4xx_ctx *ctx = crypto_skcipher_ctx(sk);
|
||||
|
||||
@@ -180,7 +180,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
amcc_alg = container_of(alg, struct crypto4xx_alg, alg.u.cipher);
|
||||
crypto4xx_ctx_init(amcc_alg, ctx);
|
||||
return 0;
|
||||
@@ -965,6 +978,8 @@ static void crypto4xx_sk_exit(struct cry
|
||||
@@ -961,6 +974,8 @@ static void crypto4xx_sk_exit(struct cry
|
||||
struct crypto4xx_ctx *ctx = crypto_skcipher_ctx(sk);
|
||||
|
||||
crypto4xx_common_exit(ctx);
|
||||
@@ -189,7 +189,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
}
|
||||
|
||||
static int crypto4xx_aead_init(struct crypto_aead *tfm)
|
||||
@@ -1154,6 +1169,28 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1150,6 +1165,28 @@ static struct crypto4xx_alg_common crypt
|
||||
.init = crypto4xx_sk_init,
|
||||
.exit = crypto4xx_sk_exit,
|
||||
} },
|
||||
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/**
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -695,9 +695,9 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
@@ -691,9 +691,9 @@ int crypto4xx_build_pd(struct crypto_asy
|
||||
const __le32 *iv, const u32 iv_len,
|
||||
const struct dynamic_sa_ctl *req_sa,
|
||||
const unsigned int sa_len,
|
||||
@@ -119,7 +119,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
struct crypto4xx_device *dev = ctx->dev;
|
||||
struct dynamic_sa_ctl *sa;
|
||||
struct ce_gd *gd;
|
||||
@@ -996,9 +996,9 @@ static int crypto4xx_aead_init(struct cr
|
||||
@@ -992,9 +992,9 @@ static int crypto4xx_aead_init(struct cr
|
||||
|
||||
amcc_alg = container_of(alg, struct crypto4xx_alg, alg.u.aead);
|
||||
crypto4xx_ctx_init(amcc_alg, ctx);
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1132,8 +1132,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1128,8 +1128,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "cbc(aes)",
|
||||
.cra_driver_name = "cbc-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
@@ -1153,8 +1152,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1149,8 +1148,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "cfb(aes)",
|
||||
.cra_driver_name = "cfb-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
@@ -1174,8 +1172,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1170,8 +1168,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "ctr(aes)",
|
||||
.cra_driver_name = "ctr-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
@@ -1196,8 +1193,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1192,8 +1189,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "rfc3686(ctr(aes))",
|
||||
.cra_driver_name = "rfc3686-ctr-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
@@ -1217,8 +1213,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1213,8 +1209,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "ecb(aes)",
|
||||
.cra_driver_name = "ecb-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
@@ -1237,8 +1232,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1233,8 +1228,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_name = "ofb(aes)",
|
||||
.cra_driver_name = "ofb-aes-ppc4xx",
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -596,7 +596,7 @@ static void crypto4xx_aead_done(struct c
|
||||
@@ -592,7 +592,7 @@ static void crypto4xx_aead_done(struct c
|
||||
pd->pd_ctl_len.bf.pkt_len,
|
||||
dst);
|
||||
} else {
|
||||
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
#include <crypto/internal/skcipher.h>
|
||||
#include "crypto4xx_reg_def.h"
|
||||
#include "crypto4xx_core.h"
|
||||
@@ -1035,6 +1037,10 @@ static int crypto4xx_register_alg(struct
|
||||
@@ -1031,6 +1033,10 @@ static int crypto4xx_register_alg(struct
|
||||
rc = crypto_register_ahash(&alg->alg.u.hash);
|
||||
break;
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
default:
|
||||
rc = crypto_register_skcipher(&alg->alg.u.cipher);
|
||||
break;
|
||||
@@ -1064,6 +1070,10 @@ static void crypto4xx_unregister_alg(str
|
||||
@@ -1060,6 +1066,10 @@ static void crypto4xx_unregister_alg(str
|
||||
crypto_unregister_aead(&alg->alg.u.aead);
|
||||
break;
|
||||
|
||||
@@ -53,7 +53,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
default:
|
||||
crypto_unregister_skcipher(&alg->alg.u.cipher);
|
||||
}
|
||||
@@ -1122,6 +1132,69 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
@@ -1118,6 +1128,69 @@ static irqreturn_t crypto4xx_ce_interrup
|
||||
PPC4XX_TMO_ERR_INT);
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
/**
|
||||
* Supported Crypto Algorithms
|
||||
*/
|
||||
@@ -1291,6 +1364,18 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1287,6 +1360,18 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_module = THIS_MODULE,
|
||||
},
|
||||
} },
|
||||
@@ -142,7 +142,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1360,6 +1445,7 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1356,6 +1441,7 @@ static int crypto4xx_probe(struct platfo
|
||||
core_dev->dev->core_dev = core_dev;
|
||||
core_dev->dev->is_revb = is_revb;
|
||||
core_dev->device = dev;
|
||||
@@ -150,7 +150,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
spin_lock_init(&core_dev->lock);
|
||||
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
||||
ratelimit_default_init(&core_dev->dev->aead_ratelimit);
|
||||
@@ -1439,6 +1525,7 @@ static int crypto4xx_remove(struct platf
|
||||
@@ -1435,6 +1521,7 @@ static int crypto4xx_remove(struct platf
|
||||
tasklet_kill(&core_dev->tasklet);
|
||||
/* Un-register with Linux CryptoAPI */
|
||||
crypto4xx_unregister_alg(core_dev->dev);
|
||||
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1248,7 +1248,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1244,7 +1244,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_flags = CRYPTO_ALG_NEED_FALLBACK |
|
||||
CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
@@ -49,7 +49,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
},
|
||||
@@ -1268,7 +1268,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1264,7 +1264,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1227,7 +1227,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1223,7 +1223,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
@@ -33,7 +33,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
},
|
||||
@@ -1307,7 +1307,7 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1303,7 +1303,7 @@ static struct crypto4xx_alg_common crypt
|
||||
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_ASYNC |
|
||||
CRYPTO_ALG_KERN_DRIVER_ONLY,
|
||||
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
static int crypto4xx_sk_setup_fallback(struct crypto4xx_ctx *ctx,
|
||||
--- a/drivers/crypto/amcc/crypto4xx_core.c
|
||||
+++ b/drivers/crypto/amcc/crypto4xx_core.c
|
||||
@@ -1215,8 +1215,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1211,8 +1211,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_cbc,
|
||||
@@ -118,7 +118,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.init = crypto4xx_sk_init,
|
||||
.exit = crypto4xx_sk_exit,
|
||||
} },
|
||||
@@ -1235,8 +1235,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1231,8 +1231,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_cfb,
|
||||
@@ -129,7 +129,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.init = crypto4xx_sk_init,
|
||||
.exit = crypto4xx_sk_exit,
|
||||
} },
|
||||
@@ -1295,8 +1295,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1291,8 +1291,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.min_keysize = AES_MIN_KEY_SIZE,
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_ecb,
|
||||
@@ -140,7 +140,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
.init = crypto4xx_sk_init,
|
||||
.exit = crypto4xx_sk_exit,
|
||||
} },
|
||||
@@ -1315,8 +1315,8 @@ static struct crypto4xx_alg_common crypt
|
||||
@@ -1311,8 +1311,8 @@ static struct crypto4xx_alg_common crypt
|
||||
.max_keysize = AES_MAX_KEY_SIZE,
|
||||
.ivsize = AES_IV_SIZE,
|
||||
.setkey = crypto4xx_setkey_aes_ofb,
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
--- a/drivers/dma/dw/core.c
|
||||
+++ b/drivers/dma/dw/core.c
|
||||
@@ -167,6 +167,8 @@ static void dwc_initialize_chan_dw(struc
|
||||
cfghi |= DWC_CFGH_DST_PER(dwc->dws.dst_id);
|
||||
@@ -169,6 +169,8 @@ static void dwc_initialize_chan_dw(struc
|
||||
cfghi |= DWC_CFGH_SRC_PER(dwc->dws.src_id);
|
||||
cfghi |= DWC_CFGH_PROTCTL(dw->pdata->protctl);
|
||||
|
||||
+ cfghi |= DWC_CFGH_PROTCTL(3); /* bufferable + privileged access */
|
||||
+
|
||||
/* Set polarity of handshake interface */
|
||||
cfglo |= hs_polarity ? DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL : 0;
|
||||
|
||||
@@ -1293,11 +1295,8 @@ int dw_dma_probe(struct dw_dma_chip *chi
|
||||
@@ -1295,11 +1297,8 @@ int dw_dma_probe(struct dw_dma_chip *chi
|
||||
else
|
||||
list_add(&dwc->chan.device_node, &dw->dma.channels);
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
config ATH25
|
||||
bool "Atheros AR231x/AR531x SoC support"
|
||||
@@ -1006,6 +1006,7 @@ config MIPS_PARAVIRT
|
||||
@@ -1007,6 +1007,7 @@ config MIPS_PARAVIRT
|
||||
endchoice
|
||||
|
||||
source "arch/mips/alchemy/Kconfig"
|
||||
|
||||
@@ -124,8 +124,8 @@ archer-c5|\
|
||||
archer-c7)
|
||||
ucidef_set_led_usbdev "usb1" "USB1" "tp-link:green:usb1" "1-1"
|
||||
ucidef_set_led_usbdev "usb2" "USB2" "tp-link:green:usb2" "2-1"
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy1tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy1tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy0tpt"
|
||||
;;
|
||||
archer-c58-v1|\
|
||||
archer-c59-v1|\
|
||||
|
||||
@@ -605,6 +605,10 @@ ar71xx_setup_macs()
|
||||
fritz300e)
|
||||
lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)"))
|
||||
;;
|
||||
tl-wdr4300)
|
||||
base_mac=$(mtd_get_mac_binary u-boot 0x1fc00)
|
||||
wan_mac=$(macaddr_add "$base_mac" 1)
|
||||
;;
|
||||
tl-wr1043n-v5|\
|
||||
tl-wr1043nd-v4)
|
||||
lan_mac=$(mtd_get_mac_binary product-info 8)
|
||||
|
||||
@@ -83,8 +83,6 @@ get_status_led() {
|
||||
tl-wr902ac-v1)
|
||||
status_led="$board:green:power"
|
||||
;;
|
||||
archer-c5|\
|
||||
archer-c7|\
|
||||
tl-mr10u|\
|
||||
tl-mr12u|\
|
||||
tl-mr13u|\
|
||||
@@ -444,6 +442,8 @@ get_status_led() {
|
||||
tl-mr6400)
|
||||
status_led="tp-link:white:power"
|
||||
;;
|
||||
archer-c5|\
|
||||
archer-c7|\
|
||||
tl-mr3220|\
|
||||
tl-mr3220-v2|\
|
||||
tl-mr3420|\
|
||||
|
||||
@@ -141,7 +141,7 @@ case "$FIRMWARE" in
|
||||
archer-c5|\
|
||||
archer-c7)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
|
||||
;;
|
||||
nbg6616|\
|
||||
nbg6716)
|
||||
|
||||
@@ -393,6 +393,152 @@ tplink_pharos_v2_get_model_string() {
|
||||
dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1
|
||||
}
|
||||
|
||||
mikrotik_board_detect() {
|
||||
local machine="$1"
|
||||
|
||||
case "$machine" in
|
||||
*"2011iL")
|
||||
name="rb-2011il"
|
||||
;;
|
||||
*"2011iLS")
|
||||
name="rb-2011ils"
|
||||
;;
|
||||
*"2011L")
|
||||
name="rb-2011l"
|
||||
;;
|
||||
*"2011UAS")
|
||||
name="rb-2011uas"
|
||||
;;
|
||||
*"2011UAS-2HnD")
|
||||
name="rb-2011uas-2hnd"
|
||||
;;
|
||||
*"2011UiAS")
|
||||
name="rb-2011uias"
|
||||
;;
|
||||
*"2011UiAS-2HnD")
|
||||
name="rb-2011uias-2hnd"
|
||||
;;
|
||||
*"411/A/AH")
|
||||
name="rb-411"
|
||||
;;
|
||||
*"411U")
|
||||
name="rb-411u"
|
||||
;;
|
||||
*"433/AH")
|
||||
name="rb-433"
|
||||
;;
|
||||
*"433UAH")
|
||||
name="rb-433u"
|
||||
;;
|
||||
*"435G")
|
||||
name="rb-435g"
|
||||
;;
|
||||
*"450")
|
||||
name="rb-450"
|
||||
;;
|
||||
*"450G")
|
||||
name="rb-450g"
|
||||
;;
|
||||
*"493/AH")
|
||||
name="rb-493"
|
||||
;;
|
||||
*"493G")
|
||||
name="rb-493g"
|
||||
;;
|
||||
*"750")
|
||||
name="rb-750"
|
||||
;;
|
||||
*"750 r2"|\
|
||||
*"750r2")
|
||||
name="rb-750-r2"
|
||||
;;
|
||||
*"750GL")
|
||||
name="rb-750gl"
|
||||
;;
|
||||
*"750P r2")
|
||||
name="rb-750p-pbr2"
|
||||
;;
|
||||
*"750UP r2"|\
|
||||
*"750UPr2")
|
||||
name="rb-750up-r2"
|
||||
;;
|
||||
*"751")
|
||||
name="rb-751"
|
||||
;;
|
||||
*"751G")
|
||||
name="rb-751g"
|
||||
;;
|
||||
*"911-2Hn")
|
||||
name="rb-911-2hn"
|
||||
;;
|
||||
*"911-5Hn")
|
||||
name="rb-911-5hn"
|
||||
;;
|
||||
*"911G-2HPnD")
|
||||
name="rb-911g-2hpnd"
|
||||
;;
|
||||
*"911G-5HPacD")
|
||||
name="rb-911g-5hpacd"
|
||||
;;
|
||||
*"911G-5HPnD")
|
||||
name="rb-911g-5hpnd"
|
||||
;;
|
||||
*"912UAG-2HPnD")
|
||||
name="rb-912uag-2hpnd"
|
||||
;;
|
||||
*"912UAG-5HPnD")
|
||||
name="rb-912uag-5hpnd"
|
||||
;;
|
||||
*"921GS-5HPacD r2")
|
||||
name="rb-921gs-5hpacd-r2"
|
||||
;;
|
||||
*"941-2nD")
|
||||
name="rb-941-2nd"
|
||||
;;
|
||||
*"951G-2HnD")
|
||||
name="rb-951g-2hnd"
|
||||
;;
|
||||
*"951Ui-2HnD")
|
||||
name="rb-951ui-2hnd"
|
||||
;;
|
||||
*"951Ui-2nD")
|
||||
name="rb-951ui-2nd"
|
||||
;;
|
||||
*"952Ui-5ac2nD")
|
||||
name="rb-952ui-5ac2nd"
|
||||
;;
|
||||
*"962UiGS-5HacT2HnT")
|
||||
name="rb-962uigs-5hact2hnt"
|
||||
;;
|
||||
*"LHG 5nD")
|
||||
name="rb-lhg-5nd"
|
||||
;;
|
||||
*"mAP 2nD"|\
|
||||
*"mAP2nD")
|
||||
name="rb-map-2nd"
|
||||
;;
|
||||
*"mAP L-2nD"|\
|
||||
*"mAPL-2nD")
|
||||
name="rb-mapl-2nd"
|
||||
;;
|
||||
*"SXT Lite2")
|
||||
name="rb-sxt2n"
|
||||
;;
|
||||
*"SXT Lite5")
|
||||
name="rb-sxt5n"
|
||||
;;
|
||||
*"wAP 2nD r2")
|
||||
name="rb-wap-2nd"
|
||||
;;
|
||||
*"wAP G-5HacT2HnD"|\
|
||||
*"wAPG-5HacT2HnD")
|
||||
name="rb-wapg-5hact2hnd"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$name"
|
||||
}
|
||||
|
||||
ar71xx_board_detect() {
|
||||
local machine
|
||||
local name
|
||||
@@ -819,6 +965,10 @@ ar71xx_board_detect() {
|
||||
*"MAC1200R")
|
||||
name="mc-mac1200r"
|
||||
;;
|
||||
"MikroTik"*|\
|
||||
"Mikrotik"*)
|
||||
name=$(mikrotik_board_detect "$machine")
|
||||
;;
|
||||
*"MiniBox V1.0")
|
||||
name="minibox-v1"
|
||||
;;
|
||||
@@ -980,138 +1130,6 @@ ar71xx_board_detect() {
|
||||
*"Rocket M XW")
|
||||
name="rocket-m-xw"
|
||||
;;
|
||||
*"RouterBOARD 2011iL")
|
||||
name="rb-2011il"
|
||||
;;
|
||||
*"RouterBOARD 2011iLS")
|
||||
name="rb-2011ils"
|
||||
;;
|
||||
*"RouterBOARD 2011L")
|
||||
name="rb-2011l"
|
||||
;;
|
||||
*"RouterBOARD 2011UAS")
|
||||
name="rb-2011uas"
|
||||
;;
|
||||
*"RouterBOARD 2011UAS-2HnD")
|
||||
name="rb-2011uas-2hnd"
|
||||
;;
|
||||
*"RouterBOARD 2011UiAS")
|
||||
name="rb-2011uias"
|
||||
;;
|
||||
*"RouterBOARD 2011UiAS-2HnD")
|
||||
name="rb-2011uias-2hnd"
|
||||
;;
|
||||
*"RouterBOARD 411/A/AH")
|
||||
name="rb-411"
|
||||
;;
|
||||
*"RouterBOARD 411U")
|
||||
name="rb-411u"
|
||||
;;
|
||||
*"RouterBOARD 433/AH")
|
||||
name="rb-433"
|
||||
;;
|
||||
*"RouterBOARD 433UAH")
|
||||
name="rb-433u"
|
||||
;;
|
||||
*"RouterBOARD 435G")
|
||||
name="rb-435g"
|
||||
;;
|
||||
*"RouterBOARD 450")
|
||||
name="rb-450"
|
||||
;;
|
||||
*"RouterBOARD 450G")
|
||||
name="rb-450g"
|
||||
;;
|
||||
*"RouterBOARD 493/AH")
|
||||
name="rb-493"
|
||||
;;
|
||||
*"RouterBOARD 493G")
|
||||
name="rb-493g"
|
||||
;;
|
||||
*"RouterBOARD 750")
|
||||
name="rb-750"
|
||||
;;
|
||||
*"RouterBOARD 750 r2")
|
||||
name="rb-750-r2"
|
||||
;;
|
||||
*"RouterBOARD 750GL")
|
||||
name="rb-750gl"
|
||||
;;
|
||||
*"RouterBOARD 750P r2")
|
||||
name="rb-750p-pbr2"
|
||||
;;
|
||||
*"RouterBOARD 750UP r2")
|
||||
name="rb-750up-r2"
|
||||
;;
|
||||
*"RouterBOARD 751")
|
||||
name="rb-751"
|
||||
;;
|
||||
*"RouterBOARD 751G")
|
||||
name="rb-751g"
|
||||
;;
|
||||
*"RouterBOARD 911-2Hn")
|
||||
name="rb-911-2hn"
|
||||
;;
|
||||
*"RouterBOARD 911-5Hn")
|
||||
name="rb-911-5hn"
|
||||
;;
|
||||
*"RouterBOARD 911G-2HPnD")
|
||||
name="rb-911g-2hpnd"
|
||||
;;
|
||||
*"RouterBOARD 911G-5HPacD")
|
||||
name="rb-911g-5hpacd"
|
||||
;;
|
||||
*"RouterBOARD 911G-5HPnD")
|
||||
name="rb-911g-5hpnd"
|
||||
;;
|
||||
*"RouterBOARD 912UAG-2HPnD")
|
||||
name="rb-912uag-2hpnd"
|
||||
;;
|
||||
*"RouterBOARD 912UAG-5HPnD")
|
||||
name="rb-912uag-5hpnd"
|
||||
;;
|
||||
*"RouterBOARD 921GS-5HPacD r2")
|
||||
name="rb-921gs-5hpacd-r2"
|
||||
;;
|
||||
*"RouterBOARD 941-2nD")
|
||||
name="rb-941-2nd"
|
||||
;;
|
||||
*"RouterBOARD 951G-2HnD")
|
||||
name="rb-951g-2hnd"
|
||||
;;
|
||||
*"RouterBOARD 951Ui-2HnD")
|
||||
name="rb-951ui-2hnd"
|
||||
;;
|
||||
*"RouterBOARD 951Ui-2nD")
|
||||
name="rb-951ui-2nd"
|
||||
;;
|
||||
*"RouterBOARD 952Ui-5ac2nD")
|
||||
name="rb-952ui-5ac2nd"
|
||||
;;
|
||||
*"RouterBOARD 962UiGS-5HacT2HnT")
|
||||
name="rb-962uigs-5hact2hnt"
|
||||
;;
|
||||
*"RouterBOARD LHG 5nD")
|
||||
name="rb-lhg-5nd"
|
||||
;;
|
||||
*"RouterBOARD mAP 2nD")
|
||||
name="rb-map-2nd"
|
||||
;;
|
||||
*"RouterBOARD mAP L-2nD")
|
||||
name="rb-mapl-2nd"
|
||||
;;
|
||||
*"RouterBOARD SXT Lite2")
|
||||
name="rb-sxt2n"
|
||||
;;
|
||||
*"RouterBOARD SXT Lite5")
|
||||
name="rb-sxt5n"
|
||||
;;
|
||||
*"RouterBOARD wAP 2nD r2")
|
||||
name="rb-wap-2nd"
|
||||
;;
|
||||
*"RouterBOARD wAP G-5HacT2HnD")
|
||||
name="rb-wapg-5hact2hnd"
|
||||
;;
|
||||
*"RouterStation")
|
||||
name="routerstation"
|
||||
;;
|
||||
|
||||
@@ -495,7 +495,7 @@ platform_check_image() {
|
||||
local magic_ver="0100"
|
||||
|
||||
case "$board" in
|
||||
tl-wdr6500-v2)
|
||||
tl-wdr3320-v2|tl-wdr6500-v2)
|
||||
magic_ver="0200"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -105,6 +105,34 @@ static struct gpio_led archer_c7_leds_gpio[] __initdata = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led wdr4900_leds_gpio[] __initdata = {
|
||||
{
|
||||
.name = "tp-link:blue:qss",
|
||||
.gpio = ARCHER_C7_GPIO_LED_QSS,
|
||||
.active_low = 1,
|
||||
},
|
||||
{
|
||||
.name = "tp-link:blue:system",
|
||||
.gpio = ARCHER_C7_GPIO_LED_SYSTEM,
|
||||
.active_low = 1,
|
||||
},
|
||||
{
|
||||
.name = "tp-link:blue:wlan2g",
|
||||
.gpio = ARCHER_C7_GPIO_LED_WLAN2G,
|
||||
.active_low = 1,
|
||||
},
|
||||
{
|
||||
.name = "tp-link:green:usb1",
|
||||
.gpio = ARCHER_C7_GPIO_LED_USB1,
|
||||
.active_low = 1,
|
||||
},
|
||||
{
|
||||
.name = "tp-link:green:usb2",
|
||||
.gpio = ARCHER_C7_GPIO_LED_USB2,
|
||||
.active_low = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_keys_button archer_c7_gpio_keys[] __initdata = {
|
||||
{
|
||||
.desc = "Reset button",
|
||||
@@ -141,6 +169,17 @@ static struct gpio_keys_button archer_c7_v2_gpio_keys[] __initdata = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_keys_button wdr4900_gpio_keys[] __initdata = {
|
||||
{
|
||||
.desc = "Reset button",
|
||||
.type = EV_KEY,
|
||||
.code = KEY_WPS_BUTTON,
|
||||
.debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
|
||||
.gpio = ARCHER_C7_GPIO_BTN_RESET,
|
||||
.active_low = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ar8327_led_info archer_c7_leds_ar8327[] = {
|
||||
AR8327_LED_INFO(PHY0_0, HW, "tp-link:blue:wan"),
|
||||
AR8327_LED_INFO(PHY1_0, HW, "tp-link:blue:lan1"),
|
||||
@@ -207,20 +246,20 @@ static void __init common_setup(bool pcie_slot)
|
||||
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
|
||||
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
|
||||
u8 tmpmac[ETH_ALEN];
|
||||
u8 tmpmac2[ETH_ALEN];
|
||||
|
||||
ath79_register_m25p80(&archer_c7_flash_data);
|
||||
ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
|
||||
archer_c7_leds_gpio);
|
||||
|
||||
ath79_init_mac(tmpmac, mac, -1);
|
||||
ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, tmpmac);
|
||||
|
||||
if (pcie_slot) {
|
||||
ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, mac);
|
||||
ath79_register_pci();
|
||||
} else {
|
||||
ath79_init_mac(tmpmac, mac, -1);
|
||||
ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, tmpmac);
|
||||
|
||||
ath79_init_mac(tmpmac2, mac, -2);
|
||||
ap9x_pci_setup_wmac_led_pin(0, 0);
|
||||
ap91_pci_init(art + ARCHER_C7_PCIE_CALDATA_OFFSET, tmpmac);
|
||||
ap91_pci_init(art + ARCHER_C7_PCIE_CALDATA_OFFSET, tmpmac2);
|
||||
}
|
||||
|
||||
mdiobus_register_board_info(archer_c7_mdio0_info,
|
||||
@@ -261,6 +300,8 @@ static void __init archer_c5_setup(void)
|
||||
ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
|
||||
ARRAY_SIZE(archer_c7_gpio_keys),
|
||||
archer_c7_gpio_keys);
|
||||
ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
|
||||
archer_c7_leds_gpio);
|
||||
common_setup(true);
|
||||
}
|
||||
|
||||
@@ -272,6 +313,8 @@ static void __init archer_c7_setup(void)
|
||||
ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
|
||||
ARRAY_SIZE(archer_c7_gpio_keys),
|
||||
archer_c7_gpio_keys);
|
||||
ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
|
||||
archer_c7_leds_gpio);
|
||||
common_setup(true);
|
||||
}
|
||||
|
||||
@@ -283,6 +326,8 @@ static void __init archer_c7_v2_setup(void)
|
||||
ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
|
||||
ARRAY_SIZE(archer_c7_v2_gpio_keys),
|
||||
archer_c7_v2_gpio_keys);
|
||||
ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
|
||||
archer_c7_leds_gpio);
|
||||
common_setup(true);
|
||||
}
|
||||
|
||||
@@ -292,8 +337,10 @@ MIPS_MACHINE(ATH79_MACH_ARCHER_C7_V2, "ARCHER-C7-V2", "TP-LINK Archer C7",
|
||||
static void __init tl_wdr4900_v2_setup(void)
|
||||
{
|
||||
ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
|
||||
ARRAY_SIZE(archer_c7_gpio_keys),
|
||||
archer_c7_gpio_keys);
|
||||
ARRAY_SIZE(wdr4900_gpio_keys),
|
||||
wdr4900_gpio_keys);
|
||||
ath79_register_leds_gpio(-1, ARRAY_SIZE(wdr4900_leds_gpio),
|
||||
wdr4900_leds_gpio);
|
||||
common_setup(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ static void __init wdr4300_setup(void)
|
||||
|
||||
ath79_register_mdio(0, 0x0);
|
||||
|
||||
ath79_init_mac(ath79_eth0_data.mac_addr, mac, -2);
|
||||
ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
|
||||
|
||||
/* GMAC0 is connected to an AR8327N switch */
|
||||
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1151,6 +1151,9 @@ config MIPS_MSC
|
||||
@@ -1152,6 +1152,9 @@ config MIPS_MSC
|
||||
config MIPS_NILE4
|
||||
bool
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ See: https://github.com/raspberrypi/linux/issues/1054
|
||||
|
||||
--- a/drivers/spi/spidev.c
|
||||
+++ b/drivers/spi/spidev.c
|
||||
@@ -697,6 +697,7 @@ static const struct of_device_id spidev_
|
||||
@@ -700,6 +700,7 @@ static const struct of_device_id spidev_
|
||||
{ .compatible = "rohm,dh2228fv" },
|
||||
{ .compatible = "lineartechnology,ltc2488" },
|
||||
{ .compatible = "siliconlabs,si3210" },
|
||||
|
||||
@@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5088,7 +5088,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5095,7 +5095,7 @@ static void port_event(struct usb_hub *h
|
||||
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
|
||||
u16 status = 0, unused;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
#define memset(p,v,n) \
|
||||
--- a/arch/arm/include/asm/uaccess.h
|
||||
+++ b/arch/arm/include/asm/uaccess.h
|
||||
@@ -526,6 +526,9 @@ do { \
|
||||
@@ -544,6 +544,9 @@ do { \
|
||||
extern unsigned long __must_check
|
||||
arm_copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ use the same logic.
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -2517,7 +2517,12 @@ static int pl011_setup_port(struct devic
|
||||
@@ -2515,7 +2515,12 @@ static int pl011_setup_port(struct devic
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1651,6 +1651,23 @@ static void pl011_put_poll_char(struct u
|
||||
@@ -1649,6 +1649,23 @@ static void pl011_put_poll_char(struct u
|
||||
|
||||
#endif /* CONFIG_CONSOLE_POLL */
|
||||
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_hwinit(struct uart_port *port)
|
||||
{
|
||||
struct uart_amba_port *uap =
|
||||
@@ -1667,7 +1684,7 @@ static int pl011_hwinit(struct uart_port
|
||||
@@ -1665,7 +1682,7 @@ static int pl011_hwinit(struct uart_port
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/* Clear pending error and receive interrupts */
|
||||
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
||||
@@ -2321,7 +2338,7 @@ static int __init pl011_console_setup(st
|
||||
@@ -2319,7 +2336,7 @@ static int __init pl011_console_setup(st
|
||||
plat->init();
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
if (uap->vendor->fixed_options) {
|
||||
baud = uap->fixed_baud;
|
||||
@@ -2448,6 +2465,7 @@ static struct uart_driver amba_reg = {
|
||||
@@ -2446,6 +2463,7 @@ static struct uart_driver amba_reg = {
|
||||
.cons = AMBA_CONSOLE,
|
||||
};
|
||||
|
||||
@@ -76,7 +76,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_probe_dt_alias(int index, struct device *dev)
|
||||
{
|
||||
struct device_node *np;
|
||||
@@ -2479,6 +2497,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
@@ -2477,6 +2495,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 17cb62255ef8f6b6ac270024204a8fa65537b333 Mon Sep 17 00:00:00 2001
|
||||
From: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
|
||||
Date: Sun, 19 Aug 2018 21:23:14 +0300
|
||||
Subject: [PATCH] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3
|
||||
|
||||
Setting GPIO 21 high seems to be required to enable power to USB ports
|
||||
on the WNDR3400v3. As there is already similar code for WNR3500L,
|
||||
make the existing USB power GPIO code generic and use that.
|
||||
|
||||
Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
|
||||
---
|
||||
arch/mips/bcm47xx/workarounds.c | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/arch/mips/bcm47xx/workarounds.c
|
||||
+++ b/arch/mips/bcm47xx/workarounds.c
|
||||
@@ -5,9 +5,8 @@
|
||||
#include <bcm47xx_board.h>
|
||||
#include <bcm47xx.h>
|
||||
|
||||
-static void __init bcm47xx_workarounds_netgear_wnr3500l(void)
|
||||
+static void __init bcm47xx_workarounds_enable_usb_power(int usb_power)
|
||||
{
|
||||
- const int usb_power = 12;
|
||||
int err;
|
||||
|
||||
err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power");
|
||||
@@ -23,7 +22,10 @@ void __init bcm47xx_workarounds(void)
|
||||
|
||||
switch (board) {
|
||||
case BCM47XX_BOARD_NETGEAR_WNR3500L:
|
||||
- bcm47xx_workarounds_netgear_wnr3500l();
|
||||
+ bcm47xx_workarounds_enable_usb_power(12);
|
||||
+ break;
|
||||
+ case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
|
||||
+ bcm47xx_workarounds_enable_usb_power(21);
|
||||
break;
|
||||
default:
|
||||
/* No workaround(s) needed */
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1722,10 +1722,8 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1723,10 +1723,8 @@ static int bcm_enet_probe(struct platfor
|
||||
const char *clk_name;
|
||||
int i, ret;
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
|
||||
@@ -2700,11 +2698,8 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2701,11 +2699,8 @@ static int bcm_enetsw_probe(struct platf
|
||||
struct resource *res_mem;
|
||||
int ret, irq_rx, irq_tx;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1767,14 +1767,14 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1768,14 +1768,14 @@ static int bcm_enet_probe(struct platfor
|
||||
clk_name = "enet1";
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
/* initialize default and fetch platform data */
|
||||
priv->rx_ring_size = BCMENET_DEF_RX_DESC;
|
||||
@@ -1802,7 +1802,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1803,7 +1803,7 @@ static int bcm_enet_probe(struct platfor
|
||||
|
||||
if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) {
|
||||
/* using internal PHY, enable clock */
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
if (IS_ERR(priv->phy_clk)) {
|
||||
ret = PTR_ERR(priv->phy_clk);
|
||||
priv->phy_clk = NULL;
|
||||
@@ -1810,7 +1810,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1811,7 +1811,7 @@ static int bcm_enet_probe(struct platfor
|
||||
}
|
||||
ret = clk_prepare_enable(priv->phy_clk);
|
||||
if (ret)
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
/* do minimal hardware init to be able to probe mii bus */
|
||||
@@ -1907,14 +1907,8 @@ out_uninit_hw:
|
||||
@@ -1908,14 +1908,8 @@ out_uninit_hw:
|
||||
if (priv->phy_clk)
|
||||
clk_disable_unprepare(priv->phy_clk);
|
||||
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out:
|
||||
free_netdev(dev);
|
||||
return ret;
|
||||
@@ -1950,12 +1944,10 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1951,12 +1945,10 @@ static int bcm_enet_remove(struct platfo
|
||||
}
|
||||
|
||||
/* disable hw block clocks */
|
||||
@@ -78,7 +78,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
free_netdev(dev);
|
||||
return 0;
|
||||
@@ -2738,26 +2730,20 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2739,26 +2731,20 @@ static int bcm_enetsw_probe(struct platf
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
priv->rx_chan = 0;
|
||||
priv->tx_chan = 1;
|
||||
@@ -2789,15 +2775,6 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2790,15 +2776,6 @@ static int bcm_enetsw_probe(struct platf
|
||||
|
||||
out_disable_clk:
|
||||
clk_disable_unprepare(priv->mac_clk);
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out:
|
||||
free_netdev(dev);
|
||||
return ret;
|
||||
@@ -2809,20 +2786,13 @@ static int bcm_enetsw_remove(struct plat
|
||||
@@ -2810,20 +2787,13 @@ static int bcm_enetsw_remove(struct plat
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
struct net_device *dev;
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1904,8 +1904,7 @@ out_free_mdio:
|
||||
@@ -1905,8 +1905,7 @@ out_free_mdio:
|
||||
out_uninit_hw:
|
||||
/* turn off mdc clock */
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
out_disable_clk_mac:
|
||||
clk_disable_unprepare(priv->mac_clk);
|
||||
@@ -1944,9 +1943,7 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1945,9 +1944,7 @@ static int bcm_enet_remove(struct platfo
|
||||
}
|
||||
|
||||
/* disable hw block clocks */
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1719,7 +1719,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1720,7 +1720,6 @@ static int bcm_enet_probe(struct platfor
|
||||
struct bcm63xx_enet_platform_data *pd;
|
||||
struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx;
|
||||
struct mii_bus *bus;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
int i, ret;
|
||||
|
||||
if (!bcm_enet_shared_base[0])
|
||||
@@ -1760,14 +1759,12 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1761,14 +1760,12 @@ static int bcm_enet_probe(struct platfor
|
||||
if (priv->mac_id == 0) {
|
||||
priv->rx_chan = 0;
|
||||
priv->tx_chan = 1;
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
/*
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1755,15 +1755,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1756,15 +1756,6 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->irq_tx = res_irq_tx->start;
|
||||
priv->mac_id = pdev->id;
|
||||
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
|
||||
if (IS_ERR(priv->mac_clk)) {
|
||||
ret = PTR_ERR(priv->mac_clk);
|
||||
@@ -1795,6 +1786,8 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1796,6 +1787,8 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->dma_chan_width = pd->dma_chan_width;
|
||||
priv->dma_has_sram = pd->dma_has_sram;
|
||||
priv->dma_desc_shift = pd->dma_desc_shift;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1790,7 +1790,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1791,7 +1791,7 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->tx_chan = pd->tx_chan;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1753,7 +1753,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1754,7 +1754,6 @@ static int bcm_enet_probe(struct platfor
|
||||
dev->irq = priv->irq = res_irq->start;
|
||||
priv->irq_rx = res_irq_rx->start;
|
||||
priv->irq_tx = res_irq_tx->start;
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
|
||||
if (IS_ERR(priv->mac_clk)) {
|
||||
@@ -1821,7 +1820,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1822,7 +1821,7 @@ static int bcm_enet_probe(struct platfor
|
||||
bus->priv = priv;
|
||||
bus->read = bcm_enet_mdio_read_phylib;
|
||||
bus->write = bcm_enet_mdio_write_phylib;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1636,7 +1636,7 @@ static int bcm_enet_change_mtu(struct ne
|
||||
@@ -1637,7 +1637,7 @@ static int bcm_enet_change_mtu(struct ne
|
||||
return -EBUSY;
|
||||
|
||||
/* add ethernet header + vlan tag size */
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -869,10 +869,8 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -870,10 +870,8 @@ static int bcm_enet_open(struct net_devi
|
||||
struct bcm_enet_priv *priv;
|
||||
struct sockaddr addr;
|
||||
struct device *kdev;
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
void *p;
|
||||
u32 val;
|
||||
|
||||
@@ -880,40 +878,10 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -881,40 +879,10 @@ static int bcm_enet_open(struct net_devi
|
||||
kdev = &priv->pdev->dev;
|
||||
|
||||
if (priv->has_phy) {
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
/* mask all interrupts and request them */
|
||||
@@ -923,7 +891,7 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -924,7 +892,7 @@ static int bcm_enet_open(struct net_devi
|
||||
|
||||
ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev);
|
||||
if (ret)
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, 0,
|
||||
dev->name, dev);
|
||||
@@ -1085,8 +1053,8 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -1086,8 +1054,8 @@ static int bcm_enet_open(struct net_devi
|
||||
enet_dmac_writel(priv, priv->dma_chan_int_mask,
|
||||
ENETDMAC_IRMASK, priv->tx_chan);
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
else
|
||||
bcm_enet_adjust_link(dev);
|
||||
|
||||
@@ -1127,10 +1095,6 @@ out_freeirq_rx:
|
||||
@@ -1128,10 +1096,6 @@ out_freeirq_rx:
|
||||
out_freeirq:
|
||||
free_irq(dev->irq, dev);
|
||||
|
||||
@@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1235,10 +1199,6 @@ static int bcm_enet_stop(struct net_devi
|
||||
@@ -1236,10 +1200,6 @@ static int bcm_enet_stop(struct net_devi
|
||||
free_irq(priv->irq_rx, dev);
|
||||
free_irq(dev->irq, dev);
|
||||
|
||||
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1804,14 +1764,49 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1805,14 +1765,49 @@ static int bcm_enet_probe(struct platfor
|
||||
|
||||
/* do minimal hardware init to be able to probe mii bus */
|
||||
bcm_enet_hw_preinit(priv);
|
||||
@@ -161,7 +161,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
bus = priv->mii_bus;
|
||||
@@ -1835,6 +1830,35 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1836,6 +1831,35 @@ static int bcm_enet_probe(struct platfor
|
||||
dev_err(&pdev->dev, "unable to register mdio bus\n");
|
||||
goto out_free_mdio;
|
||||
}
|
||||
@@ -197,7 +197,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
} else {
|
||||
|
||||
/* run platform code to initialize PHY device */
|
||||
@@ -1842,47 +1866,16 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1843,47 +1867,16 @@ static int bcm_enet_probe(struct platfor
|
||||
pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
|
||||
bcm_enet_mdio_write_mii)) {
|
||||
dev_err(&pdev->dev, "unable to configure mdio bus\n");
|
||||
@@ -249,7 +249,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
if (priv->mii_bus)
|
||||
mdiobus_unregister(priv->mii_bus);
|
||||
|
||||
@@ -1890,6 +1883,9 @@ out_free_mdio:
|
||||
@@ -1891,6 +1884,9 @@ out_free_mdio:
|
||||
if (priv->mii_bus)
|
||||
mdiobus_free(priv->mii_bus);
|
||||
|
||||
@@ -259,7 +259,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out_uninit_hw:
|
||||
/* turn off mdc clock */
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
@@ -1920,6 +1916,7 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1921,6 +1917,7 @@ static int bcm_enet_remove(struct platfo
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
|
||||
if (priv->has_phy) {
|
||||
|
||||
@@ -32,7 +32,7 @@ Subject: [PATCH 54/81] bcm63xx_enet: enable rgmii clock on external ports
|
||||
#define ENETSW_MDIOC_EXT_MASK (1 << 16)
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2191,6 +2191,18 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2192,6 +2192,18 @@ static int bcm_enetsw_open(struct net_de
|
||||
priv->sw_port_link[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#include <bcm63xx_dev_enet.h>
|
||||
#include "bcm63xx_enet.h"
|
||||
@@ -1936,7 +1937,8 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1937,7 +1938,8 @@ static int bcm_enet_remove(struct platfo
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
.probe = bcm_enet_probe,
|
||||
.remove = bcm_enet_remove,
|
||||
.driver = {
|
||||
@@ -1945,6 +1947,42 @@ struct platform_driver bcm63xx_enet_driv
|
||||
@@ -1946,6 +1948,42 @@ struct platform_driver bcm63xx_enet_driv
|
||||
},
|
||||
};
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
/*
|
||||
* switch mii access callbacks
|
||||
*/
|
||||
@@ -2203,29 +2241,6 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2204,29 +2242,6 @@ static int bcm_enetsw_open(struct net_de
|
||||
enetsw_writeb(priv, rgmii_ctrl, ENETSW_RGMII_CTRL_REG(i));
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
/* initialize flow control buffer allocation */
|
||||
enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0,
|
||||
ENETDMA_BUFALLOC_REG(priv->rx_chan));
|
||||
@@ -2684,6 +2699,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2685,6 +2700,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
struct bcm63xx_enetsw_platform_data *pd;
|
||||
struct resource *res_mem;
|
||||
int ret, irq_rx, irq_tx;
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
if (!bcm_enet_shared_base[0])
|
||||
return -EPROBE_DEFER;
|
||||
@@ -2766,6 +2784,43 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2767,6 +2785,43 @@ static int bcm_enetsw_probe(struct platf
|
||||
priv->pdev = pdev;
|
||||
priv->net_dev = dev;
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
return 0;
|
||||
|
||||
out_disable_clk:
|
||||
@@ -2787,6 +2842,9 @@ static int bcm_enetsw_remove(struct plat
|
||||
@@ -2788,6 +2843,9 @@ static int bcm_enetsw_remove(struct plat
|
||||
priv = netdev_priv(dev);
|
||||
unregister_netdev(dev);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2743,9 +2743,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2744,9 +2744,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2238,6 +2238,10 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2239,6 +2239,10 @@ static int bcm_enetsw_open(struct net_de
|
||||
|
||||
rgmii_ctrl = enetsw_readb(priv, ENETSW_RGMII_CTRL_REG(i));
|
||||
rgmii_ctrl |= ENETSW_RGMII_CTRL_GMII_CLK_EN;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1739,10 +1739,8 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1740,10 +1740,8 @@ static int bcm_enet_probe(struct platfor
|
||||
const char *clk_name;
|
||||
int i, ret;
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
|
||||
@@ -2714,11 +2712,8 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2715,11 +2713,8 @@ static int bcm_enetsw_probe(struct platf
|
||||
struct resource *res_mem;
|
||||
int ret, irq_rx, irq_tx;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1784,14 +1784,14 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1785,14 +1785,14 @@ static int bcm_enet_probe(struct platfor
|
||||
clk_name = "enet1";
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
/* initialize default and fetch platform data */
|
||||
priv->rx_ring_size = BCMENET_DEF_RX_DESC;
|
||||
@@ -1819,7 +1819,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1820,7 +1820,7 @@ static int bcm_enet_probe(struct platfor
|
||||
|
||||
if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) {
|
||||
/* using internal PHY, enable clock */
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
if (IS_ERR(priv->phy_clk)) {
|
||||
ret = PTR_ERR(priv->phy_clk);
|
||||
priv->phy_clk = NULL;
|
||||
@@ -1827,7 +1827,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1828,7 +1828,7 @@ static int bcm_enet_probe(struct platfor
|
||||
}
|
||||
ret = clk_prepare_enable(priv->phy_clk);
|
||||
if (ret)
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
/* do minimal hardware init to be able to probe mii bus */
|
||||
@@ -1921,14 +1921,8 @@ out_uninit_hw:
|
||||
@@ -1922,14 +1922,8 @@ out_uninit_hw:
|
||||
if (priv->phy_clk)
|
||||
clk_disable_unprepare(priv->phy_clk);
|
||||
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out:
|
||||
free_netdev(dev);
|
||||
return ret;
|
||||
@@ -1964,12 +1958,10 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1965,12 +1959,10 @@ static int bcm_enet_remove(struct platfo
|
||||
}
|
||||
|
||||
/* disable hw block clocks */
|
||||
@@ -78,7 +78,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
free_netdev(dev);
|
||||
return 0;
|
||||
@@ -2752,26 +2744,20 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2753,26 +2745,20 @@ static int bcm_enetsw_probe(struct platf
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
priv->rx_chan = 0;
|
||||
priv->tx_chan = 1;
|
||||
@@ -2803,15 +2789,6 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2804,15 +2790,6 @@ static int bcm_enetsw_probe(struct platf
|
||||
|
||||
out_disable_clk:
|
||||
clk_disable_unprepare(priv->mac_clk);
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out:
|
||||
free_netdev(dev);
|
||||
return ret;
|
||||
@@ -2823,20 +2800,13 @@ static int bcm_enetsw_remove(struct plat
|
||||
@@ -2824,20 +2801,13 @@ static int bcm_enetsw_remove(struct plat
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
struct net_device *dev;
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1918,8 +1918,7 @@ out_free_mdio:
|
||||
@@ -1919,8 +1919,7 @@ out_free_mdio:
|
||||
out_uninit_hw:
|
||||
/* turn off mdc clock */
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
out_disable_clk_mac:
|
||||
clk_disable_unprepare(priv->mac_clk);
|
||||
@@ -1958,9 +1957,7 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1959,9 +1958,7 @@ static int bcm_enet_remove(struct platfo
|
||||
}
|
||||
|
||||
/* disable hw block clocks */
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1736,7 +1736,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1737,7 +1737,6 @@ static int bcm_enet_probe(struct platfor
|
||||
struct bcm63xx_enet_platform_data *pd;
|
||||
struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx;
|
||||
struct mii_bus *bus;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
int i, ret;
|
||||
|
||||
if (!bcm_enet_shared_base[0])
|
||||
@@ -1777,14 +1776,12 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1778,14 +1777,12 @@ static int bcm_enet_probe(struct platfor
|
||||
if (priv->mac_id == 0) {
|
||||
priv->rx_chan = 0;
|
||||
priv->tx_chan = 1;
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
/*
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1772,15 +1772,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1773,15 +1773,6 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->irq_tx = res_irq_tx->start;
|
||||
priv->mac_id = pdev->id;
|
||||
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
|
||||
if (IS_ERR(priv->mac_clk)) {
|
||||
ret = PTR_ERR(priv->mac_clk);
|
||||
@@ -1812,6 +1803,8 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1813,6 +1804,8 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->dma_chan_width = pd->dma_chan_width;
|
||||
priv->dma_has_sram = pd->dma_has_sram;
|
||||
priv->dma_desc_shift = pd->dma_desc_shift;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1807,7 +1807,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1808,7 +1808,7 @@ static int bcm_enet_probe(struct platfor
|
||||
priv->tx_chan = pd->tx_chan;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1770,7 +1770,6 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1771,7 +1771,6 @@ static int bcm_enet_probe(struct platfor
|
||||
dev->irq = priv->irq = res_irq->start;
|
||||
priv->irq_rx = res_irq_rx->start;
|
||||
priv->irq_tx = res_irq_tx->start;
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
|
||||
if (IS_ERR(priv->mac_clk)) {
|
||||
@@ -1838,7 +1837,7 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1839,7 +1838,7 @@ static int bcm_enet_probe(struct platfor
|
||||
bus->priv = priv;
|
||||
bus->read = bcm_enet_mdio_read_phylib;
|
||||
bus->write = bcm_enet_mdio_write_phylib;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -1635,7 +1635,7 @@ static int compute_hw_mtu(struct bcm_ene
|
||||
@@ -1636,7 +1636,7 @@ static int compute_hw_mtu(struct bcm_ene
|
||||
actual_mtu = mtu;
|
||||
|
||||
/* add ethernet header + vlan tag size */
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -870,10 +870,8 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -871,10 +871,8 @@ static int bcm_enet_open(struct net_devi
|
||||
struct bcm_enet_priv *priv;
|
||||
struct sockaddr addr;
|
||||
struct device *kdev;
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
void *p;
|
||||
u32 val;
|
||||
|
||||
@@ -881,40 +879,10 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -882,40 +880,10 @@ static int bcm_enet_open(struct net_devi
|
||||
kdev = &priv->pdev->dev;
|
||||
|
||||
if (priv->has_phy) {
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
/* mask all interrupts and request them */
|
||||
@@ -924,7 +892,7 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -925,7 +893,7 @@ static int bcm_enet_open(struct net_devi
|
||||
|
||||
ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev);
|
||||
if (ret)
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, 0,
|
||||
dev->name, dev);
|
||||
@@ -1086,8 +1054,8 @@ static int bcm_enet_open(struct net_devi
|
||||
@@ -1087,8 +1055,8 @@ static int bcm_enet_open(struct net_devi
|
||||
enet_dmac_writel(priv, priv->dma_chan_int_mask,
|
||||
ENETDMAC_IRMASK, priv->tx_chan);
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
else
|
||||
bcm_enet_adjust_link(dev);
|
||||
|
||||
@@ -1128,10 +1096,6 @@ out_freeirq_rx:
|
||||
@@ -1129,10 +1097,6 @@ out_freeirq_rx:
|
||||
out_freeirq:
|
||||
free_irq(dev->irq, dev);
|
||||
|
||||
@@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1236,10 +1200,6 @@ static int bcm_enet_stop(struct net_devi
|
||||
@@ -1237,10 +1201,6 @@ static int bcm_enet_stop(struct net_devi
|
||||
free_irq(priv->irq_rx, dev);
|
||||
free_irq(dev->irq, dev);
|
||||
|
||||
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1821,14 +1781,46 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1822,14 +1782,46 @@ static int bcm_enet_probe(struct platfor
|
||||
|
||||
/* do minimal hardware init to be able to probe mii bus */
|
||||
bcm_enet_hw_preinit(priv);
|
||||
@@ -158,7 +158,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
}
|
||||
|
||||
bus = priv->mii_bus;
|
||||
@@ -1852,6 +1844,35 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1853,6 +1845,35 @@ static int bcm_enet_probe(struct platfor
|
||||
dev_err(&pdev->dev, "unable to register mdio bus\n");
|
||||
goto out_free_mdio;
|
||||
}
|
||||
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
} else {
|
||||
|
||||
/* run platform code to initialize PHY device */
|
||||
@@ -1859,44 +1880,16 @@ static int bcm_enet_probe(struct platfor
|
||||
@@ -1860,44 +1881,16 @@ static int bcm_enet_probe(struct platfor
|
||||
pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
|
||||
bcm_enet_mdio_write_mii)) {
|
||||
dev_err(&pdev->dev, "unable to configure mdio bus\n");
|
||||
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
if (priv->mii_bus)
|
||||
mdiobus_unregister(priv->mii_bus);
|
||||
|
||||
@@ -1904,6 +1897,9 @@ out_free_mdio:
|
||||
@@ -1905,6 +1898,9 @@ out_free_mdio:
|
||||
if (priv->mii_bus)
|
||||
mdiobus_free(priv->mii_bus);
|
||||
|
||||
@@ -253,7 +253,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
out_uninit_hw:
|
||||
/* turn off mdc clock */
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
@@ -1934,6 +1930,7 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1935,6 +1931,7 @@ static int bcm_enet_remove(struct platfo
|
||||
enet_writel(priv, 0, ENET_MIISC_REG);
|
||||
|
||||
if (priv->has_phy) {
|
||||
|
||||
@@ -32,7 +32,7 @@ Subject: [PATCH 54/81] bcm63xx_enet: enable rgmii clock on external ports
|
||||
#define ENETSW_MDIOC_EXT_MASK (1 << 16)
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2205,6 +2205,18 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2206,6 +2206,18 @@ static int bcm_enetsw_open(struct net_de
|
||||
priv->sw_port_link[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#include <bcm63xx_dev_enet.h>
|
||||
#include "bcm63xx_enet.h"
|
||||
@@ -1950,7 +1951,8 @@ static int bcm_enet_remove(struct platfo
|
||||
@@ -1951,7 +1952,8 @@ static int bcm_enet_remove(struct platfo
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
.probe = bcm_enet_probe,
|
||||
.remove = bcm_enet_remove,
|
||||
.driver = {
|
||||
@@ -1959,6 +1961,42 @@ struct platform_driver bcm63xx_enet_driv
|
||||
@@ -1960,6 +1962,42 @@ struct platform_driver bcm63xx_enet_driv
|
||||
},
|
||||
};
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
/*
|
||||
* switch mii access callbacks
|
||||
*/
|
||||
@@ -2217,29 +2255,6 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2218,29 +2256,6 @@ static int bcm_enetsw_open(struct net_de
|
||||
enetsw_writeb(priv, rgmii_ctrl, ENETSW_RGMII_CTRL_REG(i));
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
/* initialize flow control buffer allocation */
|
||||
enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0,
|
||||
ENETDMA_BUFALLOC_REG(priv->rx_chan));
|
||||
@@ -2698,6 +2713,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2699,6 +2714,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
struct bcm63xx_enetsw_platform_data *pd;
|
||||
struct resource *res_mem;
|
||||
int ret, irq_rx, irq_tx;
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
if (!bcm_enet_shared_base[0])
|
||||
return -EPROBE_DEFER;
|
||||
@@ -2780,6 +2798,43 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2781,6 +2799,43 @@ static int bcm_enetsw_probe(struct platf
|
||||
priv->pdev = pdev;
|
||||
priv->net_dev = dev;
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
return 0;
|
||||
|
||||
out_disable_clk:
|
||||
@@ -2801,6 +2856,9 @@ static int bcm_enetsw_remove(struct plat
|
||||
@@ -2802,6 +2857,9 @@ static int bcm_enetsw_remove(struct plat
|
||||
priv = netdev_priv(dev);
|
||||
unregister_netdev(dev);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2757,9 +2757,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
@@ -2758,9 +2758,9 @@ static int bcm_enetsw_probe(struct platf
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
||||
@@ -2252,6 +2252,10 @@ static int bcm_enetsw_open(struct net_de
|
||||
@@ -2253,6 +2253,10 @@ static int bcm_enetsw_open(struct net_de
|
||||
|
||||
rgmii_ctrl = enetsw_readb(priv, ENETSW_RGMII_CTRL_REG(i));
|
||||
rgmii_ctrl |= ENETSW_RGMII_CTRL_GMII_CLK_EN;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -473,6 +473,18 @@ config I2C_CBUS_GPIO
|
||||
@@ -474,6 +474,18 @@ config I2C_CBUS_GPIO
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called i2c-cbus-gpio.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user