All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger Quadros <rogerq@ti.com>
To: David Laight <David.Laight@ACULAB.COM>,
	lee.jones@linaro.org, sameo@linux.intel.com
Cc: tomi.valkeinen@ti.com, balbi@ti.com, sr@denx.de,
	ljkenny.mailinglists@gmail.com, linux-omap@vger.kernel.org,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: Re: [PATCH 1/1] mfd: omap-usb-host: Fix USB device detection problems on OMAP4 Panda
Date: Mon, 2 Dec 2013 10:39:02 +0200	[thread overview]
Message-ID: <529C4726.6080708@ti.com> (raw)
In-Reply-To: <AE90C24D6B3A694183C094C60CF0A2F6026B744D@saturn3.aculab.com>

Hi David,

On 11/29/2013 03:17 PM, David Laight wrote:
>> From: Of Roger Quadros
>> With u-boot 2013.10, USB devices are sometimes not detected
>> on OMAP4 Panda. To make us independent of what bootloader does
>> with the USB Host module, we must RESET it to get it to a known
>> good state. This patch Soft RESETs the USB Host module.
> ...
>> +++ b/drivers/mfd/omap-usb-host.c
>> @@ -43,14 +43,18 @@
>>  /* UHH Register Set */
>>  #define	OMAP_UHH_REVISION				(0x00)
>>  #define	OMAP_UHH_SYSCONFIG				(0x10)
>> -#define	OMAP_UHH_SYSCONFIG_MIDLEMODE			(1 << 12)
>> +#define	OMAP_UHH_SYSCONFIG_MIDLEMASK			(3 << 12)
>> +#define OMAP_UHH_SYSCONFIG_MIDLESHIFT			(12)
> 
> (tab/space issue)

Weird, original code seems to use a tab instead of space after #define. 

> 
> Wouldn't it be clearer to define these in the opposite order with:
> +#define	OMAP_UHH_SYSCONFIG_MIDLEMASK			(3 << OMAP_UHH_SYSCONFIG_MIDLESHIFT)

Right.

