[U-Boot] [PATCH v4 16/20] tegra: usb: Add support for Tegra USB peripheral

Simon Glass sjg at chromium.org
Fri Jan 20 00:54:37 CET 2012


Hi Stephen,

On Wed, Jan 18, 2012 at 4:43 PM, Stephen Warren <swarren at nvidia.com> wrote:
> On 01/11/2012 09:33 PM, Simon Glass wrote:
>> This adds basic support for the Tegra2 USB controller. Board files should
>> call board_usb_init() to set things up.
>
>> diff --git a/arch/arm/cpu/armv7/tegra2/usb.c b/arch/arm/cpu/armv7/tegra2/usb.c
>
>> +/* Record which controller can switch from host to device mode */
>> +static struct fdt_usb *host_dev_ctlr;
>
> As you'll note from my comments on the DT bindings, it doesn't make
> sense to have a single global variable for that; both USB1 and USB3 can
> switch at run-time apparently, and USB2 at initialization time.
>
>> +void usbf_reset_controller(enum periph_id id, struct usb_ctlr *usbctlr)
> ...
>> +       /*
>> +        * Set USB1_NO_LEGACY_MODE to 1, Registers are accessible under
>> +        * base address
>> +        */
>> +       if (id == PERIPH_ID_USBD)
>> +               setbits_le32(&usbctlr->usb1_legacy_ctrl, USB1_NO_LEGACY_MODE);
> ...
>> +       /* Set USB3 to use UTMIP PHY */
>> +       if (id == PERIPH_ID_USB3)
>> +               setbits_le32(&usbctlr->susp_ctrl, UTMIP_PHY_ENB);
> ...
>> +static void init_usb_controller(enum periph_id id, struct usb_ctlr *usbctlr,
>> +               const u32 timing[])
> ...
>> +       /*
>> +        * To Use the A Session Valid for cable detection logic, VBUS_WAKEUP
>> +        * mux must be switched to actually use a_sess_vld threshold.
>> +        */
>> +       if (id == PERIPH_ID_USBD) {
>> +               clrsetbits_le32(&usbctlr->usb1_legacy_ctrl,
>> +                       VBUS_SENSE_CTL_MASK, VBUS_SENSE_CTL_A_SESS_VLD);
>> +       }
>
> Uggh. The driver shouldn't really be altering its behaviour based on
> knowledge of the instance number. Can those conditions be modified to
> test something else instead?
>
> For the first (USBD) condition, it seems like if the registers are
> different, we should really have either different compatible values, or
> a flag in the DT to indicate this.
>
> For the second (USB3) condition, shouldn't this be testing the phy type
> field, not the instance ID?
>
> For the third (USBD) condition, can it test whether there's a VBUS GPIO
> defined, or whether an appropriate combination of my proposed
> enable-host-mode/enable-device-mode properties are present?

Yes I'm pretty sure I can clean this up to make it more fdt-dependent.
Will have a look.

Regards,
Simon

>
> --
> nvpublic


More information about the U-Boot mailing list