w6692.c (396665e8320987ff43b20a62a6a1cdae57aa1cc1) | w6692.c (e4dca7b7aa08b22893c45485d222b5807c1375ae) |
---|---|
1/* 2 * w6692.c mISDN driver for Winbond w6692 based cards 3 * 4 * Author Karsten Keil <kkeil@suse.de> 5 * based on the w6692 I4L driver from Petr Novak <petr.novak@i.cz> 6 * 7 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 8 * --- 87 unchanged lines hidden (view full) --- 96_set_debug(struct w6692_hw *card) 97{ 98 card->dch.debug = debug; 99 card->bc[0].bch.debug = debug; 100 card->bc[1].bch.debug = debug; 101} 102 103static int | 1/* 2 * w6692.c mISDN driver for Winbond w6692 based cards 3 * 4 * Author Karsten Keil <kkeil@suse.de> 5 * based on the w6692 I4L driver from Petr Novak <petr.novak@i.cz> 6 * 7 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 8 * --- 87 unchanged lines hidden (view full) --- 96_set_debug(struct w6692_hw *card) 97{ 98 card->dch.debug = debug; 99 card->bc[0].bch.debug = debug; 100 card->bc[1].bch.debug = debug; 101} 102 103static int |
104set_debug(const char *val, struct kernel_param *kp) | 104set_debug(const char *val, const struct kernel_param *kp) |
105{ 106 int ret; 107 struct w6692_hw *card; 108 109 ret = param_set_uint(val, kp); 110 if (!ret) { 111 read_lock(&card_lock); 112 list_for_each_entry(card, &Cards, list) --- 193 unchanged lines hidden (view full) --- 306 ptr = dch->tx_skb->data + dch->tx_idx; 307 dch->tx_idx += count; 308 outsb(card->addr + W_D_XFIFO, ptr, count); 309 WriteW6692(card, W_D_CMDR, cmd); 310 if (test_and_set_bit(FLG_BUSY_TIMER, &dch->Flags)) { 311 pr_debug("%s: fill_Dfifo dbusytimer running\n", card->name); 312 del_timer(&dch->timer); 313 } | 105{ 106 int ret; 107 struct w6692_hw *card; 108 109 ret = param_set_uint(val, kp); 110 if (!ret) { 111 read_lock(&card_lock); 112 list_for_each_entry(card, &Cards, list) --- 193 unchanged lines hidden (view full) --- 306 ptr = dch->tx_skb->data + dch->tx_idx; 307 dch->tx_idx += count; 308 outsb(card->addr + W_D_XFIFO, ptr, count); 309 WriteW6692(card, W_D_CMDR, cmd); 310 if (test_and_set_bit(FLG_BUSY_TIMER, &dch->Flags)) { 311 pr_debug("%s: fill_Dfifo dbusytimer running\n", card->name); 312 del_timer(&dch->timer); 313 } |
314 init_timer(&dch->timer); |
|
314 dch->timer.expires = jiffies + ((DBUSY_TIMER_VALUE * HZ) / 1000); 315 add_timer(&dch->timer); 316 if (debug & DEBUG_HW_DFIFO) { 317 snprintf(card->log, 63, "D-send %s %d ", 318 card->name, count); 319 print_hex_dump_bytes(card->log, DUMP_PREFIX_OFFSET, ptr, count); 320 } 321} --- 491 unchanged lines hidden (view full) --- 813 if (ista & (W_INT_XINT0 | W_INT_XINT1)) /* XINT0/1 - never */ 814 pr_debug("%s: W6692 spurious XINT!\n", card->name); 815/* End IRQ Handler */ 816 spin_unlock(&card->lock); 817 return IRQ_HANDLED; 818} 819 820static void | 315 dch->timer.expires = jiffies + ((DBUSY_TIMER_VALUE * HZ) / 1000); 316 add_timer(&dch->timer); 317 if (debug & DEBUG_HW_DFIFO) { 318 snprintf(card->log, 63, "D-send %s %d ", 319 card->name, count); 320 print_hex_dump_bytes(card->log, DUMP_PREFIX_OFFSET, ptr, count); 321 } 322} --- 491 unchanged lines hidden (view full) --- 814 if (ista & (W_INT_XINT0 | W_INT_XINT1)) /* XINT0/1 - never */ 815 pr_debug("%s: W6692 spurious XINT!\n", card->name); 816/* End IRQ Handler */ 817 spin_unlock(&card->lock); 818 return IRQ_HANDLED; 819} 820 821static void |
821dbusy_timer_handler(struct timer_list *t) | 822dbusy_timer_handler(struct dchannel *dch) |
822{ | 823{ |
823 struct dchannel *dch = from_timer(dch, t, timer); | |
824 struct w6692_hw *card = dch->hw; 825 int rbch, star; 826 u_long flags; 827 828 if (test_bit(FLG_BUSY_TIMER, &dch->Flags)) { 829 spin_lock_irqsave(&card->lock, flags); 830 rbch = ReadW6692(card, W_D_RBCH); 831 star = ReadW6692(card, W_D_STAR); --- 15 unchanged lines hidden (view full) --- 847 spin_unlock_irqrestore(&card->lock, flags); 848 } 849} 850 851static void initW6692(struct w6692_hw *card) 852{ 853 u8 val; 854 | 824 struct w6692_hw *card = dch->hw; 825 int rbch, star; 826 u_long flags; 827 828 if (test_bit(FLG_BUSY_TIMER, &dch->Flags)) { 829 spin_lock_irqsave(&card->lock, flags); 830 rbch = ReadW6692(card, W_D_RBCH); 831 star = ReadW6692(card, W_D_STAR); --- 15 unchanged lines hidden (view full) --- 847 spin_unlock_irqrestore(&card->lock, flags); 848 } 849} 850 851static void initW6692(struct w6692_hw *card) 852{ 853 u8 val; 854 |
855 timer_setup(&card->dch.timer, dbusy_timer_handler, 0); | 855 setup_timer(&card->dch.timer, (void *)dbusy_timer_handler, 856 (u_long)&card->dch); |
856 w6692_mode(&card->bc[0], ISDN_P_NONE); 857 w6692_mode(&card->bc[1], ISDN_P_NONE); 858 WriteW6692(card, W_D_CTL, 0x00); 859 disable_hwirq(card); 860 WriteW6692(card, W_D_SAM, 0xff); 861 WriteW6692(card, W_D_TAM, 0xff); 862 WriteW6692(card, W_D_MODE, W_D_MODE_RACT); 863 card->state = W_L1CMD_RST; --- 572 unchanged lines hidden --- | 857 w6692_mode(&card->bc[0], ISDN_P_NONE); 858 w6692_mode(&card->bc[1], ISDN_P_NONE); 859 WriteW6692(card, W_D_CTL, 0x00); 860 disable_hwirq(card); 861 WriteW6692(card, W_D_SAM, 0xff); 862 WriteW6692(card, W_D_TAM, 0xff); 863 WriteW6692(card, W_D_MODE, W_D_MODE_RACT); 864 card->state = W_L1CMD_RST; --- 572 unchanged lines hidden --- |