linux/drivers/pcmcia/m32r_pcc.c
<<
>>
Prefs
   1/*
   2 *  drivers/pcmcia/m32r_pcc.c
   3 *
   4 *  Device driver for the PCMCIA functionality of M32R.
   5 *
   6 *  Copyright (c) 2001, 2002, 2003, 2004
   7 *    Hiroyuki Kondo, Naoto Sugai, Hayato Fujiwara
   8 */
   9
  10#include <linux/module.h>
  11#include <linux/moduleparam.h>
  12#include <linux/init.h>
  13#include <linux/types.h>
  14#include <linux/fcntl.h>
  15#include <linux/string.h>
  16#include <linux/kernel.h>
  17#include <linux/errno.h>
  18#include <linux/timer.h>
  19#include <linux/ioport.h>
  20#include <linux/delay.h>
  21#include <linux/workqueue.h>
  22#include <linux/interrupt.h>
  23#include <linux/platform_device.h>
  24#include <linux/bitops.h>
  25#include <asm/irq.h>
  26#include <asm/io.h>
  27#include <asm/addrspace.h>
  28
  29#include <pcmcia/ss.h>
  30
  31/* XXX: should be moved into asm/irq.h */
  32#define PCC0_IRQ 24
  33#define PCC1_IRQ 25
  34
  35#include "m32r_pcc.h"
  36
  37#define CHAOS_PCC_DEBUG
  38#ifdef CHAOS_PCC_DEBUG
  39        static volatile u_short dummy_readbuf;
  40#endif
  41
  42#define PCC_DEBUG_DBEX
  43
  44
  45/* Poll status interval -- 0 means default to interrupt */
  46static int poll_interval = 0;
  47
  48typedef enum pcc_space { as_none = 0, as_comm, as_attr, as_io } pcc_as_t;
  49
  50typedef struct pcc_socket {
  51        u_short                 type, flags;
  52        struct pcmcia_socket    socket;
  53        unsigned int            number;
  54        unsigned int            ioaddr;
  55        u_long                  mapaddr;
  56        u_long                  base;   /* PCC register base */
  57        u_char                  cs_irq, intr;
  58        pccard_io_map           io_map[MAX_IO_WIN];
  59        pccard_mem_map          mem_map[MAX_WIN];
  60        u_char                  io_win;
  61        u_char                  mem_win;
  62        pcc_as_t                current_space;
  63        u_char                  last_iodbex;
  64#ifdef CHAOS_PCC_DEBUG
  65        u_char                  last_iosize;
  66#endif
  67#ifdef CONFIG_PROC_FS
  68        struct proc_dir_entry *proc;
  69#endif
  70} pcc_socket_t;
  71
  72static int pcc_sockets = 0;
  73static pcc_socket_t socket[M32R_MAX_PCC] = {
  74        { 0, }, /* ... */
  75};
  76
  77/*====================================================================*/
  78
  79static unsigned int pcc_get(u_short, unsigned int);
  80static void pcc_set(u_short, unsigned int , unsigned int );
  81
  82static DEFINE_SPINLOCK(pcc_lock);
  83
  84void pcc_iorw(int sock, unsigned long port, void *buf, size_t size, size_t nmemb, int wr, int flag)
  85{
  86        u_long addr;
  87        u_long flags;
  88        int need_ex;
  89#ifdef PCC_DEBUG_DBEX
  90        int _dbex;
  91#endif
  92        pcc_socket_t *t = &socket[sock];
  93#ifdef CHAOS_PCC_DEBUG
  94        int map_changed = 0;
  95#endif
  96
  97        /* Need lock ? */
  98        spin_lock_irqsave(&pcc_lock, flags);
  99
 100        /*
 101         * Check if need dbex
 102         */
 103        need_ex = (size > 1 && flag == 0) ? PCMOD_DBEX : 0;
 104#ifdef PCC_DEBUG_DBEX
 105        _dbex = need_ex;
 106        need_ex = 0;
 107#endif
 108
 109        /*
 110         * calculate access address
 111         */
 112        addr = t->mapaddr + port - t->ioaddr + KSEG1; /* XXX */
 113
 114        /*
 115         * Check current mapping
 116         */
 117        if (t->current_space != as_io || t->last_iodbex != need_ex) {
 118
 119                u_long cbsz;
 120
 121                /*
 122                 * Disable first
 123                 */
 124                pcc_set(sock, PCCR, 0);
 125
 126                /*
 127                 * Set mode and io address
 128                 */
 129                cbsz = (t->flags & MAP_16BIT) ? 0 : PCMOD_CBSZ;
 130                pcc_set(sock, PCMOD, PCMOD_AS_IO | cbsz | need_ex);
 131                pcc_set(sock, PCADR, addr & 0x1ff00000);
 132
 133                /*
 134                 * Enable and read it
 135                 */
 136                pcc_set(sock, PCCR, 1);
 137
 138#ifdef CHAOS_PCC_DEBUG
 139#if 0
 140                map_changed = (t->current_space == as_attr && size == 2); /* XXX */
 14" name=lseoption>
  
                  linux/types.h>
 107#endif
 107#endif
 140      ed = (t->current_space != linux/types.h>
linux/types.h>
  47
                /*
 115   to IO ce" claspan class="comment">/*
 110/* XXX */
 117  amp;& need_ex) {
="sref">size == 2); Bytment">/* PCC register base */
portport, void *linux/fcntl.h>
  44
 138#ifCHAOS_PCC_DEBUG
 117            need_ex) {
 140      short current_spadbuf"href="+code=dumdbuf"set" class="sref">pcCADR, PCCR, 1);
linux/types.h>
  69#endif
 117  , int need_ex) {
="sref">size == 2); writmeBytment">/* PCC register base */
 117  ize_t need_ex) {
 140      writmt portPCADR, PCCR, 1);
