| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Daniel Ritz | ea2f159 | 2005-09-06 15:16:50 -0700 | [diff] [blame] | 98 |  | 
|  | 99 | /* control how 16bit cards are powered */ | 
|  | 100 | #define YENTA_16BIT_POWER_EXCA	0x00000001 | 
|  | 101 | #define YENTA_16BIT_POWER_DF	0x00000002 | 
|  | 102 |  | 
|  | 103 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 104 | struct yenta_socket; | 
|  | 105 |  | 
|  | 106 | struct 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 |  | 
|  | 113 | struct 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 |  | 
| Daniel Ritz | ea2f159 | 2005-09-06 15:16:50 -0700 | [diff] [blame] | 122 | u32 flags; | 
|  | 123 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |