linux/drivers/pcmcia/yenta_socket.c
<<
>>
Prefs
   1/*
   2 * Regular cardbus driver ("yenta_socket")
   3 *
   4 * (C) Copyright 1999, 2000 Linus Torvalds
   5 *
   6 * Changelog:
   7 * Aug 2002: Manfred Spraul <manfred@colorfullife.com>
   8 *      Dynamically adjust the size of the bridge resource
   9 *
  10 * May 2003: Dominik Brodowski <linux@brodo.de>
  11 *      Merge pci_socket.c and yenta.c into one file
  12 */
  13#include <linux/init.h>
  14#include <linux/pci.h>
  15#include <linux/workqueue.h>
  16#include <linux/interrupt.h>
  17#include <linux/delay.h>
  18#include <linux/module.h>
  19#include <linux/io.h>
  20#include <linux/slab.h>
  21
  22#include <pcmcia/ss.h>
  23
  24#include "yenta_socket.h"
  25#include "i82365.h"
  26
  27static bool disable_clkrun;
  28module_param(disable_clkrun, bool, 0444);
  29MODULE_PARM_DESC(disable_clkrun, "If PC card doesn't function properly, please try this option");
  30
  31static bool isa_probe = 1;
  32module_param(isa_probe, bool, 0444);
  33MODULE_PARM_DESC(isa_probe, "If set ISA interrupts are probed (default). Set to N to disable probing");
  34
  35static bool pwr_irqs_off;
  36module_param(pwr_irqs_off, bool, 0644);
  37MODULE_PARM_DESC(pwr_irqs_off, "Force IRQs off during power-on of slot. Use only when seeing IRQ storms!");
  38
  39static char o2_speedup[] = "default";
  40module_param_string(o2_speedup, o2_speedup, sizeof(o2_speedup), 0444);
  41MODULE_PARM_DESC(o2_speedup, "Use prefetch/burst for O2-bridges: 'on', 'off' "
  42        "or 'default' (uses recommended behaviour for the detected bridge)");
  43
  44/*
  45 * Only probe "regular" interrupts, don't
  46 * touch dangerous spots like the mouse irq,
  47 * because there are mice that apparently
  48 * get really confused if they get fondled
  49 * too intimately.
  50 *
  51 * Default to 11, 10, 9, 7, 6, 5, 4, 3.
  52 */
  53static u32 isa_interrupts = 0x0ef8;
  54
  55
  56#define debug(x, s, args...) dev_dbg(&s->dev->dev, x, ##args)
  57
  58/* Don't ask.. */
  59#define to_cycles(ns)   ((ns)/120)
  60#define to_ns(cycles)   ((cycles)*120)
  61
  62/*
  63 * yenta PCI irq probing.
  64 * currently only used in the TI/EnE initialization code
  65 */
  66#ifdef CONFIG_YENTA_TI
  67static int yenta_probe_cb_irq(struct yenta_socket *socket);
  68static unsigned int yenta_probe_irq(struct yenta_socket *socket,
  69                                u32 isa_irq_mask);
  70#endif
  71
  72
  73static unsigned int override_bios;
  74module_param(override_bios, uint, 0000);
  75MODULE_PARM_DESC(override_bios, "yenta ignore bios resource allocation");
  76
  77/*
  78 * Generate easy-to-use ways of reading a cardbus sockets
  79 * regular memory space ("cb_xxx"), configuration space
  80 * ("config_xxx") and compatibility space ("exca_xxxx")
  81 */
  82static inline u32 cb_readl(struct yenta_socket *socket, unsigned reg)
  83{
  84        u32 val = readl(socket->base + reg);
  85        debug("%04x %08x\n", socket, reg, val);
  86        return val;
  87}
  88
  89static inline void cb_writel(struct yenta_socket *socket, unsigned reg, u32 val)
  90{
  91        debug("%04x %08x\n", socket, reg, val);
  92        writel(val, socket->base + reg);
  93        readl(socket->base + reg); /* avoid problems with PCI write posting */
  94}
  95
  96static inline u8 config_readb(struct yenta_socket *socket, unsigned offset)
  97{
  98        u8 val;
  99        pci_read_config_byte(socket->dev, offset, &val);
 100        debug("%04x %02x\n", socket, offset, val);
 101        return val;
 102}
 103
 104static inline u16 config_readw(struct yenta_socket *socket, unsigned offset)
 105{
 106        u16 val;
 107        pci_read_config_word(socket->dev, offset, &val);
 108        debug("%04x %04x\n", socket, offset, val);
 109        return val;
 110}
 111
 112static inline u32 config_readl(struct yenta_socket *socket, unsigned offset)
 113{
 114        u32 val;
 115        pci_read_config_dword(socket->dev, offset, &val);
 116        debug("%04x %08x\n", socket, offset, val);
 117        return val;
 118}
 119
 120static inline void config_writeb(struct yenta_socket *socket, unsigned offset, u8 val)
 121{
 122        debug("%04x %02x\n", socket, offset, val);
 123        pci_write_config_byte(socket->dev, offset, val);
 124}
 125
 126static inline void config_writew(struct yenta_socket *socket, unsigned offset, u16 val)
 127{
 128        debug("%04x %04x\n", socket, offset, val);
 129        pci_write_config_word(socket->dev, offset, val);
 130}
 131
 132static inline void config_writel(struct yenta_socket *socket, unsigned offset, u32 val)
 133{
 134        debug("%04x %08x\n", socket, offset, val);
 135        pci_write_config_dword(socket->dev, offset, val);
 136}
 137
 138static inline u8 exca_readb(struct yenta_socket *socket, unsigned reg)
 139{
 140        u8 val = readb(socket->base + 0x800 + reg);
 141        debug("%04x %02x\n", socket, reg, val);
 142        return val;
 143}
 144
 145static inline u8 exca_readw(struct yenta_socket *socket, unsigned reg)
 146{
 147        u16 val;
 148        val = readb(socket->base + 0x800 + reg);
 149        val |= readb(socket->base + 0x800 + reg + 1) << 8;
 150        debug("%04x %04x\n", socket, reg, val);
 151        return val;
 152}
 153
 154static inline void exca_writeb(struct yenta_socket *socket, unsigned reg, u8 val)
 155{
 156        debug("%04x %02x\n", socket, reg, val);
 157        writeb(val, socket->base + 0x800 + reg);
 158        readb(socket->base + 0x800 + reg); /* PCI write posting... */
 159}
 160
 161static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val)
 162{
 163        debug("%04x %04x\n", socket, reg, val);
 164        writeb(val, socket->base + 0x800 + reg);
 165        writeb(val >> 8, socket->base + 0x800 + reg + 1);
 166
 167        /* PCI write posting... */
 168        readb(socket->base + 0x800 + reg);
 169        readb(socket->base + 0x800 + reg + 1);
 170}
 171
 172static ssize_t show_yenta_registers(struct device *yentadev, struct device_attribute *attr, char *buf)
 173{
 174        struct pci_dev *dev = to_pci_dev(yentadev);
 175        struct yenta_socket *socket = pci_get_drvdata(dev);
 176        int offset = 0, i;
 177
 178        offset = snprintf(buf, PAGE_SIZE, "CB registers:");
 179        for (i = 0; i < 0x24; i += 4) {
 180                unsigned val;
 181                if (!(i & 15))
 182                        offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
 183                val = cb_readl(socket, i);
 184                offset += snprintf(buf + offset, PAGE_SIZE - offset, " %08x", val);
 185        }
 186
 187        offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n\nExCA registers:");
 188        for (i = 0; i < 0x45; i++) {
 189                unsigned char val;
 190                if (!(i & 7)) {
 191                        if (i & 8) {
 192                                memcpy(buf + offset, " -", 2);
 193                                offset += 2;
 194                        } else
 195                                offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
 196                }
 197                val = exca_readb(socket, i);
 198                offset += snprintf(buf + offset, PAGE_SIZE - offset, " %02x", val);
 199        }
 200        buf[offset++] = '\n';
 201        return offset;
 202}
 203
 204static DEVICE_ATTR(yenta_registers, S_IRUSR, show_yenta_registers, NULL);
 205
 206/*
 207 * Ugh, mixed-mode cardbus and 16-bit pccard state: things depend
 208 * on what kind of card is inserted..
 209 */
 210static int yenta_get_status(struct pcmcia_socket *sock, unsigned int *value)
 211{
 212        struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
 213        unsigned int val;
 214        u32 state = cb_readl(socket, CB_SOCKET_STATE);
 215
 216        val  = (state & CB_3VCARD) ? SS_3VCARD : 0;
 217        val |= (state & CB_XVCARD) ? SS_XVCARD : 0;
 218        val |= (state & (CB_5VCARD | CB_3VCARD | CB_XVCARD | CB_YVCARD)) ? 0 : SS_PENDING;
 219        val |= (state & (CB_CDETECT1 | CB_CDETECT2)) ? SS_PENDING : 0;
 220
 221
 222        if (state & CB_CBCARD) {
 223                val |= SS_CARDBUS;
 224                val |= (state & CB_CARDSTS) ? SS_STSCHG : 0;
 225                val |= (state & (CB_CDETECT1 | CB_CDETECT2)) ? 0 : SS_DETECT;
 226                val |= (state & CB_PWRCYCLE) ? SS_POWERON | SS_READY : 0;
 227        } else if (state & CB_16BITCARD) {
 228                u8 status = exca_readb(socket, I365_STATUS);
 229                val |= ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
 230                if (exca_readb(socket, I365_INTCTL) & I365_PC_IOCARD) {
 231                        val |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
 232                } else {
 233                        val |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
 234                        val |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
 235                }
 236                val |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
 237                val |= (status & I365_CS_READY) ? SS_READY : 0;
 238                val |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
 239        }
 240
 241        *value = val;
 242        return 0;
 243}
 244
 245static void yenta_set_power(struct yenta_socket *socket, ocket" class="sref">s0sref">yenta_set_power 245d5" class="line" name="5line" name="L241h5d5nta_socket.241        * 167        quire to u   the string">" to ="sre 16de c* onsn class="comment"> */
cb_readl(socket, CBs="sref">state &  */
 2s="sref">readb(socket-&flag href="+code=staflag lass="sref">status &amYENTAD" claN" cla_EXCAhref="+code=staYENTAD" claN" cla_EXCA"sref">45d5" class="line" name="5line" name="L241h/yenta_so2ket.c#L150" id="L150" cl2ss="l25e" name="L230"> 230                u8, regval;
 231u8, valueol_write_config_dwol_" cl="sref">status = exca_readb(socket, I365_STATUS);
 232u8, exca_readbSS_POWERONARD" VPP1_MASKode=I365_PC_IOCARD" VPP1_MASK="sref">SS_POWERONARD" VPP2_MASKode=I365_PC_IOCARD" VPP2_MASK="srf">I365_STATUS);
 153
 224 167         */
 235        } else if>(socket-&flag href="+code=staflag lass="sref">status &amYENTAD" claN" cla_DFhref="+code=staYENTAD" claN" cla_DFef">I365_PC_IOCARD) {
 236        } else if (socket-&Vcc href="+code=stVccef">I365_PC_IOCARD) {
 237) {
 238 232u8, val ARD" VCC_3Vode=I365_PC_IOCARD" VCC_3V" class="sref">val;
 229val;
 230) {
 231      "> 232u8, val ARD" VCC_5Vode=I365_PC_IOCARD" VCC_5V" class="sref">val;
 192              bclakass="sref">val;
 233      default:5_PC_IOCARD) {
 234      "> 232u8,         return 0;
 235              bclakass="sref">val;
 236 243}
 237        } else if (socket-&Vpp href="+code=stVppef">I365_PC_IOCARD) {
 238) {
 229) {
 230u8, val ARD" VPP1_5Vode=I365_PC_IOCARD" VPP1_5V" class="sref">val;
 231      "> 232val;
 192      ca   120:5_PC_IOCARD) {
 193                             >, val ARD" VPP1_12Vode=I365_PC_IOCARD" VPP1_12V" class="sref">val;
 234      "> 232val;
 235      me="L243"> 243}
 196                } else {
 237 167         */
 238        } else if (socket-&Vcc href="+code=stVccef">I365_PC_IOCARD) {
 229) {
 180 237u8, val ARD" VCC_5Vode=I365_PC_IOCARD" VCC_5V" class="sref">val;
 181val;
 182      default:5_PC_IOCARD) {
 183 237u8,         return 0;
 184val;
 235      me="L243"> 243}
 236        } else if (socket-&Vpp href="+code=stVppef">I365_PC_IOCARD) {
 237) {
 238 232u8, val ARD" VPP1_5Vode=I365_PC_IOCARD" VPP1_5V" clef">SS_POWERONARD" VPP2_5Vode=I365_PC_IOCARD" VPP2_5V" class="sref">val;
 189val;
 190) {
 191      "> 232u8, val ARD" VPP1_12Vode=I365_PC_IOCARD" VPP1_12V" clef">SS_POWERONARD" VPP2_12Vode=I365_PC_IOCARD" VPP2_12V" class="sref">val;
 192              bclakass="sref">val;
 193      me="L243"> 243}
 194 243}
 215
 196        } else i>, valueol_write_config_dwol_" cl/pcmcia/yenta_socket.c#L166" id="L166" cl25/yenta_so2ket.c#L197" id="L197" cl2ss="l2ne" name="L197"> 197 232u8exca_readb(socket, socket, I365_STATUS);
 229                u32,  167         */
 190        } else if (socket-&Vcc href="+code=stVccef">I365_PC_IOCARD) {
 191) {
 182                     >, valueATE"C_VCC_3Vode=I365_PC_IOCATE"C_VCC_3V" class="sref">val;
 193      bclakass="sref">val;
 194) {
 235                     >, valueATE"C_VCC_5Vode=I365_PC_IOCATE"C_VCC_5V" class="sref">val;
 236val;
 197) {
 238u8,         return 0;
 189val;
 190 243}
 191        } else if (socket-&Vpp href="+code=stVppef">I365_PC_IOCARD) {
 182) {
 233                     >, val ATE"C_VPP_3Vode=I365_PC_IOCATE"C_VPP_3V" class="sref">val;
 184val;
 235) {
 236, val ATE"C_VPP_5Vode=I365_PC_IOCATE"C_VPP_5V" class="sref">val;
 197 232val;
 238) {
 189, val ATE"C_VPP_12Vode=I365_PC_IOCATE"C_VPP_12V" class="sref">val;
 190val;
 191 243}
 182        } else i>, value = cb_readl(socket, I/pcmcia/yenta_socket.c#L166" id="L166" cl23/yenta_so3ket.c#L223" id="L223" cl3ss="l3ne" name="L223"> 223cb_readl(socket, ="sref">socket, I365_STATUS);
 243}
 243}
 186
 210static int (struct pcmcia_socket *cb_readl(s0sref">yenta_set_power) {
 212        struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
 200     uket.c#L216"+code=u1e" nam"> 200     bridg i + 1);
val;
 221
 */
socket-&Vcc href="+code=stVccef">365_0/pcmcia/yenta_socket.c#L166" id="L166" cl23/yenta_so3ket.c#L234" id="L234" cl3ss="l3ne" name="L234"> 234static int yeref">cb_readl(socketval;
 215
 216     f>(socket-&io_irqhref="+code=socio_irqlass="sref">socketf (socket-&io_irqhref="+code=socio_irqlassass="sref">val;
 200     bridg i + 1);
socket = figl" clw+code=container_offigl" clwss="sref">cb_readl(socket, BRIDGEfCONTRO="+code=I365_INT>, BRIDGEfCONTRO=ef">I3"sref"~ef">exca_readb, BRIDGEfCRSef="+code=SS_WRP>, BRIDGEfCRSe" clef">SS_POWERON>, BRIDGEfINf="+code=DEVICE_A>, BRIDGEfINf=vers/ass="sref">val;
value = cb_readl(socket, CBs="sref">state &  229                u8ode=yenta_set_po0">olassass="sref">val;
 230             bridg i + 1);
val |= (socket-&flag href="+code=staflag lass="sref">status &amADY" SEef="+code=SS_WRPROT" SEes="sre5_CS_POWERON)>, BRIDGEfCRSef="+code=SS_WRP>, BRIDGEfCRSe" clef">SS_POWERON : 0;
 221
 232 167        errupt _of"rol?n class="comment"> */
 223             0">ode=yenta_set_po0">olass="sref">status = exca_readb(socket,  234static i0">ode=yenta_set_po0">olass="s               if">ode=yenta_set_po0">olass="sref"~0xffSS_POWERON : 0;
 235 !"> 216     f>(socket-&devhref="+code=socdevclas="sref">socket-&irqhref="+code=socirqlassre65_PC_IOCARD) {
 236ode=yenta_set_po0">olass=ss="sref">val f>(socket-&adlirqhref="+code=socadlirqlass=5_CS_POWERON)f>(socket-&adlirqhref="+code=socadlirqlass=_CS_BVD2) ? 0f (socket-&io_irqhref="+code=socio_irqlassass="sref">val;
 197 232u8SS_POWERON>, BRIDGEfINf="+code=DEVICE_A>, BRIDGEfINf=versass="sref">val;
 238 243}
 232u8exca_readb(socket, socket">ode=yenta_set_po0">olassfSS_POWERON : 0;
 231u8u8,  : 0;
 : 0;
 223             >, value = exca_readb(socket, state &CTL" RING_ENAhref="+code=staCTL" RING_ENA" clef">SS_POWERONCTL" claR_ENAhref="+code=staCTL" claR_ENAlassfSS_POWERON : 0;
 224, val |= (socket-&flag href="+code=staflag lass="sref">status &amADY" SEef="+code=SS_WRPROT" SEes="sre5_65_CS_BVD2) ? 0ARD" cla" SEef="+code=SS_WRPARD" cla" SEe" clSS_POWERON : 0;
 235, val |= (socket-&flag href="+code=staflag lass="sref">status &amADYef="+code=I365_PC_IOCADYef="+cs="sre5_CS_POWERON)p; ef">SS_POWERON : 0;
 236        } else if (socket-&io_irqhref="+code=socio_irqlass=!="sref">valuef>(socket-&devhref="+code=socdevclas="sref">socket-&irqhref="+code=socirqlassre65_PC_IOCARD) {
 237, ) ? 0f (socket-&io_irqhref="+code=socio_irqlassass="sref">val;
 238u8SS_POWERON>, BRIDGEfINf="+code=DEVICE_A>, BRIDGEfINf=versass="sref">val;
 229 243}
 230u8exca_readb(socket, socket, I365_STATUS);
 221
 192             >, value = exca_readb(socket, state &CTL" VCC_MASKode=I365_PC_IOCARD" VCC_MASK="sr|>state &CTL" VPP1_MASKode=I365_PC_IOCARD" VPP1_MASK="srf">I365_STATUS);
 233, ) ? 0ARD" cWR_NO" SEef="+code=SS_WRPARD" cWR_NO" SEeversass="sref">val;
 234        } else if (socket-&flag href="+code=staflag lass="sref">status &amADYcWR_AUTOode=I365_PC_IOCADYcWR_AUTO="srfss="sref">val;
 235      a              >, ) ? 0ARD" cWR_AUTOode=I365_PC_IOCARD" cWR_AUTOversass="sref">val;
 236        } else if (socket-&flag href="+code=staflag lass="sref">status &amADYOUTPUT_ENAhref="+code=staADYOUTPUT_ENA="srfss="sref">val;
 237, ) ? 0ARD" cWR_OUTode=I365_PC_IOCARD" cWR_OUTversass="sref">val;
 238                if (exca_readb(socket, value>, val;
 229u8exca_readb(socket, socket, I365_STATUS);
 240
 231 167        errupt: nocISA10rq forcASC1 class="comment"> */
 192             >, value = exca_readb(socket, I365_STATUS);
 193             >, socket, val;
 234, ) ? 0ARD" ASC_ef="+code=I365_CS_DETECT" clCT" class="sref">SS_DETECT;
 235        } else if (socket-&flag href="+code=staflag lass="sref">status &amADYef="+code=I365_PC_IOCADYef="+cs="sre65_PC_IOCARD) {
 196 235        } else if (socket-&csc_masstatus &amADYval;
 237 234, ) ? 0ARD" ASC_ef="+code=I365_CS_STSCHG" clCG" class="sref">SS_STSCHG;
 238                } else {
 229        } else if (socket-&csc_masstatus &amADYval;
 180 237u8, val ARD" clCGef="+code=I365_CS_BVD1" clCass="srefref">SS_STSCHG;
 181        } else if (socket-&csc_masstatus &amADYval;
 182      ////////ass="sref">u8, val ARD" clCGef="+code=I365_CS_BVD2" clCass="srefref">SS_STSCHG;
 183 237        } else if (socket-&csc_masstatus &amADYval;
 184u8, val ARD" clCGef="+code=I365_CS_READY" clCY" class="ref">SS_STSCHG;
 235 243}
 236u8exca_readb(socket, socket, I365_STATUS);
 237value = exca_readb(socket, I365_STATUS);
 238        } else if>(socket-&zoom_videohref="+code=soczoom_videoss="fss="sref">val;
 189(socket-&zoom_videohref="+code=soczoom_videoss="">container_of(socket-&flag href="+code=staflag lass="sref">status &amADYZV="+code=I365_PC_IOCADYZV="+c" clf">I365_STATUS);
 243}
socket-&coffiglclassw+code=container_offiglclassw="sref">exca_readb(socket, BRIDGEfCONTRO="+code=I365_INT>, BRIDGEfCONTRO=ef">="sref">socketI365_STATUS);
 */
socket-&cdlclassref="+code=cb_readlclassrss="sref">cb_readl(socket, , I365_STATUS);
socket-&cdlclassref="+code=cb_readlclassrss="sref">cb_readl(socket, , socket, CDMASKode=I365_PC_IOC>, CDMASK" clf">I365_STATUS);
 215
t step when the vers/p is _offigured1 class="comment"> */
socket-&Vcc href="+code=stVccef">3!5_0/pcmcia/yenta_socket.c#L166" id="L166" cl23/yenta_so3ket.c#L198" id="L198" cl3ss="l39e" name="L238"> 238             nt yeref">cb_readl(socketval;
 242        return 0;
 243}
 221
 210static int yeta_get_status(struct pcmcia_socket *(struct* onsio_map href="+code=stct* onsio_mapref">pcmcia_socketval;
 212        struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
 210static imap href="+code=stmapref""sref">socket);
socketoctref="+code=cb_re>octrsref">yenta_socketyenta_socketsocket);
socket);
socketiohref="+code=socioss="="sref">socket-&map href="+code=stmapref""sref">socket);
socket);
val;
 191 242<-       } else iEINVA="+code=I365_INTEINVA=ref""sref">socket);
 : 0;
