public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Lechner <david@lechnology.com>
To: Alexandre Bailon <abailon@baylibre.com>, b-liu@ti.com, balbi@kernel.org
Cc: kishon@ti.com, khilman@baylibre.com,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
	nsekhar@ti.com
Subject: Re: [PATCH v3 2/5] phy: da8xx-usb: Configure CFGCHIP2 to support OTG workaround
Date: Thu, 3 Nov 2016 12:00:22 -0500	[thread overview]
Message-ID: <669c9a45-a384-263e-458d-29e0bdbba6e4@lechnology.com> (raw)
In-Reply-To: <1478186765-19840-3-git-send-email-abailon@baylibre.com>

On 11/03/2016 10:26 AM, Alexandre Bailon wrote:
> If we configure the da8xx OTG phy in OTG mode, neither device or host
> mode will work. That is because the PHY is not able to detect and notify
> the driver that value of ID pin changed.
> To work despite this hardware limitation, the da8xx glue implement a
> workaround.
> But to work, the workaround require the VBUS sense and the session end
> comparator to enabled.
> Enable them if the phy is configured in OTG mode.
>
> Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
> ---
>  drivers/phy/phy-da8xx-usb.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/phy/phy-da8xx-usb.c b/drivers/phy/phy-da8xx-usb.c
> index 32ae78c..fd39292 100644
> --- a/drivers/phy/phy-da8xx-usb.c
> +++ b/drivers/phy/phy-da8xx-usb.c
> @@ -93,24 +93,31 @@ static int da8xx_usb20_phy_power_off(struct phy *phy)
>  static int da8xx_usb20_phy_set_mode(struct phy *phy, enum phy_mode mode)
>  {
>  	struct da8xx_usb_phy *d_phy = phy_get_drvdata(phy);
> +	int ret;
>  	u32 val;
>
> +	ret = regmap_read(d_phy->regmap, CFGCHIP(2), &val);
> +	if (ret)
> +		return ret;
> +
> +	val &= ~CFGCHIP2_OTGMODE_MASK;
> +
>  	switch (mode) {
>  	case PHY_MODE_USB_HOST:		/* Force VBUS valid, ID = 0 */
> -		val = CFGCHIP2_OTGMODE_FORCE_HOST;
> +		val |= CFGCHIP2_OTGMODE_FORCE_HOST;
>  		break;
>  	case PHY_MODE_USB_DEVICE:	/* Force VBUS valid, ID = 1 */
> -		val = CFGCHIP2_OTGMODE_FORCE_DEVICE;
> +		val |= CFGCHIP2_OTGMODE_FORCE_DEVICE;
>  		break;
>  	case PHY_MODE_USB_OTG:	/* Don't override the VBUS/ID comparators */
> -		val = CFGCHIP2_OTGMODE_NO_OVERRIDE;
> +		val |= CFGCHIP2_OTGMODE_NO_OVERRIDE |
> +			CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN;

I still think this is wrong that you set these bits but never clear 
them. For example, if you start in host mode, these bits will not bit 
set, but if you start in otg mode and switch to host mode, these bits 
will still be set.

And I still think that these bits (CFGCHIP2_SESENDEN | 
CFGCHIP2_VBDTCTEN) should just be enabled during driver probe rather 
than here since I don't know of a reason to turn them off.

>  		break;
>  	default:
>  		return -EINVAL;
>  	}
>
> -	regmap_write_bits(d_phy->regmap, CFGCHIP(2), CFGCHIP2_OTGMODE_MASK,
> -			  val);
> +	regmap_write(d_phy->regmap, CFGCHIP(2), val);
>
>  	return 0;
>  }
>

  reply	other threads:[~2016-11-03 17:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-03 15:26 [PATCH v3 0/5] usb: musb: da8xx: Fix few issues Alexandre Bailon
2016-11-03 15:26 ` [PATCH v3 1/5] usb: musb: da8xx: Call earlier clk_prepare_enable() Alexandre Bailon
2016-11-03 15:26 ` [PATCH v3 2/5] phy: da8xx-usb: Configure CFGCHIP2 to support OTG workaround Alexandre Bailon
2016-11-03 17:00   ` David Lechner [this message]
2016-11-03 15:26 ` [PATCH v3 3/5] dt/bindings: Add a new property to DA8xx USB PHY Alexandre Bailon
2016-11-03 16:34   ` Kishon Vijay Abraham I
2016-11-03 17:26     ` Alexandre Bailon
2016-11-03 17:50       ` Kishon Vijay Abraham I
2016-11-04 11:07         ` Alexandre Bailon
2016-11-03 16:53   ` David Lechner
2016-11-03 17:33     ` Alexandre Bailon
2016-11-03 17:53       ` David Lechner
2016-11-03 15:26 ` [PATCH v3 4/5] phy: da8xx-usb: Use usb20_force_mode property to configure the phy mode Alexandre Bailon
2016-11-03 15:26 ` [PATCH v3 5/5] usb: musb: da8xx: Remove set_mode callback Alexandre Bailon
2016-11-03 17:18   ` David Lechner
2016-11-03 17:27     ` Bin Liu
2016-11-03 17:42       ` Alexandre Bailon

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=669c9a45-a384-263e-458d-29e0bdbba6e4@lechnology.com \
    --to=david@lechnology.com \
    --cc=abailon@baylibre.com \
    --cc=b-liu@ti.com \
    --cc=balbi@kernel.org \
    --cc=khilman@baylibre.com \
    --cc=kishon@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=nsekhar@ti.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox