Skip to contentSkip to conversation

add ehci-s5p AHB burst function

PATCH New Sangwook Lee 5 participants 10 messages Feb 29, 2012 – Mar 1, 2012 1 message not in the archive

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

cover add ehci-s5p AHB burst function

Enable burst transfer from AHB for EHCI.
This fixes data transfer issue of USB Ethernet with EHCI.
Without this patch, ping works and network utilities such as scp hardly works.

It was tested on Origen board with the following configs.
root at linaro-alip:~# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=s5p-ehci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=vend., Driver=MOSCHIP usb-ethernet driver, 480M

Sangwook Lee (2):
ARM: EXYNOS: Add EHCI AHB burst function
USB: ehci-s5p: add function for burst

 arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
 arch/arm/plat-samsung/devs.c              |    2 ++
 arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
 drivers/usb/host/ehci-s5p.c               |    3 +++
 4 files changed, 30 insertions(+), 0 deletions(-)
Signature · 1 line
1.7.4.1
#1 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---
 arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
 arch/arm/plat-samsung/devs.c              |    2 ++
 arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)
arch/arm/mach-exynos/setup-usb-phy.c +6 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@
 #include <mach/regs-usb-phy.h>
 #include <plat/cpu.h>
 #include <plat/usb-phy.h>
+#include <plat/ehci.h>
 
 static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
 	return -EINVAL;
 }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+	writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}
arch/arm/plat-samsung/devs.c +2 -0
index f10768e..8fd1bd3 100644
@@ -1402,6 +1402,8 @@ void __init s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd)
 		npd->phy_init = s5p_usb_phy_init;
 	if (!npd->phy_exit)
 		npd->phy_exit = s5p_usb_phy_exit;
+	if (!npd->burst_enable)
+		npd->burst_enable = s5p_ehci_burst_enable;
 }
 #endif /* CONFIG_S5P_DEV_USB_EHCI */
 
arch/arm/plat-samsung/include/plat/ehci.h +19 -0
index 5f28cae..9c866b7 100644
@@ -14,8 +14,27 @@
 struct s5p_ehci_platdata {
 	int (*phy_init)(struct platform_device *pdev, int type);
 	int (*phy_exit)(struct platform_device *pdev, int type);
+	void (*burst_enable)(struct platform_device *pdev, void __iomem *base);
 };
 
 extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd);
+extern void s5p_ehci_burst_enable(struct platform_device *pdev,
+	void __iomem *base);
+
+/* EHCI EXYNOS specific register */
+#define EHCI_INSNREG00			0x90
+
+/*
+ * EHCI INSNREG00 Specific fields
+ * Enable AHB master to use burst transfer from 4 to 16
+ */
+#define EHCI_INSNREG00_ENABLE_INCR16	(1 << 25)
+#define EHCI_INSNREG00_ENABLE_INCR8	(1 << 24)
+#define EHCI_INSNREG00_ENABLE_INCR4	(1 << 23)
+/* Force AHB master to start burst transfer only for 4,8,16 alignment */
+#define EHCI_INSNREG00_ENABLE_INCRX_ALIGN (1 << 22)
+#define EHCI_INSNREG00_ENABLE_BURST	\
+	(EHCI_INSNREG00_ENABLE_INCR16 | EHCI_INSNREG00_ENABLE_INCR8 |	\
+	EHCI_INSNREG00_ENABLE_INCR4 | EHCI_INSNREG00_ENABLE_INCRX_ALIGN)
 
 #endif /* __PLAT_SAMSUNG_EHCI_H */
Signature · 1 line
1.7.4.1
#2 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

Hi Sangwook,

Quoted 24 lines · Sangwook Lee

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---

?arch/arm/mach-exynos/setup-usb-phy.c ? ? ?| ? ?6 ++++++
?arch/arm/plat-samsung/devs.c ? ? ? ? ? ? ?| ? ?2 ++
?arch/arm/plat-samsung/include/plat/ehci.h | ? 19 +++++++++++++++++++

?3 files changed, 27 insertions(+), 0 deletions(-)

arch/arm/mach-exynos/setup-usb-phy.c +0 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@

