Subject: Re: ipaq 3630
To: alfantor <alfantor@gmail.com>
From: Arnaud Lacombe <lists-netbsd@sigfpe.info>
List: port-hpcarm
Date: 03/25/2006 13:55:49
--qMm9M+Fa2AknHoGS
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Fri, Mar 24, 2006 at 08:24:55PM +0800, alfantor wrote:
> hi
> 
> i have a ipaq 3630 with pocketpc 2002 simple chinese ,i want't to know
> could i run hpcboot on it , it is not win ce 3.0.
> 
> thanks.
> 
> by the way, anybody in interesting netbsd(hpcarm)+ipaq3630+minigui??
> 
yes, as I own also an ipaq 3630, but currently, the kernel does not
work really well.

I only tried to run it on from console, and it failed to mount root from
CF->PCMCIA adapter. After a few debug, it seems that the pcmcia driver
itself does not work as it should (it detects incoherent state, doesn't
detach event, detects insertion events that doesn't occurs, detects some
CF, but not others[1]). I tried to look at the driver used by the
jornada, but it doesn't use pcic from SA1110 but from the SA1111.

The atmelgpio (which seems to handle battery info.) seems to work with
small correction to the current code (see attached patch).

I didn't test the LCD driver by now.

I'll will put online the few dmesg I got during my reserach if someone
else is interested.

regards,

Arnaud

ps: I did all my test on an ipaq 3100 but I got the same result on a 3630

[1]: in this case, it failed to read CIS information correctly from a
128Mo CF card (cf the following part of dmesg from an ipaq 3100 (wrong
CIS) and my laptop (good CIS):

       IPAQ 3100                             Laptop
pcmcia1: CIS tuple chain:          pcmcia0: CIS tuple chain:
 52 00                             01 03 d9 01 ff
unhandled CISTPL 52                CISTPL_DEVICE type=funcspec speed=250ns
 00                                1c 04 03 d9 01 ff
CISTPL_NONE                        unhandled CISTPL 1c
 00                                18 02 df 01
CISTPL_NONE                        unhandled CISTPL 18
 00                                20 04 98 00 00 00
CISTPL_NONE                        CISTPL_MANFID
 00                                15 20 04 01 54 4f 53 48 49 42 41 20 54
CISTPL_NONE                        [...]
[...]                              pcmcia0: CIS version PCMCIA 2.0 or 2.1
CISTPL_END (too long CIS)          pcmcia0: CIS info: TOSHIBA THNCF128MMA , , ,
[...]
pcmcia1: card appears to have bogus CIS

--qMm9M+Fa2AknHoGS
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="atmelgpio-rxbuf_fix.diff"

--- /usr/src/sys/arch/hpcarm/dev/ipaq_atmelgpio.c	2005-12-11 13:17:31.000000000 +0100
+++ sys/arch/hpcarm/dev/ipaq_atmelgpio.c	2006-02-10 16:35:43.000000000 +0100
@@ -58,9 +58,9 @@
 #include <hpcarm/dev/ipaq_gpioreg.h>
 #include <hpcarm/dev/ipaq_atmel.h>
 #include <hpcarm/dev/ipaq_atmelvar.h>
-#include <hpcarm/sa11x0/sa11x0_gpioreg.h>
-#include <hpcarm/sa11x0/sa11x0_comreg.h>
-#include <hpcarm/sa11x0/sa11x0_reg.h>
+#include <arm/sa11x0/sa11x0_gpioreg.h>
+#include <arm/sa11x0/sa11x0_comreg.h>
+#include <arm/sa11x0/sa11x0_reg.h>
 
 #ifdef ATMEL_DEBUG
 #define DPRINTF(x) printf x
@@ -99,7 +99,7 @@
 	struct atmelgpio_softc *sc = (struct atmelgpio_softc *)self;
 	struct ipaq_softc *psc = (struct ipaq_softc *)parent;
 
-	struct atmel_rx *rxbuf;
+	struct atmel_rx rxbuf;
 
 	printf("\n");
 	printf("%s: Atmel microcontroller GPIO\n",  sc->sc_dev.dv_xname);
@@ -117,15 +117,15 @@
 	atmelgpio_init(sc);
 
 #if 1  /* this is sample */
-	rxtx_data(sc, STATUS_BATTERY, 0, NULL, rxbuf); 
-
-	printf("ac_status          = %x\n", rxbuf->data[0]);
-	printf("Battery kind       = %x\n", rxbuf->data[1]);
+	rxtx_data(sc, STATUS_BATTERY, 0, NULL, &rxbuf); 
+	
+	printf("ac_status          = %x\n", rxbuf.data[0]);
+	printf("Battery kind       = %x\n", rxbuf.data[1]);
 	printf("Voltage            = %d mV\n",
-		1000 * (rxbuf->data[3] << 8 | rxbuf->data[2]) /228);
-	printf("Battery Status     = %x\n", rxbuf->data[4]);
+		1000 * (rxbuf.data[3] << 8 | rxbuf.data[2]) /228);
+	printf("Battery Status     = %x\n", rxbuf.data[4]);
 	printf("Battery percentage = %d\n",
-		425 * (rxbuf->data[3] << 8 | rxbuf->data[2]) /1000 - 298);
+		425 * (rxbuf.data[3] << 8 | rxbuf.data[2]) /1000 - 298);
 #endif
 
 	/*

--qMm9M+Fa2AknHoGS--