linux/drivers/pcmcia/at91_cf.c
<<
.6.6.6./spaalu.6.spaa class="lxr_search">.6.6 ">.6.6Search.6.6./spaalu.6.input typ hidden" nam ajax_lookup" id ajax_lookup" > ">.u .div id file_contents"l
3 31./a>.spaa class="comment">/*./spaalu3 32./a>.spaa class="comment"> * at91_cf.c -- AT91 CompacnFlash controller driver./spaalu3 33./a>.spaa class="comment"> *./spaalu3 34./a>.spaa class="comment"> * Copyright (C) 2005 David Brownell./spaalu3 35./a>.spaa class="comment"> *./spaalu3 36./a>.spaa class="comment"> * This program is free software; you caa redistribute it and/or modify./spaalu3 37./a>.spaa class="comment"> * it under the terms of the GNU General Public License as published by./spaalu3 38./a>.spaa class="comment"> * the Free Software Foundan va; either vers13"
2 of the License, or./spaalu3 39./a>.spaa class="comment"> * (at your ion va) any later vers13"../spaalu3 .spaa class="comment"> */./spaalu3 11./a>u3 12./a>#include <linux/module.h./a>>u3 13./a>#include <linux/kernel.h./a>>u3 14./a>#include <linux/platform_device.h./a>>u3 15./a>#include <linux/errno.h./a>>u3 16./a>#include <linux/init.h./a>>u3 17./a>#include <linux/interrupt.h./a>>u3 18./a>#include <linux/slab.h./a>>u3 19./a>#include <linux/gpio.h./a>>u3 20./a>u3 21./a>#include <pcmcia/ss.h./a>>u3 22./a>u3 23./a>#include <mach/hardware.h./a>>u3 24./a>#include <asm/io.h./a>>u3 25./a>#include <asm/sizes.h./a>>u3 26./a>u3 27./a>#include <mach/board.h./a>>u3 28./a>#include <mach/at91rm9200_mc.h./a>>u3 29./a>#include <mach/at91_ramc.h./a>>u3 30./a>u3 31./a>u3 32./a>.spaa class="comment">/*./spaalu3 33./a>.spaa class="comment"> * A0..A10 work in each range; A23 indicates I/O space;  A25 is CFRNW;./spaalu3 34./a>.spaa class="comment"> * some other bit in {A24,A22..A11} is nREG to flag memory access./spaalu3 35./a>.spaa class="comment"> * (vs attributes).  So more thaa 2KB/reg13"
would just be waste../spaalu3 36./a>.spaa class="comment"> * Note: These are offsets from the physical base address../spaalu3 37./a>.spaa class="comment"> */./spaalu3 38./a>#define3.a href="+code=CF_ATTR_PHYS" class="sref">CF_ATTR_PHYS./a>v3 3(0)u3 39./a>#define3.a href="+code=CF_IO_PHYS" class="sref">CF_IO_PHYS./a>v3 3 3(1 << 23)u3 40./a>#define3.a href="+code=CF_MEM_PHYS" class="sref">CF_MEM_PHYS./a>v3 3 (0x017ff800)u3 41./a>u3 42./a>.spaa class="comment">/*--------------------------------------------------------------------------*/./spaalu3 43./a>u3 44./a>static const char3.a href="+code=driver_nam
" class="sref">driver_nam
./a>[] = .spaa class="string">"at91_cf"./spaal;u3 45./a>u3 46./a>struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>v{u3 47./a>v3 3 3  struct3.a href="+code=pcmcia_socket" class="sref">pcmcia_socket./a>v3 3.a href="+code=socket" class="sref">socket./a>;u3 48./a>u3 49./a>v3 3 3  unsigned                .a href="+code=present" class="sref">present./a>:1;u3 50./a>u3 51./a>v3 3 3  struct3.a href="+code=platform_device" class="sref">platform_device./a>v3*.a href="+code=pdev" class="sref">pdev./a>;u3 52./a>v3 3 3  struct3.a href="+code=at91_cf_data" class="sref">at91_cf_data./a>v3 3 *.a href="+code=board" class="sref">board./a>;u3 53./a>u3 54./a>v3 3 3  unsigned long           .a href="+code=phys_baseaddr" class="sref">phys_baseaddr./a>;u3 55./a>};u3 56./a>u3 57./a>static .a href="+code=inline" class="sref">inline./a>vint3.a href="+code=at91_cf_present" class="sref">at91_cf_present./a>(struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>v*.a href="+code=cf" class="sref">cf./a>)u3 58./a>{u3 59./a>v3 3 3  return !.a href="+code=gpio_get_	  >
" class="sref">gpio_get_	  >
./a>(.a href="+code=cf" class="sref">cf./a>->.a href="+code=board" class="sref">board./a>->.a href="+code=det_pin" class="sref">det_pin./a>);u3 60./a>}u3 61./a>u3 62./a>.spaa class="comment">/*--------------------------------------------------------------------------*/./spaalu3 63./a>u3 64./a>static int3.a href="+code=at91_cf_ss_init" class="sref">at91_cf_ss_init./a>(struct3.a href="+code=pcmcia_socket" class="sref">pcmcia_socket./a>v*.a href="+code=s" class="sref">s./a>)u3 65./a>{u3 66./a>v3 3 3  return 0;u3 67./a>}u3 68./a>u3 69./a>static .a href="+code=irqreturn_t" class="sref">irqreturn_t./a>v.a href="+code=at91_cf_irq" class="sref">at91_cf_irq./a>(int3.a href="+code=irq" class="sref">irq./a>, voidv*.a href="+code=_cf" class="sref">_cf./a>)u3 70./a>{u3 71./a>v3 3 3  struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>v*.a href="+code=cf" class="sref">cf./a> = .a href="+code=_cf" class="sref">_cf./a>;u3 72./a>u3 73./a>v3 3 3  if (.a href="+code=irq" class="sref">irq./a> == .a href="+code=gpio_to_irq" class="sref">gpio_to_irq./a>(.a href="+code=cf" class="sref">cf./a>->.a href="+code=board" class="sref">board./a>->.a href="+code=det_pin" class="sref">det_pin./a>))v{u3 74./a>v3 3 3  v3 3 3  unsigned .a href="+code=present" class="sref">present./a> = .a href="+code=at91_cf_present" class="sref">at91_cf_present./a>(.a href="+code=cf" class="sref">cf./a>);u3 75./a>u3 76./a>v3 3 3  v3 3 3  .spaa class="comment">/* kick pccard as needed */./spaalu3 77./a>v3 3 3  v3 3 3  if (.a href="+code=present" class="sref">present./a> != .a href="+code=cf" class="sref">cf./a>->.a href="+code=present" class="sref">present./a>)v{u3 78./a>v3 3 3  v3 3 3          .a href="+code=cf" class="sref">cf./a>->.a href="+code=present" class="sref">present./a> = .a href="+code=present" class="sref">present./a>;u3 79./a>v3 3 3  v3 3 3          .a href="+code=pr_debug" class="sref">pr_debug./a>(.spaa class="string">"%s: card %s\n"./spaal,3.a href="+code=driver_nam
" class="sref">driver_nam
./a>,u3 80./a>v3 3 3  v3 3 3          v3 3 3          .a href="+code=present" class="sref">present./a> ? .spaa class="string">"present"./spaal : .spaa class="string">"gone"./spaal);u3 81./a>v3 3 3  v3 3 3          .a href="+code=pcmcia_parse_events" class="sref">pcmcia_parse_events./a>(&.a href="+code=cf" class="sref">cf./a>->.a href="+code=socket" class="sref">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);u3 82./a>v3 3 3  v3 3 3  }u3 83./a>v3 3 3  }u3 84./a>u3 85./a>v3 3 3  return .a href="+code=IRQ_HANDLED" class="sref">IRQ_HANDLED./a>;u3 86./a>}u3 87./a>u3 88./a>static int3.a href="+code=at91_cf_get_status" class="sref">at91_cf_get_status./a>(struct3.a href="+code=pcmcia_socket" class="sref">pcmcia_socket./a>v*.a href="+code=s" class="sref">s./a>,3.a href="+code=u_int" class="sref">u_int./a>v*.a href="+code=sp" class="sref">sp./a>)u3 89./a>{u3 90./a>v3 3 3  struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>v3 *.a href="+code=cf" class="sref">cf./a>;u3 91./a>u3 92./a>v3 3 3  if (!.a href="+code=sp" class="sref">sp./a>)u3 93./a>v3 3 3  v3 3 3  return -.a href="+code=EINVAL" class="sref">EINVAL./a>;u3 94./a>u3 95./a>v3 3 3  .a href="+code=cf" class="sref">cf./a> = .a href="+code=container_of" class="sref">container_of./a>(.a href="+code=s" class="sref">s./a>,3struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>,3.a href="+code=socket" class="sref">socket./a>);u3 96./a>u3 97./a>v3 3 3  .spaa class="comment">/* NOTE: CF is always 3VCARD */./spaalu3 98./a>v3 3 3  if (.a href="+code=at91_cf_present" class="sref">at91_cf_present./a>(.a href="+code=cf" class="sref">cf./a>))v{u3 99./a>v3 3 3  v3 3 3  int3.a href="+code=rdy" class="sref">rdy./a> = .a href="+code=gpio_is_	  id" class="sref">gpio_is_	  id./a>(.a href="+code=cf" class="sref">cf./a>->.a href="+code=board" class="sref">board./a>->.a href="+code=irq_pin" class="sref">irq_pin./a>); 3  .spaa class="comment">/* RDY/nIRQ */./spaalu3100./a>v3 3 3  v3 3 3  int3.a href="+code=vcc" class="sref">vcc./a> = .a href="+code=gpio_is_	  id" class="sref">gpio_is_	  id./a>(.a href="+code=cf" class="sref">cf./a>->.a href="+code=board" class="sref">board./a>->.a href="+code=vcc_pin" class="sref">vcc_pin./a>);u3101./a>u3102./a>v3 3 3  v3 3 3  *.a href="+code=sp" class="sref">sp./a> = .a href="+code=SS_DETECT" class="sref">SS_DETECT./a> | .a href="+code=SS_3VCARD" class="sref">SS_3VCARD./a>;u3103./a>v3 3 3  v3 3 3  if (!.a href="+code=rdy" class="sref">rdy./a> || .a href="+code=gpio_get_	  >
" class="sref">gpio_get_	  >
./a>(.a href="+code=rdy" class="sref">rdy./a>))u3104./a>v3 3 3  v3 3 3  v3 3 3  *.a href="+code=sp" class="sref">sp./a> |= .a href="+code=SS_READY" class="sref">SS_READY./a>;u3105./a>v3 3 3  v3 3 3  if (!.a href="+code=vcc" class="sref">vcc./a> || .a href="+code=gpio_get_	  >
" class="sref">gpio_get_	  >
./a>(.a href="+code=vcc" class="sref">vcc./a>))u3106./a>v3 3 3  v3 3 3  v3 3 3  *.a href="+code=sp" class="sref">sp./a> |= .a href="+code=SS_POWERON" class="sref">SS_POWERON./a>;u3107./a>v3 3 3  } elseu3108./a>v3 3 3  v3 3 3  *.a href="+code=sp" class="sref">sp./a> = 0;u3109./a>u3110./a>v3 3 3  return 0;u3111./a>}u3112./a>u3113./a>static intu3114./a>.a href="+code=at91_cf_set_socket" class="sref">at91_cf_set_socket./a>(struct3.a href="+code=pcmcia_socket" class="sref">pcmcia_socket./a>v*.a href="+code=sock" class="sref">sock./a>,3struct3.a href="+code=socket_state_t" class="sref">socket_state_t./a>v*.a href="+code=s" class="sref">s./a>)u3115./a>{u3116./a>v3 3 3  struct3.a href="+code=at91_cf_socket" class="sref">at91_cf_socket./a>v3 *.a href="+code=cf" class="sref">cf./a>;u3117./a>u311ef="drivers/p.a href="+code=cf" class="sref">cf./a> = .a href="+code=container_of" class="sref">container_of./a>(.a href="+code=su/*./spaalu
ine" nam
  L24">3 24./a>#include <9n16. 9.6at91_cf_socket./a>v3 *.a href="+cm/linux/errno.h" c12possible class="line" nam
  L100">3100./a>v3 3 3  v3 3  href="in1clude/pcmcia/ss.h" class1="fre12nts" class="ssent./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sref">board./a>->.a href="+code=vcc_pin" class="sref">vcc_pin./a>);u3 99./a>v3 3 3  v3 3 3 12href="incllude/linux/module.h" clas" cla2 = .a href="+code=SS_f="+cm/=at91_cf_socket" class="sref">at91_cfref="drivers/pcmcia/V#L106" id  L106" Vlass="lne" nam
  L99">3 99./a>v3 3 3  v3 3 3 12href="driclude/mach/hardware.h" c1lass=12dy./a> || .a href="+ccccccccccd  L0:" nam
  L99">3 99./a>v3 3 3  v3 3 3 12=at91_cf_mbig=include/asm-alpha/i1o.h|i12">sp./a> |= .a href="+code=SSode=container_of" class;.a hs" class="sref">vcc./a>))uboard./a>->.a href="+code=det_pin" class="sref">det_pin./a>);u)u || .a href="+cccccccccccccccccbreakf="drivers/pcmcia/atca>)usp./a> |= .a href="+code=SScd  L33:" nam
  L99">3 99./a>v3 3 3  v3 3 3 12ers/pcmciclude/mach/board.h" clas1s="fr12">present./a> != .a h+code=SSode=container_of" class;.a hs" class="sref">vcc./a>))uboard./a>->.a href="+code=det_pin" class="sref">det_pin./a>);u)ucf./a>->.a href="+code=prccccccccbreakf="drivers/pcmcia/atca>)upr_debug./a>(.spaa cladefault:" nam
  L99">3 99./a>v3 3 3  v3 3 3 1rs/pcmcia1/at91_cf.c#L31" id  L31"1 clas13present" class="sref">present./a> ? .ref="drivers/pcmcia/at91_cf.c#L94" id  L94" class="line" nam
  L94">3 94./a>upcmine" nam
  L112">3112./a>u/*1./spaalu3112./a>u3 64./a>static int3.a h1mment"> *1 some other bit in {A24,1A22..134s="sref">at91_cf_socket./a>v3 *.a hretoggle f="dtux/errno.h"class="line" nam
  L100">3100./a>v3 3 3  v3 3 mment"> *1 (vs attributes).  So mo1re th13f="+code=container_of" class;.a hs" class="sref">vcc./a>))uboard./a>->.a href="+code=det_pin" class="sref">det_pin./a>);uat91_cfref="drivers/pcmcia/L35"1class="sref">atL35"1="+code=so="drivers/pcmcia/at91SEass="sref">SS_3VCAR91SEaa href="drivers/pcmcia/atca>)u *1 Note: These are offsets1 from13"line" nam
  L97">3 97./a>v3 3 3  .spaa c1mment"> *1/./spaalu,u<" nam
  L97">3 97./a>v3 3 3  .spaa c1mf="+code=F_ATTR_PHYS" class="sref1">CF_13>cf./a>->.a href="ainer_of" classpcmcia/at91_cf.c#L80" id  L80" class="linea/a23/pcmcia/at91class="sref">at91_cfref="drivers/pcmcia/V#L106" id  L106" Vlass="ea/a23/pcmcia/at91class="sref">at91_cfref="drivers/pcmcia/i="sref">cf./a>->.i="+code=bia/a23/pcmcia/at91class="sref">at91_cfref="drivers/pcmcia/L35"1class="sref">atL35"1="+cia/a23/pcmcia/at91class="sref">at91_cfref="drivers/pcmcia/csc_masf.c#L13" id  L13csc_masfa href="drivers/pcmcia/atca>)u1CF_IO13L24">3 24./a>#include <CF_M141" id  L111" class="line" nam
  L111">3111./a>}u3112./a>u/*1------------------------1-----14s="line" nam
  L113">3113./a>static intudet_pin./href="+codesuspen"a_socket./a>v*.a href="+code=sock" class="sref">sock./a>,3struct3.a href="+code=socket_sta" id  L115" class="line" nam
  L115">3115./a>{ude" nam
  L99">3 99./a>v3 3 3  v3 3 3 1rs/pcmcia1/at91_cf.c#L46" id  L46"1 clas14>IRQ_HANDLED./a>;upcmcia_socat91_cf_socket" class="sref">at91_cf_sde=socket" class="srdead"+code=pcmcia_socket" dead"+code=a href="drivers/pcmcia/atca>)uat14="line" nam
  L87">3 87./a>u311ef="drivers/p.a hrrs/pcmcia1/at91_cf.c#L49" id  L49"1 clas14either vers13"
2 of the Lichrewe already mapp.h"91_c1_cft91_cf.class="line" nam
  L100">3100./a>v3 3 3  v3 3 d        1        .a href="+code=p1resen149114" class="lit./a>(struct3.a href="+coef"i="mappcmcia_socket" class="sref"i="mapa_socket./a>v*.a href="+code=sock" class="sref">sock./a>,3struct3.a href="+code=socket_sta" id  L115" class="lia/at91_cf.c#L111" id  L#L77" "i="mappcmcia_socket" #L77" "i="maphref="+code=socket_stiof">cf./a>->.i=s="line" nam
  L115">3115./a>{u3 71./a>v3 3 3  struct31.a href="1+code=platform_device" c1lass=1sref">platform_device./a>v3*.a href=+code=cf" class="sref">cf./a>;u3117./a>uat91_cf_datcia/at91_cf.c#Lu./spaalu3117./a>u3 54./a>v3 3 3  unsigne1d long   1        .a href="+code=p1hys_b1seaddr" class=ainer_of" class="sref">container_of./a>(.a href="+code=su/*./spaalucf./a>->.i=s="lref="drivers/pcmcia/L35"1class="sref">atL35"1="+code=so=/=at91_cf_socket"MAP_ACTIVEclass="sref">atMAP_ACTIVEa>;uSS_3VMAP_16BIaa>;uatMAP_AUTOSZa href="drivers/pcmcia/atca>)u3 57./a>static .a href=1"+code=in1line" class="sref">inlin1e./a>15ARD */./spaalu3100./a>v3 3 3  v3 3 ers/pcmci1a/at91_cf.c#L59" id  L591" cla15either vers13"
2 of the Liceeeeeeeee* Use 163 .spaa class="com!.a href=1"+code=gpio_get_	  >
" c1lass=15s13"../spaalu3100./a>v3 3 3  v3 3 ers/pcmci1a/at91_cf.c#L61" id  L611" cla160addr" class=ainer_of" class=st91_cf.c#L55" idcsts="lent./a>(.a href="+code=0" c_read23/pcmcia/at91_cf id0" c_read id  0ia/a23/pcmcia/at9pcmc_SMC_CSR23/pcmcia/at91_pcmc_SMC_CSRde=board" class="sref">board./a>->.a href="+code=det_pin" class="sref">det_pin./a>);u3117./a>u3 62./a>.spaa class="co1mment">/*1------------------------1-----162RD */./spaalu3100./a>v3 3 3  v3 3 rs/pcmcia1/at91_cf.c#L64" id  L64"1 clas163 indicates I/O space;  A25 eeeeeeee* at91_c>.63100./a>v3 3 3  v3 3 r long   1e=at91_cf_ss_init" class1="sre161} is nREG to flag memory aceeeeeeee* MAP_AUTOSZ.  hree16a hrm/at allows single byter" clas cf.pcmciaass="line" nam
  L100">3100./a>v3 3 3  v3 3 rers/pcmc1a/at91_cf.c#L66" id  L661" cla16 2KB/reg13"
would just be waeeeeeeee* D0-D7 (a hrL37" ) or D8-D15 (odd)ia/oeit's"
wose enough f7" can="line" nam
  L8">3 38./a>.spaa class="comme10;u3 .spaa class="comers/pcmci1a/at91_cf.c#L68" id  L681" cla16a/at91_cf.c#L38" id  L38" cleeeeeeee*s="line" nam
  L10">3 .spaa class="comers/pcmci1/at91_cf.c#L69" id  L69"1 clas16either vers13"
2 of the Liceeeeeeeee* hree8a hrm/at i  L77" clf7" odd byter" clas cf.D0-D7.  It seemss="line" nam
  L35">3 35./a>.spaa class="co1"+code=ir1qreturn_t" class="sref">1irqre16s13"../spaalu3 35./a>.spaa class="co1ers/pcmci1a/at91_cf.c#L71" id  L711" cla17a/at91_cf.c#L11" id  L11" cleeeeeeee*ef.c3.0f.cec table 35 al/oegiving"91_cD8-D15 91_cf.ss="line" nam
  L10">3 .spaa class="com.a href="1+code=at91_cf_socket" cl1ass="17/at91_cf.c#L2" id  L2" clasreeeeeeee*lass="line" nam
  L100">3100./a>v3 3 3  v3 3 rs/pcmcia1/at91_cf.c#L73" id  L73"1 clas17 href="drivers/pcmgpio_to_irq" clasof">cf./a>->.i=s="lref="drivers/pcmcia/L35"1class="sref">atL35"1="+code=so/=at91_cf_socket"MAP_16BIass="sref">SS_3VMAP_16BIaa>;uatMAP_AUTOSZa hreline" nam
  L99">3 99./a>v3 3 3  v3 3 3 1href="+co1de=irq" class="sref">irq1./a> 17dy./a> || .a href="+cainer_of" class=st91_cf.c#L55" idcsts="lea href="drivers/pcpcmc_SMC_DBW_823/pcmcia/at91_pcmc_SMC_DBW_8s="line" nam
  L117">3117./a>upresent./a> = ainer_of" classot;%s: card %s\n"./spaal,3.a href="+code=driver_nam
" clas8a hre/ofburiver_nam
./a>,u)u3 99./a>v3 3 3  v3 3 3 1h;u/* kick pc1card 1s needed */./spaaluaf="drivers/pcmcia/atca>)upresent./a> != .a hainer_of" classot;%s: card %s\n"./spaal,3.a href="+code=driver_nam
" clas16a hre/ofburiver_nam
./a>,u)ucf./a>->.e" nam
  L87">3 87./a>upr_deb./a>(.a href="+code=0" c_write23/pcmcia/at91_cf id0" c_write id  0ia/a23/pcmcia/at9pcmc_SMC_CSR23/pcmcia/at91_pcmc_SMC_CSRde=board" class="sref">board./a>->.a href="+code=det_pin" class="sref">det_pin./a>);u)u3 51./a>v3 3 3  struct31         1.a href="+code=pcmcia_pa1rse_e1ents" class="spio_to_irq" clasof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./a>(.a href="+code=suf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i="ers/pcf">af="drivers/pcmcia/atca>)uat91_cf_datcia/at91_cf.c#Lsof">cf./a>->.i=s="lref="drivers/pcmcia/stoc#L109" id  L109"tocf./a>(.a href="+code=ssof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./a>+="drivers/pcmcia/Z_2Kss="sref">SS_3VCZ_2Kf./a>- ne" nam
  L50">3 50./a>u3 54./a>v3 3 3  unsigne1rs/pcmcia1/at91_cf.c#L85" id  L85"1 clas18"sref">presenclass="line" nam
  L111">3111./a>}uIRQ_e" nam
  L87">3 87./a>u3 57./a>static .a href=1rs/pcmcia1/at91_cf.c#L88" id  L88"1 clas18a/at91_cf.c#L38" id  L38" c/* pa>sta laye" caps/uncaps id ft91_cfse*lass="line" nam
  L100">3100./a>v3 3 3  v3 3 ref="+cod1e=at91_cf_get_status" cl1ass="1ref">at91_cf_getne" nam
  L100">3100./a>v3 3 3  v3 3 r        1a/at91_cf.c#L90" id  L901" cla1s="lin./a>(struct3.a href="+coef"id "mappcmcia_socket" class="sref"id "mapa_socket./a>v*.a href="+code=sock" class="sref">sock./a>,3struct3.a href="+code=socket_sta" id  L115" class="lia/at91_cf.c#L111" id  L#L77" "id "mappcmcia_socket" #L77" "id "maphref="+code=socket_stmappcmcia_socket" maphrefine" nam
  L115">3115./a>{u3 71./a>v3 3 3  struct31rs/pcmcia1/at91_cf.c#L92" id  L92"1 clas19ref">platform_device./a>v3*.a href=+code=cf" class="sref">cf./a>;u3117./a>usp.1/a>)u19s="line" nam
  L113">3113./a>static intuEINVAL./sent./a>(.a href="+mappcmcia_socket" maphrefref="drivers/pcmcia/c7" "starid  25ent">/*./sc7" "starihrefine" nam
  L115">3115./a>{upresent./a> = ref="drivers/pcmcia/at91_cf.c#L94" id  L94" class="line" nam
  L94">3 94./a>ucf./a> =1 .a h19"line" nam
  L76">3 76./a>v3 3 3  v3 3 3 1rs/pcmcia1/at91_cf.c#L97" id  L97"1 clas196>at91_cf_datcia/at91_cf.c#L="sref">container_of./a>(.a href="+code=su/*./spaalu/* NOTE: CF is alw1ays 319s="line" nam
  L118">311ef="drivers/p.a hrhref="+co1de=at91_cf_present" clas1s="sr19f="+code=container_of" classmappcmcia_socket" maphrefref="drivers/pcmcia/L35"1class="sref">atL35"1="+code=so=/=at91_cf_socket"MAP_ACTIVEclass="sref">atMAP_ACTIVEa>;uatMAP_Ad  IBa>;uSS_3VMAP_16BIaa>;uef="drivers/pcmcia6./a>v3 3 3  v3 3 3 1rhref="incllude/linux/gpio.h" class= cla1dy./a> = .a hrsent./a>(.a href="+mappcmcia_socket" maphrefref="drivers/pcmcia/L35"1class="sref">atL35"1="+code=so="drivers/pcmciaMAP_id  IBclass="sref">atMAP_Ad  IBa>;uine" nam
  L115">3115./a>{u2cc./a> = .a href="+cod./a>(.a href="+mappcmcia_socket" maphrefref="drivers/pcmcia/t91_cf"starid  25ent">/*./st91_cf"starif./a>(.a href="+code=suf">socket./a>,3.a href="+code=SS_DETECT" cers/pcmcia/at91_cf.c#L55" id  L55" class="lin>+="drivers/pcmciadrivers/pcmcia/at91_cf.c#L39" id  L39" clase" nam
  L29">3 29./a>#include <platform="line" nam
  L108">3108./a>v3 3 3  v3 323  *.a hr2f="+code=sp" class="sref2>sp./2> = .a href="+code=SS_./a>(.a href="+mappcmcia_socket" maphrefref="drivers/pcmcia/t91_cf"starid  25ent">/*./st91_cf"starif./a>(.a href="+code=suf">socket./a>,3.a href="+code=SS_DETECT" cers/pcmcia/at91_cf.c#L55" id  L55" class="lin>+="drivers/pcmciadriref="drivers/pcmcia/at91_cf.c#L41" id e" nam
  L29">3 29./a>#include <3 54./a>v3 3 3  unsigne23  v3 3 32 *.a href="+code=sp" cla2s="sr20"sref">presenclass="line" nam
  L111">3111./a>}uIRQ_e" nam
  L87">3 87./a>u3 27./a>#include <c77" "opera_cf.csref"f.c#L111" id  L111" claop=pcmcia_socket" class="sop=f./a>(.e" nam
  L71">3 71./a>v3 3 3  struct323  *.a hr2f="+code=sp" class="sref2>sp./2> = 0;upcmcia_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2vers/pcmc2a/at91_cf.c#L110" id  L120" cl209= 0;udet_pin./suspen"a_soef="+code=SS____nt./a>(.a href="+code=cf"odesuspen"sref">det_pin./href="+codesuspen"a_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2n 0;upcmcia_so"+code=SS____nt./a>(.a href="+code=cf"ef="+code=pcmcia_socket" class="sref">pcmcia_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2ners/pcmc2ia/at91_cf.c#L112" id  L212" c211= 0;upcmcia_so"+code=SS____nt./a>(.a href="+code=cf"of="+code=pcmcia_socket" class="sref">pcmcia_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2n  *.a hr2a/at91_cf.c#L113" id  L123" cl212= 0;u(.a href="+code=cf"of="i="mappcmcia_socket" class="sref"i="mapa_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2n3 *.a hr2vers/pcmcia/at91_cf.c#L124" id213= 0;u(.a href="+code=cf"of="id "mappcmcia_socket" class="sref"id "mapa_so<" nam
  L97">3 97./a>v3 3 3  .spaa c2n  v3 3 32set_socket" class="sref"2at91_2f_set_ne" nam
  L56">3 56./a>u3 76./a>v3 3 3  v3 3 3 2t3.a href2"+code=at91_cf_socket" c2ass="21he physical base address../----------------*/./spaalu3 63./a>u311ef="drivers/p.a h2ef="+code2cf" class="sref">cf./a> 2 .a h21ef">at91_cf_get_status./a>(stru_e=pcmcia_socket" cla_pcmcia_sot./a>(.a href="+code=cf" cobe23/pcmcia/at91_cf idcf" cobea_socket./a>v*.a href="+code+code=pdev" class="sref">pdev./a>;u3115./a>{u3 90./a>v3 3 3  struct32m-frv/siz2se=s" class4">9n16. 9.6<2op3 c2ass="sref">at9_device./a>v3*.a href=+code=cf" class="sref">cf./a>;u3117./a>uplatform_device./a>v3*.a href=+code=cfd" class="sref">board./a>;uboa./a>;u3117./a>uat91_cf_data./a>v3 3 *.a href="+cresourclass="sref">pdevresourcla_so+code=SS_"+code=socket_stiof">cf./a>->.i=s="line" nam
  L117">3117./a>u || .a get_____________________drivers/pcmcia/t91_e=pcmcia_socket" >pcmcia_soine" nam
  L117">3117./a>u3 95./a>v3 3 3  .a href2 href="+a2mbig=include/asm-alpha/s2izes.22cc./a> || .a ode=gpio_get_	  >
" cf.c#L53" id  L53" class="lin=||./a>(.a href="+code=cfclass="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{ucf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3106./a>v3 3 3  v3 32 3.a href2/at91_cf.c#L27" id  L27"2 clas22">sp./a> |= .a href="ref="drivers/pcmcia/at91NODEV#L94" id  L94" cNODEVa_soine" nam
  L117">3117./a>u311ef="drivers/p.a h2 f="+code2clude/mach/at91rm9200_mc2.h" c22f="+code=container_of" classiof">cf./a>->.i=s="l="drivers/pcmcia/at/a>;updevt/a>;u = .a hrsent/a>(.a href="+coiof">cf./a>->.i=s="line" nam
  L115">3115./a>{u3117./a>u3 62./a>.spaa class="co2mment">/*2./spaaluat91_cf_datcia/at91_cf.c#L="sref">container_of./a>(.a href="+code=skzalloL106" id  L106" kzalloLa_sockizeofcmcia/at91_cf.c#L117" id  L117" class="lia/a23/pcmcia/at9GFP_KERNEc#L94" id  L94" GFP_KERNEca>;uef="drivers/pcmcia6./a>v3 3 3  v3 3 3 2mhref="in2llude/linux/kernel.h" cl2sass=23ref">EINVAL./sent/a>(.a href="+co58" id  L58" class="line" nam
  L58">3 58./a>{u *2 some other bit in {A24,2A22..23"sref">present./a> = ref="drivers/pcmcia/at91NOf.c52" id  L52" cl1NOf.ca_soine" nam
  L117">3117./a>u3 76./a>v3 3 3  v3 3 3 2mment"> *2 Note: These are offsets2 from236>at91_cf_datcia/at91_cf.c#L="sref">container_of./af="+code=det_pin" class="sref">det_pin./a>);u(.a href="+code=sass="sref">det_pin./a>);u3117./a>usocket./a>,3.a href="+code=SS_DETECT" cec#L52" id  L52" class="lin="drivers/pcmcia/atc#L52" id  L52" class="linine" nam
  L117">3117./a>uCF_23f="+code=container_of" class="sref">container_of./a="+code=SS_DETECT" cers/pcmcia/at91_cf.c#L55" id  L55" class="lin>(.a href="+code=ssof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./aine" nam
  L117">3117./a>u2CF_IO23"sref">pr_deb./a>(.a href="+t/a>;uboa./a>;u3 75./a>uCF_M24"line" nam
  L51">3 51./a>v3 3 3  struct32rs/pcmcia2/at91_cf.c#L42" id  L42"2 clas24nts" class="sp_cf.c#L38" id  L38" c/* must be a GPIO; ergo must trigger cf.both edgese*lass="line" nam
  L100">3100./a>v3 3 3  v3 32mment">/*2------------------------2-----24">at91_cf_datcia/at91_cf.c#Lt91_e=pcmcia_socket" >pcmcia_so/a>(.a href="+code=cf" requesid  25ent">/*./s=cf" requeside=board" class="sreass="sref">det_pin./a>))v{u;u3 81./a>v3 3 3  v3 3 3 2rs/pcmcia2/at91_cf.c#L44" id  L44"2 clas24ref">EINVAL./sent./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2rment"> *2f="+code=driver_nam
" cl2ass="24"sref">present./a> = goto>(.a href="+codefail0pcmcia_socket" fail0f./aine" nam
  L117">3117./a>upcmcia_so/a>(.a href="+coderequesi"sref">cf./a>->.requesi"srede=board" class="sre class="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{ucf./a>->.rd./a>;usre"linia03 75./a>u *291_cf_socket" class="sre2f">at246ef">EINVAL./sent./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2rers/pcmc2+code=pcmcia_socket" cla2ss="s24">present./a> != .a hgoto>(.a href="+codefail00pcmcia_socket" fail00f./aine" nam
  L117">3117./a>u)u3 24./a>#include <pcmcia_so/a>(.a href="+code=cf" requesid  25ent">/*./s=cf" requeside=board" class="sreass="sref">det_pin./a>))v{u;ursa81" class="line" nam
  L81">3 81./a>v3 3 3  v3 3 3 2.a href="2+code=platform_device" c2lass=25nts" class="ssent./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2.a href="2+code=at91_cf_data" clas2s="sr25 = .a href="+code=SS_goto>(.a href="+codefail0class="sref">boafail0cf./aine" nam
  L117">3117./a>u3 54./a>v3 3 3  unsigne2d long   2        .a href="+code=p2hys_b2seaddr" class=sent./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 99./a>v3 3 3  v3 3 3 2vers/pcmc2ia/at91_cf.c#L56" id  L526" cl25cc./a> || .a href="+cainer_of" classt91_e=pcmcia_socket" >pcmcia_so/a>(.a href="+code=cf" requesid  25ent">/*./s=cf" requeside=board" class="sreass="sref">det_pin./a>))v{u;u01"81" class="line" nam
  L81">3 81./a>v3 3 3  v3 3 3 2.ment"> *2/at91_cf.c#L57" id  L57"2 clas25">sp./a> |= .a href="sent./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2.ers/pcmc2line" class="sref">inlin2e./a>25">present./a> != .a h+code=SSgoto>(.a href="+codefail0blass="sref">boafail0bf./aine" nam
  L117">3117./a>ucf./a>->.e" nam
  L87">3 87./a>u
" c2lass=25L24">3 24./a>#include <at91_cf_socket./a>v3 *.a hrass="line" nam
  L100">3100./a>v3 3 3  v3 32rs/pcmcia2/at91_cf.c#L62" id  L62"2 clas26/at91_cf.c#L2" id  L2" clasreeeeeeee* hree77"  L100"> will requesic>.6 a  L77" css="line" nam
  L10">3 .spaa class="co2mment">/*2------------------------2-----262RD *_cf.c#L2" id  L2" clasreeeeeeee* but ite77uses lots of 81" cl+coNN: nobodye77"ed81" cl messagess="line" nam
  L35">3 35./a>.spaa class="co2rs/pcmcia2/at91_cf.c#L64" id  L64"2 clas263 indicates I/O space;  A25 eeeeeeee* unllasewe reports/pct we2h c1ll e3 3y>.6ng (sigh)ss="line" nam
  L10">3 .spaa class="co2r long   2e=at91_cf_ss_init" class2="sre261} is nREG to flag memory aceeeeeeee* (Note:  DK a>))v doesn'tfwire"91_c1RQ cla...)s="line" nam
  L10">3 .spaa class="co2rers/pcmc2a/at91_cf.c#L66" id  L662" cla26 2KB/reg13"
would just be waeeeeeeee*lass="line" nam
  L100">3100./a>v3 3 3  v3 320;uEINVAL./sent./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 99./a>v3 3 3  v3 3 3 2ers/pcmci2a/at91_cf.c#L68" id  L682" cla26">present./a> != .a hainer_of" classt91_e=pcmcia_socket" >pcmcia_so/a>(.a href="+code=cf" requesid  25ent">/*./s=cf" requeside=board" class="sreass="sref">det_pin./a>))v{u;uu3 81./a>v3 3 3  v3 3 3 2ers/pcmci2/at91_cf.c#L69" id  L69"2 clas26>cf./a>->.a href="sent./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2"+code=ir2qreturn_t" class="sref">2irqre26"sref">pr_debug./a>(.spaa clagoto>(.a href="+codefail0L106" id  L106" fail0Lf./aine" nam
  L117">3117./a>u = .a href="+cod./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/a>(.a href="+coderequesi"sref">cf./a>->.requesi"srede=board" class="sre class="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u;usref">cf./a>->.rd./a>;usre"linine" nam
  L117">3117./a>upcm = .a href="+cod./a>(.a href="+1RQF_SHAREcf.c#L103" id  L1RQF_SHAREc"linea/a23/pcmcia/at9pcmcia/at91_cf.c#L80" id  L80" class="linea/a23/pcmcia/at9L75" id  L75" class="line" nam
  L75">3 75./a>upcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 2href="+co2de=irq" class="sref">irq2./a> 27dy./a> || .a href="+cspaa clagoto>(.a href="+codefail0"sref">det_pin./fail0"f./aine" nam
  L117">3117./a>upresent./a> = ainer_of" classuf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.pciusrea_so/a>(.a href="+code=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3117./a>u3117./a>u/* kick pc2card 2s needed */./spaalusocket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.pciusrea_so/a>(.a href="+codenrusre=pcmcia_socket" nrusre=a_so/+ ne" nam
  L50">3 50./a>u311ef="drivers/p.a h2rrs/pcmci2.a href="+code=cf" class2="sre2">cf./a>->.1_cf.c#L38" id  L38" c/* pa>sta laye" cfly recaps 81" clt9al81" cl memory not io.c#L3e*lass="line" nam
  L100">3100./a>v3 3 3  v3 32         2.a href="+code=pr_debug"2 clas2="sref">pr_deb./a>(.a href="+uf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i="ers/pcf">a/a>(unsigned longe" nam
  L81">3 81./a>v3 3 3  v3 3 3 2         2v3 3 3          .a href=2"+cod28present" class="sref">presentdrivers/pcmcia/i=recapf">cf./a>->.i=recapde=board" class="sreuf">socket./a>,3.a href="+code=SS_DETECT" cers/pcmcia/at91_cf.c#L55" id  L55" class="lin>+="drivers/pcmciadriIO="drivers/pcmcia/at91_cIO="dri"linea/a23/pcmcia/at9/Z_2Kss="sref">SS_3VCZ_2Kf./arine" nam
  L117">3117./a>uSS_DETECT./a>);ucf./a>->.i="ers/pcf">aine" nam
  L99">3 99./a>v3 3 3  v3 3 3 2 }u(.a href="+t91_e=pcmcia_socket" >pcmcia_so/a>ivers/pcmcia/at91NXIOpcmcia_socket" 1NXIOf./aine" nam
  L117">3117./a>u || .a href="+cgoto>(.a href="+codefail1pcmcia_socket" fail1f./aine" nam
  L117">3117./a>upresene" nam
  L87">3 87./a>u3 76./a>v3 3 3  v3 3 3 2ers/pcmci2a/at91_cf.c#L87" id  L872" cla286cf./a>->.1_cf.c#L38" id  L38" c/* f="drve .hip-+v3.7.ft91_cfse*lass="line" nam
  L100">3100./a>v3 3 3  v3 32rs/pcmcia2/at91_cf.c#L88" id  L88"2 clas287ts" class="ssent/a>(.a href="+corequesi"id "t91_cff">cf./a>->.requesi"id "t91_cfde=board" class="sresof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./aea/a23/pcmcia/at9resourcl_kizef">cf./a>->.resourcl_kizede=board" class="sresof">cf./a>->.i=s="lria/a23/pcmcia/at9pcmcia/at91_cf.c#L80" id  L80" class="lineine" nam
  L99">3 99./a>v3 3 3  v3 3 3 2 rs/pcmci2e=at91_cf_get_status" cl2ass="28>cf./a>->.a href="ainer_of" classt91_e=pcmcia_socket" >pcmcia_so/a>ivers/pcmcia/at91NXIOpcmcia_socket" 1NXIOf./aine" nam
  L117">3117./a>upr_debug./a>(.goto>(.a href="+codefail1pcmcia_socket" fail1f./aine" nam
  L117">3117./a>upresene" nam
  L87">3 87./a>u3 62./a>.spaa class="co2 href="+c2ode=sp" class="sref">sp.2/a>)u29">at91_cf_datcia/at91_cf.c#Lprusnfof">cf./a>->.prusnfode=boa,3.a href="+code=driver_nam
" classre= det #m
" cd, i= #m
" cdiver_nam
./a>,u3117./a>u || .a href="+c(.a href="+code=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{ucf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3117./a>u3 95./a>v3 3 3  .a href2="+code=c2f" class="sref">cf./a> =2 .a h29f="+code=container_of" class58" id  L58" class="lin="+code=SS_DETECT" class="sref">SS_DETECT./a>);u(.a href="+codeTHIS_MODULEclass="sref">atTHIS_MODULEf./aine" nam
  L117">3117./a>uat91_cf_datcia/at91_cf.c#L="sref">container_of./a="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.par38"a_so/a>de=socket" class="srtc#L52" id  L52" class="lin href="drivers/pcmcia/L52" id  L52" clss="linine" nam
  L117">3117./a>u/* NOTE: CF is alw2ays 3297="+code=container_of" classuf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);u(.de=socket" class="sr111" claop=pcmcia_socket" class="sop=f./aine" nam
  L117">3117./a>usocket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ude=socket" class="srtcc7" "sta_cf"op=pcmcia_socket" tcc7" "sta_cf"op=f./aine" nam
  L117">3117./a>upr_deb./a>(.a href="+uf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);u(.a href="+codeSS_CAP_PCCARcf.c#L103" id  LSS_CAP_PCCARca_so/atainer_of" classSS_CAP_STATIC_MAPf.c#L103" id  LSS_CAP_STATIC_MAPline" nam
  L95">3 95./a>v3 3 3  .a href33  int3.a3href="+code=vcc" class="3ref">3cc./a> = .a href="+codddddddddddddddddatainer_of" classSS_CAP_f.c#ALIGNf.c#L103" id  LSS_CAP_f.c#ALIGNf./aine" nam
  L117">3117./a>usocket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.map_kizea_so/a>(.a href="+codeSZ_2Kss="sref">SS_3VCZ_2Kf./aine" nam
  L117">3117./a>usp.3>sp./30">at91_cf_datcia/at91_cf.c#L="sref">container_of./a="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i=s="l[0].drivers/pcmcia/respcmcia_socket" resa_so/a>(.a href="+codeiof">cf./a>->.i=s="line" nam
  L117">3117./a>u3 54./a>v3 3 3  unsigne33  v3 3 33 *.a href="+code=sp" cla3s="sr30"sref">presen./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/a>(.a href="+code>,3strut91_st cl class="sref">sock./a>,3strut91_st cl classde=bode=socket" class="sr="sref">container_of./a="+code=SS_DETECT" class="sref">SS_DETECT./a>);u3117./a>u || .a ode=./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_so/<a0e" nam
  L81">3 81./a>v3 3 3  v3 3 3 33  v3 3 33 *.a href="+code=sp" cla3s="sr30 needed */./spaalu(.a href="+codefail/spaalu3117./a>u/* NOTE: CF is alw3#L10830s="line" nam
  L118">311ef="drivers/p.a h33  *.a hr3f="+code=sp" class="sref3>sp./3> = 0;u3111./a>}u3 24./a>#include <cf./a>->.release"id "t91_cfde=board" class="sresof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./aea/a23/pcmcia/at9resourcl_kizef">cf./a>->.resourcl_kizede=board" class="sresof">cf./a>->.i=s="lrrine" nam
  L117">3117./a>u#include <EINVAL./sent./a>(.a href="+58" id  L58" class="lin="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i="ers/pcf">ai3 24./a>#include <present./a> = ainer_of" classiouncapf">cf./a>->.i=uncapde=bo(void_status./a>(stru_e=oid f">cf./a>->._e=oid sref"*)b./a>(.a href="+uf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i="ers/pcf">arine" nam
  L117">3117./a>u || .a ode=./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 99./a>v3 3 3  v3 3 3 3t3.a href3"+code=at91_cf_socket" c3ass="31 needed */./spaalucf./a>->.free"srede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>udet_pin./fail0"f./a:3 24./a>#include <cf./a> 3 .a h31>cf./a>->.a href="ainer_of" classa hrefreef">cf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>upr_debe" nam
  L87">3 87./a>u9n16. 9.6<3op3 c321" id(.a href="+codefail0L106" id  L106" fail0Lf./a:3 24./a>#include <cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);ucf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>uboafail0bf./a:3 24./a>#include <presen./a>(.a href="+a hrefreef">cf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>uboafail0cf./a:3 24./a>#include <at91_cf_datcia/at91_cf.c#Lhref="pcmci_wakeuppcmcia_socket" href="pcmci_wakeupde=bode=socket" class="srtc#L52" id  L52" class="lin href="drivers/pcmcia/L52" id  L52" clss="lin, 0ef="drivers/pcmcia/atca>)ucf./a>->.free"srede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>u#include <pr_deb./a>(.a href="+a hrefreef">cf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>u#include <cf./a>->.kfreede=board" class="sreL75" id  L75" class="line" nam
  L75">3 75./a>u/*3./spaaluat91_cf_datclass="./a>(.a href="+t91_e=pcmcia_socket" >pcmcia_soe" nam
  L75">3 75./a>ue" nam
  L87">3 87./a>u *3 some other bit in {A24,3A22..33"line" nam
  L95">3 95./a>v3 3 3  .a href3rhref="+a3 (vs attributes).  So mo3re th33"linet91_cf_get_status./a>(stru_eexcmcia_socket" cla_pexcm>at91cket" class="sr111" claremovef">cf./a>->.111" claremovede=boket./a>v*.a href="+code+code=pdev" class="sref">pdev./a>;u3115./a>{u *3 Note: These are offsets3 from336>at9e" nam
  L99">3 99./a>v3 3 3  v3 3 3 3rers/pcmc3/./spaaluv3*.a href=+code=cf" class="sref">cf./a>;u;uboa./a>;u3 75./a>uCF_33f="+code=cont_device./a>v3*.a href=+code=cfd" class="sref">board./a>;ucontainer_of./af="+code=det_pin" class="sref">det_pin./a>);u3 75./a>u3CF_IO33"sref">pr_deba./a>v3 3 *.a href="+cresourclass="sref">pdevresourcla_so+code=SS_"+code=socket_stiof">cf./a>->.i=s="l>(.a href="+code=suf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i=s="l[0].drivers/pcmcia/respcmcia_socket" resa_soe" nam
  L75">3 75./a>uCF_M34"line" nam
  L51">3 51./a>v3 3 3  struct33rs/pcmcia3/at91_cf.c#L42" id  L42"3 clas34nts" class="spio_to_irq" cla>,3struunt91_st cl class="sref">sock./a>,3struunt91_st cl classde=bode=socket" class="sr="sref">container_of./a="+code=SS_DETECT" class="sref">SS_DETECT./a>);u3117./a>u/*3------------------------3-----34">at91_cf_datcia/at91_cf.c#Lrelease"id "t91_cff">cf./a>->.release"id "t91_cfde=board" class="sresof">cf./a>->.i=s="lref="drivers/pcmcia/starid  25ent">/*./sptarif./aea/a23/pcmcia/at9resourcl_kizef">cf./a>->.resourcl_kizede=board" class="sresof">cf./a>->.i=s="lrrine" nam
  L117">3117./a>uEINVAL./ainer_of" classiouncapf">cf./a>->.i=uncapde=bo(void_status./a>(stru_e=oid f">cf./a>->._e=oid sref"*)b./a>(.a href="+uf">socket./a>,3.a href="+code=SS_DETECT" class="sref">SS_DETECT./a>);ucf./a>->.i="ers/pcf">arine" nam
  L117">3117./a>u *3f="+code=driver_nam
" cl3ass="34"sref">presensent./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 99./a>v3 3 3  v3 3 3 3rs/pcmcia3/at91_cf.c#L46" id  L46"3 clas34cc./a> || .a href="+cainer_of" classfree"sref">cf./a>->.free"srede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>u *391_cf_socket" class="sre3f">at34 needed */./spaalucf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>upresent./a>e" nam
  L87">3 87./a>ucf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);upr_debug./a>(../a>(.a href="+a hrefreef">cf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>ucf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>u)uat91_cf_datcia/at91_cf.c#Lfree"sref">cf./a>->.free"srede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>uEINVAL./ainer_of" classa hrefreef">cf./a>->.a hrefreede=board" class="sreass="sref">det_pin./a>))v{u3 75./a>upresen./a>(.a href="+kfreef">cf./a>->.kfreede=board" class="sreL75" id  L75" class="line" nam
  L75">3 75./a>u || .a class="line" nam
  L111">3111./a>}u *3/at91_cf.c#L57" id  L57"3 clas35">sp.e" nam
  L87">3 87./a>uinlin3e./a>35s="line" nam
  L118">311ef="drivers/p.a h3.f="+code3a/at91_cf.c#L59" id  L593" cla35>cf./#ifdefen./a>(.a href="+CONFIG_Pc52" id  L52" clCONFIG_Pc="line" nam
  L118">311ef="drivers/p.a h3.        3"+code=gpio_get_	  >
" c3lass=35L24">3 24./a>#include <det_pin./href="+couspen"a_sooket./a>v*.a href="+code+code=pdev" class="sref">pdev./a>;usock./a>m_message_s>at91cket" class="srmesg="sref">sock./amesg"linine" nam
  L115">3115./a>{u3 99./a>v3 3 3  v3 3 3 3mment">/*3------------------------3-----36">at91_cf_data./a>v3 3 *.a href="+c+code=cf" class="sref">cf./a>;u;uboa./a>;u3 75./a>uat91_cf_data./a>v3 3 *.a href="+c+code=cfd" class="sref">board./a>;ucontainer_of./af="+code=det_pin" class="sref">det_pin./a>);u3 75./a>u3 95./a>v3 3 3  .a href3rers/pcmc3a/at91_cf.c#L66" id  L663" cla36cc./a> || .a ode=./a>(.a href="+href="pmay_wakeuppcmcia_socket" href="pmay_wakeupde=bode=socket" class="srtc#L52" id  L52" class="lin href="drivers/pcmcia/L52" id  L52" clss="linrine" nam
  L99">3 99./a>v3 3 3  v3 3 3 30;ucf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>upresent./a> != .a hsent./a>(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 75./a>ucf./a>->.a href="paalucf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3117./a>u3irqre36"sref">pr_debe" nam
  L87">3 87./a>u = .a hrclass="line" nam
  L111">3111./a>}u3 87./a>u/*3/at91_cf.c#L73" id  L73"3 clas37 = .a" nam
  L87">3 87./a>uirq3./a> 37dy./at91_cf_get_status./a>(stru;uv*.a href="+code+code=pdev" class="sref">pdev./a>;u3 75./a>u3 99./a>v3 3 3  v3 3 3 3eers/pcmc3/at91_cf.c#L76" id  L76"3 clas37f="+code=conta./a>v3 3 *.a href="+c+code=cf" class="sref">cf./a>;u;uboa./a>;u3 75./a>u/* kick pc3card 3s needed */./sa./a>v3 3 *.a href="+c+code=cfd" class="sref">board./a>;ucontainer_of./af="+code=det_pin" class="sref">det_pin./a>);u3 75./a>u311ef="drivers/p.a h3rrs/pcmci3.a href="+code=cf" class3="sre37f="+code=contsent./a>(.a href="+href="pmay_wakeuppcmcia_socket" href="pmay_wakeupde=bode=socket" class="srtc#L52" id  L52" class="lin href="drivers/pcmcia/L52" id  L52" clss="linrine" nam
  L99">3 99./a>v3 3 3  v3 3 3 3         3.a href="+code=pr_debug"3 clas37"sref">pr_debug./a>(../a>(.a href="+disable"sre_wake52" id  L52" cldisable"sre_wakede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3 75./a>u(.a href="+=cf" class="sref">cf./a>->.a href="+code=board" class="sreass="sref">vcc_pin./a>);u3 75./a>upr_debug./a>(../a>(.a href="+disable"sre_wake52" id  L52" cldisable"sre_wakede=board" class="sre=cf" s="sref">cf./a>->.a href="+code=board" class="sreass="sref">det_pin./a>))v{u3117./a>u3 87./a>u3 54./a>v3 3 3  unsigne3e long   3/at91_cf.c#L85" id  L85"3 clas38"sref">presenclass="line" nam
  L111">3111./a>}u3 87./a>u3 87./a>u3117./a>udet_pin./href="+couspen"a_sobug./a>(../a>(.a href="+NULc#L94" id  L94" NULccf./" nam
  L87">3 87./a>u(stru;u(../a>(.a href="+NULc#L94" id  L94" NULccf./" nam
  L87">3 87./a>u3 87./a>u3 62./a>.spaa class="co3 href="+c3ode=sp" class="sref">sp.3/a>)u39">at9t91_cf_ket./a>v*.a href="+code+code=pde">3 6ass="sref">pdev./a>;u3 6>at91cket" class="srrd./a>;u<">3 6ass="sref">pdevrd./a>;u<">3 6"lin="de" nam
  L99">3 99./a>v3 3 3  v3 3 3 3 return -3.a href="+code=EINVAL" c3lass=39dy./a> || .a .drivers/pcmcia/a">3 6ass="sref">pdev<">3 6"lin="de" nam
  L99">3 99./a>v3 3 3  v3 3 3 3  long   3/at91_cf.c#L95" id  L95"3 clas39"sref">present./a> = .drivers/pcmcia/at91_cf.c#L80" id  ass="linsent./a> = = (char"*)b./a>(.a href="+pcmcia/at91_cf.c#L80" id  L80" class="linine" nam
  L117">3117./a>ucf./a> =3 .a h39cc./a> || .a href="+c.drivers/pcmcia/ownet91_cf.c#L55" idowneta_so/nt./a> = = drivers/pcmcia/THIS_MODULEclass="sref">atTHIS_MODULEf./aine" nam
  L117">3117./a>uat91_cf_dat}ine" nam
  L117">3117./a>u/* NOTE: CF is alw3ays 3397="+code=cont.drivers/pcmcia/removef">cf./a>->.removede=bnt./a> = = drivers/pcmcia/_pexcm_ppcmcia_socket" _pexcm_pde=board" class="sre111" claremovef">cf./a>->.111" claremovede=b)ine" nam
  L117">3117./a>udet_pin./ouspen"a_sobug./a>(= drivers/pcmcia/;udet_pin./href="+couspen"a_soine" nam
  L117">3117./a>upr_deb.drivers/pcmcia/resu91_cf.c#L80" id  resu91a_soebug./a>(= drivers/pcmcia/;u3117./a>u400f./a}ine" nam
  L111">3111./a>}u3 62./a>.spaa class="co4v2rs/pcmc4ade=sp" class="sref">sp.4>sp./402RD *_cf.c#L2" id  L2" clas/*--------------------------------------------------------------------------*lass="line" nam
  L100">3100./a>v3 3 3  v3 34v3 *.a hr4fa href="+code=EINVAL" c4sref"40"line" nam
  L54">3 54./a>v3 3 3  unsigne43  v3 3 34 *.a href="+code=sp" cla4s="sr40"sreft91_cf_get_status./a>(stru_ecmcipcmcia_socket" _pcmci>at91cket" class="srrd./a>;ucmcipcmcia_socket" rd./a>;ucmcide=bovoidi" nam
  L75">3 75./a>u3 99./a>v3 3 3  v3 3 3 43  v3 3 34 *.a href="+code=sp" cla4s="sr40 needed */./sclass="./a>(.a href="+./a>;u3 6_problass="sref">pdev./a>;u3 6_problde=bode=socket" class="srrd./a>;u<">3 6ass="sref">pdevrd./a>;u<">3 6"linia/a23/pcmcia/at9rd./a>;uproblass="sref">pdevrd./a>;uprobl"linne" nam
  L75">3 75./a>u/* NOTE: CF is alw4#L10840s="lie" nam
  L87">3 87./a>u;ucmcide=bne" nam
  L75">3 75./a>u3 24./a>#include <(stru_eexcmcia_socket" cla_pexcm>at91cket" class="sr111" claexcmcia_socket" cla111" claexcmde=bovoidi" nam
  L75">3 75./a>u3 99./a>v3 3 3  v3 3 3 4n  *.a hr4a/at91_cf.c#L113" id  L143" cl41">at91_cf_datcia/at91_cf.c#Lp/a>;u3 6_unt91_st cass="sref">pdev./a>;u3 6_unt91_st cde=bode=socket" class="srrd./a>;u<">3 6ass="sref">pdevrd./a>;u<">3 6"linne" nam
  L75">3 75./a>ue" nam
  L87">3 87./a>u3 75./a>u3 76./a>v3 3 3  v3 3 3 4t3.a href4"+code=at91_cf_socket" c4ass="41 needard" class="sreMODULE_DESCRIPTIONf.c#L103" id  LMODULE_DESCRIPTIONde=boa,3.a href="+code=driver_naAT91 Compa/a>Frefh D">3 781" class="line" nam
  L81">3 81./a>v3 3 3  v3 3 3 4vers/pcmc4a/at91_cf.c#L118" id  L148" cl4ss="li(.a href="+codeMODULE_AUTHORf.c#L103" id  LMODULE_AUTHORde=boa,3.a href="+code=driver_naDavid_Brownell81" class="line" nam
  L81">3 81./a>v3 3 3  v3 3 3 4v  *.a hr4cf" class="sref">cf./a> 4 .a h41f="+c(.a href="+codeMODULE_LICENSEclass="sref">atMODULE_LICENSEde=boa,3.a href="+code=driver_naGPL81" class="line" nam
  L81">3 81./a>v3 3 3  v3 3 3 4v9 *.a hr4/at91_cf.c#L1152ion>
ine4 nam
41"sref(.a href="+codeMODULE_ALIAivers/pcmcia/at9MODULE_ALIAide=boa,3.a href="+code=driver_na./a>;u3 81./a>v3 3 3  v3 3 3 4m-frv/siz4se=s" class4">9n16. 9.6<4op3 c421" id(/pred(/div>


(/div>


hreeoriginal LXR software by"91_c nam
  L8http://sourcl;uLXR  L2"umciy"linia>.6ux.no">lxc@4">ux.no"lin.
(/div>

lxc.4">ux.no kindly host d by" nam
  L8http://www.redpill-4">pro.no">Redpill L">pro Ai"lineaprovide" cf L">ux  Lnsult6ng and oper1_ccfse"drvicese"ince 1995.
(/div>