| Dateiliste |

## Interface for new ISAC/HSCX based cards

    u_char ReadISAC(struct IsdnCardState *cs, u_char offset)

    	Returns the value of a ISAC Register

    void WriteISAC(struct IsdnCardState *cs, u_char offset, u_char value)

    	Write to a ISAC Register

    void ReadISACfifo(struct IsdnCardState *cs, u_char * data, int size)

    	Read size bytes from the ISAC fifo

    void WriteISACfifo(struct IsdnCardState *cs, u_char * data, int size)

    	Write size bytes to the ISAC fifo

    u_char ReadHSCX(struct IsdnCardState *cs, int hscx, u_char offset)

    	Returns the value of a HSCX Register

    void WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)

    	Write to a HSCX Register

    For fast interupt handling, here are some quick inline functions in
    "hscx_irq.c". These functions need the following macros for card specific
    routines.

    #define READHSCXFIFO(cs, nr, ptr, cnt)
    #define WRITEHSCXFIFO(cs, nr, ptr, cnt)

    void
    card_interrupt(int intno, void *dev_id, struct pt_regs *regs)

    this function is the main IRQ routine. It should contain tests and calls
    for the different IRQ sources (ISAC/HSCX and card specific sources)

    int card_msg(struct IsdnCardState *cs, int mt, void *arg)

    	This function controls various hardware related functions of the
            specific card. It have to return 0, if no fatal error occours.

    	the following values for mt are defined (* optional) :

    	CARD_RESET		- * reset the card
    	CARD_RELEASE		- release all card resources
    	CARD_SETIRQ             - set the irq function
    	CARD_INIT               - init components (eg. ISAC, HSCX) and
    				  should request at least one IRQ
    	CARD_TEST		- * make some HW checks

    	These values are for LED status monitoring on some cards:

    	(MDL_REMOVE | REQUEST)	- * action if a TEI is removed
    	(MDL_ASSIGN | REQUEST)	- * action if a TEI is assigned
    	MDL_INFO_SETUP		- * action if a incoming call is pending
    	MDL_INFO_CONN		- * action if a connection is activ
    	MDL_INFO_REL		- * action if a connection is released

    	CARD_AUX_IND 		- * This are for future extentions
    					(like a onboard modem)

    	if options are not implemented, it should return 0

    setup_card(struct IsdnCard *card)

    	This function is called first and has to allocate resources
    	(IO addresses, memory) for the card and should set these
    	basic functions of the IsdnCardState structure.

    	cs->BC_Read_Reg = &ReadHSCX;
    	cs->BC_Write_Reg = &WriteHSCX;
    	cs->BC_Send_Data = &hscx_fill_fifo;
    	cs->cardmsg = &card_msg;
    	cs->readisac = &ReadISAC;
    	cs->writeisac = &WriteISAC;
    	cs->readisacfifo = &ReadISACfifo;
    	cs->writeisacfifo = &WriteISACfifo;

    	if anything goes wrong, the function has to return 0.