From: Sam Edwards <cfsworks@gmail.com>
To: u-boot@lists.denx.de
Cc: Andre Przywara <andre.przywara@arm.com>,
Jagan Teki <jagan@amarulasolutions.com>,
Sam Edwards <CFSworks@gmail.com>
Subject: [PATCH v3 2/2] usb: musb-new: sunxi: clarify the purpose of SRAM initialization
Date: Mon, 12 Jun 2023 14:03:02 -0600 [thread overview]
Message-ID: <20230612200302.21354-3-CFSworks@gmail.com> (raw)
In-Reply-To: <20230612200302.21354-1-CFSworks@gmail.com>
This is largely a cosmetic change, with one functional distinction:
We are now only setting BIT(0), and no longer clearing BIT(1).
The A20 manual confirms the purpose and bitwidth of this field, and we
have also been doing it this way for a while in Linux-land: The prior
narrative about this initialization being about configuring a FIFO has
pretty much been debunked for years now.
This cleanup also adds a TODO comment about runtime discovery
of the SYSCON base, per discussion with Andre.
Signed-off-by: Sam Edwards <CFSworks@gmail.com>
Cc: Andre Przywara <andre.przywara@arm.com>
---
drivers/usb/musb-new/sunxi.c | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index 1111a67eaf..a8b1a8f870 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -171,15 +171,22 @@ static void USBC_ForceVbusValidToHigh(__iomem void *base)
musb_writel(base, USBC_REG_o_ISCR, reg_val);
}
-static void USBC_ConfigFIFO_Base(void)
-{
- u32 reg_value;
+/******************************************************************************
+ * Non-USBC register access needed for initialization
+ ******************************************************************************/
- /* config usb fifo, 8kb mode */
- reg_value = readl(SUNXI_SRAMC_BASE + 0x04);
- reg_value &= ~(0x03 << 0);
- reg_value |= BIT(0);
- writel(reg_value, SUNXI_SRAMC_BASE + 0x04);
+/*
+ * A10(s), A13, GR8, A20:
+ * switch ownership of SRAM block 'D' to the USB-OTG controller
+ */
+static void sunxi_musb_claim_sram(uintptr_t syscon_base)
+{
+ /*
+ * BIT(0) of SRAM_CTRL_REG1 (syscon+0x04) controls SRAM-D ownership:
+ * '0' -> exclusive access by CPU
+ * '1' -> exclusive access by USB0
+ */
+ setbits_le32(syscon_base + 0x04, BIT(0));
}
/******************************************************************************
@@ -313,7 +320,13 @@ static int sunxi_musb_init(struct musb *musb)
musb->isr = sunxi_musb_interrupt;
if (glue->cfg->has_sram) {
- USBC_ConfigFIFO_Base();
+ /*
+ * This is an older USB-OTG controller that Allwinner did not
+ * endow with a dedicated SRAM block; it instead uses SRAM
+ * block 'D', ownership of which needs to be handed over by
+ * the CPU
+ */
+ sunxi_musb_claim_sram(SUNXI_SRAMC_BASE);
}
USBC_EnableDpDmPullUp(musb->mregs);
--
2.39.2
next prev parent reply other threads:[~2023-06-12 20:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-12 20:03 [PATCH v3 0/2] sunxi, usb: Clean up SRAM initialization code Sam Edwards
2023-06-12 20:03 ` [PATCH v3 1/2] usb: musb-new: sunxi: only perform SRAM initialization when necessary Sam Edwards
2023-06-12 20:03 ` Sam Edwards [this message]
2023-06-15 10:32 ` [PATCH v3 2/2] usb: musb-new: sunxi: clarify the purpose of SRAM initialization Andre Przywara
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=20230612200302.21354-3-CFSworks@gmail.com \
--to=cfsworks@gmail.com \
--cc=andre.przywara@arm.com \
--cc=jagan@amarulasolutions.com \
--cc=u-boot@lists.denx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox