Port-hpcsh archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Few Jornada 690 questions
12.08.06 uwe%ptc.spbu.ru@localhost wrote:
Hi, and thanks for the quick reply :)
> > And reboots back to WinCE. When I boot with a serial console, it boots
> > fine. My Jornada is French, but I don't like it's keyboard layout, so
> > I've selected in hpcboot "European", maybe this is the case (does it
> > affect only the keyboard layout?).
>
> Which hpcboot version are you using?
Newest from the CVS (.exe.uue, not compiled by myself).
> > 2. Suspending works okay, but unsuspending does not turn the display
> > on. I suspect it can be related to booting with a serial console.
>
> Yes, it's a bug in the driver for the hd64461 video.
I've fixed it by copying some stuff from hd64461video_attach() to the
power hook. I don't know if all of this is really necessary (probably
not), but it works. Patch attached.
> > 3. Is there a program or other possibility to turn the display off
> > and on? I've tried wsconsctl -da, but no option seems to be related.
>
> I have written small wsblank utility (attached) to turn it on/off.
> Yes, this functionality should really be integrated into wsconsctl.
Thanks, it works. I've done some integration, check wsconsctl.patch.
> > 4. I've calibrated my touch panel using tpctl, but in X it still
> > seems to be uncalibrated. Maybe there's an other utility for X
> > and other for the console?
>
> What are the symptoms? I guess the issue might be that touchpanel
> readings are not stable when the pen is removed, and the driver picks
> up a "ghost" move during pen removal.
That's not the case. When I drag the stylus, the cursor move is related
to it, but the position is shifted (shift depends on the position). Take
a look:
http://gallery.miauk.net/n/0014/dsc006.jpg
http://gallery.miauk.net/n/0014/dsc007.jpg
http://gallery.miauk.net/n/0014/dsc008.jpg
http://gallery.miauk.net/n/0014/dsc009.jpg
And by the way, here's the "warm reboot" message (I know it's not
readable, but at least the position of the message can be seen):
http://gallery.miauk.net/n/0014/dsc002.jpg
Greetings.
--
[ Adam Wysocki :: www.chmurka.net :: +48 514 710 213 ]
[ Software Development Department, ArcaBit Sp. z o.o ]
[ Ul. Fortuny 9 :: 01-339 Warszawa :: www.arcabit.pl ]
--- hd64461video.c.old 2006-08-13 11:59:47.000000000 +0200
+++ hd64461video.c 2006-08-13 12:02:44.000000000 +0200
@@ -1147,6 +1147,15 @@
if (!hvc->console)
break; /* serial console */
DPRINTF("%s: ON\n", sc->sc_dev.dv_xname);
+ hd64461video_update_videochip_status(hvc);
+ hd64461video_setup_hpcfbif(hvc);
+ {
+ u_int8_t *p = hvc->off_screen_addr;
+ u_int8_t *end = p + hvc->off_screen_size;
+ while (p < end)
+ *p++ = 0xff;
+ }
+ hd64461video_hwaccel_init(hvc);
hd64461video_on(hvc);
break;
case PWR_SUSPEND:
--- wsconsctl.h.old 2006-08-12 19:01:42.000000000 +0200
+++ wsconsctl.h 2006-08-12 19:01:59.000000000 +0200
@@ -69,6 +69,7 @@
#define FMT_KBMAP 105 /* keyboard map */
#define FMT_COLOR 201 /* display color */
#define FMT_ATTRS 202 /* display attributes */
+#define FMT_BLANK 203 /* blanking status */
int format;
#define FLG_RDONLY 0x0001 /* variable cannot be modified */
#define FLG_WRONLY 0x0002 /* variable cannot be displayed */
--- util.c.old 2006-08-12 19:02:16.000000000 +0200
+++ util.c 2006-08-12 19:15:22.000000000 +0200
@@ -321,6 +321,9 @@
if (first)
(void)printf("none");
break;
+ case FMT_BLANK:
+ (void)printf("%u", (*((unsigned int *) f->valp) ==
WSDISPLAYIO_VIDEO_OFF) ? 1 : 0);
+ break;
default:
errx(EXIT_FAILURE, "internal error: pr_field: no format %d",
f->format);
@@ -359,12 +362,27 @@
switch (f->format) {
case FMT_UINT:
+ case FMT_BLANK:
if (sscanf(val, "%u", &u) != 1)
errx(EXIT_FAILURE, "%s: not a number", val);
if (merge)
*((unsigned int *) f->valp) += u;
else
*((unsigned int *) f->valp) = u;
+
+ if (f->format == FMT_BLANK) {
+ switch (*((unsigned int *) f->valp)) {
+ case 0:
+ *((unsigned int *) f->valp) =
WSDISPLAYIO_VIDEO_ON;
+ break;
+ case 1:
+ *((unsigned int *) f->valp) =
WSDISPLAYIO_VIDEO_OFF;
+ break;
+ default:
+ errx(EXIT_FAILURE, "%d: should be 0 or
1", *((unsigned int *) f->valp));
+ }
+ }
+
break;
case FMT_STRING:
if ((*((char **) f->valp) = strdup(val)) == NULL)
--- display.c.old 2006-08-12 18:44:48.000000000 +0200
+++ display.c 2006-08-12 19:15:31.000000000 +0200
@@ -53,6 +53,7 @@
static int dpytype;
static struct wsdisplay_usefontdata font;
static struct wsdisplay_param backlight;
+static int blank;
static struct wsdisplay_param brightness;
static struct wsdisplay_param contrast;
static struct wsdisplay_scroll_data scroll_l;
@@ -65,6 +66,7 @@
{ "type", &dpytype, FMT_DPYTYPE, FLG_RDONLY },
{ "font", &font.name, FMT_STRING, FLG_WRONLY },
{ "backlight", &backlight.curval, FMT_UINT, 0 },
+ { "blank", &blank, FMT_BLANK, 0 },
{ "brightness", &brightness.curval, FMT_UINT, FLG_MODIFY },
{ "contrast", &contrast.curval, FMT_UINT, FLG_MODIFY },
{ "scroll.fastlines", &scroll_l.fastlines, FMT_UINT, FLG_MODIFY },
@@ -100,6 +102,10 @@
field_disable_by_value(&backlight.curval);
}
+ if (field_by_value(&blank)->flags & FLG_GET)
+ if (ioctl(fd, WSDISPLAYIO_GVIDEO, &blank) < 0)
+ field_disable_by_value(&blank);
+
if (field_by_value(&brightness.curval)->flags & FLG_GET) {
brightness.param = WSDISPLAYIO_PARAM_BRIGHTNESS;
if (ioctl(fd, WSDISPLAYIO_GETPARAM, &brightness))
@@ -177,6 +183,12 @@
pr_field(field_by_value(&backlight.curval), " -> ");
}
+ if (field_by_value(&blank)->flags & FLG_SET) {
+ if (ioctl(fd, WSDISPLAYIO_SVIDEO, &blank) < 0)
+ err(EXIT_FAILURE, "WSDISPLAYIO_SVIDEO");
+ pr_field(field_by_value(&blank), " -> ");
+ }
+
if (field_by_value(&brightness.curval)->flags & FLG_SET) {
brightness.param = WSDISPLAYIO_PARAM_BRIGHTNESS;
if (ioctl(fd, WSDISPLAYIO_SETPARAM, &brightness) < 0)
Home |
Main Index |
Thread Index |
Old Index