Difference between revisions of "N900"

From eLinux.org
Jump to: navigation, search
(Status)
m (twl4030-madc and omapdss DT support has been merged by torvalds)
(143 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.
{|
+
 
! chip !! purpose
+
== Kernel Status ==
! docs !! impl !! merge
+
 
! board impl !! board merge
+
also see: [[N900/Changelog]]
 +
 
 +
Colors:
 +
* Green = Available
 +
* Yellow = Work in Progress (WIP), for docs: no documentation, but kernel code available
 +
* Red = Missing
 +
* Gray = Deprecated
 +
* Cyan = Not Available (N/A)
 +
 
 +
{| class="wikitable"
 +
!rowspan="2"| Chip
 +
!rowspan="2"| Driver name
 +
!rowspan="2"| Purpose
 +
!rowspan="2"| Docs
 +
!colspan="2"| Driver
 +
!colspan="2"| Board
 +
!colspan="2"| Device Tree
 +
!rowspan="2"| Firmware
 
|-
 
|-
| OMAP3430 || System-on-chip
+
! Patch !! Mainline
|bgcolor="yellow"| code
+
! Patch !! Mainline
|bgcolor="lime"| Yes
+
! Driver !! DTS
|bgcolor="lime"| Yes
+
|-
|bgcolor="lime"| Yes
+
| OMAP3430 || || System-on-chip
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 
|-
 
|-
| * Cortex A8 || CPU
+
| * Cortex A8 || || CPU
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/index.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/index.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 
|-
 
|-
| * * ARMv7 || Instruction set
+
| * * ARMv7 || || Instruction set
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="cyan" colspan="2"| N/A
 
 
|-
 
|-
| * * NEON || Media Extensions
+
| * * NEON || || Media Extensions
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Bcfjicfj.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Bcfjicfj.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="cyan" colspan="2"| N/A
 
 
|-
 
|-
| * * Thumb || Code compression
+
| * * Thumb || || Code compression
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.12
|bgcolor="lime"| by 2.6.12 ?
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="cyan" colspan="2"| N/A
 
 
|-
 
|-
| * * Thumb2 || Code compression
+
| * * Thumb2 || || Code compression
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4748a7240284b0f68bd47a66365c2cd561939830 3.13-rc1]
|bgcolor="cyan" colspan="2"| N/A
+
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=139302413627536&w=2 3.14-rc6]
 +
|bgcolor="cyan"| N/A
 
|-
 
|-
| * * ThumbEE || Instruction Set for JIT compilers
+
| * * ThumbEE || || Instruction Set for JIT compilers
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/CIHBCDGA.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/CIHBCDGA.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="cyan" colspan="4"| N/A (Userspace: Java VM?)
|bgcolor="cyan" colspan="2"| N/A (Userspace: Java VM?)
 
 
|-
 
|-
| * * VFP || Floating-point coprocessor
+
| * * VFP || || Floating-point coprocessor
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Chdjdaaj.html ARM infocenter]
 
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Chdjdaaj.html ARM infocenter]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.12
|bgcolor="lime"| by 2.6.12 ?
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="cyan" colspan="2"| N/A
 
 
|-
 
|-
| * M-Shield || AES acceleration
+
| * M-Shield || omap-aes omap-sham || AES, SHA1 and MD5 acceleration [[#M-Shield|(needs updated X-Loader)]]
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.37-rc1
|bgcolor="lime"| 2.6.37-rc1
+
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| 3.13
 +
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=138505988009856&w=2 3.13-rc3]
 +
|-
 +
| * IOMMU || omap-iommu || OMAP3 IO Memory Management Unit
 +
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 +
|bgcolor="lime" colspan="2"| Yes
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="lime" colspan="2"| 3.15
 
|-
 
|-
| * OMAP 3 Camera || OMAP3 Camera Chip Connection Bus
+
| * OMAP 3 Camera ISP || omap3-isp || OMAP3 Camera Chip Connection Bus
|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="yellow" colspan="2"| 2.6.39-rc1 (broken)
|bgcolor="lime"| 2.6.39-rc1
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="red" colspan="2"| No
 
|-
 
|-
| * OMAP DSS || Video HW abstraction layer
+
| * OMAP DSS || ??? || Video HW abstraction layer
|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" colspan="2"| Yes
|bgcolor="lime"| Yes
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="lime" colspan="2"| [http://marc.info/?l=linux-omap&m=139030195215292&w=2 3.15]
 
|-
 
|-
| * OMAP DRM || KMS video driver
+
| * OMAP DRM || ??? || KMS video driver
 
|bgcolor="cyan"| N/A
 
|bgcolor="cyan"| N/A
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree;f=drivers/staging/omapdrm 3.3-rc1]
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree;f=drivers/staging/omapdrm 3.3-rc1]
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="red" colspan="2"| No
 
|-
 
|-
| * TMS320 C64x || DSP (also called IVA 2+)
+
| * TMS320 C64x || tidspbridge || 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="yellow" colspan="2"| Yes ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930ba4a374b96560ef9fde2145cdc454a164ddcc broken since 3.13-rc2])
|bgcolor="lime"| Yes
 
 
|bgcolor="cyan" colspan="2"| N/A (Userspace: gst-dsp)
 
