既にお持ちの Linux-2.2 用のデバイスドライバを、 お客様がご自分で Linux-2.4 用に移植するための要点をメモしておきます。
インクルードファイルとして、下記を追加します。
#include <linux/init.h> #include <linux/devfs_fs_kernel.h>
ファイル操作構造体を下記のように書き換えます。
 static struct file_operations xx_fops = {
   NULL,               /* lseek */
   xx_read,            /* read */
   xx_write,           /* write */
   NULL,               /* readdir */
   NULL,               /* select */
   xx_ioctl,           /* ioctl */
   NULL,               /* mmap */
   xx_open,            /* open */
   NULL,               /* flush */
   xx_close,           /* close */
   NULL,               /* fsync */
   NULL,               /* faync */
   NULL,               /* check_media_change */
   NULL                 /* revalidate */
 };
から
 static struct file_operations gb_fops = {
   owner:              THIS_MODULE,
   read:               xx_read,
   write:              xx_write,
   ioctl:              xx_ioctl,
   open:               xx_open,
   release:            xx_close,
 };
Linux の流儀に合わせるため、close を release に書き換えるほうが良いかも
しれません。
struct wait_queue *sc_wait_q; .. interruptible_sleep_on(&sc->sc_wait_q); .. wake_up_interruptible(&sc->sc_wait_q);といったメカニズムで使われる wait_queue を下記のように変更します。
wait_queue_head_t sc_wait; .. interruptible_sleep_on(&sc->sc_wait); .. wake_up_interruptible(&sc->sc_wait);
デバイスドライバの初期化ルーチン xx_init() で、下記のようにウェイトキューを 初期化します。
init_waitqueue_head(&sc->sc_wait);
とりあえずは、これで動作しますが、キャラクタ・デバイスの登録の仕方が変わりつつ ありますので、ついでに下記のように変更するほうが良いでしょう。
xx_init() で行っていたキャラクタ・デバイスの登録
  if (register_chrdev(XX_MAJOR, "xx", &xx_fops)) {
	..
  }
を削除して、新たに追加する関数 init_xx() で次のように登録します。
  int __init init_xx(void)
  {
    if (devfs_register_chrdev(XX_MAJOR, "xx", &xx_fops)) {
          printk("xx: unable to get major %d\n", XX_MAJOR);
          return -EIO;
    }
  }
/usr/src/linux/init/main.c で下記のようにデバイスドライバを初期化します。
#ifdef CONFIG_XX
extern void init_xx(void);
#endif
..
#ifdef CONFIG_XX
      init_xx();
#endif
2.4 kernel から PCMCIA の kernel driver のサポートが始まりましたが、 まだ完全なサポートには長い道のりが必要で、その状況は
http://pcmcia-cs.sourceforge.net/の「A discussion of PCMCIA in the 2.4 kernel series」を見てください。
現状では、kernel の「CONFIG_PCMCIA」を y(es) にしないようにして、 PCMCIA のサポートのすべてを今までどおり pcmcia-cs package に任せ、 ドライバを上記のように書き換えて使うのが良いと思います。