linux/drivers/isdn/hardware/mISDN/mISDNinfineon.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * mISDNinfineon.c
 *		Support for cards based on following Infineon ISDN chipsets
 *		- ISAC + HSCX
 *		- IPAC and IPAC-X
 *		- ISAC-SX + HSCX
 *
 * Supported cards:
 *		- Dialogic Diva 2.0
 *		- Dialogic Diva 2.0U
 *		- Dialogic Diva 2.01
 *		- Dialogic Diva 2.02
 *		- Sedlbauer Speedwin
 *		- HST Saphir3
 *		- Develo (former ELSA) Microlink PCI (Quickstep 1000)
 *		- Develo (former ELSA) Quickstep 3000
 *		- Berkom Scitel BRIX Quadro
 *		- Dr.Neuhaus (Sagem) Niccy
 *
 * Author       Karsten Keil <[email protected]>
 *
 * Copyright 2009  by Karsten Keil <[email protected]>
 */

#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/mISDNhw.h>
#include <linux/slab.h>
#include "ipac.h"

#define INFINEON_REV

static int inf_cnt;
static u32 debug;
static u32 irqloops =;

enum inf_types {};

enum addr_mode {};

struct inf_cinfo {};

struct _ioaddr {};

struct _iohandle {};

struct inf_hw {};


#define PCI_SUBVENDOR_HST_SAPHIR3
#define PCI_SUBVENDOR_SEDLBAUER_PCI
#define PCI_SUB_ID_SEDLBAUER

static struct pci_device_id infineon_ids[] =;
MODULE_DEVICE_TABLE(pci, infineon_ids);

/* PCI interface specific defines */
/* Diva 2.0/2.0U */
#define DIVA_HSCX_PORT
#define DIVA_HSCX_ALE
#define DIVA_ISAC_PORT
#define DIVA_ISAC_ALE
#define DIVA_PCI_CTRL

/* DIVA_PCI_CTRL bits */
#define DIVA_IRQ_BIT
#define DIVA_RESET_BIT
#define DIVA_EEPROM_CLK
#define DIVA_LED_A
#define DIVA_LED_B
#define DIVA_IRQ_CLR

/* Diva 2.01/2.02 */
/* Siemens PITA */
#define PITA_ICR_REG
#define PITA_INT0_STATUS

#define PITA_MISC_REG
#define PITA_PARA_SOFTRESET
#define PITA_SER_SOFTRESET
#define PITA_PARA_MPX_MODE
#define PITA_INT0_ENABLE

/* TIGER 100 Registers */
#define TIGER_RESET_ADDR
#define TIGER_EXTERN_RESET
#define TIGER_AUX_CTRL
#define TIGER_AUX_DATA
#define TIGER_AUX_IRQMASK
#define TIGER_AUX_STATUS

/* Tiger AUX BITs */
#define TIGER_IOMASK
#define TIGER_IRQ_BIT

#define TIGER_IPAC_ALE
#define TIGER_IPAC_PORT

/* ELSA (now Develo) PCI cards */
#define ELSA_IRQ_ADDR
#define ELSA_IRQ_MASK
#define QS1000_IRQ_OFF
#define QS3000_IRQ_OFF
#define QS1000_IRQ_ON
#define QS3000_IRQ_ON

/* Dr Neuhaus/Sagem Niccy */
#define NICCY_ISAC_PORT
#define NICCY_HSCX_PORT
#define NICCY_ISAC_ALE
#define NICCY_HSCX_ALE

#define NICCY_IRQ_CTRL_REG
#define NICCY_IRQ_ENABLE
#define NICCY_IRQ_DISABLE
#define NICCY_IRQ_BIT


/* Scitel PLX */
#define SCT_PLX_IRQ_ADDR
#define SCT_PLX_RESET_ADDR
#define SCT_PLX_IRQ_ENABLE
#define SCT_PLX_RESET_BIT

/* Gazel */
#define GAZEL_IPAC_DATA_PORT
/* Gazel PLX */
#define GAZEL_CNTRL
#define GAZEL_RESET
#define GAZEL_RESET_9050
#define GAZEL_INCSR
#define GAZEL_ISAC_EN
#define GAZEL_INT_ISAC
#define GAZEL_HSCX_EN
#define GAZEL_INT_HSCX
#define GAZEL_PCI_EN
#define GAZEL_IPAC_EN


static LIST_HEAD(Cards);
static DEFINE_RWLOCK(card_lock); /* protect Cards */

static void
_set_debug(struct inf_hw *card)
{}

static int
set_debug(const char *val, const struct kernel_param *kp)
{}

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_VERSION();
module_param_call();
MODULE_PARM_DESC();
module_param(irqloops, uint, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC();

/* Interface functions */

IOFUNC_IO()
IOFUNC_IO()
IOFUNC_IND()
IOFUNC_IND()
IOFUNC_MEMIO()
IOFUNC_MEMIO()

static irqreturn_t
diva_irq(int intno, void *dev_id)
{}

static irqreturn_t
diva20x_irq(int intno, void *dev_id)
{}

static irqreturn_t
tiger_irq(int intno, void *dev_id)
{}

static irqreturn_t
elsa_irq(int intno, void *dev_id)
{}

static irqreturn_t
niccy_irq(int intno, void *dev_id)
{}

static irqreturn_t
gazel_irq(int intno, void *dev_id)
{}

static irqreturn_t
ipac_irq(int intno, void *dev_id)
{}

static void
enable_hwirq(struct inf_hw *hw)
{}

static void
disable_hwirq(struct inf_hw *hw)
{}

static void
ipac_chip_reset(struct inf_hw *hw)
{}

static void
reset_inf(struct inf_hw *hw)
{}

static int
inf_ctrl(struct inf_hw *hw, u32 cmd, u_long arg)
{}

static int
init_irq(struct inf_hw *hw)
{}

static void
release_io(struct inf_hw *hw)
{}

static int
setup_io(struct inf_hw *hw)
{}

static void
release_card(struct inf_hw *card) {}

static int
setup_instance(struct inf_hw *card)
{}

static const struct inf_cinfo inf_card_info[] =;

static const struct inf_cinfo *
get_card_info(enum inf_types typ)
{}

static int
inf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{}

static void
inf_remove(struct pci_dev *pdev)
{}

static struct pci_driver infineon_driver =;

static int __init
infineon_init(void)
{}

static void __exit
infineon_cleanup(void)
{}

module_init();
module_exit(infineon_cleanup);