On Tuesday, September 27, 2011 01:01:36 PM Jana Rapava wrote:
> This commit adds USB support for EfikaMX and EfikaSB.
> 
> Signed-off-by: Jana Rapava <ferma...@gmail.com>
> Signed-off-by: Marek Vasut <marek.va...@gmail.com>
> Cc: Remy Bohmer <li...@bohmer.net>
> Cc: Stefano Babic <sba...@denx.de>
> ---

[...]

> +
> +#ifdef       CONFIG_MACH_EFIKASB

Please update to mainline, use if (machine_is_efikasb()) { ... } .

> +     /*
> +      * Configure USBH2 pads (used on EfikaSB)
> +      */

[...]

> +/*
> + * solve the VBUS reset problem on Efika
> + * by setting the CHRG_VBUS bit in the reset
> + */
> +void ehci_fixup(uint32_t *status_reg, uint32_t *reg_ref)
> +{
> +     struct usb_ehci *ehci = (struct usb_ehci *)(OTG_BASE_ADDR +
> +             (MX51_REGISTER_LAYOUT_LENGTH));

Too many parenthesis.

> +     struct mxc_ulpi_regs *ulpi = (struct mxc_ulpi_regs *)0;
> +
> +     u32 tmp = ulpi_read(ehci, (u32)&ulpi->otg_ctrl_write);
> +     tmp |= ULPI_OTG_CHRG_VBUS;
> +     ulpi_write(ehci, (u32)&ulpi->otg_ctrl_write, tmp);
> +
> +     /* usb 2.0 specification say 50 ms resets on root */
> +     wait_ms(50);
> +
> +     /* terminate the reset */

Write a whole sentence, which begins with a capital letter and ends with dot 
... 
fix globally.


> +     *reg_ref = ehci_readl(status_reg);
> +     *reg_ref |= EHCI_PS_PE;
> +}
> +
> +void ehci0_init(struct usb_ehci *ehci)
> +{
> +     writel(MX51_16BIT_UTMI, &ehci->portsc);
> +}
> +
> +void ehci1_init(struct usb_ehci *ehci, struct mxc_ulpi_regs *ulpi)
> +{
> +     mxc_request_iomux(MX51_PIN_USBH1_STP, IOMUX_CONFIG_ALT2);
> +     mxc_iomux_set_pad(MX51_PIN_USBH1_STP, PAD_CTL_DRV_HIGH |
> +                             PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
> +     gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_USBH1_STP), 0);
> +     udelay(1000);
> +     gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_USBH1_STP), 1);
> +     udelay(1000);
> +
> +     mxc_request_iomux(MX51_PIN_USBH1_STP, IOMUX_CONFIG_ALT0);
> +     mxc_iomux_set_pad(MX51_PIN_USBH1_STP, USB_PAD_CONFIG);
> +     udelay(10000);
> +
> +     clrbits_le32(&ehci->usbcmd, MX51_ITC_IMMEDIATE_MASK);
> +     udelay(10000);
> +
> +     writel(MX51_ULPI_MODE_MASK, &ehci->portsc);
> +     udelay(10000);
> +
> +     ulpi_init(ehci, ulpi);
> +}
> +
> +
> +void ehci2_init(struct usb_ehci *ehci, struct mxc_ulpi_regs *ulpi)
> +{
> +     mxc_request_iomux(MX51_PIN_EIM_A26, IOMUX_CONFIG_ALT1);
> +     mxc_iomux_set_pad(MX51_PIN_EIM_A26, PAD_CTL_DRV_HIGH |
> +                             PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
> +     gpio_direction_output(IOMUX_TO_GPIO(MX51_PIN_EIM_A26), 0);
> +     udelay(1000);
> +     gpio_set_value(IOMUX_TO_GPIO(MX51_PIN_EIM_A26), 1);
> +     udelay(1000);
> +
> +     mxc_request_iomux(MX51_PIN_EIM_A26, IOMUX_CONFIG_ALT2);
> +     mxc_iomux_set_pad(MX51_PIN_EIM_A26, USB_PAD_CONFIG);
> +
> +     writel(MX51_ULPI_MODE_MASK, &ehci->portsc);
> +     udelay(10000);
> +
> +     ulpi_init(ehci, ulpi);
> +}
> +
> +int ehci_hcd_init(void)
> +{
> +     struct usb_ehci *ehci;
> +     struct mx5_usb_control_regs *mx5_usb_control_regs;
> +     struct mxc_ulpi_regs *ulpi;
> +
> +     /* Init iMX51 EHCI */
> +     efika_usb_phy_reset();
> +     efika_usb_hub_reset();
> +     efika_usb_enable_devices();
> +
> +     mx5_usb_control_regs = (struct mx5_usb_control_regs *)(OTG_BASE_ADDR +
> +              MX5_CTRL_REGS_OFFSET);
> +     control_regs_setup(mx5_usb_control_regs);
> +     ulpi = (struct mxc_ulpi_regs *)0;

Move this assignment at the begining.
> +
> +     /* Init EHCI core */
> +     ehci = (struct usb_ehci *)(OTG_BASE_ADDR +
> +             (MX51_REGISTER_LAYOUT_LENGTH * CONFIG_MXC_USB_PORT));
> +     hccr = (struct ehci_hccr *)((uint32_t)&ehci->caplength);
> +     hcor = (struct ehci_hcor *)((uint32_t) hccr +
> +                     HC_LENGTH(ehci_readl(&hccr->cr_capbase)));

DTTO

> +     setbits_le32(&ehci->usbmode, CM_HOST);
> +     setbits_le32(&ehci->control, USB_EN);
> +
> +     switch (CONFIG_MXC_USB_PORT) {
> +     case 0:
> +             ehci0_init(ehci);
> +             break;
> +     case 1:
> +             ehci1_init(ehci, ulpi);
> +             break;
> +#ifdef       MACH_EFIKASB
> +     case 2:
> +             ehci2_init(ehci, ulpi);
> +             break;
> +#endif
> +     };
> +
> +     /* EfikaMX USB has issues ... */
> +     udelay(10000);
> +
> +     return 0;
> +}
> +
> +int ehci_hcd_stop(void)
> +{
> +     return 0;
> +}
> diff --git a/board/efikamx/efikamx.c b/board/efikamx/efikamx.c
> index 5be1f6c..51c1854 100644
> --- a/board/efikamx/efikamx.c
> +++ b/board/efikamx/efikamx.c
> @@ -489,6 +489,15 @@ static inline void setup_iomux_ata(void) { }
>  #endif
> 
>  /*
> + * EHCI USB
> + */
> +#ifdef       CONFIG_CMD_USB
> +void setup_iomux_usb(void);
> +#else
> +static inline void setup_iomux_usb(void) { }
> +#endif
> +

Can you introduce efika.h header and move this to the header please.

> +/*
>   * LED configuration
>   */
>  void setup_iomux_led(void)
> @@ -621,6 +630,7 @@ int board_late_init(void)
> 
>       setup_iomux_led();
>       setup_iomux_ata();
> +     setup_iomux_usb();
> 
>       efikamx_toggle_led(EFIKAMX_LED_BLUE);
> 
> diff --git a/include/configs/efikamx.h b/include/configs/efikamx.h
> index fdd0a14..9632b5d 100644
> --- a/include/configs/efikamx.h
> +++ b/include/configs/efikamx.h
> @@ -40,6 +40,10 @@
> 
>  #define CONFIG_SYS_TEXT_BASE         0x97800000
> 
> +#define      CONFIG_L2_OFF
> +#define      CONFIG_SYS_ICACHE_OFF
> +#define      CONFIG_SYS_DCACHE_OFF
> +
>  /*
>   * Bootloader Components Configuration
>   */
> @@ -168,6 +172,18 @@
>  #endif
> 
>  /*
> + * USB
> + */
> +#define CONFIG_CMD_USB
> +#ifdef CONFIG_CMD_USB
> +#define CONFIG_USB_EHCI                      /* Enable EHCI USB support */
> +#define CONFIG_MXC_USB_PORT  1
> +#define CONFIG_EHCI_IS_TDI
> +#define CONFIG_USB_STORAGE
> +#define      CONFIG_USB_KEYBOARD

The indent looks wrong, please fix.

> +#endif /* CONFIG_CMD_USB */
> +
> +/*
>   * Filesystems
>   */
>  #ifdef CONFIG_CMD_FAT

Cheers
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to