Difference between revisions of "N900"

From eLinux.org
Jump to: navigation, search
m (TI named its crypto stuff M-Shield)
m (ir-rx51 has DT support since 4.8-rc1)
(307 intermediate revisions by 6 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
 +
!rowspan="2"| Driver
 +
!colspan="2"| Device Tree
 +
!rowspan="2"| Firmware
 
|-
 
|-
| OMAP3430 || System-on-chip
+
! Driver !! DTS
|bgcolor="yellow"| code
+
|-
 +
| OMAP3430 || || System-on-chip
 +
|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"| ?
+
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * Cortex A8 || || CPU
 +
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/index.html ARM infocenter]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| ?
+
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 
|-
 
|-
| * Cortex A8 || CPU
+
| * * ARMv7 || || Instruction set
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| ?
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * * ARMv7 || Instruction set
+
| * * NEON || || Media Extensions
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Bcfjicfj.html ARM infocenter]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| ?
 
 
|bgcolor="cyan" colspan="2"| N/A
 
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * * NEON || Media Extensions
+
| * * Thumb || || Code compression
| ?
+
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 +
|bgcolor="lime"| 2.6.12
 +
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * * Thumb || Code compression
+
| * * Thumb2 || || Code compression
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM infocenter]
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| by 2.6.12 ?
+
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=139302413627536&w=2 3.14-rc6]
| ?
+
|bgcolor="cyan"| N/A
 
|-
 
|-
| * * Jazelle || Java acceleration
+
| * * 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"| Yes
 +
|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"| 2.6.12
 +
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| * cpuidle || || CPUidle C-states for RX-51
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98f42221501353067251fbf11e732707dbb68ce3 v4.6-rc1]
|bgcolor="lime"| by 2.6.12 ?
+
|bgcolor="cyan" colspan="2"| N/A
| ?
+
|-
 +
| * cpufreq || || CPUfreq MPU OPP values (with overclock) for RX-51
 +
|bgcolor="yellow"| code
 +
|bgcolor="cyan"| N/A
 +
|bgcolor="cyan"| N/A
 +
|bgcolor="yellow"| CPUfreq without overclock
 
|-
 
|-
| * M-Shield || AES acceleration
+
| * M-Shield AES || omap-aes || AES HW acceleration [[#M-Shield|(needs updated X-Loader)]]
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
 
 
|bgcolor="lime"| 2.6.37-rc1
 
|bgcolor="lime"| 2.6.37-rc1
| ?
+
|bgcolor="lime"| 3.13
| ?
+
|bgcolor="red"| [http://marc.info/?l=linux-omap&m=138505988009856&w=2 3.13-rc3] ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=69540a7c277d96382257216436f41abc040cc878 disabled])
 
|-
 
|-
| * OMAP 3 Camera || Is this used?
+
| * M-Shield SHA1/MD5 || omap-sham || SHA1 and MD5 HW acceleration
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| 2.6.35-rc1
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=eddca85b1a9ab451772791d03af1f016e9c4ea0b 4.2-rc1]
| ?
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=69540a7c277d96382257216436f41abc040cc878 4.1-rc2]
| ?
 
 
|-
 
|-
| * ? || Video display?
+
| * IOMMU || omap-iommu || OMAP3 IO Memory Management Unit
|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="yellow"| [http://www.spinics.net/lists/dri-devel/msg16793.html pending]
+
|bgcolor="lime" colspan="2"| 3.15
| ?
 
| ?
 
 
|-
 
|-
| * TMS320 C64x || DSP
+
| * OMAP 3 Camera ISP || omap3-isp || OMAP3 Camera Chip Connection Bus
|bgcolor="lime"| [http://www.ti.com/lit/ug/spru395b/spru395b.pdf datasheet]
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
| ?
+
|bgcolor="yellow"| 2.6.39-rc1 (broken)
| ?
+
|bgcolor="lime" colspan="2"| [http://article.gmane.org/gmane.linux.ports.arm.omap/124357 4.1-rc1]
| ?
 
|
 
 
|-
 
|-
| * IVA 2+ accelerator || Video encoder/decoder
+
| * OMAP DSS || omapdss || 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" colspan="2"| [http://marc.info/?l=linux-omap&m=139030195215292&w=2 3.15]
 
|-
 
|-
| * PowerVR SGX530 || OpenGL ES and OpenVG acceleration
+
| * OMAP DRM || omapdrm || KMS video driver
|bgcolor="red"| No
+
|bgcolor="cyan"| N/A
|bgcolor="red"| No
+
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree;f=drivers/staging/omapdrm 3.3-rc1]
|bgcolor="red"| No
+
|bgcolor="cyan" colspan="2"| N/A
|bgcolor="red"| No
 
|bgcolor="red"| No
 
 
|-
 
|-
| * OMAP Boot Tags? || Provides boot information from bootloader (NOLO)
+
| * TMS320 C64x || tidspbridge || DSP (also called IVA 2+)
| ?
+
|bgcolor="lime"| [http://www.ti.com/lit/ug/spru395b/spru395b.pdf datasheet]
| ?
+
|bgcolor="red"| No ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f190be7f39a5e480ddc5e0f49bbe670feb328c32 removed in v3.17-rc1] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=930ba4a374b96560ef9fde2145cdc454a164ddcc broken since 3.13-rc2])
| ?
+
|bgcolor="red" colspan="2"| No
| ?
 
 
|-
 
|-
| ??? || eMMC & SD/MMC card
+
| * * || || DSP patches for Maemo/N900
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
| ?
+
|bgcolor="yellow"| [https://gitorious.org/linux-n900/linux-n900 WIP]
| ?
+
|bgcolor="cyan" colspan="2"| N/A
| ?
 
| ?
 
 
|-
 
|-
| TI TWL4030 || multifunction (I2C)
+
| * PowerVR SGX530 || pvrsrvkm omaplfb || OpenGL ES and OpenVG acceleration
 +
|bgcolor="yellow"| kernel code (userspace is closed)
 +
|bgcolor="red"| Code exists, upstreaming not possible
 +
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| * || Audio
+
| * OMAP Watchdog || omap_wdt || Watchdog
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=67c0f55468443ef8a1edc6ee92f9a92e4915be24 3.8]
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * OMAP MMC/SD/SDIO || omap_hsmmc || eMMC
 +
|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"| < 3.13
 +
|bgcolor="lime"| [http://www.spinics.net/lists/arm-kernel/msg288286.html 3.13-rc3]
 +
|-
 +
| * OMAP MMC/SD/SDIO || omap_hsmmc || 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"| < 3.13
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/494 3.13]
 
|-
 
|-
| * || Power ?
+
| * || || omap_hsmmc slot-name
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZV.zip OMAP34xx TRM]
 +
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=db863d8966818d3af3e415b5f60fcfeceba803c6 4.7-rc1] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=10c1f7d32bf451d4309850c15ab1fdadccf92620 4.7-rc1]
 +
