linux/drivers/pcmcia/yenta_socket.h
<<
>>
Prefs
   1#ifndef __YENTA_H
   2#define __YENTA_H
   3
   4#include <asm/io.h>
   5
   6#define CB_SOCKET_EVENT         0x00
   7#define    CB_CSTSEVENT         0x00000001      /* Card status event */
   8#define    CB_CD1EVENT          0x00000002      /* Card detect 1 change event */
   9#define    CB_CD2EVENT          0x00000004      /* Card detect 2 change event */
  10#define    CB_PWREVENT          0x00000008      /* PWRCYCLE change event */
  11
  12#define CB_SOCKET_MASK          0x04
  13#define    CB_CSTSMASK          0x00000001      /* Card status mask */
  14#define    CB_CDMASK            0x00000006      /* Card detect 1&2 mask */
  15#define    CB_PWRMASK           0x00000008      /* PWRCYCLE change mask */
  16
  17#define CB_SOCKET_STATE         0x08
  18#define    CB_CARDSTS           0x00000001      /* CSTSCHG status */
  19#define    CB_CDETECT1          0x00000002      /* Card detect status 1 */
  20#define    CB_CDETECT2          0x00000004      /* Card detect status 2 */
  21#define    CB_PWRCYCLE          0x00000008      /* Socket powered */
  22#define    CB_16BITCARD         0x00000010      /* 16-bit card detected */
  23#define    CB_CBCARD            0x00000020      /* CardBus card detected */
  24#define    CB_IREQCINT          0x00000040      /* READY(xIRQ)/xCINT high */
  25#define    CB_NOTACARD          0x00000080      /* Unrecognizable PC card detected */
  26#define    CB_DATALOST          0x00000100      /* Potential data loss due to card removal */
  27#define    CB_BADVCCREQ         0x00000200      /* Invalid Vcc request by host software */
  28#define    CB_5VCARD            0x00000400      /* Card Vcc at 5.0 volts? */
  29#define    CB_3VCARD            0x00000800      /* Card Vcc at 3.3 volts? */
  30#define    CB_XVCARD            0x00001000      /* Card Vcc at X.X volts? */
  31#define    CB_YVCARD            0x00002000      /* Card Vcc at Y.Y volts? */
  32#define    CB_5VSOCKET          0x10000000      /* Socket Vcc at 5.0 volts? */
  33#define    CB_3VSOCKET          0x20000000      /* Socket Vcc at 3.3 volts? */
  34#define    CB_XVSOCKET          0x40000000      /* Socket Vcc at X.X volts? */
  35#define    CB_YVSOCKET          0x80000000      /* Socket Vcc at Y.Y volts? */
  36
  37#define CB_SOCKET_FORCE         0x0C
  38#define    CB_FCARDSTS          0x00000001      /* Force CSTSCHG */
  39#define    CB_FCDETECT1         0x00000002      /* Force CD1EVENT */
  40#define    CB_FCDETECT2         0x00000004      /* Force CD2EVENT */
  41#define    CB_FPWRCYCLE         0x00000008      /* Force PWREVENT */
  42#define    CB_F16BITCARD        0x00000010      /* Force 16-bit PCMCIA card */
  43#define    CB_FCBCARD           0x00000020      /* Force CardBus line */
  44#define    CB_FNOTACARD         0x00000080      /* Force NOTACARD */
  45#define    CB_FDATALOST         0x00000100      /* Force data lost */
  46#define    CB_FBADVCCREQ        0x00000200      /* Force bad Vcc request */
  47#define    CB_F5VCARD           0x00000400      /* Force 5.0 volt card */
  48#define    CB_F3VCARD           0x00000800      /* Force 3.3 volt card */
  49#define    CB_FXVCARD           0x00001000      /* Force X.X volt card */
  50#define    CB_FYVCARD           0x00002000      /* Force Y.Y volt card */
  51#define    CB_CVSTEST           0x00004000      /* Card VS test */
  52
  53#define CB_SOCKET_CONTROL       0x10
  54#define  CB_SC_VPP_MASK         0x00000007
  55#define   CB_SC_VPP_OFF         0x00000000
  56#define   CB_SC_VPP_12V         0x00000001
  57#define   CB_SC_VPP_5V          0x00000002
  58#define   CB_SC_VPP_3V          0x00000003
  59#define   CB_SC_VPP_XV          0x00000004
  60#define   CB_SC_VPP_YV          0x00000005
  61#define  CB_SC_VCC_MASK         0x00000070
  62#define   CB_SC_VCC_OFF         0x00000000
  63#define   CB_SC_VCC_5V          0x00000020
  64#define   CB_SC_VCC_3V          0x00000030
  65#define   CB_SC_VCC_XV          0x00000040
  66#define   CB_SC_VCC_YV          0x00000050
  67#define  CB_SC_CCLK_STOP        0x00000080
  68
  69#define CB_SOCKET_POWER         0x20
  70#define    CB_SKTACCES          0x02000000      /* A PC card access has occurred (clear on read) */
  71#define    CB_SKTMODE           0x01000000      /* Clock frequency has changed (clear on read) */
  72#define    CB_CLKCTRLEN         0x00010000      /* Clock control enabled (RW) */
  73#define    CB_CLKCTRL           0x00000001      /* Stop(0) or slow(1) CB clock (RW) */
  74
  75/*
  76 * Cardbus configuration space
  77 */
  78#define CB_BRIDGE_BASE(m)       (0x1c + 8*(m))
  79#define CB_BRIDGE_LIMIT(m)      (0x20 + 8*(m))
  80#define CB_BRIDGE_CONTROL       0x3e
  81#define   CB_BRIDGE_CPERREN     0x00000001
  82#define   CB_BRIDGE_CSERREN     0x00000002
  83#define   CB_BRIDGE_ISAEN       0x00000004
  84#define   CB_BRIDGE_VGAEN       0x00000008
  85#define   CB_BRIDGE_MABTMODE    0x00000020
  86#define   CB_BRIDGE_CRST        0x00000040
  87#define   CB_BRIDGE_INTR        0x00000080
  88#define   CB_BRIDGE_PREFETCH0   0x00000100
  89#define   CB_BRIDGE_PREFETCH1   0x00000200
  90#define   CB_BRIDGE_POSTEN      0x00000400
  91#define CB_LEGACY_MODE_BASE     0x44
  92
  93/*
  94 * ExCA area extensions in Yenta
  95 */
  96#define CB_MEM_PAGE(map)        (0x40 + (map))
  97
  98
  99/* control how 16bit cards are powered */
 100#define YENTA_16BIT_POWER_EXCA  0x00000001
 101#define YENTA_16BIT_POWER_DF    0x00000002
 102
 103
 104struct yenta_socket;
 105
 106struct cardbus_type {
 107        int     (*override)(struct yenta_socket *);
 108        void    (*save_state)(struct yenta_socket *);
 109        void    (*restore_state)(struct yenta_socket *);
 110        int     (*sock_init)(struct yenta_socket *);
 111};
 112
 113struct yenta_socket {
 114        struct pci_dev *dev;
 115        int cb_irq, io_irq;
 116        void __iomem *base;
 117        struct timer_list poll_timer;
 118
 119        struct pcmcia_socket socket;
 120        struct cardbus_type *type;
 121
 122        u32 flags;
 123
 124        /* for PCI interrupt probing */
 125        unsigned int probe_status;
 126
 127        /* A few words of private data for special stuff of overrides... */
 128        unsigned int private[8];
 129
 130        /* PCI saved state */
 131        u32 saved_state[2];
 132};
 133
 134
 135#endif
 136