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