> 
> ... 
>> +static void omap_usbhs_rev1_reset(struct device *dev)
>> +{
>> +	struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
>> +	u32 reg;
>> +	unsigned long timeout;
>> +
>> +	reg = usbhs_read(omap->uhh_base, OMAP_UHH_SYSCONFIG);
>> +
>> +	/* Soft Reset */
>> +	usbhs_write(omap->uhh_base, OMAP_UHH_SYSCONFIG,
>> +		    reg | OMAP_UHH_SYSCONFIG_SOFTRESET);
>> +
>> +	timeout = jiffies + msecs_to_jiffies(100);
>> +	while (!(usbhs_read(omap->uhh_base, OMAP_UHH_SYSSTATUS)
>> +			& OMAP_UHH_SYSSTATUS_RESETDONE)) {
>> +		cpu_relax();

You mean use msleep(1) here instead of cpu_relax()?
Shouldn't be a problem IMO, but can you please tell me why that is better
as the reset seems to complete usually in the first iteration.

>> +
>> +		if (time_after(jiffies, timeout)) {
>> +			dev_err(dev, "Soft RESET operation timed out\n");
>> +			break;
>> +		}
>> +	}
>> +
>> +	/* Set No-Standby */
>> +	reg &= ~OMAP_UHH_SYSCONFIG_MIDLEMASK;
>> +	reg |= OMAP_UHH_SYSCONFIG_MIDLE_NOSTANDBY
>> +		<< OMAP_UHH_SYSCONFIG_MIDLESHIFT;
>> +
>> +	/* Set No-Idle */
>> +	reg &= ~OMAP_UHH_SYSCONFIG_SIDLEMASK;
>> +	reg |= OMAP_UHH_SYSCONFIG_SIDLE_NOIDLE
>> +		<< OMAP_UHH_SYSCONFIG_SIDLESHIFT;
> 
> Why not pass in the mask and value and avoid replicating the
> entire function. I can't see any other significant differences,
> the udelay(2) won't be significant.

OK, I can pass the mask and value, but still there is a difference
in the way reset complete is checked between v1 and v2. But that
be in omap_usbhs_softreset() and the individual reset functions can be
replaced by a single omap_usbhs_set_sysconfig().

It seems the udelay() is not required for the USB Host module, so I'll
get rid of that.

> 
> I'm not sure of the context this code runs in, but if the reset
> is likely to take a significant portion of the 100ms timeout
> period, why not just sleep for a few ms between status polls.

covered in the related code above.

cheers,
-roger

WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@ti.com>
To: David Laight <David.Laight@ACULAB.COM>, <lee.jones@linaro.org>,
	<sameo@linux.intel.com>
Cc: <tomi.valkeinen@ti.com>, <balbi@ti.com>, <sr@denx.de>,
	<ljkenny.mailinglists@gmail.com>, <linux-omap@vger.kernel.org>,
	<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<stable@vger.kernel.org>
Subject: Re: [PATCH 1/1] mfd: omap-usb-host: Fix USB device detection problems on OMAP4 Panda
Date: Mon, 2 Dec 2013 10:39:02 +0200	[thread overview]
Message-ID: <529C4726.6080708@ti.com> (raw)
In-Reply-To: <AE90C24D6B3A694183C094C60CF0A2F6026B744D@saturn3.aculab.com>

Hi David,

On 11/29/2013 03:17 PM, David Laight wrote:
>> From: Of Roger Quadros
>> With u-boot 2013.10, USB devices are sometimes not detected
>> on OMAP4 Panda. To make us independent of what bootloader does
>> with the USB Host module, we must RESET it to get it to a known
>> good state. This patch Soft RESETs the USB Host module.
> ...
>> +++ b/drivers/mfd/omap-usb-host.c
>> @@ -43,14 +43,18 @@
>>  /* UHH Register Set */
>>  #define	OMAP_UHH_REVISION				(0x00)
>>  #define	OMAP_UHH_SYSCONFIG				(0x10)
>> -#define	OMAP_UHH_SYSCONFIG_MIDLEMODE			(1 << 12)
>> +#define	OMAP_UHH_SYSCONFIG_MIDLEMASK			(3 << 12)
>> +#define OMAP_UHH_SYSCONFIG_MIDLESHIFT			(12)
> 
> (tab/space issue)

Weird, original code seems to use a tab instead of space after #define. 

> 
> Wouldn't it be clearer to define these in the opposite order with:
> +#define	OMAP_UHH_SYSCONFIG_MIDLEMASK			(3 << OMAP_UHH_SYSCONFIG_MIDLESHIFT)

Right.

> 
> ... 
>> +static void omap_usbhs_rev1_reset(struct device *dev)
>> +{
>> +	struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
>> +	u32 reg;
>> +	unsigned long timeout;
>> +
>> +	reg = usbhs_read(omap->uhh_base, OMAP_UHH_SYSCONFIG);
>> +
>> +	/* Soft Reset */
>> +	usbhs_write(omap->uhh_base, OMAP_UHH_SYSCONFIG,
>> +		    reg | OMAP_UHH_SYSCONFIG_SOFTRESET);
>> +
>> +	timeout = jiffies + msecs_to_jiffies(100);
>> +	while (!(usbhs_read(omap->uhh_base, OMAP_UHH_SYSSTATUS)
>> +			& OMAP_UHH_SYSSTATUS_RESETDONE)) {
>> +		cpu_relax();

You mean use msleep(1) here instead of cpu_relax()?
Shouldn't be a problem IMO, but can you please tell me why that is better
as the reset seems to complete usually in the first iteration.

>> +
>> +		if (time_after(jiffies, timeout)) {
>> +			dev_err(dev, "Soft RESET operation timed out\n");
>> +			break;
>> +		}
>> +	}
>> +
>> +	/* Set No-Standby */
>> +	reg &= ~OMAP_UHH_SYSCONFIG_MIDLEMASK;
>> +	reg |= OMAP_UHH_SYSCONFIG_MIDLE_NOSTANDBY
>> +		<< OMAP_UHH_SYSCONFIG_MIDLESHIFT;
>> +
>> +	/* Set No-Idle */
>> +	reg &= ~OMAP_UHH_SYSCONFIG_SIDLEMASK;
>> +	reg |= OMAP_UHH_SYSCONFIG_SIDLE_NOIDLE
>> +		<< OMAP_UHH_SYSCONFIG_SIDLESHIFT;
> 
> Why not pass in the mask and value and avoid replicating the
> entire function. I can't see any other significant differences,
> the udelay(2) won't be significant.

OK, I can pass the mask and value, but still there is a difference
in the way reset complete is checked between v1 and v2. But that
be in omap_usbhs_softreset() and the individual reset functions can be
replaced by a single omap_usbhs_set_sysconfig().

It seems the udelay() is not required for the USB Host module, so I'll
get rid of that.

> 
> I'm not sure of the context this code runs in, but if the reset
> is likely to take a significant portion of the 100ms timeout
> period, why not just sleep for a few ms between status polls.

covered in the related code above.

cheers,
-roger


  reply	other threads:[~2013-12-02  8:39 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-29 13:01 [PATCH 0/1] mfd: omap-usb-host: Bug fix for 3.13 rc Roger Quadros
2013-11-29 13:01 ` Roger Quadros
2013-11-29 13:01 ` [PATCH 1/1] mfd: omap-usb-host: Fix USB device detection problems on OMAP4 Panda Roger Quadros
2013-11-29 13:01   ` Roger Quadros
2013-11-29 13:17   ` David Laight
2013-11-29 13:17     ` David Laight
2013-12-02  8:39     ` Roger Quadros [this message]
2013-12-02  8:39       ` Roger Quadros
2013-12-02 16:28       ` David Laight
2013-12-02 16:28         ` David Laight
2013-12-03  9:43         ` Roger Quadros
2013-12-03  9:43           ` Roger Quadros
     [not found]   ` <1385730118-26402-2-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2013-11-29 15:32     ` Michael Trimarchi
2013-11-29 15:32       ` Michael Trimarchi
2013-12-02  9:41       ` Roger Quadros
2013-12-02  9:41         ` Roger Quadros
2013-12-02 12:01         ` Sebastian Andrzej Siewior
2013-12-02 12:12           ` Roger Quadros
2013-12-02 12:12             ` Roger Quadros
2013-12-02 13:04             ` Sebastian Andrzej Siewior
2013-12-02 13:35               ` Roger Quadros
2013-12-02 13:35                 ` Roger Quadros
2013-12-02 13:39                 ` Sebastian Andrzej Siewior
2013-12-02 13:44                   ` Roger Quadros
2013-12-02 13:44                     ` Roger Quadros
     [not found]                     ` <529C8ED0.6060805-l0cyMroinI0@public.gmane.org>
2013-12-02 14:03                       ` Sebastian Andrzej Siewior
2013-12-02 14:03                         ` Sebastian Andrzej Siewior
2013-12-02 15:12                         ` Roger Quadros
2013-12-02 15:12                           ` Roger Quadros
2013-11-30  4:48   ` Michael Trimarchi
2013-11-30  5:10     ` Michael Trimarchi
2013-12-01  3:14       ` Michael Trimarchi
2013-12-02  9:39     ` Roger Quadros
2013-12-02  9:39       ` Roger Quadros
2013-12-02  9:51       ` Michael Trimarchi
     [not found]         ` <CAOf5uwmpiOv_GED23hWDArcOvs6DpHNEy=OJ9vnKem1pg8jSgw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-12-02 12:05           ` Roger Quadros
2013-12-02 12:05             ` Roger Quadros
2013-12-02 15:00       ` Paul Walmsley

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=529C4726.6080708@ti.com \
    --to=rogerq@ti.com \
    --cc=David.Laight@ACULAB.COM \
    --cc=balbi@ti.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=ljkenny.mailinglists@gmail.com \
    --cc=sameo@linux.intel.com \
    --cc=sr@denx.de \
    --cc=stable@vger.kernel.org \
    --cc=tomi.valkeinen@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 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.