Sunday, September 23, 2007

Palm Wireless Keyboard

I recently borrowed Palm Wireless Keyboard from |miska| to write a driver for it. First of all, it's not a good idea to polute kernel sources with more and more keyboard driver modules. Moreover when there already is a nice and clean solution called kbdd for handling all those serial/bluetooth/irda keyboards too, so I decided to use it. The following patch adds palmwk support to kbdd.

Patch: http://marex.hackndev.com/01-add-palmwk.patch

To use it just compile kernel with CONFIG_SERIAL_PXA_IR=y and run "kbdd -p /dev/ttyS2 -t palmwk". If you configure kbdd using kbdd.conf, it's even easier since at least in angstrom it's started automagically every time you boot and you wont have to type that command at all. There are just minor changes in the original palmwk keymap, that is "Green FN" + Numbers works as Fx keys (convenient eg. in mc) instead of special characters.

Sunday, September 2, 2007

Opie-borderapplet 0.2

I added PalmTX support to borderapplet, you can download it here:
http://marex.hackndev.com/borderapplet-0.2.tar.bz2
SHA1: 6bf2ec837b49f6d07e770b01f9640f2b7bc739ee

For further information about borderapplet, refer to this article:
http://marex-hnd.blogspot.com/2007/07/lifedrive-borderapplet-for-opie.html

Tuesday, August 14, 2007

PalmTX: PCMCIA

That's one small hack for Marex, one giant leap for PalmTX port ;-) . Yup, I finally finished the PCMCIA driver for Palm T|X. Now the WiFi card is detectable by pccardctl and friends. See following results ...

root@palmtx:~$ pccardctl info
PRODID_1="SyChip"
PRODID_2="Cheetah6064 802 11b Module"
PRODID_3="WLAN6100"
PRODID_4="01"
MANFID=02db,6064
FUNCID=6

root@palmtx:~$ pccardctl ident
Socket 0:
product info: "SyChip", "Cheetah6064 802 11b Module", "WLAN6100", "01"
manfid: 0x02db, 0x6064
function: 6 (network)

root@palmtx:~$ pccardctl status
Socket 0:
3.3V 16-bit PC Card
Subdevice 0 (function 0) [unbound]

Monday, July 30, 2007

Opie: CPUFreq applet

I put together one more applet today. This time it's CPUFreq control applet. All it does is that it allows you to change CPU speed from GUI. Currently supported CPUs are PXA25x/26x and PXA27x.

Sources: http://marex.hackndev.com/cpufreqapplet.tar.bz2
SHA1: http://marex.hackndev.com/cpufreqapplet.tar.bz2.sha1


And of course screenshot. In the menu header you can see current CPU speed. To select different speed, use menu items below.

Sunday, July 29, 2007

LifeDrive: BorderApplet for Opie

Since I found out two GPIOs that control LCD border power and put together small driver to turn on/off the border, there became need for GUI to control this driver. So I hacked together simple applet for Opie to turn the border on/off.

Sources: http://marex.hackndev.com/borderapplet.tar.bz2
SHA1: http://marex.hackndev.com/borderapplet.tar.bz2.sha1


The screenshot is slightly edited in GIMP, but its enough to see how it looks I think. BorderApplet is that changing blue thing in applet dock. You just tap on it to enable/disable border, thats all.

Friday, July 20, 2007

Today's Konqueror/Embedded hacking ][

So in the end, Konqueror/Embedded seems to be fairy stable and usable. Font problem was just that my fonts were taken from qt/e3 and I needed those from qt/e2. Even javascript now works and konqueror embedded even compiles with RTTI ... time to celebrate ;-) I will make someone merge this in OE right after I make some fine tuning. Btw. this konqueror uses KHTML 3.5.7 ;-)

   

Today's Konqueror/Embedded hacking

Being without a webbrowser is pretty inconvenient on mobile device, thats for sure. So I decided to take a look at Konqueror/Embedded once more. I grabbed new sources from Basyskom and started hacking on them. I configured it so that everything is enabled and only disabled javascript stuff, ported Paul Eggleton's Konq/E 2007 patch (available here) on it, added bunch of mine patches, added a few horrible hacks and voila. See the screenshots. It is being worked on so dont worry about those distorted fonts.

   