|bgcolor="cyan" colspan="2"| currently not needed
 +
|-
 +
|* temp || ti-soc-thermal || OMAP34xx temperature sensor
 +
|bgcolor="greenyellow"| code
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=9c5c87e5936e792ddca5cb876d523b6e5d6042e6 v4.4-rc1]
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=9c5c87e5936e792ddca5cb876d523b6e5d6042e6 v4.4-rc1]
 +
|bgcolor="lime"| [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=12e47442c2a1322c2762072fd6ea07462f1b04ec v4.6-rc1]
 +
|-
 +
| TI TWL4030 || twl-core || multifunction (I2C)
 +
|bgcolor="lime"| [http://www.ti.com/litv/pdf/swcu050g TPS65950 TRM]
 +
|bgcolor="cyan"| N/A
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * || ??? || Audio
 +
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 +
|bgcolor="lime" colspan="2"| [https://lkml.org/lkml/2013/10/22/520 3.13]
 +
|-
 +
| * || twl4030-vibra || Vibrator
 +
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
| ?
+
|bgcolor="lime"| < 3.13
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/520 3.13]
 
|-
 
|-
| * || Vibrator
+
| * || rtc-twl || Real-Time Clock
|bgcolor="yellow"| code
+
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * || twl4030_wdt || Watchdog
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b2c4e4b2696287671723ef986f0db23cf4f52f15 3.8]
 +
|bgcolor="lime"| < 3.13
 +
|bgcolor="lime"| 3.13
 +
|-
 +
| * || twl4030_keypad || Keypad
 +
|bgcolor="lime"| part of TI TWL4030
 +
|bgcolor="lime"| 2.6.33
 +
|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"| Yes
 
|bgcolor="lime"| Yes
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/8/458 3.14]
 +
|bgcolor="lime"| 3.14
 +
|-
 +
| * || twl4030_madc || Analog Digital Converter
 +
|bgcolor="lime"| part of TI TWL4030
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/3/15/155 3.15]
 +
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=139518444704345&w=2 3.16]
 
|-
 
|-
| * || Real-Time Clock
+
| musb || musb || USB
|bgcolor="yellow"| code
+
|bgcolor="yellow"|
 +
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
| ?
 
| ?
 
 
|-
 
