[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に記録しました。