Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

elsa.c File Reference

#include <linux/init.h>
#include <linux/config.h>
#include "hisax.h"
#include "arcofi.h"
#include "isac.h"
#include "ipac.h"
#include "hscx.h"
#include "isdnl1.h"
#include <linux/pci.h>
#include <linux/isdn_compat.h>
#include <linux/serial.h>
#include <linux/serial_reg.h>
#include "elsa_ser.c"
#include "hscx_irq.c"

Include dependency graph for elsa.c:

Go to the source code of this file.

Defines

#define __NO_VERSION__
#define byteout(addr, val)   outb(val,addr)
#define bytein(addr)   inb(addr)
#define ELSA_ISAC   0
#define ELSA_ISAC_PCM   1
#define ELSA_ITAC   1
#define ELSA_HSCX   2
#define ELSA_ALE   3
#define ELSA_ALE_PCM   4
#define ELSA_CONTROL   4
#define ELSA_CONFIG   5
#define ELSA_START_TIMER   6
#define ELSA_TRIG_IRQ   7
#define ELSA_PC   1
#define ELSA_PCC8   2
#define ELSA_PCC16   3
#define ELSA_PCF   4
#define ELSA_PCFPRO   5
#define ELSA_PCMCIA   6
#define ELSA_QS1000   7
#define ELSA_QS3000   8
#define ELSA_QS1000PCI   9
#define ELSA_QS3000PCI   10
#define ELSA_PCMCIA_IPAC   11
#define ELSA_PCI_IRQ_MASK   0x04
#define ITAC_SYS   0x34
#define ITAC_ISEN   0x48
#define ITAC_RFIE   0x4A
#define ITAC_XFIE   0x4C
#define ITAC_SCIE   0x4E
#define ITAC_STIE   0x46
#define ELSA_TIMER_RUN   0x02
#define ELSA_TIMER_RUN_PCC8   0x01
#define ELSA_IRQ_IDX   0x38
#define ELSA_IRQ_IDX_PCC8   0x30
#define ELSA_IRQ_IDX_PC   0x0c
#define ELSA_LINE_LED   0x02
#define ELSA_STAT_LED   0x08
#define ELSA_ISDN_RESET   0x20
#define ELSA_ENA_TIMER_INT   0x80
#define ELSA_HW_RELEASE   0x07
#define ELSA_S0_POWER_BAD   0x08
#define ELSA_TIMER_AKTIV   1
#define ELSA_BAD_PWR   2
#define ELSA_ASSIGN   4
#define RS_ISR_PASS_LIMIT   256
#define _INLINE_   inline
#define FLG_MODEM_ACTIVE   1
#define ELSA_IPAC_LINE_LED   0x40
#define ELSA_IPAC_STAT_LED   0x80
#define READHSCX(cs, nr, reg)
#define WRITEHSCX(cs, nr, reg, data)
#define READHSCXFIFO(cs, nr, ptr, cnt)
#define WRITEHSCXFIFO(cs, nr, ptr, cnt)

Functions

