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

Sangwook Lee sangwook.lee at linaro.org
Wed Feb 29 09:21:32 EST 2012


Hi Jingoo

On 29/02/12 13:23, Jingoo Han wrote:
> Hi, Sangwook.
>
> I know what you want to add.
> I'll send new patch which can enable EHCI burst mode.

Great !

Thanks
Sangwook

> 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.
>
>> -----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.
>>
>> Signed-off-by: Sangwook Lee<sangwook.lee at linaro.org>
>> ---
>>   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(-)
>>
>> diff --git a/arch/arm/mach-exynos/setup-usb-phy.c b/arch/arm/mach-exynos/setup-usb-phy.c
>> index 41743d2..5a20460 100644
>> --- a/arch/arm/mach-exynos/setup-usb-phy.c
>> +++ b/arch/arm/mach-exynos/setup-usb-phy.c
>> @@ -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);
>> +}
>> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
>> index f10768e..8fd1bd3 100644
>> --- a/arch/arm/plat-samsung/devs.c
>> +++ b/arch/arm/plat-samsung/devs.c
>> @@ -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 */
>>
>> diff --git a/arch/arm/plat-samsung/include/plat/ehci.h b/arch/arm/plat-samsung/include/plat/ehci.h
>> index 5f28cae..9c866b7 100644
>> --- a/arch/arm/plat-samsung/include/plat/ehci.h
>> +++ b/arch/arm/plat-samsung/include/plat/ehci.h
>> @@ -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
>



More information about the linux-arm-kernel mailing list