brintos

brintos / linux-shallow public Read only

0
0
Text · 4.8 KiB · efeed19 Raw
137 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __YENTA_H3#define __YENTA_H4 5#include <asm/io.h>6 7#define CB_SOCKET_EVENT		0x008#define    CB_CSTSEVENT		0x00000001	/* Card status event */9#define    CB_CD1EVENT		0x00000002	/* Card detect 1 change event */10#define    CB_CD2EVENT		0x00000004	/* Card detect 2 change event */11#define    CB_PWREVENT		0x00000008	/* PWRCYCLE change event */12 13#define CB_SOCKET_MASK		0x0414#define    CB_CSTSMASK		0x00000001	/* Card status mask */15#define    CB_CDMASK		0x00000006	/* Card detect 1&2 mask */16#define    CB_PWRMASK		0x00000008	/* PWRCYCLE change mask */17 18#define CB_SOCKET_STATE		0x0819#define    CB_CARDSTS		0x00000001	/* CSTSCHG status */20#define    CB_CDETECT1		0x00000002	/* Card detect status 1 */21#define    CB_CDETECT2		0x00000004	/* Card detect status 2 */22#define    CB_PWRCYCLE		0x00000008	/* Socket powered */23#define    CB_16BITCARD		0x00000010	/* 16-bit card detected */24#define    CB_CBCARD		0x00000020	/* CardBus card detected */25#define    CB_IREQCINT		0x00000040	/* READY(xIRQ)/xCINT high */26#define    CB_NOTACARD		0x00000080	/* Unrecognizable PC card detected */27#define    CB_DATALOST		0x00000100	/* Potential data loss due to card removal */28#define    CB_BADVCCREQ		0x00000200	/* Invalid Vcc request by host software */29#define    CB_5VCARD		0x00000400	/* Card Vcc at 5.0 volts? */30#define    CB_3VCARD		0x00000800	/* Card Vcc at 3.3 volts? */31#define    CB_XVCARD		0x00001000	/* Card Vcc at X.X volts? */32#define    CB_YVCARD		0x00002000	/* Card Vcc at Y.Y volts? */33#define    CB_5VSOCKET		0x10000000	/* Socket Vcc at 5.0 volts? */34#define    CB_3VSOCKET		0x20000000	/* Socket Vcc at 3.3 volts? */35#define    CB_XVSOCKET		0x40000000	/* Socket Vcc at X.X volts? */36#define    CB_YVSOCKET		0x80000000	/* Socket Vcc at Y.Y volts? */37 38#define CB_SOCKET_FORCE		0x0C39#define    CB_FCARDSTS		0x00000001	/* Force CSTSCHG */40#define    CB_FCDETECT1		0x00000002	/* Force CD1EVENT */41#define    CB_FCDETECT2		0x00000004	/* Force CD2EVENT */42#define    CB_FPWRCYCLE		0x00000008	/* Force PWREVENT */43#define    CB_F16BITCARD	0x00000010	/* Force 16-bit PCMCIA card */44#define    CB_FCBCARD		0x00000020	/* Force CardBus line */45#define    CB_FNOTACARD		0x00000080	/* Force NOTACARD */46#define    CB_FDATALOST		0x00000100	/* Force data lost */47#define    CB_FBADVCCREQ	0x00000200	/* Force bad Vcc request */48#define    CB_F5VCARD		0x00000400	/* Force 5.0 volt card */49#define    CB_F3VCARD		0x00000800	/* Force 3.3 volt card */50#define    CB_FXVCARD		0x00001000	/* Force X.X volt card */51#define    CB_FYVCARD		0x00002000	/* Force Y.Y volt card */52#define    CB_CVSTEST		0x00004000	/* Card VS test */53 54#define CB_SOCKET_CONTROL	0x1055#define  CB_SC_VPP_MASK		0x0000000756#define   CB_SC_VPP_OFF		0x0000000057#define   CB_SC_VPP_12V		0x0000000158#define   CB_SC_VPP_5V		0x0000000259#define   CB_SC_VPP_3V		0x0000000360#define   CB_SC_VPP_XV		0x0000000461#define   CB_SC_VPP_YV		0x0000000562#define  CB_SC_VCC_MASK		0x0000007063#define   CB_SC_VCC_OFF		0x0000000064#define   CB_SC_VCC_5V		0x0000002065#define   CB_SC_VCC_3V		0x0000003066#define   CB_SC_VCC_XV		0x0000004067#define   CB_SC_VCC_YV		0x0000005068#define  CB_SC_CCLK_STOP	0x0000008069 70#define CB_SOCKET_POWER		0x2071#define    CB_SKTACCES		0x02000000	/* A PC card access has occurred (clear on read) */72#define    CB_SKTMODE		0x01000000	/* Clock frequency has changed (clear on read) */73#define    CB_CLKCTRLEN		0x00010000	/* Clock control enabled (RW) */74#define    CB_CLKCTRL		0x00000001	/* Stop(0) or slow(1) CB clock (RW) */75 76/*77 * Cardbus configuration space78 */79#define CB_BRIDGE_BASE(m)	(0x1c + 8*(m))80#define CB_BRIDGE_LIMIT(m)	(0x20 + 8*(m))81#define CB_BRIDGE_CONTROL	0x3e82#define   CB_BRIDGE_CPERREN	0x0000000183#define   CB_BRIDGE_CSERREN	0x0000000284#define   CB_BRIDGE_ISAEN	0x0000000485#define   CB_BRIDGE_VGAEN	0x0000000886#define   CB_BRIDGE_MABTMODE	0x0000002087#define   CB_BRIDGE_CRST	0x0000004088#define   CB_BRIDGE_INTR	0x0000008089#define   CB_BRIDGE_PREFETCH0	0x0000010090#define   CB_BRIDGE_PREFETCH1	0x0000020091#define   CB_BRIDGE_POSTEN	0x0000040092#define CB_LEGACY_MODE_BASE	0x4493 94/*95 * ExCA area extensions in Yenta96 */97#define CB_MEM_PAGE(map)	(0x40 + (map))98 99 100/* control how 16bit cards are powered */101#define YENTA_16BIT_POWER_EXCA	0x00000001102#define YENTA_16BIT_POWER_DF	0x00000002103 104 105struct yenta_socket;106 107struct cardbus_type {108	int	(*override)(struct yenta_socket *);109	void	(*save_state)(struct yenta_socket *);110	void	(*restore_state)(struct yenta_socket *);111	int	(*sock_init)(struct yenta_socket *);112};113 114struct yenta_socket {115	struct pci_dev *dev;116	int cb_irq, io_irq;117	void __iomem *base;118	struct timer_list poll_timer;119 120	struct pcmcia_socket socket;121	struct cardbus_type *type;122 123	u32 flags;124 125	/* for PCI interrupt probing */126	unsigned int probe_status;127 128	/* A few words of private data for special stuff of overrides... */129	unsigned int private[8];130 131	/* PCI saved state */132	u32 saved_state[2];133};134 135 136#endif137