From 016469efaabfeaa09f9e1f2b3b50db3f6ffb6035 Mon Sep 17 00:00:00 2001 From: Armin Schindler Date: Sat, 20 Jan 2001 20:20:30 +0000 Subject: [PATCH] fixes in interrupt handler --- drivers/isdn/eicon/Divas_mod.c | 2 ++ drivers/isdn/eicon/bri.c | 4 ++-- drivers/isdn/eicon/fourbri.c | 25 +++++++++---------------- drivers/isdn/eicon/idi.c | 2 +- drivers/isdn/eicon/pri.c | 6 +++--- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/drivers/isdn/eicon/Divas_mod.c b/drivers/isdn/eicon/Divas_mod.c index 6871f519..8697ba2c 100644 --- a/drivers/isdn/eicon/Divas_mod.c +++ b/drivers/isdn/eicon/Divas_mod.c @@ -41,6 +41,8 @@ #include "adapter.h" #include "uxio.h" +#include + #ifdef MODULE #include "idi.h" void DIVA_DIDD_Write(DESCRIPTOR *, int); diff --git a/drivers/isdn/eicon/bri.c b/drivers/isdn/eicon/bri.c index 5a8afc11..0a0b5535 100644 --- a/drivers/isdn/eicon/bri.c +++ b/drivers/isdn/eicon/bri.c @@ -63,6 +63,7 @@ void io_out_buffer(ADAPTER *a, void *adr, void *P, word length); void io_inc(ADAPTER *a, void *adr); static int diva_server_bri_test_int(card_t *card); +static int bri_ISR (card_t* card); #define PLX_IOBASE 0 #define DIVAS_IOBASE 1 @@ -80,7 +81,6 @@ void UxCardPortIoOut(ux_diva_card_t *card, byte *base, int offset, byte); void UxCardPortIoOutW(ux_diva_card_t *card, byte *base, int offset, word); int DivasBRIInitPCI(card_t *card, dia_card_t *cfg); -int bri_ISR (card_t* card); static int diva_server_bri_reset(card_t *card) @@ -361,7 +361,7 @@ int diva_server_bri_config(card_t *card, dia_config_t *config) UxCardPortIoOut(card->hw, DivasIOBase, REG_DATA, config->nt2); UxCardPortIoOutW(card->hw, DivasIOBase, REG_ADDRLO, 10); - UxCardPortIoOut(card->hw, DivasIOBase, REG_DATA, 0); + UxCardPortIoOut(card->hw, DivasIOBase, REG_DATA, config->sig_flags); UxCardPortIoOutW(card->hw, DivasIOBase, REG_ADDRLO, 11); UxCardPortIoOut(card->hw, DivasIOBase, REG_DATA, config->watchdog); diff --git a/drivers/isdn/eicon/fourbri.c b/drivers/isdn/eicon/fourbri.c index 5fe9817e..57428904 100644 --- a/drivers/isdn/eicon/fourbri.c +++ b/drivers/isdn/eicon/fourbri.c @@ -67,7 +67,7 @@ void mem_out_buffer(ADAPTER *a, void *adr, void *P, word length); void mem_inc(ADAPTER *a, void *adr); int Divas4BRIInitPCI(card_t *card, dia_card_t *cfg); -int fourbri_ISR (card_t* card); +static int fourbri_ISR (card_t* card); int FPGA_Download(word, dword, byte *, byte *, int); extern byte FPGA_Bytes[]; @@ -113,7 +113,7 @@ static int diva_server_4bri_config(card_t *card, dia_config_t *config) UxCardMemOut(card->hw, &shared[ 8], config->tei); UxCardMemOut(card->hw, &shared[ 9], config->nt2); - UxCardMemOut(card->hw, &shared[10], 0); + UxCardMemOut(card->hw, &shared[10], config->sig_flags); UxCardMemOut(card->hw, &shared[11], config->watchdog); UxCardMemOut(card->hw, &shared[12], config->permanent); UxCardMemOut(card->hw, &shared[13], config->x_interface); @@ -561,23 +561,16 @@ int memcm(byte *dst, byte *src, dword dwLen) }*/ -int fourbri_ISR (card_t* card) +static int fourbri_ISR (card_t* card) { - int served = 0; byte *ctl; - byte *reg = UxCardMemAttach(card->hw, DIVAS_REG_MEMORY); - if (UxCardPortIoIn(card->hw, reg, PLX9054_INTCSR) & 0x80) - { - served = 1; - card->int_pend += 1; - DivasDpcSchedule(); /* ISR DPC */ + card->int_pend += 1; + DivasDpcSchedule(); /* ISR DPC */ - ctl = UxCardMemAttach(card->hw, DIVAS_CTL_MEMORY); - UxCardMemOut(card->hw, &ctl[MQ_BREG_IRQ_TEST], MQ_IRQ_REQ_OFF); - UxCardMemDetach(card->hw, ctl); - } + ctl = UxCardMemAttach(card->hw, DIVAS_CTL_MEMORY); + UxCardMemOut(card->hw, &ctl[MQ_BREG_IRQ_TEST], MQ_IRQ_REQ_OFF); + UxCardMemDetach(card->hw, ctl); - UxCardMemDetach(card->hw, reg); - return (served != 0); + return (1); } diff --git a/drivers/isdn/eicon/idi.c b/drivers/isdn/eicon/idi.c index f9b8a0ee..afc8b339 100644 --- a/drivers/isdn/eicon/idi.c +++ b/drivers/isdn/eicon/idi.c @@ -248,7 +248,6 @@ void next_req(ADAPTER * a) /* * IDI request function for active cards */ - static void request(card_t *card, ENTITY *e) { @@ -256,6 +255,7 @@ void request(card_t *card, ENTITY *e) int i; int ipl; + if (card->log_types & DIVAS_LOG_IDI) { DivasLogIdi(card, e, TRUE); diff --git a/drivers/isdn/eicon/pri.c b/drivers/isdn/eicon/pri.c index a6a63945..e9e36b42 100644 --- a/drivers/isdn/eicon/pri.c +++ b/drivers/isdn/eicon/pri.c @@ -82,7 +82,7 @@ void mem_out_buffer(ADAPTER *a, void *adr, void *P, word length); void mem_inc(ADAPTER *a, void *adr); int DivasPRIInitPCI(card_t *card, dia_card_t *cfg); -int pri_ISR (card_t* card); +static int pri_ISR (card_t* card); static int diva_server_reset(card_t *card) { @@ -156,7 +156,7 @@ static int diva_server_config(card_t *card, dia_config_t *config) UxCardMemOut(card->hw, &shared[ 8], config->tei); UxCardMemOut(card->hw, &shared[ 9], config->nt2); - UxCardMemOut(card->hw, &shared[10], 0); + UxCardMemOut(card->hw, &shared[10], config->sig_flags); UxCardMemOut(card->hw, &shared[11], config->watchdog); UxCardMemOut(card->hw, &shared[12], config->permanent); UxCardMemOut(card->hw, &shared[13], config->x_interface); @@ -509,7 +509,7 @@ int DivasPriInit(card_t *card, dia_card_t *cfg) } -int pri_ISR (card_t* card) +static int pri_ISR (card_t* card) { int served = 0; byte* cfg = UxCardMemAttach(card->hw, DIVAS_CFG_MEMORY);