|bgcolor="cyan" colspan="2"| N/A (Userspace: gst-dsp)
 +
|bgcolor="red" colspan="2"| No
 
|-
 
|-
| * PowerVR SGX530 || OpenGL ES and OpenVG acceleration
+
| * * || || DSP patches for Maemo/N900
|bgcolor="red"| No
+
|bgcolor="yellow"| code
|bgcolor="red"| No
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="cyan" colspan="4"| N/A
 +
|-
 +
| * PowerVR SGX530 || pvrsrvkm omaplfb || OpenGL ES and OpenVG acceleration
 +
|bgcolor="yellow"| kernel code (userspace is closed)
 +
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
 +
|bgcolor="red"| No, not possible
 +
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
 +
|bgcolor="red"| No, not possible
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
|-
| * OMAP Boot Tags? || Provides boot information from bootloader (NOLO)
+
| * OMAP Watchdog || omap_wdt || Watchdog
| ?
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
| ?
+
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=67c0f55468443ef8a1edc6ee92f9a92e4915be24 3.8]
| ?
+
|bgcolor="lime" colspan="2"| Yes
| ?
+
|bgcolor="lime"| < 3.13
| ?
+
|bgcolor="lime"| 3.13
 
|-
 
|-
| * OMAP Watchdog || Watchdog
+
| * OMAP MMC/SD/SDIO || omap_hsmmc || eMMC
|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" colspan="2"| Yes
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=67c0f55468443ef8a1edc6ee92f9a92e4915be24 3.8]
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [http://www.spinics.net/lists/arm-kernel/msg288286.html 3.13-rc3]
 
|-
 
|-
| ??? || eMMC & SD/MMC card
+
| * OMAP MMC/SD/SDIO || omap_hsmmc || SD/MMC card
|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" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/494 3.13]
 
|-
 
|-
| TI TWL4030
+
| TI TWL4030 || twl-core || multifunction (I2C)
|| multifunction (I2C)
 
 
|bgcolor="lime"| [http://www.ti.com/litv/pdf/swcu050g TPS65950 TRM]
 
|bgcolor="lime"| [http://www.ti.com/litv/pdf/swcu050g TPS65950 TRM]
 
|bgcolor="cyan" colspan="4"| N/A
 
|bgcolor="cyan" colspan="4"| N/A
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 
|-
 
|-
| * || Audio
+
| * || ??? || Audio
 
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| part of TI TWL4030
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [https://lkml.org/lkml/2013/10/22/520 3.13]
|bgcolor="lime"| Yes
 
 
|-
 
|-
| * || Vibrator
+
| * || twl4030-vibra || Vibrator
 
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| part of TI TWL4030
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.39-rc1
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/520 3.13]
 
|-
 
|-
| * || Real-Time Clock
+
| * || rtc-twl || Real-Time Clock
 
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| part of TI TWL4030
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * || twl4030_wdt || Watchdog
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b2c4e4b2696287671723ef986f0db23cf4f52f15 3.8]
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * || twl4030_keypad || Keypad
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime" colspan="2"| 2.6.33
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/30/122 3.14]
 +
|bgcolor="lime"| 3.15
 +
|-
 +
| * || twl4030_pwrbutton || Power Button
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/8/458 3.14]
 +
|bgcolor="lime"| 3.14
 
|-
 
|-
| * || Watchdog
+
| * || twl4030_madc || Analog Digital Converter
 
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| part of TI TWL4030
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b2c4e4b2696287671723ef986f0db23cf4f52f15 3.8]
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/3/15/155 3.15]
|bgcolor="lime"| Yes
+
|bgcolor="yellow"| [http://marc.info/?l=linux-omap&m=139518444704345&w=2 PATCHv1 (2014-03-18)]
 
|-
 
|-
| GPIO || Camera button
+
| GPIO || gpio-keys || Camera button
 
|bgcolor="cyan"| N/A
 
|bgcolor="cyan"| N/A
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/509 3.13]
 
|-
 
|-
| Taos TSL2563 || Ambient light sensor
+
| Taos TSL2563 || tsl2563 || Ambient light sensor
 
|bgcolor="lime"| [http://www.taosinc.com/getfile.aspx?type=press&file=tsl2562-e40.pdf datasheet]
 
|bgcolor="lime"| [http://www.taosinc.com/getfile.aspx?type=press&file=tsl2562-e40.pdf datasheet]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.33
|bgcolor="lime"| 2.6.33
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/23/47 3.14]
|bgcolor="lime"| Yes
+
|bgcolor="lime"| 3.15
 
|-
 
|-
| LP5523 || LED driver
+
| LP5523 || leds-lp5523 || LED driver
 
|bgcolor="lime"| [http://www.ti.com/product/LP5523 documentation]
 
|bgcolor="lime"| [http://www.ti.com/product/LP5523 documentation]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.37-rc2
|bgcolor="lime"| 2.6.37-rc2
+
|bgcolor="lime" colspan="2"| 3.1-rc1
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/497 3.13]
|bgcolor="lime"| 3.1-rc1
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/166 3.13]
 
|-
 
|-
| Sony ACX565AKM || LCD panel
+
| Sony ACX565AKM || panel-sony-acx565akm || LCD panel
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.35
|bgcolor="lime"| 2.6.35
+
|bgcolor="lime" colspan="2"| 2.6.36
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [http://marc.info/?l=linux-omap&m=139030195215292&w=2 3.15]
|bgcolor="lime"| 2.6.36
 
 
|-
 
|-
| TI TSC2005 || Touchscreen controller
+
| TI TSC2005 || tsc2005 || Touchscreen controller
 
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tsc2005 datasheet]
 
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tsc2005 datasheet]
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime" colspan="2"| 2.6.39-rc1
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=3dad5356aa47097cf67027cf0a07298b4f5baef6 3.3-rc1]
|bgcolor="lime"| Yes
+
|bgcolor="yellow"| [https://lkml.org/lkml/2014/4/5/103 PATCHv2 (2014-04-06)]
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=3dad5356aa47097cf67027cf0a07298b4f5baef6 3.3-rc1]
+
|bgcolor="red"| No
 +
