forked from coolsnowwolf/lede
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "kernel: bump 5.4 to 5.4.165 (coolsnowwolf#8448)"
This reverts commit a849091.
- Loading branch information
1 parent
a849091
commit cb6f72e
Showing
49 changed files
with
476 additions
and
138 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
137 changes: 137 additions & 0 deletions
137
...et/linux/bcm53xx/patches-5.10/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]> | ||
Date: Sat, 1 Oct 2016 22:54:48 +0200 | ||
Subject: [PATCH] usb: xhci: add support for performing fake doorbell | ||
|
||
Broadcom's Northstar XHCI controllers seem to need a special start | ||
procedure to work correctly. There isn't any official documentation of | ||
this, the problem is that controller doesn't detect any connected | ||
devices with default setup. Moreover connecting USB device to controller | ||
that doesn't run properly can cause SoC's watchdog issues. | ||
|
||
A workaround that was successfully tested on multiple devices is to | ||
perform a fake doorbell. This patch adds code for doing this and enables | ||
it on BCM4708 family. | ||
--- | ||
drivers/usb/host/xhci-plat.c | 6 +++++ | ||
drivers/usb/host/xhci.c | 63 +++++++++++++++++++++++++++++++++++++++++--- | ||
drivers/usb/host/xhci.h | 1 + | ||
3 files changed, 67 insertions(+), 3 deletions(-) | ||
|
||
--- a/drivers/usb/host/xhci-plat.c | ||
+++ b/drivers/usb/host/xhci-plat.c | ||
@@ -87,6 +87,8 @@ static int xhci_priv_resume_quirk(struct | ||
static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci) | ||
{ | ||
struct xhci_plat_priv *priv = xhci_to_priv(xhci); | ||
+ struct platform_device*pdev = to_platform_device(dev); | ||
+ struct device_node *node = pdev->dev.of_node; | ||
|
||
/* | ||
* As of now platform drivers don't provide MSI support so we ensure | ||
@@ -94,6 +96,9 @@ static void xhci_plat_quirks(struct devi | ||
* dev struct in order to setup MSI | ||
*/ | ||
xhci->quirks |= XHCI_PLAT | priv->quirks; | ||
+ | ||
+ if (node && of_machine_is_compatible("brcm,bcm4708")) | ||
+ xhci->quirks |= XHCI_FAKE_DOORBELL; | ||
} | ||
|
||
/* called during probe() after chip reset completes */ | ||
--- a/drivers/usb/host/xhci.c | ||
+++ b/drivers/usb/host/xhci.c | ||
@@ -156,6 +156,49 @@ int xhci_start(struct xhci_hcd *xhci) | ||
return ret; | ||
} | ||
|
||
+/** | ||
+ * xhci_fake_doorbell - Perform a fake doorbell on a specified slot | ||
+ * | ||
+ * Some controllers require a fake doorbell to start correctly. Without that | ||
+ * they simply don't detect any devices. | ||
+ */ | ||
+static int xhci_fake_doorbell(struct xhci_hcd *xhci, int slot_id) | ||
+{ | ||
+ u32 temp; | ||
+ | ||
+ /* Alloc a virt device for that slot */ | ||
+ if (!xhci_alloc_virt_device(xhci, slot_id, NULL, GFP_NOIO)) { | ||
+ xhci_warn(xhci, "Could not allocate xHCI USB device data structures\n"); | ||
+ return -ENOMEM; | ||
+ } | ||
+ | ||
+ /* Ring fake doorbell for slot_id ep 0 */ | ||
+ xhci_ring_ep_doorbell(xhci, slot_id, 0, 0); | ||
+ usleep_range(1000, 1500); | ||
+ | ||
+ /* Read the status to check if HSE is set or not */ | ||
+ temp = readl(&xhci->op_regs->status); | ||
+ | ||
+ /* Clear HSE if set */ | ||
+ if (temp & STS_FATAL) { | ||
+ xhci_dbg(xhci, "HSE problem detected, status: 0x%08x\n", temp); | ||
+ temp &= ~0x1fff; | ||
+ temp |= STS_FATAL; | ||
+ writel(temp, &xhci->op_regs->status); | ||
+ usleep_range(1000, 1500); | ||
+ readl(&xhci->op_regs->status); | ||
+ } | ||
+ | ||
+ /* Free virt device */ | ||
+ xhci_free_virt_device(xhci, slot_id); | ||
+ | ||
+ /* We're done if controller is already running */ | ||
+ if (readl(&xhci->op_regs->command) & CMD_RUN) | ||
+ return 0; | ||
+ | ||
+ return xhci_start(xhci); | ||
+} | ||
+ | ||
/* | ||
* Reset a halted HC. | ||
* | ||
@@ -608,10 +651,20 @@ static int xhci_init(struct usb_hcd *hcd | ||
|
||
static int xhci_run_finished(struct xhci_hcd *xhci) | ||
{ | ||
- if (xhci_start(xhci)) { | ||
- xhci_halt(xhci); | ||
- return -ENODEV; | ||
+ int err; | ||
+ | ||
+ err = xhci_start(xhci); | ||
+ if (err) { | ||
+ err = -ENODEV; | ||
+ goto err_halt; | ||
} | ||
+ | ||
+ if (xhci->quirks & XHCI_FAKE_DOORBELL) { | ||
+ err = xhci_fake_doorbell(xhci, 1); | ||
+ if (err) | ||
+ goto err_halt; | ||
+ } | ||
+ | ||
xhci->shared_hcd->state = HC_STATE_RUNNING; | ||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; | ||
|
||
@@ -621,6 +674,10 @@ static int xhci_run_finished(struct xhci | ||
xhci_dbg_trace(xhci, trace_xhci_dbg_init, | ||
"Finished xhci_run for USB3 roothub"); | ||
return 0; | ||
+ | ||
+err_halt: | ||
+ xhci_halt(xhci); | ||
+ return err; | ||
} | ||
|
||
/* | ||
--- a/drivers/usb/host/xhci.h | ||
+++ b/drivers/usb/host/xhci.h | ||
@@ -1885,6 +1885,7 @@ struct xhci_hcd { | ||
#define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39) | ||
#define XHCI_NO_SOFT_RETRY BIT_ULL(40) | ||
#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42) | ||
+#define XHCI_FAKE_DOORBELL BIT_ULL(44) | ||
|
||
unsigned int num_active_eps; | ||
unsigned int limit_active_eps; |
64 changes: 64 additions & 0 deletions
64
target/linux/bcm53xx/patches-5.10/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]> | ||
Subject: [PATCH] ARM: BCM5301X: Add DT for Netgear R7900 | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Signed-off-by: Rafał Miłecki <[email protected]> | ||
--- | ||
|
||
--- a/arch/arm/boot/dts/Makefile | ||
+++ b/arch/arm/boot/dts/Makefile | ||
@@ -116,6 +116,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \ | ||
bcm4709-buffalo-wxr-1900dhp.dtb \ | ||
bcm4709-linksys-ea9200.dtb \ | ||
bcm4709-netgear-r7000.dtb \ | ||
+ bcm4709-netgear-r7900.dtb \ | ||
bcm4709-netgear-r8000.dtb \ | ||
bcm4709-tplink-archer-c9-v1.dtb \ | ||
bcm47094-dlink-dir-885l.dtb \ | ||
--- /dev/null | ||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r7900.dts | ||
@@ -0,0 +1,42 @@ | ||
+/* | ||
+ * Broadcom BCM470X / BCM5301X ARM platform code. | ||
+ * DTS for Netgear R7900 | ||
+ * | ||
+ * Copyright (C) 2016 Rafał Miłecki <[email protected]> | ||
+ * | ||
+ * Licensed under the GNU/GPL. See COPYING for details. | ||
+ */ | ||
+ | ||
+/dts-v1/; | ||
+ | ||
+#include "bcm4709.dtsi" | ||
+#include "bcm5301x-nand-cs0-bch8.dtsi" | ||
+ | ||
+/ { | ||
+ compatible = "netgear,r7900", "brcm,bcm4709", "brcm,bcm4708"; | ||
+ model = "Netgear R7900"; | ||
+ | ||
+ chosen { | ||
+ bootargs = "console=ttyS0,115200"; | ||
+ }; | ||
+ | ||
+ memory { | ||
+ reg = <0x00000000 0x08000000 | ||
+ 0x88000000 0x08000000>; | ||
+ }; | ||
+ | ||
+ axi@18000000 { | ||
+ usb3@23000 { | ||
+ reg = <0x00023000 0x1000>; | ||
+ | ||
+ #address-cells = <1>; | ||
+ #size-cells = <1>; | ||
+ | ||
+ vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>; | ||
+ }; | ||
+ }; | ||
+}; | ||
+ | ||
+&uart0 { | ||
+ status = "okay"; | ||
+}; |
59 changes: 59 additions & 0 deletions
59
...t/linux/bcm53xx/patches-5.10/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
From 2a2af518266a29323cf30c3f9ba9ef2ceb1dd84b Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]> | ||
Date: Thu, 16 Oct 2014 20:52:16 +0200 | ||
Subject: [PATCH] UBI: Detect EOF mark and erase all remaining blocks | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Signed-off-by: Rafał Miłecki <[email protected]> | ||
--- | ||
drivers/mtd/ubi/attach.c | 5 +++++ | ||
drivers/mtd/ubi/io.c | 4 ++++ | ||
drivers/mtd/ubi/ubi.h | 1 + | ||
3 files changed, 10 insertions(+) | ||
|
||
--- a/drivers/mtd/ubi/attach.c | ||
+++ b/drivers/mtd/ubi/attach.c | ||
@@ -82,6 +82,9 @@ static int self_check_ai(struct ubi_devi | ||
#define AV_ADD BIT(1) | ||
#define AV_FIND_OR_ADD (AV_FIND | AV_ADD) | ||
|
||
+/* Set on finding block with 0xdeadc0de, indicates erasing all blocks behind */ | ||
+bool erase_all_next; | ||
+ | ||
/** | ||
* find_or_add_av - internal function to find a volume, add a volume or do | ||
* both (find and add if missing). | ||
@@ -1580,6 +1583,8 @@ int ubi_attach(struct ubi_device *ubi, i | ||
if (!ai) | ||
return -ENOMEM; | ||
|
||
+ erase_all_next = false; | ||
+ | ||
#ifdef CONFIG_MTD_UBI_FASTMAP | ||
/* On small flash devices we disable fastmap in any case. */ | ||
if ((int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd) <= UBI_FM_MAX_START) { | ||
--- a/drivers/mtd/ubi/io.c | ||
+++ b/drivers/mtd/ubi/io.c | ||
@@ -710,6 +710,10 @@ int ubi_io_read_ec_hdr(struct ubi_device | ||
} | ||
|
||
magic = be32_to_cpu(ec_hdr->magic); | ||
+ if (magic == 0xdeadc0de) | ||
+ erase_all_next = true; | ||
+ if (erase_all_next) | ||
+ return read_err ? UBI_IO_FF_BITFLIPS : UBI_IO_FF; | ||
if (magic != UBI_EC_HDR_MAGIC) { | ||
if (mtd_is_eccerr(read_err)) | ||
return UBI_IO_BAD_HDR_EBADMSG; | ||
--- a/drivers/mtd/ubi/ubi.h | ||
+++ b/drivers/mtd/ubi/ubi.h | ||
@@ -824,6 +824,7 @@ extern struct mutex ubi_devices_mutex; | ||
extern struct blocking_notifier_head ubi_notifiers; | ||
|
||
/* attach.c */ | ||
+extern bool erase_all_next; | ||
struct ubi_ainf_peb *ubi_alloc_aeb(struct ubi_attach_info *ai, int pnum, | ||
int ec); | ||
void ubi_free_aeb(struct ubi_attach_info *ai, struct ubi_ainf_peb *aeb); |
80 changes: 80 additions & 0 deletions
80
target/linux/bcm53xx/patches-5.10/905-BCM53573-minor-hacks.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
From 6f1c62440eb6846cb8045d7a5480ec7bbe47c96f Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]> | ||
Date: Mon, 15 Aug 2016 10:30:41 +0200 | ||
Subject: [PATCH] BCM53573 minor hacks | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Signed-off-by: Rafał Miłecki <[email protected]> | ||
--- | ||
|
||
--- a/arch/arm/boot/dts/bcm53573.dtsi | ||
+++ b/arch/arm/boot/dts/bcm53573.dtsi | ||
@@ -54,6 +54,7 @@ | ||
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, | ||
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, | ||
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; | ||
+ clocks = <&ilp>; | ||
}; | ||
|
||
clocks { | ||
--- a/drivers/bcma/main.c | ||
+++ b/drivers/bcma/main.c | ||
@@ -328,14 +328,6 @@ static int bcma_register_devices(struct | ||
} | ||
#endif | ||
|
||
-#ifdef CONFIG_BCMA_SFLASH | ||
- if (bus->drv_cc.sflash.present) { | ||
- err = platform_device_register(&bcma_sflash_dev); | ||
- if (err) | ||
- bcma_err(bus, "Error registering serial flash\n"); | ||
- } | ||
-#endif | ||
- | ||
#ifdef CONFIG_BCMA_NFLASH | ||
if (bus->drv_cc.nflash.present) { | ||
err = platform_device_register(&bcma_nflash_dev); | ||
@@ -413,6 +405,14 @@ int bcma_bus_register(struct bcma_bus *b | ||
bcma_register_core(bus, core); | ||
} | ||
|
||
+#ifdef CONFIG_BCMA_SFLASH | ||
+ if (bus->drv_cc.sflash.present) { | ||
+ err = platform_device_register(&bcma_sflash_dev); | ||
+ if (err) | ||
+ bcma_err(bus, "Error registering serial flash\n"); | ||
+ } | ||
+#endif | ||
+ | ||
/* Try to get SPROM */ | ||
err = bcma_sprom_get(bus); | ||
if (err == -ENOENT) { | ||
--- a/drivers/clocksource/arm_arch_timer.c | ||
+++ b/drivers/clocksource/arm_arch_timer.c | ||
@@ -14,6 +14,7 @@ | ||
#include <linux/smp.h> | ||
#include <linux/cpu.h> | ||
#include <linux/cpu_pm.h> | ||
+#include <linux/clk.h> | ||
#include <linux/clockchips.h> | ||
#include <linux/clocksource.h> | ||
#include <linux/interrupt.h> | ||
@@ -934,6 +935,16 @@ static void arch_timer_of_configure_rate | ||
if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) | ||
arch_timer_rate = rate; | ||
|
||
+ /* Get clk rate through clk driver if present */ | ||
+ if (!arch_timer_rate) { | ||
+ struct clk *clk = of_clk_get(np, 0); | ||
+ | ||
+ if (!IS_ERR(clk)) { | ||
+ if (!clk_prepare_enable(clk)) | ||
+ arch_timer_rate = clk_get_rate(clk); | ||
+ } | ||
+ } | ||
+ | ||
/* Check the timer frequency. */ | ||
if (validate_timer_rate()) | ||
pr_warn("frequency not available\n"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,7 +16,7 @@ Signed-off-by: Florian Fainelli <[email protected]> | |
|
||
--- a/arch/arm/boot/dts/bcm5301x.dtsi | ||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||
@@ -352,6 +352,14 @@ | ||
@@ -350,6 +350,14 @@ | ||
}; | ||
}; | ||
|
||
|
@@ -31,7 +31,7 @@ Signed-off-by: Florian Fainelli <[email protected]> | |
mdio: mdio@18003000 { | ||
compatible = "brcm,iproc-mdio"; | ||
reg = <0x18003000 0x8>; | ||
@@ -419,12 +427,12 @@ | ||
@@ -417,12 +425,12 @@ | ||
function = "spi"; | ||
}; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,7 @@ Signed-off-by: Florian Fainelli <[email protected]> | |
|
||
--- a/arch/arm/boot/dts/bcm5301x.dtsi | ||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||
@@ -394,6 +394,15 @@ | ||
@@ -392,6 +392,15 @@ | ||
reg = <0x18105000 0x1000>; | ||
}; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,7 @@ Signed-off-by: Florian Fainelli <[email protected]> | |
|
||
--- a/arch/arm/boot/dts/bcm5301x.dtsi | ||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||
@@ -254,6 +254,10 @@ | ||
@@ -252,6 +252,10 @@ | ||
reg = <0x00013000 0x1000>; | ||
}; | ||
|
||
|
Oops, something went wrong.