I/O ポートを持たない PCIe シリアル カードの設定

I/O ポートを持たない PCIe シリアル カードの設定

コマンドを使用して、Brainboxes PX-246 PCI express シリアル カードを /dev/ttyS.. デバイスに割り当てようとしていますsetserialが、このカードには I/O ポート アドレスがないようです (メモリ アドレスのみ)。

lspci -v次のような結果になります。

05:00.0 Serial controller: Brain Boxes Device 4016 (rev 02) (prog-if 06 [16950])
        Subsystem: Brain Boxes Device 4016
        Flags: fast devsel, IRQ 18
        Memory at f7600000 (32-bit, non-prefetchable) [size=16K]
        Memory at f7400000 (32-bit, non-prefetchable) [size=2M]
        Memory at f7200000 (32-bit, non-prefetchable) [size=2M]
        Capabilities: [40] Power Management version 3
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
        Capabilities: [100] Device Serial Number 00-30-e0-11-11-00-01-50
        Capabilities: [110] Power Budgeting <?>

I/O ポートではなくシリアル デバイスにメモリ アドレスを割り当てることは可能ですか?

現時点では、Ubuntu 16.04 でカードをテストしていますが、最終的には Fedora システムで使用される予定です。

ご協力いただければ幸いです。

答え1

OXPCIe952のデータシートは例えばここ3 ページには、5 ピンのハードウェア ストラップに応じて、チップをいくつかのモードで有効にできることが記載されています。

UART は、レガシー モード (I/O アドレス付き) とネイティブ モード (メモリ マップ、質問に示されている 3 つの BAR 付き) で使用できます。他の機能 (などの PCI デバイスなど) がない場合は05:00.105:00.2カードで 1 つのネイティブ UART (3 ページの表の 5 行目) が有効になっていることを意味します。また、13 ページで BAR の用途についても説明されています (興味がある場合)。推測したとおり、最初の BAR は UART のメモリ マップ I/O です。

確かに、このファイル8250_pci.cには、このチップのレガシー UART とネイティブ UART の両方の PCI ID が含まれています。そのため、まず最初に試すべきことは、このファイルに PCI ID を追加し、再コンパイルして、動作するかどうかを確認することです。

関連情報