Friday, July 13, 2007

LCCRman

I recently noticed that some of our devices still use static LCCR0 and LCCR3 values in device files. This is not quite correct so I put together really stupid and bloated tool called LCCRman. You just give it the LCCR0 and LCCR3 values and it returns the correct .lccr0 and .lccr3 section of pxa_mach_info structure.

Download here:
http://builds.hackndev.com/builds/Marex/LCCRman-0.1.tar.bz2
http://builds.hackndev.com/builds/Marex/LCCRman-0.1.tar.bz2.sha1

Cpufreq

I just slightly diverged from my holiday hacking plan. Since some people were asking me about frequency scaling on pxa27x palms I took a look at it. First attempt - LCD got "milky". I continued in experiments and in the end I obviously killed my device :) Disassembling and repluging the battery fixed it of course. I was experimenting further on ... now with device taken apart... and in the end I managed to make cpufreq working without the milky display effect. It is still sort of weird hack, but it is fine for the time being. So enjoy the frequency scaling. Cool about it is that you can eg. play mp3s in xmms-embedded and have cpu running at 1/4 of working speed (104MHz) and it works perfectly well. You can also disable LCD backlight and this is what I call power conservation ;-) I also tried to overclock my device - Palm LifeDrive with 416MHz PXA270-C0 - to 520MHz ... this seemed to work so I moved further - 624MHz ... the device lasted alive for about 5 seconds and then freezed, but the reset button worked. This overclocking stability differs from chip to chip though so it may work for you as well as it doesnt have to work for me.

Wednesday, June 27, 2007

Hello world!

Hi, I started this blog to let others keep track of my research done on embedded devices and porting linux to them. The ToDo chunk for my holiday (20070601-20070831) follows:

1) Full opie support for palm/pxa and palm/omap devices in mainstream - DONE
All stuff was merged to opie cvs, there are also some nice pictures of various palm models upstream. I also sent a patch that fixes device/model detection. That patch was prepared in cooperation with Paul -bluelightning- Eggleton, since it turned out to be deeper problem. The devices in libopie had to be renumerated etc. Nevertheless, it will all be in Opie 1.2.3
2) WiFi support for palmld - W.I.P.
Thanks to Holger Schurig's efforts, there is now a driver for 88W8385 WiFi chipset. It is not the same as in palmld, but it is quite similar. We have 88W8305 which is much older. This doesnt matter though, it can be also handled by that driver (with some modifications). The currect status is I can communicate with the card, load firmware and get the MAC address out of it. I still cant work with the wireless part though, but this will probably be just a matter of implementing some stuff since the card is so old.
3) WiFi support for palmtx - ToDo
The chip is similar as in palmld, but newer, refer to point [2]
4) USB2 support for palmld - ToDo
I began doing research some time ago on this stuff and the result was I found out the wiring ... well ... most of it. The currect status is that I know where that chip has power and reset GPIOs, so I can turn it on and off and I also know where it has it's registers mmaped. I also managed to write testing driver that makes the chip enumerate with usb bus, but it is more of an example and proof that it somehow works.
5) Angstrom/iWMMXt - W.I.P.
Try compiling angstrom with iwmmxt optimalizations. This will be harder nut, since qemu has still some problems with running iwmmxt compiled localedef from glibc and so I cant generate binary locales. After that is fixed, I think it will be all ok. I believe that iwmmxt will give the device some speedboost. Moreover opie2 and mplayer can use it.
6) Update PalmZ71 and PalmTT - ToDo
Since last release for those two devices was half year ago and the code in omap KT is getting stinky, I think I should update those. Also there are good news for palmtt/palmtt2 because Paul Sokolovsky bought palmtt2 and he will probably work on it. This may as well result in much better mmc driver and faster running linux port for palmtt/palmtt2.
7) Release bootpacks for devices I have - ToDo
This really needs to be done, but it depends on all previous points.
8) Support for BCM2033 (PalmTT/T2) - ToDo
This would be handy afterall. Since there is support for BCM2035 and I know how to get both firmwares for this chip from palmos resource file, it may be fun to hack on this.