[top index] [linux-memo]

Adaptec 1480B (CardBus scsi) with kernel-2.4.x

Index

  1. Adaptec 1480B Spec
  2. Status on Linux
  3. 動作に必要なパッケージ
  4. Connected devices
  5. Problem

Contents

  1. Adaptec 1480B Spec [back to Index]

    $ sudo cardctl ident
    Socket 0:
      product info: "Adaptec", "APA-1480 SCSI Host Adapter", "Version 1.10     ",""
      manfid: 0x012f, 0xcb01
      function: 8 (SCSI)
      PCI id: 0x9004, 0x6075
    	    
    Maker:
    Adaptec http://www.adaptec.co.jp/
    Product:
    SlimSCSI 1480B
    Bus type:
    CardBus
    Transfer:
    Busmaster (DMA)
    SCSI Controller
    AIC-7860
    SCSI BIOS ROM
    None
    SCSI Protocol
    SCSI-3 (Ultra SCSI)
    Max data transfer:
    20MB/sec
    Max connect:
    7 (3, Ultra)
  2. Status on Linux [back to Index]

    2.2.x カーネルの時には、apa1480.cb というモジュールを作って使えました(使ってました)。

    しかし、kernel が 2.4.x になって(2.4.19 あたりからか?)、 このカードが動かなくなり調べたところ、aic7xxx に統合されたようです。 また、注意点として、pcmcia-source パッケージ(PCMCIA module 用ソース)とバッティングするようで、 pcmcia-source を入れずに、全て 2.4 系カーネル同梱の物を使うようです。

    このあたりは、ソースを当たって下さい。Debian の場合だと、
    file:///usr/src/kernel-source-2.4.20/drivers/scsi/aic7xxx/ あたり、
    また、もし、pcmcia-source のソースを持っているなら、
    file:///usr/src/modules-pcmcia-cs-tree/README-2.4 あたり、
    を参考に。

    • Kernel 2.2.x -> apa1480
    • Kernel 2.4.x -> aic7xxx

    この aic7xxx というのは、PCI ドライバと共通の物で、 カードの扱いの枠組からして根本的に違うので、注意が必要です。

    keyword 的には、

    Kernel 2.2.x
    pcmcia-cs, cardmgr, cardbus, apa1480.cb
    Kernel 2.4.x
    pci_hotplug, acpi, hotplug, aic7xxx

    みたいな感じです。

    付属のドキュメント(README-2.4)を参照してわかったのですが、 pcmcia-source のモジュールではうまく扱えないようなので、 /usr/src/modules/ 以下から pcmcia-cs のソースを消します。

    # apt-get remove --purge pcmcia-source
    		

    その上で、カーネル側ドライバで、必要な物を用意する事にします。

    hotplug を扱う為には、murasaki もしくは、 hotplug, hotplug-utils を用意しておきます。 今回は、hotplug の方を使ってみました。(特に理由はありません)

    カーネルを再構築する際に指定したオプションのポイント(抜粋)
    pci_hotplug, acpi 関係(?), aic7xxx は必須と思われます。 あとは、必要な(必要となるかも知れない)ドライバなどを忘れずに。
    • CONFIG_EXPERIMENTAL=y
    • CONFIG_PCI=y
    • CONFIG_HOTPLUG=y
    • CONFIG_PCMCIA=m
    • CONFIG_HOTPLUG_PCI_ACPI=m (?)
    • CONFIG_ACPI=y
    • CONFIG_ACPI_DEBUG=y
    • CONFIG_ACPI_BUSMGR=y
    • CONFIG_ACPI_SYS=y
    • CONFIG_ACPI_CPU=y
    • CONFIG_ACPI_BUTTON=y
    • CONFIG_ACPI_AC=y
    • CONFIG_ACPI_EC=y
    • CONFIG_ACPI_CMBATT=y
    • CONFIG_ACPI_THERMAL=y
    • CONFIG_PNP=y
    • CONFIG_SCSI=y
    • CONFIG_CHR_DEV_SG=m
    • CONFIG_SCSI_AIC7XXX=m
    • CONFIG_AIC7XXX_CMOS_PER_DEVICE=253
    • CONFIG_AIC7XXX_RESET_DELEY_MS=10000
    • CONFIG_AIC7XXX_OLD=m
    • CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y
    • CONFIG_AIC7XXX_OLD_CMODS_PER_DEVICE=8
    • CONFIG_AIC7XXX_OLD_PROC_STATS=y
    • CONFIG_VORTEX=m
    • CONFIG_NET_PCI=y
    • CONFIG_NET_PCMCIA=y
    • CONFIG_PCMCIA_3C574=m
    • CONFIG_PCMCIA_PCNET=m
    • CONFIG_PROC_FS=y
    • CONFIG_DEVFS_FS=y
    • CONFIG_USB_UHCI=y
    • CONFIG_USB_HID=m
    • CONFIG_USB_HIDINPUT=y
    • CONFIG_USB_HIDDEV=y
    • [...]
    # cd /usr/src/kernel-source-2.4.20
    # make menuconfig
    # make-kpkg clean
    # make-kpkg --revision soleil.1.0 kernel_image
    # make-kpkg modules_image
    # cd ../
    # dpkg -i kernel-image-2.4.20_soleil.1.0_i386.deb [...]
    	      
  3. 動作に必要なパッケージ [back to Index]

    • acpid
    • hotplug
    • hotplug-utils
    • (murasaki)

    で、今までのように cardctl eject とかせずに、いきなり抜き差しで良いみたいです。^^;;;

    なんかおっかないですが。^^;;

    pcmcia-cs パッケージの cardmgr も動いていて、 次にあげるカードをいきなり抜き差しして使える事を確認しています。

    • COREGA PCC-TXF (pcnet-cs) [pcmcia] <network>
    • CISCO AIRONET 340 (airo) [pcmcia] <network>
    • 3com 3CXFE575CT (3c59x) [Cardbus] <network>
    • ADAPTEC SlimSCSI 1480B (aic7xxx) [Cardbus] <scsi>

    Cardbus なカードを差すと、lspci で見えるんですね。^^;; なるほど... pci_hotplug ってこういう事か って妙に納得したりしてます。

    たとえば 3com の 3CCFE575CT の場合、

    02:00.0 Ethernet controller: 3Com Corporation 3CCFE575CT Cyclone CardBus (rev 10)
            Subsystem: 3Com Corporation FE575C-3Com 10/100 LAN CardBus-Fast Ethernet
            Flags: bus master, medium devsel, latency 64, IRQ 9
            I/O ports at 4000 [size=128]
            Memory at 10800000 (32-bit, non-prefetchable) [size=128]
            Memory at 10800080 (32-bit, non-prefetchable) [size=128]
            Expansion ROM at 10400000 [size=128K]
            Capabilities: <available only to root>
    	      

    で、今回のターゲット APA 1480 の場合、

    02:00.0 SCSI storage controller: Adaptec AIC-1480 / APA-1480 (rev 03)
            Subsystem: Adaptec AIC-1480 / APA-1480 Cardbus
            Flags: medium devsel, IRQ 9
            I/O ports at 4000 [size=256]
            Memory at 10800000 (32-bit, non-prefetchable) [size=4K]
            Expansion ROM at 10400000 [size=64K]
            Capabilities: [dc] Power Management version 1
    	      

    のように見えます。

  4. Connected devices [back to Index]

    現在、この APA-1480B の先につながっているのは、EPSON GT-7600S というスキャナで、 sg モジュールで使えます。

    一応、オプション品の透過原稿ユニットも使えていて、gimp1.2, 1.3 + xsane プラグインで、 ポジフィルムを読み込み、処理しています。

    GT-7600S の電源を入れた状態で、 APA-1480B を差し込んだ時の /var/log/messages は次のようになります。

     kernel: cs: cb_alloc(bus 2): vendor 0x9004, device 0x6075
     kernel: PCI: Enabling device 02:00.0 (0000 -> 0003)
     kernel: ahc_pci:2:0:0: Host Adapter Bios disabled.  Using default SCSI device parameters
     kernel: scsi2 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.8
     kernel:         <Adaptec 1480A Ultra SCSI adapter>
     kernel:         aic7860: Ultra Single Channel A, SCSI Id=7, 3/253 SCBs
     kernel: 
     kernel:   Vendor: EPSON     Model: SCANNER GT-7600   Rev: 1.03
     kernel:   Type:   Processor                          ANSI SCSI revision: 02
    
    	      

    なお、SCSI 機器の probe には少し時間が必要なようで、 "瞬時に" という訳にはいかないようです。

  5. Problem [back to Index]

    カードを外した時に、aic7xxx が残ってしまい、 再度カードを差した時に、scanner がうまく見つけられない時があります。

    設定ミスの可能性が高いが、どうすればカードを外した時に aic7xxx も外れるのか、 再度差した時に scanner の probe がうまくいくのか、調べる必要がある状態です。

    このあたり、何かご存知の方がおられましたら教えて下さい。_o_


[top index] [linux-memo] [Page TOP]

My X-Face (-;
Shinichiro HIDA
Last modified: Tue May 27 13:46:42 JST 2003
Valid XHTML1.1!