1 #ifndef BCM63XX_PCMCIA_H_ 2 #define BCM63XX_PCMCIA_H_ 3 4 #include <linux/types.h> 5 #include <linux/timer.h> 6 #include <pcmcia/ss.h> 7 #include <bcm63xx_dev_pcmcia.h> 8 9 /* socket polling rate in ms */ 10 #define BCM63XX_PCMCIA_POLL_RATE 500 11 12 enum { 13 CARD_CARDBUS = (1 << 0), 14 CARD_PCCARD = (1 << 1), 15 CARD_5V = (1 << 2), 16 CARD_3V = (1 << 3), 17 CARD_XV = (1 << 4), 18 CARD_YV = (1 << 5), 19 }; 20 21 struct bcm63xx_pcmcia_socket { 22 struct pcmcia_socket socket; 23 24 /* platform specific data */ 25 struct bcm63xx_pcmcia_platform_data *pd; 26 27 /* all regs access are protected by this spinlock */ 28 spinlock_t lock; 29 30 /* pcmcia registers resource */ 31 struct resource *reg_res; 32 33 /* base remapped address of registers */ 34 void __iomem *base; 35 36 /* whether a card is detected at the moment */ 37 int card_detected; 38 39 /* type of detected card (mask of above enum) */ 40 u8 card_type; 41 42 /* keep last socket status to implement event reporting */ 43 unsigned int old_status; 44 45 /* backup of requested socket state */ 46 socket_state_t requested_state; 47 48 /* timer used for socket status polling */ 49 struct timer_list timer; 50 51 /* attribute/common memory resources */ 52 struct resource *attr_res; 53 struct resource *common_res; 54 struct resource *io_res; 55 56 /* base address of io memory */ 57 void __iomem *io_base; 58 }; 59 60 #endif /* BCM63XX_PCMCIA_H_ */ 61