N900

Camera
Camera (front & back) drivers are available from this git:. The code is not in the mainline kernel, because of the non-free camera firmware. The driver is supposed to be rewritten to avoid this firmware.

U-Boot
Instead of booting the kernel directly from NOLO (which restricts you to using ONE kernel), U-Boot can be used as second bootloader. The Boot Process will end up like this: NOLO -> U-Boot -> Kernel. The Maemo kernel is appended to U-Boot, since U-Boot will be at the location where the Maemo kernel is located normally.

The U-Boot patches to support the N900 are not yet mainline, but have been proposed for inclusion recently: U-Boot RX51 support

Git repository with N900 patches based on U-Boot master is here: https://gitorious.org/u-boot-shr/u-boot (branch pali) Thread on talk.maemo.org where is last new version: http://talk.maemo.org/showthread.php?t=81613

Charging
Charging is currently done with a shell script, which and "i2c-dev" kernel module. There are plans to move this into the kernel, so that charging happens automatically once you plug your N900 into a USB port. You can find discussions and some code here. Recently (3.3-rc1) the kernel got a new Charge Manager Framework (Announcement), which will help with this task. You can find its documentation under: Documentation/power/charger-manager.txt

Modem
The Modem is connected via a bus called SSI, which is an old version of HSI. In linux multiple things are involved to get it working:


 * SSI driver (not yet mainline, WIP)
 * Status 2012-01-09: http://marc.info/?l=linux-omap&m=132611324318625&w=2
 * HSI framework for the SSI driver (linux-next, will probably go into 3.3)
 * PhoNet for userspace communication (mainline since 2.6.28)