Changes for PCMCIA

This commit is contained in:
Karsten Keil 1998-03-09 23:19:27 +00:00
parent 07592f58b3
commit 26e64fcaa2
3 changed files with 44 additions and 30 deletions

View File

@ -5,6 +5,9 @@
*
*
* $Log$
* Revision 2.12 1998/02/11 17:28:02 keil
* Niccy PnP/PCI support
*
* Revision 2.11 1998/02/09 21:26:13 keil
* fix export module for 2.1
*
@ -421,8 +424,8 @@ HiSax_init(void))
}
#endif
#endif
HiSaxVersion();
nrcards = 0;
HiSaxVersion();
#ifdef MODULE
if (id) /* If id= string used */
HiSax_id = id;
@ -526,7 +529,18 @@ HiSax_init(void))
void
cleanup_module(void)
{
HiSax_closehardware();
int cardnr = nrcards -1;
long flags;
save_flags(flags);
cli();
while(cardnr>=0)
HiSax_closecard(cardnr--);
Isdnl1Free();
TeiFree();
Isdnl2Free();
CallcFree();
restore_flags(flags);
printk(KERN_INFO "HiSax module removed\n");
}

View File

@ -202,14 +202,14 @@
*/
struct Fsm {
long *jumpmatrix;
long state_count, event_count;
int *jumpmatrix;
int state_count, event_count;
char **strEvent, **strState;
};
struct FsmInst {
struct Fsm *fsm;
long state;
int state;
int debug;
void *userdata;
int userint;
@ -217,7 +217,7 @@ struct FsmInst {
};
struct FsmNode {
long state, event;
int state, event;
void (*routine) (struct FsmInst *, int, void *);
};
@ -419,6 +419,7 @@ struct amd7930_hw {
#define L1_MODE_NULL 0
#define L1_MODE_TRANS 1
#define L1_MODE_HDLC 2
#define L1_MODE_MODEM 7
struct BCState {
int channel;
@ -904,7 +905,7 @@ struct IsdnCard {
void setstack_isdnl2(struct PStack *st, char *debug_id);
int HiSax_inithardware(int *);
void HiSax_closehardware(void);
void HiSax_closecard(int cardnr);
void setstack_HiSax(struct PStack *st, struct IsdnCardState *cs);
unsigned int random_ri(void);

View File

@ -948,27 +948,26 @@ HiSax_inithardware(int *busy_flag))
}
void
HiSax_closehardware(void)
HiSax_closecard(int cardnr)
{
int i;
long flags;
save_flags(flags);
cli();
for (i = 0; i < nrcards; i++)
if (cards[i].cs) {
ll_stop(cards[i].cs);
release_tei(cards[i].cs);
closecard(i);
free_irq(cards[i].cs->irq, cards[i].cs);
kfree((void *) cards[i].cs);
cards[i].cs = NULL;
}
Isdnl1Free();
TeiFree();
Isdnl2Free();
CallcFree();
restore_flags(flags);
int i,last=nrcards - 1;
if (cardnr>last)
return;
if (cards[cardnr].cs) {
ll_stop(cards[cardnr].cs);
release_tei(cards[cardnr].cs);
closecard(cardnr);
free_irq(cards[cardnr].cs->irq, cards[cardnr].cs);
kfree((void *) cards[cardnr].cs);
cards[cardnr].cs = NULL;
}
i = cardnr;
while (i!=last) {
cards[i] = cards[i+1];
i++;
}
nrcards--;
}
void
@ -1325,11 +1324,11 @@ dch_manl1(struct PStack *st, int pr,
}
break;
case PH_TESTLOOP_REQ:
if (1 & (long) arg)
if (1 & (int) arg)
debugl1(cs, "PH_TEST_LOOP B1");
if (2 & (long) arg)
if (2 & (int) arg)
debugl1(cs, "PH_TEST_LOOP B2");
if (!(3 & (long) arg))
if (!(3 & (int) arg))
debugl1(cs, "PH_TEST_LOOP DISABLED");
cs->l1cmd(cs, PH_TESTLOOP_REQ, arg);
break;