#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/mISDNhw.h>
#include <linux/firmware.h>
#include "ipac.h"
#include "isar.h"
#define SPEEDFAX_REV …
#define PCI_SUBVENDOR_SPEEDFAX_PYRAMID …
#define PCI_SUBVENDOR_SPEEDFAX_PCI …
#define PCI_SUB_ID_SEDLBAUER …
#define SFAX_PCI_ADDR …
#define SFAX_PCI_ISAC …
#define SFAX_PCI_ISAR …
#define TIGER_RESET_ADDR …
#define TIGER_EXTERN_RESET_ON …
#define TIGER_EXTERN_RESET_OFF …
#define TIGER_AUX_CTRL …
#define TIGER_AUX_DATA …
#define TIGER_AUX_IRQMASK …
#define TIGER_AUX_STATUS …
#define SFAX_AUX_IOMASK …
#define SFAX_ISAR_RESET_BIT_OFF …
#define SFAX_ISAR_RESET_BIT_ON …
#define SFAX_TIGER_IRQ_BIT …
#define SFAX_LED1_BIT …
#define SFAX_LED2_BIT …
#define SFAX_PCI_RESET_ON …
#define SFAX_PCI_RESET_OFF …
static int sfax_cnt;
static u32 debug;
static u32 irqloops = …;
struct sfax_hw { … };
static LIST_HEAD(Cards);
static DEFINE_RWLOCK(card_lock);
static void
_set_debug(struct sfax_hw *card)
{ … }
static int
set_debug(const char *val, const struct kernel_param *kp)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…);
MODULE_FIRMWARE(…) …;
module_param_call(…);
MODULE_PARM_DESC(…) …;
module_param(irqloops, uint, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
IOFUNC_IND(…) …
IOFUNC_IND(…) …
static irqreturn_t
speedfax_irq(int intno, void *dev_id)
{ … }
static void
enable_hwirq(struct sfax_hw *sf)
{ … }
static void
disable_hwirq(struct sfax_hw *sf)
{ … }
static void
reset_speedfax(struct sfax_hw *sf)
{ … }
static int
sfax_ctrl(struct sfax_hw *sf, u32 cmd, u_long arg)
{ … }
static int
channel_ctrl(struct sfax_hw *sf, struct mISDN_ctrl_req *cq)
{ … }
static int
sfax_dctrl(struct mISDNchannel *ch, u32 cmd, void *arg)
{ … }
static int
init_card(struct sfax_hw *sf)
{ … }
static int
setup_speedfax(struct sfax_hw *sf)
{ … }
static void
release_card(struct sfax_hw *card) { … }
static int
setup_instance(struct sfax_hw *card)
{ … }
static int
sfaxpci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{ … }
static void
sfax_remove_pci(struct pci_dev *pdev)
{ … }
static struct pci_device_id sfaxpci_ids[] = …;
MODULE_DEVICE_TABLE(pci, sfaxpci_ids);
static struct pci_driver sfaxpci_driver = …;
static int __init
Speedfax_init(void)
{ … }
static void __exit
Speedfax_cleanup(void)
{ … }
module_init(…) …;
module_exit(Speedfax_cleanup);