?#include <mach/regs-usb-phy.h>
?#include <plat/cpu.h>
?#include <plat/usb-phy.h>
+#include <plat/ehci.h>

?static atomic_t host_usage;

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type) · line 157

Quoted 8 lines
arch/arm/mach-exynos/setup-usb-phy.c +5 -0
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
 ? ? ? ?return -EINVAL;
 ?}
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+ ? ? ? writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}

This functionality can be added in ehci-s5p itself and avoid adding a new platform callback in platform data. If this is specific to exynos, driver data could be added in ehci-s5p to indicate platforms that need this to be enabled.

Thanks,
Thomas.

[...]

#3 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

Hi,

Quoted 38 lines

-----Original Message-----
From: Thomas Abraham [mailto:thomas.abraham at linaro.org]
Sent: Wednesday, February 29, 2012 10:02 PM
To: Sangwook Lee
Cc: linux-samsung-soc at vger.kernel.org; linux-usb at vger.kernel.org; linux-arm-kernel at lists.infradead.org; ben-linux at fluff.org; gregkh at suse.de; kgene.kim at samsung.com; stern at rowland.harvard.edu; jg1.han at samsung.com; jy0922.shim at samsung.com; patches at linaro.org; linaro-dev at lists.linaro.org; linux at arm.linux.org.uk
Subject: Re: [PATCH 1/2] ARM: EXYNOS: Add EHCI AHB burst function

Hi Sangwook,

Quoted 25 lines · Sangwook Lee

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---

?arch/arm/mach-exynos/setup-usb-phy.c ? ? ?| ? ?6 ++++++
?arch/arm/plat-samsung/devs.c ? ? ? ? ? ? ?| ? ?2 ++
?arch/arm/plat-samsung/include/plat/ehci.h | ? 19 +++++++++++++++++++

?3 files changed, 27 insertions(+), 0 deletions(-)

arch/arm/mach-exynos/setup-usb-phy.c +0 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@

?#include <mach/regs-usb-phy.h>
?#include <plat/cpu.h>
?#include <plat/usb-phy.h>
+#include <plat/ehci.h>

?static atomic_t host_usage;

arch/arm/mach-exynos/setup-usb-phy.c +0 -0
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
Quoted 12 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type) · line 157

Quoted 7 lines
arch/arm/mach-exynos/setup-usb-phy.c +5 -0
 ? ? ? ?return -EINVAL;
 ?}
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+ ? ? ? writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}

This functionality can be added in ehci-s5p itself and avoid adding a new platform callback in platform data. If this is specific to exynos, driver data could be added in ehci-s5p to indicate platforms that need this to be enabled.

I agree with Thomas's opinion.
Sangwook, please don't call s5p_ehci_burst_enable using platform callback. It can be added to ehci-s5p itself.

Quoted 5 lines

Thanks,
Thomas.

[...]

#4 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

In reply to Thomas Abraham
Quoted 28 lines · Thomas Abraham

Hi Sangwook,

Quoted 25 lines · Sangwook Lee

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---
  arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
  arch/arm/plat-samsung/devs.c              |    2 ++
  arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
  3 files changed, 27 insertions(+), 0 deletions(-)
arch/arm/mach-exynos/setup-usb-phy.c +1 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@
  #include<mach/regs-usb-phy.h>
  #include<plat/cpu.h>
  #include<plat/usb-phy.h>
+#include<plat/ehci.h>
 
  static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
Quoted 12 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type) · line 157

Quoted 7 lines
arch/arm/mach-exynos/setup-usb-phy.c +5 -0
        return -EINVAL;
  }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+       writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}

This functionality can be added in ehci-s5p itself and avoid adding a new platform callback in platform data. If this is specific to exynos, driver data could be added in ehci-s5p to indicate platforms that need this to be enabled.

it makes sense.

Quoted 5 lines

Thanks,
Thomas.

[...]

#5 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

In reply to Thomas Abraham
Quoted 28 lines · Thomas Abraham

Hi Sangwook,