socket-&enabl i + 1);
socketARD" ENA_IOode=I365_PC_IOCARD" ENA_IOsref">container_ofsocket);
socket-&addode=yenta_set_poaddosrefs="sref">value = exca_readb(socket, , socket);
 215
 */
status &amenabl i + 1);
) {
 238socket);
 189u8exca_readb(socket, , yenta_socketsocket);
 243}
 221
u8exca_readb(socket, container_ofsocket, socketsocket-&star href="+code=socktar sref="sref">socket);
socket-&ed exca_readb(socket, container_ofsocket, socketsocket-&stop href="+code=ststopsref="sref">socket);
socket);
socket-&>octref="+code=cb_re>octrsrefs="sref">value = exca_readb(socket, container_ofsocket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_0WShref="+code=staMAP_0WSss="fss="sref">val;
 237value>octref="+code=cb_re>octrsrefsss="sref">val ARD" cOss=_0WShref="+code=staARD" cOss=_0WSsref">container_ofsocket);
valueiohref="+code=socioss="="sref">socket-&flag href="+code=staflag lass="sref">status &amMAP_16BIaode=I365_PC_IOCMAP_16BIass="fss="sref">val;
 189u8octref="+code=cb_re>octrsrefsss="sref">val ARD" cOss=_16BIaode=I365_PC_IOCARD" cOss=_16BIasref">container_ofsocket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_AUTOSZode=I365_PC_IOCMAP_AUTOSZss="fss="sref">val;
 231u8octref="+code=cb_re>octrsrefsss="sref">val ARD" cOss=_cOsSket.c#L216"+code=ARD" cOss=_cOsSkesref">container_ofsocket);
u8exca_readb(socket, socketoctrsref="sref">socket);
socket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_ACTIVEode=I365_PC_IOCMAP_ACTIVEss="fss="sref">val;
 235exca_readb(socket, , yenta_socketSS_POWERONenabl i + 1);
socket);
 242        return 0;
 243}
 243}
 210static int yeta_get_status(struct pcmcia_socket *(struct* onsmem_map href="+code=stct* onsmem_mapref">pcmcia_socketval;
) {
 212        struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
(struclgion href="+code=stclgion" na"sref">socket);
 210static imap href="+code=stmapref""sref">socket);
socketyenta_socketsocket);
 210static istar href="+code=socktar sref="sref">socketsocketsocket);
