示例#1
0
static int
TeleInt_card_msg(struct IsdnCardState *cs, int mt, void *arg)
{
	switch (mt) {
		case CARD_RESET:
			reset_TeleInt(cs);
			return(0);
		case CARD_RELEASE:
			release_io_TeleInt(cs);
			return(0);
		case CARD_INIT:
			inithfc(cs);
			clear_pending_isac_ints(cs);
			initisac(cs);
			/* Reenable all IRQ */
			cs->writeisac(cs, ISAC_MASK, 0);
			cs->writeisac(cs, ISAC_CMDR, 0x41);
			cs->hw.hfc.timer.expires = jiffies + 1;
			add_timer(&cs->hw.hfc.timer);
			return(0);
		case CARD_TEST:
			return(0);
	}
	return(0);
}
示例#2
0
文件: teleint.c 项目: 274914765/C
static int
TeleInt_card_msg(struct IsdnCardState *cs, int mt, void *arg)
{
    u_long flags;
    int delay;

    switch (mt) {
        case CARD_RESET:
            spin_lock_irqsave(&cs->lock, flags);
            reset_TeleInt(cs);
            spin_unlock_irqrestore(&cs->lock, flags);
            return(0);
        case CARD_RELEASE:
            release_io_TeleInt(cs);
            return(0);
        case CARD_INIT:
            spin_lock_irqsave(&cs->lock, flags);
            reset_TeleInt(cs);
            inithfc(cs);
            clear_pending_isac_ints(cs);
            initisac(cs);
            /* Reenable all IRQ */
            cs->writeisac(cs, ISAC_MASK, 0);
            cs->writeisac(cs, ISAC_CMDR, 0x41);
            spin_unlock_irqrestore(&cs->lock, flags);
            delay = HZ/100;
            if (!delay)
                delay = 1;
            cs->hw.hfc.timer.expires = jiffies + delay;
            add_timer(&cs->hw.hfc.timer);
            return(0);
        case CARD_TEST:
            return(0);
    }
    return(0);
}