Skip to content

Commit

Permalink
USB: ehci-s5p: add DMA burst support
Browse files Browse the repository at this point in the history
DMA burst support is added to improve performance in EHCI data
transfer. The USB EHCI controller on Exynos SoCs can use INCR16,
INCR8, and INCR4 mode. These modes of INSNREG00 register should
be set in order to enable DMA burst transfer. This feature is
also related to AHB spec.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Sangwook Lee <sangwook.lee@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jingoo Han authored and Greg Kroah-Hartman committed Mar 8, 2012
1 parent 30e9eb1 commit 88555a6
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/usb/host/ehci-s5p.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@
#include <plat/ehci.h>
#include <plat/usb-phy.h>

#define EHCI_INSNREG00(base) (base + 0x90)
#define EHCI_INSNREG00_ENA_INCR16 (0x1 << 25)
#define EHCI_INSNREG00_ENA_INCR8 (0x1 << 24)
#define EHCI_INSNREG00_ENA_INCR4 (0x1 << 23)
#define EHCI_INSNREG00_ENA_INCRX_ALIGN (0x1 << 22)
#define EHCI_INSNREG00_ENABLE_DMA_BURST \
(EHCI_INSNREG00_ENA_INCR16 | EHCI_INSNREG00_ENA_INCR8 | \
EHCI_INSNREG00_ENA_INCR4 | EHCI_INSNREG00_ENA_INCRX_ALIGN)

struct s5p_ehci_hcd {
struct device *dev;
struct usb_hcd *hcd;
Expand Down Expand Up @@ -128,6 +137,9 @@ static int __devinit s5p_ehci_probe(struct platform_device *pdev)
ehci->regs = hcd->regs +
HC_LENGTH(ehci, readl(&ehci->caps->hc_capbase));

/* DMA burst Enable */
writel(EHCI_INSNREG00_ENABLE_DMA_BURST, EHCI_INSNREG00(hcd->regs));

dbg_hcs_params(ehci, "reset");
dbg_hcc_params(ehci, "reset");

Expand Down Expand Up @@ -234,6 +246,9 @@ static int s5p_ehci_resume(struct device *dev)
if (pdata && pdata->phy_init)
pdata->phy_init(pdev, S5P_USB_PHY_HOST);

/* DMA burst Enable */
writel(EHCI_INSNREG00_ENABLE_DMA_BURST, EHCI_INSNREG00(hcd->regs));

if (time_before(jiffies, ehci->next_statechange))
msleep(100);

Expand Down

0 comments on commit 88555a6

Please sign in to comment.