mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
796815eb53
Some BCM6358 based boards may detect USB2.0 high speed devices as USB1.1 full speed. This is an old well known bug, but nobody cared about it. It is quite random and hard to track. With the latest versions of Openwrt, one user confirmed that the bug is still there (tested router: HG556a). Power cycle the USB PLL to fix it. Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
51 lines
1.6 KiB
Diff
51 lines
1.6 KiB
Diff
--- a/arch/mips/bcm63xx/clk.c
|
|
+++ b/arch/mips/bcm63xx/clk.c
|
|
@@ -452,6 +452,23 @@ static struct clk clk_pcie = {
|
|
};
|
|
|
|
/*
|
|
+ * NAND clock
|
|
+ */
|
|
+static void nand_set(struct clk *clk, int enable)
|
|
+{
|
|
+ if (BCMCPU_IS_6362())
|
|
+ bcm_hwclock_set(CKCTL_6362_NAND_EN, enable);
|
|
+ else if (BCMCPU_IS_6368())
|
|
+ bcm_hwclock_set(CKCTL_6368_NAND_EN, enable);
|
|
+ else if (BCMCPU_IS_63268())
|
|
+ bcm_hwclock_set(CKCTL_63268_NAND_EN, enable);
|
|
+}
|
|
+
|
|
+static struct clk clk_nand = {
|
|
+ .set = nand_set,
|
|
+};
|
|
+
|
|
+/*
|
|
* Internal peripheral clock
|
|
*/
|
|
static struct clk clk_periph = {
|
|
@@ -648,6 +665,7 @@ static struct clk_lookup bcm6362_clks[]
|
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
|
/* gated clocks */
|
|
+ CLKDEV_INIT(NULL, "nand", &clk_nand),
|
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
|
@@ -665,6 +683,7 @@ static struct clk_lookup bcm6368_clks[]
|
|
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
|
|
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
|
|
/* gated clocks */
|
|
+ CLKDEV_INIT(NULL, "nand", &clk_nand),
|
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|
|
@@ -683,6 +702,7 @@ static struct clk_lookup bcm63268_clks[]
|
|
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
|
|
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
|
|
/* gated clocks */
|
|
+ CLKDEV_INIT(NULL, "nand", &clk_nand),
|
|
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
|
|
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
|
|
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
|