static void set_arcofi (struct IsdnCardState *cs, int bc)
static u_char readreg (unsigned int ale, unsigned int adr, u_char off)
static void readfifo (unsigned int ale, unsigned int adr, u_char off, u_char *data, int size)
static void writereg (unsigned int ale, unsigned int adr, u_char off, u_char data)
static void writefifo (unsigned int ale, unsigned int adr, u_char off, u_char *data, int size)
static u_char ReadISAC (struct IsdnCardState *cs, u_char offset)
static void WriteISAC (struct IsdnCardState *cs, u_char offset, u_char value)
static void ReadISACfifo (struct IsdnCardState *cs, u_char *data, int size)
static void WriteISACfifo (struct IsdnCardState *cs, u_char *data, int size)
static u_char ReadISAC_IPAC (struct IsdnCardState *cs, u_char offset)
static void WriteISAC_IPAC (struct IsdnCardState *cs, u_char offset, u_char value)
static void ReadISACfifo_IPAC (struct IsdnCardState *cs, u_char *data, int size)
static void WriteISACfifo_IPAC (struct IsdnCardState *cs, u_char *data, int size)
static u_char ReadHSCX (struct IsdnCardState *cs, int hscx, u_char offset)
static void WriteHSCX (struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
static u_char readitac (struct IsdnCardState *cs, u_char off)
static void writeitac (struct IsdnCardState *cs, u_char off, u_char data)
static int TimerRun (struct IsdnCardState *cs)
static void elsa_interrupt (int intno, void *dev_id, struct pt_regs *regs)
static void elsa_interrupt_ipac (int intno, void *dev_id, struct pt_regs *regs)
void release_io_elsa (struct IsdnCardState *cs)
static void reset_elsa (struct IsdnCardState *cs)
static int check_arcofi (struct IsdnCardState *cs)
static void elsa_led_handler (struct IsdnCardState *cs)
static int Elsa_card_msg (struct IsdnCardState *cs, int mt, void *arg)
static unsigned char probe_elsa_adr (unsigned int adr, int typ)
static unsigned int probe_elsa (struct IsdnCardState *cs)
int setup_elsa (struct IsdnCard *card)

Variables

const char * CardType []
const char * Elsa_revision = "$Revision: 1.1.2.1 $"
const char * Elsa_Types []
const char * ITACVer []
static struct arcofi_msg ARCOFI_XOP_F
static struct arcofi_msg ARCOFI_XOP_1
static struct arcofi_msg ARCOFI_SOP_F
static struct arcofi_msg ARCOFI_COP_9
static struct arcofi_msg ARCOFI_COP_8
static struct arcofi_msg ARCOFI_COP_7
static struct arcofi_msg ARCOFI_COP_6
static struct arcofi_msg ARCOFI_COP_5
static struct arcofi_msg ARCOFI_VERSION
static struct arcofi_msg ARCOFI_XOP_0
static struct pci_dev * dev_qs1000 = NULL
static struct pci_dev * dev_qs3000 = NULL


Define Documentation

#define __NO_VERSION__
 

Definition at line 21 of file elsa.c.

#define _INLINE_   inline
 

Definition at line 112 of file elsa.c.

#define bytein addr   )     inb(addr)
 

Definition at line 48 of file elsa.c.

#define byteout addr,
val   )     outb(val,addr)
 

Definition at line 47 of file elsa.c.

#define ELSA_ALE   3
 

Definition at line 54 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ALE_PCM   4
 

Definition at line 55 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ASSIGN   4
 

Definition at line 109 of file elsa.c.

Referenced by Elsa_card_msg(), and elsa_led_handler().

#define ELSA_BAD_PWR   2
 

Definition at line 108 of file elsa.c.

Referenced by Elsa_card_msg(), elsa_led_handler(), and setup_elsa().

#define ELSA_CONFIG   5
 

Definition at line 57 of file elsa.c.

Referenced by probe_elsa_adr(), and setup_elsa().

#define ELSA_CONTROL   4
 

Definition at line 56 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ENA_TIMER_INT   0x80
 

Definition at line 100 of file elsa.c.

Referenced by Elsa_card_msg().

#define ELSA_HSCX   2
 

Definition at line 53 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_HW_RELEASE   0x07
 

Definition at line 103 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_IPAC_LINE_LED   0x40
 

Definition at line 115 of file elsa.c.

Referenced by elsa_led_handler().

#define ELSA_IPAC_STAT_LED   0x80
 

Definition at line 116 of file elsa.c.

Referenced by elsa_led_handler().

#define ELSA_IRQ_IDX   0x38
 

Definition at line 92 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_IRQ_IDX_PC   0x0c
 

Definition at line 94 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_IRQ_IDX_PCC8   0x30
 

