/* * linux/include/asm/arch/pcmcia.h * * Copyright (C) 2000 John G Dorsey * * This file contains definitions for the low-level SA-1100 kernel PCMCIA * interface. Please see linux/Documentation/arm/SA1100/PCMCIA for details. */ #ifndef _ASM_ARCH_PCMCIA #define _ASM_ARCH_PCMCIA /* Ideally, we'd support up to MAX_SOCK sockets, but the SA-1100 only * has support for two. This shows up in lots of hardwired ways, such * as the fact that MECR only has enough bits to configure two sockets. * Since it's so entrenched in the hardware, limiting the software * in this way doesn't seem too terrible. */ #define SA1100_PCMCIA_MAX_SOCK (2) #ifndef __ASSEMBLY__ struct pcmcia_init { void (*handler)(int irq, void *dev, struct pt_regs *regs); }; struct pcmcia_state { unsigned detect: 1, ready: 1, bvd1: 1, bvd2: 1, wrprot: 1, vs_3v: 1, vs_Xv: 1; }; struct pcmcia_state_array { unsigned int size; struct pcmcia_state *state; }; struct pcmcia_configure { unsigned sock: 8, vcc: 8, vpp: 8, output: 1, speaker: 1, reset: 1; }; struct pcmcia_irq_info { unsigned int sock; unsigned int irq; }; struct pcmcia_low_level { int (*init)(struct pcmcia_init *); int (*shutdown)(void); int (*socket_state)(struct pcmcia_state_array *); int (*get_irq_info)(struct pcmcia_irq_info *); int (*configure_socket)(const struct pcmcia_configure *); }; extern struct pcmcia_low_level *pcmcia_low_level; #endif /* __ASSEMBLY__ */ #endif