1/* 2 * linux/include/asm/arch/pcmcia.h 3 * 4 * Copyright (C) 2000 John G Dorsey <john+@cs.cmu.edu> 5 * 6 * This file contains definitions for the low-level SA-1100 kernel PCMCIA 7 * interface. Please see linux/Documentation/arm/SA1100/PCMCIA for details. 8 */ 9#ifndef _ASM_ARCH_PCMCIA 10#define _ASM_ARCH_PCMCIA 11 12/* Ideally, we'd support up to MAX_SOCK sockets, but the SA-1100 only 13 * has support for two. This shows up in lots of hardwired ways, such 14 * as the fact that MECR only has enough bits to configure two sockets. 15 * Since it's so entrenched in the hardware, limiting the software 16 * in this way doesn't seem too terrible. 17 */ 18#define SA1100_PCMCIA_MAX_SOCK (2) 19 20struct pcmcia_init { 21 void (*handler)(int irq, void *dev, struct pt_regs *regs); 22}; 23 24struct pcmcia_state { 25 unsigned detect: 1, 26 ready: 1, 27 bvd1: 1, 28 bvd2: 1, 29 wrprot: 1, 30 vs_3v: 1, 31 vs_Xv: 1; 32}; 33 34struct pcmcia_state_array { 35 unsigned int size; 36 struct pcmcia_state *state; 37}; 38 39struct pcmcia_configure { 40 unsigned sock: 8, 41 vcc: 8, 42 vpp: 8, 43 output: 1, 44 speaker: 1, 45 reset: 1, 46 irq: 1; 47}; 48 49struct pcmcia_irq_info { 50 unsigned int sock; 51 unsigned int irq; 52}; 53 54struct pcmcia_low_level { 55 int (*init)(struct pcmcia_init *); 56 int (*shutdown)(void); 57 int (*socket_state)(struct pcmcia_state_array *); 58 int (*get_irq_info)(struct pcmcia_irq_info *); 59 int (*configure_socket)(const struct pcmcia_configure *); 60 61 /* 62 * Enable card status IRQs on (re-)initialisation. This can 63 * be called at initialisation, power management event, or 64 * pcmcia event. 65 */ 66 int (*socket_init)(int sock); 67 68 /* 69 * Disable card status IRQs and PCMCIA bus on suspend. 70 */ 71 int (*socket_suspend)(int sock); 72}; 73 74extern struct pcmcia_low_level *pcmcia_low_level; 75 76#endif 77