linux/types.h>
need_ex) {
="sref">size == 2);      Bytment">/* PCC register base */
 117  ize_t need_ex) {
portcurrent_spadbuf"href="+code=dumdbuf"set" class="sref">pcCADR, PCCR, 1);
linux/types.h>
linux/types.h>
need_ex) {
="sref">size == 2); Wordent">/* PCC register base */
portport, void *linux/fcntl.h>
  44
 138#ifdef CHAOS_PCC_DEBUG
 117            need_ex) {
 140      short current_spadbufid pcCADR, PCCR, 1);
linux/types.h>
  69#endif
 117  , int need_ex) {
="sref">size == 2); writmeWordent">/* PCC register base */
 117  ize_t need_ex) {
  93#ifdef PCC_DEBUG_DBEX
 117  a>        need_ex) {
portportlinux/errno.h>
linux/errno.h>
 140      em    current_spac    PCMOD_AS_    sock];
 140      writmid pcem    PCADR, PCCR, 1);
 140      a    linux/timer.h>
linux/timer.h>
  91#endif
 140      writmid portPCADR, PCCR, 1);
linux/types.h>
need_ex) {
="sref">size == 2);      Wordent">/* PCC register base */
 117  ize_t need_ex) {
  93#ifdef PCC_DEBUG_DBEX
 117  a>        need_ex) {
portportlinux/errno.h>
linux/errno.h>
 140      em    current_spadbufid pcCADR, PCCR, 1);
 140      _    adm    PCCR, 1);
 140      _    map_changem    PCCR, 1);
 140      a    linux/timer.h>
linux/timer.h>
  66#endif
portcurrent_spadbufid pcCADR, PCCR, 1);
linux/types.h>
linux/types.h>
linux/types.h>
  81
  81
size == 2); +cod is no"srefer usedent">/* PCC register base */
pcCADR, current_spapgned int pcc_set(soIRa href="+code=M3soIRae=ad )s" class="sref">flags, need_ex) {
current_spaprintmp;sizestring"lass="f
/* PC,ass="sref">need_ex) {
current_spapned long pccmp;& PCCR, 1);
current_spap         pcc_set(soIRa href="+code=M3soIRae=adR" class="sref">PCADR, PCCR, 1);
linux/types.h>
  69#endif
 100        /*
 101/*
 122/* PCC register base */
 103 || t-&   current_spacmp;& PCCR, 1);
 103 || t->_dbex = need_ex;
 125
  97        /* Need lock ? */
  47
  98   unqsave" crestor;& spin_lock_irqsave(&, flags);
  99