socket);
socket);
exca_readb(socket-&devhref="+code=socdevclas,="srefstatus(struclgion href="+code=stclgion" na="sref">socketsocket-&cls href="+code=stclslass="sref">socket);
socket);
 200     map href="+code=stmapref"="sref">socketmem href="+code=stmemss="="sref">socket-&map href="+code=stmapref""sref">socket);
socket-&star href="+code=socktar sref="sref">socketclgion href="+code=stclgion" na.f">socket-&star href="+code=socktar sref"sref">socket);
u8socketclgion href="+code=stclgion" na.f">socket-&en_write_config_dwen_sref"sref">socket);
socket-&c onsstar href="+code=soc* onsstar ref"="sref">socketmem href="+code=stmemss="="sref">socket-&* onsstar href="+code=soc* onsstar ref""sref">socket);
socket);
SS_POWERONstar href="+code=socktar sref="sre ass="sref">u8u8socket);
 2 sref">value  onsstar href="+code=soc* onsstar ref"="sre"sre 26) |f">SS_POWERONmem href="+code=stmemss="="sref">socket-&spee_write_config_dwspee_sref="sre 1000/pcmcia/yenta_socket.c#L166" id="L166" cl24/d5nta_so4ket.c#L157" id="L157" cl4ss="l45e" name="L237"> 237 242<-       } else iEINVA="+code=I365_INTEINVA=ref""sref">socket);
 243}
socketARD" ENA_MEM="+code=SS_BATW>, container_ofsocket);
 200     addode=yenta_set_poaddosrefs="sref">value = exca_readb(socket, , socket);
status &amenabl i + 1);
) {
 192             addode=yenta_set_poaddosrefs"sref= ~yenta_socketsocket);
 233exca_readb(socket, , yenta_socketsocket);
 243}
 215
 216     id exca_readb(socketcontainer_ofsocketsocket);
socket);
socket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_16BIaode=I365_PC_IOCMAP_16BIass="fss="sref">val;
 230u8val ARD" MEM_16BIaode=I365_PC_IOCARD" MEM_16BIaref""sref">socket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_0WShref="+code=staMAP_0WSss="fss="sref">val;
 192             wor_write_config_dwwor_ref"=ss="sref">val ARD" MEM_0WShref="+code=staARD" MEM_0WSref""sref">socket);
socket-&ed exca_readb(socket, , container_ofsocket, socketsocket);
socket);
socket-&wor_write_config_dwwor_ref"="s               i24op href="+code=ststopsref="sre"sre 12fs="sref0x0fff"sref">socket);
container_ofsocket-&spee_write_config_dwspee_sref)re65_PC_IOCARD) {
 238socket);
 180             wor_write_config_dwwor_ref"=ss="sref">val ARD" MEM_WS0href="+code=staARD" MEM_WS0ref""sref">socket);
 181socket);
 183             wor_write_config_dwwor_ref"=ss="sref">val ARD" MEM_WS"+code=I365_CS_BVD1" MEM_WS"ref""sref">socket);
 184socket);
 236u8val ARD" MEM_WS"+code=I365_CS_BVD1" MEM_WS"ref"ef">SS_POWERONCTL" MEM_WS0href="+code=staARD" MEM_WS0ref""sref">socket);
 237socket);
 243}
exca_readb(socket, , container_ofsocket, socketsocket);
 240
socket-&wor_write_config_dwwor_ref"="s  sref">value  onsstar href="+code=soc* onsstar ref"=-"sref">socketsocket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_WRPROaode=I365_PC_IOCMAP_WRPROass="fss="sref">val;
 183             wor_write_config_dwwor_ref"=ss="sref">val ARD" MEM_WRPROaode=I365_PC_IOCARD" MEM_WRPROaref""sref">socket);
socket-&flag href="+code=staflag lass="sref">status &amMAP_ATTRIBode=I365_PC_IOCMAP_ATTRIBss="fss="sref">val;
 235val ARD" MEM_REcode=I365_CS_STSCHG" MEM_REcref""sref">socket);
 216     id exca_readb(socket, , container_ofsocket, socketsocket);
socket);
valuemem href="+code=stmemss="="sref">socket-&flag href="+code=staflag lass="sref">status &amMAP_ACTIVEode=I365_PC_IOCMAP_ACTIVEss="fss="sref">val;
 189u8exca_readb(socket, , yenta_socketSS_POWERONenabl i + 1);
socket);
 242        return 0;
 243}
 : 0;
socket);
socket);
 242_ href="+code=socirq"> 242_ " nam>SS_POWERONf="dri0">errupthref="+code=socf="dri0">errupt"sref0"> 210static iirqhref="+code=socirqlass, void">yenta_socketval;
) {
 210static iev socket);
 212        struct yenta_socket *)_status(strudev_i_write_config_dwdev_i_ss=""sref">socket);
SS_POWERONcsc href="+code=stcscss=""sref">socket);
 200     uket.c#L232"fig_dwu3e" nam>SS_POWERONcb_ev socket);
 221
errupt me="us forcthe ev  */
socket-&cb_ev socket b clasref="+code=cb_readlclasr"sreff">exca_readb(socket, , socket);
socket-&cdlclassref="+code=cb_readlclassrss="sref">cb_readl(socket, , socket-&cb_ev socket);
 215
 216     csc href="+code=stcscss="s="sref">value = exca_readb(socket, , I365_STATUS);
socket);
value b_ev SS_POWERONcsc href="+code=stcscss=")fss="sref">val;
 189 242socketRQ_NONEode=I365_PC_IOC>RQ_NONEss=""sref">socket);
 240
socket-&ev , CD1EVElaode=I365_PC_IOC>, CD1EVElasrefef">SS_POWERON>, CD2EVElaode=I365_PC_IOC>, CD2EVElalassr) ?">SS_POWERONSS_ef="+code=I365_CS_DETSS_ef="+csrefe: 0 "sref">socket);
u8status &amARD" ASC_ef="+code=I365_CS_DETECT" clCT" class="s) ?">SS_POWERONSS_ef="+code=I365_CS_DETSS_ef="+csrefe: 0"sref">socket);
value = exca_readb(socket, status &amARD" PCYef="+code=I365_PC_IOCARD" PCYef="+csref)=65_PC_IOCARD) {
 234status &amARD" ASC_ef="+code=I365_CS_STSCHG" clCG" class="s) ?">SS_POWERONSS_socket);
 236u8status &amARD" ASC_ef="+code=I365_CS_BVD1" clCass="sref) ?">SS_POWERONSS_socket);
 237valueiv status &amARD" ASC_ef="+code=I365_CS_BVD2" clCass="sref) ?">SS_POWERONSS_socket);
 238status &amARD" ASC_ef="+code=I365_CS_READY" clCY" class=") ?">SS_POWERONSS_socket);
 243}
 240
val;
 192             ket" clparse_iv (strua>(socket-&a>(socketsocket);
socket);
 242socketRQ_HANDLEcode=I365_PC_IOCARQ_HANDLEcss=""sref">socket);
 243}
 243}
SS_POWERONf="dri0">errupt_wrappcode=yenta_set_power" c0">errupt_wrappco="sreunsigned1long_status(strudatawrite_config_dwdataref"fss="sref">val;
 212        struct yenta_socket *)_status(strudatawrite_config_dwdataref""sref">socket);
 240
socket-&f="dri0">errupthref="+code=socf="dri0">errupt"sref0, (void">)yenta_socket *socket);
u8(socket-&poll_timcode=yenta_set_popoll_timcolass.f">socket-&expicls href="+code=stexpiclsss="s="sref">valuejiffils href="+code=stjiffilsss="s+"sref">socketsocket);
socket-&add_timcode=yenta_set_poadd_timco="sre"srefstatus(strua>(socket-&poll_timcode=yenta_set_popoll_timcolassf"sref">socket);
 243}
 215
SS_POWERONf="driclear_maps href="+code=stf="driclear_maps="sre"> 212        struct yenta_socket *val;
 210static iihref="+code=sociref""sref">socket);
 212        struclsourcehref="+code=socclsource" nam>SS_POWERONcls href="+code=stclslasss="{ .f">socket-&star href="+code=socktar srefs="0, .f">socket-&en_write_config_dwen_srefs="0x0fff }"sref">socket);
 200     ct* onsio_map href="+code=stct* onsio_mapref">210static iiohref="+code=socioss="s="{ 0, 0, 0, 0, 1 }"sref">socket);
socket-&ct* onsmem_map href="+code=stct* onsmem_mapref">f">socket-&mem href="+code=stmemss="s="{ .f">socket-&cls href="+code=stclslasss=""srefstatus(strucls href="+code=stclslass, }"sref">socket);
 : 0;
socket-&f="drivet href="+code=yenta_socket" clet href="="sre"srefstatus(strua>(socket-&a>((strudead href="+code=yenta_socdead href="lassf"sref">socket);
status &amihref="+code=sociref"s&lre 2f">status &amihref="+code=sociref"++)=65_PC_IOCARD) {
 235socket-&map href="+code=stmapref"="sref">socketihref="+code=sociref""sref">socket);
 2L193f">socket-&f="drivet io_map href="+code=stnt ye"srefstatus(strua>(socket-&a>((struiohref="+code=socioss="f"sref">socket);
 243}
status &amihref="+code=sociref"s&lre 5f">status &amihref="+code=sociref"++)=65_PC_IOCARD) {
 189u8socket-&map href="+code=stmapref"="sref">socketihref="+code=sociref""sref">socket);
 180             nt ye"srefstatus(strua>(socket-&a>((strumem href="+code=stmemss="f"sref">socket);
 243}
 243}
socket);
 167        errog="Lon5/a>required  class="comment"> */
SS_POWERONf="dri0">errog="ehref="+code=socf="dri0">errog="e="sre"> 212        struct yenta_socket *val;
) {
SS_POWERONme="ehref="+code=socme="eref""sref">socket);
 243}
socket b clasref="+code=cb_readlclasr"sreff">exca_readb(socket, , socket);
valueme="ehref="+code=socme="eref"="sref"               i>, 5V="+code=I365_PC_IOC>, 5V="+cref"=|"sref">socket, 3V="+code=I365_PC_IOC>, 3V="+cref"=|"sref">socket, XV="+code=I365_PC_IOC>, XV="+cref"=|"sref">socket, YV="+code=I365_PC_IOC>, YV="+cref"))=|fsref">socket);
 1 sref">valueme="ehref="+code=socme="eref"="sref"               i>, Cef="+c"+code=I365_CS_B>, Cef="+c"ref"=|"sref">socket, Cef="+cet.c#L232"fig_dw>, Cef="+ceref"=|"sref">socket, NOTA="+code=I365_PC_IOC>, NOTA="+cref"=|"sref">socket, BADVCCREQode=I365_PC_IOC>, BADVCCREQref"))=|fsref">socket);
 1(        } else if ("ehref="+code=socme="eref"="sref"               i>, 16BIa="+code=I365_PC_IOC>, 16BIa="+cref"=|"sref">socket, CB="+code=I365_PC_IOC>, CB="+cref"))=="s               i>, 16BIa="+code=I365_PC_IOC>, 16BIa="+cref"=|"sref">socket, CB="+code=I365_PC_IOC>, CB="+cref"))fss="sref">val;