|-
 +
| WL1251 || wl1251_spi wl1251 || 802.11b/g WiFi
 +
|bgcolor="yellow"| code
 +
|bgcolor="lime" colspan="2"| 2.6.31
 +
|bgcolor="lime" colspan="2"| 2009-11-22
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/12/5/649 3.15-rc1]
 +
|bgcolor="yellow"| [http://www.spinics.net/lists/linux-omap/msg104474.html PATCHv1 (2014-03-13)]
 +
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/ti-connectivity wl1251-fw.bin wl1251-nvs.bin]
 
|-
 
|-
| WL1251 || 802.11b/g WiFi
+
| * || || Packet injection support
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [https://lkml.org/lkml/2013/10/26/148 3.14]
|bgcolor="lime"| 2.6.31
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 2009-11-22
 
 
|-
 
|-
| Si4713 || FM transmitter
+
| Si4713 || radio-si4713 si4713-i2c || FM transmitter
 
|bgcolor="lime"| [http://www.silabs.com/Support%20Documents/TechnicalDocs/AN332.pdf datasheet]
 
|bgcolor="lime"| [http://www.silabs.com/Support%20Documents/TechnicalDocs/AN332.pdf datasheet]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.32
|bgcolor="lime"| 2.6.32
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="yellow"| [https://lkml.org/lkml/2014/4/6/29 RFC (2014-04-06)]
|bgcolor="lime"| Yes
+
|bgcolor="red"| No
 
|-
 
|-
| TPA6130a2 || Headphone amplifier
+
| TPA6130a2 || snd-soc-tpa6130a2 || Headphone amplifier
 
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tpa6130a2 datasheet]
 
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tpa6130a2 datasheet]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.33
|bgcolor="lime"| 2.6.33
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f95a48834cb9c581eec952215666a323136f339f 3.13-rc1]
|bgcolor="lime"| Yes
+
|bgcolor="lime"| 3.13
 +
|-
 +
| TLV320AIC3X || snd-soc-tlv320aic3x || Digital audio data serial
 +
|bgcolor="lime"| [http://www.ti.com/product/tlv320aic33#technicaldocuments ti.com]
 +
|bgcolor="lime" colspan="2"| 2.6.25
 +
|bgcolor="lime" colspan="2"| Yes
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/500 3.13]
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| Board || snd-soc-rx51 || Sound SoC Wiring
 +
|bgcolor="cyan"| N/A
 +
|bgcolor="lime" colspan="2"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/soc/omap/rx51.c Yes]
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/1/19/170 Yes]
 +
|bgcolor="red"| No
 +
|bgcolor="yellow"| [https://lkml.org/lkml/2014/4/5/92 PATCH (2014-04-06)]
 +
|bgcolor="red"| No
 
|-
 
|-
| TLV320AIC3X || Digital audio data serial
+
| * || || All sound alsa switches and channels
|bgcolor="yellow"| code
+
|bgcolor="yellow"| In maemo fremantle kernel
|bgcolor="lime"| Yes
+
|bgcolor="red"| No
|bgcolor="lime"| 2.6.25
+
|bgcolor="red"| No
|bgcolor="lime"| Yes
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="lime"| Yes
 
 
|-
 
|-
| GPIO || Proximity sensor
+
| GPIO || gpio-keys || Proximity sensor
 
|bgcolor="cyan"| N/A
 
|bgcolor="cyan"| N/A
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/509 3.13]
 
|-
 
|-
| GPIO || Keyboard
+
| Phonet || phonet || Modem protocol
|bgcolor="cyan"| N/A (layout: code)
+
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.28
|bgcolor="lime"| 2.6.33
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
 
|-
 
|-
| Phonet || Modem protocol
+
| HSI || hsi || Modem Bus Framework
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b1a808ff436343956a6ae63178ea1810c5e5a3a1 3.4-rc2]
|bgcolor="lime"| 2.6.28
+
|bgcolor="cyan" colspan="4"| N/A
|bgcolor="cyan" colspan="2"| N/A
 
 
|-
 