flags);
linux/types.h>
 132
  84vobufp;pcc_iorw(int sock, unsigned long port, void *buf, size_t size, size_t nmemb, int need_ex) {
 103void pcc_set(pned long pca>, void *buft ize_t as_none, int flags);
linux/types.h>
  96
  84vwritmd pcc_iorw(int sock, unsigned long port, void *buf, size_t size, size_t nmemb, int need_ex) {
 103void pcc_set(pned long pca>, void *buft ize_t as_none, int flags);
linux/types.h>
 120
 101/*====================================================================*/
 132
as_noneIS_REGISTERE,  139#if 0
as_noneIS_ALIVE/a>,  139#if 0
 125
  68      =pc    need_ex) {
port need_ex;
  98(, need_ex;
  70    need_ex;
 120
  73s      73   M32R_MAX_PCC] = {
sizestring"lass="fxnux2e="L35">/* PC, 0L74"{ c="sref">sizestring"lass="fxnux2e="L35">/* PC, 0L74ef">M32R_MAX_PCC] = {
  75};
  44
  73<" creturns      73_ clerrup    flags);
  96
curren2_spadbuf"href="+code=dum2buf"s25>last_iodbex != 
need_ex;
  70      78
  70      7" 16ss="line" name="L1312e="L120">="s_pcc.c#L51" id="2L51" 2lass="line" name 162s="li2e" name="L140"""""""""wh2 117  i="L44"a/m32r_pcc.c#L54"nl 25ass="line" nanl">need_ex) {
  92        p.void need_ex) {
has>> 117ef">mapaddr +re href="+code=bufre ass="="sref">need_ex;
M32R_>portas_none, int ="(u_short, unsigned int);

  70    curren2ne" naine" name="L140"wh2 11_pcc.c#L51" id="2L51" 2lass="line" name R, 12_spadbuf"href="+code=dum2buf"s2t" class="sref.c#L78" id="L78outl 25ass="line" noutlnsigned int);
pcc_setref name="L92">  92        p.void need_ex) {
has>> 117ef">mapaddr +re href="+code=bufre ass="="sref">need_ex;
as_none, int &2t;
 101  96
KSEG1;  133           See; +ca cardne"1preselinepower" cupref"lasss="c,"commal"L13y32r_pcc.c#L57" id="27" 1l2_mavers/pcm2cia/m32m);
>
        bouommtoca (non PC Card) Li/m3 ="27" .  We le 21382117 126           We mak="co exception for cardspthat seemmtocbe serial devices.32r_pcc.c#L57" id="27" 1l2_mavers/pcm2cia/m32m">curren2_spadbufid , 12;
   id="2L56" 25ass="line" name="L96">  96
linux/ty2es.h>
  70      92
/* Need lois_alimmnsigned int);

  70    ="s_pcc.c#L51" id="2L51" 2lass="line" name 182s="li2e" name="L140"""""""""wh2 117  i="L237" c_pcc.c#L78" id="L78pcm2cmc2a/m32r_pcc.ccm2lass="sref">need_ex;
po2ss="line"2name="L124"ine" name="L120"e="28, _dbex = 
pcCADR, current_name="L133"" class="=u_shass="sref">po2s 17ss="l2"L140"""""""""""""""""" 2lass=2=u_sha> 140
pcc_sCDINhlassee" name="L140"""">pcc_sCDIN2ref="+code=port>pcc_sCDIN">="s_spane" name16name="L133"" class="=u_shass="sref">po2s">curren2 PCif(!.c#L78" id="L78ef="+code=pcc_ioine" )_pcc.c#L51" id="2L51" 2lass="line" name R, 12ref">pcem    PCADR/
need_ex) {
   ef">cur :pan ced_e c215s=8xt_spaprintmp;
po218ss="lin2" name="L129"ine" nam"""2"""""2""""""> 140      a="L44"aex;
;
>
  70    portPCADR/
need_ex) {
curt_spaprintmp;
po21 id="1L82;
linux/timer.h>

need_ex) {
   ef">cur(c215s.8x)t_spaprintmp;

po21ort="sref">si="L44"aex;
 11d;
curren2 19ass="line" nname="L932>  9329>last_iodbex !=   92,ref nnsigned int);
 118
size_t pcCADR,  118
sizestr3portport  70    curren3_spadbufid   92        px;
KSEG1; map_3hange3     125
 140t->6ss="lin3"id="1L95" 195s="line" n3"L20530ss="sref">_dbex =  */
;
 140need_ex) {
has>> 117 */
need_ex) {
has>> 11x;
 137
, 13;
 129< */
cbsz;
size == 2);  129< *ex;
li3ux/types.h>
  81
PCCis_alimment">/* Need lois_alimmnsigned int);
)"name="L70">  70    3ize == 2);ss="sref.c#L78" id="L78rivers/pcmcia/m32r_pcc.c#L129" id="L129" class="line" name="L129"> 129<| */
 139;
fl31,  125
pcX" class="sref">PCCa href="drivers/pcmcia/m32r_pcc.c#L112" ihas>need_ex) {
has>> 117 name0">size, soIRa href="+code=M3s3IRae=31" class="sref">pcCADR">mapaddr +request_regionhref="+code=bufrequest_regionnsigned int);
need_ex) {
has>> 11,2vers,= {
po3sref">PCC3, 1);
linux/ty3es.h>
  70    need_ec#L78" id="L78KERN_INFe=pcc_set" classKERN_INFe 118cus r_pcc.c#L52" ided int);
p.void need_ex) {
po32a/m32r_p3c.c#L121" id="L221" c22s3="lin32" class="sref="+code=u_short"Ra_BWERk_dbe class="sref">need_ex) {
need_ex) {
has>> 11"name="L133"" class="=u_shass="sref">po32e" name=32a/m32r_pcc.c#L122" id="3222" 32e=KSEG1" class="sref">KSEG1; t-& 3    e="2L55" 2e="formation, camebilities" name="L125"> 125
 140t->  92       .void  11"name="L133"" class="=u_shass="sref">po32g"lass="3sref">need_ex;
_dbex =   92       .void (;
 140  92       .void   92        need_ec#L78" id="L78KER4}i1e=u_short" claref nd="2L50" 25ss="line" name=SS_C"sr 13AR4lassee" name=lpcm12ioa/m32r_pL78" i  3 unqs3ve" crestor;set" f">spin_lock8tref name="L92">  92        po32e" nakrq_mas""sref">PCCis_alimment">/* Need lois_alimmnsignehref="dr23ers/pcmc2a/m32r_pcc.c#L130" id32>>
size == 2); porpci_=u_"sref">212ia/m327a/m32r_pcRk_dbe class="sref">need_ex) {
 14" name=l3flags3;
cus r_pcc.c#L52 href="dr3vers/pcmc2a/m32r_pcc.c#L332" i33   PCC3por">PCC3p.void port);
  70    );
  84vob3fp;need_ex) {
  73<" cret3 href="dr3vers/pcmc2a/m32r_pcc.c#L336" i33C"sr 13AR4las="L231" c2ass="l}ef">linux/types.h>
<3href="dr23ers/pcmc2a/m32r_pcc.c#L137" id3"L237"k_dbe class="sref">need_ec#L78" id="L78tmd   98   3p338"> 118
 101/*==============3=====34  flags);
portpordevlaref nd="2L50" 25ss="line" aref nd= clas=phref="dr23ers/pcmc2cia/m32r_pcc.c#343" i342" 18ass="line" name="L932>  932/a>#ifdef <3ISTERE3ize == 56lass=""3class3"e=as)s="sref">porta    porja    , flaev=piss="sref">need_eev=pisa    3ize == 56lass=""3class3"ehandlrs/pcm1cia/m32r_phandlrs"sref">PCCis_alimment">/* Need lois_alimmnsigne  =pc    3a href="+code=pize_t"las3="sre347" 1l2_mavers/pcm2cia/m32m">curren2_spadbu3aaass="sr3f">port si="d"aex;
port( 118
nee3_ex>
void porja   f">PCporja   /a>]; 2PCporja   ++ia/m32r_pcc.c#L112" ihas>need_ex) {
hhref="dr23vers/pcm2cia/m32r_pcc.c#351" i35ss="line" nam3f">curra hr="L237" c_pactL78rivers/pcmcia/mactL781e=uf">PCCis_alimment">/* Need lois_alimmnsigne  373currecm12p.void porta   f">PCporta   fa>]; a/m327a/m32r_pcRk_dbe class="sref">need_ex) {
porta   ++ia/m32r_pcc.c#L112" ihas>need_ex) {
hhref="dr23ux2e="L35">/* PC, 0L74"{3c="sr35ocp cla[0cdr" class="sref">ada href="+code=pcc_ge map_3h=as)s="sref">porta   f="dr2vers/L13"a1cs/=u_as)s="sref">porcs/=u_cp cl!8KER4}i1e=u_short"u_as)s="sref">portneed_ex) {
hhSTEREmap_changem    map_3h=as)s="sref">porta   f="dr2vers/L13"a1short" claref nd="2L50" 25ss="line" ardfRa_BWERpci_=u_as)s="sref">porpci_=u_"sref!8KER4}i1e=u_short"u_as)s="sref">portlinux/timer.h>
need_ex) {
hhhref="dr3href="+co" creturns ze_t3ame="35="dr2vers/pcmc2a/m32r_pcc.c#Lass=""3class3"ehandlrs/pcm1cia/m32r_phandlrs"sref">1sm32r_pcc.c#L112" ihas>need_ex) {
hh =pc    3vers/pcm2cia/m32r_pcc.c#357" i35ass="sref">pccmp;&  140porta    
pcc_sCDINhref="+code=port>pcc_sCDINhlass3uf"href="3code=dum2buf"s25>last_io3bexcurrent_spadbufid PCADR/
need_ea/m32r_pcc.c#L2pr_debu#L78" id="L78a hpr_debu#/m32r_pcc.c#L122" id="3222" 32e= 2 id="1L9ia/m32r_p: nam"""2"""""2"pcirc class="s2x 116" id="L216" c21ss="line" name="L136"e="L140""ef"32iers/p>l3nux/ty2es.h>
porta    pcc_sCDINhlass3curren3_spada href="dr2vers/pcmcirin32" class="sreiri1e=uc_sCDINhref="+code=port>pcc_sCDINhlass3<current_spadbufid need_ex) {
ha href na3e="L92">  92        3a hre36L233" c2ass="lline" name="L84">  84vob3oid need_ex) {
has>> 113ef">m36ocp cla[1]ss="sref">map_changlass="sref">flaev=piss="sref">need_eev=pisa   "=u_shass="sref">poirin32" class="sreiri1e=uc ?m32r_pcc.c#L112" itDETECclass="sref.c#L7 itDETECca   ":>PCCis_alimment">/* Need lois_alimmnsignem322_pcc.36   linux/timer.hflaev=piss="sref">need_eev=pisa   ";
 140porta    a hr="L237" c_plaC/pcmc2a/m32r_pcc.cCRa   tass="sENpcmc2a/m32r_pcc.cCR/a>EN1e=uc ?m32r_pcc.c#L112" itREADYlass="sref.c#L7 itREADYa   ":>PCCis_alimment">/* Need lois_alimmnsignemhref="dr30">="(;
need_eev=pisa   cc_sCDINhref="+code=port>pcc_sCDINhlass3< =pc    3rivers/pcmcia/m32r_pcc.c3L80">3current_spaddr +request_ev=piss="sref">need_eev=pisa   cf="dr2vers/pcmc2a/m32r_pcc.c#L137" id3"
need_ex) { hr3f="dr32ss="2=2r_p_parse_ev=piss="sref">need_e2=2r_p_parse_ev=pis/m32rss="sref">KSEG1; map_3h=as)s="sref">porta   f="dr2vers/L13"a1short" claref nd="2L50" 25ss="lflass=""3class3"eev=piss="sref">need_eev=pisa   cc_sCDINhref="+code=port>pcc_sCDINhlass3l3et_t" class="sref">p.vo36L230" c2ass="line" namreturn" class="sref"3pcm2cia/m37 name="L101"> 101curren3_spada hr="L237" c_pactL78rivers/pcmcia/mactL781e=uf detected3: +co31eev=piss="sref">need_eev=pisa   c_sCDINhref="+code=port>pcc_sCDINhlass3href="dr23vers/pcm2cia==32r_pcc.c#357" i37coem  cla="ref">current_spadba hr="L237" c_pactL78rivers/pcmcia/mactL781e=uf">PCCis_alimment">/* Need lois_alimmnsigneid="1L72"3172s="li2e" na27e=KSEG1"3class37ocp cla[0cdr" class="k_dbe class="sref">need_ec#L78" id="L78lasss="c,3commal"L13y32r_pcc.c#L573 id="37ocp cla[1]ss="sref">ma href="dr2vers/pcmcactL78rivers/pcmcia/mactL781e=u) breakCCis_alimment">/* Need lois_alimmnsignei322_pcc.3need_ec#L78" id="L78lhref="dr3138">21383ize == addr +request_jas)s="sref">porja   f"= 20cf="dr2vers/pcmc2a/m32r_pcc.c#L137" id3mtocbe se3ial devices.32r_pcc.c#L53" id=37ass="sref">pccmp;&ass=""3class3"epr32r_pcc.c#L48"ne" aref n/ef">p.void NOTIC  92       . ef">NOTIC sa" cl;
  handlrraex;
last_iodb3x37"L28" c22ass="line" name="L98">  98   3ef="dr2iv3rs/pcm2cia==/m32r_pcc.c#357" i37e" crestor;set" f">spin_lockpr_debu#L78" id="L78a hpr_debu#/m32r_pcc.c#L122" id="3222" 32e= 2 id="1L9ia/m32r_p doneaex;
/* Need lois_alimm3signe38cc.c#L131" id="L231etected3: +co31erRQtRETVALL78" id="L78a hrRQtRETVALef">p.void 
 14" name=l3">need_ex3/a>;
  84vob3 h="L237"3c_pcc.c#L78" id="L78ef="3code=3cc_ioi ass=id="L237" c_pcc.c#L78" id=ia/m32r_p_wrapppcm2ciamcia/m32r_pid=ia/m32r_p_wrapppcef">p.void need_ex) {
h"dr2vers/3cmc2a/m32r_pcc.c#L114" i3="L2138C"sr 13AR4lassee" name="L140gs);
curren3_name3"L133"" class="=u_shass="sref18ssers/pcm2ciamcia/m32r_18ssers/pc/m32rss="sref">KSEG1;126vers/pcm2ciamcia/m32r_pcc.c#L78" id=cc_sCDINhref="+code=port>pcc_sCDINhlass30d pcc_sCDIN2ref="+3ode=p3rt>pcc_sCDIN">="s_spane" name126vers/pcm2ciamcia/m32r_pcc.c#L78" id=="dr2vers/L13"a1expi>po32g"lass="3srefexpi>po1e=u""""""""""" 2lass=jiffipo32g"lass="3srefjiffipo1e=u"2ia/m327a/m32r_pcRcc.cia/m3va7ef">mapaddrRcc.cia/m3va7a   c_sCDINhref="+code=port>pcc_sCDINhlass3pan>
ne38e" crestor;set" f">spin_lock
KSEG1;126vers/pcm2ciamcia/m32r_pcc.c#L78" id=cc_sCDINhref="+code=port>pcc_sCDINhlass30iers/p>l3tmp;
 120
 101  70    3a href="+code=pize ss="s3ef2>p39==============================================*/
 132

n39L233" c2ass="lline" name="L84">  84vob33  70    p.void curren2ne" naine" name="L140"wh2 11_pcc.c) {
need_ex) {
h;fla assuo32g"lass="3sref assuoef">c_sCDINhref="+code=port>pcc_sCDINhlass3ss="line"3nname="L932>  9329>last_3odbex39a href="dr2vers/pcmc2a/m32r_pcc.c#L137" id3"""2""e="39="drivers/pc href="+cod3=u_sh39t>pcc_sCDIN">="s_spane" name assuo32g"lass="3sref assuoef">""""""""""" 2lass=2=u_sha> 140

pcc_sCDINhref="+code=port>pcc_sCDINhlass3nsigned i3t);
po2s">uo32g"lass="3sref assuoef">"ss="sPCif(!.c#L78" id="L78ef="+code=pcc_iotass="sss="su_shass="sref">po2s">uo32g"lass="3sref assuoef">"ss="sPCif(!2lass="line" name R, 12ref">p_sCDINhref="+code=port>pcc_sCDINhlass3niers/p>l3">size_t PCCis_alimment">/* Need lois_alimmnsign4""" 3lass43=u_sha_pcc.c#L51" id="2451" 240L241" c24ss="line" name="L101"> 101""""""""""" 2lass=2=u_sha> 140
/* Need lois_alimmnsign4"2e_t"las4=efRa_BWERk_dbe class="s4pcc.c40L233" c2ass="lline" name="L84">  84vob4href="dr24ers/pcmc2a/320ss="lin3" 4ame="4124"in#if 5" 24ss="line" name="L125"> 125
t->uo32g"lass="3sref assuoef">"ss="sENpcmc2a/m32r_pcc.cCR/a>EN1e=uc ?m32r_pcc.c#L112" itREADYlass="sref.c#L7 itREADYa   ":>PCCis_alimment">/* Need lois_alimmnsign4ref="driv4rs/pcmcia/m32r_pc3>6ss="4in3"i4="1L95"drivers/pcmcia/m32r_pc3am}ef">li3ux/types4)"name="L70">  70     118
>
""""""""""" 2lass=2=u_sha> 140
/* Need lois_alimmnsign4lass="lin4" name="L129"> 129< *ex<4a>;
<410>uo32g"lass="3sref assuoef">"ss="sPCCis_alimment">/* Need lois_alimmnsign4h>4si="d"classi="#4.4xaex;
 11_pcc.c"+code=size_t" cva7u8rivers/pcmcia/mva7u8l 25aCCis_alimment">/* Need lois_alimmnsign4href="dr24d="3213" c21ss="line" na4e="3r4f">3ize ==="+code=need_ex2ass="line2 naine" nammmmmmmmm"4x;
pcX" class="s4ef">PCCa 4ref="drivers/pcmcia/m32r4pcc.c4L112" =========================================*/
 132
soIRa hr4f="+code=M3s3IRae=31" cl4ss="s41"L28" c22ass="line" name="L98">  98   4as>> 11,24ers,= {
  70    p.void curren2ne" naine" name="L140"wh2 11_pcc.cnmemb<     _ assclasa" c"+code=size_t" c assc32g"lass="3sref ass8l 25ass="line" noutlnsigned int);
need_ex) {
4KERN_INFe4pcc_set" classKERN_INFe 418PCCis_alimment">/* Need lois_alimmnsign4" ided in4);
need_ex)4{
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pcc.c#L122" id="3222" 32e= 2 id="1L9SetS     ">si="d, ref: assi="#3.3x, Vcc >si="d, Vpp >si="d, x;
 1254map_pcc.c#L122" id="3222" 32e=io_=u_ >si="d, csc_mas"assi="#2.2x)x;
 11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" name="L136"0x3ng"lass="3
 140linux/tim+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" name="L13Vlin32" class="sreV="+cod.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" name="L13Vppn32" class="sreVpp+cod.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" name="L13io_=u_m2ciamcia/m32r_1o_t/* Need lois_alimmnsign478" id="L48SS_C"sr 13AR4ss="line" 4ame=S42href="+cod3=port3lass="sref">pcX" class="s4n>
 137="sSIZame="0x2004pc3>6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#L4r8ine" namreturn" class="sref"32veis_ali362nux/tim+code=size_t" c assc32g"213Vppn32" class="sreVpp+cod.c+c_3cc.c#L78" id="L78re="drivers/pcmcia/m32r4pc3x, Vcc >si="d, Vpp >si="d, x;
> 14,2vestcod2bufis27>last_iodbex !==========* 5V onl  14" name=l34lags<43m37 name="L101"> 1016432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#L4r8ine" namreturn" class/a> 5ed int);
cus r_pcc.c#L524href=4323vers/pcm2cia==32r_pcc.c#357" i37coem  cla=="L78a hr_ef="+code=mapaddt" cva7u8rivers/pcef assuoef">"ss="s  84vob34p;need_ex) {
has>> 113ef1ss="li-cva7u8rivers/pcEIN1" id="L231etectedEIN1" GC/_c_mas"32g"lass="3srefcsc_mas"l 25aCCis_ 140
  73<" cret34href=4dr3vers/pcmc2a;
>
<34ref="43"3nname="L932>  9329>last_3odbex39a href="4 class="s4ef">need_ec#L78" id="L784md  11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" names="2s">uo32g"lass="3srpcc.cSE"+cocp cl?m32r_pcc..cSE"lass="sref"32veis_ali362nux/tim+code=size_t" ass="line4 name="L98">  98   34a hre432vers,= {
need_ex) {
34href=43intmp;
 101 11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" names="2s">uo32g"lass="3srpccOUTPUT_ENA+cocp cl?m32r_pcc.OUTPUT_ENAlass=sref"32veis_ali362nux/tim+code=size_t" "2L50" 254s="line" aref nd= clas=p4ref="44"3172s="li2e" na27e=K2ivers/pcm2ciiz
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:OUTPUT_ENA3222" 32e= 2 id="1L9ia/m32r_p doneaex;
,4="("ss="s
curren2_spadbu34aass=44r4f="+code=M3s3IRae=31" cl4ss="s41"L28" c22""""""""""s 2lass=2=u_sha> 140
need_ex) {
34ef="+44l3href="dr2ivers28ine" nam3="L7037L230" c24_pcc.c#L142" ihas>need_ex) {
h4ref="4r23vers/pcm2ci_dbe class="sref">2 11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" names="2s">uo32g"lass="3srpccIOex;
 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:IOex;
need_ex) {
h4ref="4r23ux2e="L35">;
need_ex) {
h4STERE4/a32vvers/pcm2s3IRae=31" class="s2 11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" names="2s">uo32g"lass="3srpccPWR_AUTref n/ef">p. 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:PWR_AUTr22" 32e= 2 id="1L9ia/m32r_p doneaex;
need_ex) {
h4href=45r3vers/pcmc2a;
need_ex) {
h4 =pc 45e432R> 137="sSIZame="0x2004pc3>6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#3sref ass8l 25VEs="line" name="L13cs="2s">uo32g"lass="3srpcchref="+cocp cl?m32r_pcc.c#L112" it_t" c assc32g"lass="3sref ass8l 25ass="INhref="+4ode=port>pcc_sCDINhlass34f"hre4="3code=dum2buf"s25>la2ivers/pcm2ciiz
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:" n-cc.c#L11222" 32e= 2 id="1L9ia/m32r_p doneaex;
PCADR/ 11_pcc.c+code=size_t" c assc32g"lass="3sref ass8l 25VEs="line" names="2s">uo32g"lass="3srpccIOex;

l3nux/ty2es.h>SIZame="0x2004pc3>6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#3sref ass8l 25VEs="line" name="L13cs="2s">uo32g"lass="3srpccSTSCHL129" id="L129" pccSTSCHL" it_t" c assc32g"lass="3sref ass8l 25ass="INhref="+4ode=port>pcc_sCDINhlass34a hre4="3rivers/pcmcia/m32r_pcc.c3L72ivers/pcm2ciiz
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:STSCHL22" 32e= 2 id="1L9ia/m32r_p doneaex;
need_ex) {
h4 href46"3172s="li2e" na27e=KSIZame="0x2004pc3>6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#3sref ass8l 25VEs="line" name="L13cs="2s">uo32g"lass="3srpccBATDEA/a>;
  84vob34id need_ex) {
has>> 113ef">m36ocp cla[1]
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:BATDEA/22" 32e= 2 id="1L9ia/m32r_p doneaex;
6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#3sref ass8l 25VEs="line" name="L13cs="2s">uo32g"lass="3srpccBATWAREN1e=uc ?m32r_pcc.cBATWARE" it_t" c assc32g"lass="3sref ass8l 25ass="I" claref4/* Need lois_alimmnsigne4href=4dr30">="(6432R> 137="sSIZpci_=u_as)s="sref">L72"4mref="d.c#3sref ass8l 25VEs="line" name="L13cs="2s">uo32g"lass="3srpcca/mva7u8l 25";
<32r_pcc.c#L112" _t" c assc32g"lass="3sref ass8l 25ass="INhref="+4c2a/m32r_pcc.c#L137" id34L237"4c_3cc.c#L78" id="L78re href3"+2ivers/pcm2ciiz
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc:.c#L122" 32e= 2 id="1L9ia/m32r_p doneaex;

 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pc3222" 32e= 2 id="1L9ia/m32r_p doneaex;
/* Need lois classc.c#L110" id="L210" c21ssf">PCCis_INhref="+4ode=port>pcc_sCDINhlass34ref="47r3f="dr2vers/pcmc2a/m32r_p3c.c#L" id=sL7_ h=*"dr2
need_ec#L78" id="L784href=4dr3138,= {
p.void curren2ne" naine="Lucref="dr2iver4/pcm4iiard ioameref ass8l 25VEs=4iiard ioamerid nmembpcc_sCDINhlass34d Ku_cha/id PCCis_Ia href="4 name="L98">  98   34f="dr47f4c#L78" id="L78rivers/pcm4ia/m3408"> 118pcc_sCDINhlass34iers/47"4rivers/pcmcia/m32r_pc3ty4e
has4> 11"name="L133"" class="=u_sha_debu#L78" id="L78a hpr_debu#/m32r_pcSetIOMap id="3222id="3222id="3 32e=22id="32 nsssi="#3.3x, Vcc >si="d, Vpp >si="d, x;
si=".2x)x;
ef ass8l 25VEs=merid 
p.p. 14" name=l34>need4823ux2e="L35">/* PC, 0L7(unsigned clas clas)ss3"ee="L140"whioass8l 25VEs="line12" ="L136"wh3vers/30u_ssto>ef ass8l 25VEs=sto>m327a/m32r_pcc.c#L110" id="L210" c21ss="lin4ss="lline4 name="L84">  84vob34h="L248e3="+code=pc>vobufset" las3=ha>ef ass8l 25VEs=merid needass8l 25VEs="line12" ="L136"wh3vers/30u_sha>ef ass8l 25VEs=merid need_ex) {
h4dr2ve4s/3cmc2a/m32r_ed lois classc.c#L110" id="L210" c21ssf">PCCis_INhref="+4ode=port>pcc_sCDINhlass34tocbe4se3f="dr2vers/pcmc2a/m32r_p3c.c#L" id=ioamer=*"dr2