Definition at line 93 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ISAC   0
 

Definition at line 50 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ISAC_PCM   1
 

Definition at line 51 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_ISDN_RESET   0x20
 

Definition at line 99 of file elsa.c.

Referenced by reset_elsa().

#define ELSA_ITAC   1
 

Definition at line 52 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_LINE_LED   0x02
 

Definition at line 97 of file elsa.c.

Referenced by elsa_led_handler().

#define ELSA_PC   1
 

Definition at line 61 of file elsa.c.

Referenced by probe_elsa_adr(), and setup_elsa().

#define ELSA_PCC16   3
 

Definition at line 63 of file elsa.c.

Referenced by check_arcofi(), probe_elsa_adr(), and setup_elsa().

#define ELSA_PCC8   2
 

Definition at line 62 of file elsa.c.

Referenced by probe_elsa_adr(), setup_elsa(), and TimerRun().

#define ELSA_PCF   4
 

Definition at line 64 of file elsa.c.

Referenced by check_arcofi(), release_io_elsa(), and setup_elsa().

#define ELSA_PCFPRO   5
 

Definition at line 65 of file elsa.c.

Referenced by probe_elsa_adr(), release_io_elsa(), and setup_elsa().

#define ELSA_PCI_IRQ_MASK   0x04
 

Definition at line 74 of file elsa.c.

Referenced by elsa_interrupt_ipac().

#define ELSA_PCMCIA   6
 

Definition at line 66 of file elsa.c.

Referenced by Elsa_card_msg(), elsa_led_handler(), and setup_elsa().

#define ELSA_PCMCIA_IPAC   11
 

Definition at line 71 of file elsa.c.

Referenced by Elsa_card_msg(), elsa_led_handler(), release_io_elsa(), reset_elsa(), and setup_elsa().

#define ELSA_QS1000   7
 

Definition at line 67 of file elsa.c.

Referenced by check_arcofi(), Elsa_card_msg(), setup_elsa(), and TimerRun().

#define ELSA_QS1000PCI   9
 

Definition at line 69 of file elsa.c.

Referenced by Elsa_card_msg(), elsa_interrupt_ipac(), elsa_led_handler(), release_io_elsa(), reset_elsa(), and setup_elsa().

#define ELSA_QS3000   8
 

Definition at line 68 of file elsa.c.

Referenced by check_arcofi(), Elsa_card_msg(), release_io_elsa(), and TimerRun().

#define ELSA_QS3000PCI   10
 

Definition at line 70 of file elsa.c.

Referenced by Elsa_card_msg(), elsa_interrupt_ipac(), elsa_led_handler(), release_io_elsa(), reset_elsa(), and setup_elsa().

#define ELSA_S0_POWER_BAD   0x08
 

Definition at line 104 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_START_TIMER   6
 

Definition at line 58 of file elsa.c.

Referenced by setup_elsa().

#define ELSA_STAT_LED   0x08
 

Definition at line 98 of file elsa.c.

Referenced by elsa_led_handler().

#define ELSA_TIMER_AKTIV   1
 

Definition at line 107 of file elsa.c.

Referenced by Elsa_card_msg(), and elsa_interrupt().

#define ELSA_TIMER_RUN   0x02
 

Definition at line 90 of file elsa.c.

Referenced by TimerRun().

#define ELSA_TIMER_RUN_PCC8   0x01
 

Definition at line 91 of file elsa.c.

Referenced by TimerRun().

#define ELSA_TRIG_IRQ   7
 

Definition at line 59 of file elsa.c.

Referenced by setup_elsa().

#define FLG_MODEM_ACTIVE   1
 

Definition at line 113 of file elsa.c.

#define ITAC_ISEN   0x48
 

Definition at line 78 of file elsa.c.

Referenced by setup_elsa().

#define ITAC_RFIE   0x4A
 

Definition at line 79 of file elsa.c.

