/* $Id: xdi_adapter.h,v 1.7 2004/03/21 17:26:01 armin Exp $ */ #ifndef __DIVA_OS_XDI_ADAPTER_H__ #define __DIVA_OS_XDI_ADAPTER_H__ #define DIVAS_XDI_ADAPTER_BUS_PCI 0 #define DIVAS_XDI_ADAPTER_BUS_ISA 1 typedef struct _divas_pci_card_resources { byte bus; byte func; void *hdev; dword bar[8]; /* contains context of appropriate BAR Register */ void __iomem *addr[8]; /* same bar, but mapped into memory */ dword length[8]; /* bar length */ int mem_type_id[MAX_MEM_TYPE]; unsigned int qoffset; byte irq; } divas_pci_card_resources_t; typedef union _divas_card_resources { divas_pci_card_resources_t pci; } divas_card_resources_t; struct _diva_os_xdi_adapter; typedef int (*diva_init_card_proc_t) (struct _diva_os_xdi_adapter * a); typedef int (*diva_cmd_card_proc_t) (struct _diva_os_xdi_adapter * a, diva_xdi_um_cfg_cmd_t * data, int length); typedef void (*diva_xdi_clear_interrupts_proc_t) (struct _diva_os_xdi_adapter *); #define DIVA_XDI_MBOX_BUSY 1 #define DIVA_XDI_MBOX_WAIT_XLOG 2 typedef struct _xdi_mbox_t { dword status; diva_xdi_um_cfg_cmd_data_t cmd_data; dword data_length; void *data; } xdi_mbox_t; typedef struct _diva_os_idi_adapter_interface { diva_init_card_proc_t cleanup_adapter_proc; diva_cmd_card_proc_t cmd_proc; } diva_os_idi_adapter_interface_t; typedef struct _diva_os_xdi_adapter { struct list_head link; int CardIndex; int CardOrdinal; int controller; /* number of this controller */ int Bus; /* PCI, ISA, ... */ divas_card_resources_t resources; char port_name[24]; ISDN_ADAPTER xdi_adapter; xdi_mbox_t xdi_mbox; diva_os_idi_adapter_interface_t interface; struct _diva_os_xdi_adapter *slave_adapters[3]; void *slave_list; void *proc_adapter_dir; /* adapterX proc entry */ void *proc_info; /* info proc entry */ void *proc_grp_opt; /* group_optimization */ void *proc_d_l1_down; /* dynamic_l1_down */ volatile diva_xdi_clear_interrupts_proc_t clear_interrupts_proc; dword dsp_mask; } diva_os_xdi_adapter_t; #endif