Hi Roger >>> Patch adds supports for detecting Host/Device mode. >>> + >>> +static int cdns3_otg_get_id(struct cdns3 *cdns) >>> +{ >>> + int id; >>> + >>> + id = readl(&cdns->otg_regs->sts) & OTGSTS_ID_VALUE; >>> + dev_dbg(cdns->dev, "OTG ID: %d", id); >>> + return id; >>> +} >>> + >>> +int cdns3_is_host(struct cdns3 *cdns) >>> +{ >>> + if (cdns->current_dr_mode == USB_DR_MODE_HOST) >>> + return 1; >> >>Why do you need this? > >I assumed that some SoC could have cut DRD /OTG and Device or Host part. >In such case the driver cannot be based on ID pin. >For only HOST it's not a problem because >the standard XHCI driver will be used. Probably I will remove this fragment. I've removed this condition but it is necessary and I've restored it again. When driver works in only HOST mode then ID is always 0. For current_dr_mode == USB_DR_MODE_HOST driver has to just simple returns 1. current_dr_mode can be changed from user space depending on dr_mode field. I have the additional question. Because I have many changes in source code if I should post the next RFC PATCH v3 or should I wait for comments for rest patches ? >> >>> + else if (cdns->current_dr_mode == USB_DR_MODE_OTG) >>> + if (!cdns3_otg_get_id(cdns)) >>> + return 1; >>> + >>> + return 0; >>> +} >>> + Thanks, Cheers, Pawel