Hi Peter, > @@ -139,6 +139,7 @@ struct ci13xxx { > enum ci_role role; > bool is_otg; > struct work_struct work; > + struct delayed_work dwork; > struct workqueue_struct *wq; > > struct dma_pool *qh_pool; > @@ -164,6 +165,11 @@ struct ci13xxx { > bool global_phy; > struct usb_phy *transceiver; > struct usb_hcd *hcd; > + /* events handled at ci_role_work */ > +#define ID 0 > +#define B_SESS_VALID 1 > + unsigned long events; > + struct usb_otg otg; I looked into implementing ULPI support for the chipidea driver. This does not integrate very well with having a struct usb_otg here. Instead it should be a pointer. Look into drivers/usb/otg/ulpi.c. This allocates the struct usb_otg itself and we have to feed the pointer into struct ci13xxx. Also I think that using a regulator as a vbus provider is not i.MX specific, it's not even chipidea specific. I think this should be a driver of its own under drivers/usb/otg/, or maybe part of drivers/usb/otg/gpio_vbus.c. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html