MK48TXX(4) | FreeBSD Kernel Interfaces Manual | MK48TXX(4) |
名称
mk48txx — Mostek 時刻クロックドライバ書式
#include < sys/eventhandler.h>#include < sys/lock.h>
#include < sys/mutex.h>
#include < dev/mk48txx/mk48txxvar.h>
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
device mk48txx
解説
mk48txx ドライバは、 Mostek の時刻クロックチップのシリーズモデルのためにバックエンド (back-end) です。それは、“clock
” KOBJ インタフェースで使用するために日時を検索して、設定するためのアクセス法を提供します。
このデバイスのインスタンスをシステムと結びつけるために、 mk48txx_attach() 関数と次のように定義されている mk48txx_softc 構造体を使用します:
int mk48txx_attach( device_t dev)
typedef uint8_t (*mk48txx_nvrd_t)(device_t dev, int off); typedef void (*mk48txx_nvwr_t)(device_t dev, int off, uint8_t v);
struct mk48txx_softc { struct resource sc_res; struct mtx sc_mtx; eventhandler_tag sc_wet; const char *sc_model; bus_size_t sc_nvramsz; bus_size_t sc_clkoffset; u_int sc_year0; u_int sc_flag; mk48txx_nvrd_t sc_nvrd; mk48txx_nvwr_t sc_nvwr; };
- sc_res
- デフォルトのアクセス法 (下記参照) を使用するとき、フロントエンドによって提供されなければならない、 (クロックレジスタを含む) チップの不揮発性のメモリにアクセスするのために使用されるバスリソースです。そうでなければ、このメンバは、オプションです。
- sc_mtx
- フロントエンドによって MTX_DEF で初期化されなければならない、 (クロックレジスタを含む) チップの不揮発性メモリにアクセスするとき使用されるハードウェアミューテックス。
- sc_wet
- チップによってサポートされ、マシン依存の機能の (下記参照) 一部として指定されるなら、 mk48txx_attach() 関数によって登録されるウォッチドック機能性のためのイベントハンドラタグ。
- sc_model
- このインスタンスが役に立つべきであるチップモデル。このメンバは、フロントエンドによって“mk48t02”, “mk48t08”, “mk48t18”または“mk48t59”の 1 つに設定されなければなりません。
- sc_nvramsz
- mk48txx_attach() 関数によって設定される、 Mostek チップの不揮発性 RAM のサイズ。
- sc_clkoffset
- mk48txx_attach() 関数によって設定される、 Mostek チップの制御レジスタへのオフセット。
- sc_year0
- フロントエンドによって設定されなければならない、クロックの‘year’カウンタと共に使用される year オフセット。一般的に、この値は、クロックデバイスがマウントされる、システム設定に依存します。例えば、 Sun Microsystems のマシンでは、仕様は、1968 年以来の年で表されるクロックの 2 桁の年があることです。
- sc_flag
-
このフラグは、マシン依存の機能を指定するために使用されます。次のフラグがサポートされています:
- MK48TXX_NO_CENT_ADJUST
-
“
clock_gettime() メソッド
”で検索された結果の日付が、1970 年 1 月 1 日より前であるなら、ドライバは、チップの年 (year) カウンタが 21 世紀の実際に 1 年を表すと仮定します。このフラグを設定することによって、この振る舞いを覆すことができ、 mk48txx ドライバは、代わりにクロックの世紀をビットを順守します。 - MK48TXX_WDOG_REGISTER
- このフラグが設定されるとき、 mk48txx ドライバは、特定のチップモデルによってサポートされているなら、 watchdog(9) で定義されたインタフェースを通してウォッチドックとして登録します。
- MK48TXX_WDOG_ENABLE_WDS
- このフラグが設定されるとき、 mk48txx ドライバは、チップのウォッチドックの機能を有効にするとき、ウォッチドック操縦 (WDS) ビットを設定します。利用可能な、 (WDS ビットに関する詳しい情報のためのチップ文書を参照してください)。
- sc_nvread
- sc_nvwrite
-
これらのメンバは、それぞれクロックデバイスレジスタを書き込み、読み込みのためのアクセスメソッドを指定します。
NULL がアクセスメソッドとして渡されるとき、デフォルトは、まるでそれらが指定されたバスリソースを使用して直接マップされているかのように、チップメモリ (とクロックレジスタ) にアクセスすることです。
そうでなければ、ドライバは、それぞれ、読み込まれるか、または書き込まれるチップメモリ (または、クロックレジスタ) 位置のオフセット off を渡して、アクセスを実行するためにフロントエンドによって供給されたそれぞれの関数を呼び出します。
ハードウェア
次のモデルが、サポートされています:
- Mostek MK48T02
- Mostek MK48T08
- Mostek MK48T18
- Mostek MK48T59
歴史
mk48txx ドライバは、 NetBSD 1.5 で登場しました。それを含む最初の FreeBSD バージョンは、 FreeBSD 5.0 でした。作者
mk48txx ドライバは、 <pk@NetBSD.org>によって NetBSD のために書かれました。それは、 <tmm@FreeBSD.org>によって FreeBSD に移植され、後で <marius@FreeBSD.org>によって改良されました。December 25, 2009 | FreeBSD |