Quoted 25 lines · Sangwook Lee

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---
 arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
 arch/arm/plat-samsung/devs.c              |    2 ++
 arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)
arch/arm/mach-exynos/setup-usb-phy.c +1 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@
 #include <mach/regs-usb-phy.h>
 #include <plat/cpu.h>
 #include <plat/usb-phy.h>
+#include <plat/ehci.h>
 
 static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
Quoted 13 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type) · line 157

Quoted 7 lines
arch/arm/mach-exynos/setup-usb-phy.c +5 -0
       return -EINVAL;
 }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+       writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}

This functionality can be added in ehci-s5p itself and avoid adding a new platform callback in platform data. If this is specific to exynos, driver data could be added in ehci-s5p to indicate platforms that need this to be enabled.

Am I right in assuming that ehci-s5p driver can also be used for mach-s5pv210?

The related bit-fields are reserved in S5PV210. So, won't it cause any side-effects?

Quoted 8 lines

Thanks,
Thomas.

[...]
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 1 line
Tushar Behera

A message that is not in the archive (sent off-list or not yet received): [email protected]

#7 lore raw

Re: [PATCH 1/2] ARM: EXYNOS: Add EHCI AHB burst function

Quoted 45 lines · Tushar Behera
Quoted 7 lines · Thomas Abraham

Hi Sangwook,

Quoted 4 lines · Sangwook Lee

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

Quoted 8 lines

Review

Quoted 8 lines
---
 arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
 arch/arm/plat-samsung/devs.c              |    2 ++
 arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)
(quoted diff) +0 -0

b/arch/arm/mach-exynos/setup-usb-phy.c

Quoted 9 lines
Quoted 9 lines

index 41743d2..5a20460 100644

arch/arm/mach-exynos/setup-usb-phy.c +1 -0
@@ -18,6 +18,7 @@
 #include <mach/regs-usb-phy.h>
 #include <plat/cpu.h>
 #include <plat/usb-phy.h>
+#include <plat/ehci.h>
 
Quoted 3 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev,

Quoted 3 lines
arch/arm/mach-exynos/setup-usb-phy.c +0 -0
 static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev,

int type)

Quoted 5 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type)

Quoted 5 lines
arch/arm/mach-exynos/setup-usb-phy.c +2 -0
       return -EINVAL;
 }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem

*base)

Quoted 9 lines

arch/arm/mach-exynos/setup-usb-phy.c int s5p_usb_phy_exit(struct platform_device *pdev, int type) · line 157

Quoted 3 lines
arch/arm/mach-exynos/setup-usb-phy.c +3 -0
+{
+       writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}

This functionality can be added in ehci-s5p itself and avoid adding a new platform callback in platform data. If this is specific to exynos, driver data could be added in ehci-s5p to indicate platforms that need this to be enabled.

Quoted 7 lines

Am I right in assuming that ehci-s5p driver can also be used for mach-s5pv210?

The related bit-fields are reserved in S5PV210. So, won't it cause any side-effects?

do we use ehci-s5p.c in CPU 64xx series ?

Quoted 7 lines
Quoted 7 lines

Thanks,
Thomas.

[...]
--
To unsubscribe from this list: send the line "unsubscribe

Quoted 8 lines

linux-samsung-soc" in

Quoted 2 lines

the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Tushar Behera

_______________________________________________
linaro-dev mailing list [email protected]
http://lists.linaro.org/mailman/listinfo/linaro-dev

#8 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

In reply to Sangwook Lee

Hi, Sangwook.

I know what you want to add.
I'll send new patch which can enable EHCI burst mode.
This new patch will not use platform data callback and different machine directory file to include EHCI INSNREG00 definitions.
Also, comment will be modified properly.

Thank you.

Best regards,
Jingoo Han.

Quoted 88 lines

