aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch')
-rw-r--r--target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch135
1 files changed, 0 insertions, 135 deletions
diff --git a/target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch b/target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch
deleted file mode 100644
index 80ec141685..0000000000
--- a/target/linux/bcm4908/patches-5.4/084-v5.6-0011-phy-usb-bdc-Fix-occasional-failure-with-BDC-on-7211.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From bed63b636fedf47dbab899a5193ec5ec4539f6fc Mon Sep 17 00:00:00 2001
-From: Al Cooper <alcooperx@gmail.com>
-Date: Fri, 3 Jan 2020 13:18:09 -0500
-Subject: [PATCH] phy: usb: bdc: Fix occasional failure with BDC on 7211
-
-The BDC "Read Transaction Size" needs to be changed from 1024
-bytes to 256 bytes to prevent occasional transaction failures.
-
-Signed-off-by: Al Cooper <alcooperx@gmail.com>
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
----
- .../phy/broadcom/phy-brcm-usb-init-synopsys.c | 18 +++++++++++++++
- drivers/phy/broadcom/phy-brcm-usb-init.h | 1 +
- drivers/phy/broadcom/phy-brcm-usb.c | 23 +++++++++++++++----
- 3 files changed, 38 insertions(+), 4 deletions(-)
-
---- a/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
-+++ b/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
-@@ -70,6 +70,11 @@
- #define USB_GMDIOCSR 0
- #define USB_GMDIOGEN 4
-
-+/* Register definitions for the BDC EC block in 7211b0 */
-+#define BDC_EC_AXIRDA 0x0c
-+#define BDC_EC_AXIRDA_RTS_MASK 0xf0000000
-+#define BDC_EC_AXIRDA_RTS_SHIFT 28
-+
-
- static void usb_mdio_write_7211b0(struct brcm_usb_init_params *params,
- uint8_t addr, uint16_t data)
-@@ -198,6 +203,7 @@ static void usb_init_common_7211b0(struc
- {
- void __iomem *ctrl = params->regs[BRCM_REGS_CTRL];
- void __iomem *usb_phy = params->regs[BRCM_REGS_USB_PHY];
-+ void __iomem *bdc_ec = params->regs[BRCM_REGS_BDC_EC];
- int timeout_ms = PHY_LOCK_TIMEOUT_MS;
- u32 reg;
-
-@@ -231,6 +237,18 @@ static void usb_init_common_7211b0(struc
- usb_init_common(params);
-
- /*
-+ * The BDC controller will get occasional failures with
-+ * the default "Read Transaction Size" of 6 (1024 bytes).
-+ * Set it to 4 (256 bytes).
-+ */
-+ if ((params->mode != USB_CTLR_MODE_HOST) && bdc_ec) {
-+ reg = brcm_usb_readl(bdc_ec + BDC_EC_AXIRDA);
-+ reg &= ~BDC_EC_AXIRDA_RTS_MASK;
-+ reg |= (0x4 << BDC_EC_AXIRDA_RTS_SHIFT);
-+ brcm_usb_writel(reg, bdc_ec + BDC_EC_AXIRDA);
-+ }
-+
-+ /*
- * Disable FSM, otherwise the PHY will auto suspend when no
- * device is connected and will be reset on resume.
- */
---- a/drivers/phy/broadcom/phy-brcm-usb-init.h
-+++ b/drivers/phy/broadcom/phy-brcm-usb-init.h
-@@ -19,6 +19,7 @@ enum brcmusb_reg_sel {
- BRCM_REGS_XHCI_GBL,
- BRCM_REGS_USB_PHY,
- BRCM_REGS_USB_MDIO,
-+ BRCM_REGS_BDC_EC,
- BRCM_REGS_MAX
- };
-
---- a/drivers/phy/broadcom/phy-brcm-usb.c
-+++ b/drivers/phy/broadcom/phy-brcm-usb.c
-@@ -36,6 +36,7 @@ struct value_to_name_map {
- struct match_chip_info {
- void *init_func;
- u8 required_regs[BRCM_REGS_MAX + 1];
-+ u8 optional_reg;
- };
-
- static struct value_to_name_map brcm_dr_mode_to_name[] = {
-@@ -71,7 +72,7 @@ struct brcm_usb_phy_data {
- };
-
- static s8 *node_reg_names[BRCM_REGS_MAX] = {
-- "crtl", "xhci_ec", "xhci_gbl", "usb_phy", "usb_mdio"
-+ "crtl", "xhci_ec", "xhci_gbl", "usb_phy", "usb_mdio", "bdc_ec"
- };
-
- static irqreturn_t brcm_usb_phy_wake_isr(int irq, void *dev_id)
-@@ -271,6 +272,7 @@ static struct match_chip_info chip_info_
- BRCM_REGS_USB_MDIO,
- -1,
- },
-+ .optional_reg = BRCM_REGS_BDC_EC,
- };
-
- static struct match_chip_info chip_info_7445 = {
-@@ -300,7 +302,8 @@ static const struct of_device_id brcm_us
-
- static int brcm_usb_get_regs(struct platform_device *pdev,
- enum brcmusb_reg_sel regs,
-- struct brcm_usb_init_params *ini)
-+ struct brcm_usb_init_params *ini,
-+ bool optional)
- {
- struct resource *res;
-
-@@ -317,7 +320,13 @@ static int brcm_usb_get_regs(struct plat
- return 0;
- }
- if (res == NULL) {
-- dev_err(&pdev->dev, "can't get %s base address\n",
-+ if (optional) {
-+ dev_dbg(&pdev->dev,
-+ "Optional reg %s not found\n",
-+ node_reg_names[regs]);
-+ return 0;
-+ }
-+ dev_err(&pdev->dev, "can't get %s base addr\n",
- node_reg_names[regs]);
- return 1;
- }
-@@ -460,7 +469,13 @@ static int brcm_usb_phy_probe(struct pla
- break;
-
- err = brcm_usb_get_regs(pdev, info->required_regs[x],
-- &priv->ini);
-+ &priv->ini, false);
-+ if (err)
-+ return -EINVAL;
-+ }
-+ if (info->optional_reg) {
-+ err = brcm_usb_get_regs(pdev, info->optional_reg,
-+ &priv->ini, true);
- if (err)
- return -EINVAL;
- }