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