Difference between revisions of "N900"

From eLinux.org
Jump to: navigation, search
(Status)
m (wording update)
(44 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Status ==
+
The [https://en.wikipedia.org/wiki/Nokia_N900 Nokia N900] is a Linux based smartphone from Nokia, which has been released in November 2009. It's sold with [[Maemo]] using a patched 2.6.28 kernel (adding board support and lots of drivers). Since then board support has been added to the mainline kernel and most hardware can be used with a current kernel. Details can be seen in the table below.
{|
+
 
 +
== Kernel Status ==
 +
{| class="wikitable"
 
! chip !! purpose
 
! chip !! purpose
 
! docs !! impl !! merge
 
! docs !! impl !! merge
 
! board impl !! board merge
 
! board impl !! board merge
 +
! firmware
 
|-
 
|-
 
| OMAP3430 || System-on-chip
 
| OMAP3430 || System-on-chip
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
Line 60: Line 63:
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * IVA 2+ accelerator || Video encoder/decoder
+
| * OMAP 3 Camera ISP || OMAP3 Camera Chip Connection Bus
| ?
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| 2.6.39-rc1
 +
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| * OMAP DSS || Video HW abstraction layer
 +
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="cyan" colspan="2"| N/A (Userspace: ?)
 
|-
 
| * OMAP 3 Camera || OMAP3 Camera Chip Connection Bus
 
|bgcolor="yellow"| code
 
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| 2.6.39-rc1
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * OMAP DSS || KMS video driver
+
| * OMAP DRM || KMS video driver
 
|bgcolor="cyan"| N/A
 
|bgcolor="cyan"| N/A
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
Line 78: Line 81:
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * TMS320 C64x || DSP
+
| * TMS320 C64x || DSP (also called IVA 2+)
 
|bgcolor="lime"| [http://www.ti.com/lit/ug/spru395b/spru395b.pdf datasheet]
 
|bgcolor="lime"| [http://www.ti.com/lit/ug/spru395b/spru395b.pdf datasheet]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
Line 84: Line 87:
 
|bgcolor="cyan" colspan="2"| N/A (Userspace: gst-dsp)
 
|bgcolor="cyan" colspan="2"| N/A (Userspace: gst-dsp)
 
|-
 
|-
| ??? || eMMC & SD/MMC card
+
| * PowerVR SGX530 || OpenGL ES and OpenVG acceleration
|bgcolor="yellow"| code
+
|bgcolor="red"| No
 +
|bgcolor="red"| No
 +
|bgcolor="red"| No
 +
|bgcolor="red"| No
 +
|bgcolor="red"| No
 +
|-
 +
| * OMAP Watchdog || Watchdog
 +
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 +
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=67c0f55468443ef8a1edc6ee92f9a92e4915be24 3.8]
 +
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| Yes
 +
|-
 +
| * OMAP MMC/SD/SDIO || eMMC & SD/MMC card
 +
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
Line 115: Line 132:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| * || Watchdog
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b2c4e4b2696287671723ef986f0db23cf4f52f15 3.8]
 +
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| Yes
 
|-
 
|-
 
| GPIO || Camera button
 
| GPIO || Camera button
Line 130: Line 154:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|-
 
|-
| LP5523 || LED
+
| LP5523 || LED driver
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/product/LP5523 documentation]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2.6.37-rc2
 
|bgcolor="lime"| 2.6.37-rc2
Line 157: Line 181:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2009-11-22
 
|bgcolor="lime"| 2009-11-22
 +
|bgcolor="yellow"| [https://api.pub.meego.com/public/source/CE:Adaptation:N900/ti-wl1251-firmware/ti-wl1251-firmware_0.4.tar.bz2 wl1251-fw.bin]
 
|-
 
|-
 
| Si4713 || FM transmitter
 
| Si4713 || FM transmitter
Line 173: Line 198:
 
|-
 
|-
 
| TLV320AIC3X || Digital audio data serial
 
| TLV320AIC3X || Digital audio data serial
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/product/tlv320aic33#technicaldocuments ti.com]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2.6.25
 
|bgcolor="lime"| 2.6.25
Line 204: Line 229:
 
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b1a808ff436343956a6ae63178ea1810c5e5a3a1 3.4-rc2]
 
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b1a808ff436343956a6ae63178ea1810c5e5a3a1 3.4-rc2]
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| Omap SSI || Synchronous Serial Interface
 +
|bgcolor="yellow"| code
 +
|bgcolor="yellow"| [http://article.gmane.org/gmane.linux.kernel/1153543 RFCv5 (2011-06-10)]
 +
|bgcolor="red"| No
 +
|bgcolor="red"| No
 +
|bgcolor="red"| No
 
|-
 
|-
 
| * TI NaviLink NL5350 || GPS (via Phonet modem protocol)
 
| * TI NaviLink NL5350 || GPS (via Phonet modem protocol)
 
|bgcolor="yellow"| [http://wiki.maemo.org/N900_Hardware_GPS reveng]
 
|bgcolor="yellow"| [http://wiki.maemo.org/N900_Hardware_GPS reveng]
|bgcolor="cyan" colspan="4"| Userspace [http://luke.dashjr.org/tmp/code/gps2.c gsp2.c]
+
|bgcolor="cyan" colspan="4"| Userspace [http://luke.dashjr.org/tmp/code/gps2.c gps2.c]
 
|-
 
|-
 
| *  || A-GPS
 
| *  || A-GPS
 
|bgcolor="red"| No
 
|bgcolor="red"| No
|bgcolor="cyan" colspan="4"| Client/server SUPL application: http://www.tajuma.com/supl/index.html
+
|bgcolor="cyan" colspan="4"| Client SUPL application: http://www.tajuma.com/supl/index.html
 
|-
 
|-
 
| isp1704 || USB charger detector
 
| isp1704 || USB charger detector
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://datasheetz.com/NXP/ISP1704A_1/ISP1704A_1.html datasheet]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2.6.37-rc1
 
|bgcolor="lime"| 2.6.37-rc1
Line 238: Line 270:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2.6.32
 
|bgcolor="lime"| 2.6.32
|bgcolor="lime"| [https://build.pub.meego.com/package/view_file?file=linux-2.6-omap-rx51-Platform-support-for-lis3lv02d-acceleromet.patch&package=kernel-adaptation-n900&project=Project%3ADE%3ATrunk&srcmd5=8ca3e6ef69d03055c4046e47e7bf6391 patch]
+
|bgcolor="lime"| [https://build.pub.meego.com/package/view_file?file=linux-2.6-omap-rx51-Platform-support-for-lis3lv02d-acceleromet.patch&package=kernel-adaptation-n900&project=CE%3AAdaptation%3AN900 patch]
|bgcolor="red"| No
+
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=3b5112011508c3d92938438db506c6794e8a61a5 3.5-rc1]
 
|-
 
|-
 
| ADP 1653 || Flash Torch
 
| ADP 1653 || Flash Torch
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.analog.com/static/imported-files/data_sheets/ADP1653.pdf datasheet]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 3.1-rc1
 
|bgcolor="lime"| 3.1-rc1
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/2/17/61 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
|-
| bq24150 || Battery charger
+
| rx51_battery || Battery design capacity, battery temperature
|bgcolor="lime"| [http://www.ti.com/product/bq24150 documentation]
+
|bgcolor="yellow"| code
|bgcolor="yellow"| [https://lkml.org/lkml/2011/12/7/626 WIP]
+
|bgcolor="lime"| [https://lkml.org/lkml/2012/10/30/446 Yes]
|bgcolor="red"| No
+
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=04930baf28f08cd275e4afbf5a335b42335705df 3.8]
 +
|bgcolor="lime"| [https://lkml.org/lkml/2012/11/19/194 Yes]
 +
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=7605c0b0d384ec98f80abc6ac2148a6cd993026c 3.8]
 +
|-
 +
| bq24150a || Battery charger
 +
|bgcolor="lime"| [http://www.ti.com/product/bq24150a documentation]
 +
|bgcolor="lime"| [https://lkml.org/lkml/2012/11/2/429 Yes]
 +
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=0bc98cc6155205b615a9d29a2d54d1b839521c04 3.8]
 
|bgcolor="yellow"| WIP
 
|bgcolor="yellow"| WIP
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
|-
| STM VS6555 || Webcam
+
| STM VS6555 || Front Webcam
 
|bgcolor="lime"| [http://natisbad.org/N900/ref/VS6555.pdf datasheet]
 
|bgcolor="lime"| [http://natisbad.org/N900/ref/VS6555.pdf datasheet]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=ccfc97bdb5ae8b8edc55169ac6924e08449836ac v3.4-rc4]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
|bgcolor="lime"| Yes
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="lime"| No firmware needed
 
|-
 
|-
 
| ET8EK8 || Main Camera
 
| ET8EK8 || Main Camera
Line 268: Line 308:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="yellow"| [https://gitorious.org/omap3camera/camera-firmware et8ek8-0002.bin]
 
|-
 
|-
 
| AD5820 || Autofocus
 
| AD5820 || Autofocus
Line 282: Line 323:
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="yellow"| [https://api.pub.meego.com/public/source/CE:Adaptation:N900/bcm-bt-firmware/bcm-bt-firmware-0.21rc3.tar.bz2 bcmfw.bin]
 
|-
 
|-
 
| * || FM/RDS receiver
 
| * || FM/RDS receiver
Line 291: Line 333:
 
|-
 
|-
 
| IR Diode on GPIO || Infrared/CIR transmitter
 
| IR Diode on GPIO || Infrared/CIR transmitter
|bgcolor="yellow"| [http://mxr.maemo.org/fremantle/source/kernel/drivers/input/lirc/lirc_rx51.c old code]
+
|bgcolor="cyan"| N/A
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/drivers/input/lirc/lirc_rx51.c Yes]
+
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75258.html Yes]
|bgcolor="red"| No
+
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75258.html 3.7-rc1]
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/arch/arm/mach-omap2/board-rx51-peripherals.c Yes]
+
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75257.html Yes]
|bgcolor="red"| No
+
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75257.html 3.7-rc1]
 
|-
 
|-
| AV/Jack/GPIO || Nokia AV accessory detection, Tvout and Headset button support
+
| omap3-rom-rng || OMAP3 ROM Random Number Generator support
|bgcolor="yellow"| [http://mxr.maemo.org/fremantle/source/kernel/drivers/misc/nokia-av.c old code]
+
|bgcolor="yellow"| code
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/drivers/misc/nokia-av.c Yes]
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/2/28/452 Yes]
|bgcolor="red"| No
 
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/arch/arm/mach-omap2/board-rx51-audio.c Yes]
 
|bgcolor="red"| No
 
|-
 
| SSI McSAAB IMP? || Modem Bus
 
|bgcolor="yellow"| old code
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
| * PowerVR SGX530 || OpenGL ES and OpenVG acceleration
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/2/28/452 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|}
 
|}
  
== Camera ==
+
== Kernel git repository for N900 ==
  
Camera (front & back) drivers are available from this git: [https://gitorious.org/~sailus]. The code is not in the mainline kernel, because it uses a camera firmware, which can be avoided by changing the driver.
+
There is git repository for upstream linux kernel with all N900 patches.
  
== U-Boot ==
+
https://gitorious.org/linux-n900/linux-n900
  
Instead of booting the kernel directly from NOLO (which restricts you to using ONE kernel), U-Boot can be used as second bootloader.
+
This git repository is used for development. All other git repositories on internet are older and does not contains all patches.
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: [http://lists.denx.de/pipermail/u-boot/2012-January/116496.html Nokia RX-51 support]
+
== U-Boot ==
  
Git repository with N900 patches based on U-Boot master is here: https://gitorious.org/u-boot-shr/u-boot (branch pali)
+
Instead of booting the kernel directly from NOLO (which restricts you to using exactly one kernel), U-Boot can be used as second bootloader. The Maemo kernel can be appended to U-Boot to keep the existing Maemo installation working (U-Boot must be located at the location of the Maemo kernel). The resulting boot process will end up like this: NOLO -> U-Boot -> Kernel.
  
Thread on talk.maemo.org where is last new version: http://talk.maemo.org/showthread.php?t=81613
+
Pali Rohár has been working on getting the N900 support into the mainline U-Boot:
  
== Charging ==
+
{| class="wikitable"
 
+
!description
Charging is currently done with a shell script, which and "i2c-dev" kernel module.
+
!date
There are plans to move this into the kernel, so that charging happens automatically
+
!status
once you plug your N900 into a USB port. You can find discussions and some code
+
|-
[https://lkml.org/lkml/2011/12/7/626 here]. Recently (3.3-rc1) the kernel got a
+
|Board Support
new Charge Manager Framework [https://lkml.org/lkml/2012/1/10/514 (Announcement)],
+
|2012-10-29
which will help with this task. You can find its documentation under:
+
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=ed407be53e1e8f0be90d5723ca71ab1c37e2eed8 mainline]
Documentation/power/charger-manager.txt
+
|-
 
+
|Bootmenu Support
== Modem ==
+
|2013-03-07
 +
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=d999398822c6d57335677bc4ecc6bea4a569492f mainline]
 +
|}
  
The modem is connected via a bus called SSI, which is an old version of HSI.
+
Currently all U-Boot development for the Nokia N900 is done in this git repository: https://gitorious.org/u-boot-shr/u-boot (branch pali).
In linux multiple things are involved to get it working:
 
  
* SSI driver (not yet mainline, WIP)
+
There's also a thread on talk.maemo.org, where the latest released & tested version can be found: http://talk.maemo.org/showthread.php?t=81613
** Status 2012-01-09: http://marc.info/?l=linux-omap&m=132611324318625&w=2
 
* HSI framework needed by the SSI driver (mainline since 3.4-rc2)
 
* PhoNet for userspace communication (mainline since 2.6.28)
 
  
Patches missing mainline to get modem support:
+
== Flashing ==
  
* [http://article.gmane.org/gmane.linux.kernel/1153543 HSI: omap_ssi: OMAP SSI driver]
+
There is an open source flasher application called 0xFFFF, which is working with the Nokia N900. Git repository is on: https://gitorious.org/0xffff/0xffff
* [http://article.gmane.org/gmane.linux.ports.arm.omap/58798 HSI: omap_ssi: OMAP SSI kernel configuration]
 
* board data for rx51, get e.g. from [http://meego.gitorious.org/meego-device-adaptation/n900_kernel/blobs/master/arch/arm/mach-omap2/board-rx51-peripherals.c meego's board code]
 

Revision as of 12:26, 2 April 2013

The Nokia N900 is a Linux based smartphone from Nokia, which has been released in November 2009. It's sold with Maemo using a patched 2.6.28 kernel (adding board support and lots of drivers). Since then board support has been added to the mainline kernel and most hardware can be used with a current kernel. Details can be seen in the table below.

Kernel Status

chip purpose docs impl merge board impl board merge firmware
OMAP3430 System-on-chip OMAP34xx TRM Yes Yes Yes Yes
* Cortex A8 CPU ARM infocenter Yes Yes N/A
* * ARMv7 Instruction set ARM infocenter Yes Yes N/A
* * NEON Media Extensions ARM infocenter Yes Yes N/A
* * Thumb Code compression ARM infocenter Yes by 2.6.12 ? N/A
* * Thumb2 Code compression ARM infocenter Yes Yes N/A
* * ThumbEE Instruction Set for JIT compilers ARM infocenter Yes Yes N/A (Userspace: Java VM?)
* * VFP Floating-point coprocessor ARM infocenter Yes by 2.6.12 ? N/A
* M-Shield AES acceleration code Yes 2.6.37-rc1 N/A
* OMAP 3 Camera ISP OMAP3 Camera Chip Connection Bus OMAP34xx TRM Yes 2.6.39-rc1 N/A
* OMAP DSS Video HW abstraction layer OMAP34xx TRM Yes Yes N/A
* OMAP DRM KMS video driver N/A Yes 3.3-rc1 N/A
* TMS320 C64x DSP (also called IVA 2+) datasheet Yes Yes N/A (Userspace: gst-dsp)
* PowerVR SGX530 OpenGL ES and OpenVG acceleration No No No No No
* OMAP Watchdog Watchdog OMAP34xx TRM Yes 3.8 Yes Yes
* OMAP MMC/SD/SDIO eMMC & SD/MMC card OMAP34xx TRM Yes Yes Yes Yes
TI TWL4030 multifunction (I2C) TPS65950 TRM N/A
* Audio part of TI TWL4030 Yes Yes Yes Yes
* Vibrator part of TI TWL4030 Yes Yes Yes 2.6.39-rc1
* Real-Time Clock part of TI TWL4030 Yes Yes N/A
* Watchdog part of TI TWL4030 Yes 3.8 Yes Yes
GPIO Camera button N/A Yes Yes Yes Yes
Taos TSL2563 Ambient light sensor datasheet Yes 2.6.33 Yes Yes
LP5523 LED driver documentation Yes 2.6.37-rc2 Yes 3.1-rc1
Sony ACX565AKM LCD panel code Yes 2.6.35 Yes 2.6.36
TI TSC2005 Touchscreen controller datasheet 2.6.39-rc1 2.6.39-rc1 Yes 3.3-rc1
WL1251 802.11b/g WiFi code Yes 2.6.31 Yes 2009-11-22 wl1251-fw.bin
Si4713 FM transmitter datasheet Yes 2.6.32 Yes Yes
TPA6130a2 Headphone amplifier datasheet Yes 2.6.33 Yes Yes
TLV320AIC3X Digital audio data serial ti.com Yes 2.6.25 Yes Yes
GPIO Proximity sensor N/A Yes Yes Yes Yes
GPIO Keyboard N/A (layout: code) Yes 2.6.33 Yes Yes
Phonet Modem protocol code Yes 2.6.28 N/A
HSI Modem Bus Framework code Yes 3.4-rc2 N/A
Omap SSI Synchronous Serial Interface code RFCv5 (2011-06-10) No No No
* TI NaviLink NL5350 GPS (via Phonet modem protocol) reveng Userspace gps2.c
* A-GPS No Client SUPL application: http://www.tajuma.com/supl/index.html
isp1704 USB charger detector datasheet Yes 2.6.37-rc1 Yes 2011-04-20
bq27200 Battery monitor chip documentation Yes 2.6.28 patch 3.3-rc1
OneNAND Flash memory code Yes 2.6.15 Yes Yes
LIS302DL Accelerometers datasheet Yes 2.6.32 patch 3.5-rc1
ADP 1653 Flash Torch datasheet Yes 3.1-rc1 Yes No
rx51_battery Battery design capacity, battery temperature code Yes 3.8 Yes 3.8
bq24150a Battery charger documentation Yes 3.8 WIP No
STM VS6555 Front Webcam datasheet Yes v3.4-rc4 No No No firmware needed
ET8EK8 Main Camera datasheet Yes No Yes No et8ek8-0002.bin
AD5820 Autofocus code Yes No Yes No
BCM2048 Bluetooth old code Yes No Yes No bcmfw.bin
* FM/RDS receiver old code Yes No Yes No
IR Diode on GPIO Infrared/CIR transmitter N/A Yes 3.7-rc1 Yes 3.7-rc1
omap3-rom-rng OMAP3 ROM Random Number Generator support code Yes No Yes No

Kernel git repository for N900

There is git repository for upstream linux kernel with all N900 patches.

https://gitorious.org/linux-n900/linux-n900

This git repository is used for development. All other git repositories on internet are older and does not contains all patches.

U-Boot

Instead of booting the kernel directly from NOLO (which restricts you to using exactly one kernel), U-Boot can be used as second bootloader. The Maemo kernel can be appended to U-Boot to keep the existing Maemo installation working (U-Boot must be located at the location of the Maemo kernel). The resulting boot process will end up like this: NOLO -> U-Boot -> Kernel.

Pali Rohár has been working on getting the N900 support into the mainline U-Boot:

description date status
Board Support 2012-10-29 mainline
Bootmenu Support 2013-03-07 mainline

Currently all U-Boot development for the Nokia N900 is done in this git repository: https://gitorious.org/u-boot-shr/u-boot (branch pali).

There's also a thread on talk.maemo.org, where the latest released & tested version can be found: http://talk.maemo.org/showthread.php?t=81613

Flashing

There is an open source flasher application called 0xFFFF, which is working with the Nokia N900. Git repository is on: https://gitorious.org/0xffff/0xffff