Referenced by setup_elsa().

#define ITAC_SCIE   0x4E
 

Definition at line 81 of file elsa.c.

Referenced by setup_elsa().

#define ITAC_STIE   0x46
 

Definition at line 82 of file elsa.c.

Referenced by setup_elsa().

#define ITAC_SYS   0x34
 

Definition at line 77 of file elsa.c.

Referenced by setup_elsa().

#define ITAC_XFIE   0x4C
 

Definition at line 80 of file elsa.c.

Referenced by setup_elsa().

#define READHSCX cs,
nr,
reg   ) 
 

Value:

readreg(cs->hw.elsa.ale, \
                cs->hw.elsa.hscx, reg + (nr ? 0x40 : 0))

Definition at line 295 of file elsa.c.

#define READHSCXFIFO cs,
nr,
ptr,
cnt   ) 
 

Value:

readfifo(cs->hw.elsa.ale, \
                cs->hw.elsa.hscx, (nr ? 0x40 : 0), ptr, cnt)

Definition at line 300 of file elsa.c.

#define RS_ISR_PASS_LIMIT   256
 

Definition at line 111 of file elsa.c.

#define WRITEHSCX cs,
nr,
reg,
data   ) 
 

Value:

writereg(cs->hw.elsa.ale, \
                cs->hw.elsa.hscx, reg + (nr ? 0x40 : 0), data)

Definition at line 297 of file elsa.c.

#define WRITEHSCXFIFO cs,
nr,
ptr,
cnt   ) 
 

Value:

writefifo(cs->hw.elsa.ale, \
                cs->hw.elsa.hscx, (nr ? 0x40 : 0), ptr, cnt)

Definition at line 303 of file elsa.c.


Function Documentation

static int check_arcofi struct IsdnCardState *  cs  )  [static]
 

Definition at line 546 of file elsa.c.

References arcofi_fsm(), ARCOFI_START, ARCOFI_VERSION, ARCOFI_XOP_0, check_region, debugl1(), ELSA_PCC16, ELSA_PCF, ELSA_QS1000, ELSA_QS3000, Elsa_Types, interruptible_sleep_on(), KERN_INFO, KERN_WARNING, kmalloc(), p, printk, QuickHex(), release_region, request_region, sprintf(), t, test_and_clear_bit, tmp, and u_char.

Referenced by Elsa_card_msg().

Here is the call graph for this function:

static int Elsa_card_msg struct IsdnCardState *  cs,
int  mt,
void *  arg
[static]
 

Definition at line 681 of file elsa.c.

References bytein, byteout, CARD_AUX_IND, CARD_INIT, CARD_RELEASE, CARD_RESET, CARD_TEST, check_arcofi(), ELSA_ASSIGN, ELSA_BAD_PWR, ELSA_ENA_TIMER_INT, elsa_led_handler(), ELSA_PCMCIA, ELSA_PCMCIA_IPAC, ELSA_QS1000, ELSA_QS1000PCI, ELSA_QS3000, ELSA_QS3000PCI, ELSA_TIMER_AKTIV, HZ, init_modem(), inithscxisac(), KERN_INFO, KERN_WARNING, len, MDL_ASSIGN, MDL_INFO_CONN, MDL_INFO_REL, MDL_INFO_SETUP, MDL_REMOVE, modem_write_cmd(), msg(), printk, release_io_elsa(), REQUEST, reset_elsa(), restore_flags, ret, save_flags, schedule_timeout, set_current_state, sti, TASK_UNINTERRUPTIBLE, u_char, x08, and xff.

Referenced by setup_elsa().

Here is the call graph for this function:

static void elsa_interrupt int  intno,
void *  dev_id,
struct pt_regs regs
[static]
 

Definition at line 309 of file elsa.c.