|-
| HSI || Modem Bus Framework
+
| Omap SSI || omap-ssi || Synchronous Serial Interface
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="yellow" colspan="2"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-03-28)]
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b1a808ff436343956a6ae63178ea1810c5e5a3a1 3.4-rc2]
+
|bgcolor="gray" colspan="2"| No
|bgcolor="cyan" colspan="2"| N/A
+
|bgcolor="yellow"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-03-28)]
 +
|bgcolor="red"| No
 
|-
 
|-
| Omap SSI || Synchronous Serial Interface
+
| Modem || n900-modem || modem PM etc.
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="yellow"| [http://article.gmane.org/gmane.linux.kernel/1153543 RFCv5 (2011-06-10)]
+
|bgcolor="yellow" colspan="2"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-04-28)]
 +
|bgcolor="gray" colspan="2"| No
 +
|bgcolor="yellow"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-04-28)]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|-
 +
| * ssi-protocol || ssi_protocol || HSI client driver used by N900
 +
|bgcolor="yellow"| code
 +
|bgcolor="yellow" colspan="2"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-03-28)]
 +
|bgcolor="gray" colspan="2"| No
 +
|bgcolor="yellow"| [https://lkml.org/lkml/2014/3/28/492 PATCHv3 (2014-03-28)]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|-
 +
| * cmt_speech || cmt_speech || HSI client driver used by N900
 +
|bgcolor="yellow"| code
 +
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900/source/d5da1f5357345ad270a491ce285c78dcf901a7ff:drivers/hsi/clients/cmt_speech.c Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="gray" colspan="2"| No
 +
|bgcolor="red" colspan="2"| 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 gps2.c]
+
|bgcolor="cyan" colspan="6"| 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="6"| Client SUPL application: http://www.tajuma.com/supl/index.html
 
|-
 
