PCIe(PCI Express)しかない環境でPT2を無理矢理使ってChinachu Gamma+Mirakurun
PCのリフレッシュに伴ってPCIのないマザーボードを購入してしまったので、PT2が使えなくなってしまった。なんとかUbuntuでも使い、PT2を認識させ、Chinachu Gamma + Mirakurunが出来ないかと探ったら、出来たのでご紹介。
なぜにPT2?
PT3があるのになぜにPT2かって?PT3とPT2の中古価格が全然違うからです。
PT3もPT2も生産終了。PT3なんかは2-3万円にまで値上がりしている一方で、PT2はソフマップなどでも5,000円程度で販売されている。予備としてストックしておく分には、恒久的にPT2が使えるのであればPT2でも良いかなと思ったのがきっかけ。
PCIe-> PCI変換アダプタを使ってPT2を無理矢理使う
結論から言うと、下記の製品でPCIe(PCI Express)をPCIに無理矢理変換し、PT2をUbuntuで認識させることが出来た。
PCIe->PCI変換ボードを取り付けてみる
ただしこいつは外付けが前提である。
PCIeのスロットにUSB3.0と3ピンの電源アダプタがくっついており、付属のUSBケーブルと3ピン電源ケーブルで外付けのユニットに接続、外付けのユニットにはPCIが2スロットついている、という構成。
少し見づらいが、こんな感じになった。
Ubuntu 16.04では特に何もしなくても認識した。
02:00.0PCIbridge:PericomSemiconductorDevicee113(prog-if00[Normaldecode])Flags:busmaster,fastdevsel,latency0,IRQ16Bus:primary=02,secondary=03,subordinate=03,sec-latency=64Memorybehindbridge:df100000-df1fffffCapabilities:[80]PCI-XbridgedeviceCapabilities:[90]PowerManagementversion3Capabilities:[a8]Subsystem:Device0000:0000Capabilities:[b0]ExpressPCI-ExpresstoPCI/PCI-XBridge,MSI00Capabilities:[f0]MSI:Enable-Count=1/1Maskable-64bit+Capabilities:[100]AdvancedErrorReportingCapabilities:[150]VirtualChannelKernelmodules:shpchp
PT2のドライバを作る
こちらも普通の手順で実施することが出来た。
下記の通りの手順でChinachuに対応するPT2ドライバを作ることが出来る。
$ hg clone http://hg.honeyplanet.jp/pt1.oyama/ PT2$cd ./PT2/driver$ vim pt1_pci.c
で、修正。
--- pt1_pci.c 2017-01-1201:04:19.813447674 +0900
+++ ../../driver/pt1_pci.c 2017-01-1121:48:02.844485030 +0900
@@ -9,8 +9,11 @@
#include <linux/pci.h> #include <linux/init.h> #include <linux/interrupt.h> -
+#include <linux/version.h> #include <asm/io.h>
+#if LINUX_VERSION_CODE >=KERNEL_VERSION(4,2,0)
+#include <linux/vmalloc.h> +#endif#include <asm/irq.h>#include <asm/uaccess.h>#include <linux/version.h>
@@ -400,13 +403,12 @@
channel->req_dma = FALSE ;
wake_up(&channel->ptr->dma_wait_q);
}
- mutex_unlock(&channel->ptr->lock);
/* send tuner to sleep */
set_sleepmode(channel->ptr->regs, &channel->lock,
channel->address, channel->type, TYPE_SLEEP);
schedule_timeout_interruptible(msecs_to_jiffies(50));
+ mutex_unlock(&channel->ptr->lock);
return0;
}
これでmake clean && make && sudo make installで終わり。
無事、Chinachu Gamma + MirakurunでもPT2が使用出来るようになります。
ディスカッション
コメント一覧
まだ、コメントがありません