Hi Felipe and others, I have found one design limitation at current otg/phy framework, that is there is a usb_otg pointer at usb_phy's struct, and we must keep it in order to let the host and device driver pass their pointer to otg driver (the otg driver here is mainly do dual-role switch, and with/ without otg timer funtion) through otg_set_host/otg_set_peripheral. In fact, the struct usb_phy should be no relationship with struct usb_otg, as phy and otg is no relationship, besides, the host/device driver should unnecessary to call get_usb_transciever to get usb_phy's pointer. usb phy is resource that any USB drivers can use it, but should not mandatory use it. I wonder if we can use some ways to delete usb_otg pointer from struct usb_otg. -- Best Regards, Peter Chen -- 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