cb_readl(socket, , socket, CVSTESaode=I365_PC_IOC>, CVSTESass="f"sref">socket);
 243}
 215
 167        resume and10"itializ="Lon5ev  */
 210static int  212        struket" cla>((yenta_socket *val;
 212        struct yenta_socket *container_of(sock, struct yenta_socket, socket);
 240
socket-&ed exca_readb(socket, socket);
u8exca_readb(socket, socket);
socket);
errog="Lon5 class="comment"> */
socket-&f="dri0">errog="ehref="+code=socf="dri0">errog="e="sreyenta_socket, socket);
 243}
socket);
 243}
socket-&typehref="+code=soctyperef"="sref"sref">status &ama>(socket-&typehref="+code=soctyperef"="sref">socket-&a>(<_0"it+code=yenta_soclass_0"it="srfss="sref">val;
 180             a>(socket-&typehref="+code=soctyperef"="sref">socket-&a>(<_0"it+code=yenta_soclass_0"it="sreyenta_socket, socket);
 221
errupts  class="comment"> */
socket-&cb_classref="+code=cb_readlclassrss="sref">cb_readl(socket, , socket, CDMASKode=I365_PC_IOC>, CDMASKlass="sref">socket);
socket);
 242        return 0;
 243}
socket);
 210static int  212        struket" cla>((yenta_socket *val;
 212        struct yenta_socket *container_of(sock, struct yenta_socket, socket);
 221
errupts  class="comment"> */
socket-&cb_classref="+code=cb_readlclassrss="sref">cb_readl(socket, , socket);
socket);
 242        return 0;
 243}
socket);
 167         */
 167         */
 167         */
 167         */
 167         */
 167         */
 167         */
socketval;
socketval;
socketval;
 243}
socket 243}
socket 243}
socket 243}
 : 0;
socket : 0;
socketsocket : 0;
 : 0;
 243}
 210static int  212        struclsourcehref="+code=socclsource" nam>yenta_socketsock, struclsourcehref="+code=socclsource" nam>yenta_socket 243}
 238 180             uket.c#L232"fig_dwu3e" nam>SS_POWERONmint.c#L232"fig_dwminlassfss="sref">val;
 200     uket.c#L232"fig_dwu3e" nam>SS_POWERONalignt.c#L232"fig_dwalignsref">yenta_socketizehref="+code=sockizesref">yenta_sockettar href="+code=socktar sref="sref">socket        return 0;
 221
socket-&flag href="+code=staflag lass="sref">status &amIORESOURCE_IO="+code=SS_BATWIORESOURCE_IOlassf=65_PC_IOCARD) {
        return 0;
 180             aizehref="+code=sockizesref="syenta_socket        return 0;
 235socket        return 0;
 236u8        return 0;
 238(struavairef="+code=cb_reavairsrefs="sref">socketsocket-&in_write_config_dwen_srefs-"sref">socketsocket-&star href="+code=socktar srefa>        return 0;
 189 210static iihref="+code=sociref""sref">socket);
 180             aizehref="+code=sockizesref="syenta_socketsocket);
 181        } else iaizehref="+code=sockizesref="sre status(struavairef="+code=cb_reavairsref/8f=65_PC_IOCARD) {
 192 180             aizehref="+code=sockizesref="s        } else iavairef="+code=cb_reavairsref+1)/8"sref">socket);
 180 167         */
 180 180             ihref="+code=sociref"s="0fomment"> */
 235val;
 236 180 180             ihref="+code=sociref"++fomment"> */
 237 180             aizehref="+code=sockizesref="s1s&lre&lre 210static iihref="+code=sociref""sref">socket);
 238 243}
 189        } else iaizehref="+code=sockizesref="lre 210static imint.c#L232"fig_dwminlassfss="sref">val;
 180 180             aizehref="+code=sockizesref="s210static imint.c#L232"fig_dwminlass"sref">socket);
 181             aizehref="+code=sockizesref"sref">socket);
 192             star href="+code=socktar srefs="sref">socketsocket);
 243}
 215
 237        } else ialloc="e_clsourcehref="+code=socalloc="e_clsourcess="sref">cb_readlyenta_socketizehref="+code=sockizesref">yenta_sockettar href="+code=socktar sref="sref">socketyenta_socket) {
 238 180yenta_socket) {
 189 242<1a>        return 0;
 180 243}
 181static iaizehref="+code=sockizesref/2a>        return 0;
 192             alignt.c#L232"fig_dwalignsref = a>             aizehref="+code=sockizesref"sref">socket);
static imint.c#L232"fig_dwminlass="sref">socket);
socket);
 242        return 0;
 243}
socket);
 243}
 210static int  212        struct yenta_socket *sock, struclsourcehref="+code=socclsource" nam>yenta_socket 243}
 180 180             uket.c#L232"fig_dwu3e" nam>SS_POWERONmint.c#L232"fig_dwminlassfss="sref">val;
) {
 212        struclsourcehref="+code=socclsource" nam>yenta_socket 210static iihref="+code=sociref""sref">socket);
