From: Al Cooper <alcooperx@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org,
Florian Fainelli <f.fainelli@gmail.com>,
Al Cooper <alcooperx@gmail.com>,
Kishon Vijay Abraham I <kishon@ti.com>,
Rob Herring <robh+dt@kernel.org>,
bcm-kernel-feedback-list@broadcom.com,
Srinath Mannam <srinath.mannam@broadcom.com>,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 01/13] phy: usb: EHCI DMA may lose a burst of DMA data for 7255xA0 family
Date: Tue, 10 Dec 2019 08:21:20 -0500 [thread overview]
Message-ID: <20191210132132.41509-2-alcooperx@gmail.com> (raw)
In-Reply-To: <20191210132132.41509-1-alcooperx@gmail.com>
When the EHCI controller received a 512 byte USB packet that
had to be broken into 2 256 byte bursts across the SCB bus AND
there was a following 512 byte USB packet, the second burst of
data from the first packet was sometimes being lost. If the
burst size was changed to 128 bytes via the EBR_SCB_SIZE field
in the USB_CTRL_EBRIDGE register we'd see the 4th 128 byte burst
of the first packet being lost. This problem became much worse
if other threads were running that accessed memory, like a memcpy
test. Setting the EBR_SCB_SIZE to 512, which prevents breaking
the EHCI USB packet (max size of 512 bytes) into bursts, fixed
the problem.
Signed-off-by: Al Cooper <alcooperx@gmail.com>
---
drivers/phy/broadcom/phy-brcm-usb-init.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/phy/broadcom/phy-brcm-usb-init.c b/drivers/phy/broadcom/phy-brcm-usb-init.c
index 91b5b09589d6..bd473d12ab28 100644
--- a/drivers/phy/broadcom/phy-brcm-usb-init.c
+++ b/drivers/phy/broadcom/phy-brcm-usb-init.c
@@ -42,6 +42,7 @@
#define USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK 0x80000000 /* option */
#define USB_CTRL_EBRIDGE 0x0c
#define USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK 0x00020000 /* option */
+#define USB_CTRL_EBRIDGE_EBR_SCB_SIZE_MASK 0x00000f80 /* option */
#define USB_CTRL_OBRIDGE 0x10
#define USB_CTRL_OBRIDGE_LS_KEEP_ALIVE_MASK 0x08000000
#define USB_CTRL_MDIO 0x14
@@ -176,6 +177,7 @@ static const struct id_to_type id_to_type_table[] = {
{ 0x33900000, BRCM_FAMILY_3390A0 },
{ 0x72500010, BRCM_FAMILY_7250B0 },
{ 0x72600000, BRCM_FAMILY_7260A0 },
+ { 0x72550000, BRCM_FAMILY_7260A0 },
{ 0x72680000, BRCM_FAMILY_7271A0 },
{ 0x72710000, BRCM_FAMILY_7271A0 },
{ 0x73640000, BRCM_FAMILY_7364A0 },
@@ -948,6 +950,17 @@ void brcm_usb_init_eohci(struct brcm_usb_init_params *params)
if (params->selected_family == BRCM_FAMILY_7271A0)
/* Enable LS keep alive fix for certain keyboards */
USB_CTRL_SET(ctrl, OBRIDGE, LS_KEEP_ALIVE);
+
+ if (params->family_id == 0x72550000) {
+ /*
+ * Make the burst size 512 bytes to fix a hardware bug
+ * on the 7255a0. See HW7255-24.
+ */
+ reg = brcmusb_readl(USB_CTRL_REG(ctrl, EBRIDGE));
+ reg &= ~USB_CTRL_MASK(EBRIDGE, EBR_SCB_SIZE);
+ reg |= 0x800;
+ brcmusb_writel(reg, USB_CTRL_REG(ctrl, EBRIDGE));
+ }
}
void brcm_usb_init_xhci(struct brcm_usb_init_params *params)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Al Cooper <alcooperx@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Al Cooper <alcooperx@gmail.com>,
bcm-kernel-feedback-list@broadcom.com,
devicetree@vger.kernel.org,
Florian Fainelli <f.fainelli@gmail.com>,
Kishon Vijay Abraham I <kishon@ti.com>,
linux-arm-kernel@lists.infradead.org,
Mark Rutland <mark.rutland@arm.com>,
Rob Herring <robh+dt@kernel.org>,
Srinath Mannam <srinath.mannam@broadcom.com>
Subject: [PATCH v3 01/13] phy: usb: EHCI DMA may lose a burst of DMA data for 7255xA0 family
Date: Tue, 10 Dec 2019 08:21:20 -0500 [thread overview]
Message-ID: <20191210132132.41509-2-alcooperx@gmail.com> (raw)
In-Reply-To: <20191210132132.41509-1-alcooperx@gmail.com>
When the EHCI controller received a 512 byte USB packet that
had to be broken into 2 256 byte bursts across the SCB bus AND
there was a following 512 byte USB packet, the second burst of
data from the first packet was sometimes being lost. If the
burst size was changed to 128 bytes via the EBR_SCB_SIZE field
in the USB_CTRL_EBRIDGE register we'd see the 4th 128 byte burst
of the first packet being lost. This problem became much worse
if other threads were running that accessed memory, like a memcpy
test. Setting the EBR_SCB_SIZE to 512, which prevents breaking
the EHCI USB packet (max size of 512 bytes) into bursts, fixed
the problem.
Signed-off-by: Al Cooper <alcooperx@gmail.com>
---
drivers/phy/broadcom/phy-brcm-usb-init.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/phy/broadcom/phy-brcm-usb-init.c b/drivers/phy/broadcom/phy-brcm-usb-init.c
index 91b5b09589d6..bd473d12ab28 100644
--- a/drivers/phy/broadcom/phy-brcm-usb-init.c
+++ b/drivers/phy/broadcom/phy-brcm-usb-init.c
@@ -42,6 +42,7 @@
#define USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK 0x80000000 /* option */
#define USB_CTRL_EBRIDGE 0x0c
#define USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK 0x00020000 /* option */
+#define USB_CTRL_EBRIDGE_EBR_SCB_SIZE_MASK 0x00000f80 /* option */
#define USB_CTRL_OBRIDGE 0x10
#define USB_CTRL_OBRIDGE_LS_KEEP_ALIVE_MASK 0x08000000
#define USB_CTRL_MDIO 0x14
@@ -176,6 +177,7 @@ static const struct id_to_type id_to_type_table[] = {
{ 0x33900000, BRCM_FAMILY_3390A0 },
{ 0x72500010, BRCM_FAMILY_7250B0 },
{ 0x72600000, BRCM_FAMILY_7260A0 },
+ { 0x72550000, BRCM_FAMILY_7260A0 },
{ 0x72680000, BRCM_FAMILY_7271A0 },
{ 0x72710000, BRCM_FAMILY_7271A0 },
{ 0x73640000, BRCM_FAMILY_7364A0 },
@@ -948,6 +950,17 @@ void brcm_usb_init_eohci(struct brcm_usb_init_params *params)
if (params->selected_family == BRCM_FAMILY_7271A0)
/* Enable LS keep alive fix for certain keyboards */
USB_CTRL_SET(ctrl, OBRIDGE, LS_KEEP_ALIVE);
+
+ if (params->family_id == 0x72550000) {
+ /*
+ * Make the burst size 512 bytes to fix a hardware bug
+ * on the 7255a0. See HW7255-24.
+ */
+ reg = brcmusb_readl(USB_CTRL_REG(ctrl, EBRIDGE));
+ reg &= ~USB_CTRL_MASK(EBRIDGE, EBR_SCB_SIZE);
+ reg |= 0x800;
+ brcmusb_writel(reg, USB_CTRL_REG(ctrl, EBRIDGE));
+ }
}
void brcm_usb_init_xhci(struct brcm_usb_init_params *params)
--
2.17.1
next prev parent reply other threads:[~2019-12-10 13:23 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-10 13:21 [PATCH v3 00/13] phy: usb: Updates to Broadcom STB USB PHY driver Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` Al Cooper [this message]
2019-12-10 13:21 ` [PATCH v3 01/13] phy: usb: EHCI DMA may lose a burst of DMA data for 7255xA0 family Al Cooper
2019-12-10 13:21 ` [PATCH v3 02/13] phy: usb: Get all drivers that use USB clks using correct enable/disable Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 03/13] phy: usb: Put USB phys into IDDQ on suspend to save power in S2 mode Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 04/13] phy: usb: Add "wake on" functionality Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 05/13] phy: usb: Restructure in preparation for adding 7216 USB support Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 06/13] dt-bindings: Add Broadcom STB USB PHY binding document Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-13 19:10 ` Rob Herring
2019-12-13 19:10 ` Rob Herring
2019-12-10 13:21 ` [PATCH v3 07/13] phy: usb: Add support for new Synopsis USB controller on the 7216 Al Cooper
2019-12-10 13:21 ` Al Cooper
2020-01-03 9:33 ` Kishon Vijay Abraham I
2020-01-03 9:33 ` Kishon Vijay Abraham I
2020-01-03 13:06 ` Alan Cooper
2020-01-03 13:06 ` Alan Cooper
2019-12-10 13:21 ` [PATCH v3 08/13] phy: usb: Add support for new Synopsis USB controller on the 7211b0 Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 09/13] phy: usb: fix driver to defer on clk_get defer Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 10/13] phy: usb: PHY's MDIO registers not accessible without device installed Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 11/13] phy: usb: bdc: Fix occasional failure with BDC on 7211 Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 12/13] phy: usb: USB driver is crashing during S3 resume on 7216 Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-10 13:21 ` [PATCH v3 13/13] phy: usb: Add support for wake and USB low power mode for 7211 S2/S5 Al Cooper
2019-12-10 13:21 ` Al Cooper
2019-12-13 19:25 ` [PATCH v3 00/13] phy: usb: Updates to Broadcom STB USB PHY driver Florian Fainelli
2019-12-13 19:25 ` Florian Fainelli
2019-12-31 17:41 ` Florian Fainelli
2019-12-31 17:41 ` Florian Fainelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191210132132.41509-2-alcooperx@gmail.com \
--to=alcooperx@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=kishon@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=srinath.mannam@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.