The Treo plan (so far)
I realise I ended up going a bit quiet on the LD project. I'll try to document our progress a bit better with this one. So check the project blog from time to time. 
Read on for some (non-exhaustive) notes on what needs to be done for Treo 650 Linux.
People
Shadowmite is still interested in Treo Linux but no longer has a 650 so I suspect he might eventually start work on a port to the 700p or 700wx.
If you're interested in working on one of the issues below or even just messing around with Linux on a Palm, drop by #hackndev on irc.freenode.net or #shadowmite on irc.efnet.org and talk to me (BobOfDoom). Keep in mind you'll probably want to be reasonably experienced with Linux (on desktop).
Bluetooth
This is a major stuck point across most of the Palm ports. We need to figure out how to talk to the Broadcom BCM2035. I think we will need to implement the memory access tracing ability of GNU Haret into a Palm OS tool and watch how the Palm OS driver controls it. Doing so will be a nuisance though due to Palm OS' lack of proper multitasking. I'm currently thinking we'll just have to try to reserve or guess at an empty place in RAM and override the ARM abort/interrupt handlers (by writing to 0x0, 0x4 etc) to write the trace there. Then a Palm OS app (hopefully on some sort of timer, but otherwise just manually run before the trace buffer fills up) will have to grab the trace and dump it to SD where it can then by analysed.
GSM Modem
From discussions with Shadowmite, the CDMA modem is connected in the same way as the GSM one, via a fourth UART provided by the ASIC 6 chip, so this probably applies equally. We will need to develop a UART driver for ASIC6 (fortunately from the look of the bootloader output it seems pretty standard) and will probably need to determine what GPIOs control power etc. Once we can communicate with the modem we should be able to dial using standard AT commands, then we will need to figure out how to tell the WM9712 to route the phone audio to the speaker. Looking at some of the HTC Linux phone projects will probably help.
Dual boot
In theory the technique fahhem and I were experimenting with using 'dalboot' should also work on the Treo. Shadowmite and Rayban have several tools for flashing custom ROMs. Unless we can find a driver for the M-Systems Disk-on-Chip P3 we will probably have to continue storing the root filesystem on an SD card.
Power management - lower power modes
The first step is to get the thing entering and resuming from 'standby' mode. This should just be a matter of configuring the power management registers in palmtx_init. Next, we should attempt attempt to get 'sleep' mode working. Since sleep causes a reset we'll need the cooperation of the bootloader, however I suspect it is similar to the LifeDrive where the bootloader jumps to the start of the 'Palm Card' in RAM. The DoC should not be disabled like the LD boot ROM was so we should not encounter any unresettable hangs. Even if we do, the Treo's battery is nice and easy to remove. From there, it would be optimal to configure the other peripherals such as audio codec and BT chip so they also are powered down.
Power management - battery monitoring and charging
The Treo has a MAX1874E chip which I assume controls battery charging from both USB and AC. Since it's controlled by the hardware we shouldn't run into the overcharging issues that plague LD Linux. We will need to find the GPIOs that signal charging / fully charged so that we can display an LED indicator as POS does. Also we will need to get the WM9712 to read the level of the battery.
Graphical environment
I'm currently trying out Angstrom GPE. If it proves unusable (due to RAM constraints) we will probably have to go for the tried and true Familiar OPIE.
Camera
The camera appears to be connected via both I2C and the PXA's Quick Capture Interface. We will need to first determine the model number, then look for documentation.
Other devices
From what I've heard, hardware-wise the 680, 700p and 700wx quite similar to the 650, so getting the basics up and running should be (relatively) easy. If you can code in C and were crazy enough to read to the end of this post, why not start a Linux port for your phone or PDA? Grab Cocoboot (or Haret for WM5 devices), an ARM cross-compiler and the hackndev kernel source and get hacking. 
Handy links
- Treo 650 hardware on hh.org wiki
- Shadowmite's Treo 650 page
- ASIC6 notes







