Hi Peter, On Mon, 2013-11-11 at 21:59 +0800, Peter Chen wrote: > On Mon, Nov 11, 2013 at 03:35:37PM +0200, Ivan T. Ivanov wrote: > > From: "Ivan T. Ivanov" <iivanov@xxxxxxxxxx> > > > > PHY drivers keep track of the current state of the hardware, > > so don't change PHY settings under it. > > > > Signed-off-by: Ivan T. Ivanov <iivanov@xxxxxxxxxx> > > --- > > drivers/usb/chipidea/ci_hdrc_msm.c | 9 ++------- > > 1 file changed, 2 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c > > index e9624f3..338b209 100644 > > --- a/drivers/usb/chipidea/ci_hdrc_msm.c > > +++ b/drivers/usb/chipidea/ci_hdrc_msm.c > > @@ -20,13 +20,11 @@ > > static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > { > > struct device *dev = ci->gadget.dev.parent; > > - int val; > > > > switch (event) { > > case CI_HDRC_CONTROLLER_RESET_EVENT: > > dev_dbg(dev, "CI_HDRC_CONTROLLER_RESET_EVENT received\n"); > > - writel(0, USB_AHBBURST); > > - writel(0, USB_AHBMODE); > > + usb_phy_init(ci->transceiver); > > It will reset the PHY, but your comment is "don't change PHY settings under it" :-). This function is exported by PHY drivers, so they will know how to handle this change. > > > break; > > case CI_HDRC_CONTROLLER_STOPPED_EVENT: > > dev_dbg(dev, "CI_HDRC_CONTROLLER_STOPPED_EVENT received\n"); > > @@ -34,10 +32,7 @@ static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > * Put the transceiver in non-driving mode. Otherwise host > > * may not detect soft-disconnection. > > */ > > - val = usb_phy_io_read(ci->transceiver, ULPI_FUNC_CTRL); > > - val &= ~ULPI_FUNC_CTRL_OPMODE_MASK; > > - val |= ULPI_FUNC_CTRL_OPMODE_NONDRIVING; > > - usb_phy_io_write(ci->transceiver, val, ULPI_FUNC_CTRL); > > + usb_phy_notify_disconnect(ci->transceiver, USB_SPEED_UNKNOWN); > > Where you have implemented .notify_disconnect? > I have not found it at your phy driver. Yep, I will post PHY driver changes shortly. Meanwhile this should not break existing board file based platforms, because not of them could be compiled (HTC Dream, Halibut Board) and DT based platforms are sill work in progress. Regards, Ivan -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html