[ELDK] Linux DWC OTG Driver - Host mode

Mark Malopy mark.malopy at onrampwireless.com
Thu Apr 1 03:45:18 CEST 2010


I found an interesting bit of code in <dwc_otg_cil.c> - lines 1073-84 that are addressing the issue with the ULPI Interface Register I am attempting to manage - I pasted it for reference (with my own modification - I do not want the 'Indicator Complement' field set):

#ifdef CONFIG_405EX
	/* Write 0x60 to USB PHY register 7:
	 * Modify "Indicator Complement" and "Indicator Pass Thru" of
	 * Interface control register to disable the internal Vbus
	 * comparator, as suggested by RichTek FAE.
	 * This produced better results recognizing and mounting USB
	 * memory sticks on the Makalu 405EX platform. I couldn't see
	 * any difference on Kilauea, but since it seems to be better
	 * on Makalu, let's keep it in here too.
	//phy_write(_core_if, 7, 0x60);
	phy_write(_core_if, 7, 0x40); // MALDEBUG - Just set Indicator Pass Thru

This update does trigger an Rx CMD generated by the ISP1507 to identify that the Vbus state has changed. However, the Synopsys OTG core then promptly overwrites the register setting and returns it to the original (bad) Vbus state. I'm still trying to determine the correct configuration settings in the Global and/or Host OTG registers that will set in the ULPI Interface Register without resorting to the phy_write() work-around - I believe this should be the preferred method of managing the USB transceiver.

However, are there known issues with the OTG core that required this manual update through phy_write()? I'm trying to get AMCC and/or Synopsys support to close in on this issue...

Thanks for any tips...

Mark Malopy

More information about the eldk mailing list