[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: Platform ID
> | さしあたって問題なのは vrgiu の先です。
> | GIU には 1 bit のデータポートがいくつかあります。
> | あるビットはある機種では RS232C の PHY の電源の ON/OFF が割り当てられて
> | います。このビットは違う機種ではブザーや場合によってはシステムリセット
> | などに割り当てられているかも知れません。
> | 1bit しかないので、直接的な probe ほぼ不可能です。
>
> #ifdef `プラットフォーム`あるいはplatid_matchを、vr*.cに入れるのでなく、
楽というか easy だから良くないということですね。
特に NetBSD にはそぐわないかも知れません。
> vr*.cは、vr41x1に依存するものだけ、個々のマシンに依存にするものは、
> vr/platform/nec_mcr510.cとかに分離するようにして、vr*.cからは例えば
> vr_product_t->poweron()で呼ぶようにする方が見通しも、メンテナンス性も
> 高いように思うんですが...
> # alphaのstruct alpha_pci_chipsetみたいな感じで。
今はまだ無理ですが、ある程度開発が落ち着けば上記のようにする
ベきかも知れません。
hook をインストールするかしないかはプラットフォーム毎の
configuration file で静的にリンクしても良いのですが、
platform ID を使えば良いのではないでしょうか。
例えばこんなふうに:
nec_mcr510_match()
{
return platid_match(&platid, NEC_MCR_510) ? 1 : 0;
}
nec_mcr510_attach()
{
extern vr_product_t* vr_product_hook;
vr_product_hook->poweron = nec_mcr_510_poweron;
}
または configuration file で:
nec_mcrfiveoneO0 at vrgiu platform NEC_MCR_510
それとも:
vrgiu_attach()
{
config_attach( nec_mcrfiveoneO );
}
sada さんの示しているような vrgiubus 案もあります。
それから、giu の先だけでなく、vrip 自身の attach の時に
も platid を参照しようかと思っているのですが...
Takemrua