References byteout, debugl1(), ELSA_TIMER_AKTIV, hscx_int_main(), HSCX_ISTA, HSCX_MASK, isac_interrupt(), ISAC_ISTA, ISAC_MASK, KERN_WARNING, printk, readreg, rs_interrupt_elsa(), serial_inp, serial_outp, TimerRun(), u_char, UART_IIR, UART_IIR_NO_INT, UART_MCR, val, writereg, x0, x00, x40, and xFF.

Referenced by setup_elsa().

Here is the call graph for this function:

static void elsa_interrupt_ipac int  intno,
void *  dev_id,
struct pt_regs regs
[static]
 

Definition at line 388 of file elsa.c.

References bytein, debugl1(), ELSA_PCI_IRQ_MASK, ELSA_QS1000PCI, ELSA_QS3000PCI, hscx_int_main(), HSCX_ISTA, IPAC_ISTA, IPAC_MASK, isac_interrupt(), ISAC_ISTA, KERN_WARNING, printk, readreg, rs_interrupt_elsa(), serial_inp, u_char, UART_IIR, UART_IIR_NO_INT, val, writereg, x01, x04, x08, x0f, x10, x20, x3f, x40, x80, and xFF.

Referenced by setup_elsa().

Here is the call graph for this function:

static void elsa_led_handler struct IsdnCardState *  cs  )  [static]
 

Definition at line 640 of file elsa.c.

References add_timer(), blink, byteout, del_timer(), ELSA_ASSIGN, ELSA_BAD_PWR, ELSA_IPAC_LINE_LED, ELSA_IPAC_STAT_LED, ELSA_LINE_LED, ELSA_PCMCIA, ELSA_PCMCIA_IPAC, ELSA_QS1000PCI, ELSA_QS3000PCI, ELSA_STAT_LED, HZ, init_timer(), IPAC_ATX, jiffies, u_char, and writereg.

Referenced by Elsa_card_msg(), and setup_elsa().

Here is the call graph for this function:

static unsigned int probe_elsa struct IsdnCardState *  cs  )  [static]
 

Definition at line 851 of file elsa.c.

References i, and probe_elsa_adr().

Referenced by setup_elsa().

Here is the call graph for this function:

static unsigned char probe_elsa_adr unsigned int  adr,
int  typ
[static]
 

Definition at line 801 of file elsa.c.

References check_region, cli, ELSA_CONFIG, ELSA_PC, ELSA_PCC16, ELSA_PCC8, ELSA_PCFPRO, i, inb, KERN_INFO, KERN_WARNING, printk, restore_flags, and save_flags.

Referenced by probe_elsa(), and setup_elsa().

static void readfifo unsigned int  ale,
unsigned int  adr,
u_char  off,
u_char data,
int  size
[inline, static]
 

Definition at line 160 of file elsa.c.

References byteout, and insb.

static u_char ReadHSCX struct IsdnCardState *  cs,
int  hscx,
u_char  offset
[static]
 

Definition at line 240 of file elsa.c.

References readreg, and x40.

static u_char ReadISAC struct IsdnCardState *  cs,
u_char  offset
[static]
 

Definition at line 192 of file elsa.c.

References readreg.

static u_char ReadISAC_IPAC struct IsdnCardState *  cs,
u_char  offset
[static]
 

Definition at line 216 of file elsa.c.

References readreg, and x80.

static void ReadISACfifo struct IsdnCardState *  cs,
u_char data,
int  size
[static]
 

Definition at line 204 of file elsa.c.

References readfifo().

Here is the call graph for this function:

static void ReadISACfifo_IPAC struct IsdnCardState *  cs,
u_char data,
int  size
[static]
 

Definition at line 228 of file elsa.c.

References readfifo(), and x80.

Here is the call graph for this function:

static u_char readitac struct IsdnCardState *  cs,
u_char  off
[inline, static]
 

Definition at line 254 of file elsa.c.

References bytein, byteout, cli, restore_flags, ret, save_flags, and u_char.

