スポンサーリンク

MATCD(4) FreeBSD/i386 カーネルインタフェースマニュアル MATCD(4)

名称

matcd − Matsushita (Panasonic) CD-ROM ドライバ

書式

controller matcd[0-4] at isa? port [?| addr]

/dev/[r]matcd[0-15][a|c]

/dev/[r]matcdl[0-15][a|c]

解説

matcd ドライバは、松下寿電子工業製の、または短縮して松下製の、CR-562-x 及 び CR-563-x CD-ROM ドライブを制御します。これら CD-ROM ドライブは Panasonic (松下の商標)、Creative Labs (omniCD)、Reveal などのブランドで販 売され、Tandy、AST、Packard Bell など多くのコンピュータに採用されていま す。

これらのドライブは、専用のホストインタフェースを通じて PC ISA バスに接続 します。このインタフェースはスタンドアロンの ISA カードとして存在すること もありますし、サウンドカード上に含まれていることもあります。

ドライバの設定

matcd ドライバは、それぞれが 4 台までのドライブをもつホストインタフェース を上限 4 つまでサポートします。オーディオ機能は全てのドライブで同時に実行 できるかもしれませんが、データ読み取り操作の対象は、どの瞬間においても 1 つのホストインタフェースに対して 1 つのドライブのみになります。

マルチホストインタフェースをサポートするためには、カーネルコンフィギュ レーションファイルのエントリを修正する必要があります。通常、このファイル はシステム上の /usr/src/sys/i386/conf/GENERIC に存在します。これをコピー してシステムの名前をつけると良いでしょう。この新しいファイルにシステムで サポートしたいデバイスを含め、逆に不要なデバイスのエントリは削除します。

このファイルには以下のようなエントリが見つかるでしょう:

controller matcd0 at isa? port ? bio

2 つのホストインタフェースをサポートするためには、以下のように変更します:

controller matcd0 at isa? port ? bio

controller matcd1 at isa? port ? bio

(3 つ、あるいは 4 つまでホストインタフェースをサポートさせたい場合、同様 にエントリを追加してください。)

ホストインタフェースが 1 つのみで 4 台までのドライブをサポートする場合、 カーネルコンフィギュレーションの修正は不要であることに注意してください。 2 つ目のインタフェースを追加するまで、1 つめのインタフェース上で必ずしも 4 台のドライブを持たなくてかまいません。

デフォルトでは、 matcd は Creative ホストアダプタ (options.h 参照) の既知 の I/O ポートテーブルを用いて CD-ROM ホストアダプタを探索します。これは非 常に柔軟ですが、 matcd がチェックした CD-ROM ホストインタフェースの I/O ポートに、システムの他のデバイスが存在するときに問題を起こします。さら に、複数の位置を検索する必要があるため、ブートプロセスに時間がかかる原因 となります。

これらの問題は、CD-ROM ホストインタフェースの位置を明示することによって解 決することができます。例えば、デフォルトのほとんどの Sound Blaster カード は I/O ポート 0x230 の位置に松下 CD-ROM ホストインタフェースを持っていま す。 (これはカード上のオーディオ機能に 0x10 を加えた I/O ポートの値で す。) システムがこのような場合、カーネルブートプロンプトにおいて、 -c オ プションを用いることによりカーネルがハードウェアを検出する位置を変更でき ます。こうしてカーネルをロードすると、それに含まれるあらゆるデバイスの設 定を変更する機会を得ることができます。例えば、 matcd アダプタ 0 に対する I/O ポートを変更するには以下のように記述すれば良いでしょう。

config> port matcd0c 0x340

カーネルをリコンパイルするなら、カーネルコンフィギュレーションファイルの エントリを以下のように変更して特定のアドレスを指定することができます:

controller matcd0 at isa? port 0x230 bio

このように変更すると matcd ドライバは最初の CD-ROM ホストインタフェースの ために I/O ポート 0x230 のみを探索し、他の I/O ポートは妨げません。

カーネルコンフィギュレーションファイルの調整が完了したら、カーネルを設 定、リコンパイル、及びインストールします。そして変更した個所を有効にする ために再起動する必要があります。

サポートされているハードウェア

現在、 matcd ドライバで動作するドライブは、2 つが知られているだけです:

             松下 CR-562-x

松下 CR-563-x
たいていの再販業者はこれらにもともとついていたマーキングをそのままにして あり、ラベルは FCC, VDE, CSA, RU などの認定証がついています。

