Flameman/ipaq/status

daily updated

= user land progress =
 * @16-02-2009, the stage3 armv4l has been started
 * @18-02-2009, ready to boot a minimal stage1 with init=/bin/bash root=/dev/hda3
 * @22-02-2009, stage3 has been finished, tested, well running and able to compile
 * @23-02-2009, stage3 is OK, stage4 has been started wirh xorg-x11 in mind (QT embedded is under studying)
 * @02-03-2009, stage4 has branched into microwindows stuff, nanoX has been compiled, tested, well running
 * @03-03-2009, wonder about an other branch to "QT-extended" ...
 * @04-03-2009, echo "2.6-hh is dead, If you are scared of building things, then this isn't the project for you" > /etc/motd
 * @05-03-2009, stage4 has also branced into xorg-base/xserver stuff, long emerge time
 * @08-03-2009, stage4 has completed the kdrive-xorg stuff, nedit and e17 are emerging

= kernel last report =

** lcd: working ** backlight : NOT working ** touchscreen : NOT working ** buttons: NOT working ** battery: NOT working (new battery device interface) ** sound: NOT working ** usb: NOT working ** RTC: working ** compactflash: not working ** pcmcia: sleeve 1xpcmcia is working with pATA-pcmcia-16bit/5V
 * @ 03-2009, 2.6.29.colie

** lcd: working ** backlight : working ** touchscreen : working, but it seems there is no handler ** buttons: working ** battery: NOT working (new battery device interface) ** sound: NOT working ** usb: NOT working ** RTC: working ** compactflash: not working ** pcmcia: sleeve 1xpcmcia is working with pATA-pcmcia-16bit/5V, sleeve 2xpcmcia NOT working
 * @ 03-2009, 2.6.19-hh4 && 2.6.19.my

old info at http://www.handhelds.org/moin/moin.cgi/KernelStatus

kernel proof
@ 05-03-2009

2.6.19.my has been derived from 2.6.19.hh4

2.6.19.my is used as my current working branch

download

 * working one

[[Media:kernel-ipaq-3600.gz|kernel-ipaq-3600.gz]]

2.6.19: it has a bit of issues with the touch screen, it doesn't work at all with the sleeve dual pcmcia, it works with sleeve single pcmcia ... it is configured to have rootfs on pcmcia pATA disk


 * experimental proof

version:

[[Media:kernel-ipaq-3600-proof.gz|kernel-ipaq-3600-proof.gz]]

Atmel Micro ASIC iPAQ-h3600 Support
-> iPAQ h3100/h3600/h3700 Support

[*] CPU SA1100 | |_[*] Atmel Micro ASIC |   |_ backlight |_ touchscreen |_ ..

[*] Atmel Micro ASIC | |_ backlight -> ??? h3600.c ??? |_ touchscreen -> micro_ts + devts (touchscreen export to the user space) |_ ..

back light
how to switch it on/off ? using the sysfs class

touch screen
used: micro_ts + devts kernel module

mmm devts seems to produce too much noise, nano-X doesn't appreciate it

