All of lore.kernel.org
 help / color / mirror / Atom feed
From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: Need a phy function to enable / disable usb squelch detection
Date: Fri, 27 Mar 2015 09:17:31 +0100	[thread overview]
Message-ID: <5515121B.40003@redhat.com> (raw)
In-Reply-To: <BN3PR0301MB08495F972481336D9DA86A8A81090@BN3PR0301MB0849.namprd03.prod.outlook.com>

Hi,

On 27-03-15 02:21, Peter Chen wrote:
>
>> Hi Kishon,
>>
>> I've been debugging why some devices do not work with the musb otg
>> controller found on Allwinner SoC-s, and the conclusion is not good, the
>> Android kernel does a poke to the phy before releasing the usb reset.
>>
>> Now you did not want me to introduce any sunxi specific / private phy
>> functions in my initial patch-series for adding sunxi support, but in this case I do
>> not really see an alternative, as this is a very platform specific hack to work
>> around an issue with the phy-s squelch detection which causes it to see a
>> squelch when reset is released switching it to high speed mode when a lo
>> speed device is connected, after which things fall apart.
>>
>
> The nofity_connect API at struct usb_phy may satisfy your requirement,
> it will be called after bus rest has finished.

Thanks for the suggestion, but that is too late, I try to write a patch
set for this tonight (my sunxi musb work is a spare time project), as
I think that will make the discussion easier.

What I need is a way to disable squelch detection on the phy before clearing
the root port reset bit in the musb controller, currently we have this:

drivers/usb/musb/musb_virthub.c: void musb_port_reset()

	if (do_reset) {
		...
	} else {
		dev_dbg(musb->controller, "root port reset stopped\n");
		musb_writeb(mbase, MUSB_POWER, power & ~MUSB_POWER_RESET);
		...
	}

In order to work around the phy bug I need to do this (I got this from
the Allwinner android kernel sources and it seems the only way):

	if (do_reset) {
		...
	} else {
		dev_dbg(musb->controller, "root port reset stopped\n");
		musb_platform_pre_reset_end();
		musb_writeb(mbase, MUSB_POWER, power & ~MUSB_POWER_RESET);
		musb_platform_post_reset_end();
		...
	}

Notice the 2 new musb_platform_... calls, these are to be empty stubs for
all platforms except sunxi, where they need to call into the phy driver.

All in all I really believe this is so specific that a platform specific
phy callback is best, so that is what I'll do for the first version of
my patchset for this,

Regards,

Hans

      reply	other threads:[~2015-03-27  8:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-26 19:17 Need a phy function to enable / disable usb squelch detection Hans de Goede
2015-03-27  1:21 ` Peter Chen
2015-03-27  8:17   ` Hans de Goede [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5515121B.40003@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.