-----Original Message-----
From: Sangwook Lee [mailto:sangwook.lee at linaro.org]
Sent: Wednesday, February 29, 2012 9:41 PM
To: linux-samsung-soc at vger.kernel.org; linux-usb at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Cc: ben-linux at fluff.org; gregkh at suse.de; kgene.kim at samsung.com; stern at rowland.harvard.edu; jg1.han at samsung.com; jy0922.shim at samsung.com; patches at linaro.org; linaro-dev at lists.linaro.org; linux at arm.linux.org.uk; Sangwook Lee
Subject: [PATCH 1/2] ARM: EXYNOS: Add EHCI AHB burst function

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---
 arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
 arch/arm/plat-samsung/devs.c              |    2 ++
 arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)
arch/arm/mach-exynos/setup-usb-phy.c +6 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@
 #include <mach/regs-usb-phy.h>
 #include <plat/cpu.h>
 #include <plat/usb-phy.h>
+#include <plat/ehci.h>
 
 static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
 	return -EINVAL;
 }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+	writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}
arch/arm/plat-samsung/devs.c +2 -0
index f10768e..8fd1bd3 100644
@@ -1402,6 +1402,8 @@ void __init s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd)
 		npd->phy_init = s5p_usb_phy_init;
 	if (!npd->phy_exit)
 		npd->phy_exit = s5p_usb_phy_exit;
+	if (!npd->burst_enable)
+		npd->burst_enable = s5p_ehci_burst_enable;
 }
 #endif /* CONFIG_S5P_DEV_USB_EHCI */
 
arch/arm/plat-samsung/include/plat/ehci.h +19 -1
index 5f28cae..9c866b7 100644
@@ -14,8 +14,27 @@
 struct s5p_ehci_platdata {
 	int (*phy_init)(struct platform_device *pdev, int type);
 	int (*phy_exit)(struct platform_device *pdev, int type);
+	void (*burst_enable)(struct platform_device *pdev, void __iomem *base);
 };
 
 extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd);
+extern void s5p_ehci_burst_enable(struct platform_device *pdev,
+	void __iomem *base);
+
+/* EHCI EXYNOS specific register */
+#define EHCI_INSNREG00			0x90
+
+/*
+ * EHCI INSNREG00 Specific fields
+ * Enable AHB master to use burst transfer from 4 to 16
+ */
+#define EHCI_INSNREG00_ENABLE_INCR16	(1 << 25)
+#define EHCI_INSNREG00_ENABLE_INCR8	(1 << 24)
+#define EHCI_INSNREG00_ENABLE_INCR4	(1 << 23)
+/* Force AHB master to start burst transfer only for 4,8,16 alignment */
+#define EHCI_INSNREG00_ENABLE_INCRX_ALIGN (1 << 22)
+#define EHCI_INSNREG00_ENABLE_BURST	\
+	(EHCI_INSNREG00_ENABLE_INCR16 | EHCI_INSNREG00_ENABLE_INCR8 |	\
+	EHCI_INSNREG00_ENABLE_INCR4 | EHCI_INSNREG00_ENABLE_INCRX_ALIGN)
 
 #endif /* __PLAT_SAMSUNG_EHCI_H */
--

1.7.4.1

#9 lore raw

PATCH 1/2 ARM: EXYNOS: Add EHCI AHB burst function

Hi Jingoo

Quoted 4 lines · Jingoo Han

Hi, Sangwook.

I know what you want to add.
I'll send new patch which can enable EHCI burst mode.

Great !

Thanks
Sangwook

Quoted 99 lines

This new patch will not use platform data callback and different machine directory file to include EHCI INSNREG00 definitions.
Also, comment will be modified properly.

Thank you.

Best regards,
Jingoo Han.

Quoted 88 lines

-----Original Message-----
From: Sangwook Lee [mailto:sangwook.lee at linaro.org]
Sent: Wednesday, February 29, 2012 9:41 PM
To: linux-samsung-soc at vger.kernel.org; linux-usb at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Cc: ben-linux at fluff.org; gregkh at suse.de; kgene.kim at samsung.com; stern at rowland.harvard.edu; jg1.han at samsung.com; jy0922.shim at samsung.com; patches at linaro.org; linaro-dev at lists.linaro.org; linux at arm.linux.org.uk; Sangwook Lee
Subject: [PATCH 1/2] ARM: EXYNOS: Add EHCI AHB burst function

Enable burst transfer from AHB for EHCI. This fixes data transfer of USB Ethernet with EHCI. Without this patch, scp hardly works.

