[PATCH 1/7] ARM: OMAP2xxx: hwmod: Convert SHAM crypto device data to hwmod

Paul Walmsley paul at pwsan.com
Mon Oct 22 15:49:47 EDT 2012


On Mon, 22 Oct 2012, Mark A. Greer wrote:

> On Sat, Oct 20, 2012 at 07:40:19PM +0000, Paul Walmsley wrote:
>
> > >  static void omap_init_sham(void)
> > >  {
> > > -	if (cpu_is_omap24xx()) {
> > > -		sham_device.resource = omap2_sham_resources;
> > > -		sham_device.num_resources = omap2_sham_resources_sz;
> > > +	if (cpu_is_omap24xx() &&
> > > +	    (omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_IDLEST4) &
> > > +						 OMAP24XX_ST_SHA_MASK)) {
> > 
> > Hmm.  Not sure I understand the purpose of this CM read.  Don't we want to 
> > initialize this device unconditionally?
> 
> No, the device doesn't exist on all parts.

It should exist on all OMAP2xxx, AFAIK.  (Whether some bootloader 
firewalled it off is another matter, of course.)

>  This is the only way to tell if its there (AFAIK).

Hmm.  I don't think the CM_IDLEST bits work that way, in the general case.  
They just indicate whether the PRCM considers that IP block to be 
currently accessible.  So for example if the clocks are disabled to an IP 
block, the CM_IDLEST bit would indicate that it's not accessible.  The 
software could then enable the clocks, and the CM_IDLEST bit would 
indicate that it is accessible.  We use this in the clock framework and 
hwmod code after enabling clocks to wait until the system considers the IP 
block accessible.  See for example

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-omap2/clock.c;h=961ac8f7e13d8c84a1cbb4587255ea685520bd18;hb=HEAD#l80

...

Now it's possible that on some TI chips, the CM_IDLEST bit is tied to the 
SIdleAck signal originating from the IP block.  (I've been told that on 
other OMAPs, CM_IDLEST is actually tied to the SIdleReq signal originating 
from the PRCM, which is not terribly useful...)  So if it's tied to the 
SIdleAck signal, and the PRCM clocks are enabled, then it might provide an 
indication of whether the IP block exists on that chip.  But ultimately 
the IP block might still be firewalled off even if it appears to exist to 
the PRCM.  So for 3xxx, I'd suggest just adding it to the appropriate 
GP-specific hwmod init lists, such as omap3xxx_gp_hwmod_ocp_ifs.


- Paul



More information about the linux-arm-kernel mailing list