[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MC/R530 power management
桑名です。
おそくなってしまいました。
2000年05月30日(火) 18時35分頃、takemuraさんは書きました。
> このグラフは 3 つある A/D port から読める値をプロットしたもので
> しょうか?縦軸は port から読んだ値そのままですか?横軸は時間(時刻)
> ですよね? 23 時から 10 時ごろにとんでいるのはなぜ?(寝てた?)
そうです。
一分おきに値を読むようにしてほったらかしにしていました。
翌日の朝、落ちていたのでAC繋いでリブートして、
またほったらかしにしたため、その間時間が飛んでいます。
# 電源電圧低下時にDeadman's switchが効いてhaltしていたのかもしれません。
> MC/R530 で計測したものなのでしょうか。
> NetBSD/hpcmips 動作中に、NetBSD 自体で計測して log をとったもの
> ですか?
> (idle 状態とはいえ、23 時間動作したのならば結構たいしもの!?)
はい。こんな感じです。
カーネルの外から叩けるように、取りあえずwsmouseのIOCTL部に間借りして、
vrpiu_ioctl()にスキャン開始出来るように追加
275a276
> unsigned long mask_reg;
285,286c286,292
< printf("%s(%d): WSMOUSRIO_SRES is not supported",
< __FILE__, __LINE__);
---
> /* printf("%s(%d): WSMOUSRIO_SRES is not supported", __FILE__, __LINE__);*/
>
> mask_reg = vrpiu_read(sc, PIUAMSK_REG_W);
> mask_reg &= 0xff8f;
> vrpiu_write(sc, PIUAMSK_REG_W, mask_reg);
> vrpiu_write(sc, PIUASCN_REG_W, PIUACN_ADPSSTART);
>
と、してPIUACN_ADPSSTARTすると、
スキャン完了時に割り込みが上がってくるので、
値を読むようにvrpiu_intr()に追加
309a316
> unsigned int adin[3];
329a337,341
> if (intrstat & PIUINT_PADADPINTR) {
> for (i = 0; i < 3; i++)
> adin[i] = (unsigned long)vrpiu_read(sc, PIUAB(i));
> }
>
422a435,445
> }
>
> if (intrstat & PIUINT_PADADPINTR) {
> for (i = 0; i < 3; i++){
> if ( adin[i] & PIUAB_VALID){
> adin[i] &= PIUAB_PADDATA_MASK;
> } else {
> adin[i] = 0;
> }
> }
> printf("%d - %d - %d\n", adin[0], adin[1], adin[2]);
と、して読み取った値のもって行き場が解らないので、
printfしてsyslogに記録しました。