これらのドライブは両方とも駆動ドレイがついています。オリジナルをカスタマ イズされた製品も出回っていて、ボリュームコントロールやヘッドフォンジャッ クがついていないもの (Tandy コンピュータにみられるかもしれません) がある かも知れませんが、これも matcd ドライバで動作します。

松下 CR-522-x 及び CR-523-x CD-ROM ドライブは matcd を利用できません。 CR-522 及び CR-523 は CD キャディを必要とするので正面から識別することもで きます。

IDE インタフェースをもつドライブは、IDE ドライバを使わなければなりませ ん。

TEAC CD-55 4X CD-ROM ドライブは Creative/Panasonic インタフェースも使って いますが、TEAC のドライブは松下 CR-56x ドライブと互換ではありません。 TEAC のドライブは matcd ドライバでは利用できません。

Panasonic ドライブ用のホストインタフェースアダプタの出所で最も一般的なの は、SoundBlaster サウンドカードを含む Creative Labs 製品に見られます。 SoundBlaster サウンドカードには多数のモデルが存在し、ほとんどの最新のカー ドは適当なインタフェースを提供しますが、"Creative/Panasonic" インタフェー スとラベルづけられていることもあります。

以下のホストインタフェースアダプタは matcd ドライバで動作することが知られ ています:
Creative
Sound Blaster Pro (SBPRO) (CT1330A)
Creative
Sound Blaster 16 (CT1730)
Creative
Sound Blaster 16 - 廉価版 (CT1740)
Creative
OmniCD アップグレードキットアダプタカード - スタンドアロ ン CD (CT1810)
Creative
Sound Blaster 16 - 2 層、廉価版 (CT2230)
Creative
Sound Blaster 16 (Vibra16) - 2 層、単一チップ (CT2260)
Creative
Sound Blaster 16 Value (SB16) - 2 層、廉価版 (CT2770)
Creative
PhoneBlaster SB16 + Sierra 14.4K Voice/FAX/Data/Speakerphone モデム(CT3100)
Reveal
(SC400)

警告: これらサウンドカードには、敢えて Panasonic/Creative インタフェース を含まないように作られているものがあるので、モデルナンバに基づいて単独責 任で買う前に、ボードをチェックしましょう。

これは完全なリストで決してはありません。 Creative Labs および他のベンダ は、 Creative/Panasonic ドライブインタフェースの新しバージョンのサウンド カードをいつもリリースするからです。

Creative Labs アダプタに加えて、Media Vision, IBM, Lasermate アダプタで、 互換性があるアダプタもまたサポートされます。しかし、これらのアダプタは広 範囲にわたるI/Oポートアドレスを使いますので、これらのアダプタの位置決めを するためにドライバの再構成が必要です。

異なったホストインタフェースの実装を行っているメーカが存在することを理解 することが重要です。MS-DOSで Creative Labs 純正のドライバを用いても、どう しても通信できないボードがあるなら、 matcd はそのホストアダプタでは動作し ないかもしれません。

サポートされた操作

matcd ドライバは、ブロックアクセス及びキャラクタアクセスをサポートしま す。パーティション "a" は、データ CD から 2048 バイトのユーザデータブロッ クを返します。パーティション "c" は、オーディオ CD を含めてあらゆるタイプ の CD から全部で 2352 バイトのフレームを返します。(パーティション "c" は cd9660 ファイルシステムや他のファイルシステムエミュレータを用いて "マウン ト" できません。) 他にサポートされているパーティションはありません。

ドライブ上のデバイスが全てクローズされるまで、ドライブトレイがロックされ たままになるということを除き、 matcdl デバイスは通常の matcd デバイスと同 様に動作します。

matcd は CD-ROM オーディオに関連した機能やトレイ制御の機能を含む多くの ioctl() コマンドを受理します。コマンドは以下の通りです:

             DIOCGDINFO