|-
| isp1704 || USB charger detector
+
| rx51_battery || rx51_battery || Battery design capacity, battery temperature
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=04930baf28f08cd275e4afbf5a335b42335705df 3.8]
|bgcolor="lime"| 2.6.37-rc1
+
|bgcolor="lime" colspan="2"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=7605c0b0d384ec98f80abc6ac2148a6cd993026c 3.8]
|bgcolor="lime"| Yes
+
|bgcolor="yellow"|[https://lkml.org/lkml/2014/3/1/122 PATCHv2 (2014-03-01)]
|bgcolor="lime"| 2011-04-20
+
|bgcolor="red"| No
 
|-
 
|-
| bq27200 || Battery monitor chip
+
| bq27200 || bq27x00_battery || Battery monitor chip
 
|bgcolor="lime"| [http://www.ti.com/product/bq27200 documentation]
 
|bgcolor="lime"| [http://www.ti.com/product/bq27200 documentation]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.28
|bgcolor="lime"| 2.6.28
+
|bgcolor="lime" colspan="2"| [https://lkml.org/lkml/2011/11/25/190 3.3-rc1]
|bgcolor="lime"| [https://lkml.org/lkml/2011/11/25/190 patch]
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| [https://lkml.org/lkml/2011/11/25/190 3.3-rc1]
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/498 3.13]
 +
|-
 +
| isp1707a || isp1704_charger || USB charger detector
 +
|bgcolor="lime"| [http://pdf.datasheetz.com/NXP/ISP1704A_1/ISP1704A_1.pdf datasheet]
 +
|bgcolor="lime" colspan="2"| 2.6.37-rc1
 +
|bgcolor="lime" colspan="2"| 2011-04-20
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/30/189 3.14]
 +
|bgcolor="lime"| 3.15
 +
|-
 +
| bq24150a || bq2415x_charger || Battery charger
 +
|bgcolor="lime"| [http://www.ti.com/product/bq24150a documentation]
 +
|bgcolor="lime" colspan="2"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=0bc98cc6155205b615a9d29a2d54d1b839521c04 3.8]
 +
|bgcolor="lime" colspan="2"| [https://lkml.org/lkml/2013/11/19/106 3.14]
 +
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=138531187226431&w=2 3.14]
 +
|bgcolor="lime"| 3.15
 
|-
 
|-
| OneNAND || Flash memory
+
| OneNAND || ??? || Flash memory
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.15
|bgcolor="lime"| 2.6.15
+
|bgcolor="lime" colspan="2"| Yes
|bgcolor="lime"| Yes
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/496 3.13]
 
|-
 
|-
| LIS302DL || Accelerometers
+
| LIS302DL || lis3lv02d_i2c lis3lv02d || Accelerometers
 
|bgcolor="lime"| [http://www.st.com/stonline/products/literature/ds/12726.pdf datasheet]
 
|bgcolor="lime"| [http://www.st.com/stonline/products/literature/ds/12726.pdf datasheet]
|bgcolor="lime"| Yes
+
|bgcolor="lime" colspan="2"| 2.6.32
|bgcolor="lime"| 2.6.32
+
|bgcolor="lime" colspan="2"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=3b5112011508c3d92938438db506c6794e8a61a5 3.5-rc1]
|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="yellow"| [http://www.spinics.net/lists/devicetree/msg15747.html WIP (2013-12-13)]
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=3b5112011508c3d92938438db506c6794e8a61a5 3.5-rc1]
 
|-
 
| ADP 1653 || Flash Torch
 
|bgcolor="yellow"| code
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| 3.1-rc1
 
|bgcolor="lime"| Yes
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
|-
| rx51_battery || Battery design capacity, battery temperature
+
| ADP 1653 || adp1653 || Flash Torch
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.analog.com/static/imported-files/data_sheets/ADP1653.pdf datasheet]
|bgcolor="lime"| [https://lkml.org/lkml/2012/10/30/446 Yes]
+
|bgcolor="lime" colspan="2"| 3.1-rc1
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=04930baf28f08cd275e4afbf5a335b42335705df 3.8]
+
|bgcolor="yellow" colspan="2"| [https://lkml.org/lkml/2013/2/17/61 WIP]
|bgcolor="lime"| [https://lkml.org/lkml/2012/11/19/194 Yes]
+
|bgcolor="red" colspan="2"| No, depends on omap3isp
|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="red"| No
 
 
|-
 
|-
| STM VS6555 || Webcam
+
| STM VS6555 || smiapp || 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="yellow" colspan="2"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=ccfc97bdb5ae8b8edc55169ac6924e08449836ac 3.4-rc4] (broken)
|bgcolor="red"| No
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
|bgcolor="lime"| Yes
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="red" colspan="2"| No, depends on omap3isp
 +
|bgcolor="lime"| No firmware needed
 
|-
 
|-
| ET8EK8 || Main Camera
+
| ET8EK8 || et8ek8 || Main Camera
 
|bgcolor="lime"| [http://www.retiisi.org.uk/~sakke/foo/SMIA95_AF_camera%20module_APL_090511.doc datasheet]
 
|bgcolor="lime"| [http://www.retiisi.org.uk/~sakke/foo/SMIA95_AF_camera%20module_APL_090511.doc datasheet]
|bgcolor="lime"| Yes
+
|bgcolor="yellow"| [https://gitorious.org/linux-n900/linux-n900/source/8a80ef98885813ab38672f80b2f9548f969963a1:drivers/media/i2c/smia/et8ek8.c Yes] (broken)
 
|bgcolor="red"| No
 
|bgcolor="red"| No
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="red" colspan="2"| No, depends on omap3isp
 +
|bgcolor="lime"| Firmware was integrated into driver (it was only data structure)
 
|-
 
|-
| AD5820 || Autofocus
+
| AD5820 || ad5820 || Autofocus
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://natisbad.org/N900/ref/AD5821.pdf datasheet for AD5821, which may be similar]
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900/commit/661caf226fee7a8f54ac3559787f7474b4917f82 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900 Yes]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="red" colspan="2"| No, depends on omap3isp
 
|-
 
|-
| BCM2048 || Bluetooth
+
| BCM2048 || hci_h4p || Bluetooth
 
|bgcolor="yellow"| old code
 
|bgcolor="yellow"| old code
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/drivers/bluetooth/hci_h4p/ Yes]
+
|bgcolor="greenyellow" colspan="2"| [https://lkml.org/lkml/2014/1/21/401 3.15 (staging)]
|bgcolor="red"| No
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900/commit/6aef8b21ec95e61f89cd372326d8adafafe9e244 Yes]
|bgcolor="lime"| Yes
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="red" colspan="2"| No
 +
|bgcolor="yellow"| [https://api.merproject.org/public/source/nemo:devel:hw:ti:omap3:n900/bcm-bt-firmware/bcm-bt-firmware-0.21rc3.tar.bz2 bcmfw.bin]
 
|-
 
|-
| * || FM/RDS receiver
+
| * || radio-bcm2048 || FM/RDS receiver
 
|bgcolor="yellow"| old code
 
|bgcolor="yellow"| old code
|bgcolor="lime"| [http://www.mail-archive.com/linux-media@vger.kernel.org/msg05142.html Yes]
+
|bgcolor="greenyellow" colspan="2"| [https://www.linuxtv.org/patch/20393/ 3.14 (staging)]
|bgcolor="red"| No
+
|bgcolor="lime"| [https://gitorious.org/linux-n900/linux-n900/commit/61455fd64f72297f63189122d3746435366e1851 Yes]
|bgcolor="lime"| Yes
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="red" colspan="2"| No
 
|-
 
|-
| IR Diode on GPIO || Infrared/CIR transmitter
+
| IR Diode on PWM GPIO || ir-rx51 || Infrared/CIR transmitter
 
|bgcolor="cyan"| N/A
 
|bgcolor="cyan"| N/A
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75258.html Yes]
+
|bgcolor="yellow" colspan="2"| [http://www.spinics.net/lists/linux-omap/msg75258.html 3.7-rc1] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/media/rc/Kconfig?id=a62a6e98c370ccca37d353a5f763b532411a4c14 (broken since v3.8-rc4)]
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75258.html 3.7-rc1]
+
|bgcolor="lime" colspan="2"| [http://www.spinics.net/lists/linux-omap/msg75257.html 3.7-rc1]
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg75257.html Yes]
+
|bgcolor="red" colspan="2"| 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-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" colspan="2"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1c6b7c2108bdb0c6a17044830028a649dbaca913 3.13-rc2]
|bgcolor="red"| No
+
|bgcolor="lime" colspan="2"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d2065e2b5bb3ec986f0f3ba044a81a136767d0b4 3.13-rc1]
|bgcolor="lime"| [http://mxr.maemo.org/fremantle/source/kernel/arch/arm/mach-omap2/board-rx51-audio.c Yes]
+
|bgcolor="red" colspan="2"| No
|bgcolor="red"| No
 
 
|}
 
|}
  
Some patches are in meego obs repository: https://build.pub.meego.com/package/files?package=kernel-adaptation-n900&project=CE%3AAdaptation%3AN900
+
== Kernel git repository for N900 ==
  
== Camera ==
+
There is git repository for upstream linux kernel with all N900 patches.
  
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.
+
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.
 +
 
 +
== Kernel Compilation ==
 +
 
 +
export ARCH=arm
 +
export CROSS_COMPILE=arm-linux-gnueabi-
 +
make rx51_defconfig
 +
make zImage modules
 +
 
 +
== DT Kernel Compilation ==
 +
 
 +
Make sure this is enabled in the kernel configuration:
 +
 
 +
CONFIG_ARM_APPENDED_DTB=y
 +
CONFIG_ARM_ATAG_DTB_COMPAT=y
 +
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y
 +
CONFIG_PINCTRL_SINGLE=y
 +
CONFIG_REGULATOR_TWL4030=y
 +
CONFIG_REGULATOR_FIXED_VOLTAGE=y
 +
 
 +
Compile Kernel, Modules and DTB file:
 +
 
 +
export ARCH=arm
 +
export CROSS_COMPILE=arm-linux-gnueabi-
 +
make zImage
 +
make modules
 +
make omap3-n900.dtb
 +
 
 +
Create combined kernel image by appending the DTB file:
 +
 
 +
cat arch/arm/boot/zImage arch/arm/boot/dts/omap3-n900.dtb > zImage
 +
 
 +
Install Modules:
 +
 
 +
make INSTALL_MOD_PATH=/mnt/target modules_install
 +
 
 +
== Modem Status in Mainline Kernel ==
 +
 
 +
Missing drivers to have a working modem in the mainline kernel:
 +
* omap-ssi - the modem is attached via ssi, this driver adds support for the ssi hardware of the omap processor.
 +
* ssi-protocol - this adds support for the protocol used to to communicate with the modem (AKA McSAAB).
 +
* cmt-speech - this adds support for the protocol used to exchange peech data with the modem
 +
* cmt - this driver handles the modem's GPIO pins and is needed by ssi-protocol and cmt-speech.
 +
 
 +
[[User:Sre|sre]] is currently working on getting the modem supported in the mainline kernel.
 +
 
 +
== Bluetooth Status in Mainline Kernel ==
 +
 
 +
This is the TODO list to get the hci_h4p driver into the mainline kernel:
 +
 
 +
Use hdev->setup callback for firmware loading and initial setup
 +
  Note 1: Since they are all HCI commands anyway, you can nicely use the sync interface we added for that
 +
  Note 2: Example: btusb.c
 +
Review MAC address setup (driver, which loads config from eeprom?)
 +
https://lkml.org/lkml/2013/10/24/375
 +
 
 +
== M-Shield ==
 +
 
 +
For M-Shield AES, SHA1 and MD5 acceleration is needed updated signed bootloader X-Loader. Without it M-Shield crashing.
 +
 
 +
More info on: http://maemo.org/community/maemo-developers/n900_aes_and_sha1-md5_hw_acceleration_drivers/
  
 
== U-Boot ==
 
== 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.
+
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.  
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 mainlined, but the fancy bootmenu is still missing: [http://lists.denx.de/pipermail/u-boot/2012-November/138972.html PATCH v2: ANSI terminal Bootmenu].
+
Pali Rohár has been working on getting the N900 support into the mainline U-Boot:
  
Git repository with N900 patches based on U-Boot master is here: https://gitorious.org/u-boot-shr/u-boot (branch pali)
+
{| class="wikitable"
 
+
!description
Thread on talk.maemo.org where is last new version: http://talk.maemo.org/showthread.php?t=81613
+
!date
 +
!status
 +
|-
 +
|Board Support
 +
|2012-10-29
 +
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=ed407be53e1e8f0be90d5723ca71ab1c37e2eed8 mainline]
 +
|-
 +
|Bootmenu Support
 +
|2013-03-07
 +
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=d999398822c6d57335677bc4ecc6bea4a569492f mainline]
 +
|}
  
== Charging ==
+
Now all N900 patches are in upstream U-Boot mainline project (part of U-Boot 2013.04). Source code is on http://git.denx.de/?p=u-boot.git
  
Charging is currently done with a shell script, which and "i2c-dev" kernel module.
+
Debian packaging for Maemo is in this git repository: https://gitorious.org/u-boot-shr/u-boot (branch maemo).
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
 
[https://lkml.org/lkml/2011/12/7/626 here]. Recently (3.3-rc1) the kernel got a
 
new Charge Manager Framework [https://lkml.org/lkml/2012/1/10/514 (Announcement)],
 
which will help with this task. You can find its documentation under:
 
Documentation/power/charger-manager.txt
 
  
== Modem ==
+
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
  
The modem is connected via a bus called SSI, which is an old version of HSI.
+
More info about U-Boot on N900 is in [http://talk.maemo.org/showpost.php?p=1150740&postcount=1 first post].
In linux multiple things are involved to get it working:
 
  
* SSI driver (not yet mainline, WIP)
+
== Flashing ==
** 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:
+
There is an open source flasher application called 0xFFFF, which is working with the Nokia N900.
  
* [http://article.gmane.org/gmane.linux.kernel/1153543 HSI: omap_ssi: OMAP SSI driver]
+
* 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]
+
* Packages are available in Debian & Ubuntu (apt-get install 0xffff)
* 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]
+
* Gentoo Ebuild is available in ixit overlay (emerge -av sys-apps/0xffff::ixit )

Revision as of 13:44, 7 April 2014

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

also see: N900/Changelog

Colors:

  • Green = Available
  • Yellow = Work in Progress (WIP), for docs: no documentation, but kernel code available
  • Red = Missing
  • Gray = Deprecated
  • Cyan = Not Available (N/A)
Chip Driver name Purpose Docs Driver Board Device Tree Firmware
Patch Mainline Patch Mainline Driver DTS
OMAP3430 System-on-chip OMAP34xx TRM Yes Yes < 3.13 3.13
* Cortex A8 CPU ARM infocenter Yes N/A < 3.13 3.13
* * ARMv7 Instruction set ARM infocenter Yes N/A
* * NEON Media Extensions ARM infocenter Yes N/A
* * Thumb Code compression ARM infocenter 2.6.12 N/A
* * Thumb2 Code compression ARM infocenter Yes 3.13-rc1 3.14-rc6 N/A
* * ThumbEE Instruction Set for JIT compilers ARM infocenter Yes N/A (Userspace: Java VM?)
* * VFP Floating-point coprocessor ARM infocenter 2.6.12 N/A
* M-Shield omap-aes omap-sham AES, SHA1 and MD5 acceleration (needs updated X-Loader) code 2.6.37-rc1 Yes 3.13 3.13-rc3
* IOMMU omap-iommu OMAP3 IO Memory Management Unit OMAP34xx TRM Yes N/A 3.15
* OMAP 3 Camera ISP omap3-isp OMAP3 Camera Chip Connection Bus OMAP34xx TRM 2.6.39-rc1 (broken) N/A No
* OMAP DSS ??? Video HW abstraction layer OMAP34xx TRM Yes N/A 3.15
* OMAP DRM ??? KMS video driver N/A 3.3-rc1 N/A No
* TMS320 C64x tidspbridge DSP (also called IVA 2+) datasheet Yes (broken since 3.13-rc2) N/A (Userspace: gst-dsp) No
* * DSP patches for Maemo/N900 code Yes No N/A
* PowerVR SGX530 pvrsrvkm omaplfb OpenGL ES and OpenVG acceleration kernel code (userspace is closed) Yes No, not possible Yes No, not possible No No
* OMAP Watchdog omap_wdt Watchdog OMAP34xx TRM 3.8 Yes < 3.13 3.13
* OMAP MMC/SD/SDIO omap_hsmmc eMMC OMAP34xx TRM Yes Yes < 3.13 3.13-rc3
* OMAP MMC/SD/SDIO omap_hsmmc SD/MMC card OMAP34xx TRM Yes Yes < 3.13 3.13
TI TWL4030 twl-core multifunction (I2C) TPS65950 TRM N/A < 3.13 3.13
* ??? Audio part of TI TWL4030 Yes Yes 3.13
* twl4030-vibra Vibrator part of TI TWL4030 Yes 2.6.39-rc1 < 3.13 3.13
* rtc-twl Real-Time Clock part of TI TWL4030 Yes N/A < 3.13 3.13
* twl4030_wdt Watchdog part of TI TWL4030 3.8 Yes < 3.13 3.13
* twl4030_keypad Keypad part of TI TWL4030 2.6.33 Yes 3.14 3.15
* twl4030_pwrbutton Power Button part of TI TWL4030 Yes Yes 3.14 3.14
* twl4030_madc Analog Digital Converter part of TI TWL4030 Yes Yes 3.15 PATCHv1 (2014-03-18)
GPIO gpio-keys Camera button N/A Yes Yes < 3.13 3.13
Taos TSL2563 tsl2563 Ambient light sensor datasheet 2.6.33 Yes 3.14 3.15
LP5523 leds-lp5523 LED driver documentation 2.6.37-rc2 3.1-rc1 3.13 3.13
Sony ACX565AKM panel-sony-acx565akm LCD panel code 2.6.35 2.6.36 3.15
TI TSC2005 tsc2005 Touchscreen controller datasheet 2.6.39-rc1 3.3-rc1 PATCHv2 (2014-04-06) No
WL1251 wl1251_spi wl1251 802.11b/g WiFi code 2.6.31 2009-11-22 3.15-rc1 PATCHv1 (2014-03-13) wl1251-fw.bin wl1251-nvs.bin
* Packet injection support code 3.14 N/A
Si4713 radio-si4713 si4713-i2c FM transmitter datasheet 2.6.32 Yes RFC (2014-04-06) No
TPA6130a2 snd-soc-tpa6130a2 Headphone amplifier datasheet 2.6.33 Yes 3.13-rc1 3.13
TLV320AIC3X snd-soc-tlv320aic3x Digital audio data serial ti.com 2.6.25 Yes 3.13 3.13
Board snd-soc-rx51 Sound SoC Wiring N/A Yes Yes No PATCH (2014-04-06) No
* All sound alsa switches and channels In maemo fremantle kernel No No N/A
GPIO gpio-keys Proximity sensor N/A Yes Yes < 3.13 3.13
Phonet phonet Modem protocol code 2.6.28 N/A
HSI hsi Modem Bus Framework code 3.4-rc2 N/A
Omap SSI omap-ssi Synchronous Serial Interface code PATCHv3 (2014-03-28) No PATCHv3 (2014-03-28) No
Modem n900-modem modem PM etc. code PATCHv3 (2014-04-28) No PATCHv3 (2014-04-28) No
* ssi-protocol ssi_protocol HSI client driver used by N900 code PATCHv3 (2014-03-28) No PATCHv3 (2014-03-28) No
* cmt_speech cmt_speech HSI client driver used by N900 code Yes 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
rx51_battery rx51_battery Battery design capacity, battery temperature code 3.8 3.8 PATCHv2 (2014-03-01) No
bq27200 bq27x00_battery Battery monitor chip documentation 2.6.28 3.3-rc1 < 3.13 3.13
isp1707a isp1704_charger USB charger detector datasheet 2.6.37-rc1 2011-04-20 3.14 3.15
bq24150a bq2415x_charger Battery charger documentation 3.8 3.14 3.14 3.15
OneNAND ??? Flash memory code 2.6.15 Yes < 3.13 3.13
LIS302DL lis3lv02d_i2c lis3lv02d Accelerometers datasheet 2.6.32 3.5-rc1 WIP (2013-12-13) No
ADP 1653 adp1653 Flash Torch datasheet 3.1-rc1 WIP No, depends on omap3isp
STM VS6555 smiapp Front Webcam datasheet 3.4-rc4 (broken) Yes No No, depends on omap3isp No firmware needed
ET8EK8 et8ek8 Main Camera datasheet Yes (broken) No Yes No No, depends on omap3isp Firmware was integrated into driver (it was only data structure)
AD5820 ad5820 Autofocus datasheet for AD5821, which may be similar Yes No Yes No No, depends on omap3isp
BCM2048 hci_h4p Bluetooth old code 3.15 (staging) Yes No No bcmfw.bin
* radio-bcm2048 FM/RDS receiver old code 3.14 (staging) Yes No No
IR Diode on PWM GPIO ir-rx51 Infrared/CIR transmitter N/A 3.7-rc1 (broken since v3.8-rc4) 3.7-rc1 No
omap3-rom-rng omap3-rom-rng OMAP3 ROM Random Number Generator support code 3.13-rc2 3.13-rc1 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.

Kernel Compilation

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make rx51_defconfig
make zImage modules

DT Kernel Compilation

Make sure this is enabled in the kernel configuration:

CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y
CONFIG_PINCTRL_SINGLE=y
CONFIG_REGULATOR_TWL4030=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y

Compile Kernel, Modules and DTB file:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make zImage
make modules
make omap3-n900.dtb

Create combined kernel image by appending the DTB file:

cat arch/arm/boot/zImage arch/arm/boot/dts/omap3-n900.dtb > zImage

Install Modules:

make INSTALL_MOD_PATH=/mnt/target modules_install

Modem Status in Mainline Kernel

Missing drivers to have a working modem in the mainline kernel:

  • omap-ssi - the modem is attached via ssi, this driver adds support for the ssi hardware of the omap processor.
  • ssi-protocol - this adds support for the protocol used to to communicate with the modem (AKA McSAAB).
  • cmt-speech - this adds support for the protocol used to exchange peech data with the modem
  • cmt - this driver handles the modem's GPIO pins and is needed by ssi-protocol and cmt-speech.

sre is currently working on getting the modem supported in the mainline kernel.

Bluetooth Status in Mainline Kernel

This is the TODO list to get the hci_h4p driver into the mainline kernel:

Use hdev->setup callback for firmware loading and initial setup
 Note 1: Since they are all HCI commands anyway, you can nicely use the sync interface we added for that
 Note 2: Example: btusb.c
Review MAC address setup (driver, which loads config from eeprom?)
https://lkml.org/lkml/2013/10/24/375

M-Shield

For M-Shield AES, SHA1 and MD5 acceleration is needed updated signed bootloader X-Loader. Without it M-Shield crashing.

More info on: http://maemo.org/community/maemo-developers/n900_aes_and_sha1-md5_hw_acceleration_drivers/

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

Now all N900 patches are in upstream U-Boot mainline project (part of U-Boot 2013.04). Source code is on http://git.denx.de/?p=u-boot.git

Debian packaging for Maemo is in this git repository: https://gitorious.org/u-boot-shr/u-boot (branch maemo).

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

More info about U-Boot on N900 is in first post.

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
  • Packages are available in Debian & Ubuntu (apt-get install 0xffff)
  • Gentoo Ebuild is available in ixit overlay (emerge -av sys-apps/0xffff::ixit )