|-
| STM VS6555 || Webcam
+
| * || || Forced host mode (via debugfs)
|bgcolor="lime"| [http://natisbad.org/N900/ref/VS6555.pdf datasheet]
+
|bgcolor="yellow"|
|bgcolor="red"| No
+
|bgcolor="yellow"| [http://news.gmane.org/find-root.php?message_id=201601231357.32629%40pali WIP]
|bgcolor="red"| No
+
|bgcolor="cyan" colspan="2"| N/A
|bgcolor="red"| No
 
|bgcolor="red"| No
 
 
|-
 
|-
| ET8EK8 || Main Camera
+
| GPIO || gpio-keys || Camera button
|bgcolor="yellow"| old? code
+
|bgcolor="cyan"| N/A
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
| AD5820 || Autofocus
 
|bgcolor="yellow"| old? code
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|-
 
| ADP 1653 || Flash Torch
 
|bgcolor="yellow"| code
 
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| 3.1-rc1
+
|bgcolor="lime"| < 3.13
| ? || ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/509 3.13]
 
|-
 
|-
| ? || Camera button
+
| Taos TSL2563 || tsl2563 || Ambient light sensor
|bgcolor="yellow"| old? code
 
| ?
 
| ?
 
| ?
 
| ?
 
|-
 
| Taos 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"| 2.6.33
 
|bgcolor="lime"| 2.6.33
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/11/23/47 3.14]
| ?
+
|bgcolor="lime"| 3.15
 
|-
 
|-
| LP5523 || LED
+
| LP5523 || leds-lp5523 || LED driver
|bgcolor="yellow"| code
+
|bgcolor="lime"| [http://www.ti.com/product/LP5523 documentation]
|bgcolor="lime"| Yes
 
 
|bgcolor="lime"| 2.6.37-rc2
 
|bgcolor="lime"| 2.6.37-rc2
|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"| 2.6.35
 
|bgcolor="lime"| 2.6.35
| ?
+
|bgcolor="lime" colspan="2"| [http://marc.info/?l=linux-omap&m=139030195215292&w=2 3.15]
| ?
 
 
|-
 
|-
| 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"| 2.6.39-rc1
|bgcolor="lime"| 2.6.39-rc1
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/21/451 3.16]
|bgcolor="lime"| [http://permalink.gmane.org/gmane.linux.ports.arm.omap/66438 patch]
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/21/451 3.16]
 +
|-
 +
| * || || Sysfs node for disabling device
 +
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tsc2005 datasheet]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| WL1251 || wl1251_spi wl1251 || 802.11b/g WiFi
 +
|bgcolor="yellow"| code
 +
|bgcolor="lime"| 2.6.31
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/12/5/649 3.15-rc1]
 +
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg104474.html 3.16]
 +
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/ti-connectivity wl1251-fw.bin wl1251-nvs.bin]
 +
|-
 +
| * || || Packet injection support
 +
|bgcolor="yellow"| code
 +
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/26/148 3.14]
 +
|bgcolor="cyan" colspan="2"| N/A
 +
|-
 +
| * || || Permanent mac address
 +
|bgcolor="yellow"| code
 +
|bgcolor="yellow"| [https://lkml.org/lkml/2013/12/8/35 WIP]
 +
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| WL1251 || 802.11b/g WiFi
+
| * || || Bluetooth coexistence mode configuration
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="yellow"| [https://lkml.org/lkml/2013/12/8/33 WIP]
|bgcolor="yellow"| 2.6.31
+
|bgcolor="cyan" colspan="2"| N/A
| ?
 
| ?
 
 
|-
 
|-
| LIS302DL || Accelerometers
+
| Si4713 || radio-si4713 si4713-i2c || FM transmitter
|bgcolor="lime"| [http://www.st.com/stonline/products/literature/ds/12726.pdf datasheet]
+
|bgcolor="lime"| [http://www.silabs.com/Support%20Documents/TechnicalDocs/AN332.pdf datasheet]
|bgcolor="lime"| Yes
 
 
|bgcolor="lime"| 2.6.32
 
|bgcolor="lime"| 2.6.32
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/11/10/671 3.19]
| ?
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/arm/arm-soc.git/commit/arch/arm/boot/dts/omap3-n900.dts?h=for-next&id=406c07e7ed23337e01b908b2882886f48a49c30c 3.19]
 
|-
 
|-
| BCM2048 || Bluetooth
+
| TPA6130a2 || snd-soc-tpa6130a2 || Headphone amplifier
|bgcolor="yellow"| old code
+
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tpa6130a2 datasheet]
|bgcolor="red"| No
+
|bgcolor="lime"| 2.6.33
|bgcolor="red"| No
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f95a48834cb9c581eec952215666a323136f339f 3.13-rc1]
|bgcolor="red"| No
+
|bgcolor="lime"| 3.13
|bgcolor="red"| No
 
 
|-
 
