linux/drivers/ssb/pcmcia.c
<<
opti.6./spaue= .6./forme= .6.a opti.6 href="../linux+v3.7.4/drivers/ssb/pcmcia.c">opti.6.img src="../.static/gfx/right.png" alt=">>">op./spaue=op.spau class="lxr_search">optiopti.6.input typ vhidden" nam vnavtarget" > v">opti.6.input typ vtext" nam vsearch" id vsearch">opti.6.butt" typ vsubmit">Searchopti.6Prefs= .6./a>op./spaue=ti.6 6./dive=ti.6 6.form acvalu="ajax+*" method="post" onsubmit="return false;">op.input typ vhidden" nam vajax_lookup" id vajax_lookup" > v">oti.6 6./forme=oti.6 6.div class="headingbott"m">= .div id vfile_contents"e
6 61./a>.spau class="comment">/*./spaue=6 62./a>.spau class="comment"> * Sonics Silic"
	Backplane./spaue=6 63./a>.spau class="comment"> * PCMCIA-Hostbus related funcvalus./spaue=6 64./a>.spau class="comment"> *./spaue=6 65./a>.spau class="comment"> * Copyright 2006 Johannes Berg <johannes@sipsoluvalus.net>./spaue=6 66./a>.spau class="comment"> * Copyright 2007-2008 Michael Buesch <m@bues.ch>./spaue=6 67./a>.spau class="comment"> *./spaue=6 68./a>.spau class="comment"> * Licensed under the GNU/GPL. See COPYING for details../spaue=6 69./a>.spau class="comment"> */./spaue=6 n vaae=6 11./a>#include <linux/ssb/ssb.h./a>>=6 12./a>#include <linux/delay.h./a>>=6 13./a>#include <linux/io.h./a>>=6 14./a>#include <linux/etherdevice.h./a>>=6 15vaae=6 16./a>#include <pcmcia/cistpl.h./a>>=6 17./a>#include <pcmcia/ciscode.h./a>>=6 18./a>#include <pcmcia/ds.h./a>>=6 19./a>#include <pcmcia/cisreg.h./a>>=6 2 vaae=6 21./a>#include "ssb_private.h./a>"=6 22vaae=6 23vaae=6 24./a>.spau class="comment">/* Define the following to 1 to enable a printk on each coreswitch. */./spaue=6 25vaae#define .a href="+code=SSB_VERBOSE_PCMCIACORESWITCH_DEBUG" class="sref">SSB_VERBOSE_PCMCIACORESWITCH_DEBUGvaae              0=6 26vaae=6 27vaae=6 28./a>.spau class="comment">/* PCMCIA configura.3"
	registers */./spaue=6 29vaae#define .a href="+code=SSB_PCMCIA_ADDRESS0" class="sref">SSB_PCMCIA_ADDRESS0vaae             0x2E=6 30vaae#define .a href="+code=SSB_PCMCIA_ADDRESS1" class="sref">SSB_PCMCIA_ADDRESS1vaae             0x30=6 31vaae#define .a href="+code=SSB_PCMCIA_ADDRESS2" class="sref">SSB_PCMCIA_ADDRESS2vaae             0x32=6 32vaae#define .a href="+code=SSB_PCMCIA_MEMSEG" class="sref">SSB_PCMCIA_MEMSEGvaae               0x34=6 33vaae#define .a href="+code=SSB_PCMCIA_SPROMCTL" class="sref">SSB_PCMCIA_SPROMCTLvaae             0x36=6 34vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_IDLE" class="sref">SSB_PCMCIA_SPROMCTL_IDLEvaae       0=6 35vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_WRITE" class="sref">SSB_PCMCIA_SPROMCTL_WRITEvaae      1=6 36vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_READ" class="sref">SSB_PCMCIA_SPROMCTL_READvaae       2=6 37vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_WRITEEN" class="sref">SSB_PCMCIA_SPROMCTL_WRITEENvaae    4=6 38vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_WRITEDIS" class="sref">SSB_PCMCIA_SPROMCTL_WRITEDISvaae   7=6 39vaae#define  .a href="+code=SSB_PCMCIA_SPROMCTL_DONE" class="sref">SSB_PCMCIA_SPROMCTL_DONEvaae       8=6 40vaae#define .a href="+code=SSB_PCMCIA_SPROM_DATALO" class="sref">SSB_PCMCIA_SPROM_DATALOvaae         0x38=6 41vaae#define .a href="+code=SSB_PCMCIA_SPROM_DATAHI" class="sref">SSB_PCMCIA_SPROM_DATAHIvaae         0x3A=6 42vaae#define .a href="+code=SSB_PCMCIA_SPROM_ADDRLO" class="sref">SSB_PCMCIA_SPROM_ADDRLOvaae         0x3C=6 43vaae#define .a href="+code=SSB_PCMCIA_SPROM_ADDRHI" class="sref">SSB_PCMCIA_SPROM_ADDRHIvaae         0x3E=6 44vaae=6 45./a>.spau class="comment">/* Hardware invariants CIS tuples */./spaue=6 46vaae#define .a href="+code=SSB_PCMCIA_CIS" class="sref">SSB_PCMCIA_CISvaae                  0x80=6 47vaae#define  .a href="+code=SSB_PCMCIA_CIS_ID" class="sref">SSB_PCMCIA_CIS_IDvaae              0x01=6 48vaae#define  .a href="+code=SSB_PCMCIA_CIS_BOARDREV" class="sref">SSB_PCMCIA_CIS_BOARDREVvaae        0x02=6 49vaae#define  .a href="+code=SSB_PCMCIA_CIS_PA" class="sref">SSB_PCMCIA_CIS_PAvaae              0x03=6 50vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B0_LO" class="sref">SSB_PCMCIA_CIS_PA_PA0B0_LOvaae    0=6 51vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B0_HI" class="sref">SSB_PCMCIA_CIS_PA_PA0B0_HIvaae    1=6 52vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B1_LO" class="sref">SSB_PCMCIA_CIS_PA_PA0B1_LOvaae    2=6 53vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B1_HI" class="sref">SSB_PCMCIA_CIS_PA_PA0B1_HIvaae    3=6 54vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B2_LO" class="sref">SSB_PCMCIA_CIS_PA_PA0B2_LOvaae    4=6 55vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_PA0B2_HI" class="sref">SSB_PCMCIA_CIS_PA_PA0B2_HIvaae    5=6 56vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_ITSSI" class="sref">SSB_PCMCIA_CIS_PA_ITSSIvaae       6=6 57vaae#define   .a href="+code=SSB_PCMCIA_CIS_PA_MAXPOW" class="sref">SSB_PCMCIA_CIS_PA_MAXPOWvaae      7=6 58vaae#define  .a href="+code=SSB_PCMCIA_CIS_OEMNAME" class="sref">SSB_PCMCIA_CIS_OEMNAMEvaae         0x04=6 59vaae#define  .a href="+code=SSB_PCMCIA_CIS_CCODE" class="sref">SSB_PCMCIA_CIS_CCODEvaae           0x05=6 60vaae#define  .a href="+code=SSB_PCMCIA_CIS_ANTENNA" class="sref">SSB_PCMCIA_CIS_ANTENNAvaae         0x06=6 61vaae#define  .a href="+code=SSB_PCMCIA_CIS_ANTGAIN" class="sref">SSB_PCMCIA_CIS_ANTGAINvaae         0x07=6 62vaae#define  .a href="+code=SSB_PCMCIA_CIS_BFLAGS" class="sref">SSB_PCMCIA_CIS_BFLAGSvaae          0x08=6 63vaae#define  .a href="+code=SSB_PCMCIA_CIS_LEDS" class="sref">SSB_PCMCIA_CIS_LEDSvaae            0x09=6 64vaae=6 65./a>.spau class="comment">/* PCMCIA SPROM size. */./spaue=6 66vaae#define .a href="+code=SSB_PCMCIA_SPROM_SIZE" class="sref">SSB_PCMCIA_SPROM_SIZEvaae           256=6 67vaae#define .a href="+code=SSB_PCMCIA_SPROM_SIZE_BYTES" class="sref">SSB_PCMCIA_SPROM_SIZE_BYTESvaae     (.a href="+code=SSB_PCMCIA_SPROM_SIZE" class="sref">SSB_PCMCIA_SPROM_SIZEvaae * sizeof(.a href="+code=u16" class="sref">u16./a>))=6 68vaae=6 69vaae=6 70./a>.spau class="comment">/* Write to a PCMCIA configura.3"
	register. */./spaue=6 71vaaestatic int .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=  >
 " class="sref">  >
 ./a>)=6 72vaae{=6 73vaae        int .a href="+code=res" class="sref">resvaae;=6 74vaae=6 75vaae        .a href="+code=res" class="sref">resvaae = .a href="+code=pcmcia_write_config_byte" class="sref">pcmcia_write_config_bytevaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=host_pcmcia" class="sref">host_pcmciavaae, .a href="+code=offset" class="sref">offsetvaae, .a href="+code=  >
 " class="sref">  >
 ./a>);=6 76vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=res" class="sref">resvaae != 0))=6 77vaae                return -.a href="+code=EBUSY" class="sref">EBUSYvaae;=6 78vaae=6 79vaae        return 0;=6 80./a>}=6 81vaae=6 82./a>.spau class="comment">/* Read from a PCMCIA configura.3"
	register. */./spaue=6 83vaaestatic int .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u8" class="sref">u8vaae *.a href="+code=  >
 " class="sref">  >
 ./a>)=6 84vaae{=6 85vaae        int .a href="+code=res" class="sref">resvaae;=6 86vaae=6 87vaae        .a href="+code=res" class="sref">resvaae = .a href="+code=pcmcia_read_config_byte" class="sref">pcmcia_read_config_bytevaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=host_pcmcia" class="sref">host_pcmciavaae, .a href="+code=offset" class="sref">offsetvaae, .a href="+code=  >
 " class="sref">  >
 ./a>);=6 88vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=res" class="sref">resvaae != 0))=6 89vaae                return -.a href="+code=EBUSY" class="sref">EBUSYvaae;=6 9 vaae=6 91vaae        return 0;=6 92./a>}=6 93vaae=6 94vaaeint .a href="+code=ssb_pcmcia_switch_coreidx" class="sref">ssb_pcmcia_switch_coreidxvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae,=6 95vaae                              .a href="+code=u8" class="sref">u8vaae .a href="+code=coreidx" class="sref">coreidxvaae)=6 96vaae{=6 97vaae        int .a href="+code=err" class="sref">errvaae;=6 98vaae        int .a href="+code=attempts" class="sref">attemptsvaae = 0;=6 99vaae        .a href="+code=u32" class="sref">u32vaae .a href="+code=cur_core" class="sref">cur_corevaae;=6100vaae        .a href="+code=u32" class="sref">u32vaae .a href="+code=addr" class="sref">addrvaae;=6101vaae        .a href="+code=u32" class="sref">u32vaae .a href="+code=read_addr" class="sref">read_addrvaae;=6102vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=  >" class="sref">  >vaae;=6103vaae=6104vaae        .a href="+code=addr" class="sref">addrvaae = (.a href="+code=coreidx" class="sref">coreidxvaae * .a href="+code=SSB_CORE_SIZE" class="sref">SSB_CORE_SIZEvaae) + .a href="+code=SSB_ENUM_BASE" class="sref">SSB_ENUM_BASEvaae;=6105vaae        while (1) {=6106vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS0" class="sref">SSB_PCMCIA_ADDRESS0vaae,=6107vaae                                           (.a href="+code=addr" class="sref">addrvaae & 0x0000F000) >> 12);=6108vaae                if (.a href="+code=err" class="sref">errvaae)=6109vaae                        goto .a href="+code=error" class="sref">errorvaae;=6110vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS1" class="sref">SSB_PCMCIA_ADDRESS1vaae,=6111vaae                                           (.a href="+code=addr" class="sref">addrvaae & 0x00FF0000) >> 16);=6112vaae                if (.a href="+code=err" class="sref">errvaae)=6113vaae                        goto .a href="+code=error" class="sref">errorvaae;=6114vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS2" class="sref">SSB_PCMCIA_ADDRESS2vaae,=6115vaae                                           (.a href="+code=addr" class="sref">addrvaae & 0xFF000000) >> 24);=6116vaae                if (.a href="+code=err" class="sref">errvaae)=6117vaae                        goto .a href="+code=error" class="sref">errorvaae;=6118vaae=6119vaae                .a href="+code=read_addr" class="sref">read_addrvaae = 0;=612 vaae=6121vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS0" class="sref">SSB_PCMCIA_ADDRESS0vaae, &.a href="+code=  >" class="sref">  >vaae);=6122vaae                if (.a href="+code=err" class="sref">errvaae)=6123vaae                        goto .a href="+code=error" class="sref">errorvaae;=6124vaae                .a href="+code=read_addr" class="sref">read_addrvaae |= ((.a href="+code=u32" class="sref">u32vaae)(.a href="+code=  >" class="sref">  >vaae & 0x0F)) <<612;=6125vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS1" class="sref">SSB_PCMCIA_ADDRESS1vaae, &.a href="+code=  >" class="sref">  >vaae);=6126vaae                if (.a href="+code=err" class="sref">errvaae)=6127vaae                        goto .a href="+code=error" class="sref">errorvaae;=6128vaae                .a href="+code=read_addr" class="sref">read_addrvaae |= ((.a href="+code=u32" class="sref">u32vaae).a href="+code=  >" class="sref">  >vaae) <<616;=6129vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_ADDRESS2" class="sref">SSB_PCMCIA_ADDRESS2vaae, &.a href="+code=  >" class="sref">  >vaae);=6130vaae                if (.a href="+code=err" class="sref">errvaae)=6131vaae                        goto .a href="+code=error" class="sref">errorvaae;=6132vaae                .a href="+code=read_addr" class="sref">read_addrvaae |= ((.a href="+code=u32" class="sref">u32vaae).a href="+code=  >" class="sref">  >vaae) <<624;=6133vaae=6134vaae                .a href="+code=cur_core" class="sref">cur_corevaae = (.a href="+code=read_addr" class="sref">read_addrvaae - .a href="+code=SSB_ENUM_BASE" class="sref">SSB_ENUM_BASEvaae) / .a href="+code=SSB_CORE_SIZE" class="sref">SSB_CORE_SIZEvaae;=6135vaae                if (.a href="+code=cur_core" class="sref">cur_corevaae == .a href="+code=coreidx" class="sref">coreidxvaae)=6136vaae                        break;=6137vaae=6138vaae                .a href="+code=err" class="sref">errvaae = -.a href="+code=ETIMEDOUT" class="sref">ETIMEDOUTvaae;=6139vaae                if (.a href="+code=attempts" class="sref">attemptsvaae++ > .a href="+code=SSB_BAR0_MAX_RETRIES" class="sref">SSB_BAR0_MAX_RETRIESvaae)=6140vaae                        goto .a href="+code=error" class="sref">errorvaae;=6141vaae                .a href="+code=udelay" class="sref">udelayvaae(10);=6142vaae        }=6143vaae=6144vaae        return 0;=6145./a>.a href="+code=error" class="sref">errorvaae:=6146vaae        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_ERR" class="sref">KERN_ERRvaae .a href="+code=PFX" class="sref">PFXvaae .spau class="string">"Failed to switch to core %u\n"coreidxvaae);=6147vaae        return .a href="+code=err" class="sref">errvaae;=6148vaae}=6149vaae=6150vaaeint .a href="+code=ssb_pcmcia_switch_core" class="sref">ssb_pcmcia_switch_corevaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae,=6151vaae                           struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae)=6152vaae{=6153vaae        int .a href="+code=err" class="sref">errvaae;=6154vaae=6155vaae#if .a href="+code=SSB_VERBOSE_PCMCIACORESWITCH_DEBUG" class="sref">SSB_VERBOSE_PCMCIACORESWITCH_DEBUGvaae=6156vaae        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_INFO" class="sref">KERN_INFOvaae .a href="+code=PFX" class="sref">PFXvaae=6157vaae                   .spau class="string">"Switching to %s core, index %d\n"6158vaae                   .a href="+code=ssb_core_nam " class="sref">ssb_core_nam vaae(.a href="+code=dev" class="sref">devvaae->.a href="+code=id" class="sref">idvaae..a href="+code=coreid" class="sref">coreidvaae),=6159vaae                   .a href="+code=dev" class="sref">devvaae->.a href="+code=core_index" class="sref">core_indexvaae);=6160vaae#endif=6161vaae=6162vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_switch_coreidx" class="sref">ssb_pcmcia_switch_coreidxvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=dev" class="sref">devvaae->.a href="+code=core_index" class="sref">core_indexvaae);=6163vaae        if (!.a href="+code=err" class="sref">errvaae)=6164vaae                .a href="+code=bus" class="sref">busvaae->.a href="+code=mapped_device" class="sref">mapped_devicevaae = .a href="+code=dev" class="sref">devvaae;=6165vaae=6166vaae        return .a href="+code=err" class="sref">errvaae;=6167vaae}=6168vaae=6169vaaeint .a href="+code=ssb_pcmcia_switch_segment" class="sref">ssb_pcmcia_switch_segmentvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=seg" class="sref">segvaae)=6170./a>{=6171vaae        int .a href="+code=attempts" class="sref">attemptsvaae = 0;=6172vaae        int .a href="+code=err" class="sref">errvaae;=6173vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=  >" class="sref">  >vaae;=6174vaae=6175vaae        .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae((.a href="+code=seg" class="sref">segvaae != 0) && (.a href="+code=seg" class="sref">segvaae != 1));=6176vaae        while (1) {=6177vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_MEMSEG" class="sref">SSB_PCMCIA_MEMSEGvaae, .a href="+code=seg" class="sref">segvaae);=6178vaae                if (.a href="+code=err" class="sref">errvaae)=6179vaae                        goto .a href="+code=error" class="sref">errorvaae;=6180vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_MEMSEG" class="sref">SSB_PCMCIA_MEMSEGvaae, &.a href="+code=  >" class="sref">  >vaae);=6181vaae                if (.a href="+code=err" class="sref">errvaae)=6182vaae                        goto .a href="+code=error" class="sref">errorvaae;=6183vaae                if (.a href="+code=  >" class="sref">  >vaae == .a href="+code=seg" class="sref">segvaae)=6184vaae                        break;=6185vaae=6186vaae                .a href="+code=err" class="sref">errvaae = -.a href="+code=ETIMEDOUT" class="sref">ETIMEDOUTvaae;=6187vaae                if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=attempts" class="sref">attemptsvaae++ > .a href="+code=SSB_BAR0_MAX_RETRIES" class="sref">SSB_BAR0_MAX_RETRIESvaae))=6188vaae                        goto .a href="+code=error" class="sref">errorvaae;=6189vaae                .a href="+code=udelay" class="sref">udelayvaae(10);=6190vaae        }=6191vaae        .a href="+code=bus" class="sref">busvaae->.a href="+code=mapped_pcmcia_seg" class="sref">mapped_pcmcia_segvaae = .a href="+code=seg" class="sref">segvaae;=6192vaae=6193vaae        return 0;=6194vaae.a href="+code=error" class="sref">errorvaae:=6195vaae        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_ERR" class="sref">KERN_ERRvaae .a href="+code=PFX" class="sref">PFXvaae .spau class="string">"Failed to switch pcmcia segment\n"6196vaae        return .a href="+code=err" class="sref">errvaae;=6197vaae}=6198vaae=6199vaaestatic int .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae,=6200vaae                                   .a href="+code=u16" class="sref">u16./a> *.a href="+code=offset" class="sref">offsetvaae)=6201vaae{=6202vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6203vaae        int .a href="+code=err" class="sref">errvaae;=6204vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=need_segment" class="sref">need_segmentvaae;=6205vaae=6206vaae        if (*.a href="+code=offset" class="sref">offsetvaae >= 0x800) {=6207vaae                *.a href="+code=offset" class="sref">offsetvaae -= 0x800;=6208vaae                .a href="+code=need_segment" class="sref">need_segmentvaae = 1;=6209vaae        } else=6210vaae                .a href="+code=need_segment" class="sref">need_segmentvaae = 0;=6211vaae=6212vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=dev" class="sref">devvaae != .a href="+code=bus" class="sref">busvaae->.a href="+code=mapped_device" class="sref">mapped_devicevaae)) {=6213vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_switch_core" class="sref">ssb_pcmcia_switch_corevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=dev" class="sref">devvaae);=6214vaae                if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=err" class="sref">errvaae))=6215vaae                        return .a href="+code=err" class="sref">errvaae;=6216vaae        }=6217vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=need_segment" class="sref">need_segmentvaae != .a href="+code=bus" class="sref">busvaae->.a href="+code=mapped_pcmcia_seg" class="sref">mapped_pcmcia_segvaae)) {=6218vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_switch_segment" class="sref">ssb_pcmcia_switch_segmentvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=need_segment" class="sref">need_segmentvaae);=6219vaae                if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=err" class="sref">errvaae))=6220vaae                        return .a href="+code=err" class="sref">errvaae;=6221vaae        }=6222vaae=6223vaae        return 0;=6224vaae}=6225vaae=6226vaaestatic .a href="+code=u8" class="sref">u8vaae .a href="+code=ssb_pcmcia_read8" class="sref">ssb_pcmcia_read8vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae)=6227vaae{=6228vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6229vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6230vaae        int .a href="+code=err" class="sref">errvaae;=6231vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=  >
 " class="sref">  >
 ./a> = 0xFF;=6232vaae=6233vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6234vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6235vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae))=6236vaae                .a href="+code=  >
 " class="sref">  >
 ./a> = .a href="+code=readb" class="sref">readbvaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6237vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6238vaae=6239vaae        return .a href="+code=  >
 " class="sref">  >
 ./a>;=6240./a>}=6241vaae=6242vaaestatic .a href="+code=u16" class="sref">u16./a> .a href="+code=ssb_pcmcia_read16" class="sref">ssb_pcmcia_read16vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae)=6243vaae{=6244vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6245vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6246vaae        int .a href="+code=err" class="sref">errvaae;=6247vaae        .a href="+code=u16" class="sref">u16./a> .a href="+code=  >
 " class="sref">  >
 ./a> = 0xFFFF;=6248vaae=6249vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6250vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6251vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae))=6252vaae                .a href="+code=  >
 " class="sref">  >
 ./a> = .a href="+code=readw" class="sref">readwvaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6253vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6254vaae=6255vaae        return .a href="+code=  >
 " class="sref">  >
 ./a>;=6256vaae}=6257vaae=6258vaaestatic .a href="+code=u32" class="sref">u32vaae .a href="+code=ssb_pcmcia_read32" class="sref">ssb_pcmcia_read32vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae)=6259vaae{=6260vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6261vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6262vaae        int .a href="+code=err" class="sref">errvaae;=6263vaae        .a href="+code=u32" class="sref">u32vaae .a href="+code=lo" class="sref">lo./a> = 0xFFFFFFFF, .a href="+code=hi" class="sref">hi./a> = 0xFFFFFFFF;=6264vaae=6265vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6266vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6267vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae)) {=6268vaae                .a href="+code=lo" class="sref">lo./a> = .a href="+code=readw" class="sref">readwvaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6269vaae                .a href="+code=hi" class="sref">hi./a> = .a href="+code=readw" class="sref">readwvaae(.a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae + 2);=6270vaae        }=6271vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6272vaae=6273vaae        return (.a href="+code=lo" class="sref">lo./a> | (.a href="+code=hi" class="sref">hi./a> <<616));=6274vaae}=6275vaae=6276vaae#ifdef .a href="+code=CONFIG_SSB_BLOCKIO" class="sref">CONFIG_SSB_BLOCKIOvaae=6277vaaestatic void .a href="+code=ssb_pcmcia_block_read" class="sref">ssb_pcmcia_block_readvaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, void *.a href="+code=buffer" class="sref">buffervaae,=6278vaae                                  .a href="+code=size_t" class="sref">size_tvaae .a href="+code=count" class="sref">countvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=reg_width" class="sref">reg_widthvaae)=6279vaae{=6280vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6281vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6282vaae        void .a href="+code=__iomem" class="sref">__iomemvaae *.a href="+code=addr" class="sref">addrvaae = .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae;=6283vaae        int .a href="+code=err" class="sref">errvaae;=6284vaae=6285vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6286vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6287vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=err" class="sref">errvaae)) {=6288vaae                .a href="+code=memset" class="sref">memsetvaae(.a href="+code=buffer" class="sref">buffervaae, 0xFF, .a href="+code=count" class="sref">countvaae);=6289vaae                goto .a href="+code=unlock" class="sref">unlockvaae;=6290vaae        }=6291vaae        switch (.a href="+code=reg_width" class="sref">reg_widthvaae) {=6292vaae        case sizeof(.a href="+code=u8" class="sref">u8vaae): {=6293vaae                .a href="+code=u8" class="sref">u8vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6294vaae=6295vaae                while (.a href="+code=count" class="sref">countvaae) {=6296vaae                        *.a href="+code=buf" class="sref">bufvaae = .a href="+code=__raw_readb" class="sref">__raw_readbvaae(.a href="+code=addr" class="sref">addrvaae);=6297vaae                        .a href="+code=buf" class="sref">bufvaae++;=6298vaae                        .a href="+code=count" class="sref">countvaae--;=6299vaae                }=6300vaae                break;=6301vaae        }=6302vaae        case sizeof(.a href="+code=u16" class="sref">u16./a>): {=6303vaae                .a href="+code=__le16" class="sref">__le16vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6304vaae=6305vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(.a href="+code=count" class="sref">countvaae & 1);=6306vaae                while (.a href="+code=count" class="sref">countvaae) {=6307vaae                        *.a href="+code=buf" class="sref">bufvaae = (.a href="+code=__force" class="sref">__forcevaae .a href="+code=__le16" class="sref">__le16vaae).a href="+code=__raw_readw" class="sref">__raw_readwvaae(.a href="+code=addr" class="sref">addrvaae);=6308vaae                        .a href="+code=buf" class="sref">bufvaae++;=6309vaae                        .a href="+code=count" class="sref">countvaae -= 2;=6310vaae                }=6311vaae                break;=6312vaae        }=6313vaae        case sizeof(.a href="+code=u32" class="sref">u32vaae): {=6314vaae                .a href="+code=__le16" class="sref">__le16vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6315vaae=6316vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(.a href="+code=count" class="sref">countvaae & 3);=6317vaae                while (.a href="+code=count" class="sref">countvaae) {=6318vaae                        *.a href="+code=buf" class="sref">bufvaae = (.a href="+code=__force" class="sref">__forcevaae .a href="+code=__le16" class="sref">__le16vaae).a href="+code=__raw_readw" class="sref">__raw_readwvaae(.a href="+code=addr" class="sref">addrvaae);=6319vaae                        .a href="+code=buf" class="sref">bufvaae++;=6320vaae                        *.a href="+code=buf" class="sref">bufvaae = (.a href="+code=__force" class="sref">__forcevaae .a href="+code=__le16" class="sref">__le16vaae).a href="+code=__raw_readw" class="sref">__raw_readwvaae(.a href="+code=addr" class="sref">addrvaae + 2);=6321vaae                        .a href="+code=buf" class="sref">bufvaae++;=6322vaae                        .a href="+code=count" class="sref">countvaae -= 4;=6323vaae                }=6324vaae                break;=6325vaae        }=6326vaae        default:=6327vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(1);=6328vaae        }=6329vaae.a href="+code=unlock" class="sref">unlockvaae:=6330vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6331vaae}=6332vaae#endif .spau class="comment">/* CONFIG_SSB_BLOCKIO */6333vaae=6334vaaestatic void .a href="+code=ssb_pcmcia_write8" class="sref">ssb_pcmcia_write8vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=  >
 " class="sref">  >
 ./a>)=6335vaae{=6336vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6337vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6338vaae        int .a href="+code=err" class="sref">errvaae;=6339vaae=6340vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6341vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6342vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae))=6343vaae                .a href="+code=writeb" class="sref">writebvaae(.a href="+code=  >
 " class="sref">  >
 ./a>, .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6344vaae        .a href="+code=mmiowb" class="sref">mmiowbvaae();=6345vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6346vaae}=6347vaae=6348vaaestatic void .a href="+code=ssb_pcmcia_write16" class="sref">ssb_pcmcia_write16vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=  >
 " class="sref">  >
 ./a>)=6349vaae{=6350vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6351vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6352vaae        int .a href="+code=err" class="sref">errvaae;=6353vaae=6354vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6355vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6356vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae))=6357vaae                .a href="+code=writew" class="sref">writewvaae(.a href="+code=  >
 " class="sref">  >
 ./a>, .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6358vaae        .a href="+code=mmiowb" class="sref">mmiowbvaae();=6359vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6360./a>}=6361vaae=6362vaaestatic void .a href="+code=ssb_pcmcia_write32" class="sref">ssb_pcmcia_write32vaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u32" class="sref">u32vaae .a href="+code=  >
 " class="sref">  >
 ./a>)=6363vaae{=6364vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6365vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6366vaae        int .a href="+code=err" class="sref">errvaae;=6367vaae=6368vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6369vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6370vaae        if (.a href="+code=likely" class="sref">likelyvaae(!.a href="+code=err" class="sref">errvaae)) {=6371vaae                .a href="+code=writew" class="sref">writewvaae((.a href="+code=  >
 " class="sref">  >
 ./a> & 0x0000FFFF), .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae);=6372vaae                .a href="+code=writew" class="sref">writewvaae(((.a href="+code=  >
 " class="sref">  >
 ./a> & 0xFFFF0000) >>616), .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae + 2);=6373vaae        }=6374vaae        .a href="+code=mmiowb" class="sref">mmiowbvaae();=6375vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6376vaae}=6377vaae=6378vaae#ifdef .a href="+code=CONFIG_SSB_BLOCKIO" class="sref">CONFIG_SSB_BLOCKIOvaae=6379vaaestatic void .a href="+code=ssb_pcmcia_block_write" class="sref">ssb_pcmcia_block_writevaae(struct .a href="+code=ssb_device" class="sref">ssb_devicevaae *.a href="+code=dev" class="sref">devvaae, const void *.a href="+code=buffer" class="sref">buffervaae,=6380vaae                                   .a href="+code=size_t" class="sref">size_tvaae .a href="+code=count" class="sref">countvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=reg_width" class="sref">reg_widthvaae)=6381vaae{=6382vaae        struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae = .a href="+code=dev" class="sref">devvaae->.a href="+code=bus" class="sref">busvaae;=6383vaae        unsigned long .a href="+code=flags" class="sref">flagsvaae;=6384vaae        void .a href="+code=__iomem" class="sref">__iomemvaae *.a href="+code=addr" class="sref">addrvaae = .a href="+code=bus" class="sref">busvaae->.a href="+code=mmio" class="sref">mmio./a> + .a href="+code=offset" class="sref">offsetvaae;=6385vaae        int .a href="+code=err" class="sref">errvaae;=6386vaae=6387vaae        .a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6388vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=select_core_and_segment" class="sref">select_core_and_segmentvaae(.a href="+code=dev" class="sref">devvaae, &.a href="+code=offset" class="sref">offsetvaae);=6389vaae        if (.a href="+code=unlikely" class="sref">unlikelyvaae(.a href="+code=err" class="sref">errvaae))=6390vaae                goto .a href="+code=unlock" class="sref">unlockvaae;=6391vaae        switch (.a href="+code=reg_width" class="sref">reg_widthvaae) {=6392vaae        case sizeof(.a href="+code=u8" class="sref">u8vaae): {=6393vaae                const .a href="+code=u8" class="sref">u8vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6394vaae=6395vaae                while (.a href="+code=count" class="sref">countvaae) {=6396vaae                        .a href="+code=__raw_writeb" class="sref">__raw_writebvaae(*.a href="+code=buf" class="sref">bufvaae, .a href="+code=addr" class="sref">addrvaae);=6397vaae                        .a href="+code=buf" class="sref">bufvaae++;=6398vaae                        .a href="+code=count" class="sref">countvaae--;=6399vaae                }=6400vaae                break;=6401vaae        }=6402vaae        case sizeof(.a href="+code=u16" class="sref">u16./a>): {=6403vaae                const .a href="+code=__le16" class="sref">__le16vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6404vaae=6405vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(.a href="+code=count" class="sref">countvaae & 1);=6406vaae                while (.a href="+code=count" class="sref">countvaae) {=6407vaae                        .a href="+code=__raw_writew" class="sref">__raw_writewvaae((.a href="+code=__force" class="sref">__forcevaae .a href="+code=u16" class="sref">u16./a>)(*.a href="+code=buf" class="sref">bufvaae), .a href="+code=addr" class="sref">addrvaae);=6408vaae                        .a href="+code=buf" class="sref">bufvaae++;=6409vaae                        .a href="+code=count" class="sref">countvaae -= 2;=6410vaae                }=6411vaae                break;=6412vaae        }=6413vaae        case sizeof(.a href="+code=u32" class="sref">u32vaae): {=6414vaae                const .a href="+code=__le16" class="sref">__le16vaae *.a href="+code=buf" class="sref">bufvaae = .a href="+code=buffer" class="sref">buffervaae;=6415vaae=6416vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(.a href="+code=count" class="sref">countvaae & 3);=6417vaae                while (.a href="+code=count" class="sref">countvaae) {=6418vaae                        .a href="+code=__raw_writew" class="sref">__raw_writewvaae((.a href="+code=__force" class="sref">__forcevaae .a href="+code=u16" class="sref">u16./a>)(*.a href="+code=buf" class="sref">bufvaae), .a href="+code=addr" class="sref">addrvaae);=6419vaae                        .a href="+code=buf" class="sref">bufvaae++;=6420vaae                        .a href="+code=__raw_writew" class="sref">__raw_writewvaae((.a href="+code=__force" class="sref">__forcevaae .a href="+code=u16" class="sref">u16./a>)(*.a href="+code=buf" class="sref">bufvaae), .a href="+code=addr" class="sref">addrvaae + 2);=6421vaae                        .a href="+code=buf" class="sref">bufvaae++;=6422vaae                        .a href="+code=count" class="sref">countvaae -= 4;=6423vaae                }=6424vaae                break;=6425vaae        }=6426vaae        default:=6427vaae                .a href="+code=SSB_WARN_ON" class="sref">SSB_WARN_ONvaae(1);=6428vaae        }=6429vaae.a href="+code=unlock" class="sref">unlockvaae:=6430vaae        .a href="+code=mmiowb" class="sref">mmiowbvaae();=6431vaae        .a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorevaae(&.a href="+code=bus" class="sref">busvaae->.a href="+code=bar_lock" class="sref">bar_lockvaae, .a href="+code=flags" class="sref">flagsvaae);=6432vaae}=6433vaae#endif .spau class="comment">/* CONFIG_SSB_BLOCKIO */6434vaae=6435vaae.spau class="comment">/* Not "static", as it's used in main.c */6436vaaeconst struct .a href="+code=ssb_bus_ops" class="sref">ssb_bus_opsvaae .a href="+code=ssb_pcmcia_ops" class="sref">ssb_pcmcia_opsvaae = {=6437vaae        ..a href="+code=read8" class="sref">read8vaae          = .a href="+code=ssb_pcmcia_read8" class="sref">ssb_pcmcia_read8vaae,=6438vaae        ..a href="+code=read16" class="sref">read16vaae         = .a href="+code=ssb_pcmcia_read16" class="sref">ssb_pcmcia_read16vaae,=6439vaae        ..a href="+code=read32" class="sref">read32vaae         = .a href="+code=ssb_pcmcia_read32" class="sref">ssb_pcmcia_read32vaae,=6440vaae        ..a href="+code=write8" class="sref">write8vaae         = .a href="+code=ssb_pcmcia_write8" class="sref">ssb_pcmcia_write8vaae,=6441vaae        ..a href="+code=write16" class="sref">write16vaae        = .a href="+code=ssb_pcmcia_write16" class="sref">ssb_pcmcia_write16vaae,=6442vaae        ..a href="+code=write32" class="sref">write32vaae        = .a href="+code=ssb_pcmcia_write32" class="sref">ssb_pcmcia_write32vaae,=6443vaae#ifdef .a href="+code=CONFIG_SSB_BLOCKIO" class="sref">CONFIG_SSB_BLOCKIOvaae=6444vaae        ..a href="+code=block_read" class="sref">block_readvaae     = .a href="+code=ssb_pcmcia_block_read" class="sref">ssb_pcmcia_block_readvaae,=6445vaae        ..a href="+code=block_write" class="sref">block_writevaae    = .a href="+code=ssb_pcmcia_block_write" class="sref">ssb_pcmcia_block_writevaae,=6446vaae#endif=6447vaae};=6448vaae=6449vaaestatic int .a href="+code=ssb_pcmcia_sprom_command" class="sref">ssb_pcmcia_sprom_commandvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u8" class="sref">u8vaae .a href="+code=command" class="sref">commandvaae)=6450vaae{=6451vaae        unsigned int .a href="+code=i" class="sref">ivaae;=6452vaae        int .a href="+code=err" class="sref">errvaae;=6453vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=  >
 " class="sref">  >
 ./a>;=6454vaae=6455vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL" class="sref">SSB_PCMCIA_SPROMCTLvaae, .a href="+code=command" class="sref">commandvaae);=6456vaae        if (.a href="+code=err" class="sref">errvaae)=6457vaae                return .a href="+code=err" class="sref">errvaae;=6458vaae        for (.a href="+code=i" class="sref">ivaae = 0; .a href="+code=i" class="sref">ivaae <61000; .a href="+code=i" class="sref">ivaae++) {=6459vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL" class="sref">SSB_PCMCIA_SPROMCTLvaae, &.a href="+code=  >
 " class="sref">  >
 ./a>);=6460vaae                if (.a href="+code=err" class="sref">errvaae)=6461vaae                        return .a href="+code=err" class="sref">errvaae;=6462vaae                if (.a href="+code=  >
 " class="sref">  >
 ./a> & .a href="+code=SSB_PCMCIA_SPROMCTL_DONE" class="sref">SSB_PCMCIA_SPROMCTL_DONEvaae)=6463vaae                        return 0;=6464vaae                .a href="+code=udelay" class="sref">udelayvaae(10);=6465vaae        }=6466vaae=6467vaae        return -.a href="+code=ETIMEDOUT" class="sref">ETIMEDOUTvaae;=6468vaae}=6469vaae=6470vaae.spau class="comment">/* offset is the 16bit word offset */6471vaaestatic int .a href="+code=ssb_pcmcia_sprom_read" class="sref">ssb_pcmcia_sprom_readvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u16" class="sref">u16./a> *.a href="+code=  >
 " class="sref">  >
 ./a>)=6472vaae{=6473vaae        int .a href="+code=err" class="sref">errvaae;=6474vaae        .a href="+code=u8" class="sref">u8vaae .a href="+code=lo" class="sref">lovaae, .a href="+code=hi" class="sref">hivaae;=6475vaae=6476vaae        .a href="+code=offset" class="sref">offsetvaae *= 2; .spau class="comment">/* Make byte offset */6477vaae=6478vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_ADDRLO" class="sref">SSB_PCMCIA_SPROM_ADDRLOvaae,=6479vaae                                   (.a href="+code=offset" class="sref">offsetvaae & 0x00FF));=6480vaae        if (.a href="+code=err" class="sref">errvaae)=6481vaae                return .a href="+code=err" class="sref">errvaae;=6482vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_ADDRHI" class="sref">SSB_PCMCIA_SPROM_ADDRHIvaae,=6483vaae                                   (.a href="+code=offset" class="sref">offsetvaae & 0xFF00) >>68);=6484vaae        if (.a href="+code=err" class="sref">errvaae)=6485vaae                return .a href="+code=err" class="sref">errvaae;=6486vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_command" class="sref">ssb_pcmcia_sprom_commandvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL_READ" class="sref">SSB_PCMCIA_SPROMCTL_READ./a>);=6487vaae        if (.a href="+code=err" class="sref">errvaae)=6488vaae                return .a href="+code=err" class="sref">errvaae;=6489vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_DATALO" class="sref">SSB_PCMCIA_SPROM_DATALOvaae, &.a href="+code=lo" class="sref">lovaae);=6490vaae        if (.a href="+code=err" class="sref">errvaae)=6491vaae                return .a href="+code=err" class="sref">errvaae;=6492vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_read" class="sref">ssb_pcmcia_cfg_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_DATAHI" class="sref">SSB_PCMCIA_SPROM_DATAHIvaae, &.a href="+code=hi" class="sref">hivaae);=6493vaae        if (.a href="+code=err" class="sref">errvaae)=6494vaae                return .a href="+code=err" class="sref">errvaae;=6495vaae        *.a href="+code=  >
 " class="sref">  >
 ./a> = (.a href="+code=lo" class="sref">lovaae | (((.a href="+code=u16" class="sref">u16./a>).a href="+code=hi" class="sref">hivaae) <<68));=6496vaae=6497vaae        return 0;=6498vaae}=6499vaae=6500vaae.spau class="comment">/* offset is the 16bit word offset */6501vaaestatic int .a href="+code=ssb_pcmcia_sprom_write" class="sref">ssb_pcmcia_sprom_writevaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=offset" class="sref">offsetvaae, .a href="+code=u16" class="sref">u16./a> .a href="+code=  >
 " class="sref">  >
 ./a>)=6502vaae{=6503vaae        int .a href="+code=err" class="sref">errvaae;=6504vaae=6505vaae        .a href="+code=offset" class="sref">offsetvaae *= 2; .spau class="comment">/* Make byte offset */6506vaae=6507vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_ADDRLO" class="sref">SSB_PCMCIA_SPROM_ADDRLOvaae,=6508vaae                                   (.a href="+code=offset" class="sref">offsetvaae & 0x00FF));=6509vaae        if (.a href="+code=err" class="sref">errvaae)=6510vaae                return .a href="+code=err" class="sref">errvaae;=6511vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_ADDRHI" class="sref">SSB_PCMCIA_SPROM_ADDRHIvaae,=6512vaae                                   (.a href="+code=offset" class="sref">offsetvaae & 0xFF00) >>68);=6513vaae        if (.a href="+code=err" class="sref">errvaae)=6514vaae                return .a href="+code=err" class="sref">errvaae;=6515vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_DATALO" class="sref">SSB_PCMCIA_SPROM_DATALOvaae,=6516vaae                                   (.a href="+code=  >
 " class="sref">  >
 ./a> & 0x00FF));=6517vaae        if (.a href="+code=err" class="sref">errvaae)=6518vaae                return .a href="+code=err" class="sref">errvaae;=6519vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_cfg_write" class="sref">ssb_pcmcia_cfg_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROM_DATAHI" class="sref">SSB_PCMCIA_SPROM_DATAHIvaae,=6520vaae                                   (.a href="+code=  >
 " class="sref">  >
 ./a> & 0xFF00) >>68);=6521vaae        if (.a href="+code=err" class="sref">errvaae)=6522vaae                return .a href="+code=err" class="sref">errvaae;=6523vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_command" class="sref">ssb_pcmcia_sprom_commandvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL_WRITE" class="sref">SSB_PCMCIA_SPROMCTL_WRITEvaae);=6524vaae        if (.a href="+code=err" class="sref">errvaae)=6525vaae                return .a href="+code=err" class="sref">errvaae;=6526vaae        .a href="+code=msleep" class="sref">msleepvaae(20);=6527vaae=6528vaae        return 0;=6529vaae}=6530vaae=6531vaae.spau class="comment">/* Read the SPROM image. bufsize is in 16bit words. */6532vaaestatic int .a href="+code=ssb_pcmcia_sprom_read_all" class="sref">ssb_pcmcia_sprom_read_allvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, .a href="+code=u16" class="sref">u16./a> *.a href="+code=sprom" class="sref">spromvaae)=6533vaae{=6534vaae        int .a href="+code=err" class="sref">errvaae, .a href="+code=i" class="sref">ivaae;=6535vaae=6536vaae        for (.a href="+code=i" class="sref">ivaae = 0; .a href="+code=i" class="sref">ivaae <6.a href="+code=SSB_PCMCIA_SPROM_SIZE" class="sref">SSB_PCMCIA_SPROM_SIZEvaae; .a href="+code=i" class="sref">ivaae++) {=6537vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_read" class="sref">ssb_pcmcia_sprom_readvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=i" class="sref">ivaae, &.a href="+code=sprom" class="sref">spromvaae[.a href="+code=i" class="sref">ivaae]);=6538vaae                if (.a href="+code=err" class="sref">errvaae)=6539vaae                        return .a href="+code=err" class="sref">errvaae;=6540vaae        }=6541vaae=6542vaae        return 0;=6543vaae}=6544vaae=6545vaae.spau class="comment">/* Write the SPROM image. size is in 16bit words. */6546vaaestatic int .a href="+code=ssb_pcmcia_sprom_write_all" class="sref">ssb_pcmcia_sprom_write_allvaae(struct .a href="+code=ssb_bus" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" class="sref">u16./a> *.a href="+code=sprom" class="sref">spromvaae)=6547vaae{=6548vaae        int .a href="+code=i" class="sref">ivaae, .a href="+code=err" class="sref">errvaae;=6549vaae        .a href="+code=bool" class="sref">bool./a> .a href="+code=failed" class="sref">failedvaae = 0;=6550vaae        .a href="+code=size_t" class="sref">size_tvaae .a href="+code=size" class="sref">sizevaae = .a href="+code=SSB_PCMCIA_SPROM_SIZE" class="sref">SSB_PCMCIA_SPROM_SIZEvaae;=6551vaae=6552vaae        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae=6553vaae                   .spau class="string">"Writing SPROM. Do NOT turn off the power! "6554vaae                   .spau class="string">"Please stand by...\n"6555vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_command" class="sref">ssb_pcmcia_sprom_commandvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL_WRITEEN" class="sref">SSB_PCMCIA_SPROMCTL_WRITEENvaae);=6556vaae        if (.a href="+code=err" class="sref">errvaae) {=6557vaae                .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae=6558vaae                           .spau class="string">"Could not enable SPROM write access.\n"6559vaae                return -.a href="+code=EBUSY" class="sref">EBUSYvaae;=6560vaae        }=6561vaae        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae .spau class="string">"[ 0%%"6562vaae        .a href="+code=msleep" class="sref">msleepvaae(500);=6563vaae        for (.a href="+code=i" class="sref">ivaae = 0; .a href="+code=i" class="sref">ivaae <6.a href="+code=size" class="sref">sizevaae; .a href="+code=i" class="sref">ivaae++) {=6564vaae                if (.a href="+code=i" class="sref">ivaae == .a href="+code=size" class="sref">sizevaae / 4)=6565vaae                        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.spau class="string">"25%%"6566vaae                else if (.a href="+code=i" class="sref">ivaae == .a href="+code=size" class="sref">sizevaae / 2)=6567vaae                        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.spau class="string">"50%%"6568vaae                else if (.a href="+code=i" class="sref">ivaae == (.a href="+code=size" class="sref">sizevaae * 3) / 4)=6569vaae                        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.spau class="string">"75%%"6570vaae                else if (.a href="+code=i" class="sref">ivaae % 2)=6571vaae                        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.spau class="string">"."6572vaae                .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_write" class="sref">ssb_pcmcia_sprom_writevaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=i" class="sref">ivaae, .a href="+code=sprom" class="sref">spromvaae[.a href="+code=i" class="sref">ivaae]);=6573vaae                if (.a href="+code=err" class="sref">errvaae) {=6574vaae                        .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae=6575vaae                                   .spau class="string">"Failed to write to SPROM.\n"6576vaae                        .a href="+code=failed" class="sref">failedvaae = 1;=6577vaae                        break;=6578vaae                }=6579vaae        }=6580vaae        .a href="+code=err" class="sref">errvaae = .a href="+code=ssb_pcmcia_sprom_command" class="sref">ssb_pcmcia_sprom_commandvaae(.a href="+code=bus" class="sref">busvaae, .a href="+code=SSB_PCMCIA_SPROMCTL_WRITEDIS" class="sref">SSB_PCMCIA_SPROMCTL_WRITEDISvaae);=6581vaae        if (.a href="+code=err" class="sref">errvaae) {=6582vaae                .a href="+code=ssb_printk" class="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae=6583vaae                           .spau class="string">"Could not disable SPROM write access.\n"6584vaae                .a href="+code=failed" class="sref">failedvaae = 1;=65#L585" id vL585"WRITEDIS" class1e=i" class="sref">ivaae <6.a href="i712cia.c#L469" id vL469" class="line" nam  vL35err" class="sref">errvaae = .ae(500);=failedvaae = 1;=6488vaae                5eturn5.a href="+code=err" class="sref">ssb_printkvaae(.spau class="string">"."6489vaae        .a href=5+code58.a href="+code=ssb_prass="sref">ssb_printkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTICEvaae .a href="+code=PFX" class="sref">PFXvaae=failedvaae = 1;=EBUSYvaae;=
 _pcmcia_sprom_command" class="sref">ssb_pcmcheck_crcom_commandvaae(.a href="+code=busheck_crcCE" css="sref">u16./a> *.a href="+code=sprom" class="sref">spromvaae)=spromvaae[e .a href="+code=size" class="sref">sizevaae = .a href="+code=SSB_PCMCIA_.c#L571" id vL571" class="line" nam  vL496"56496vaae=60mcia.c#L531" id vL531" class="line" n6m  vL501"66501vaaestatic int .a hr6f="+c6de=ssb#defic sref">sizevaae =GOTO_ERRORvaae(1);=KERss=ditione(1);=spromvaaedescriptione(1);=u16./a> *.a nlikel);=KERss=ditione(1);=errvaae) {=errvaae) {=sget_macom_commandvaae(.a href="+cget_macCE" c" class="sref">ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaepcdevhref="+code=SSBrcdevmcia=c#L528" id vL528" class="line" n6m9 vL508"66499vaae=ssb_tupl.a href="+code=siztupl.a lass="sref">spromvaaetupl.href="+code=siztupl.mcia=c#L528" id vL528" class="line" n6m  vL510"66510vaae                6eturn6.a href="+code=err" clllllllllvoid="sref">spromvaaepvL5href="+code=SSBrvL5CIA_.c#L571" id vL571" class="line" n6m  vL511"66511vaae        .a href=6+code6err" c.c#L582" id vL582" class="line" n6m  vL512"66512vaae                6     6            (." class="sref">ssb_busvaae)=spromvaae)=errvaae)=bar_loTupl.Datahref="+code=sizTupl.Data"sref0] !prom_command" claCISTPL_FUNCE_LAFX" DE_IROMCTL_READ./a>)CISTPL_FUNCE_LAFX" DE_IRCIA_.c#L571" id vL571" class="line" n6m5 vL501"66515vaae        .a href=6+code61a href="+code=err" class="sr"sref">EBUSYvaae;INVAROMCTLvaae, &INVARCIA_.c#L529" id vL529" class="line" n6m6 vL501"66516vaae                6     61de=err" class="sref">errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=EBUSYvaae;INVAROMCTLvaae, &INVARCIA_.c#L529" id vL529" class="line" n6m  vL508"66518vaae                6eturn6.a href="+code="sref">errvaae)=bar_loTupl.Datahref="+code=sizTupl.Data"sref1] !prom_command" claETH_ALPROMCTL_WRITEENvaETH_ALPRe=er.c#L571" id vL571" class="line" n6m9 vL508"66519vaae        .a href=6+code61.a href="+code=EBUSY" class="sref">EBUSYvaae;INVAROMCTLvaae, &INVARCIA_.c#L529" id vL529" class="line" n6m  vL520"66520vaae                6     62rr" class="sref">errvaae = .memcp);=KER)=bar_loil0macom_commandvaae(il0macmcia="ass="sref">spromvaaetupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref2]="sref">spromvaaeETH_ALPROMCTL_WRITEENvaETH_ALPRe=er..c#L529" id vL529" class="line" n6m  vL511"66521vaae        if (.a h6ef="+6ode=err" classb/pcmcia.c#L529" id vL529" class="line" n62  vL512"62512vaae                62    6.a hrea.c#L448" id vL448" class="line" n6m  vL523"66523vaae        .a href=6+code62de=erc#L529" id vL529" class="line" n6m  vL524"66524vaae        if (.a h6ef="+6ode=er_pcmcia_sprom_command" class="sref">sdocget_invariant.a href="+code=bus" sref">sdocget_invariant.CE" c" class="sref">ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaepcdevhref="+code=SSBrcdevmcia=c#L528" id vL528" class="line" n6m  vL525"66525vaae                6eturn6.a href="+code=err" clllllllllllllllllllllllllass="sref">ssb_tupl.a href="+code=siztupl.a lass="sref">spromvaaetupl.href="+code=siztupl.mcia=c#L528" id vL528" class="line" n6m  vL526"66526vaae        .a href=6+code62           (.a href="+code=  >
 " class======void="sref">spromvaaepvL5href="+code=SSBrvL5CIA_.c#L571" id vL571" class="line" n6m  vL527"66527vaae=ssb_busvaaeinit_invariant.a href="+code=bus" init_invariant.lass="sref">spromvaaeL5href="+code=SSBL5CIA_sprom_command" clapvL5href="+code=SSBrvL5CIA_.c#L529" id vL529" class="line" n6m  vL529"66529vaae}=ssb_busvaae)=spromvaae)=spromvaaeL5href="+code=SSBL5CIA_ class="sref">bar_lo)=ssb_busvaaeboardinfa href="+code=u1vaaeboardinfalass="sref">spromvaaebref="drivers/ssbbimciasprass="sref">spromvaaeL5href="+code=SSBL5CIA_ class="sref">bar_loboardinfa href="+code=u1boardinfalass.c#L529" id vL529" class="line" n6m  vL511"66531vaae.spau class="com6ent">63de=err" classss="srchar="sref">spromvaaeerrvaae = .GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=errvaae)=bar_loTupl.Datahref="+code=sizTupl.Data"sref0]ia.c#L582" id vL582" class="line" n6m  vL535"66535vaae=bar_loaae);=)aae);=errvaae = .GOTO_ERRORvaae(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=spromvaaebref="drivers/ssbbimcia class="sref">bar_lovendore(1);=bar_loTupl.Datahref="+code=sizTupl.Data"sref1] |c#L584" id vL584" class="line" n6m  vL540"66540vaae        }=u16./a>).a href="+code=hi" class="sref">hivaae) <tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref2]rs/ssb/pcmci.c#L584" id vL584" class="line" n6m  vL541"66541vaae=bar_loaae);=)aae);=errvaae) {=GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=64a href="+code=err" cllass="sref">KER)=bar_loboard_revhref="+code=SSBboard_revCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL526"66546vaaestatic int .a hr6f="+c64           (.a href="cmcia.c#L578" id vL578" class="line" n6m  vL527"66547vaae{=bar_loaae);=)aae);=ssb_GOTO_ERRORvaae(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=KER)=bar_lopa0b0href="drivers/spa0b0CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1] |c#L584" id vL584" class="line" n6m  vL552"66552vaae        .a href=6+code65"+code=ssb_printk" clintk" clrref">u16./a>).a href="+code=hi" class="sref">hivaae) <tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref2]rs/ssb/pcmci.c#L584" id vL584" class="line" n6m  vL553"66553vaae                6  .sp6u class="string">"lass="sref">KER)=bar_lopa0b1href="drivers/spa0b1CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref3] |c#L584" id vL584" class="line" n6m  vL544"66554vaae                6  .sp6u class="string">"Plk" clrref">u16./a>).a href="+code=hi" class="sref">hivaae) <tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref4]rs/ssb/pcmci.c#L584" id vL584" class="line" n6m  vL545"66555vaae        .a href=6+code65a href="+code=err" cllass="sref">KER)=bar_lopa0b2href="drivers/spa0b2CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref5] |c#L584" id vL584" class="line" n6m  vL526"66556vaae        if (.a h6ef="+65           (.a href="+code=  rref">u16./a>).a href="+code=hi" class="sref">hivaae) <tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref6]rs/ssb/pcmci.c#L584" id vL584" class="line" n6m  vL527"66557vaae                6a hre6="+code=ssb_printk" class="sref">ssb_p=bar_loitssi_ahref="+code=sizitssi_aCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref7].c#L584" id vL584" class="line" n6m  vL558"66558vaae                6     6    .spau class="strinass="sref">ssb_p=bar_loitssi_bghref="+code=sizitssi_bgCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref7].c#L584" id vL584" class="line" n6m  vL549"66559vaae                6eturn6-.a href="+code=EBUSY"ass="sref">ssb_p=bar_lomaxpwr_ahref="+code=sizmaxpwr_aCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref8].c#L584" id vL584" class="line" n6m  vL560"66560vaae        }=ssb_p=bar_lomaxpwr_bghref="+code=sizmaxpwr_bgCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref8].c#L584" id vL584" class="line" n6m  vL551"66561vaae        .a href=6+code66.a href="+code=ssb_prcmcia.c#L578" id vL578" class="line" n6m  vL562"66562vaae        .a href=6+code66f="drivers/ssce);=s="sref">bar_loaae);="l the SPROM image. size ise ignor 16bi/ssb/pcmcia.c#L546" id vL546" class="line" n6m  vL564"66564vaae                6f (.a6href="+code=i" class="cmcia.c#L578" id vL578" class="line" n6m  vL545"66565vaae                6     66a href="+codece);=s="sref">bar_loaae);=errvaae) {=GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=ssb_p=bar_locountry_ar_lhref="drivers/scountry_ar_lCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL569"66569vaae                6     6 .a href="+code=ssb_prcmcia.c#L578" id vL578" class="line" n6m  vL570"66570vaae                6lse i6 (.a href="+coce);=s="sref">bar_loaae);=)aae);=errvaae) {=GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=ssb_p=bar_loant_availot;<_ahref="+code=sizant_availot;<_aCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL574"66574vaae                6     6 .a href="+code=ssb_prass="sref">ssb_p=bar_loant_availot;<_bghref="+code=sizant_availot;<_bgCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL545"66575vaae                6     6            .spau clascmcia.c#L578" id vL578" class="line" n6m  vL526"66576vaae                6     6 .a href="+codce);=s="sref">bar_loaae);=errvaae) {=GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=ssb_p=bar_loantenna_gaine(1);=bar_loa0href="drivers/sa0CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL580"66580vaae        .a href=6+code68a href="+code=err" class="sref">ssb_p=bar_loantenna_gaine(1);=bar_loa1href="drivers/sa1CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL571"66581vaae        if (.a h6ef="+68.a href="+code=ssb_prlass="sref">KER)=bar_loantenna_gaine(1);=bar_loa2href="drivers/sa2CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL572"66582vaae                6a hre6="+code=ssb_printk" class="sref">ssb_p=bar_loantenna_gaine(1);=bar_loa3e(1);=bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL573"66583vaae                6     6    .spau class="strincmcia.c#L578" id vL578" class="line" n6m  vL584"66584vaae                6a hre6="+code=failedce);=s="sref">bar_loaae);=KERGOTO_ERRORvaae(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=errvaae) {=tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);=ssb_p=bar_loboardflags_la href="+code=u1boardflags_laCIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1] |c#L584" id vL584" class="line" n6m  vL579"66489vaae        .a href=6+code68.a href="+code=ssb_pr+code=  rref">u16./a>).a href="+code=hi" class="sref">hivaae) <tupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref2]rs/ssb/pcmci.c#L584" id vL584" class="line" n6m  vL490"66490vaae        if (.a h6ef="+69a href="+code=err" clcmcia.c#L578" id vL578" class="line" n6m  vL491"66491vaae                6eturn691+code=failedce);=s="sref">bar_loaae);=ssb_GOTO_ERRORvaae(1);=KERtupl.href="+code=siztupl.mcia class="sref">bar_loTupl.DataLene(1);="ald not disable SPROM writeleds=tplr_PCMers/ssb/pcmcia.c#L584" id vL584" class="line" n6m  vL494"66494vaae                6eturn69.a href="+code=ssb_prass="sref">ssb_p=bar_logpio0href="drivers/sgpio0CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref1].c#L584" id vL584" class="line" n6m  vL495"66495vaae        *.a href6"+cod69a href="+code=err" cllass="sref">KER)=bar_logpio1href="drivers/sgpio1CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref2].c#L584" id vL584" class="line" n6mc#L469" 66496vaae=errvaae) {=)=bar_logpio2href="drivers/sgpio2CIA_sprom_command" clatupl.href="+code=siztupl.mcia class="sref">bar_loTupl.Datahref="+code=sizTupl.Data"sref3].c#L584" id vL584" class="line" n6m  vL487"66497vaae        return 06=ssb_p=bar_logpio3e(1);=bar_loTupl.Datahref="+code=sizTupl.Data"sref4].c#L584" id vL584" class="line" n6m  vL578"66498vaae}=70a href="+code class="sref">EBUSYvaae;NOSPChref="+code=siz;NOSPC hre;tl the SPROM image. size icontinue with nexn&qutrysb/pcmcia.c#L546" id vL546" class="line" n7m  vL501"76501vaaestatic int .a hr7f="+c70mcia.c#L552" id vL552" class="line" n7m2 vL501"76492vaae        .a href=7s/ssb702e=ersref">EBUSYvaaeerrvaae = .srintkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTERR(.a href="+codeN_NOTERRr" cllass="sref">KERhref="drivers/ssb/pcmcia.c#L583" id vL583" class="line" n7m4 vL501"76494vaae                7/ssb/70"+code=failed" class=uotald not disable SPROM write;=errvaae = .EBUSYvaae;NODEVOMCTL_READ./a>);NODEV hre;c#L584" id vL584" class="line" n7m7 vL501"76497vaae        return 07+code70mcia..c#L580" id vL580" class="line" n7m8 vL501"76498vaae}=sget_invariant.a href="+code=bus" sref">sget_invariant.CE" c" class="sref">ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" clc#L580" id vL580" class="line" n7m  vL501"76511vaae        .a href=7+code71.a href="+code=ssb_printk" clllllll" class="sref">ssb_busvaaeinit_invariant.a href="+code=bus" init_invariant.lass="sref">spromvaaeL5href="+code=SSBL5CIA_.c#L571" id vL571" class="line" n7m  vL512"76512vaae                7     7      .c#L582" id vL582" class="line" n7m  vL513"76513vaae        if (.a h7ef="+71rr" class="sr" class="sref">ssb_busvaae)=spromvaae)=spromvaaeL5href="+code=SSBL5CIA_ class="sref">bar_lo)=KER)=spromvaae)=ssb_p=bar_lorevisione(1);=ssb_p=bar_loboardflags_la href="+code=u1boardflags_laCIA_spra.c#L529" id vL529" class="line" n7m9 vL508"76519vaae        .a href=7+code71.a href="+codass="sref">ssb_p=bar_loboardflags_href="drivers/ssbboardflags_hrCIA_spra.c#L529" id vL529" class="line" n7m  vL520"76520vaae                7     72mcia.c#L531" id vL531" class="line" n7m  vL511"76521vaae        if (.a h7ef="+7ode=err" classl the SPROM image. size iFirstufetchsthe MAC addr="drsb/pcmcia.c#L546" id vL546" class="line" n72  vL512"72512vaae                72    72sleep" class="sref">msleepvare.a href="+code=bre.mciasprom_command" clapref">sloop_tupl.href="+code=sizpref">sloop_tupl.CE" class="sref">KERnst .a href="+code=u16" c class="sref">bar_lohost sref"> .a href="+codehost sref">mcia="s="sref">bar_loCISTPL_FUNCE .a href="+codeCISTPL_FUNCE6" clc#L580" id vL580" class="line" n7m  vL523"76523vaae        .a href=7+code72   .spau class="string">"Co"+codass="sref">ssb_ps="sref">sget_macom_commandvaae(.a href="+cget_macCE" ="sref">spromvaae[.a href="+code=i" class="srea.c#L584" id vL584" class="line" n7m  vL524"76524vaae        if (.a h7ef="+72de=err" class="sref">errvaae)=errvaae = .srintkvaae(.a href="+code=KERN_NOTICE" class="sref">KERN_NOTERR(.a href="+codeN_NOTERRr" cllass="sref">KERhref="drivers/ssb/pcmcia.c#L583" id vL583" class="line" n7m  vL526"76526vaae        .a href=7+code72           (.a href="+code=  ald not disable SPROM write;=EBUSYvaae;NODEVOMCTL_READ./a>);NODEV hre;c#L584" id vL584" class="line" n7m  vL528"76528vaae        return 07=73de=err" class"sref">msleepvare.a href="+code=bre.mciasprom_command" clapref">sloop_tupl.href="+code=sizpref">sloop_tupl.CE" class="sref">KERnst .a href="+code=u16" c class="sref">bar_lohost sref"> .a href="+codehost sref">mcia="s="sref">bar_loaae);=ssb_ps="sref">sdocget_invariant.a href="+code=bus" sref">sdocget_invariant.CE" ef">ivaae, .a href5href="+code=SSBL5CIA_.;c#L584" id vL584" class="line" n7m  vL523"76533vaae{=errvaae)=errvaae)=EBUSYvaae;NOSPChref="+code=siz;NOSPC hre).c#L571" id vL571" class="line" n7m  vL534"76534vaae        int .a h7ef="+73"+code=failed" class=b/pcmcia.c#L529" id vL529" class="line" n7m  vL535"76535vaae=KERN_NOTERR(.a href="+codeN_NOTERRr" cllass="sref">KERhref="drivers/ssb/pcmcia.c#L583" id vL583" class="line" n7m  vL527"76537vaae                7a hre7="+code=err" class="srrrrrrrrrald not disable SPROM write;=EBUSYvaae;NODEVOMCTL_READ./a>);NODEV hre;c#L584" id vL584" class="line" n7m  vL529"76539vaae                7     73cmcia.c#L530" id vL530" class="line" n7m  vL540"76540vaae        }=sizevaae = s" sref">sattrcode=bushowa href="+code=bus" sref">sattrcode=bushowCE" c" class="sref">ssb_busdevic href="+code=SSBdevic lass="sref">spromvaaepref">devhref="+code=SSBrref">dev6" clc#L580" id vL580" class="line" n7m  vL542"76542vaae        return 07=ssb_busdevic sattribut href="+code=SSBdevic sattribut lass="sref">spromvaaeattrhref="+code=SSBattr6" clc#L580" id vL580" class="line" n7m  vL523"76543vaae}=spromvaaebuf .a href="+code=ufCIA_.c#L571" id vL571" class="line" n7m  vL544"76544vaae=74a href="+code" class="sref">ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaepdevhref="+code=SSBrdevCIA_spc#L582" id vL582" class="line" n7m  vL526"76546vaaestatic int .a hr7f="+c74           (.a href="sref">spromvaaecontaic r_of .a href="+codecontaic r_ofCE" class="sref">KERpref">devhref="+code=SSBrref">dev6" cle" class="sref">ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaedevhref="+code=SSBdev6" ca.c#L584" id vL584" class="line" n7m  vL527"76547vaae{=ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" c.c#L584" id vL584" class="line" n7m  vL538"76548vaae        int .a h7ef="+74     c#L580" id vL580" class="line" n7m  vL549"76549vaae        .a href=7+code74.a href="+codass="sref">ssb_nst .a href="+code=u16" csprom_command" claus" sref">sdev_toe *.a href="+code=bus" sref">sdev_toe *.CE" class="sref">KERpdevhref="+code=SSBrdevCIA_a.c#L584" id vL584" class="line" n7m  vL550"76550vaae        .a href=7+code75a href="+code="sr!"sref">failedvanst .a href="+code=u16" c.c#L571" id vL571" class="line" n7m  vL551"76551vaae=EBUSYvaae;NODEVOMCTL_READ./a>);NODEV hre;c#L584" id vL584" class="line" n7m  vL552"76552vaae        .a href=7+code75e=ssbc#L529" id vL529" class="line" n7m  vL553"76553vaae                7  .sp7u class="strinb/pcmci"sref">failedvaus" attrcode=bushowa href="+code=bus" attrcode=bushowCE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_nsf .a href="+code=ufCIA_lc#L580" id vL580" class="line" n7m  vL544"76554vaae                7  .sp7u class="string">"Plk" cl (.a href="sref">spromvaaeus" sref">sode=buread_alla href="+code=bus" sref">sode=buread_allCIA_a.c#L584" id vL584" class="line" n7m  vL545"76555vaae        .a href=7+code75a hre.c#L530" id vL530" class="line" n7m  vL526"76556vaae        if (.a h7ef="+75     c#L530" id vL530" class="line" n7m  vL527"76557vaae                7a hre7="+cod_pcmciaom_command" clasre .a href="+code=sizee" class="sref">sizevaae = s" sref">sattrcode=bustor href="+code=SSB s" sref">sattrcode=bustor CE" c" class="sref">ssb_busdevic href="+code=SSBdevic lass="sref">spromvaaepref">devhref="+code=SSBrref">dev6" clc#L580" id vL580" class="line" n7m  vL558"76558vaae                7     7    .spau class="strinnnnnnnnnnnnnnnnnnnnnnnnnnnn" class="sref">ssb_busdevic sattribut href="+code=SSBdevic sattribut lass="sref">spromvaaeattrhref="+code=SSBattr6" clc#L580" id vL580" class="line" n7m  vL549"76559vaae                7eturn7-.a href="+code=EBUSY""""""""""""""""""""""""""""ss="srchar="sref">spromvaaensf .a href="+code=ufCIA_l"sref">spromvaae[e .a href="+code=size" class="sref">sizevaae =count .a href="+codecount6" c.c#L571" id vL571" class="line" n7m  vL560"76560vaae        }=ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaepdevhref="+code=SSBrdevCIA_spc#L582" id vL582" class="line" n7m  vL562"76562vaae        .a href=7+code76"+code=ssb_printk" class="sref">ssb_contaic r_of .a href="+codecontaic r_ofCE" class="sref">KERpref">devhref="+code=SSBrref">dev6" cle" class="sref">ssb_busref="+cdevic href="+code=SSBref="+cdevic lass="sref">spromvaaedevhref="+code=SSBdev6" ca.c#L584" id vL584" class="line" n7m  vL563"76563vaae        for (.a 7ref="76rr" class="sr" class="sref">ssb_busvaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" c.c#L584" id vL584" class="line" n7m  vL564"76564vaae                7f (.a7href="c#L584" id vL584" class="line" n7m  vL545"76565vaae                7     76a href="+codeass="sref">ssb_nst .a href="+code=u16" csprom_command" claus" sref">sdev_toe *.a href="+code=bus" sref">sdev_toe *.CE" class="sref">KERpdevhref="+code=SSBrdevCIA_a.c#L584" id vL584" class="line" n7m  vL526"76566vaae                7lse i7 (.a href="+co="sr!"sref">failedvanst .a href="+code=u16" c.c#L571" id vL571" class="line" n7m  vL567"76567vaae                7     7 .a href="+code=ssb_prb/pcmci"sref">EBUSYvaae;NODEVOMCTL_READ./a>);NODEV hre;c#L584" id vL584" class="line" n7m  vL568"76568vaae                7lse i76     c#L580" id vL580" class="line" n7m  vL569"76569vaae                7     7 .a href="+codb/pcmci"sref">failedvaus" attrcode=bustor href="+code=SSB s" attrcode=bustor CE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_nsf .a href="+code=ufCIA_lsref">sizevaae =count .a href="+codecount6" clc#L580" id vL580" class="line" n7m  vL570"76570vaae                7lse i77a href="+code=err" clllllllllb_printk" class="sref">ssb_us" sref">sode=bucheck_crcom_commandvaae(.a href="+code=bucheck_crc6" clc#L580" id vL580" class="line" n7m  vL551"76571vaae                7     7 .a href="+code=ssb_prllllllllb_printk" class="sref">ssb_us" sref">sode=buwrite_alla href="+code=bus" sref">sode=buwrite_allCIA_a.c#L584" id vL584" class="line" n7m  vL572"76572vaae                7a hre7="+cod.c#L530" id vL530" class="line" n7m  vL573"76573vaae                7f (.a77de=erc#L529" id vL529" class="line" n7m  vL574"76574vaae                7     77de=er_pcmciaass="sref">ssb_DEVICE_ATTR(.a href="+codeDEVICE_ATTRCE" cef">busvaae, covaae)=ssb_us" sref">sattrcode=bushowa href="+code=bus" sref">sattrcode=bushowCE" lc#L580" id vL580" class="line" n7m  vL526"76576vaae                7     77           (.a href="+coref">sizevaae = s" sref">sattrcode=bustor href="+code=SSB s" sref">sattrcode=bustor CE" a.c#L584" id vL584" class="line" n7m  vL567"76577vaae                7     7 breakc#L584" id vL584" class="line" n7m  vL568"76578vaae                7=scorco/pcphref="+code=SSB s" sref">scorco/pcpCE" c" class="sref">ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" cls="sref">ssb_busu8 .a href="+codeu8ss="sref">sizevaae =corhref="+code=SSBcorb/pc.c#L571" id vL571" class="line" n7m  vL569"76579vaae        }=errvaae = .u8 .a href="+codeu8ss="sref">sizevaae =vala href="+code=bval hre;c#L584" id vL584" class="line" n7m  vL571"76581vaae        if (.a h7ef="+78.a href="+cod_sprom_command" claerre(1);=scfgureadhref="+code=SSB s" sref">scfgureadCE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_corhref="+code=SSBcorb/pc="ass="sref">spromvaaevala href="+code=bval hrea.c#L584" id vL584" class="line" n7m  vL584"76584vaae                7a hre78de=err" class="sref">errvaae)=failedvaerre(1);=ssb_vala href="+code=bval hre"|prom_command" claCOR_FUNC_ENAOMCTL_READ./a>)COR_FUNC_ENA hre"|rom_command" claCOR_IREQ_ENAOMCTL_READ./a>)COR_IREQ_ENA hre"|rom_command" claCOR_LEVEL_REQOMCTL_READ./a>)COR_LEVEL_REQ hre;c#L584" id vL584" class="line" n7m  vL568"76488vaae                7eturn78a href="+codeass="sref">ssb_erre(1);=scfguwritehref="+code=SSB s" sref">scfguwriteCE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_corhref="+code=SSBcorb/pc="sref">spromvaaevala href="+code=bval hrea.c#L584" id vL584" class="line" n7m  vL569"76489vaae        .a href=7+code78.a href="+cod="sref">errvaae)=failedvaerre(1);=msleepvamsleephref="+code=SSBmsleepCE" c40a.c#L584" id vL584" class="line" n7m  vL492"76492vaae        .a href=7+code79e=ssbc#L529" id vL529" class="line" n7m  vL493"76493vaae        if (.a h7ef="+79 class="strinb/pcmcia.c#L529" id vL529" class="line" n7m  vL494"76494vaae                7eturn79.a hr.c#L530" id vL530" class="line" n7m  vL495"76495vaae        *.a href7"+cod79a hrec#L529" id vL529" class="line" n7mc#L469" 76496vaae=shardwareco/pcphref="+code=SSB s" sref">shardwareco/pcpCE" c" class="sref">ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" c.c#L571" id vL571" class="line" n7m  vL568"76498vaae}=80mcia.c#L531" id vL531" class="line" n8m  vL501"86501vaaestatic int .a hr8f="+c801a href="+cod="sref">errvaae)=bar_lo=u1typehref="+code=SSB=u1typea hre!prom_command" claaae)BUSTYPE);=soeg with hardware _pcmersb/pcmcia.c#L546" id vL546" class="line" n8m6 vL501"86496vaae=sowitch_sege. sa href="+code=bus" sref">sowitch_sege. sCE" cef">busvaae, const .a href="+code=u16" cld0a.c#L584" id vL584" class="line" n8m7 vL501"86497vaae        return 08+code807+code=failedl the SPROM image. size iInit the CORlb/gisterrsb/pcmcia.c#L546" id vL546" class="line" n8m8 vL501"86498vaae}=ssb_erre(1);=scorco/pcphref="+code=SSB s" sref">scorco/pcpCE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_CISREG_COROMCTL_READ./a>)CISREG_COR hrea.c#L584" id vL584" class="line" n8m9 vL501"86499vaae=errvaae)=failedvaerre(1);=msleepvaerre(1);=scorco/pcphref="+code=SSB s" sref">scorco/pcpCE" cef">busvaae, const .a href="+code=u16" cldass="sref">ssb_CISREG_COROMCTL_READ./a>)CISREG_COR hre + 0x80a.c#L584" id vL584" class="line" n8m  vL513"86513vaae        if (.a h8ef="+81rr" class="sr="sref">errvaae)=failedvaerre(1);=sexisa href="+code=bus" sref">sexisCE" c" class="sref">ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" c.c#L571" id vL571" class="line" n8m  vL520"86520vaae                8     82a hre.c#L582" id vL582" class="line" n8m  vL511"86521vaae        if (.a h8ef="+821a href="+cod="sref">errvaae)=bar_lo=u1typehref="+code=SSB=u1typea hre!prom_command" claaae)BUSTYPE);=spromvaaenst .a href="+code=u16" c class="sref">bar_lohost sref"> .a href="+codehost sref">mcia class="sref">bar_lodevhref="+code=SSBdev6" c="ass="sref">spromvaaedev_attrcoaae)=sinita href="+code=bus" sref">sinitCE" c" class="sref">ssb_bussaae *.a href="+code=bus" class="sref">busvaae, const .a href="+code=u16" c.c#L571" id vL571" class="line" n8m  vL508"86528vaae        return 08=831a href="+cod="sref">errvaae)=bar_lo=u1typehref="+code=SSB=u1typea hre!prom_command" claaae)BUSTYPE);=shardwareco/pcphref="+code=SSB s" sref">shardwareco/pcpCE" cef">busvaae, const .a href="+code=u16" c..c#L529" id vL529" class="line" n8m  vL525"86535vaae=errvaae)=errvaae)=ssb_nst .a href="+code=u16" c class="sref">bar_loode=busizehref="+code=SSB de=busize hresprom_command" claaae);=ssb_mutexsinita href="+code=bmutexsinitCE" cass="sref">spromvaaenst .a href="+code=u16" c class="sref">bar_lo de=bumutexhref="+code=SSB de=bumutex6" c..c#L529" id vL529" class="line" n8m  vL540"86540vaae        }=errvaae = .erre(1);=spromvaaenst .a href="+code=u16" c class="sref">bar_lohost sref"> .a href="+codehost sref">mcia class="sref">bar_lodevhref="+code=SSBdev6" c="ass="sref">spromvaaedev_attrcoaae)=errvaae)=errvaae)=84a hreef">errvaae)=KERN_NOTERR(.a href="+codeN_NOTERRr" cllass="sref">KERhref="drivers/ssb/pcmcia.rald not disable SPROM writeuot;failedvaerre(1);=


The original LXR software by the #L530" idhttp://sourceforge.net/projects/lxr">LXR mageunity6" c="phis experie. sal 530"ion by #L530" idmot;to:lxr@ ux.no">lxr@ ux.no6" c.
lxr. ux.no kindly hostRedpill L pro AS6" cl provider of L ux"ss="ultSPR and operations servic s since 1995.