The goal is to get a AVM ISDN Fritzcard passive working on Debian Linux Sarge and CAPI

Here are the details:


archive:~# uname -a
Linux archive 2.6.20.6 #2 Wed Apr 18 13:06:11 CEST 2007 i686 GNU/Linux

See below for 2.6.22+

archive:~# cat /etc/debian_version 
3.1
archive:~# 

archive:~# lspci -v -v -v | grep -A 10 AVM
0000:02:09.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
        Subsystem: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 20
        Region 0: Memory at feaffc00 (32-bit, non-prefetchable) [size=32]
        Region 1: I/O ports at dc00 [size=32]
        Capabilities: [40] Power Management version 2
        Flags: PMEClk- DSI- D1- D2+ AuxCurrent=55mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
        Status: D0 PME-Enable- DSel=0 DScale=0 PME-


And here is how I did it:


- Fetch the suse src rpm
- Extract it
- Patch it
- Build
- Copy kernel module into module directory
- depmod
- modprobe


The details as follow:


- Fetch the suse src rpm

archive:/usr/src# wget http://www.blagblagblag.org/pub/mirrors/atrpms/src/fc3-i386/atrpms/SRPMS.stable/fcpci-03.11.07-10.at.src.rpm

- Extract it

archive:/usr/src# rpm2cpio fcpci-03.11.07-10.at.src.rpm > fcpci-03.11.07-10.at.cpio
archive:/usr/src# cpio -i --make-directories < fcpci-03.11.07-10.at.cpio 
archive:/usr/src# mkdir fcpci
archive:/usr/src# cd fcpci
archive:/usr/src/fcpci# cpio -i --make-directories <  ../fcpci-03.11.07-10.at.cpio 
archive:/usr/src/fcpci# tar xzf fcpci-suse93-3.11-07.tar.gz 


- Patch it

Get the patch here:
http://134.93.168.49/~reiffert/fcpci-debian.diff


archive:/usr/src/fcpci/fritz# patch -p1 < ../fcpci-debian.diff
patching file src/driver.c
patching file src/driver.h
patching file src/main.c
patching file src/Makefile
patching file src/tools.h
archive:/usr/src/fcpci/fritz# 


- Build

archive:/usr/src/fcpci/fritz# make
make -C src
make[1]: Entering directory `/usr/src/fcpci/fritz/src'
make -C /lib/modules/2.6.20.6/build SUBDIRS=/usr/src/fcpci/fritz/src modules
make[2]: Entering directory `/home/users/thomas/kernel/kernel/archive/linux-2.6.20.6'
  CC [M]  /usr/src/fcpci/fritz/src/main.o
  CC [M]  /usr/src/fcpci/fritz/src/driver.o
/usr/src/fcpci/fritz/src/driver.c: In function `install_card':
/usr/src/fcpci/fritz/src/driver.c:383: warning: passing arg 2 of `request_irq' from incompatible pointer type
  CC [M]  /usr/src/fcpci/fritz/src/tools.o
  CC [M]  /usr/src/fcpci/fritz/src/tables.o
  CC [M]  /usr/src/fcpci/fritz/src/queue.o
  CC [M]  /usr/src/fcpci/fritz/src/lib.o
  LD [M]  /usr/src/fcpci/fritz/src/fcpci.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/fcpci/fritz/src/fcpci.mod.o
  LD [M]  /usr/src/fcpci/fritz/src/fcpci.ko
make[2]: Leaving directory `/home/users/thomas/kernel/kernel/archive/linux-2.6.20.6'
make[1]: Leaving directory `/usr/src/fcpci/fritz/src'
archive:/usr/src/fcpci/fritz# 

- Copy kernel module into module directory

archive:/usr/src/fcpci/fritz# cp src/fcpci.ko /lib/modules/2.6.20.6/kernel/

- depmod

archive:/usr/src/fcpci/fritz# depmod -ae

- modprobe

archive:/usr/src/fcpci/fritz# modprobe fcpci

Apr 18 14:11:41 archive kernel: fcpci: AVM FRITZ!Card PCI driver, revision 0.7.2
Apr 18 14:11:41 archive kernel: fcpci: (fcpci built on Apr 18 2007 at 14:10:58)
Apr 18 14:11:41 archive kernel: fcpci: -- 32 bit CAPI driver --
Apr 18 14:11:41 archive kernel: fcpci: AVM FRITZ!Card PCI found: port 0xdc00, irq 20
Apr 18 14:11:41 archive kernel: fcpci: Loading...
Apr 18 14:11:41 archive kernel: fcpci: Driver 'fcpci' attached to fcpci-stack. (152)
Apr 18 14:11:41 archive kernel: fcpci: Stack version 3.11-07
Apr 18 14:11:41 archive kernel: kcapi: Controller 1: fcpci-dc00-20 attached
Apr 18 14:11:41 archive kernel: kcapi: card 1 "fcpci-dc00-20" ready.
Apr 18 14:11:41 archive kernel: fcpci: Loaded.


Date: Tue, 10 Jul 2007 06:27:40 +0200
From: Bernd Knochenhauer 
To: xxxxx@xxxx.physik.uni-mainz.de
Subject: Fritzcard & 2.6.22

Hello Thomas,

The patch does not compile on Linux Kernel 2.6.22 anymore.

pci_module_init is deprecated.

Replace it by pci_register_driver:

fritz/src/main.c

#if defined (__fcpci__)
        /*      if (0 == (err = pci_module_init (&fcpci_driver))) { */
        if (0 == (err = pci_register_driver (&fcpci_driver))) {
                LOG("PCI driver registered.\n");


Thanks Bernd.