All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Hunter <jon-hunter@ti.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: linux-omap <linux-omap@vger.kernel.org>
Subject: Re: [PATCH] OMAP3: PM: Ensure MUSB is accessible before we attempt to reset it
Date: Wed, 12 Aug 2009 18:21:44 -0500	[thread overview]
Message-ID: <4A834E88.3060502@ti.com> (raw)
In-Reply-To: <87ocql14qc.fsf@deeprootsystems.com>


Kevin Hilman wrote:
> Thanks for this fix.
> 
> I'll consider this another vote for switching to omap_hwmod.

To be honest, I am not too familiar with omap_hwmod. Only what I have 
seen here:

http://patchwork.kernel.org/patch/28171/

Anyway, sounds like a good idea. I am not a fan of the current code as 
it does appear a little random but I can see that it is necessary.

> In general, musb_pm_init() is a hack until the omap_hwmod suport
> for the OTG module is in place.  Using hwmod, this reset stuff will
> be done by hwmod, and all the clocks will be taken care of.
> 
> All that to say, for the PM branch, I'd rather see USBOTG module
> implemented in hwmod than to continue to hack a hack.

Agree. Although I am concerned that this could cause problems for 
someone that chooses to use a boot mode that does not attempt to boot 
from USB before booting from their preferred non-volatile memory.

> However, since hwmod doesn't exist in pm-2.6.29, I'm willing to
> carry this fix in pm-2.6.29.
> 
> To that end, some comments inlined below...

Ok, I will clean up and then should I then rebase the patch of the 
current pm-2.6.29 branch?

>> ---
>>  arch/arm/mach-omap2/usb-musb.c |   30 ++++++++++++++++++++++++++++--
>>  1 files changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c
>> index 3efa19c..7cfe9bb 100644
>> --- a/arch/arm/mach-omap2/usb-musb.c
>> +++ b/arch/arm/mach-omap2/usb-musb.c
>> @@ -32,25 +32,51 @@
>>  #include <mach/irqs.h>
>>  #include <mach/mux.h>
>>  #include <mach/usb.h>
>> +#include "cm.h"
>>  
>>  #define OTG_SYSCONFIG	   0x404
>>  #define OTG_SYSC_SOFTRESET BIT(1)
>> +#define OTG_SYSSTATUS	   0x408
>> +#define OTG_SYSS_RESETDONE BIT(0)
>>  
>>  static void __init usb_musb_pm_init(void)
>>  {
>> -	void __iomem *otg_base;
>> +	void __iomem *cm_base, *otg_base;
>> +	unsigned int cm_iclken_core;
>>  
>>  	if (!cpu_is_omap34xx())
>>  		return;
>>  
>> +	cm_base = ioremap(OMAP3430_CM_BASE, SZ_4K);
>> +	if (WARN_ON(!cm_base))
>> +		return;
>> +
>>  	otg_base = ioremap(OMAP34XX_HSUSB_OTG_BASE, SZ_4K);
>> -	if (WARN_ON(!otg_base))
>> +	if (WARN_ON(!otg_base)) {
>> +		iounmap(cm_base);
>>  		return;
>> +	}
>> +
>> +	/* Ensure the inferface clock for MUSB is enabled */
>> +	cm_iclken_core = __raw_readl(OMAP34XX_CM_REGADDR(CORE_MOD,
>> +					CM_ICLKEN1));
>> +	__raw_writel((cm_iclken_core |
>> +			(1 << OMAP3430_EN_HSOTGUSB_SHIFT)),
>> +			OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1));
> 
> Any reason to no use the clock API for this?
> 
>         otg_clk = clk_get(dev, "ick")
>         clk_enable(otg_clk);

No, I just could not see any easy way to do this as I had assumed I 
needed to use the musb_device structure which may not be defined 
depending on the kernel config. Hence, my crude hack. However, I agree 
that this would be preferred.

> You'll have to create a dummy 'struct device' and pass it to clk_get()
> for this to work right.
> 
> See commit 917fa280e5e99edcae44a34feab295a59922d16c in linux-omap
> master for how I did this for MMC (but also note that this is now
> removed in the current PM branch because hwmod takes care of this.)

Thanks, this should work!

Cheers
Jon

  reply	other threads:[~2009-08-12 23:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-10 21:15 [PATCH] OMAP3: PM: Ensure MUSB is accessible before we attempt to reset it Jon Hunter
2009-08-11 12:41 ` Gadiyar, Anand
2009-08-12 14:33 ` Kevin Hilman
2009-08-12 23:21   ` Jon Hunter [this message]
2009-08-12 23:28     ` Kevin Hilman

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=4A834E88.3060502@ti.com \
    --to=jon-hunter@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.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.