SA1100_BITSY seems to be missing: dunno why (why hasn't been removed from the tree ?), where is the missing stuff ... dunno at all, i will remove it

config TOUCHSCREEN_BITSY 33        tristate "Compaq iPAQ H3600 (Bitsy) touchscreen" 34        depends on SA1100_BITSY 35        select SERIO 36        help 37          Say Y here if you have the h3600 (Bitsy) touchscreen. 38 39           If unsure, say N. 40 41          To compile this driver as a module, choose M here: the 42          module will be called h3600_ts_input.

= an other branch =

good news issued

Current status: * booting works * PCMCIA mostly works (tested with CF and 1xPCMCIA sleeves, don't have 2xPCMCIA) It Oopses on suspend (probably patch from  Thomas Kunze posted at linux-arm should help, but didn't check) * Serial console works * Framebuffer works * USB gadget (UDC) - mostly worked last time I tried, using hackish driver by Nick Bane. I cleaned it up a bit, but it's still a mess, and probably should be rewritten from scratch. * Flash works (R/W tested with sa11xx_flash, R/O with physmap) * Buttons/Touchscreen works (with both patching mainline driver and                      using forward-ported MFD-drivers by Gremlin) * IRDA - code exists, but not tested * Battery - level-reading driver by Gremlin kinda works, but values are strange. Charging works without any drivers. * Backlight - seems to work with driver by Gremlin * Sound - driver exists in mainline kernel, but it's broken, as it depends on L3 code from 2.4 kernel. It appears that in hh.org 2.6.21 kernel this code exists, but I didn't try to check if it can be used. In fact I even didn't check if this driver works in 2.6.21-hh (but something tells me that it doesn't).

bad news * Suspend - kinda works. You need to enable gpio-buttons (without    this driver h3600 won't wake), and disable (or fix) PCMCIA (because it Oopses). Also, forward ported drivers from Gremlin probably won't work with suspend, because currently all MFD subdrivers are parented to NULL (I've done this to make driver    compile, but obviously it's wrong). And even more bad news - if you have Windows in your ROM, you'll    get reset instead of wake. It's compaq bootldr bug - by design it    tries to detect what to wake - Linux or Windows, and detection algorithm is very poor (checking for some zeroed bytes in some    memory area). Linux since somewhere around 2.6.27 changed booting memory initialization, so detection doesn't work right anymore.

5-3-2009: this branch is under deep evaluation

= history =

just to have an idea of what was done http://www.handhelds.org/hypermail/kernel-discuss/attachment.html

11-2005
new MACHINE_START definition for ipaq h3600

From: Alessandro GARDICH  Date: Mon, 14 Nov 2005 21:11:35 +0100

Nothing change, just to follow the new way for the definition.

* text/x-patch attachment: handhelds-sa-26.patch

ipaq h3600 - patch for new egpio functions

From: Alessandro GARDICH  Date: Sat, 19 Nov 2005 18:30:22 +0100

Nothing change, just to follow the new way *_egpio function.

Remain out only micro that have to be full rewriten and uda1341 OSS driver, alsa one should work.

01-2006
From: Alessandro GARDICH  Date: Fri, 06 Jan 2006 18:23:16 +0100

Hi to all, another patch for iPAQ h3600

epiphany patch : - estetic code clean-up - support for keys device - backlight device definition - backlight are now restored after framebuffer blank/resume
 * arch/arm/common/ipaq/micro.c :

- support for keys (5 application keys and 4 directions pad)
 * arch/arm/common/ipaq/micro_key.c :

- moved from arch/arm/mach-pxa/pxa_keys.c   - small changes to be used also for h3600 device
 * arch/arm/common/pxa_keys.c :

- add support for power and action keys - backlight device definition moved in micro.c
 * arch/arm/mach-sa1100/h3600.c

- to not break existing pxa code it only include hardware/pxa_keys.h
 * include/asm-arm/arch-pxa/pxa_keys.h

- add definition for GPIO number (not bit) for action button
 * include/asm-arm/arch-sa1100/h3600_gpio.h

- add definition for GPIO number (not bit) for power button
 * include/asm-arm/arch-sa1100/h3600.h

- macro to get IRQ for a giver GPIO
 * include/asm-arm/arch-sa1100/irqs.h

- moved from include/asm-arm/arch-pxa/pxa_keys.h
 * include/asm-arm/hardware/pxa_keys.h

There are still some issues with micro* modules after sustend/resume and when unloading.

This is really the epyphany patch, the end of xmas vacation. From monday work and pool start again and so spare time will be just few hours for day. :) But i'll continue ...

I'm also looking on ebay if I can find a cheap h37xx and h38xx to take care of such iPAQs also.

Re: [PATCH] RTC classdev: Add sysfs support for wakeup alarm (r/w)

From: David Brownell  Date: Mon, 18 Dec 2006 16:59:11 -0800

On Monday 18 December 2006 4:54 pm, David Brownell wrote:

> > http://handhelds.org/cgi-bin/cvsweb.cgi/linux/kernel26/drivers/rtc/rtc-sa1100.c.diff?r1=1.5&r2=1.6&f=h > > That patch you applied looks right to me -- why don't you forward it > to Alessandro as a bugfix for 2.6.20-rc2, and save me the effort?

Actually, correction: it'd be correct if you ripped out the buggy calls to manage the irq wake mechanism. A later message will show how those need to work. (The IRQ framework will give one helpful hint when it warns about mismatched enable/disable calls ...)

- Dave

10-2006
iPAQ h3600 - patch for 2.6.19

From: Alessandro GARDICH  Date: Sun, 10 Dec 2006 18:07:13 +0100

Hi all

With this patch also h3600 will compile and run kernel 2.6.19

- irq calling loose registers parameter - platform device/driver in h3600_lcd - minor cleanup

see u soon

Re: Funky breakage with w100fb imageblit patch

* This message: [ Message body ] [ Respond ] [ More options ] * Related messages: [ Next message ] [ Previous message ] [ In reply to ] [ Next in thread ]

From: Manuel Teira  Date: Sun, 10 Dec 2006 20:54:32 +0100

A fast note about performance:

It seems that the performance problem is not the imageon itself. After one of my tests, I found in my dmesg lines like:

<4>Alignment trap: font (1269) PC=0x4002f9f4 Instr=0xe592c000 Address=0x00012726 FSR 0x013

The problem is the font itself: as any character is 14 bytes (for the 7x14 font) not all the char pointers fall in a word boundary and so, we're forcing the cpu to correct the missalignment.

I have a little libw100 test program, to fill the screen with a given text. This is what I got when I use a nonaligned char, like "1":

root_at_c7x0:/media/card/libw100/bin$ ./font 0 1 "1" Written 3094 characters in 19 seconds. Rate: 162.422116 cps

And using an aligned one, like "2":

root_at_c7x0:/media/card/libw100/bin$ ./font 0 1 "2" Written 3094 characters in 0 seconds. Rate: 16563.169165 cps

This is like the performance I got using the 8x16 font, so, the problem seems to be the misalignment of the font, and not the imageon itself.

Regards.

El dom, 10-12-2006 a las 19:33 +0100, Manuel Teira escribió: > El dom, 10-12-2006 a las 19:29 +0200, Paul Sokolovsky escribió: > > Hello Manuel, > > > > Sunday, December 10, 2006, 11:26:45 AM, you wrote: > > > > > Hello. > > > > > After a fast review of the code, I think that the problem could be > > > caused by an error in the w100_hostdata function, while calculating the > > > amount of data entries needed to feed the data to the card. At the > > > beginning of that function, the line: > > > > > u32 left = width * height * depth / 32; > > > > > is just giving 0 entries for one of your 4x6 characters, neither for non > > > 8 bit multiples. This can likely be the cause of the hangs. > > > > > Please, could you try changing that line with: > > > > > u32 left = width * height * depth / 32 + (((width * height * depth) % > > > 32) ? 1 : 0); > > > > Just in case, "(width * height * depth + 31) / 32" would be more > > canonical way to express that, no? ;-) > > Yes. Better and more compact. ;-) > > > > > > and try without applying your patch for checking the dimensions of the > > > image? > > > > Ok, I tried. It draws characters now, but in rather distorted form, > > mostly. It appears that either some special alignment of bitmaps is > > required (unlikely, as some substrings of different lengths are > > rendered properly), or there's some internal counter misinitialized, > > which causes slant and corruption. I made an fb shot: > > http://handhelds.org/~pfalcon/w100fb-7x14fon-corrupt.png > > > > Thanks for the screenshot. I think that the problem is related with how > data is packed into the font bitmaps. The former calculation is > supposing that the data is packed, and a font scanline is using just the > bits it needs. So, for example, for a 4x6 character, the function is > thinking that any scanline is only 4 bits, but perhaps it's padded to > expand to a byte boundary. Anyway, the screenshot is really funny, > because it seems that, as you say, always a set of adjacent chars (and > not always the same length) are drawn correctly. > > I've just made some test with that same 7x14 font and I managed it to > render correctly. I've just changed the patch to always assume that the > data scanlines are aligned to byte boundaries. I've also made the > counterpart changes in libw100 and made some tests. It seems to draw > correctly, but perfomance is worse than for a 8x16 font. > > I'm attaching a new w100-extaccel.patch with the changes. > > Regards.

rework has been re-started at 03-2009