linux/drivers/clocksource/sh_cmt.c
<<
o/spa> ospa> class="lxr_search"> ="+search" method="post" onsubmit="return do_search(this);"> Search ospa> class="lxr_prefs" o/spa> < ="ajax+*" method="post" onsubmit="return false;"> oinput typ="vhidden" nam="vajax_lookup" id"vajax_lookup" alue="v"> <
odiv id"vfile_contents"
< <1o/a>ospa> class="comment">/*o/spa>
 < <2o/a>ospa> class="comment"> * SuperH Timer Support - CMTo/spa>
 < <3o/a>ospa> class="comment"> *o/spa>
 < <4o/a>ospa> class="comment"> *  Copyright (C) 2008 Magnus Dammo/spa>
 < <5o/a>ospa> class="comment"> *o/spa>
 < <6o/a>ospa> class="comment"> * This program is free software; you ca> redistribute it and/or modifyo/spa>
 < <7o/a>ospa> class="comment"> * it under the terms of the GNU General Public License as published byo/spa>
 < <8o/a>ospa> class="comment"> * the Free Software Foundaion>; either verson v2 of the Licenseo/spa>
 < <9o/a>ospa> class="comment"> *o/spa>
 < 10ospa> class="comment"> * This program is distributed in the hope that it will be useful,o/spa>
 < 11o/a>ospa> class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty ofo/spa>
 < 12o/a>ospa> class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theo/spa>
 < 13o/a>ospa> class="comment"> * GNU General Public License for more details.o/spa>
 < 14o/a>ospa> class="comment"> *o/spa>
 < 15o/a>ospa> class="comment"> * You should have received a copy of the GNU General Public Licenseo/spa>
 < 16o/a>ospa> class="comment"> * along with this program; if not, write to the Free Softwareo/spa>
 < 17o/a>ospa> class="comment"> * Foundaion>, Inc., 59 Temple Place, Suite 330, Bostn>, MA  02111-1307  USAo/spa>
 < 18o/a>ospa> class="comment"> */o/spa>
 < 19o/a> < 20#include <linux/init.h> < 21#include <linux/platform_device.h> < 22#include <linux/spinlock.h> < 23#include <linux/interrupt.h> < 24#include <linux/ioport.h> < 25#include <linux/io.h> < 26#include <linux/clk.h> < 27#include <linux/irq.h> < 28#include <linux/err.h> < 29#include <linux/delay.h> < 30#include <linux/clocksource.h> < 31#include <linux/clockchips.h> < 32#include <linux/sh_timer.h> < 33#include <linux/slab.h> < 34#include <linux/module.h> < 35#include <linux/pm_domain.h> < 36#include <linux/pm_runtime.h> < 37o/a> < 38structsh_cmt_priv { < 39        void__iomem *oa href="+code=mapbase" class="sref">mapbase; < 40        structclk *oa href="+code=clk" class="sref">clk; < 41        unsigned long oa href="+code=width" class="sref">width; ospa> class="comment">/* 16 or 32 bit verson vof hardware block */o/spa>
 < 42        unsigned long oa href="+code=overflow_bit" class="sref">overflow_bit; < 43        unsigned long oa href="+code=clear_bits" class="sref">clear_bits; < 44        structirqacion> oa href="+code=irqacion>" class="sref">irqacion>; < 45        structplatform_device *oa href="+code=pdev" class="sref">pdev; < 46o/a> < 47        unsigned long oa href="+code=flags" class="sref">flags; < 48        unsigned long oa href="+code=match_alue=" class="sref">match_alue=; < 49        unsigned long oa href="+code=next_match_alue=" class="sref">next_match_alue=; < 50        unsigned long oa href="+code=max_match_alue=" class="sref">max_match_alue=; < 51        unsigned long oa href="+code=rat=" class="sref">rat=; < 52        oa href="+code=raw_spinlock_t" class="sref">raw_spinlock_t oa href="+code=lock" class="sref">lock; < 53        structclock_event_device oa href="+code=ced" class="sref">ced; < 54        structclocksource oa href="+code=cs" class="sref">cs; < 55        unsigned long oa href="+code=total_cycles" class="sref">total_cycles; < 56        oa href="+code=bool" class="sref">bool oa href="+code=cs_enabled" class="sref">cs_enabled; < 57}; < 58o/a> < 59static oa href="+code=DEFINE_RAW_SPINLOCK" class="sref">DEFINE_RAW_SPINLOCK(oa href="+code=sh_cmt_lock" class="sref">sh_cmt_lock); < 60o/a> < 61#define oa href="+code=CMSTR" class="sref">CMSTR -1 ospa> class="comment">/* shared register */o/spa>
 < 62#define oa href="+code=CMCSR" class="sref">CMCSR 0 ospa> class="comment">/* channel register */o/spa>
 < 63#define oa href="+code=CMCNT" class="sref">CMCNT 1 ospa> class="comment">/* channel register */o/spa>
 < 64#define oa href="+code=CMCOR" class="sref">CMCOR 2 ospa> class="comment">/* channel register */o/spa>
 < 65o/a> < 66static oa href="+code=inline" class="sref">inline unsigned long oa href="+code=sh_cmt_read" class="sref">sh_cmt_read(structsh_cmt_priv *oa href="+code=p" class="sref">p, intreg_nr) < 67{ < 68        structsh_timer_config *oa href="+code=cfg" class="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa href="+code=dev" class="sref">dev.oa href="+code=platform_data" class="sref">platform_data; < 69        void__iomem *oa href="+code=base" class="sref">base =p->oa href="+code=mapbase" class="sref">mapbase; < 70        unsigned long oa href="+code=offs" class="sref">offs; < 71o/a> < 72        if (oa href="+code=reg_nr" class="sref">reg_nr ==CMSTR) { < 73                oa href="+code=offs" class="sref">offs =<0; < 74                oa href="+code=base" class="sref">base -=cfg->oa href="+code=channel_offset" class="sref">channel_offset; < 75        } else < 76                oa href="+code=offs" class="sref">offs =reg_nr; < 77o/a> < 78        if (oa href="+code=p" class="sref">p->oa href="+code=width" class="sref">width ==<16) < 79                oa href="+code=offs" class="sref">offs <<=<1; < 80        else { < 81                oa href="+code=offs" class="sref">offs <<=<2; < 82                if ((oa href="+code=reg_nr" class="sref">reg_nr ==CMCNT) || (oa href="+code=reg_nr" class="sref">reg_nr ==CMCOR)) < 83                        return oa href="+code=ioread32" class="sref">ioread32(oa href="+code=base" class="sref">base + oa href="+code=offs" class="sref">offs); < 84        } < 85o/a> < 86        return oa href="+code=ioread16" class="sref">ioread16o/a>(oa href="+code=base" class="sref">base + oa href="+code=offs" class="sref">offs); < 87} < 88o/a> < 89static oa href="+code=inline" class="sref">inline voidsh_cmt_write(structsh_cmt_priv *oa href="+code=p" class="sref">p, intreg_nr, < 90                                unsigned long oa href="+code=alue=" class="sref">alue=) < 91{ < 92        structsh_timer_config *oa href="+code=cfg" class="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa href="+code=dev" class="sref">dev.oa href="+code=platform_data" class="sref">platform_data; < 93        void__iomem *oa href="+code=base" class="sref">base =p->oa href="+code=mapbase" class="sref">mapbase; < 94        unsigned long oa href="+code=offs" class="sref">offs; < 95o/a> < 96        if (oa href="+code=reg_nr" class="sref">reg_nr ==CMSTR) { < 97                oa href="+code=offs" class="sref">offs =<0; < 98                oa href="+code=base" class="sref">base -=cfg->oa href="+code=channel_offset" class="sref">channel_offset; < 99        } else <100                oa href="+code=offs" class="sref">offs =reg_nr; <101o/a> <102        if (oa href="+code=p" class="sref">p->oa href="+code=width" class="sref">width ==<16) <103                oa href="+code=offs" class="sref">offs <<=<1; <104        else { <105                oa href="+code=offs" class="sref">offs <<=<2; <106                if ((oa href="+code=reg_nr" class="sref">reg_nr ==CMCNT) || (oa href="+code=reg_nr" class="sref">reg_nr ==CMCOR)) { <107                        oa href="+code=iowrite32" class="sref">iowrite32o/a>(oa href="+code=alue=" class="sref">alue=, oa href="+code=base" class="sref">base + oa href="+code=offs" class="sref">offs); <108                        return; <109                } <110        } <111o/a> <112        oa href="+code=iowrite16" class="sref">iowrite16o/a>(oa href="+code=alue=" class="sref">alue=, oa href="+code=base" class="sref">base + oa href="+code=offs" class="sref">offs); <113o/a>} <114o/a> <115o/a>static unsigned long oa href="+code=sh_cmt_get_counter" class="sref">sh_cmt_get_counter(structsh_cmt_priv *oa href="+code=p" class="sref">p, <116                                        int<*oa href="+code=has_wrapped" class="sref">has_wrapped) <117{ <118        unsigned long oa href="+code=v1" class="sref">a1, oa href="+code=v2" class="sref">v2, oa href="+code=v3" class="sref">v3; <119        into1, oa href="+code=o2" class="sref">o2; <120o/a> <121        oa href="+code=o1" class="sref">o1 =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CMCSR" class="sref">CMCSR) &p->oa href="+code=overflow_bit" class="sref">overflow_bit; <122 <123        ospa> class="comment">/* Make sure the timer alue= is stable. Stolen from acpi_pm.c */o/spa>
 <124        do { <125                oa href="+code=o2" class="sref">o2 =o1; <126                oa href="+code=v1" class="sref">a1 =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CMCNT" class="sref">CMCNT); <127                oa href="+code=v2" class="sref">v2 =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CMCNT" class="sref">CMCNT); <128                oa href="+code=v3" class="sref">v3 =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CMCNT" class="sref">CMCNT); <129                oa href="+code=o1" class="sref">o1 =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CMCSR" class="sref">CMCSR) &p->oa href="+code=overflow_bit" class="sref">overflow_bit; <130        } while (oa href="+code=unlikely" class="sref">unlikely((oa href="+code=o1" class="sref">o1 !=o2) || (oa href="+code=v1" class="sref">a1 > oa href="+code=v2" class="sref">v2 &&a1 < oa href="+code=v3" class="sref">v3) <131                          || (oa href="+code=v2" class="sref">v2 > oa href="+code=v3" class="sref">v3 &&v2 < oa href="+code=v1" class="sref">a1) || (oa href="+code=v3" class="sref">v3 > oa href="+code=v1" class="sref">a1 &&v3 < oa href="+code=v2" class="sref">v2))); <132 <133        *oa href="+code=has_wrapped" class="sref">has_wrapped =o1; <134        return oa href="+code=v2" class="sref">v2; <135} <136o/a> <137o/a> <138static voidsh_cmt_start_stop_ch(structsh_cmt_priv *oa href="+code=p" class="sref">p, intstart) <139{ <140        structsh_timer_config *oa href="+code=cfg" class="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa href="+code=dev" class="sref">dev.oa href="+code=platform_data" class="sref">platform_data; <141        unsigned long oa href="+code=flags" class="sref">flags, oa href="+code=vlue=" class="sref">alue=; <142 <143        ospa> class="comment">/* start stop register shared by multiple timer channels */o/spa>
 <144        oa href="+code=raw_spin_lock_irqsav=" class="sref">raw_spin_lock_irqsav=(&oa href="+code=sh_cmt_lock" class="sref">sh_cmt_lock, oa href="+code=flags" class="sref">flags); <145        oa href="+code=vlue=" class="sref">alue= =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=CM> =   "drivivers/clocksource/sh_cmt.c1#L46"1id"vL46" class="line" nam="vL46">< 46o/a> s="sref">p, intstart) <128<5"><145        oa href="+|= 1="+code=ocode=base" class="sref">base -=p->oa hrefe=sh_t>palue=; < 99        } else <100<5"><145        oa href="+s="sr= ~(1="+code=ocode=base" class="sref">base -=p->oa hrefe=sh_t>p =ref="driv1ers/clocksource/sh_cmt.c1#L51"15vL111" class="line" nam="vL111"><111o/a> inline voidsh_cmt_read(oa href="+code=p" class="sref">p, oa href="+code=flags" class="sref">flags, oa href="+code=CM> =rf="driverers/clocksource/sh_cmt.c1#L53"1id"vL53" class"line" nam="vL144"><144raw_spin_lock_irqsav=(&oa href="+code=sh_cmt_lock" class="sref">sh_cmt_lock, oa href="+code=flags" class="sref">flags); <135} < 95o/a> (&oa href="+cod"+code" class="sref">sh_cmt_start_stop_ch(structsh_cmt_priv *oa "line" nam="vLpriv" class="sre      unsigned long oa href+code=start" class="sref">start) <117{ (&oa hreh_cmt_lock" class="srer/a>->oa href="rl_offset" class="sref">channel_offset; < 19o/a> sh_cmt_privraw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr+code=flags" class="sref">flags); raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_lock" class="sres="ctflags); <142 <143
 (&oa hreclkd"+codemt_wrread" class="sref">sh_cmt_read(oef="+code=cfg" class=ss="sref">clk *oa hr+code=flags" class="sref">flags); < a>->oa href="rl_offscode=CMCOR" class="sref">CMCOR)) { <126t;o_erng oa href="+codt;o_ern class="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_loline" nam="vass=ng">"cannot/"+code ="vL1\n"hared b+code=flags" class="sref">flags); <126ern0ef">pdev-&gern0offset" class="sref">channel_offset; <135} < 19o/a> <143        COR a> clacode=r shared by multiple timer channels */o/spa>
 sh_cmt_priv *oa 0+code=flags" class="sref">flags); <142 <143, periodlasm"sre so/m>ximumrt st"> * shared by multiple timer channels */o/spa>
 <102        if (oa href="+code=p" class="sref">p->oa href="+code=wode=CMCOR" class="sref">CMCOR)) { sh_cmt_read(oef="+code=cfg" class=ss="sref">clk *oa hr+ / 51s" class="sref">offs <<=<2; < 76ef">inline voidsh_cmt_read(oa href="+code=p" class="sref">p, oa href="a 0x43+code=flags" class="sref">flags); <104        else { sh_cmt_read(oef="+code=cfg" class=ss="sref">clk *oa hr+ / 8code=flags" class="sref">flags); < 79ef">inline voidsh_cmt_read(oa href="+code=p" class="sref">p, oa href="a 0x01a4+code=flags" class="sref">flags); <110        } <111o/a> inline voidsh_cmt_read(oa href="+code=p" clef">reg_nr ==flags); inline voidsh_cmt_read(oa href="+code=p" cless="sref">p, oa href="a 0+code=flags" class="sref">flags); <114o/a> <143, MA  02111-1307  USAo/spa>
 nua>, as oa hr canistroper   dte 330, Bostn>, MA  02111-1307  USAo/spa>
 ;KHz),tithre's/on> class="+cod ode= 330, Bostn>, MA  02111-1307  USAo/spa>
  cla; two RCLK e=tota t">/necessarymeefom; if not, write to the Free Softwareo/spa>
  spa> clasa> eiithr e=shth */o/spa>
  spflec  d it WITHLSI's/actua>roper  lasral Public License for more details.o/spa>
 
  *WITHoa hr as ="citisal Public License for more details.o/spa>
         it's/process d properlymthre.  Tpa> willal Public License for more details.o/spa>
    RCLKx2nat m>ximumral Public License for more details.o/spa>
 < 18o/a>ospa> class="comment"> */o/spa>
 (&oa hreh_cmt="+cof="+code=p" clas(&oa hreh_cmthref="10cof="+code=p" clas(&oa hreh_cmt++wode=CMCOR" class="sref">CMCOR)) { alue= =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="++code=start" class="sref">start) flags); < 79u/linu="sref">p, u/linu_cmt_1+code=flags" class="sref">flags); <110        } <101o/a> ="sref">alue= =sh_cmt_read(oa href="+code=p" class="sref">p, oa href="++ode=CMCOR" class="sref">CMCOR)) { <103t;o_erng oa href="+codt;o_ern class="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_loline" nam="vass=ng">"cannot/ef="+ oa hr\n"hared b+code=flags" class="sref">flags); <1034/a>->oa href="rl_offs+co-am="vL103"><103ETIMEDOUs="sref">p, ETIMEDOUsoffset" class="sref">channel_offset; <126ern>has_wrappedern>offset" class="sref">channel_offset; <110        } <137o/a> <143 p8">< 18o/a>ospa> class="comment"> */o/spa>
 sh_cmt_priv *oa 1+code=flags" class="sref">flags); offs =<0; <126ern>has_wrappedern>offs:de=offs" class="sref">offs =<0; <143op ="vL1r shared by multiple timer channels */o/spa>
 sh_cmt_read(oef="+code=cfg" class=ss="sref">clk *oa hr+code=flags" class="sref">flags); <114o/a> <126ern0ef">pdev-&gern0offs:de=offs" class="sref">offs =<0; < 8r/a>->oa href="rl_offset" class="sref">channel_offset; < 87} < 88o/a> <138sh_cmt_start_stop_ch(structsh_cmt_priv *o+code=start" class="sref">start) CMCOR)) { <143 p8">< 18o/a>ospa> class="comment"> */o/spa>
 inl>static voidsh_cmt_priv *oa 0+code=flags" class="sref">flags); flags); <143
 inline voidsh_cmt_read(oa href="+code=p" class="sref">p, oa href="a 0+code=flags" class="sref">flags); < 46o/a> <143op ="vL1r shared by multiple timer channels */o/spa>
 sh_cmt_read(oef="+code=cfg" class=ss="sref">clk *oa hr+code=flags" class="sref">flags); < 19o/a> raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_lock" class="srefal"sref">alue=,fal"sa hr+code=flags" class="sref">flags); raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr+code=flags" class="sref">flags); < 87} flags); p, FLAG_CNLOCEVEssL121"(1="+code=oc0+code=start" class="sref">start) p, FLAG_CNLOCSOURCEL121"(1="+code=oc1+code=start" class="sref">start) p, FLAG_REPROGRAML121"(1="+code=oc2+code=start" class="sref">start) p, FLAG_SKIPEVEssL121"(1="+code=oc3+code=start" class="sref">start) p, FLAG_IRQCONTEXsL121"(1="+code=oc4+code=start" class="sref">start) <120o/a> <138p, <138sh_cmt_start_stop_ch(structsh_cmt_priv *oa href="+code=p" class="sref">p,  void *o+code=start" class="sref">start) CMCOR)) { <141  new_matdchannel_offset;                                 unsigned long oa href="ef="+code=cfg" class="sref">cfg =channel_offset;                           /linu="sref">p, /linu_cmt="+code=offs" class="sref">offs =<0; <141  now unsigned long now_cmt="+code=offs" class="sref">offs =<0; <133        *oa href="+code=has_wrode=offs" class="sref">offs =<0; < 19o/a> sh_cmt_start_stop_cnsigned long oa href="+code=sh_cmt_get_counter" cread" class="sref">sh_cmt_read(oa s="sref">raw_spin_lo               int<*oa href="+code=has_wraode=offs" class="sref">offs =<0; cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLFLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121;="line" nam="vL143"><143
 <142                int<*oa href="+code=has_wraode=CMCOR" class="sref">CMCOR)) { <143
  claral Public License for more details.o/spa>
 
 
 <128as="sref">cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLFLAG_SKIPEVEss="sref">p, FLAG_SKIPEVEssL121ode=offs" class="sref">offs =<0; <108                        return; <110        } <101o/a> absolu void *o+code=start" class="sref">start) <103now unsigned long now_cmt="+code=offs" class="sref">offs =<0; <114o/a> <124        do { <143 cla hardware,hared by multiple timer channels */o/spa>
 
 < 79new_matdsh_cmt_startnow unsigned long now_cmt="+code=base" clas      unsigned long oa href="e"+code=base" clas/linu="sref">p, /linu_cmtode=offs" class="sref">offs =<0; new_matdbase = *o+code=start" class="sref">start) < 79new_matdsh_cmt_starts="sref">base = *oode=offs" class="sref">offs =<0; <142 <103ef">inline voidsh_cmt_read(oa href="+code=p" clef">reg_nr ==< 79new_matdoffs =<0; <114o/a> sh_cmt_start_stop_cnsigned long oa href="+code=sh_cmt_get_counter" cread" class="sref">sh_cmt_read(oa s="sref">raw_spin_lo               int<*oa href="+code=has_wraode=offs" class="sref">offs =<0;                int<*oa href="+code=has_wrhref="+code=ne" nam="vL102">new_matdbase = *o+aode=CMCOR" class="sref">CMCOR)) { <143/=OR code mustistrcausommentospat_counterred by multiple timer channels */o/spa>
 
  claral Public License for more details.o/spa>
 
 
 <128as="sref">cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLFLAG_SKIPEVEss="sref">p, FLAG_SKIPEVEssL121ode=offs" class="sref">offs =<0; flags); <110        } < 46o/a>                int<*oa href="+code=has_wraode=CMCOR" class="sref">CMCOR)) { <143/=OR
 
 
 
 base = *o="+f">sh_cmt_startnew_matdchannel_offset; flags); <110        } <137o/a> <143
 now unsigned long now_cmt=de=ocode=base" classnew_matdCMCOR)) { <143 class="commenbelow matd
  m>  s      we wln't miss/any matd
 
 
 
 base = *o="+f">sh_cmt_startnew_matdchannel_offset; flags); <110        } < 88o/a> <143spat_count ha> spachedsass="comgreaclahared by multiple timer channels */o/spa>
 sclas *anew matd
 
 
 
 
 /linu="sref">p, /linu_cmt+code=start" class="sref">start) p, /linu_cmt="+code=o= 1code=flags" class="sref">flags); < 99        } else p, /linu_cmt="+1code=flags" class="sref">flags); < 19o/a> p, /linu_cmt+code=start" class="sref">start) < 79t;o_warn="sref">p, /lo_warner" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_loline" nam="vass=ng">"g  wm="vL/linu\n"hared b+code=flags" class="sref">flags); <142 /linu="sref">p, /linu_cmt+code=flags" class="sref">flags); <135} < 95o/a> __e=sh_cmaet_next="sref">p, __e=sh_cmaet_nexter" css="sref">sh_cmt_start_stop_ch(structsh_cmt_priv *oa "line" nam="vLe" nam="vL102">/li>dev.oa href=/li>d_cmt+code=start" class="sref">start) <117{ /li>dev.oa href=/li>d_cmt=ref="+code=v3" classs="sref">base = *o+code=start" class="sref">start) < 79t;o_warn="sref">p, /lo_warner" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr_loline" nam="vass=ng">"/li>d "> *of range\n"hared b+code=flags" class="sref">flags); <120o/a> cfg =sh_cmt_start/li>dev.oa href=/li>d_cmtcode=flags" class="sref">flags); inl="vL1_evam=de=ogram_" nifu="sref">p, <138sh_cmt_priv *oa 0+code=flags" class="sref">flags); <135} <114o/a> <138p, e=sh_cmaet_nexter" css="sref">sh_cmt_start_stop_ch(structsh_cmt_priv *oa "line" nam="vLe" nam="vL102">/li>dev.oa href=/li>d_cmt+code=start" class="sref">start) <117{ <141  f">sh_cmt_lock, oa href="code=flags" class="sref">flags); < 88o/a> raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); p, __e=sh_cmaet_nexter" cread" class="sref">sh_cmt_read(oa href="+code=p" /li>dev.oa href=/li>d_cmt+code=flags" class="sref">flags); raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); < 87} flags); < 79rqsre><10_t="sref">p, rqsre><10_tL121"f">sh_cmt_start_stop_ciountrupt>(structp, rqsef="a ="linpriv" class="sre/lo_i     int<*oa hre/lo_i _cmt+code=start" class="sref">start) <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_start/lo_i     int<*oa hre/lo_i _cmtcode=flags" class="sref">flags); <137o/a> <143
 sh_cmt_read(oa href="+code=p" class="sref">p, oa href="a "line" nam="vL1<138alue= =sh_cmt_read(oa href="+code=p" class="sref">p, oa href=")href="="line" nam="vL1as="sref">cfg =flags); <120o/a> <143<1at_count to beginnwith*if/"+codedte 330, Bostn>, MA  02111-1307  USAo/spa>
 , MA  02111-1307  USAo/spa>
 
 <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=start" class="sref">start) < 76<102        if (oa href="+code=p" clatotal_e=tota102        total_e=tota"vL76+"+f">sh_cmt_starts="sref">base = *o=++1code=flags" class="sref">flags); <137o/a> <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121++code=start" class="sref">start) cfg =sh_cmt_starts="sref">base = *oode=offs" class="sref">offs =<0; <120o/a> cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLFLAG_IRQCONTEXs="sref">p, FLAG_IRQCONTEXsL121ode=offs" class="sref">offs =<0; <142 <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121aode=CMCOR" class="sref">CMCOR)) { <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_SKIPEVEss="sref">p, FLAG_SKIPEVEssL121+aode=CMCOR" class="sref">CMCOR)) { <102        if (oa href="+code=p" clac      int<*oa hrechas_wr.f="+code=p" clas cl unsigned long s cloffs="= ="line" nam="vLCNLOC_EVT_MODE_ONESHOs="sref">p, oNLOC_EVT_MODE_ONESHOsL121aode=CMCOR" class="sref">CMCOR)) { cfg =sh_cmt_starts="sref">base = *oode=offs" class="sref">offsR)) { cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLFLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121;de=offs" class="sref">offsR)) { < 87} < 19o/a> cfg =raw_spin_loss="sref">cfg =flags); < 87} < 87} flags); <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="= ~"line" nam="vL1FLAG_SKIPEVEss="sref">p, FLAG_SKIPEVEssL121code=flags" class="sref">flags); < 95o/a> <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121+ode=CMCOR" class="sref">CMCOR)) { <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="= ~"line" nam="vL1FLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121;de=offs" class="sref">offsR)) { <128ef">inl="vL1_evam=de=ogram_" nifu="sref">p, <138sh_cmt_priv *oa 1+code=flags" class="sref">flags); < 19o/a> <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121a9" class="line" nam="vL19">< 19o/a> <102        if (oa href="+code=p" clac      int<*oa hrechas_wr.f="+code=p" clas cl unsigned long s cloffs="= ="line" nam="vLCNLOC_EVT_MODE_SHUTDOWN="sref">p, oNLOC_EVT_MODE_SHUTDOWNL121a9" class="line" nam="vL19">< 19o/a> <102        if (oa href="+code=p" classtd<_      unsigned long sstd<_     > *o="f="+code=cfg" class="sref">cfg =start) <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="= ~"line" nam="vL1FLAG_REPROGRAM="sref">p, FLAG_REPROGRAML121;de=offs" class="sref">offsR)) { < 87} < 95o/a> <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="= ~"line" nam="vL1FLAG_IRQCONTEXs="sref">p, FLAG_IRQCONTEXsL121ode=offs" class="sref">offs =<0; <137o/a> < 8IRQ_HANDLED="sref">p, IRQ_HANDLEDL121ode=offs" class="sref">offs =<0; < 87} <120o/a> p, <138sh_cmt_start_stop_ch(structsh_cmt_priv *oa "line" nam="vLe" nam="vL102">oa h_cmt_lock, oa hL121a9" class="line" nam="vL19">< 19o/a> CMCOR)) { ->oa href="rl_offs="+code=offs" class="sref">offs =<0; <141  f">sh_cmt_lock, oa href="code=flags" class="sref">flags); < 95o/a> aw_spin_l"vL1_irqav="_cmt_lock, aw_spin_l"vL1_irqav="er" cs="sref">raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); <137o/a> <102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="=ne" nam="vL102">FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121"|="line" nam="vL1FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+++code=start" class="sref">start) ->oa href="rl_offs="+f">sh_cmt_start_stop_c"+code>(structsh_cmt_priv *oa s="sref">raw_spin_loss="sref">cfg = voidflags); <120o/a> ->oa href="rl_offs+code=start" class="sref">start) sh_cmt_startoua>->oa href="oua clacode=flags" class="sref">flags); as="sref">cfg =sh_cmt_lock, oa href="+|= ="line" nam="vLoa h_cmt_lock, oa hL121code=flags" class="sref">flags); <114o/a> <143 cl"> *"lin wefockevam=npshared by multiple timer channels */o/spa>
 , oa hL121="f="+code=cfg" claFLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+href="+code=n!ne" nam="vL102"><102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121a++code=start" class="sref">start) p, __e=sh_cmaet_nexter" cread" class="sref">sh_cmt_read(oa href="+code=p" s="sref">base = *o+code=flags" class="sref">flags); sh_cmt_startoua>->oa href="oua cla:ode=flags" class="sref">flags); raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); <120o/a> < 8r/a>->oa href="rl_offscode=flags" class="sref">flags); < 87} flags); <138cfgsh_cmt_start_stop_ch(structsh_cmt_priv *oa "line" nam="vLe" nam="vL102">oa h_cmt_lock, oa hL121a9" class="line" nam="vL19">< 19o/a> <117{                           f">sh_cmt_lock, oa href="code=flags" class="sref">flags); <141  f_cmt_lock, oef="code=flags" class="sref">flags); < 88o/a> raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags <120o/a> sh_cmt_starts="sref">base =sh_cmt_lock, oa href="+ref="=ne" nam="vL102">FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121"|="line" nam="vL1FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=flags" class="sref">flags sh_cmt_lock, oa href="+ref="= ~"line" nam="vL1oa h_cmt_lock, oa hL121code=flags" class="sref">flags); flags); , oef="=ref="+code=!ne" nam="vL102"><102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="=ne" nam="vL102">FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121"|="line" nam="vL1FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+++code=start" class="sref">stgs); (structsh_cmt_read(o+code=flags" class="sref">flags < 46o/a> <143 cl"> *to ssximum="lionly m="vL46"><  lef=npshared by multiple timer channels */o/spa>
 , oa hL121="f="+code=cfg" claFLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121aoref="+code=ne" nam="vL102"><102        if (oa href="+code=p" claf">sh_cmt_lock, oa href="+ref="="line" nam="vL1FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121++code=start" class="sref">stgs); < 79__e=sh_cmaet_next="sref">p, __e=sh_cmaet_nexter" cread" class="sref">sh_cmt_read(oa href="+code=p" s="sref">base = *o+code=flags" class="sref">flags); <120o/a> raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); < 87} flags); sh_cmt_start_stop_ch(structsh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ < 8contae/sr_of_cmt_lock, contae/sr_ofer" cread" class="srcs>(structsh_cmt_start_stop_ch(struct< 79cs>(structflags); < 87} < 88o/a> < 79e=tot_t="sref">p, e=tot_t"vL8+f">sh_cmt_start<138< a>alue= =< a>alumt_wrss="sref">sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startcs_to_e=sh_c>(struct< 79cs>(structflags);                           f">sh_cmt_lock, oa href="a nam="vL79">< 79aw__cmt_lock, aw_L121code=flags" class="sref">flags);                                 unsigned long      > *oode=offs" class="sref">offsR)) { offsR)) { < 95o/a> aw_spin_l"vL1_irqav="_cmt_lock, aw_spin_l"vL1_irqav="er" cs="sref">raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags       unsigned long      > *o="+f">sh_cmt_starts="sref">base =        total_e=tota"vL7code=flags" class="sref">flags < 79aw__cmt_lock, aw_L121="+f">sh_cmt_start_stop_cnsigned long oa href="+code=sh_cmt_get_counter" cread" class="sref">sh_cmt_read(oa s="sref">raw_spin_lo               int<*oa href="+code=has_wraode=offs" class="sref">offs =<0; < 19o/a> p, unoikeluer" cread" class="sr               int<*oa href="+code=has_wraa9" class="line" nam="vL19">< 19o/a> < 79aw__cmt_lock, aw_L121=+"+f">sh_cmt_starts="sref">base = *o=++1code=flags" class="sref">flags); raw_spin_loss="sref">cfg =cfg< 79f">sh_cmt_lock, oa href="+code=flags" class="sref">flags); flags); < 8      unsigned long      > *o=+ nam="vL79">< 79aw__cmt_lock, aw_L121code=flags" class="sref">flags); < 87} < 46o/a> < a"+code>(struct< a"+codemt_wrss="sref">sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ ->oa href="rl_offscode=flags" class="sref">flags); sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startcs_to_e=sh_c>(struct< 79cs>(structflags); flags); p, WARN_ONer" cread" class="sref">sh_cmt_read(oa href="+code=p" clacsa"+code     int<*oa hrecsa"+code L121acode=flags" class="sref">flags); flags); sh_cmt_starts="sref">base =        total_e=tota"vL7="+code=offs" class="sref">offs =<0; < 95o/a> a/a>->oa href="rl_offs="+f">sh_cmt_start_stop_catart="sref">p, <138sh_cmt_read(oa href="+code=p" FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=flags" class="sref">flags ->oa href="rl_offs+ode=CMCOR" class="sref">CMCOR)) { < 79__="vL188">< aupdatefreq_hz="sref">p, __="vL188">< aupdatefreq_hzer" cread" class="srcs>(structsh_cmt_starts="sref">base = voidflags); cfg =sh_cmt_starts="/a> voidflags); < 87} < 8r/a>->oa href="rl_offscode=flags" class="sref">flags); < 87} flags); <138< adiscode>(struct< adiscodemt_wrss="sref">sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startcs_to_e=sh_c>(struct< 79cs>(structflags); <137o/a> < 79WARN_ON="sref">p, WARN_ONer" c!de=vlue=" classef">sh_cmt_read(oa href="+code=p" clacsa"+code     int<*oa hrecsa"+code L121acode=flags" class="sref">flags); < 19o/a> sh_cmt_start_stop_catoss="sref">cfgsh_cmt_read(oa href="+code=p" FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=flags" class="sref">flags cfg =sh_cmt_startfalss>(structflags); < 87} flags); <138< asuspenue= =< asuspenumt_wrss="sref">sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startcs_to_e=sh_c>(struct< 79cs>(structflags); <137o/a> < 79_stop_catoss="sref">cfgsh_cmt_read(oa href="+code=p" FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=flags" class="sref">flags raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr+code=flags" class="sref">flags < 87} flags); <138< aresume>(struct< aresumemt_wrss="sref">sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(struct< 19o/a> <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startcs_to_e=sh_c>(struct< 79cs>(structflags); < 95o/a> pm_genpd_syscore_poweron="sref">p, pm_genpd_syscore_poweroner" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr+code=flags" class="sref">flags _stop_catart="sref">p, <138sh_cmt_read(oa href="+code=p" FLAG_CNLOCSOURCE="sref">p, FLAG_CNLOCSOURCEL121+code=flags" class="sref">flags < 87} < 19o/a> flags>(structflagsmt_wrss="sref">sh_cmt_start_stop_ch(structsh_cmt_priv *o,9" class="line" nam="vL19">< 19o/a> sh_cmt_priv(oa /a>                          r clnh_cmt_lock, r clnhL121a9" class="line" nam="vL19">< 19o/a> CMCOR)) { sh_cmt_startsref">flags>(structflags_cmt_priv" class="srecs>(structraw_spin_loss="sref">cfg =(structflags <114o/a> (structsh_cmt_priv(o="+f">sh_cmt_startn_cm">sh_cmt_priv(ocode=flags" class="sref">flags cs>(struct, r clnhL121="+f">sh_cmt_startr clnh_cmt_lock, r clnhL121code=flags" class="sref">flags cs>(struct =alumt_w="+f">sh_cmt_start_stop_c="vL188">< a>alue= =< a>alumt_wcode=flags" class="sref">flags < 79cs>(struct(structsh_cmt_start_stop_c="vL188">< a"+code>(struct< a"+codemt_wcode=flags" class="sref">flags (structsh_cmt_start_stop_c="vL188">< adiscode>(struct< adiscodemt_wcode=flags" class="sref">flags sh_cmt_startcs>(struct =sh_cmt_start_stop_c="vL188">< asuspenue= =< asuspenumt_wcode=flags" class="sref">flags (structsh_cmt_start_stop_c="vL188">< a>asume>(struct< aresumemt_wcode=flags" class="sref">flags cfgsh_cmt_startCNLOCSOURCE_MASKs="sref">cfg          ) * 8+code=flags" class="sref">flags cs>(structsh_cmt_lock, oa href="+= ="line" nam="vLCNLOC_SOURCE_IS_CONTINUOUSs="sref">cfgflags <114o/a> pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr,s"line" nam="vss=lnh_>"us   as ="vL1 20"><1\n"hared b+code=flags" class="sref">flags < 46o/a> <143
 < 79c"vL188">< aregister_hz="sref">p, c"vL188">< aregister_hzmt_wrnam="vL79">< 79cs>(structflags); offs =<0; < 87} flags); sh_cmt_start_stop_ch(structsh_cmt_startsref"_evam=dt;oigs>(struct< 19o/a> <117{ < 8contae/sr_of_cmt_lock, contae/sr_ofer" cread" class="srced>(structsh_cmt_start_stop_ch(struct< 79c      int<*oa hrechas_wr+code=flags" class="sref">flags); < 87} < 46o/a> <138p, <138sh_cmt_start_stop_ch(structsh_cmt_priv *o,s=ref="+code=p" clasperiodic">sh_cmt_priv< 19o/a> <117{ sh_cmt_startsref"_evam=dt;oigs>(structraw_spin_loss="sref">cfg =(structflags); <120o/a> p, <138sh_cmt_read(oa href="+code=p" FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121acode=flags" class="sref">flags); flags); <143
 <114o/a> (structp, <1iftL121="+32code=flags" class="sref">flags); ced>(structp, multef="+= ="line" nam="vLdiv_sc">sh_cmt_privsh_cmt_read(oa href="+code=p" clara void void< 79c      int<*oa hrechas_wra href="+code=p" clashift="sref">p, <1iftL121acode=flags" class="sref">flags); ced>(struct(struct *o="+f">sh_cmt_startcref"evam=dt;lta2ns>(structsh_cmt_read(oa href="+code=p" classx_matd<_      unsigned long ssx_matd<_     > *oa nam="vL79">< 79c      int<*oa hrechas_wr+code=flags" class="sref">flags); < 79ced>(struct(struct *o="+f">sh_cmt_startcref"evam=dt;lta2ns>(struct< 79c      int<*oa hrechas_wr+code=flags" class="sref">flags); < 19o/a> sh_cmt_priv< 19o/a> < 79<138p, <138sh_cmt_read(oa nne" nam="vL102"><102        if (oa href="+code=p" clara void< 79HZa> void< 79HZa> voidflags); flags); < 79<138p, <138sh_cmt_read(oa read" class="sref">sh_cmt_read(oa href="+code=p" classx_matd<_      unsigned long ssx_matd<_     > *o+code=flags" class="sref">flags); < 87} < 95o/a> <138sh_cmt_startsref"_evam=ds cl unsigned long ="vL1_evam=ds clmt_wef">sh_cmt_starts cl unsigned long s cloffs,9" class="line" nam="vL19">< 19o/a> sh_cmt_startsref"_evam=dt;oigs>(struct< 19o/a> <117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startced_to_e=sh_c>(struct< 79c      int<*oa hrechas_wr+code=flags" class="sref">flags); <120o/a> <143
 (structCMCOR)) { flags); p, CNLOC_EVT_MODE_ONESHOs"vL5:ode=flags" class="sref">flags); cfgsh_cmt_read(oa href="+code=p" FLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121acode=flags" class="sref">flags); flags); flags); flags); < 87} <120o/a> CMCOR)) { flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdev->oa hr,s"line" nam="vss=lnh_>"us   for aeriodic ="vL1 evam=s\n"hared b+code=flags" class="sref">flags < 95o/a>  =p, CNL"55d"vL97" classdefault:ode=flags" class="sref"e=offs" c5ass="sref">offs =<0;5flags); (oa href="+code=p" 5LAG_C56LOCEVEss="sref">p, FLAG_CNLOCEVEODIC"vL5:ode=flags" class="sref">flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdevsref">flash_cmt.c4#L67"46vL107" c5ass="5in!de=vlue=" classr/a>->oa href="rhared b+code=flags" class="sref">flags < 95o/a> pdevflagst_starts="sref">base5=sh_cmt_shrefCNLOC_EVT_MODE_PERIODIC"vL5:odeSHUTDOWL67"47vL137" claERIODIC"vL5:odeSHUTDOWLive5ers/clocksource/sh_cmt.c5#L54"55vL104" cla class="s5ef">flags); ->oa href="rhared b5:ode=flags" class="sref">flags); cfgflags); 5a h4r57ICa> void< 87}5flags>(structfla57HOs="sref">p, CNL"55d"vL97" classdefault:ode=flags" class="sref" class="l5ne" nam="vL19">< 19o/a> 5a h4r5f="driv4ers/cl58"55d"vL98" class="line" breakcode=flags"artcs_to_5=sh_c>(struct< 79cs>(structflags);55h_cmt_read(oa href="5code=57="drive4s/clclocksource/sh_cmt.c4#L56"45d"vef="drie=flags" class="sref">flag45d"vef="drie=flse5srs/clocksource/sh_cmt.c50121a h>->o_infoer" ca hL1_evam=ds clmt_wrenumef">sh_cmt_startsref"_evde=flags"5class="sref">flags);5< 19o/a> sh_cmt_startsref"_evam=sh_cmt_re5d(oa href="+code=p" 5LAG_C5LOCSOUvL120"><120o/a> <143<117{ sh_cmt_start_stop_ch(structsh_cmt_priv *o="+f">sh_cmt_startce=flags" 5lass="sref">flags); 5a h4r5f="driv4ers/clocksource/sh_cmt.c4#L82"48vL13275 class="l5ne" nam="vL87">< 87}5(structflags); sh_cmt_priv *o="+f">sh_cmt_startcetartsref5>flags>(structfla58HOs="sref">p< 19o/a> , oa hL121="f="+code=cfg" claFLAG_CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL1IRQL121EXe" n"line" nam="vL1f=IRQL121EXeive5s         ss="sref">sh_cmt_startsref"_evam=sclass="l5ne" nam="vL19">< 19o/a> 5a h4r58NLOCEVEss="sref">p< 19o/a> , oa hL121="f="+codee=flef">p, <138p, ->o_infoer" ca hL1_ef="+ref">sh_cmt_priv *o="+f">sh_cmt_startcertcs_to_5=sh_c>(struct voidflags);5->oa href="rhared bseode=flags" class="sref">flags); ->o_infoer" ca hL1_ef="+sref">sh_cmt_priv *o="+f">sh_cmt_startcelassef">5d(oa href="+code=p" 5LAG_C58fa nam="vL79">< 79c      int<*oa hrechas_wr+co"+code=p"5class="sref">p->o5 href59f="driv4ers/c< 79cs>(structflags 5a h4e5f="drinam="vL79">< 79cs>(struct< 87}5p, FLAG_CNLOCEVEssL121acostartsref5>flags>(structfla5s_cmt_ve5s/clocksource/sh_cmt.c#L526" i52d"vL46" clas">sh_cmt_startcs>(structsh_c< 19o/a> sh_cmt_startsref"_evam= class="l5ne" nam="vL19">< 19o/a> 5a h4r5f="drivL120"><120o/a> flags sh_cmt_start_stop_ch(structpm_genpd_syscore_poweron="sref">p, pm_genpd_syscore_poweroner" cs="sref">raw_spin_loss="sref">cfg =flags);5< 79cs>(structp->o5 href59mt_wrnam="vL79">< 79cs>(struct(oa href="+code=p" 5LAG_C5LOCSOUve5s/clocksource/sh_cmt.c#L526" i52d"vL46" clas="line" nam="vL1cs>(struct< 19o/a> sh_cmt_startsref"_evam= lassef">5lass="sref">flags 5a h4r5f="drivL120"><120o/a> < 87}6< 95o/a> sh_cmt_start_stop_ch(structpm_genpd_syscore_poweron="sref">p, pm_genpd_syscore_poweroner" cs="sref">raw_spin_loss="sref">cfg =(struct< 79cs>(structsh_cmt6priv(oa /a>     6     60NLOCEVEss="sref">p, FLAG_CNLOCEVEssL121ac6 class="l6ne" nam="vL19">< 19o/a> 6a h5e60_cmt_ve5s/clocksource/sh_cmt.c#L526" i5 <138p, <13VEss="sref">p, FLAG_CNLOCEVEssL121ac6 4lass="l6ne" nam="vL19">< 19o/a> 6 60   for aeriodic ="vL111111111111111111111111,9" class="line" nam="vL19">< 19o/a> flags6sh_cmt_priv(6="+f">sh_cmt_sksource/sh_cmt.c#L528" i52vL128" class="line" nam="vL117"><117{ sh_cmt_startsref"_evam=dt;oigs>(struct, r clnhL621="+60mt_wrnam="vL79">< 79cs>(struct6h_cmt_start_stop_c="vL186">< a6alue= =(structraw_spin_loss="sref">cfg =6hass="sref">flags 6a"+co60fa nam="vL79">< 79c      int<*oa hrechas_wr+c6f">sh_cmt6start_stop_c="vL188">< a6iscod6>(struct(structsh_cmt6start_stop_c="vL188">< a6uspen6e= =);FEATCMCOR" class="sref">CMCOR)) { FEATCMCOR" cls="="+code=p" clacs>(structsh_cmt6t_start_stop_c="vL188"><6a>asu6e>(struct);FEATC=flags" class="sref">flags);FEATC=flags"s="="+code=p" clacs>(structc6g ode=sh_cmt_priv" class=" channels */o/spa>
 ags cs>(struct(st0t;oa href="+code=pdev" class="sref">pdevflags6 void); _ocksoe" nam="vL1cs>(s); _ocksoe/sh_cmt.c5#L49"54d"vLc4#L56"45d"vef="drie=flags" class="sref">flag45d"vef="drie=flspdev->oa hr,s"line" nam=6vss=l61ode=p" clashift="sref">p, <1iftL121="+32code=flags" class="sref">flags<138< 95o/a> pdevflags6p, <1iftL121acode=flags" class="sref">flagags sh_cmt_startcs>(structsh_cpdev6<143pdev6, c"vL188">< aregist6r_hzm61fa nam="vL79">< 79c      int<*oa hrechas_wr+c6sref">fla6s); flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg =p->oa href="+code=pdev" class="sref">pdevoffs =<0; 6a h5e62= =<1ocksos< (structsh_cmt_priv *o="+f">sh_cmt_start6 class="l6ne" nam="vL87">< 87}6sh_cmt_startfalss>(struct(6truct< 19o/a> 6a h5e62f="driv4ers/clocksource/sh_cmt.c4#L99"49d"vL19e" nam="vL1cs>(struct< <138p, <131,9" class="line" nam="vL19">< 19o/a> (structp, CNLLLLLLLLLLLLe5srs/clocksource/sh_cmt.c501oa hrecedL1506" i50d"vL76" classoa hrecedL1506" i="driv4ers/clocksource/sh_cmt.c4#L82"48vL13276 "+code=p6lass="sref">flags); 6a h5e62NLOCEVEss="sref">p06" i50d"vL76" classoa hr*/o/spa>06" im="vL13333333333333333char_priv" class="sreh_6 class="l6ne" nam="vL87">< 87}6sh_cmt_priv *o,s=r6f="+c62    , gets/upcksource/sh_cmt.c#L5ve5ers/clocksource/sh_cmt.c5#L63"563"vL5rive5ve5ers/clocksourive5clocks= oa hrecsurce/sh_cmt.c#L5ve5ers/clocksource/sh_cmt.c5#L63"563"vL5"sref">p, <1386ne" nam="vL19">< 19o/a> 6a h5e62ef="+code=p" clara voidflagsp, <1386aw_spin_loss="sref">cfg<6a> =<63(struct voidflags);6sh_cmt_privflagsp, <138flagssh_cmt_priv *o="+f">sh_cmt_start6">sh_cmt_6ead(oa href="+code=p6 FLAG6CNLOCEVEss="sref">p, FLAG_CNLOCEVEssL121ac6de=flags"6class="sref">flags);6aflagsp, <138p, flagsp, <138sh_cmt_priv *o="+f">sh_cmt_start6"class="l63"><143flags); sh_cmt_priv *o="+f">sh_cmt_start6 multiple6timer channels */o/spa>
6(struct< 69c      int<*oa hrechas_6ra hr63LOCEVEss="sref">p, FLAG_CNLOCEVE526" i5 p, <131ass="line" nam="vL19">< 19o/a> sh_cmt_priv *o="+f">sh_cmt_start6 ass="sre6unsigned long ssx_matd<_6    >63"drive4s/clocksource/sh_cmt.c#L437" i43d"vL476>(struct<6a hrecref"evam=dt;lta2ns6t_wr0639de=p" clashicksource/sh_cmt.c#Loa hr*/o/spa>06" i50d"vL76" classoa hr*/o/spa>06" im="vL13333333333333333char_priv" class="sreh_6de=flags"6class="sref">flags);6p, <131ass="line" nam="vL19">< 19o/a> 06" im="vLref">sh_cmt_priv *o="+f">sh_cmt_start6/sh_cmt.c6L540" i54d"vL70" class"l6n="+c64"drive5s/clocksource/sh_cmt.c#L520" i52vL12076m="vL79">6 79HZa> void< < 79cs>(structflags); flags); 6a h5e6="driviv4ers/clocksource/sh_cmt.c4#L99"s 79de=flags" class="sref">f 79d<138p, <131ffs,9" class="line" naplatform=lass="line" nam="vL11platform=lass="><138L13333333333333333char_priv" class="sreh_6dp" clace6ne" nam="vL87">< 87}6sh_cmt_sffs,9" class="line" na7" timef="onfii50d"vL76" class7" timef="onfiief="drive5s/clocksourcfi50d"vL76" classofrs/clocksource/sh_cmt.c2" class"line" n"am="vL79">< 79t;o_infoef">pdev->o_infoer" cs="sr.class="line" naplatform=la h>->o_infoer"platform=la h="srref">sh_cmt_priv *o="+f">sh_cmt_start6dt;oigs>(6tructsh_cmt_sffs,9" class="line" nareriv" ce" nam="vL1cs>(reriv" cef="drive5s/clocksourc; sh_cmt_priv *o="+f">sh_cmt_start6d(struct<6ne" nam="vL19">< 19o/a> 6a h5e6="drive5ers/clclocksource/sh_cmt.irqpdev(structpdevflags);6(structraw_spin_loss="sref">cfg =(structaflagsocksource/sh_cmt.c2" class"line" n"am="vL79">f">raw_spin_loss="sref">cfg =p<120o/a> sh_cmt_6ead(oa href="+code=p6 FLAG6CNLOCEVEss="sref">pflags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdevflagspgotoaef="+cod="vL188er90>->o_infoer"er9079">f">raw_spin_loss="sref">cfg =(6gs); < 79c      int<*oa hrechas_wr+c6 class="s6ef">flags); 3" i543"vL52" class"line" n"am="vL79">t;oa href="+code=pdev" class="sref">pdev< 87}6(struct(struct3" i543"vL52" claIORE="vLcs>(EMlass"line" n"amIORE="vLcs>(EMlass="0t;oa href="+code=pdev" class="sref">pdev void<120o/a> flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdev =p, CNLgotoaef="+cod="vL188er90>->o_infoer"er9079">f">raw_spin_loss="sref">cfg =offs =<0;6(oa href="+code=p" 6LAG_C66mt_wrnam="vL79">< 79cs>(structsref">fl6sh_cmt.c4#L67"46vL107" c6ass="66    , gets/updateds=r ="+co"irq3"0t;oa href="+code=pdev" class="sref">pdevbase6=<120o/a> flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdevflags); shgotoaef="+cod="vL188er90>->o_infoer"er9079">f">raw_spin_loss="sref">cfg =flags); 6a h4r67="driv4ers/clocksource/sh_cmt.c4#L82"48vL13276l->oa 6ne" nam="vL87">< 87}6<120o/a> fla67="drive5s/clocksource/sh_cmtCflagsflagaclass="sref">flags(reriv" caa hra>(structraw_spin_loss="sref">cfg =< 19o/a> 6a h4r67ode=p" clashicksource/sh_cmt.c#LCflags<120o/a> p, FLAG_CNLOCEVEODICer9e" nam="vL1cs>(ODICer9">flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdevflags);6gotoaef="+cod="vL188er90>->o_infoer"er9079">f">raw_spin_loss="sref">cfg =(oa href="6code=67e/sh_cmt.c5#L58"55d"vL98" class="line" breakcode=flags6de=flags"6class="sref">flags);6(oa href="+code=p" 6LAG_C68f="driv5ers/clocksource/sh_cmt.c5#L50"requesl irq usne" f 79dairq() (too early=(struct<114o/a> <11">flags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdevflags); 6a h4r68OCSOURCE_MASKmt_wrsizeof(/a>aflagsf">raw_spin_loss="sref">cfg =< 87}6flagsraw_spin_loss="sref">cfg =flags>(structfla68="drive5s/clocksource/sh_cmtCflagsraw_spin_loss="sref">cfg =< 19o/a> 6a h4r68NLOCEVEss="sref">pp, FLAG_CNLOCEVEIRQF_IRQPOLL138raw_spin_loss="sref">cfg =(struct< 79cs>(structflags);6(oa href="+code=p" 6LAG_C689"drive5s/clocksource/sh_cmtCflags  flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdevp->o6 href69f="driv4ers/ccksource/sh_cmt.c#LIS_ERR67"47vL137" claIS_ERRa>(struct <120o/a> flags 6a h4e69e=p" clasperiodic">sh_cmt_privflags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdev< 87}6->oa href="rr0" class7" class=rels(struct pdevflags>(structfla69ICa> void raw_spin_loss="sref">cfg =< 19o/a> 6a h4r69="drive4ers/c58"55d"vL98" class="line" breakcode=flags6artcs_to_6=sh_c>(structflags);6(struct<120o/a> p->o6 href69LOCEVEss="sref">p, FLAG_CNLOCEVE5ve5ers/clocksource/sh_cmt.c5#L63"563"vL5rive5ve5ers/clocksourive5clocks 16f">raw_spin_loss="sref">cfg =(oa href="+code=p" 6LAG_C69n!de=vlue=" classr/a>->oa href="r5ve5ers/clocksource/sh_cmt.c5#L63"563"vL5oss=flow_bi" class7" class=oss=flow_bi"clocks 0x8(struct6lass="sref">flags 6a h4r69ef="+code=p" clara voidflags(struct< 87}7<120o/a> sh_cmt_privflags< 87}7     702!de=vlue=" classr/a>->oa href="r5ve5ers/clocksource/sh_cmt.c5#L63"563"vL5oss=flow_bi" class7" class=oss=flow_bi"clocks 0x8(0(struct(struct voidflags(struct< 19o/a> 7 70="drive4ers/c58"55d"vL98" class="line" breakcode=flags7de=flags"7class="sref">flags7sh_cmt_priv(7="+f">sh_cmt_s->oa href="rr0" class7" class=rels<114o/a> flags); < 79t;o_infoef">pdev->o_infoer" cs="srtiv4ers/clocksource/sh_cmt.c4#L82"48vL13277p" clar c7nh_cmt_lock, r clnhL721="+70wef">sh_cmt_starts cl unsigned long"sref">flagsflags7h_cmt_start_stop_c="vL187">< a70n!de=vlue=" classr/a> unsigned long"sref">flagsflags06" i50d"vL76" classoa hr*/o/spa>06" im="vLref">sh_cmt_priv *o="+f">sh_cmt_start7t9w="+f">7hass="sref">flags 7a"+co709de=p" clashicksource/sh_cmt.c#Lr0" class7" class=rels<120o/a> sh_cmt7start_stop_c="vL188">< a7iscod71f="driv4ers/ccccccccc, FLAG_CNLOCEVEODICer9e" nam="vL1cs>(ODICer9">flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg< 06"on failed"sref">p->oa href="+code=pdev" class="sref">pdevsh_cmt7start_stop_c="vL188">< a7uspen71e=p" clasperiodic">shgotoaef="+cod="vL188er91/a/a> raw_spin_loss="sref">cfg =sh_cmt7t_start_stop_c="vL188"><7a>asu712!de=vlue=" c58"55d"vL98" class="line" breakcode=flags7fclass="l7LOCSOURCE_MASKs="sref">c7gaflagsraw_spin_loss="sref">cfg =flags7pdev->oa hr,s"line" nam=7vss=l71ode=p" clashicksource/sh_cmt.c#Lr0" class7" class=rels<120o/a> flags7p, FLAG_CNLOCEVEODICer9e" nam="vL1cs>(ODICer9">flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp-&givurce/sh_cmt.c#Lirqpdev7<143gotoaef="+cod="vL188er91/a/a> raw_spin_loss="sref">cfg =7, c"vL188">< aregist7r_hzm71e/sh_cmt.c5#L58"55d"vL98" class="line" breakcode=flags7sref">fla7s); offs =<0; 7a h5e72= =(struct< 87}7p, FLAG_CNLOCEVEssL121ac7dt;oigs>(7truct < 19o/a> 7a h5e72="drive4ers/clocksource/sh_ciounmaive5ers/clocksouiounmaia>(structpdev(struct->o_infoer"er9079">125" class="line" nbreakcode=flags" class7 "+code=p7lass="sref">flags); 7a h5e72NLOCEVEss="sr< 79cs>urce/sh_cmt.c#Lr0" class7" class=relspdev< 87}7< 79cs>(structsh_cmt_priv *o,s=r7f="+c72"drive4s/clocksource/sh_cmt.c#L437" i43d"vL477 9w="+f">7ne" nam="vL19">< 19o/a> 7a h5e72="drive4s/clclocksource/sh_cmt.__lassni" class7" class=__lassni"LOCEV->oa href="rc4#L99"probce" nam="vL1cs>(struct(stffs,9" class="line" naplatform=lass="line" nam="vL11platform=lass="><138L13333333333333333char_priv" class="sreh_7s="sref">7aw_spin_loss="sref">cfg<7a> =<73(struvL120"><120o/a> flags);7<117{ ->o_infoer"platform=ge>(structt;oa href="+code=pdev" class="sref">pdevsh_cmt_7ead(oa href="+code=p7 FLAG73"><143< 79t;o_infoef">pdev->o_infoer" cs="sr.class="line" naplatform=la h>->o_infoer"platform=la h="srref">sh_cmt_privpdev(7class="sref">flags);7pdev<143
7p(structt="vL120"><120o/a> (structpflags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdev< 79c      int<*oa hrechas_7ra hr73LOCEVEss="sref">p, FLAG_CNLOCEVEpm_runtime=enabloline" nam="vL11pm_runtime=enablo">flags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdev73ksource/sh_cm_cmt_startfalss>(struct(struct<7a hrecref"evam=dt;lta2ns7t_wr073fa nam="vL79">< 79c      int<*oa hrechas_wr+c7de=flags"7class="sref">flags);7t"vL120"><120o/a> sh_cmt_privflags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdev7 79HZa> voidgotoaef="+cod="vL188ou" class7" class=oulspdevflags); flags); 7a h5e74="drive5s/clocksource/sh_cmtCpdev< 87}7<120o/a> p, FLAG_CNLOCEVEODICer9e" nam="vL1cs>(ODICer9">flags); < 79t;o_infoef">pdev->o_infoer" cs="sref">raw_spin_loss="sref">cfg < la h"sref">p->oa href="+code=pdev" class="sref">pdev(7truct< 79cs>-ef="+cod="vL188ENO(EMlass"line" n"amENO(EMspdev< 19o/a> 7a h5e74e/sh_cmt.c5#L58"55d"vL98" class="line" breakcode=flags7ed_to_e=s7_c>(structflags);7 =f 79dt;oa href="+code=pdev" class="sref">pdev(struct<120o/a> (struct voidpdev->o_infoer"platform="e>(struct3" i543"vL52" claNULL138pdevp, CNL, FLAG_CNLOCEVEpm_runtime=idloline" nam="vL11pm_runtime=idlo">flags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdevsh_cmt_7ead(oa href="+code=p7 FLAG7CNLOCEVEss="sref">purce/sh_cmt.c#Lr0" class7" class=relspdevflags(7gs); (structt=8"55d"vL98" class="line" breakcode=flags7e(struct<7); (structflags); < 87}7(structflagsflags06" i50d"vL76" classoa hr*/o/spa>06" im="vL25" class="line" nbreakcode=flags" class7uode=p" c7ne" nam="vLCNLOC_EVT_MOD7_PERI76ICa> voidflags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdev->oa 7r,s"line" nam="vss=lnh_>7quot;7s   for aeriod79HZa> void =p, CNL, FLAG_CNLOCEVEpm_runtime=idloline" nam="vL11pm_runtime=idlo">flags); < 79t;o_infoef">pdev->o_infoer" cs="srt;oa href="+code=pdev" class="sref">pdevoffs =<0;7pdev(oa href="+code=p" 7LAG_C76LOCEVEss="sre< 79cs>(struct(7sh_cmt.c4#L67"46vL107" c7ass="76    ,58"55d"vL98" class="line" breakcode=flags7 flagsbase7=< 79c      int<*oa hrechas_wr+c7lacsa"+co7e     int<*oa hrecsa"+co7e L1277f="drve4s/clclocksource/sh_cmt.__lasexi" class7" class=__lasexi"LOCEV->oa href="rc4#L99"remov"line" nam="vL11c4#L99"remov"a>(stffs,9" class="line" naplatform=lass="line" nam="vL11platform=lass="><138L13333333333333333char_priv" class="sreh_7 class="s7ef">flags); <120o/a> < < 79cs>-ef="+cod="vL188EBUSYlass"line" n"amEBUSYsflags); 7a h4r77ockso_cmt_startfalss>(struct< 87}7flags>(structfla77"driviv4ers/ffs,9" class="line" naplatform=ld t_cline" nam="vL11platform=ld t_cLOCEV->oa href="rc4#L99"lass="=ld t_cline" nam="vL11c4#L99"lass="=ld t_cs<120o/a> < 19o/a> 7a h4r77ode=p" clashi.class="line" naprobce" nam="vL1cs>(probca>(sp, CNLck->oa href="rc4#L99"probce" nam="vL1cs>(struct(siv4ers/clocksource/sh_cmt.c4#L82"48vL13277artcs_to_7=sh_c>(struct(s, CNLck->oa href="r__lasexi"_a(struct(stiv4ers/clocksource/sh_cmt.c4#L82"48vL13277de=flags"7class="sref">flags);7<120o/a> <114o/a> cfgp-&giL120"><120o/a> flags);7<120o/a> (oa href="+code=p" 7LAG_C78f="dr}structp, FLAG_CNLOCEVEssL121ac7e=flags" 7lass="sref">flags); 7a h4r78OCSOUve4s/clclocksource/sh_cmt.__sni" class7" class=__sni"LOCEV->oa href="rc4#L99"sni" class7" class=c4#L99"sni"a>(stvoidL13333333333333333char_priv" class="sreh_7 class="l7ne" nam="vL87">< 87}7<120o/a> fla78="drive5s/clo< 79cs>urce/sh_cmt.c#Lplatform=ld t_c"49d"vL19e" nam="vL1cs>(platform=ld t_c"49d"vL19">flags); pdev< 19o/a> 7a h4r78NLOCE}L120"><120o/a> < 79cs>(structflags);7(stvoidL13333333333333333char_priv" class="sreh_7 flags(oa href="+code=p" 7LAG_C789"drivL120"><120o/a> p->o7 href79f="driv4ers/curce/sh_cmt.c#Lplatform=ld t_c"un flags); pdevflags 7a h4e79e=p" }L120"><120o/a> < 87}7p, FLAG_CNLOCEVEssL121ac7 =flags" 7>flags>(structfla79="drief="+cod="vL188early_platform=sni" class7" class=early_platform=sni"a>(str>raw_spin_loss="sref">cfgp-&givgs); pdev< 19o/a> 7a h4r79="dri>); (struct(st;oa href="+code=pdev" class="sref">pdev(struct(struct(st;oa href="+code=pdev" class="sref">pdevflags);7pdevp->o7 href79LOCEVruct(str>raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdev(oa href="+code=p" 7LAG_C79n!de=ruct(str>raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdevflags 7a h4r79ef="+ruct(str>raw_spin_loss="sref">cfgp->oa href="+code=pdev" class="sref">pdev< 87}8


3"this experit.c5al e=pd"on by a href="+mailto:lxf@87"ux.no">lxf@87"ux.no79">.
Redpill L7"pro AS79">3"providef of L7"ux _cnsul6" i and oper06"ons serss="s since 1995.