Handheld Hardware Crossreference
Handheld and PDA Linux ports are in active development for several years now, and during this time, great deal of both knowledge and code was produced. However, as the milestone of general acceptance of PDA code into Linux mainline has not yet reached, there are often duplication of effort among different ports.
However, as practice shows, variety of hardware used by handhelds are hardly bigger than those of desktop, and actually, smaller, as handheld/embedded devices has not yet reached as much popularity as desktop/laptop computers. Given this, it is fair to say that 80% of handheld software already has support with Linux drivers.
This page was set up exactly to address the issues listed above:
-
To raise awareness that there is vast amount of code to support handheld hardware, and a new port can develop quickly just by reusing them.
-
Make visible the fact that the same chips are reused in many embedded devices, and thus call for common driver, easily parametrizable with model-specific details like base address or interrupt numbers. A common driver would be prerequisite to mainline merging of handheld ports.
-
To serve as a comprehensive and easily maintainable reference where developers of different ports can lookup relevant information quickly and up-to-date.
This page is now rendered from the master xref file located at
SCM (
ChangeLog) (location is subject to change), to ease maintenance, provide consistent formatting, and have better change tracking. However, feel free to update this page directly - maintainer(s) will carefully apply changes to the master file. Alternatively, feel free to submit patches to the master file directly (e.g., for big changes).
Note that some chips (like CPUs) have large body of related documentation. In the table below, only the most comprehensive/relevant docs are linked. More information (including general one like instruction sets references) may be available at HardwareDocumentation.
| Chip/Hardware piece | Type | Handhelds using it | Docs | Driver(s) | |
| CPU | |||||
| Hitachi SH3 | CPU | jornada6x0 | |||
| Hitachi SH4 | CPU | aero8000 | |||
| DEC SA1100 | CPU | jornada820 | gpio_keys | ||
| Intel StrongARM SA1110 (arch: armv4) | CPU | ipaqh3600, jornada7x0, jornada56x | gpio_keys | ||
| Motorola DragonBall MX1 | CPU | tapwavez |
|
||
| Intel PXA250 | CPU | ipaqh1910, ipaqh3900, ipaqh5400 | gpio_keys | ||
| Intel PXA255 | CPU | asus710, ipaqh1915, ipaqh2200, ipaqh4000, ipaqh5100, ipaqh5500, loox400, liteonpro, mio336, palmtc, palmte2, zaurus-poodle, zaurus-tosa, zaurus-corgi, zaurus-shepherd, zaurus-husky |
|
gpio_keys | |
| Intel PXA261 | CPU | palmtt3 |
|
gpio_keys | |
| Intel PXA263 | CPU | htcblueangel, htchimalaya |
|
gpio_keys | |
| Intel PXA270 | CPU |
asus630 (A632N, A636N), asus730, aximx30, aximx50, compulab-cm270, htcapache, |
|
gpio_keys | |
| Intel PXA272 | CPU |
acern50, asus630 (A632, A636), |
|
gpio_keys | |
| TI OMAP310/311 | CPU | palmte, palmz71, siemenssx1 |
|
||
| TI OMAP710 | CPU | ||||
| TI OMAP730 | CPU | htctyphoon | |||
| TI OMAP750 | CPU | htchurricane | |||
| TI OMAP850 | CPU | htcprophet, htctornado, htcwizard, htcartemis, htcherald | |||
| TI OMAP1510 | CPU | ipaqh6300, nokia9300, nokia9500, palmtt, palmtt2 |
|
||
| TI OMAP5910 | CPU |
|
|||
| Samsung S3C2410X/S3C2410A (arch: armv4t, core: ARM9TDMI/ARM920T) | CPU | ipaqrz1710, acern30, ipaqh1940, neo1973-gta01, tomtomgo, tomtomgo300 |
|
gpio_keys | |
| Samsung S3C2412 (arch: armv4t, core: ARM9TDMI/ARM920T) | CPU | tomtomonev3, tomtomonev4 | gpio_keys | ||
| Samsung S3C2440A (arch: armv4t, core: ARM9TDMI/ARM920T) | CPU | ipaqrx3000, tomtomgo5x0, tomtom700, tomtomone, tomtomrider, gigabeat |
|
gpio_keys | |
| Samsung SC32442 (arch: armv4t, core: ARM9TDMI/ARM920T) | CPU | htchermes, htctrinity, neo1973-gta02, tomtomgo710, tomtomgo910 |
|
gpio_keys | |
| Sony CXD2230GA | CPU | clieux50 | |||
| RAM | |||||
| 16MB @ 0x00000000 | RAM | palmz22 | |||
| 16MB @ 0x10000000 | RAM | palmz71, palmt1 | |||
| 16MB @ 0xA0000000 | RAM | palmte2, palz31 | |||
| 32MB @ 0x10000000 | RAM | palmte, palmt2, treo600 | |||
| 32MB @ 0xA0000000 | RAM | pamlld, palmt5, palmtx, palmz72, treo650, treo700p | |||
| 64MB @ 0xA0000000 | RAM | palmtc, palmt3 | |||
| 128MB @ 0x00000000 | RAM | tapwarez2 | |||
| Peripheral Controller | |||||
| Atmel Micro? | Peripheral Controller | ipaqh3600 | micro, micro_key, micro_ts | ||
| HTC ASIC1 | Peripheral Controller | ipaqh3600 | |||
| HTC ASIC2 | Peripheral Controller | ipaqh3800, ipaqh3900 | |||
| HTC ASIC3 | Peripheral Controller |
aximx30, htcbeetles, htcblueangel, htchimalaya, |
asic3_base, asic3_mmc, asic3_keys, ds1wm, asic3_spi (TODO), asic3_leds, asic3_pwm (TODO) | ||
| HTC ASIC5 | 2xCF+RS-232 | htchimalaya,htcalpine | |||
| HTC ASIC6 | Peripheral Controller | palmtreo650 | |||
| MediaQ MQ1100/1132 | Multimedia Platform Controller | aximx5, ipaqh5000 |
|
mq11xx_base, mq1100fb | |
| MediaQ MQ1178/1188 | Multimedia Platform Controller | ipaqh2200, liteonpro (rover5p) |
|
mq11xx_base, mq1100fb | |
| nVidia GoForce 4000 | Multimedia Platform Controller | acern300 | |||
| Samsung S3CA400A01 (aka SAMCOP) | Peripheral Controller | ipaqh5000 |
|
samcop_base | |
| Samsung S3CA410X01 (aka HAMCOP) | Peripheral Controller | ipaqh2200 |
|
hamcop_base, ds1wm | |
| Philips PCA9535 | 16-bit I2C I/O expander | asus710, asus730, ipaqh6300 |
|
pca9535 | |
| Lattice LC4064ZC | CPLD |
eteng500, |
|
||
| Lattice LC4128ZC | CPLD | aximx30 | |||
| Toshiba TC200G04XB-0024 | ASIC | aximx50, asus730 |
|
||
| Xilinx Coolrunner-II XC2C64 | CPLD | aximx50, ipaqhx2000 (?), loox720, looxc550 |
|
||
| Xilinx Coolrunner-II XC2C128 | CPLD |
aximx50, |
|
||
| WiFi | |||||
| at76c503a | WiFi | ipaqh5400, ipaqh5500 | at76c503a (http://at76c503a.berlios.de/) | ||
| ISL3871IK18 (Asus WL-155) | WiFi | asus716, palmtc | hostap | ||
| Marvell 88W8305-B2 (SyChip WLAN6061EB) | WiFi | acern50, palmld |
|
||
| Marvell 88W8381 (SyChip WLAN6064EB) | WiFi | palmtx |
|
||
| Marvell 88W8385 (CF8385) | WiFi | asus696 | libertas+patches | ||
| TI ACX100 aka TNETW1100 aka Samsung SWL-2360 | WiFi |
aximx50 (v), ipaqh4000 (0x2c000000 PCMCIA#0, mem area), ipaqh6300, ipaqhx2000, ipaqrx3000, ipaqhx4700 (0x15000000 CS5+0x1000000), loox400 (loox420), loox720, htcapache, |
acx, acx_mem, firmware upload | ||
| TI WL1250 aka TNETW1250 | WiFi 802.11g | htchermes, htcprophet, htcwizard, htcathena |
|
||
| MAX2822 | 2.4GHz transceiver (WiFi radio) | ipaqhx4700, htcblueangel, htcuniversal, htcapache | firmware upload | ||
| TI WL3422 | 2.4GHz transceiver (WiFi radio) | ipaqhx4700, htchermes, htcprophet, htcwizard, htcathena | firmware upload | ||
| Atheros AR6001 | WiFi | neo1973-gta02 |
|
||
| Bluetooth | |||||
| Broadcom BCM2033 | Bluetooth | palmtt, palmtt2 |
|
||
| Broadcom BCM2035 | Bluetooth | acern50, palmld, palmtreo650, palmtx, palmtt3, palmtt5 |
|
||
| Broadcom BCM2045 | Bluetooth | asus630, asus696 |
|
||
| Natsemi LMX9814 | Bluetooth | ipaqh5400 (BTUART), ipaqh5100 (HWUART), ipaqh5500 (HWUART) | |||
| TI BRF6100 | Bluetooth | htcblueangel, ipaqh4000, ipaqh6300 | firmware upload | ||
| TI BRF6101 | Bluetooth | ipaqrx3000 | firmware upload | ||
| TI BRF6150 | Bluetooth |
|
|
firmware upload | |
| Zeevo TC2001P/TV2001P | Bluetooth | ipaqh1940, ipaqh2200 |
|
||
| CSR BlueCore3 | Bluetooth |
|
|||
| CSR BlueCore4 | Bluetooth | neo1973, tomtomgo7x0, tomtomgo910 |
|
|
|
| MAX2820 | 2.4GHz transceiver (Bluetooth transceiver) | ipaqh4000 | firmware upload | ||
| Graphics/Video | |||||
| Ati W3200 | 2D accel+capture port+HW IDCT | htchimalaya, htcblueangel | w100fb | ||
| Ati W3220 | 2D accel | ipaqhx4700 | w100fb | ||
| Ati W4200 | 2D accel+mpeg decoder | tapwavez | w100fb (?) | ||
| Smedia Glamo 3362 | 2D accel+mpeg decoder | neo1973-gta02 |
|
||
| ATI Imageon W2282 | video+audio capture | htchermes | |||
| ATI Imageon W2284 | video+audio capture | htcathena | |||
| PXA FrameBuffer | FrameBuffer |
acern50 (240x320), asus620 (240x320), asus696 (320x240), asus710 (240x320), asus730 (480x640), aximx3 (240x320), e400 (240x320), |
pxafb | ||
| JBT6K74 | LCD interface | neo1973 (480x640) |
|
||
| Backlight | |||||
| PXA PWM0 | BL brightness control |
acern50, asus696, asus716, aximx5, ipaqh1910, ipaqh4000, |
|||
| PXA PWM1 | BL brightness control | htcuniversal, ipaqhx4700, palmtc, palmtt3 | |||
| ASIC2 PWM0 | BL brightness control | ipaqh3900 | |||
| ASIC3 PWM0/1 | BL brightness control | htcblueangel | |||
| MQ1000 PWM | BL brightness control | ipaqh2200 | |||
| ATI W100 GPIO | BL brightness control | e740 | |||
| OMAP PWL | BL brightness control | ipaqh6300, siemenssx1, palmte, palmtt, palmtt2, palmz71 | |||
| Sound | |||||
| Philips UDA1341 | Sound codec | htcwallaby, ipaqh3600 | uda1341 | ||
| Philips UDA1380 (i2c=0x18|0x1a) | Sound codec |
acern30, ipaqh1910, ipaqh1940, ipaqh2200, ipaqh3900, ipaqh4000, ipaqrx3000, loox400, asus620, asus716, |
|
uda1380 (+ machine-dependent power/etc handlers), |
|
| AK4534(i2c=0x??) | Sound codec | RZ1710 | ak4534 | ||
| AK4535(i2c=0x10) | Sound codec | ipaqh5000 |
|
ak4535, |
|
| AK4641(i2c=0x12) | Sound codec (BT mono) |
ipaqhx4700, htcapache, htcbeetles, htchermes, |
|
ak4641 | |
| TI TLV320AIC23B | Sound codec | palmtt, palmtt2, palmz71, iaudiox5 |
|
||
| TSC2101 | Sound/touchscreen/Battery | acern50, ipaqh6300, ipaqhx2000, palmtt3 |
|
||
| Wolfson Micro WM8731 | Sound | zaurus-poodle, iriverH10 |
|
|
|
| Wolfson Micro WM8750 | Sound | aximx50 (v), loox700, zaurus-akita, zaurus-spitz, zaurus-borzoi, zaurus-terrier |
|
|
|
| Wolfson Micro WM8753 | Sound | neo1973 |
|
|
|
| Wolfson Micro WM8711 | Sound | tomtomgo, tomtomgo300, tomtomonev2, tomtomonev3, tomtomonev4 |
|
|
|
| Wolfson Micro WM8971 | Sound | tomtomgo500, tomtomgo7x0, tomtomgo910, tomtomone, tomtomrider |
|
|
|
| Wolfson Micro WM9705 | Sound/touchscreen | mio336, liteonpro | |||
| Wolfson Micro WM9712 | Sound/touchscreen | asus730, asus696, palmte2, palmld, palmtreo650, palmtt5, palmtx, palmz72 |
|
|
|
| LM4857 | Amplifier | neo1973 |
|
|
|
| FM1072LP | Voice Processor | asus696 |
|
||
| Touchscreen | |||||
| Philips UCB1400 | Touchscreen/ADC/power management | palmtc, intelmainstone2 |
|
||
| TI ADS7846 | Touchscreen/ADC | aximx50, ipaqh1910, ipaqh4000, loox400, loox720, nokia770, palmtt, palmtt2, palmz71, zaurus-corgi, zaurus-shepherd, zaurus-husky, zaurus-akita, zaurus-spitz, zaurus-borzoi, zaurus-terrier |
|
ads7846, corgi-ts, h1900_ssp, h4000_ts | |
| TI AD7873 | Touchscreen/ADC | asus716 |
|
a716_ssp | |
| TI AD7877 | Touchscreen/ADC | htcapache, htcathena | |||
| TI TSC2046 | Touchscreen/ADC |
ipaqhx4700, |
|
hx4700_ts based drivers | |
| TI TSC2101 | Touchscreen/ADC | acern50, ipaqh6300, ipaqhx2000, palmtt3 |
|
||
| TI TSC2102i | Touchscreen/ADC/Sound | palmte |
|
||
| TI TSC2200 | Touchscreen/ADC | htchimalaya, htcblueangel |
|
himalaya_tsc2200 | |
| TI TSC2003 | Touchscreen/ADC | htckaiser, htctitan, htcvogue | |||
| Flash/ROM/MTD | |||||
| Intel RD48F4400L0zb0 | Flash NOR 64Mb | ipaqhx4700 (x2) | |||
| Intel 28F256L18 | Flash NAND 64Mb | loox700 | |||
| M-Systems DiskOnChip Millenium+ (DOC G2) | Flash NAND 32Mb | asus620 (0xEF800000), htchimalaya, ipaqh4000 (@0), ipaqh6300 (@0) |
|
diskonchip.c (+patch) | |
| M-Systems DiskOnChip G3 | Flash NAND 64Mb |
asus630 (A632, A636), asus716, |
|
tffs.o binary only for 2.4.20, ASIC registers for raw access partially documented (only initialisation part) | |
| M-Systems DiskOnChip G4 | Flash NAND 128Mb |
asus630 (A632N, A636N), htcprophet, |
|
||
| M-Systems DiskOnChip H3 | Flash NAND | asus696 | open source tffs | ||
| Macronix MX E032233 | ROM | palmz71 | |||
| Fujitsu 29PL32BM-90PFTN | Flash | palmz71 | |||
| Am29DL640G90 | Flash | palmtt, palmtt2 | |||
| AM29LV400BT | Flash NOR 512KB | ipaqh1910 |
|
||
| Samsung K9F2808 | Flash NAND 16MB | ipaqh1910 |
|
||
| Samsung K9F5608U0C | Flash NAND 32Mb | acern30, ipaqh2200 (some) |
|
||
| Samsung K9K1G08U0A | Flash NAND 128Mb | ipaqrx3000, eteng500 |
|
||
| Toshiba TC58DVM82A1 | Flash NAND 32Mb | ipaqh1940 (h1930 16mb), ipaqh2200 (some) | |||
| Camera/Video | |||||
| ADCM2650 (i2c=0x52) | Camera 0.3 Mpix | htchimalaya, htcblueangel | exists for 2.4 | ||
| OV6650 (i2c=0x60) | Camera 0.3 Mpix |
|
exists for 2.4, only omap-specific driver for 2.6 (TODO) | ||
| OV9640 (i2c=0x30) | Camera | loox720 | drivers/media/video/omap/sensor_ov9640.c | ||
| OV9650 (i2c=0x30) | Camera 1.3 Mpix |
|
exists for 2.4 | ||
| Unknown | Camera 0.3 Mpix | palmz71 | |||
| Unknown | Camera 1.3 Mpix | palmz72 | |||
| Power Management | |||||
| DS2762 | Battery control (For many devices, chip actually located in battery, not on motherboard.) |
ipaqh2200, ipaqh3600, ipaqh3900, ipaqh5000, ipaqhx4700, |
|
w1_ds2760.c (w1 interface), ipaqh2200_battery.c, hx4700_power.c | |
| DS2411 | Battery control | iaudiox5 | |||
| bq24022DRCR | Charger chip |
htcblueangel (with gpio to asic3), |
|
htcblueangel_battery.c (TODO) | |
| MAX1111 | Power management (GPIO) | zaurus-akita, zaurus-spitz, zaurus-borzoi, zaurus-terrier |
|
||
| MAX1585E | DC-DC | acern50 |
|
||
| MAX1586A | Power management | acern50 |
|
||
| MAX1586B | Power management | asus630 (A632, A636), asus730 |
|
||
| MAX1587A | DC-DC |
|
|||
| MAX1874 | Charger chip | acern50, palmtreo650 | |||
| MAX8588 | Power management | asus630 (A632N, A636N), asus696, palmtx |
|
max158xx | |
| TI 34TI AIH | DC-DC | ipaqh1940 | |||
| TI TPS65010 | Battery and power management | ipaqh6300, palmtt3 | |||
| TI TPS65021 | Battery and power management | htchermes, htcathena | |||
| TI TPS65110 | Battery and power management | palmtt3 |
|
||
| Phillips PCF50606 | Power management | neo1973-gta01, iriverH3x0, iaudiom5, iaudiox5 |
|
|
|
| Phillips PCF50633 | Power management | neo1973-gta02 |
|
||
| Intersil ISL6271 | Integrated XScale Regulator | zaurus-akita, zaurus-spitz | in 2.4 kernel | ||
| USB | |||||
| Ati W4200 | USB gadget & host (?) | tapwavez | |||
| Cypress EZ-USB SX2 CY7C68001 | USB gadget | palmld | |||
| Cypress EZ-USB SX2 CY7C68310 | USB gadget | iaudiox5 |
|
||
| ISP1362 | USB OTG | iriverH3x0 |
|
||
| ISP158x | USB2.0 host |
|
|||
| Epson S1R72V03 | USB2.0 host+ATA100 |
|
|||
| TI TUSB6250 | USB2.0 gadget | tomtomgo700 |
|
||
| Netchip NET2272 | USB2.0 gadget | tomtomgo710, tomtomgo910 |
|
||
| SD/MMC | |||||
| Ati W4200 | SD/MMC/SDIO(?) | tapwavez (left slot) | |||
| Dragon-Ball MX1 | SD/MMC/SDIO(?) | tapwavez (right slot) | MMC Drivers in 2.6 src | ||
| Winbond W86L488Y | SD/MMC brigde | asus630, palmtt3 |
|
||
| Smedia Glamo 3362 | SD/MMC/SDIO(?) | neo1973-gta02 | |||
| Phone baseband/radio | |||||
| Broadcom BCM2132 | GSM | palmtreo650 | |||
| TI TWL3014 | Analog baseband |
|
|
||
| Qualcomm MSM6250 | GSM/WCDMA | htcuniversal |
|
||
| Qualcomm MSM6275 | GSM/WCDMA | htchermes, htctrinity, htcathena |
|
||
| Qualcomm MSM6500 | CDMA | htcapache |
|
||
| TI Calypso | GSM | neo1973 |
|
||
| GPS | |||||
| Qualcomm RFR6250 | LNA+mixer+I/Q | htchermes |
|
||
| GL-20000 | baseband |
|
|
||
| GL-LN22 | LNA+mixer |
|
|
||
| GL PMB 2520 Hammerhead | A-GPS | neo1973-gta01 |
|
||
| U-blox ANTARIS 4 | GPS | neo1973-gta02 | NMEA standard | ||
| SIRF3 | GPS | htcathena,n560, asus696 | NMEA-9600, sirf binary | ||
| Accelerometer | |||||
| Memsic MXR2312 | Thermal accelerometer | tomtomgo |
|
||
| Memsic MXR3999 | Thermal accelerometer | tomtomgo500, tomtomgo700 |
|
||
| ST LIS302DL | Accelerometer (motion detector) | neo1973-gta02 (spi), htcathena(i2c) |
|
||
| Auxilary | |||||
| STMicroelectronics ST3243EB | RS232 Transceiver | acern50, ipaqh4000 |
|
||
| TI MA3243C | RS232 Transceiver | asus630 asus716 |
|
||
| TI SN74AVCB324245KR (WD4245) | Bus Transceiver | asus630, asus696 |
|
||
| MAX7310 | GPIO expander | zaurus-akita |
|
||
| Cypress CY8C21434 | Click Wheel Controller | ipodnano |
|
||
Total chips: 169