|-
| * || FM/RDS receiver
+
| TLV320AIC3X || snd-soc-tlv320aic3x || Digital audio data serial
|bgcolor="yellow"| old code
+
|bgcolor="lime"| [http://www.ti.com/product/tlv320aic33#technicaldocuments ti.com]
|bgcolor="red"| No
+
|bgcolor="lime"| 2.6.25
|bgcolor="red"| No
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/500 3.13]
|bgcolor="red"| No
+
|bgcolor="lime"| 3.13
|bgcolor="red"| No
 
 
|-
 
|-
| Si4713 || FM transmitter
+
| Board || snd-soc-rx51 || Sound SoC Wiring
|bgcolor="yellow"| code
+
|bgcolor="cyan"| N/A
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/soc/omap/rx51.c Yes]
|bgcolor="lime"| 2.6.32
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/4/28/308 3.16]
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/4/28/302 3.16]
| ?
 
 
|-
 
|-
| ? || Infrared/CIR transmitter
+
| * || || All sound alsa switches and channels
|bgcolor="red"| No
+
|bgcolor="yellow"| In maemo fremantle kernel
|bgcolor="red"| No
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| TPA6130a2 || Headphone amplifier
+
| GPIO || gpio-keys || Proximity sensor
|bgcolor="lime"| [http://www.ti.com/lit/gpn/tpa6130a2 datasheet]
+
|bgcolor="cyan"| N/A
 
|bgcolor="lime"| Yes
 
|bgcolor="lime"| Yes
|bgcolor="lime"| 2.6.33
+
|bgcolor="lime"| < 3.13
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/509 3.13]
| ?
+
|-
 +
| Phonet || phonet || Modem protocol
 +
|bgcolor="yellow"| code
 +
|bgcolor="lime"| 2.6.28
 +
|bgcolor="cyan" colspan="2"| N/A
 
|-
 
|-
| TLV320AIC3X || Digital audio data serial
+
| HSI || hsi || Modem Bus Framework
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=b1a808ff436343956a6ae63178ea1810c5e5a3a1 3.4-rc2]
|bgcolor="lime"| 2.6.25
+
|bgcolor="cyan" colspan="2"| N/A
| ?
 
| ?
 
 
|-
 
|-
| ? || Proximity sensor
+
| Omap SSI || omap-ssi || Synchronous Serial Interface
| ? || ? || ? || ? || ?
+
|bgcolor="yellow"| code
 +
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/167 3.16]
 +
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/167 3.16]
 +
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/165 3.16]
 
|-
 
|-
| ? || Keyboard
+
| Modem || n900-modem || modem PM etc.
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/167 3.16]
|bgcolor="lime"| 2.6.33
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/167 3.16]
| ?
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/166 3.16]
| ?
 
 
|-
 
