>>10
ハードは専門家ではないのでなんとなくで聞いてほしいのですが
まずハードの仕様を決めて、その後プログラムからアクセス出来るように制御フロー(入出力)を定義します
メーカー側が両方作る場合は両方の仕様が分かるため、メーカー内の調整(話し合い)等出来るので柔軟に作れます
ハードの仕様として制御フローが公開されている場合は、それに沿ってドライバが作れたりします
ハードの仕様が非公開の場合は諦めるか、Windowsドライバの動作をトレース(や想像)してなんとか動かしたりします

アースソフトのPT3の場合は、WindowsドライバとWindows SDKから動作を想定して有志の人達がドライバを公開してくれました
PT3はFPGA回路でハードの挙動を変えられる(この部分がファームウェア?)ので正確な制御フローを知っているのは
アースソフトの人だけ(もしくは逆アセンブル等で解析した人々)となります
なので
PT3を初期化して使えるようにする命令を出す(タイムアウト時間も設定)→時間内に初期化出来たら成功、だめなら失敗→次の命令
というような仕様ならよいのですが、
どうも、初期化命令を出す→すぐ成功命令が返る→次の命令(例えばデバイス設定等)を出す→(初期化が成功してないので)失敗→初期化リトライ
だったりすると、こんなログが出るような動作になるのかな?と想定できます

単なるデバッグログなので、
pt3_i2c.c:80行:PT3_PRINTK(0, KERN_DEBUG, "fail i2c run_code status 0x%x\n", data);
pt3_pci.c:430行:PT3_PRINTK(0, KERN_INFO, "retry init_tuner\n");
の部分を PT3_PRINTK(7, KERN_DEBUG, にしてやれば出なくなると思います。たぶん…