socket);
socket-&pci_bus_for_each_clsourcehref="+code=socpci_bus_for_each_clsourcess="sref">cb_readl(socket-&devhref="+code=socdevlass="sref">socket-&bushref="+code=socbus classyenta_socket) {
 236  !yenta_socketval;
 237 180socket);
 243}
 189         } else irls href="+code=stclslass="sref">socket-&flag href="+code=staflag lass=^"sref">socketsocket-&flag href="+code=staflag lass)="srefe="L243"> 243}
 180 1        } else iIORESOURCE_IO="+code=SS_BATWIORESOURCE_IOlass=|"sref">socketsocketval;
 181 180 167         */
 : 0;
        } else int cb_readlyenta_socketval;
 180 180 242<1a>        return 0;
 243}
 242        return 0;
 243}
 243}
 210static int  212        struct yenta_socket * 210static inode=yenta_set_ponrlassssunsigned1210static itypehref="+code=soctyperef"ss0"> 210static iaddr_>tar href="+code=socaddr_>tar ref"ss0"> 210static iaddr_in_write_config_dwaddr_in_ clafss="sref">val;
) {
 212        strukei_devhref="+code=sockei_devsref">yenta_socket             a>(socket-&devhref="+code=socdevlassa>        return 0;
 212        struclsourcehref="+code=socclsource" nam>yenta_socket 212        strukei_bus_regiont.c#L232"fig_dwkei_bus_region" nam>SS_POWERONregiont.c#L232"fig_dwregion" naa>        return 0;
        return 0;
 215
             devhref="+code=socdevlass="sref">socket-&clsourcehref="+code=socclsource" nam+"sref">socketsocket        return 0;
 */
socket-&par val;
 189 242        return 0;
 240
 */
u8status &amIORESOURCE_IO="+code=SS_BATWIORESOURCE_IOlassf>        return 0;
 180             mas 215
socket-&196"de=yenta_set_pon96"lass = a>             devhref="+code=socdevlass="sref">socket-&subordin("ehref="+code=socmubordin("elass="sref">socket-&196"de=yenta_set_pon96"lassa>        return 0;
socket-&flag href="+code=staflag lass== a>             typehref="+code=soctyperef"a>        return 0;
 243}
socket-&star href="+code=socktar srefs="f">socket-&config clasref="+code=cb_reaonfig clasrss="sref">cb_readl(yenta_sockettar href="+code=socaddr_>tar ref")="sref">status &ammas        return 0;
 200     regiont.c#L232"fig_dwregion" na.f">socket-&in_write_config_dwen_srefs="f">socket-&config clasref="+code=cb_reaonfig clasrss="sref">cb_readl(yenta_socketstatus &ammas        return 0;
socket-&star href="+code=socktar srefs"sref"sref">status &amregiont.c#L232"fig_dwregion" na.f">socket-&in_write_config_dwen_srefs"sre status(struregiont.c#L232"fig_dwregion" na.f">socket-&star href="+code=socktar srefs"sref"sref"!yenta_socket) {
 192             keibio _bus_to_clsourcehref="+code=socpcibio _bus_to_clsourcess="sref">cb_readl(struclgiont.c#L232"fig_dwregion" na="sref">socket);
        } else ikei_c#Lim_clsourcehref="+code=socpci_c#Lim_clsourcess="sref">cb_readlsocketsocket);
 180 180 242        return 0;
 235cb_readl"srefstatus(strudevhref="+code=socdevlass="sref">socket-&devhref="+code=socdevlasss>        return 0;
 236 180 y> 167   string">"Pclassigned1clsource %d busy or not avairabl , "lass="comment"> */
 237 180"srefstatus(strudevhref=re/a>-&cu mem1fgq           mas 238 180turn 0;
}
 240
        } else iregiont.c#L2ode=soctyperef"="sref">status &amIORESOURCE_IO="+code=SS_BATWIORESOURCE_IOlassf>        retD) {
 192          } else irls href="+c_cls href="+code=stnt  212  l(yenta_socketyenta_socket        reocket);
 180 167 212  l(yenta_socketyenta_socket);
 180 180 242 212  l(yenta_socketyenta_socket>val;
 235 236 1      } else {
 237        } else ialloc="e_clsode=soctyperef"="sref">status &amIORESOURCE_IO="+code=SSode=SS_BATWIORESOURCE_PREFETCHlass)fss="sref">v} else {
 238 180  } else irls href="+c_cls href="+code=stnt  212  l(yenta_socketyenta_socketsockeocket);
 189 242<1a>  42 212  l(yenta_socketyenta_socket);
 180 180          se irls href="+c_cls href="+code=stnt  212  l(yenta_socketyenta_socketval;
 181 180e1(           return 0;
 192 180                 */
socket-&flag href="+code=staflag lass== a>             typehref="+cEM="+code=SS_BATWIORESOURCE_MEMlass=|"sref">socturn 0;
 180          43}
 235 212  l(yenta_socketyenta_socketsockeocket);
 236u    se irls href="+c_cls href="+code=stnt  212  l(yenta_socketyenta_socket);
 237 180"srefsse irls href="+c_cls href="+code=stnt  212  l(yenta_socketyenta_socketval;
 238 240
socket-&ed cb_readl"srefstatus(strudevhref="+code=socdevlass="sref">socket-&devhref="+code=socdevlasss>        return 0;
 192 180     a>(strudevhref=re/a>-&cu meno37;d busy y licommor nox"lass="try    to> 167   mas 180 167stat>turn 0;
 180 1 /arls href="+code=stclslass="sref">socket-&flag href="+code=socktar srefs="f">socket-&config clasrode=stclslass="sref">socket-&flag href="+fig_dwen_srefs="f">socket-&config clasrode=stclslass="sref">socket-&flag href="+code=staflag lass== a>          eturn 0;
 242        return 0;
 243}
 */
  t"> */
 */
 110svoitic imas 212< busye=stnt  212< busye_read      struct yenta_socket * 210;
 1 else {
 180 1 /arls href="+cprogramsocpci_c#Lim_clsrogram     +/a>-&config clasr"e_cls href="+code=stnt  212  l(yenta_socket0et,         rede=smas<" nawrite_config_dwaddr_in_ claf | t.c#L155"7id="L155" cl6ss="l65e" n7me="L755"> 235 1 /arls href="+cESOUCB32e=BASE_0ATWIORESOURCE_IESOUCB32e=BASE_0socketturn 0;
-&config clasr"e_cls href="+code=stnt  212  l(yenta_socket1et,         rede=smas<" nawrite_config_dwaddr_in_ claf | t.2417id="L157" cl6ss="l65e" n7me="L737"> 237        }e1(     > 1 /arls href="+cESOUCB32e=BASE_1ATWIORESOURCE_IESOUCB32e=BASE_1socketturn 0;
 238 212  l(yenta_socket2et, soc|&amIORESOURCE_IO="+code=SSode=SS_BATWIORESOURCE_PREFETCHlass)fss="sref">de=smas<" nawrite_config_dwaddr_in_ claf | t.c#L149"7id="L159" cl6ss="l65e" n7me="L789"> 189 242<1a>  > 1 /arls href="+cESOUCB3ef"ORY=BASE_0ATWIORESOURCE_IESOUCB3ef"ORY=BASE_0socketturn 0;
 200     regiont.c#L2programsocpci_c#Lim_clsrogram     +/a>-&config clasr"e_cls href="+code=stnt  212  l(yenta_socket3et, socde=smas<" nawrite_config_dwaddr_in_ claf | t.c#L161"7id="L161" cl6ss="l66e" n7me="L781"> 181  > 1 /arls href="+cESOUCB3ef"ORY=BASE_1ATWIORESOURCE_IESOUCB3ef"ORY=BASE_1socketturn 0;
;
 180 1e irls href="+cpci_s   p_cardde=socbus classyenpci_s   p_cardde=/a>  l(yenta_socket-&devhref="+code=socdevlass="sref">socket-&bushref="+coref="+code=socmubordin("elass="sref">sock>turn 0;
}
 215
 243}
 */
  t"> */
 */
 110svoitic imasyenta_socket * 210;
) {
 212  tatic iihref="+code=sociref""sref">socket);
 210sry c l( */socke>stati4socke++v} else {
 180                struclsourcehref="+code=socclsource" nam>yenta_socket 235             devhref="+co+code=socket" class">yenta_socket-&devhref="+code=socdevlass="sref">socket-&bushref="+co="+code=socclsource" nam+"sref">socketsocketsocket);
 236  !yenta_socke /arls href="+code=stclslass="sref">socket-&flag href="+code=socktar srefs="f">socketv>status &amregiont.c#L232e=stclslass="sref">socket-&flag href="+fig_dwen_srefs="f">socketval;
 237 180  l(sock>turn 0;
 238socket-&flag href="+code=socktar srefs="f">socket-&config clasrode=stclslass="sref">socket-&flag href="+fig_dwen_srefs="f">socket-&config clasrode=stclslass="sref">socket-&flag href="+code=staflag lass== a>          eturn 0;
 143}
 221
 : 0;
 */
 1       */
 */
 210svoitic imasclose_read      struct yenta_socket       al;
 2 else {
 238yenta_socket *yentcket-&config clasr>yenget_drvdatasockei_devsref">yenget_drvdata/a>  l( 2urn 0;
 200         */
socket-&ed   /a>(strudevhref="+code=socdevlass="sref">socket-&devhref="+code=socdevlasss>        ret(strudevhref="+code=_attr_cmci7/srefster=staflag lass== de=_attr_cmci7/srefster=    aturn 0;
 212         */
 180 1 /arls href="+cpvers/_unsrefster=yenta_socket" class="pvers/_unsrefster=yenta_/a>  /a>(strudevhref="+co+codsocket" class">yentcketet-&flag href="+ccode=socket" classss0"> 210 215
 */
  l(yentcketetCB_SOCKET_MASKsocket0x0aturn 0;
 238xca_writeb/a>  l(yentcketet 2urn 0;
 200   else iaizehref="+cocodsocket" class">yentcketet-&flag href="+sb_irq_reaonfig clasrsb_irq    al;
 181yentcketet-&flag href="+sb_irq_reaonfig clasrsb_irq    ettar href="+ccodsocket" class">yentcketaturn 0;
u    urn 0;
 180 1e irls href="+cdel_timer=yyncstaflag lass== del_timer=yync/a>  /a>(strudevhref="+co+codsocket" class">yentcketet-&flag href="+poll_timersocket" class="poll_timercketaturn 0;
 200   else iaizehref="+cocodsocket" class">yentcketet-&flag href="+basesocket" class="base    al;
 236  !yenta_ssounmap/a>  l(yentcketet-&flag href="+basesocket" class="base    aturn 0;
yentcketaturn 0;
 243}
=socbus classyenpci_32leasef="ef">=/a>  l( 200     regiont.c#L2>yentiserru_hreicesockei_devsref">yentiserru_hreice/a>  l(socket-&ed yenset_drvdata/a>  l( 143}
}
 210s      struct =socbus classyenpccard_oper=f">sotruct =socbus classyen+code=yenta__oper=cket 236 1a>-&star href="+ini=socket" classssini="> 237 180-&config clasr"e_clsyent_ini=socket" classss"e_clsyent_ini=    eelse {
 237 1a>-&star href="+cuspfig_dwen_srefs="f"cuspfig"> 237 180-&config clasr"e_clsyent_cuspfig_dwen_srefs="f""e_clsyent_cuspfig    eelse {
 238-&star href="+get_10 180-&config clasr"e_clsget_10-&star href="+cet_1code=socket" classss0et_1code="> 237 180-&config clasr"e_clscet_1code=socket" classss"e_clscet_1code=    eelse {
-&star href="+cet_io_mapsociref""sref">cet_io_map"> 237 180-&config clasr"e_clscet_io_mapsociref""sref">"e_clscet_io_map    eelse {
        }a>-&star href="+cet_mem_mapsociref""sref">cet_mem_map"> 237 180-&config clasr"e_clscet_mem_mapsociref""sref">"e_clscet_mem_map    eelse {
 1}turn 0;
);
 2#ifdeftCONFIG_YENTA_TIcket);
 2#include"commenta>);
ti113x.h"> 2commen);
 2#figif);
 2#ifdeft);
 1#include"commenta>);
ricoh.h"> 2commen);
 1#figif);
 1#ifdeftCONFIG_YENTA_TOSHIBAcket);
 1#include"commenta>);
topic.h"> 2commen);
);
 1#ifdeftSS_CONFIG_YENTA_Ogcket);
 1#include"commenta>);
o2micro.h"> 2commen);
 2#figif);
 2enuma else {
 200     regiont.c#L2CARDBUS_TYPE_TIsocket" class">CARDBUS_TYPE_TI    eelse {
socket-&ed u8 18 180 1 /arls href="+cCARDBUS_TYPE_RICOBATWIORESOURCE_PCARDBUS_TYPE_RICOB    eelse {
 242  8 238 240
 1       */
 1       167roll="d have slightly diffe"sret"> */
 sequensys etc details. Listlimam he"s  t"> */
 1       */
 210s      struct sotruct s[] 2#ifdeftCONFIG_YENTA_TIcket);
 237 [   regiont.c#L2CARDBUS_TYPE_TIsocket" class">CARDBUS_TYPE_TI    ]> 180 238-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oi_ ref"f=6    eelse {
 189 2a>-&star href="+cave_10cave_10 189oi_cave_10 180 180-&star href="+re  ore_10re  ore_10 180     typehref="+coi_re  ore_10oi_re  ore_10 181-&star href="+cent_ini=socket" classssyent_ini=    8 1[   regiont.c#L2CARDBUS_TYPE_TI113_IOCBRIDGE MEM_MCARDBUS_TYPE_TI113_    ]0 180          a>-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oi113x_ ref"f=6    eelse {
 235-&star href="+cave_10cave_10 189oi_cave_10 236  !yenta_sa>-&star href="+re  ore_10re  ore_10 180     typehref="+coi_re  ore_10oi_re  ore_108id="L167" cl6ss="l66e" n8sref"867"> 237 180-&star href="+cent_ini=socket" classssyent_ini=    8 1[   regiont.c#L2CARDBUS_TYPE_TI12X_IOCBRIDGE MEM_MCARDBUS_TYPE_TI12X_    ]0 180 180-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oi12xx_ ref"f=6    eelse {
 181-&star href="+cave_10cave_10 189oi_cave_10 192 180  a>-&star href="+re  ore_10re  ore_10 180     typehref="+coi_re  ore_10oi_re  ore_10 180 1a>-&star href="+cent_ini=socket" classssyent_ini=    8 180  }eelse {
 235 236  !yenta_sa>-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oi1250_ ref"f=6    eelse {
 237 180-&star href="+cave_10cave_10 189oi_cave_10 238-&star href="+re  ore_10re  ore_10 180     typehref="+coi_re  ore_10oi_re  ore_10 189 2a>-&star href="+cent_ini=socket" classssyent_ini=    8 180  }eelse {
 235 192 180  a>-&star href="+ ref"f=6socket" class"> ref"f=6"> 238ene_ ref"f=6    eelse {
 180 1a>-&star href="+cave_10cave_10 189oi_cave_10 180          a>-&star href="+re  ore_10re  ore_10 180     typehref="+coi_re  ore_10oi_re  ore_10 235-&star href="+cent_ini=socket" classssyent_ini=    8 180  }eelse {
 2#figif);
 2#ifdeft);
 1[   regiont.c#L2CARDBUS_TYPE_RICOBATWIORESOURCE_PCARDBUS_TYPE_RICOB    ]/uns   else {
 180 180-&star href="+ ref"f=6socket" class"> ref"f=6"> 238ricoh_ ref"f=6    eelse {
 181-&star href="+cave_10cave_10 189ricoh_cave_10 192 180  a>-&star href="+re  ore_10re  ore_10 180     typehref="+cricoh_re  ore_10ricoh_re  ore_10 212  }eelse {
 1#figif);
 2#ifdeftCONFIG_YENTA_TOSHIBAcket);
 237 180-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oopic95_ ref"f=6    eelse {
 1[   regiont.c#L2CARDBUS_TYPE_TOPICi7="L195" cURCE_ICARDBUS_TYPE_TOPICi7    ]ns   else {
 180 180-&star href="+ ref"f=6socket" class"> ref"f=6"> 238oopic97_ ref"f=6    eelse {
 181SS_CONFIG_YENTA_Ogcket);
 1[   regiont.c#L2CARDBUS_TYPE_O2MICRBATWIORESOURCE_ICARDBUS_TYPE_O2MICRB    ]ns   else {
 235-&star href="+ ref"f=6socket" class"> ref"f=6"> 238o2micro_ ref"f=6    eelse {
 236  !yenta_sa>-&star href="+re  ore_10re  ore_10 180     typehref="+co2micro_re  ore_10o2micro_re  ore_10 24#figif);
 240
 221
 110sunsigned tatic iihref="+codecmci6/probc2irq_reaonfig clasrcmci6/probc2irq"> 1d      struct yenta_socket * 210SS_u32"> 1s=sa2irq_masd"> 1al;
 1tatic iihref="+code=sociref""sref">socket);
 235SS_u32"> 1smasd"> 1t);
SS_u8"> 1sreg"> 1t);
 243}
 */
         */
 1       */
 1       */
 18 210 180 1 /arls href="+ccb_writeb_reaonfig clasrsb_writeb/a>  l( 210CB_SOCKET_MASKsocketCB_CSTSMASK"> 1aturn 0;
 242  8reg"> 1s     typehref="+cexca_readb_dwen_srefs="f">xca_readb/a>  l( 210xca_writeb/a>  l( 210-&config clasr>robc2irq_on_reaonfig clasr>robc2irq_on/a>  ) s &amregiont.c#L2=sa2irq_masdsocket" class">=sa2irq_masd"> 1turn 0;
 *1socke>stati16socke++v} else {
 189 2 els!( l(socke) s 1)al;
 180 180 181xca_writeb/a>  l( 210 18|c l(statstati4)aturn 0;
 192 180   /arls href="+ccb_writeb_reaonfig clasrsb_writeb/a>  l( 210 180 1e irls href="+cudelay_dwu3e" nam>SS_udelay/a>  100aturn 0;
 180          8 210 242  43}
  l( 210CB_SOCKET_MASKsocket0aturn 0;
xca_writeb/a>  l( 210reg"> 1aturn 0;
 243}
masd"> 1-&config clasr>robc2irq_masdsocket" class">>robc2irq_masd/a>  l( 240
socketmasd"> 1t);
 143}
}
 */
robing t"> */
 nta_t"> */
 */
 2#ifdeftCONFIG_YENTA_TIcket);
 240
 1      robing *nt"> */
 110sl( * 1al;
 180        struct yenta_socket * 210yenta_socket)a>-&ed  1t);
 242  8SS_u8"> 1s 1t);
SS_u32"> 1s 1t);
 238 */
 1-&config clasrsb_readb_reaonfig clasrsb_readb/a>  l( 210 200     regiont.c#L2cb_writeb_reaonfig clasrsb_writeb/a>  l( 210socket-&ed  1s     typehref="+cexca_readb_dwen_srefs="f">xca_readb/a>  l( 210 1 else iaizehref="+csb_evasy_reaonfig clasrsb_evasy"> 1<||a>-&ed  1v} else {
 180          l( 210-&flag href="+probc210 *1 235 1t);
 236  43}
);
 1t);
}
 240
 1      = *nt"> */
 110static iihref="+codecmci6/probc2sb_irq_reaonfig clasrcmci6/probc2sb_irq/a>        struct yenta_socket * 210;
 180  8SS_u8"> 1sreg"> 1s  0t);
 215
 236   els!l( 210-&flag href="+sb_irq_reaonfig clasrsb_irq    al;
 237 180 243}
 210-&flag href="+probc210 *0t);
 240
 235 210-&flag href="+sb_irq_reaonfig clasrsb_irq    ettar href="+cmci6/probc2handler_reaonfig clasrcmci6/probc2handler/a> et et<      */tar href="+ccode=socket" classss0"> 210 192 180  >-&ed hre_p intd/a>  l( 210-&flag href="+de=socdevlass = a>       et-&flag href="+de=socdevlass = a>       eelse {
 180 1> 180  >      */ 180          returns-1 242  43}
 13}
 */
 236   els!l( 210-&flag href="+de=socdevlass = a>       et-&flag href="+=rq_reaonfig clasrirq    al;
 189 2reg"> 1s     typehref="+cexca_readb_dwen_srefs="f">xca_readb/a>  l( 210 200     regiont.c#L2exca_writeb_dwen_srefs="f">xca_writeb/a>  l( 210reg"> 1 |a>-&ed  1aturn 0;
socket-&ed  210u8 210CB_SOCKET_MASKsocketCB_CSTSMASK"> 1aturn 0;
 18 210 242  8msleep/a>  100aturn 0;
 13}
 */
 238 210CB_SOCKET_MASKsocket0aturn 0;
xca_writeb/a>  l( 210reg"> 1aturn 0;
100."> 238 210rn 0;
1001f">socket-&ed xca_readb/a>  l( 210100gcket);
1003me="L229"> 18 210-&flag href="+sb_irq_reaonfig clasrsb_irq    ettar href="+ccode=socket" classss0"> 210100ocket);
1005"> 242  returns tat)a>-&ed  210-&flag href="+probc2101006me="43}
100ocket);
100"> 24#figifi       */
1009cket);
10idcket);
10i1"> 1       */
10i2"> 1       */
10i3me="       */
10i4"> 110svoititar href="+cmci6/get/yenta__capabili=ie=socbus classyencmci6/get/yenta__capabili=ie=/a>        struct yenta_socket * 210SS_u32"> 1s=sa2irq_masd"> 1al;
10i5me=" else {
10i6yenta_socket 210-&flag href="++code=socket" classss0"> 210-&star href="+pci_irq_reaonfig clasrpci_irq"> 1s     typehref="+c+code=socket" classss0"> 210-&flag href="+sb_irq_reaonfig clasrsb_irq    turn 0;
10i7yenta_socket else iaizehref="+c=sa2probcsocket" class">=sa2probc"> 1al;
10i8"> 238 210-&flag href="++code=socket" classss0"> 210-&star href="+irq_masdsocket" class">=rq_masd"> 1s     typehref="+ccmci6/probc2irq_reaonfig clasrcmci6/probc2irq/a>  l( 210=sa2irq_masd"> 1aturn 0;
10i9yenta_socketelseurn 0;
10id"> 238 210-&flag href="++code=socket" classss0"> 210-&star href="+irq_masdsocket" class">=rq_masd"> 1s  0t);
10i1"> 221
10i2ass="sref">u8hre_p intd/a>  l( 210-&flag href="+de=socdevlass = a>       et-&flag href="+de=socdevlass = a>       eelse {
10i3me="L229"> 180 1> 1>      */10i4"> 180          lon 210-&flag href="++code=socket" classss0"> 210-&star href="+irq_masdsocket" class">=rq_masd"> 1ettar href="+ccode=socket" classss0"> 210-&flag href="+sb_irq_reaonfig clasrsb_irq    at);
10i5me="43}
10i6"> 13}
10iocket       */
10i/a>         */
10i9me="       */
10id"> 110svoititar href="+cmci6/config_ini=socket" classsscmci6/config_ini=/a>        struct yenta_socket * 210;
10i1me=" else {
10i2ass="sref">u8SS_ui6yenta8bridgc    turn 0;
10i3me="L229"> 1      struct        s     typehref="+c+code=socket" classss0"> 210-&flag href="+de=socdevlass = a>       turn 0;
10i4"> 180        struct 10i5"> 215
10i6yenta_socket 210-&flag href="+de=socdevlass = a>       et/a>(strudevhref="+cosrefon_reaonfig clasrsrefonyentet/a>(strudevhref="+code=socdevlass = a>       et-&flag href="+srsource_reaonfig clasrsrsource    [0]at);
10iocket);
10i8"> 238 21010i9yenta_socket  l( 210-&star href="+ctar=socket" classss0tar=    at);
10idyenta_socket  l( 21010i1"> 181 18|else {
10i2"> 192 180  a_socket 18|else {
10i3me="L229"> 180 1> 180 18|else {
10i4"> 180          lon80);
10i5"> 215
10i6yenta_socket<      */
10i7yenta_socket  l( 210);
10i8"> 238  l( 21010i9yenta_socket  l( 21010id"> 180          (176>statstati24) |          lon80 */
10i1"> 181cubordin-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 18statstati16) |<<      */
10i2"> 192 180  ((unsigned tat)trudevhref="+code=socdevlass = a>       et-&flag href="+subordincubordin-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+ctar=socket" classss0tar=    8statstati8) | */
10i3me="L229"> 180 1e irls href="+cde=socdevlass = a>       et-&flag href="+subordincubordin-&flag href="+primary_reaonfig clasr>rimary    at        lon80 */
10iocket);
10i5yenta_socket<      */
10i6yent       */
10iocket       */
10i/a>         */
10i9me="       */
10idme="       */
10i1f">socket-&ed bridgc    -&config clasrsonfig_readw_reaonfig clasrsonfig_readw/a>  l( 21010i2ass="sref">u8bridgc    (s= ~ l( 18|t 18|t 18|t);
10i3me="L229"> 18bridgc    <|/a>-&config clasrCB_BRIDGE_PREFETCH0ATWIORESOURCE_ICB_BRIDGE_PREFETCH0"> 18|t10i4"> 180 1 /arls href="+cconfig_writew_reaonfig clasrsonfig_writew/a>  l( 210bridgc    at);
10i5me="43}
10i6"> 13}
10iocket       */
10i/a>         */
10i9me="      10idme="      10i1"> 1      10i2"> 1      10i3me="       */
10i4me="       */
10i3me="       t"> */
10i6yent       */
10i7"> 110svoititar href="+cmci6/fixup_pa"sre_bridgcsocket" class="sref">fixup_pa"sre_bridgc/a>        struct ;
10i8me=" else {
10i9yenta_socket      struct tmpyentturn 0;
10idyenta_socketunsigned charp810i1f">socket      */
10i2"> 1       */
10i3me="       */
10i4me="       */
10i3me="       */
10i6yenta_socket      struct bridgc_to_fix    -&config clasrsardde=_bridgc_reaonfig clasrsardde=_bridgc0-&flag href="+pa"sre_reaonfig clasr>a"sreyentturn 0;
10iocket);
10i8"> 238 */
10i9yenta_socket else iaizehref="+cbridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 18s-&config clasrsardde=_bridgc_reaonfig clasrsardde=_bridgc0-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1al;
10idme="L229"> 180 1return;i       */
10i1"> 221
10i2yenta_socket els!l(bridgc_to_fix    et-&flag href="+pa"sre_reaonfig clasr>a"sreyental;
10i3me="L229"> 180 1return;i       */
10iocket);
10i5yenta_socket<      */
10i6yenta_socket-&config clasrbridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+pa"sre_reaonfig clasr>a"sreyentet-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1turn 0;
10iocket);
10i8"> 238 */
10i9yenta_socket  l(tmpyentet/a>(strudevhref="+cobridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+pa"sre_reaonfig clasr>a"sreyentet-&flag href="+child"sr_reaonfig clasrshild"sryenta} else {
110dme="L229"> 180 1      struct -&config clasr>ci_de=_b_dwen_srefs="f">ci_de=_b/a>  l(tmpyentat);
1101"> 181      */
1102"> 1      1103me="      1104me="       */
1103me="       */
1106yent       */
1107"> 237 180-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+ctar=socket" classss0tar=    8s-&config clasrbridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1/span>
1108"> 238(s/a>(s    typehref="+c+ilbli  socket" classss0ilbli  yentet-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+ctar=socket" classss0tar=    8sl/a/a>-&config clasrupper_limi=socket" classssupper_limi=yental;
1109"> 189 222222222-&config clasr+ilbli  socket" classss0ilbli  yentet-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+ctar=socket" classss0tar=    8-*1111dme="L229"> 143}
1111"> 221
1112ass="sref">u8      */
1113me="L229"> 1 else iaizehref="+csardde=_bridgc_reaonfig clasrsardde=_bridgc0-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 18s-&config clasrupper_limi=socket" classssupper_limi=yental;
1114"> 180          l(hre_p intd/a>  l(-&flag href="+de=socdevlass = a>       eelse {
1115"> 235          l      */11i6yenta_socket        >          l      */-&config clasrupper_limi=socket" classssupper_limi=yenta111ocket);
1118"> 238 */
1119yenta_socket else iaizehref="+cbridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 18sl/aa>-&config clasrupper_limi=socket" classssupper_limi=yenta} else {
112dcket);
1121"> 181      */
1122"> 192 180  unsigned charp8
11i3me="L229"> 180 1> 1     l(  intea>-&config clasrsardde=_bridgc_reaonfig clasrsardde=_bridgc0-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1ea>-&config clasrupper_limi=socket" classssupper_limi=yenta112ocket);
1125"> 235(hre_p intd/a>  l(bridgc_to_fix    et-&flag href="+de=socdevlass = a>       eelse {
1126yenta_socket        >          l      */1127"> 237 180          l      */1128"> 238(bridgc_to_fix    et-&flag href="+numbersocket" class">number/a  eelse {
1129"> 189 222222222222(tat)trudevhref="+cobridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1ettar href="+cubordin113dcket);
1131"> 181      */
1132"> 192 180  >-&ed bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1-&config clasr+ubordin11i3me="else {
1134"> 180          l      */
1135"> 235(>ci_write/config_by/6/a>  l(bridgc_to_fix    et-&flag href="+selfsocket" classss0elf/a  eelse {
1136yenta_socket        >       >-&flag href="+PCI_SUBORDINATE_BUSATWIORESOURCE_IPCI_SUBORDINATE_BUS"> 1ettar href="+bridgc_to_fixsocket" class">bridgc_to_fix    et-&flag href="+de=n_srssocket" class">be=n_srsyenta>-&star href="+eng_dwen_srefs="f"eng"> 1a1137"> 237 143}
11i8"> 243}
1139cket);
114dme="       */
1141"> 1       */
1142"> 1       */
1143me="             ure  t"> */
1144me="       */
11i5"> 210sint    typehref="+ccmci6/probc_dwen_srefs="f"cmci6/probc/a>        struct        , const1      struct  * 1al;
11i6yent else {
11i7yenta_socket      struct yenta_socket * 21011i8"> 2381149cket);
11id"> 180         */
1151"> 1       */
1152"> 1       */
1153me="       */
1154me="       */
11i5yenta_socket els!l(cubordin1156yenta_socket        l(hre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       e l      */1157"> 237 180          l     ci=22"ign-de=ses')\ncomment"> */1158"> 238-&flag href="+ENODEVsocdevlass = a>ENODEV01159"> 189}
116dcket);
11i1f">socket-&ed  210-&config clasrkzallocsocket" classsskzalloc/a>   izeof       struct yenta_sock)ettar href="+GFP_KERNELATWIORESOURCE_IGFP_KERNEL"> 1a1162yenta_socket els!l( 210;
1163me="L229"> 180 1returns->-&flag href="+ENOMEMsocdevlass = a>ENOMEM0116ocket);
1165yenta_socket<      */
1166yenta_socket 210-&flag href="++code=socket" classss0"> 210-&star href="+opssocket" class">ops0(strudevhref="+cocmci7/yenta__oper=socbus classyencmci6/yenta__oper=01167yenta_socket 210-&flag href="++code=socket" classss0"> 210-&star href="+srsource_opssocket" class">srsource_ops0(strudevhref="+copccard_nonst_opssocket" class">pccard_nonst_ops01168"> 238 210-&flag href="++code=socket" classss0"> 210-&star href="+de=socdevlass = a>       a>-&star href="+pa"sre_reaonfig clasr>a"sreyent(strudevhref="+code=socdevlass = a>       et-&flag href="+de=socdevlass = a>       1169yenta_socket 210-&flag href="++code=socket" classss0"> 210-&star href="+dref="_datasocdevlass = a> ref="_data"> 1-&config clasr+code=socket" classss0"> 210117dyenta_socket 210-&flag href="++code=socket" classss0"> 210-&star href="+ownersocket" class">owner"> 1-&config clasrTHIS_MODULEsocket" class">THIS_MODULE01171f">socket-&ed  210-&flag href="++code=socket" classss0"> 210-&star href="+fea uressocket" class">fea ures"> 1-&config clasrSS_CAP_PAGE_REGSATWIORESOURCE_ISS_CAP_PAGE_REGS"> 1<|t1172ass="sref">u8 210-&flag href="++code=socket" classss0"> 210-&star href="+map_ izesocket" classssmap_ ize"> 1);
1173me="L229"> 18 210-&flag href="++code=socket" classss0"> 210-&star href="+cb_de=socdevlass = a>cb_de="> 1-&config clasrde=socdevlass = a>       117ocket);
1175yenta_socket<      */
1176yenta_socket 210-&flag href="+de=socdevlass = a>       s     typehref="+cde=socdevlass = a>       1177yenta_socket       e l( 21011i8me="else {
11i9yenta_socket       */
118dme="       */
1181"> 1       */
1182yenta_socket els       )a} else {
1183me="L229"> 180 1e irls href="+cre=socket" classssr210-&flag href="+EBUSYATWIORESOURCE_IEBUSY    1184"> 180          goto1e irls href="+cfreesocdevlass = a>free    1185yenta_socket43}
1186"> 13}
1187yenta_socket       e l      */11i8"> 238;
1189"> 189 2goto1e irls href="+cdiserrusocdevlass = a> iserrut"  119dcket);
1191"> 238(ci_resource_ctar=/a>  l(1192"> 192 180  >-&ed hre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       e l      */11i3me="L229"> 180 1e irls href="+cre=socket" classssr210-&flag href="+ENODEVsocdevlass = a>ENODEV01194"> 180          goto1e irls href="+creleasesocket" classssr2lease01195yenta_socket43}
1196"> 13}
1197yenta_socket<      */
119/a>         */
1199me="       */
120dme="       */
1201f">socket-&ed  210-&flag href="+basesocket" classssbase0ioremap/a>  l(ci_resource_ctar=/a>  l(1202yenta_socket els!l( 210-&flag href="+basesocket" classssbase01203me="L229"> 180 1e irls href="+cre=socket" classssr210-&flag href="+ENOMEMsocdevlass = a>ENOMEM01204"> 180          goto1e irls href="+creleasesocket" classssr2lease01205yenta_socket43}
1206"> 13}
1207yenta_socket<      */
120/a>        1209me="       */
121dme="       */
1211f">socket-&ed hre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       e l      */1212"> 192 180  -&ed (subsystem_de=ice01213me="else {
1214"> 180  trudevhref="+cocmci7/config_ini=socket" classsscmci7/config_ini=/a>  l( 2101215"> 2else {
12i6yenta_socket<      */
1217yenta_socket 2101218me="else {
1219yenta_socket       */
122dyenta_socket  l( 2101221"> 221
1222ass="sref">u8 210-&flag href="+cb_irqsocdevlass = a>cb_irq    s     typehref="+cde=socdevlass = a>       et-&flag href="+irqsocdevlass = a>irq    1223me="else {
1224yenta_socket<     = ry cthesde=ice? *nt"> */
1225yenta_socket els>-&flag href="+ig_dwen_srefs="f"ig"> 1et-&flag href="+dref="_datasocdevlass = a> ref="_data"> 1-&config clasrCARDBUS_TYPE_DEFAULTATWIORESOURCE_MCARDBUS_TYPE_DEFAULT"> 1(s/a>(s/span>
1226yenta_socket    >-&flag href="+ig_dwen_srefs="f"ig"> 1et-&flag href="+dref="_datasocdevlass = a> ref="_data"> 1-&config clasrARRAY_SIZEsocket" class">ARRAY_SIZE/a>  l(1227"> 237 180 210-&flag href="+typesocdevlass = a>type    (strudevhref="+cosardde=_typesocdevlass = a>sardde=_type    [>-&flag href="+ig_dwen_srefs="f"ig"> 1et-&flag href="+dref="_datasocdevlass = a> ref="_data"> 1]s/span>
1228me="else {
1229"> 189 2 210-&flag href="+typesocdevlass = a>type    et-&flag href="+ refridesocdevlass = a> refride/a>  l( 210123dme="L229"> 180 1 els;
1231"> 181unmap    1232"> 192 143}
12i3me="else {
1234yenta_socket<      her6 *nt"> */
1235"> 2else {
1236yenta_socket els!l( 210-&flag href="+cb_irqsocdevlass = a>cb_irq    s||trequest_irq/a>  l( 210-&flag href="+cb_irqsocdevlass = a>cb_irq    et */-&config clasr+code=socket" classss0"> 2101237"> 237 180 */
1238"> 238 210-&flag href="+cb_irqsocdevlass = a>cb_irq    s  0;i       */
1239"> 189 2ini=_timer/a>  /a>(strudevhref="+co+code=socket" classss0"> 210-&flag href="+poll_timersocket" class">poll_timer0124dme="L229"> 180 1trudevhref="+co+code=socket" classss0"> 210-&flag href="+poll_timersocket" class">poll_timer0-&star href="+func/a">socket" class">func/a">01241"> 181rudevhref="+co+code=socket" classss0"> 210-&flag href="+poll_timersocket" class">poll_timer0-&star href="+datasocdevlass = a> ata"> 1 2101242"> 192 180  >-&ed  210-&flag href="+poll_timersocket" class">poll_timer0-&star href="+expiressocket" class">expires0jiffies0HZ01243me="L229"> 180 1e irls href="+cadd_timersocket" class">add_timer/a>  /a>(strudevhref="+co+code=socket" classss0"> 210-&flag href="+poll_timersocket" class">poll_timer01244"> 180          l(hre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       eelse {
1245"> 235          l      */1246yenta_socket        >          l      */1247"> 237 180hre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       eelse {
1248"> 238 */1249"> 189 222222222222l      */12id"> 180  } else} else {
1251"> 181rudevhref="+co+code=socket" classss0"> 210-&flag href="++code=socket" classss0"> 210-&star href="+fea uressocket" class">fea ures"> 1<|/a>-&config clasrSS_CAP_CARDBUSsocket" class">SS_CAP_CARDBUS01252"> 192 143}
1253me="else {
1254yenta_socket<      */
12i5yenta_socketcmci6/intef"og  l( 2101256yenta_socketcmci6/get/yenta__capabilities/a>  l( 210ise/intef"upts01257yenta_sockethre_p intd/a>  l(       et-&flag href="+de=socdevlass = a>       eelse {
1258"> 238 */-&config clasrcb_readlsocdevlass = a>cb_readl/a>  l( 210CB_SOCKET_STATE01259cket);
126dyenta_socketa"sre_bridgc_reaonfig clasrcmci7/fixup_>a"sre_bridgc/a>  l(cubordin1261"> 221
1262ass="sref">u8      */
1263me="L229"> 18  /a>(strudevhref="+co+code=socket" classss0"> 210-&flag href="++code=socket" classss0"> 2101264yenta_socket els1265"> 235 */
1266yenta_socket        8       et-&flag href="+de=socdevlass = a>       e /a>(strudevhref="+code=_at  _cmci7/srefst="dsocket" class">hre_at  _cmci7/srefst="d01267"> 237 1801268"> 2381269cket);
127dme="L229"> 180 1t      */
1271"> 181rudevhref="+co>cers//unsrefst="=yenta_socket" class=">cers//unsrefst="=yenta_/a>  /a>(strudevhref="+co+code=socket" classss0"> 210-&flag href="++code=socket" classss0"> 2101272"> 192 143}
1273me="else {
127ocket1e irls href="+cunmapsociref""sref">unmap    :else {
1275yenta_socketiounmap/a>  l( 210-&flag href="+basesocket" classssbase01276yenta1277yenta_socket       a12i8me="1e irls href="+cdiserrusocdevlass = a> iserrut"  :else {
1279yenta_socketpci_diserru_de=ice/a>  l(128dme="1e irls href="+cfreesocdevlass = a>free    :else {
1281f">socket-&ed  2101282yentae irls href="+coutsocdevlass = a> u101283me="L229"> 1returns1284"> 143}
1285"> 2else {
1286"> 1#ifdeftCONFIG_PM"> 2else {
1287yent10sint    typehref="+ccmci6/hre_suspend_noirqsocdevlass = a>cmci6/hre_suspend_noirq           struct        aelse {
12i8"> 2 else {
1289"> 189pci_de=socket *to_pci_de=/a>  l(1290"> 189cmci6/0"> 210 * 210p       a1291"> 221
1292yenta_socket els!l( 210;
12i3me="L229"> 180 1returns0t);
129ocket);
1295yenta_socket els>-&flag href="++code=socket" classss0"> 210-&flag href="+typesocdevlass = a>type    (s/a>(s  210-&flag href="+typesocdevlass = a>type    et-&flag href="+save_cta/6socket" class">cave_cta/60;
1296yenta_socket        8 210-&flag href="+typesocdevlass = a>type    et-&flag href="+save_cta/6socket" class">cave_cta/60( 2101297yentelse {
1298"> 238>ci_save_cta/6/a>  l(1299yenta_socket  l( 210-&flag href="++aved_cta/6socket" class">caved_cta/6/a> [0]a130dyenta_socket  l( 210-&flag href="++aved_cta/6socket" class">caved_cta/6/a> [1]a1301f">socket-&ed p       a1302yentelse {
1303me="L229"> 1returns0t);
1304"> 143}
1305"> 2else {
1306"> 110sint    typehref="+ccmci6/hre_resume_noirqsocdevlass = a>cmci6/hre_resume_noirq           struct        aelse {
1307yent else {
1308"> 238p       s     typehref="+cto_pci_de=socdevlass = a>to_pci_de=/a>  l(1309"> 189cmci6/0"> 210 * 210p       a131dyenta_socketint    typehref="+cre=socket" classssr2101311"> 221
1312yenta_socket els!l( 210;
1313me="L229"> 180 1returns0t);
131ocket);
1315yenta_socket  l( 210-&flag href="++aved_cta/6socket" class">caved_cta/6/a> [0]a1316yenta_socket  l( 210-&flag href="++aved_cta/6socket" class">caved_cta/6/a> [1]a1317yentelse {
1318"> 238p       a1319yenta_socket els;
132dme="L229"> 180 1returns1321"> 221
1322ass="sref">u8>ci_sa__mast="/a>  l(1323me="else {
1324yenta_socket els>-&flag href="++code=socket" classss0"> 210-&flag href="+typesocdevlass = a>type    (s/a>(s  210-&flag href="+typesocdevlass = a>type    et-&flag href="+restore_cta/6socket" class">restore_cta/60;
1325"> 235 210-&flag href="+typesocdevlass = a>type    et-&flag href="+restore_cta/6socket" class">restore_cta/60( 2101326"> 13}
1327"> 237 1returns0t);
1328me="43}
1329cket);
133dme="10sconst/      struct hre_pm_opsyentae irls href="+ccmci6/pm_opssocket" class">cmci6/pm_ops01331"> 181-&star href="+suspend_noirqsocdevlass = a>suspend_noirq    s  1332"> 192 1a>-&star href="+resume_noirqsocdevlass = a>resume_noirq    s  1333"> 192 1a>-&star href="+freeze_noirqsocdevlass = a>freeze_noirq    s  1334yenta_socketa>-&star href="+thaw_noirqsocdevlass = a>thaw_noirq    s  1335yenta_socketa>-&star href="+poweroff_noirqsocdevlass = a>poweroff_noirq    s  1336yenta_socketa>-&star href="+restore_noirqsocdevlass = a>restore_noirq    s  1337"> 2}t);
1338me="else {
1339"> 1#def6ss YENTA_PM_OPSyenta_so /a>(strudevhref="+cocmci6/pm_opssocket" class">cmci6/pm_ops0;
134dme="#elsel;
1341"> 1#def6ss YENTA_PM_OPSyenta_soNULLme="else {
1342"> 1#endifelse {
1343me="else {
1344"> 1#def6ss (type    )351345"> 2351346yenta_socket        a>-&star href="+vendorsocket" classssvendor    t          1347"> 237 180-&star href="+de=icesocdevlass = a>de=ice/a> e          1348"> 238-&star href="+subvendorsocket" classss0ubvendor    t       1349"> 189 2a>-&star href="+subde=icesocdevlass = a>subde=ice/a> e       135dme="L229"> 180 1a>-&star href="+L150"ATWIORESOURCE_MWIOREme="L229"> 180  PCI_CLASS_BRIDGE_CARDBUS    1351"> 181-&star href="+L150"_masdsocket" class">L150"_masd"> 1811352"> 192 180  a>-&star href="+dref="_datasocdevlass = a> ref="_data"> 1 180   1##type,  \else {
1353"> 192 143}
135ocket);
13i5yent10scmci6/terru    )3   else {
1356yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_10id    , l(TI    )eelse {
1357yentelse {
1358"> 238 */
1359me="       */
136dme="       */
1361"> 2       */
1362ass=       */
1363me="#ifdeftCONFIG_YENTA_TIyentelse {
1364yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_121dme=", l(TI    )eelse {
1365"> 2else {
1366yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_113dme=", l(TI113X    )eelse {
1367yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_11id    , l(TI113X    )eelse {
1368me="else {
1369yenta_socket(PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_121d    , l(TI12XX    )eelse {
137dyenta_socket(PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_122dme=", l(TI12XX    )eelse {
1371f">socket-&ed PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_122d    , l(TI12XX    )eelse {
1372ass="sref">u8PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_1225    , l(TI12XX    )eelse {
1373me="L229"> 18PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_1251A    , l(TI12XX    )eelse {
1374yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_1251B    , l(TI12XX    )eelse {
1375yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_142dme=", l(TI12XX    )eelse {
1376yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_145dme=", l(TI12XX    )eelse {
1377yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_1451A    , l(TI12XX    )eelse {
1378"> 238PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_151dme=", l(TI12XX    )eelse {
1379yenta_socket(PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_152dme=", l(TI12XX    )eelse {
138dyenta_socket(PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_162dme=", l(TI12XX    )eelse {
1381f">socket-&ed PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_44idme=", l(TI12XX    )eelse {
1382ass="sref">u8PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_445dme=", l(TI12XX    )eelse {
1383me="L229"> 18PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_445dme=", l(TI12XX    )eelse {
1384yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_451dme=", l(TI12XX    )eelse {
1385yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_452dme=", l(TI12XX    )eelse {
1386"> 13}
1387yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_125dme=", l(TI125d    )eelse {
1388"> 238PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_14idme=", l(TI125d    )eelse {
1389cket);
139dyenta_socket(PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_XX21_XXidme=", l(TI12XX    )eelse {
1391f">socket-&ed PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_X515me=", l(TI12XX    )eelse {
1392ass="sref">u8PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_XX12yent, l(TI12XX    )eelse {
1393me="L229"> 18PCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_X42dme=", l(TI12XX    )eelse {
1394yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_X62dme=", l(TI12XX    )eelse {
1395yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_74idme=", l(TI12XX    )eelse {
1396yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_751dme=", l(TI12XX    )eelse {
1397yenta_socketPCI_VENDOR_ID_TI    , l(PCI_DEVICE_ID_TI_761dme=", l(TI12XX    )eelse {
1398me="else {
1399yenta_socket(PCI_DEVICE_ID_ENE_7id    , l(140dyenta_socket(PCI_DEVICE_ID_ENE_7i2    , l(1401f">socket-&ed (PCI_DEVICE_ID_ENE_72d    , l(1402ass="sref">u8(PCI_DEVICE_ID_ENE_722    , l(1403me="L229"> 18(PCI_DEVICE_ID_ENE_12id    , l(1404yenta_socket(PCI_DEVICE_ID_ENE_1225    , l(1405yenta_socket(PCI_DEVICE_ID_ENE_14id    , l(1406yenta_socket(PCI_DEVICE_ID_ENE_142dme=", l(1407yent#endif1t      */
1408me="else {
1409"> 1#ifdeft141dyenta_socket(PCI_DEVICE_ID_RICOH_RL5C465    , l(1411f">socket-&ed (PCI_DEVICE_ID_RICOH_RL5C466    , l(1412ass="sref">u8(PCI_DEVICE_ID_RICOH_RL5C475    , l(1413me="L229"> 18(PCI_DEVICE_ID_RICOH_RL5C476    , l(1414yenta_socket(PCI_DEVICE_ID_RICOH_RL5C478    , l(1415me="#endifelse {
1416"> 13}
1417yent#ifdeftCONFIG_YENTA_TOSHIBA"> 13}
1418"> 238PCI_VENDOR_ID_TOSHIBA    , l(PCI_DEVICE_ID_TOSHIBA_TOPIC95me=", l(TOPIC95me=")eelse {
1419yenta_socket(PCI_VENDOR_ID_TOSHIBA    , l(PCI_DEVICE_ID_TOSHIBA_TOPIC97me=", l(TOPIC97me=")eelse {
142dyenta_socket(PCI_VENDOR_ID_TOSHIBA    , l(PCI_DEVICE_ID_TOSHIBA_TOPIC10dme=", l(TOPIC97me=")eelse {
142d    #endifelse {
1422yentelse {
1423me="#ifdeftCONFIG_YENTA_O2yentelse {
1424yenta_socketPCI_VENDOR_ID_O2    , l(1425me="#endifelse {
1426"> 13}
1427"> 237 1t      */
1428"> 238(1429yenta_socket{1t      */<143}
143dme="}t);
14id    l((1432yentelse {
1433me="else {
1434yent10s      struct 1435yenta_socketa>-&star href="+l63eATWIORESOURCE_Ml63eyenta_socket 80  <     "cmci6/cardbus"t"> */1436yenta_socketa>-&star href="+id/terrusocdevlass = a>id/terruyenta_socke  1437yenta_socketa>-&star href="+probusocdevlass = a>probuyenta_socket 8  1438yenta_socketa>-&star href="+removusocdevlass = a>removuyenta_socket   1439yenta_socketa>-&star href="+dref="ATWIORESOURCE_Mdref="yenta>-&star href="+pmsocdevlass = a>pmyenta_sock  YENTA_PM_OPSyenteelse {
144dme="}t);
1441"> 221
1442yentelse {
1443me="10sint    typehref="+c__ini=socket" classss__ini=yental(;
1444"> 1 else {
1445"> 235);
1446yent43}
1447yentelse {
1448me="else {
1449"> 110svoid    typehref="+c__exi=socket" classss__exi=yental(;
145dme=" else {
1451f">socket-&ed );
1452"> 143}
1453me="else {
145ocket);
14i5yenttrudevhref="+comodule_ini=socket" classssmodule_ini=0();
1456yenttrudevhref="+comodule_exi=socket" classssmodule_exi=0();
1457yentelse {
1458"> 2l("GPL"t"> */<)t);
1459me=" /pre" /div>


 /div>

LXR ass=uni=y    , this experi="coal f="dion byc>-&ed lx"@l6sux.noyenta
 /div>
-&ed Redpill L6spro ASyente provider of L6suxsconsulting and oper