|-
| Phonet || Modem bus?
+
| * ssi-protocol || ssi_protocol || HSI client driver used by N900
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [https://lkml.org/lkml/2014/5/10/167 3.16]
|bgcolor="lime"| 2.6.28
+
|bgcolor="cyan" colspan="2"| N/A
| ?
 
| ?
 
 
|-
 
|-
| * SSI McSAAB IMP? || Modem
+
| * cmt-speech || cmt_speech || HSI client driver used by N900
|bgcolor="yellow"| old code
+
|bgcolor="yellow"| code
|bgcolor="red"| No
+
|bgcolor="lime"| [https://lkml.org/lkml/2015/3/21/155 4.1-rc1]
|bgcolor="red"| No
+
|bgcolor="cyan" colspan="2"| N/A
|bgcolor="red"| No
 
|bgcolor="red"| No
 
 
|-
 
|-
| * * TI NaviLink NL5350 || GPS
+
| * 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="red"| No
+
|bgcolor="cyan" colspan="3"| Userspace [http://luke.dashjr.org/tmp/code/gps2.c gps2.c]
|bgcolor="red"| No
+
|-
|bgcolor="red"| No
+
| *  || || A-GPS
|bgcolor="red"| No
+
|bgcolor="yellow"| Uses SUPL
 +
|bgcolor="cyan" colspan="3"| Client SUPL application: http://www.tajuma.com/supl/index.html
 
|-
 
|-
| isp1704 || Battery charger detecter?
+
| rx51_battery || rx51_battery || Battery design capacity, battery temperature
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|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/2014/3/1/122 3.17]
 +
|bgcolor="lime"|[https://git.kernel.org/cgit/linux/kernel/git/arm/arm-soc.git/commit/arch/arm/boot/dts/omap3-n900.dts?h=for-next&id=28398c69a7f99861d9631d5cfbadf8cd054ccf93 3.19]
 +
|-
 +
| bq27200 || bq27x00_battery || Battery monitor chip
 +
|bgcolor="lime"| [http://www.ti.com/product/bq27200 documentation]
 +
|bgcolor="lime"| 2.6.28
 +
|bgcolor="lime"| < 3.13
 +
|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"| 2.6.37-rc1
 
|bgcolor="lime"| 2.6.37-rc1
| ?
+
|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"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=0bc98cc6155205b615a9d29a2d54d1b839521c04 3.8]
 +
|bgcolor="lime"| [http://marc.info/?l=linux-omap&m=138531187226431&w=2 3.14]
 +
|bgcolor="lime"| 3.15
 
|-
 
|-
| bq27x00 || Battery charger
+
| OneNAND || onenand omap2 || Flash memory
 
|bgcolor="yellow"| code
 
|bgcolor="yellow"| code
|bgcolor="lime"| Yes
+
|bgcolor="lime"| 2.6.15
|bgcolor="lime"| 2.6.28
+
|bgcolor="lime"| < 3.13
|bgcolor="lime"| [https://build.pub.meego.com/package/view_file?file=linux-2.6-omap-rx51-bq27x00-i2c-address.patch&package=kernel-adaptation-n900&project=Project%3ADE%3ATrunk&srcmd5=8ca3e6ef69d03055c4046e47e7bf6391 patch]
+
|bgcolor="lime"| [https://lkml.org/lkml/2013/10/22/496 3.13]
 +
|-
 +
| LIS302DL || lis3lv02d_i2c lis3lv02d || Accelerometers
 +
|bgcolor="lime"| [http://www.st.com/stonline/products/literature/ds/12726.pdf datasheet]
 +
|bgcolor="lime"| 2.6.32
 +
|bgcolor="lime"| [https://www.mail-archive.com/linux-omap@vger.kernel.org/msg115492.html 4.1-rc1]
 +
|bgcolor="lime"| [https://www.mail-archive.com/linux-omap@vger.kernel.org/msg115493.html 4.1-rc1]
 +
|-
 +
| ADP 1653 || adp1653 || Flash Torch
 +
|bgcolor="lime"| [http://www.analog.com/static/imported-files/data_sheets/ADP1653.pdf datasheet]
 +
|bgcolor="lime"| 3.1-rc1
 +
|bgcolor="lime"| [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=074c57a25fa2c83a264f3fdbb99a9fef0229884d 4.2-rc1]
 +
|bgcolor="lime"| [http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=14628e4444ea8b5ea058e1bd663ff62f2e731feb v4.6-rc1]
 +
|-
 +
| STM VS6555 || smiapp || Front Webcam
 +
|bgcolor="lime"| [http://natisbad.org/N900/ref/VS6555.pdf datasheet]
 +
|bgcolor="yellow"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=ccfc97bdb5ae8b8edc55169ac6924e08449836ac 3.4-rc4] (broken)
 +
|bgcolor="lime"| [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=a2cec3c0199ab4d7c0d83dee7fc69bd22eef7e12 4.0-rc1]
 
|bgcolor="red"| No
 
|bgcolor="red"| No
 +
|bgcolor="lime"| No firmware needed
 +
|-
 +
| ET8EK8 || et8ek8 || Main Camera
 +
|bgcolor="lime"| [http://www.retiisi.org.uk/~sakke/foo/SMIA95_AF_camera%20module_APL_090511.doc datasheet]
 +
|bgcolor="yellow"| [https://gitorious.org/linux-n900/linux-n900/source/8a80ef98885813ab38672f80b2f9548f969963a1:drivers/media/i2c/smia/et8ek8.c WIP] (broken)
 +
|bgcolor="red" colspan="2"| No, depends on omap3isp
 +
|bgcolor="lime"| Firmware was integrated into driver (it was only data structure)
 +
|-
 +
| AD5820 || ad5820 || Autofocus
 +
|bgcolor="lime"| [http://natisbad.org/N900/ref/AD5821.pdf datasheet for AD5821, which may be similar]
 +
|bgcolor="yellow"| [https://gitorious.org/linux-n900/linux-n900/commit/661caf226fee7a8f54ac3559787f7474b4917f82 WIP]
 +
|bgcolor="red" colspan="2"| No, depends on omap3isp
 +
|-
 +
| BCM2048 || hci_h4p || Bluetooth
 +
|bgcolor="yellow"| old code
 +
|bgcolor="red"| No ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a4102f90e87cfaa3fdbed6fdf469b23f0eeb4bfd removed in v3.18-rc1]) [https://lkml.org/lkml/2014/1/21/401 3.15 (staging)]
 +
|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]
 +
|-
 +
| * || radio-bcm2048 || FM/RDS receiver
 +
|bgcolor="yellow"| old code
 +
|bgcolor="greenyellow"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=899127b67df098e6d878f27be05dc91401cc6685 3.14 (staging)]
 +
|bgcolor="red" colspan="2"| No
 +
|-
 +
| IR Diode on PWM GPIO || ir-rx51 || Infrared/CIR transmitter
 +
|bgcolor="cyan"| N/A
 +
|bgcolor="lime"| [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]
 +
|bgcolor="lime" colspan="2"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5406176989da601736db862643d3d7ee8335815 4.8-rc1]
 +
|-
 +
| omap3-rom-rng || omap3-rom-rng || OMAP3 ROM Random Number Generator support
 +
|bgcolor="greenyellow"| code
 +
|bgcolor="lime"| [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1c6b7c2108bdb0c6a17044830028a649dbaca913 3.13-rc2]
 +
|bgcolor="lime"| [http://www.spinics.net/lists/linux-omap/msg105059.html 3.16]
 +
|bgcolor="cyan"| currently not needed
 +
|}
 +
 +
== Kernel git repository for N900 ==
 +
 +
There is git repository for upstream linux kernel with all N900 patches.
 +
 +
https://github.com/pali/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
 +
 +
== root problems in recent mainline ==
 +
 +
In recent mainline (cca 3.16+), it is impossible to use nfsroot over usb0 device. There's patch
 +
from Tony Lindgren fixing that.
 +
 +
Also for some strange reason, mmcblk? devices do not work for root filesystem. They work fine
 +
when mounted during runtime.
 +
 +
== Bluetooth Status in Mainline Kernel ==
 +
 +
The bluetooth driver is currently available in drivers/staging/nokia_h4p. There is a TODO file in that directory, which lists the code refactoring needed to get the driver out of staging.
 +
 +
Apart from the things listed in that TODO file, the driver also seems to reinvent the wheel concerning the uart port. Most code in the driver simply configures the omap serial port and duplicates code in drivers/tty/serial/omap-serial.c.
 +
 +
[[User:Sre|sre]] thinks, that the hci protocol extension code should be put into a file similar to drivers/bluetooth/hci_ll.c, which could be called drivers/bluetooth/hci_nokia.c (hci with nokia extensions). This would result in the protocol being available as hci_uart_proto for usage in a hci-uart driver.
 +
 +
A second driver would be needed, which would be similar to drivers/bluetooth/hci_ldisc.c with the following differences:
 +
* support for additional gpios
 +
* support to be instanciated from DT instead of hciattach
 +
* support for loading bluetooth hardware address from DT
 +
* support for automatical loading of bt firmware (see btusb.c)
 +
 +
== M-Shield ==
 +
 +
For M-Shield AES acceleration is needed updated signed bootloader X-Loader. Without it M-Shield crashing. SHA1 and MD5 acceleration work also without updating bootloader.
 +
 +
More info on: http://maemo.org/community/maemo-developers/n900_aes_and_sha1-md5_hw_acceleration_drivers/<br />
 +
Files are reuploaded at TMO thread: http://talk.maemo.org/showthread.php?p=1478502#post1478502
 +
 +
== 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:
 +
 +
{| class="wikitable"
 +
!description
 +
!date
 +
!status
 
|-
 
|-
| OneNAND ? || Flash memory
+
|Board Support
|bgcolor="yellow"| code
+
|2012-10-29
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=ed407be53e1e8f0be90d5723ca71ab1c37e2eed8 mainline]
|bgcolor="lime"| 2.6.15
 
| ?
 
| ?
 
 
|-
 
|-
| devfreq || DVFS Framework for Non-CPU Devices
+
|Bootmenu Support
|bgcolor="yellow"| code
+
|2013-03-07
|bgcolor="lime"| Yes
+
|bgcolor="lime"| [http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=d999398822c6d57335677bc4ecc6bea4a569492f mainline]
|bgcolor="lime"| 3.2-rc1
 
| ? || ?
 
 
|}
 
|}
 +
 +
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 [http://talk.maemo.org/showpost.php?p=1150740&postcount=1 first post].
 +
 +
== Flashing ==
 +
 +
There is an open source flasher application called 0xFFFF, which is working with the Nokia N900.
 +
 +
* Git repository is on: https://github.com/pali/0xffff
 +
* Info & discussion is on: http://talk.maemo.org/showthread.php?t=87996
 +
* Packages are available in Debian & Ubuntu (apt-get install 0xffff)
 +
* Gentoo Ebuild is available in ixit overlay (emerge -av sys-apps/0xffff::ixit )
 +
 +
== Wireshark Plugin for PhoNet ==
 +
 +
* http://sre.ring0.de/isi-wireshark-plugin/
 +
 +
== A-GPS ==
 +
 +
* Uses SUPL (Secure User Plane Location) protocol (see documentation at open mobile alliance)
 +
 +
A-GPS works by Modem requesting CPU to open a socket (it supplies domain/ip and port) [pkg type LS_SOCKET_OPEN_REQUEST_NTF]. Then the modem will continue by requesting to send some data using pkg type LS_SOCKET_SEND_REQUEST_NTF, followed by requesting to receive some data [pkg type LS_SOCKET_RECV_REQ]. Last but not least it will request to close the socket using LS_SOCKET_CLOSE_REQUEST_NTF. The wireshark plugin mentioned above can also be used to analyse A-GPS sessions (e.g. initialized by Maemo).

Revision as of 15:50, 23 August 2016

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 Device Tree Firmware
Driver DTS
OMAP3430 System-on-chip OMAP34xx TRM Yes < 3.13 3.13
* Cortex A8 CPU ARM infocenter Yes < 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.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
* cpuidle CPUidle C-states for RX-51 code v4.6-rc1 N/A
* cpufreq CPUfreq MPU OPP values (with overclock) for RX-51 code N/A N/A CPUfreq without overclock
* M-Shield AES omap-aes AES HW acceleration (needs updated X-Loader) code 2.6.37-rc1 3.13 3.13-rc3 (disabled)
* M-Shield SHA1/MD5 omap-sham SHA1 and MD5 HW acceleration code 2.6.35-rc1 4.2-rc1 4.1-rc2
* IOMMU omap-iommu OMAP3 IO Memory Management Unit OMAP34xx TRM Yes 3.15
* OMAP 3 Camera ISP omap3-isp OMAP3 Camera Chip Connection Bus OMAP34xx TRM 2.6.39-rc1 (broken) 4.1-rc1
* OMAP DSS omapdss Video HW abstraction layer OMAP34xx TRM Yes 3.15
* OMAP DRM omapdrm KMS video driver N/A 3.3-rc1 N/A
* TMS320 C64x tidspbridge DSP (also called IVA 2+) datasheet No (removed in v3.17-rc1 broken since 3.13-rc2) No
* * DSP patches for Maemo/N900 code WIP N/A
* PowerVR SGX530 pvrsrvkm omaplfb OpenGL ES and OpenVG acceleration kernel code (userspace is closed) Code exists, upstreaming not possible N/A
* OMAP Watchdog omap_wdt Watchdog OMAP34xx TRM 3.8 < 3.13 3.13
* OMAP MMC/SD/SDIO omap_hsmmc eMMC OMAP34xx TRM Yes < 3.13 3.13-rc3
* OMAP MMC/SD/SDIO omap_hsmmc SD/MMC card OMAP34xx TRM Yes < 3.13 3.13
* omap_hsmmc slot-name OMAP34xx TRM 4.7-rc1 4.7-rc1 currently not needed
* temp ti-soc-thermal OMAP34xx temperature sensor code v4.4-rc1 v4.4-rc1 v4.6-rc1
TI TWL4030 twl-core multifunction (I2C) TPS65950 TRM N/A < 3.13 3.13
* ??? Audio part of TI TWL4030 Yes 3.13
* twl4030-vibra Vibrator part of TI TWL4030 Yes < 3.13 3.13
* rtc-twl Real-Time Clock part of TI TWL4030 Yes < 3.13 3.13
* twl4030_wdt Watchdog part of TI TWL4030 3.8 < 3.13 3.13
* twl4030_keypad Keypad part of TI TWL4030 2.6.33 3.14 3.15
* twl4030_pwrbutton Power Button part of TI TWL4030 Yes 3.14 3.14
* twl4030_madc Analog Digital Converter part of TI TWL4030 Yes 3.15 3.16
musb musb USB Yes Yes Yes
* Forced host mode (via debugfs) WIP N/A
GPIO gpio-keys Camera button N/A Yes < 3.13 3.13
Taos TSL2563 tsl2563 Ambient light sensor datasheet 2.6.33 3.14 3.15
LP5523 leds-lp5523 LED driver documentation 2.6.37-rc2 3.13 3.13
Sony ACX565AKM panel-sony-acx565akm LCD panel code 2.6.35 3.15
TI TSC2005 tsc2005 Touchscreen controller datasheet 2.6.39-rc1 3.16 3.16
* Sysfs node for disabling device datasheet No N/A
WL1251 wl1251_spi wl1251 802.11b/g WiFi code 2.6.31 3.15-rc1 3.16 wl1251-fw.bin wl1251-nvs.bin
* Packet injection support code 3.14 N/A
* Permanent mac address code WIP N/A
* Bluetooth coexistence mode configuration code WIP N/A
Si4713 radio-si4713 si4713-i2c FM transmitter datasheet 2.6.32 3.19 3.19
TPA6130a2 snd-soc-tpa6130a2 Headphone amplifier datasheet 2.6.33 3.13-rc1 3.13
TLV320AIC3X snd-soc-tlv320aic3x Digital audio data serial ti.com 2.6.25 3.13 3.13
Board snd-soc-rx51 Sound SoC Wiring N/A Yes 3.16 3.16
* All sound alsa switches and channels In maemo fremantle kernel No N/A
GPIO gpio-keys Proximity sensor N/A 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 3.16 3.16 3.16
Modem n900-modem modem PM etc. code 3.16 3.16 3.16
* ssi-protocol ssi_protocol HSI client driver used by N900 code 3.16 N/A
* cmt-speech cmt_speech HSI client driver used by N900 code 4.1-rc1 N/A
* TI NaviLink NL5350 GPS (via Phonet modem protocol) reveng Userspace gps2.c
* A-GPS Uses SUPL Client SUPL application: http://www.tajuma.com/supl/index.html
rx51_battery rx51_battery Battery design capacity, battery temperature code 3.8 3.17 3.19
bq27200 bq27x00_battery Battery monitor chip documentation 2.6.28 < 3.13 3.13
isp1707a isp1704_charger USB charger detector datasheet 2.6.37-rc1 3.14 3.15
bq24150a bq2415x_charger Battery charger documentation 3.8 3.14 3.15
OneNAND onenand omap2 Flash memory code 2.6.15 < 3.13 3.13
LIS302DL lis3lv02d_i2c lis3lv02d Accelerometers datasheet 2.6.32 4.1-rc1 4.1-rc1
ADP 1653 adp1653 Flash Torch datasheet 3.1-rc1 4.2-rc1 v4.6-rc1
STM VS6555 smiapp Front Webcam datasheet 3.4-rc4 (broken) 4.0-rc1 No No firmware needed
ET8EK8 et8ek8 Main Camera datasheet WIP (broken) No, depends on omap3isp Firmware was integrated into driver (it was only data structure)
AD5820 ad5820 Autofocus datasheet for AD5821, which may be similar WIP No, depends on omap3isp
BCM2048 hci_h4p Bluetooth old code No (removed in v3.18-rc1) 3.15 (staging) No bcmfw.bin
* radio-bcm2048 FM/RDS receiver old code 3.14 (staging) No
IR Diode on PWM GPIO ir-rx51 Infrared/CIR transmitter N/A 3.7-rc1 [1] 4.8-rc1
omap3-rom-rng omap3-rom-rng OMAP3 ROM Random Number Generator support code 3.13-rc2 3.16 currently not needed

Kernel git repository for N900

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

https://github.com/pali/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

root problems in recent mainline

In recent mainline (cca 3.16+), it is impossible to use nfsroot over usb0 device. There's patch from Tony Lindgren fixing that.

Also for some strange reason, mmcblk? devices do not work for root filesystem. They work fine when mounted during runtime.

Bluetooth Status in Mainline Kernel

The bluetooth driver is currently available in drivers/staging/nokia_h4p. There is a TODO file in that directory, which lists the code refactoring needed to get the driver out of staging.

Apart from the things listed in that TODO file, the driver also seems to reinvent the wheel concerning the uart port. Most code in the driver simply configures the omap serial port and duplicates code in drivers/tty/serial/omap-serial.c.

sre thinks, that the hci protocol extension code should be put into a file similar to drivers/bluetooth/hci_ll.c, which could be called drivers/bluetooth/hci_nokia.c (hci with nokia extensions). This would result in the protocol being available as hci_uart_proto for usage in a hci-uart driver.

A second driver would be needed, which would be similar to drivers/bluetooth/hci_ldisc.c with the following differences:

  • support for additional gpios
  • support to be instanciated from DT instead of hciattach
  • support for loading bluetooth hardware address from DT
  • support for automatical loading of bt firmware (see btusb.c)

M-Shield

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

More info on: http://maemo.org/community/maemo-developers/n900_aes_and_sha1-md5_hw_acceleration_drivers/
Files are reuploaded at TMO thread: http://talk.maemo.org/showthread.php?p=1478502#post1478502

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.

Wireshark Plugin for PhoNet

A-GPS

  • Uses SUPL (Secure User Plane Location) protocol (see documentation at open mobile alliance)

A-GPS works by Modem requesting CPU to open a socket (it supplies domain/ip and port) [pkg type LS_SOCKET_OPEN_REQUEST_NTF]. Then the modem will continue by requesting to send some data using pkg type LS_SOCKET_SEND_REQUEST_NTF, followed by requesting to receive some data [pkg type LS_SOCKET_RECV_REQ]. Last but not least it will request to close the socket using LS_SOCKET_CLOSE_REQUEST_NTF. The wireshark plugin mentioned above can also be used to analyse A-GPS sessions (e.g. initialized by Maemo).