Referenced by setup_elsa().

static u_char readreg unsigned int  ale,
unsigned int  adr,
u_char  off
[inline, static]
 

Definition at line 146 of file elsa.c.

References bytein, byteout, cli, restore_flags, ret, save_flags, and u_char.

void release_io_elsa struct IsdnCardState *  cs  ) 
 

Definition at line 449 of file elsa.c.

References byteout, clear_arcofi(), del_timer(), ELSA_PCF, ELSA_PCFPRO, ELSA_PCMCIA_IPAC, ELSA_QS1000PCI, ELSA_QS3000, ELSA_QS3000PCI, IPAC_ATX, release_modem(), release_region, writereg, x01, x03, x80, and xff.

Referenced by Elsa_card_msg(), and setup_elsa().

Here is the call graph for this function:

static void reset_elsa struct IsdnCardState *  cs  )  [static]
 

Definition at line 487 of file elsa.c.

References byteout, ELSA_ISDN_RESET, ELSA_PCMCIA_IPAC, ELSA_QS1000PCI, ELSA_QS3000PCI, HZ, IPAC_ACFG, IPAC_AOE, IPAC_ATX, IPAC_MASK, IPAC_PCFG, IPAC_POTA2, restore_flags, save_flags, schedule_timeout, set_current_state, sti, TASK_UNINTERRUPTIBLE, TimerRun(), writereg, x0, x00, x10, x20, x4, x41, x43, xc0, xf8, and xff.

Referenced by Elsa_card_msg(), and setup_elsa().

Here is the call graph for this function:

static void set_arcofi struct IsdnCardState *  cs,
int  bc
[static]
 

Definition at line 539 of file elsa.c.

References ARCOFI_COP_5, arcofi_fsm(), ARCOFI_START, and interruptible_sleep_on().

Referenced by modem_l2l1().

Here is the call graph for this function:

int setup_elsa struct IsdnCard *  card  ) 
 

Definition at line 868 of file elsa.c.

References bytein, byteout, CardType, check_region, dev_qs1000, dev_qs3000, ELSA_ALE, ELSA_ALE_PCM, ELSA_BAD_PWR, Elsa_card_msg(), ELSA_CONFIG, ELSA_CONTROL, ELSA_HSCX, ELSA_HW_RELEASE, elsa_interrupt(), elsa_interrupt_ipac(), ELSA_IRQ_IDX, ELSA_IRQ_IDX_PC, ELSA_IRQ_IDX_PCC8, ELSA_ISAC, ELSA_ISAC_PCM, ELSA_ITAC, elsa_led_handler(), ELSA_PC, ELSA_PCC16, ELSA_PCC8, ELSA_PCF, ELSA_PCFPRO, ELSA_PCMCIA, ELSA_PCMCIA_IPAC, ELSA_QS1000, ELSA_QS1000PCI, ELSA_QS3000PCI, Elsa_revision, ELSA_S0_POWER_BAD, ELSA_START_TIMER, ELSA_TRIG_IRQ, Elsa_Types, HiSax_getrev(), hscx_fill_fifo(), HscxVersion(), HZDELAY, init_arcofi(), init_timer(), IPAC_ID, ISACVersion(), ITAC_ISEN, ITAC_RFIE, ITAC_SCIE, ITAC_STIE, ITAC_SYS, ITAC_XFIE, ITACVer, KERN_ERR, KERN_INFO, KERN_WARNING, long, PCI_BASE_ADDRESS_IO_MASK, PCI_DEVICE_ID_ELSA_MICROLINK, PCI_DEVICE_ID_ELSA_QS3000, pci_enable_device, pci_find_device(), pci_present, PCI_VENDOR_ID_ELSA, printk, probe_elsa(), probe_elsa_adr(), ReadHSCX(), ReadISAC(), ReadISAC_IPAC(), ReadISACfifo(), ReadISACfifo_IPAC(), readit