/* the timer is primarily to kick this socket's pccardd */ static void electra_cf_timer(unsigned long _cf) { struct electra_cf_socket *cf = (void *) _cf; int present = electra_cf_present(cf); if (present != cf->present) { cf->present = present; pcmcia_parse_events(&cf->socket, SS_DETECT); } if (cf->active) mod_timer(&cf->timer, jiffies + POLL_INTERVAL); }
static int electra_cf_get_status(struct pcmcia_socket *s, u_int *sp) { struct electra_cf_socket *cf; if (!sp) return -EINVAL; cf = container_of(s, struct electra_cf_socket, socket); /* NOTE CF is always 3VCARD */ if (electra_cf_present(cf)) { *sp = SS_READY | SS_DETECT | SS_POWERON | SS_3VCARD; s->pci_irq = cf->irq; } else *sp = 0; return 0; }