---
  arch/arm/mach-exynos/setup-usb-phy.c      |    6 ++++++
  arch/arm/plat-samsung/devs.c              |    2 ++
  arch/arm/plat-samsung/include/plat/ehci.h |   19 +++++++++++++++++++
  3 files changed, 27 insertions(+), 0 deletions(-)
arch/arm/mach-exynos/setup-usb-phy.c +6 -0
index 41743d2..5a20460 100644
@@ -18,6 +18,7 @@
  #include<mach/regs-usb-phy.h>
  #include<plat/cpu.h>
  #include<plat/usb-phy.h>
+#include<plat/ehci.h>
 
  static atomic_t host_usage;
 
@@ -149,3 +150,8 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
 
  	return -EINVAL;
  }
+
+void s5p_ehci_burst_enable(struct platform_device *pdev, void __iomem *base)
+{
+	writel(EHCI_INSNREG00_ENABLE_BURST, base + EHCI_INSNREG00);
+}
arch/arm/plat-samsung/devs.c +2 -0
index f10768e..8fd1bd3 100644
@@ -1402,6 +1402,8 @@ void __init s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd)
  		npd->phy_init = s5p_usb_phy_init;
  	if (!npd->phy_exit)
  		npd->phy_exit = s5p_usb_phy_exit;
+	if (!npd->burst_enable)
+		npd->burst_enable = s5p_ehci_burst_enable;
  }
  #endif /* CONFIG_S5P_DEV_USB_EHCI */
 
arch/arm/plat-samsung/include/plat/ehci.h +19 -1
index 5f28cae..9c866b7 100644
@@ -14,8 +14,27 @@
  struct s5p_ehci_platdata {
  	int (*phy_init)(struct platform_device *pdev, int type);
  	int (*phy_exit)(struct platform_device *pdev, int type);
+	void (*burst_enable)(struct platform_device *pdev, void __iomem *base);
  };
 
  extern void s5p_ehci_set_platdata(struct s5p_ehci_platdata *pd);
+extern void s5p_ehci_burst_enable(struct platform_device *pdev,
+	void __iomem *base);
+
+/* EHCI EXYNOS specific register */
+#define EHCI_INSNREG00			0x90
+
+/*
+ * EHCI INSNREG00 Specific fields
+ * Enable AHB master to use burst transfer from 4 to 16
+ */
+#define EHCI_INSNREG00_ENABLE_INCR16	(1<<  25)
+#define EHCI_INSNREG00_ENABLE_INCR8	(1<<  24)
+#define EHCI_INSNREG00_ENABLE_INCR4	(1<<  23)
+/* Force AHB master to start burst transfer only for 4,8,16 alignment */
+#define EHCI_INSNREG00_ENABLE_INCRX_ALIGN (1<<  22)
+#define EHCI_INSNREG00_ENABLE_BURST	\
+	(EHCI_INSNREG00_ENABLE_INCR16 | EHCI_INSNREG00_ENABLE_INCR8 |	\
+	EHCI_INSNREG00_ENABLE_INCR4 | EHCI_INSNREG00_ENABLE_INCRX_ALIGN)
 
  #endif /* __PLAT_SAMSUNG_EHCI_H */
--

1.7.4.1

#10 lore raw

PATCH 2/2 USB: ehci-s5p: add function for burst

In reply to Sangwook Lee

Add platform specific function for EHCI burst function

---
 drivers/usb/host/ehci-s5p.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
drivers/usb/host/ehci-s5p.c +3 -0
index 293f741..c5eb0ce 100644
@@ -134,6 +134,9 @@ static int __devinit s5p_ehci_probe(struct platform_device *pdev)
 	/* cache this readonly data; minimize chip reads */
 	ehci->hcs_params = readl(&ehci->caps->hcs_params);
 
+	if (pdata->burst_enable)
+		pdata->burst_enable(pdev, hcd->regs);
+
 	ehci_reset(ehci);
 
 	err = usb_add_hcd(hcd, irq, IRQF_SHARED);
Signature · 1 line
1.7.4.1