[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cover close



濱嶋です。

>>> MQ200の修正はどうでしょうか?
>> 
>> こちらは問題が出ました。消している間にremoteからloginして画面を表示さ
>> せるようなことをすると何かが起こります。
>> MQ200_POWERSTATE_D1とMQ200_POWERSTATE_D2では表示しようとした瞬間にその
>> ままOSが固まってしまいました。
>> MQ200_POWERSTATE_D3ではvrpciuが"bad addr"とたくさん言います。考えてみ
>> ればそこにいるはずのMQ200が止まってしまったので当然なのですが。そうい
>> うことをした後にふたを開くと画面が崩れます。
> 
> それはLCDやバックライトを消す操作ではなく、MQ200を止める操作ですね。
> MQ200が止まった結果、LCDやバックライトが消えている状態なのですね。
> POWERSTATEはいじらない方が良さそうです。

MediaQのweb siteでMQ200のマニュアルが見つけられなかったので
mq200_hardpower()を真似ただけで、実際の動作は(予想はついているけど)理
解しないでやってます。

どなかたMQ200のマニュアルがまだ入手可能な場所を知っていたら教えてくだ
さい。

>>> あと、Vrc4173 PIU の修正はどうしましょうか?
>> 
>> 動作としては問題なく動いていますが、同一のバイナリで10bitと12bitを共存
>> させる方法がいまのところ思いついていない状態です。
> 
> ここへパッチを投げて下さい。暇をみつけてやっておきます。

すいません。MLにも投げたつもりでいましたが、mxの変更に遭遇して届かず
某宣教者に個人宛てで送っただけでした。

10bitから12bitに増えているのはPIUPBとPIUABです。
Sigmarion2の画面解像度はそれまでの機種と変わっていないから10bitの精度
で足りているので、入力値を12bit拾って2bit右シフトしているだけです。
理想としては12bit値を画面座標系に変換すべきなのでしょうが、動作するこ
とを優先したのでこんなふうになってます。

Index: vrpiu.c
===================================================================
RCS file: /home/hamajima/cvs/current/arch/hpcmips/vr/vrpiu.c,v
retrieving revision 1.1.1.1.2.7
diff -u -r1.1.1.1.2.7 vrpiu.c
--- vrpiu.c	17 Oct 2002 23:48:10 -0000	1.1.1.1.2.7
+++ vrpiu.c	27 Nov 2002 15:14:19 -0000
@@ -557,9 +557,12 @@
 
 	if (intrstat & PIUINT_PADADPINTR) {
 		for (i = 0; i < 3; i++) {
-			if (sc->sc_battery.value[i] & PIUAB_VALID)
+			if (sc->sc_battery.value[i] & PIUAB_VALID) {
 				sc->sc_battery.value[i] &= PIUAB_PADDATA_MASK;
-			else
+#ifdef SIGMARION2_HACK
+				sc->sc_battery.value[i] >>= 2;
+#endif
+			} else
 				sc->sc_battery.value[i] = 0;
 		}
 		vrpiu_calc_powerstate(sc);
@@ -646,6 +649,12 @@
 				tpx1 &= PIUPB_PADDATA_MASK;
 				tpy0 &= PIUPB_PADDATA_MASK;
 				tpy1 &= PIUPB_PADDATA_MASK;
+#ifdef SIGMARION2_HACK
+				tpx0 >>= 2;
+				tpx1 >>= 2;
+				tpy0 >>= 2;
+				tpy1 >>= 2;
+#endif
 #define ISVALID(n, c, m)	((c) - (m) < (n) && (n) < (c) + (m))
 				if (ISVALID(tpx0 + tpx1, 1024, 200) &&
 				    ISVALID(tpy0 + tpy1, 1024, 200)) {
Index: vrpiureg.h
===================================================================
RCS file: /home/hamajima/cvs/current/arch/hpcmips/vr/vrpiureg.h,v
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1.2.2 vrpiureg.h
--- vrpiureg.h	17 Oct 2002 12:42:58 -0000	1.1.1.1.2.2
+++ vrpiureg.h	27 Nov 2002 15:14:19 -0000
@@ -148,8 +148,13 @@
 			 (PIUPB00_REG_W + (page) * 8 + (n) * 2) : \
 			 (PIUPB04_REG_W + (page) * 2))
 #define PIUPB_VALID		(1<<15)
+#ifdef SIGMARION2_HACK
+#define PIUPB_PADDATA_MASK	0xFFF
+#define PIUPB_PADDATA_MAX	0xFFF
+#else
 #define PIUPB_PADDATA_MASK	0x3FF
 #define PIUPB_PADDATA_MAX	0x3FF
+#endif
 
 #define	PIUAB0_REG_W	(PIUB_REG_OFFSSET+0x10)	/* PIU A/D scan Buffer 0 reg */
 #define	PIUAB1_REG_W	(PIUB_REG_OFFSSET+0x12)	/* PIU A/D scan Buffer 1 reg */
@@ -157,4 +162,8 @@
 #define	PIUAB3_REG_W	(PIUB_REG_OFFSSET+0x16)	/* PIU A/D scan Buffer 3 reg */
 #define PIUAB(n)	(PIUAB0_REG_W+(n)*2)
 #define PIUAB_VALID		(1<<15)
+#ifdef SIGMARION2_HACK
+#define PIUAB_PADDATA_MASK	0xFFF
+#else
 #define PIUAB_PADDATA_MASK	0x3FF
+#endif