ディスクラベルを取得します。
DIOCGDPART
パーティションを取得します。
DIOCWDINFO
アップデートディスクをセットします。
DIOCSDINFO
ディスクラベルをセットします。
CDIOCREADSUBCHANNEL
再生中のディスクの状態におけるサブチャネル 情報を取得します。
CDIOCREADTOCHEADER
コンテンツサマリのテーブルを読み取ります。
CDIOCREADTOCENTRYS
長さと他のトラック情報を読み取ります。
CDIOCPLAYTRACKS
あるトラック/インデックスから開始してあるト ラック/インデックスで終了するオーディオを演 奏します。
CDIOCPLAYMSF
特定の時刻オフセットから開始するオーディオ を演奏します。
CDIOCPAUSE
再生中のディスクを一時停止します。
CDIOCRESUME
一時停止したディスクの再生をレジュームしま す。ドライブが既に再生している場合には無視 されます。
CDIOCSTOP
再生中のディスクを停止します。
CDIOCEJECT
ディスクトレイをオープンします。
CDIOCCLOSE
ディスクトレイをクローズします。
CDIOCPREVENT
全てのデバイスがクローズされるか CDIOCALLOW ioctl が発行されるまで、ドライブドアをオー プンしようとする操作を阻止します。
CDIOCALLOW
ドライブドアがロックされていれば解除しま す。この ioctl は何らかのロックされたデバイ スがオープンしていれば拒否されます。
CDIOCGETVOL
ドライブにセットされたボリュームを返しま す。
CDIOCSETVOL
ドライブにセットされたボリュームをセットし ます。
CDIOCSETSTEREO
このコマンドにより左チャネルのオーディオを 左チャネルの出力に送り、右チャネルのオー ディオを右チャネルの出力に送ります。これは デフォルトの状態です。
CDIOCSETMUTE
このコマンドによりオーディオ出力は停止しま す。ドライブはディスク上のオーディオを読み 続けますが、オーディオ出力が再会されるまで そのデータは破棄されます。
CDIOCSETLEFT
このコマンドにより左のチャネルのオーディオ は左右のチャネルの出力に送られます。
CDIOCSETRIGHT
このコマンドにより右のチャネルのオーディオ は左右のチャネルの出力に送られます。
CDIOCSETPATCH
指定されるビットマップに従い、オーディオを ルーティングします。
CDIOCSETPITCH
このコマンドはオーディオの再生速度を増減し ます (カラオケのときなど)。
CDIOCCAPABILITY
ドライブとドライバの性能をレポートします。

matcd ドライバは上述のように定義された ioctl() コマンドのみをサポートしま す。

関連ファイル

       /dev/[r]matcd0a /dev/[r]matcdl0a

CD-ROM ディスク上の 2048 バイトブロック データにアクセスするときに使用します。 これは モード 1 フォーム 1 フォーマット で記録されたものです。
/dev/[r]matcd0c /dev/[r]matcdl0c
CD-ROM ディスク上の 2352 バイトフレーム に任意のフォーマットで記録されたデータ にアクセスするときに使用します。
/usr/src/sys/i386/isa/matcd/*
matcd
用のソースコードとコンパイラオプ ションです。

options.h ファイルには全てのコンパイルオプションが書かれています。デフォ ルトでは ドライバは FreeBSD の current バージョンで動作するように設定され ています。

ドライブが割り込みもしくは DMA を利用することができても、 Creative/Panasonic インタフェース上でこれらを利用することはできません。

1 つ以上のパーティションがオープンしているにも関わらず、ディスクトレイが オープンしているならば、ドライブ上の全てのパーティションに対するこれ以上 の I/O は全てのパーティションがクローズするまで拒否されます。

物理ドライブ 0 として割り当てられる各々のホストインタフェース上にはドライ ブが存在していなければなりません。もしそうでない場合、ドライバはホストイ ンタフェースあるいは接続されたドライブを 1 つも見つけることができないで しょう。

第 2 のホストインタフェース開始のドライブは、論理ドライブ 4-7 (第 3 のイ ンタフェースの 8-11 と第 4 の 12-15) とみなされます。

最初のホストインタフェースにいくつのドライブが存在しているかに関わりな く、 2 番目のホストインタフェース上の最初のドライブは論理ドライブ 4 にな ります。

ホストインタフェースはカーネルコンフィギュレーションファイルに宣言された 順番か、カーネルコンフィギュレーションファイルでポートアドレスに "?" を 用いたならばそれが見つかった順番に番号を割り振られます。ホストインタ フェースの番号は常に切目なく連続しています。

関連項目

/usr/include/sys/cdio.h

作者

ドライバとドキュメントは Frank Durda IV が書きました。
Program and Documentation are Copyright 1994, 1995, All rights reserved.

歴史

matcd ドライバは FreeBSD 2.0.5 において登場しました。

FreeBSD 2.0.5 September 24, 1995 FreeBSD 2.0.5

スポンサーリンク