[U-Boot] [PATCH v2 1/4] ehci-omap: Clean up added ehci-omap.c
Govindraj
govindraj.ti at gmail.com
Wed Jan 11 07:07:24 CET 2012
Hi Marek,
Thanks for you review.
On Tue, Jan 10, 2012 at 9:37 PM, Marek Vasut <marek.vasut at gmail.com> wrote:
>> From: "Govindraj.R" <govindraj.raja at ti.com>
>>
>> Clean up added ehci-omap.c and make it generic for re-use across
>> soc having same ehci ip block. Also pass the modes to be configured
>> and configure the ports accordingly. All usb layers are not cache
>> aligned till then keep cache off for usb ops as ehci will use
>> internally dma for all usb ops.
>>
>> * Add a generic common header ehci-omap.h having common ip block
>> data and reg shifts.
>> * Rename and modify ehci-omap3 to ehci.h retain only conflicting
>> sysc reg shifts remove others and move to common header file.
>
> Don't reimplement the ulpi stuff ... there's already some ulpi stuff in uboot
> that needs fixing, so fix it and use it.
>
I am not implementing any ulpi stuff I am just configuring OMAP on
soc usb host controller (ehci). All the configuration stuff
is OMAP specific things which are done in ehci-omap.c file
stuffs done are like soft-reset, port mode to be used and putting
port in no -idle mode(omap specific pm implementation) etc.
>>
>> Signed-off-by: Govindraj.R <govindraj.raja at ti.com>
>> ---
>> arch/arm/include/asm/arch-omap3/ehci.h | 55 ++++++
>> arch/arm/include/asm/arch-omap3/ehci_omap3.h | 58 -------
>> arch/arm/include/asm/arch-omap4/ehci.h | 49 ++++++
>> arch/arm/include/asm/ehci-omap.h | 147 +++++++++++++++++
>> drivers/usb/host/ehci-omap.c | 228
[...]
>> +
>> +#ifdef CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
>> +#define OMAP_HS_USB_PORTS CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
>> +#else
>> +#define OMAP_HS_USB_PORTS 3
>> +#endif
>> +
>> +#define is_ehci_phy_mode(x) (x == OMAP_EHCI_PORT_MODE_PHY)
>> +#define is_ehci_tll_mode(x) (x == OMAP_EHCI_PORT_MODE_TLL)
>> +#define is_ehci_hsic_mode(x) (x == OMAP_EHCI_PORT_MODE_HSIC)
>
> This is unsafe ... use ((x) == ...)
Okay, will correct this.
>
>> +
>> +/* Values of UHH_REVISION - Note: these are not given in the TRM */
>> +#define OMAP_USBHS_REV1 0x00000010 /*
> OMAP3 */
>> +#define OMAP_USBHS_REV2 0x50700100 /*
> OMAP4 */
>> +
[...]
>> +/* ULPI */
>> +#define ULPI_SET(a) (a + 1)
>> +#define ULPI_CLR(a) (a + 2)
>
> ULPI ... use generic stuff
Actually this for omap specific configuration done with omap
reg map.
EHCI register INSNREG05_ULPI needs to be configured if we
are in ulpi-phy mode same is done here.
>
>> +#define ULPI_FUNC_CTRL 0x04
>> +#define ULPI_FUNC_CTRL_RESET (1 << 5)
>> +
>> +struct omap_usbhs_board_data {
>> + enum usbhs_omap_port_mode port_mode[OMAP_HS_USB_PORTS];
>> +};
>> +
>> +struct omap_usbtll {
>> + u32 rev; /* 0x00 */
>> + u32 hwinfo; /* 0x04 */
>> + u8 pad1[0x8];
>
> reserved1[] instead of pad1[], fix globally
yes fine, will correct this.
[..]
>>
>> +struct omap_uhh *const uhh = (struct omap_uhh *)OMAP_UHH_BASE;
>> +struct omap_usbtll *const usbtll = (struct omap_usbtll *)OMAP_USBTLL_BASE;
>> +struct omap_ehci *const ehci = (struct omap_ehci *)OMAP_EHCI_BASE;
>
> static
>
yes correct, will change this.
>> +
>> +static int omap_uhh_reset(void)
>> +{
[...]
>> + /* perform TLL soft reset, and wait until reset is complete */
>> + writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET, &usbtll->sysc);
>> +
>> + /* Wait for TLL reset to complete */
>> + while (!(readl(&usbtll->syss) & OMAP_USBTLL_SYSSTATUS_RESETDONE))
>
> Add timeout, fix globally
Sorry I didn't get you here.
The function uses a timeout value init and then same init
value to used to poll for CONFIG_SYS_HZ time for reset to be
done else prints timeout failure.
>> + if (get_timer(init) > CONFIG_SYS_HZ) {
>> + debug("OMAP EHCI error: timeout resetting TLL\n");
>> + return -EL3RST;
>> + }
>> +
[...]
>> + /* setup ULPI bypass and burst configurations */
>> + reg |= (OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN |
>> + OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN |
>> + OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN);
>> + reg &= ~OMAP_UHH_HOSTCONFIG_INCRX_ALIGN_EN;
>
> clrsetbits_le32 ?
yes can be used.
--
Thanks,
Govindraj.R
More information about the U-Boot
mailing list