Please remember to add a category to the bottom of each page that you create.
See categories help for further details, but most will probably be [[Category:HTC ModelName]].
UniversalResearch
This page should collect all information that is available on the hardware of the Universal. As it is a closed device this will be a task that will be pieced together over time. Fortunately, it's come to our attention that the Universal shares hardware with the Motorola A780, for which the entire source code is available! http://sourceforge.net/projects/e680. hurrah!
The following links will need to be populated over time. If you found something place it on the relevant page:
Universal Memory Map
| wince virtual | physical | description |
|---|---|---|
| 0xa8000000-a8100000 | 0x44000000-44100000 | PXA270 LCD |
| 0xa8200000-a8300000 | 0x48000000-48100000 | PXA270 memory controller |
| 0xa8300000-a8400000 | 0x4c000000-4c100000 | PXA270 USB host |
| 0xa8400000-a8500000 | 0x58000000-58100000 | PXA270 internal memory control |
| 0xa8600000-a8700000 | 0x50000000-50100000 | PXA270 CIF capture interface |
| 0xa8700000-a8800000 | 0xa3f00000-a4000000 | top 1MB SDRAM (pxafb starts at 0xa87aa000) |
| 0xa8800000-a8900000 | 0x5c000000-5c100000 | PXA270 Internal memory (256K) and pxafb continues here |
| 0xa8f00000-a9000000 | 0xe0000000-e0100000 | (exception on read) |
| 0xa9000000-a9100000 | 0x16000000-16100000 | Debug port (not used) |
| 0xa9100000-a9200000 | 0x00000000-00100000 | HTC_DiskOnChip, IPL |
| 0xa9200000-a9300000 | 0x10000000-10100000 | ASIC3 GPIO & misc |
| 0xa9300000-a9400000 | 0x0c000000-0c100000 | ASIC3 SDIO |
| 0xaa100000-aa300000 | 0x15000000-15200000 | (empty) |
| 0xaa300000-aa400000 | 0x14000000-14100000 | (empty) |
| 0xab000000-ab100000 | 0x08000000-08100000 | acx100 |
| 0xab100000-ab200000 | 0x0a000000-0a100000 | CPLD egpio |
| 0xac000000-ac100000 | 0x20000000-20100000 | PCMCIA0 IO |
| 0xac100000-ac200000 | 0x28000000-28100000 | PCMCIA0 attrib |
| 0xac200000-ad000000 | 0x2c000000-2ce00000 | PCMCIA0 memory |
| 0xad000000-ad100000 | 0x30000000-30100000 | PCMCIA1 IO |
| 0xad100000-ad200000 | 0x38000000-38100000 | PCMCIA1 attrib |
| 0xad200000-ae000000 | 0x3c000000-3ce00000 | PCMCIA1 memory |
| 0xae000000-b0000000 | 0x40000000-42000000 | PXA270 peripherals |
| 0xb0000000-b3f00000 | 0xa0000000-a3f00000 | 63MB SDRAM |
| 0xb3f00000-b7f00000 | 0xa4000000-a8000000 | (64MB SDRAM) |
RAM layout
| 0xa0000000 -0xa0040000 | bootloader |
| +0xa -0xa | ohci usb comm.area |
| 0xa0040000 -0xa0500000 | kernel1 |
| +0xa006f000 - | kernel stack |
| 0xa0540000 -0xa0600000 | kernel2 |
| 0xa0800000 - | page tables |
PXA 27x ARM Processor
The PXA27x series are XScale/ARM9 compatable low power CPUs for mobile devices. They include a large number of built in peripherals to reduce the size and cost of handheld devices that use them.
Intel PXA27x Technical Documents http://developer.intel.com/design/pca/products/pxa27x/techdocs.htm
PXA Interupts
Bulverde CPU IRQ layout
| IRQ | Function |
|---|---|
| 0 | SSP3 |
| 1 | BaseBand |
| 2 | Non-OHCI USB |
| 3 | OHCI USB |
| 4 | KeyPad |
| 5 | Memory Stick |
| 6 | I2C Power |
| 7 | OSMRXX_4 (M4 – M11) |
| 8 | GPIO0 (FPGA) |
| 9 | GPIO1 edge detect: Suspend/Resume |
| 10 | GPIOXX_2 (GPIO2 – GPIO??) |
| 11 | USBFN ("UDC" [Universal Digital Channel?]) |
| 12 | PMU (Power Management Unit?) |
| 13 | I2S |
| 14 | AC97 Codec |
| 15 | SIM (SmartCard) |
| 16 | SSP2 |
| 17 | Display |
| 18 | I2C |
| 19 | ICP |
| 20 | STUART |
| 21 | BTUART (and Camera?) |
| 22 | FFUART |
| 23 | MMC |
| 24 | SSP |
| 25 | DMA Controller |
| 26 | OSMR0 (M0? Scheduler) |
| 27 | OSMR1 (M1? Touch Timer – Draw) |
| 28 | OSMR2 (M2? Profiler) |
| 29 | OSMR3 (M3? Dynamic Voltage Management) |
| 30 | RTC Tick |
| 31 | RTC Alarm |
OSMR = OS Timer Match Register
XA General purpose IO
| pin | bit | Description | Input/Output | IRQ | ALT | Sleep | Init I,S,N |
|---|---|---|---|---|---|---|---|
| GPIO 0 | 00000001 | power button | I1 | REFE | 0, 0, 0 | ||
| GPIO 1 | 00000002 | reset button | I1 | 1 | 0, 0, 0 | ||
| GPIO 2 | 00000004 | reserved | - | 1 | 0, 0, 0 | ||
| GPIO 3 | 00000008 | O1 | 0, 0, 0 | ||||
| GPIO 4 | 00000010 | O1 | 0, 0, 0 | ||||
| GPIO 5 | 00000020 | reserved | - | 0, 0, 0 | |||
| GPIO 6 | 00000040 | reserved | - | 0, 0, 0 | |||
| GPIO 7 | 00000080 | reserved | - | 0, 0, 0 | |||
| GPIO 8 | 00000100 | reserved | - | 0, 0, 0 | |||
| GPIO 9 | 00000200 | USB connect/disconnect | I0 | REFE | 0, 0, 0 | ||
| GPIO 10 | 00000400 | AC power(on USB) connect/disconnect | I0 | REFE | 0, 0, 0 | ||
| GPIO 11 | 00000800 | O0 | 0, 0, 0 | ||||
| GPIO 12 | 00001000 | /CIF_DD7 | O/I1 | /2 | 0, 0, 0 | ||
| GPIO 13 | 00002000 | ASIC3 SDIO irq | I1 | FE | 0, 0, 0 | ||
| GPIO 14 | 00004000 | ASIC3 GPIO irq | I0 | RE | 0, 0, 0 | ||
| GPIO 15 | 00008000 | #CS1 | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 16 | 00010000 | O0 | 0, 0, 0 | ||||
| GPIO 17 | 00020000 | /CIF_DD6 | O/I1 | /2 | 0, 0, 0 | ||
| GPIO 18 | 00040000 | RDY | I1 | 1 | 0, 0, 0 | ||
| GPIO 19 | 00080000 | radio_image=1, radio_bl=0 | O1 | 1 | 0, 0, 1 | ||
| GPIO 20 | 00100000 | O1 | 1, 1, 1 | ||||
| GPIO 21 | 00200000 | O1 | 1, 1, 1 | ||||
| GPIO 22 | 00400000 | KP MKOUT7 | O1 | 1 | 0, 0, 0 | ||
| GPIO 23 | 00800000 | SSP CLK | O | 2 | 0, 0, 0 | ||
| GPIO 24 | 01000000 | SSP FRM | O | 2 | 1 | 1, 1, 1 | |
| GPIO 25 | 02000000 | SSP TXD | O | 2 | 0, 0, 0 | ||
| GPIO 26 | 04000000 | SSP RXD (touchscreen) | I | 1 | 0, 0, 0 | ||
| GPIO 27 | 08000000 | USB host power? | O0 | 1 | 1, 1, 0 | ||
| GPIO 28 | 10000000 | I2S BITCLK | O | 1 | 0, 0, 0 | ||
| GPIO 29 | 20000000 | I2S SDATA_IN | I | 2 | 0, 0, 0 | ||
| GPIO 30 | 40000000 | I2S SDATA_OUT | O | 1 | 0, 0, 0 | ||
| GPIO 31 | 80000000 | I2S SYNC | O | 1 | 0, 0, 0 | ||
| GPIO 32 | 00000001 | I0 | 0, 0, 0 | ||||
| GPIO 33 | 00000002 | #CS5 | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 34 | 00000004 | FF UART RXD (GSM: /dev/ttyS0, m$com6) | I | 1 | 0, 0, 0 | ||
| GPIO 35 | 00000008 | FF UART CTS (GSM: /dev/ttyS0, m$com6) | I | 1 | 0, 0, 0 | ||
| GPIO 36 | 00000010 | KP MKIN7 | I | 3 | 0, 0, 0 | ||
| GPIO 37 | 00000020 | KP MKIN3 | I | 3 | 0, 0, 0 | ||
| GPIO 38 | 00000040 | KP MKIN4 | I | 2 | 0, 0, 0 | ||
| GPIO 39 | 00000080 | FF UART TXD (GSM: /dev/ttyS0, m$com6) | O | 2 | 0, 0, 0 | ||
| GPIO 40 | 00000100 | KP MKOUT6 | O | 1 | 0, 0, 0 | ||
| GPIO 41 | 00000200 | FF UART RTS (GSM: /dev/ttyS0, m$com6) | O | 2 | 0, 0, 0 | ||
| GPIO 42 | 00000400 | ?/BT UART RXD (BT: /dev/ttyS1) | O | 0/1 | 0, 0, 0 | ||
| GPIO 43 | 00000800 | ?/BT UART TXD (BT: /dev/ttyS1) | O | 0/2 | 0, 0, 1 | ||
| GPIO 44 | 00001000 | ?/BT UART CTS (BT: /dev/ttyS1) | O | 0/1 | 0, 0, 0 | ||
| GPIO 45 | 00002000 | ?/BT UART RTS (BT: /dev/ttyS1) | O | 0/2 | 0, 0, 0 | ||
| GPIO 46 | 00004000 | ST UART RXD (SIR: /dev/ttyS2) | I | 2 | 0, 0, 0 | ||
| GPIO 47 | 00008000 | ST UART TXD (SIR: /dev/ttyS2) | O | 0/1 | 1, 1, 1 | ||
| GPIO 48 | 00010000 | I0 | 0, 0, 0 | ||||
| GPIO 49 | 00020000 | #PWE | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 50 | 00040000 | /CIF_DD3 | O/I | 1 | 0, 0, 0 | ||
| GPIO 51 | 00080000 | /CIF_DD2 | O/I | 1 | 0, 0, 0 | ||
| GPIO 52 | 00100000 | /CIF_DD4 | O/I | 1 | 0, 0, 0 | ||
| GPIO 53 | 00200000 | /CIF_MCLK | O | 2 | 0, 0, 0 | ||
| GPIO 54 | 00400000 | /CIF_PCLK | O/I | 3 | 0, 0, 0 | ||
| GPIO 55 | 00800000 | /CIF_DD1 | O/I | 1 | 0, 0, 0 | ||
| GPIO 56 | 01000000 | camera related (on/off) | O0 | 0, 0, 0 | |||
| GPIO 57 | 02000000 | 1.3mpix camera enable (1=on) | O0 | 0, 0, 0 | |||
| GPIO 58 | 04000000 | LDD0 | O | 2 | 0, 0, 0 | ||
| GPIO 59 | 08000000 | LDD1 | O | 2 | 0, 0, 0 | ||
| GPIO 60 | 10000000 | LDD2 | O | 2 | 0, 0, 0 | ||
| GPIO 61 | 20000000 | LDD3 | O | 2 | 0, 0, 0 | ||
| GPIO 62 | 40000000 | LDD4 | O | 2 | 0, 0, 0 | ||
| GPIO 63 | 80000000 | LDD5 | O | 2 | 0, 0, 0 | ||
| GPIO 64 | 00000001 | LDD6 | O | 2 | 0, 0, 0 | ||
| GPIO 65 | 00000002 | LDD7 | O | 2 | 0, 0, 0 | ||
| GPIO 66 | 00000004 | LDD8 | O | 2 | 0, 0, 0 | ||
| GPIO 67 | 00000008 | LDD9 | O | 2 | 0, 0, 0 | ||
| GPIO 68 | 00000010 | LDD10 | O | 2 | 0, 0, 0 | ||
| GPIO 69 | 00000020 | LDD11 | O | 2 | 0, 0, 0 | ||
| GPIO 70 | 00000040 | LDD12 | O | 2 | 0, 0, 0 | ||
| GPIO 71 | 00000080 | LDD13 | O | 2 | 0, 0, 0 | ||
| GPIO 72 | 00000100 | LDD14 | O | 2 | 0, 0, 0 | ||
| GPIO 73 | 00000200 | LDD15 | O | 2 | 0, 0, 0 | ||
| GPIO 74 | 00000400 | LFCLK_RD | O | 2 | 0, 0, 0 | ||
| GPIO 75 | 00000800 | LFCLK_A0 | O | 2 | 0, 0, 0 | ||
| GPIO 76 | 00001000 | LFCLK_WR | O | 2 | 0, 0, 0 | ||
| GPIO 77 | 00002000 | LBIAS | O | 2 | 0, 0, 0 | ||
| GPIO 78 | 00004000 | #CS2 | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 79 | 00008000 | #CS3 | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 80 | 00010000 | #CS4 | O1 | 2 | 1 | 1, 1, 1 | |
| GPIO 81 | 00020000 | /CIF_DD0 | O/I | 2 | 0, 0, 0 | ||
| GPIO 82 | 00040000 | /CIF_DD5 | O/I | 3 | 0, 0, 0 | ||
| GPIO 83 | 00080000 | I1 | 0, 0, 0 | ||||
| GPIO 84 | 00100000 | /CIF_FV | O/I | 3 | 0, 0, 0 | ||
| GPIO 85 | 00200000 | /CIF_LV | O/I | 3 | 0, 0, 0 | ||
| GPIO 86 | 00400000 | lcd enable/disable | O1 | 0, 0, 0 | |||
| GPIO 87 | 00800000 | lcd enable/disable | O1 | 0, 0, 0 | |||
| GPIO 88 | 01000000 | O0 | 0, 0, 0 | ||||
| GPIO 89 | 02000000 | O0 | 0, 0, 0 | ||||
| GPIO 90 | 04000000 | KP MKIN5 | I | 1 | 0, 0, 0 | ||
| GPIO 91 | 08000000 | KP MKIN6 | I | 1 | 0, 0, 0 | ||
| GPIO 92 | 10000000 | charge? usb? | I1 | FE | 0, 0, 0 | ||
| GPIO 93 | 20000000 | ipl:O | I1 | 0, 0, 0 | |||
| GPIO 94 | 40000000 | ipl:O | I1 | 0, 0, 0 | |||
| GPIO 95 | 80000000 | 0.3mpix camera power (0=on) | O1 | 1 | 1, 1, 1 | ||
| GPIO 96 | 00000001 | I0 | 0, 0, 0 | ||||
| GPIO 97 | 00000002 | DREQ1 | I0 | 2 | 0, 0, 0 | ||
| GPIO 98 | 00000004 | radio reset | O1 | 1 | 0, 0, 1 | ||
| GPIO 99 | 00000008 | 0.3mpix camera reset (=1,sleep32,=0) | O0 | 0, 0, 0 | |||
| GPIO 100 | 00000010 | KP MKIN0 | I | 1 | 0, 0, 0 | ||
| GPIO 101 | 00000020 | KP MKIN1 | I | 1 | 0, 0, 0 | ||
| GPIO 102 | 00000040 | KP MKIN2 | I | 1 | 0, 0, 0 | ||
| GPIO 103 | 00000080 | KP MKOUT0 | O | 2 | 1 | 0, 0, 0 | |
| GPIO 104 | 00000100 | KP MKOUT1 | O | 2 | 0, 0, 0 | ||
| GPIO 105 | 00000200 | KP MKOUT2 | O | 2 | 1 | 0, 0, 0 | |
| GPIO 106 | 00000400 | KP MKOUT3 | O | 2 | 0, 0, 0 | ||
| GPIO 107 | 00000800 | KP MKOUT4 | O | 2 | 0, 0, 0 | ||
| GPIO 108 | 00001000 | KP MKOUT5 | O | 2 | 0, 0, 0 | ||
| GPIO 109 | 00002000 | radio related (boardid=1) | O0 | 1 | 0, 0, 1 | ||
| GPIO 110 | 00004000 | radio off? | O1 | 1 | 0, 0, 1 | ||
| GPIO 111 | 00008000 | button ? | I1 | 0, 0, 0 | |||
| GPIO 112 | 00010000 | USB_PUEN? | O0 | 1, 0, 0 | |||
| GPIO 113 | 00020000 | I2S SYSCLK | O | 1 | 0, 0, 0 | ||
| GPIO 114 | 00040000 | O0 | 0, 0, 0 | ||||
| GPIO 115 | 00080000 | PWM1: LCD brightness | O | 3 | 0, 0, 0 | ||
| GPIO 116 | 00100000 | 1.3mpix camera power? (0=on) | O0 | 1 | 1, 1, 1 | ||
| GPIO 117 | 00200000 | SCL | O | 1 | 0, 0, 0 | ||
| GPIO 118 | 00400000 | SDA | O | 1 | 0, 0, 0 | ||
| GPIO 119 | 00800000 | I1 | 0, 0, 0 | ||||
PXA DMA
| PXA DMA channel | Used by |
|---|---|
| 0 | |
| 1 | |
| 2 | |
| 3 | |
| 4 | I2S RXD |
| 5 | |
| 6 | I2S TXD |
| 7 | |
| 8 | |
| 9 | |
| 10 | FIR RXD |
| 11 | FIR TXD |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | CIF RXD |
| 17 | |
| 18 | |
| 19 | |
| 20 | |
| 21 | |
| 22 | |
| 23 | |
| 24 | |
| 25 | |
| 26 | |
| 27 | |
| 28 | |
| 29 | |
| 30 | |
| 31 | |
| 32 |
ASIC3 (Application Specific IC)
Xilinx CPLD (Complex Programmable Logic Device)
Xilinx CPLD is the source of all EGPIO ;)
| EGPIO | bit | Comment |
|---|---|---|
| 0 | 0001 | |
| 1 | 0002 | |
| 2 | 0004 | |
| 3 | 0008 | |
| 4 | 0010 | something |
| 5 | 0020 | Bluetooth |
| 6 | 0040 | Wireless |
| 7 | 0080 | |
| 8 | 0100 | |
| 9 | 0200 | |
| 10 | 0400 | ? |
| 11 | 0800 | |
| 12 | 1000 | |
| 13 | 2000 | |
| 14 | 4000 | |
| 15 | 8000 |
Buttons
The buttons are controlled by ASIC3
Touch Screen
Texas Instruments TSC2046.
Current driver (port of the hx4700 driver) is located at: /arch/arm/mach-pxa/htcuniversal/htcuniversal_ts.c
There is a data sheet available from TI: http://focus.ti.com/lit/ds/symlink/tsc2046.pdf
Serial Ports
See HTC_Serial.
SIR (Serial IR)
See HTC_Serial.
FIR (Fast IR)
Vishay TFBS6614 Low Profile 4 Mbit/s FIR Transceiver ?
http://www.vishay.com/docs/82611/82611.pdf
See HTC_Serial
USB client
pxa27x_udc
USB host
The PXA270 USB host is used (at least) for the data communication with MSM6260 GSM/UMTS microcontroller.
Keyboard
The keyboard is connected to the PXA270.
Current driver located at: drivers/input/keyboard/pxa27x_keyboard.c
TODO:
- improve the scancode/key symbol mapping (Fn key)
- Sca WorldWideEdition
| KEY_ | Name | Sca | Fn-Sca | Eng | Fn-Eng | Ger | Fn-Ger | Ita | Fn-Ita | Fra | Fn-Fra | Spa | Fn-Spa |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name | |||||||||||||
| call | |||||||||||||
| left- | |||||||||||||
| menu | |||||||||||||
| video | |||||||||||||
| right- | |||||||||||||
| hangup | |||||||||||||
| 1 | ! | ! | ! | & | ! | ||||||||
| 2 | @ | @ | " | " | " | ||||||||
| 3 | # | # | § | ' | • | ||||||||
| 4 | $ | $ | $ | ( | $ | ||||||||
| 5 | % | % | % | - | % | ||||||||
| 6 | ^ | ^ | & | _ | & | ||||||||
| 7 | & | & | / | ) | / | ||||||||
| 8 | ( | ° | ( | ||||||||||
| 9 | ( | ) | ) | µ | ) | ||||||||
| 0 | ) | ( | </code> | * |
| ||||||||
| - | - | ß | ? | ' | $ | £ | ' | ? | |||||
| * | |
+ | + | * | + | ¡ | ¿ | ||||||
| TAB | ~ | ~ | ~ | ~ | ~ | ||||||||
| q | @ | a | @ | @ | |||||||||
| w | z | ||||||||||||
| e | euro | euro | euro | euro | |||||||||
| r | |||||||||||||
| t | |||||||||||||
| y | y | z | y | ||||||||||
| u | |||||||||||||
| i | # | * | |||||||||||
| o | / | / | / | # | |||||||||
| p | \ | \ | \ | : | * | ||||||||
| DEL | |||||||||||||
| CLock | |||||||||||||
| a | q | ||||||||||||
| s | |||||||||||||
| d | £ | £ | |||||||||||
| f | |||||||||||||
| g | |||||||||||||
| h | |||||||||||||
| j | _ | § | ; | ||||||||||
| k | " | " | ' | \ | _ | ||||||||
| l | ' | ' | # | % | - | ||||||||
| Enter | |||||||||||||
| Shift | |||||||||||||
| z | w | ||||||||||||
| x | |||||||||||||
| c | |||||||||||||
| v | |||||||||||||
| b | |||||||||||||
| n | |||||||||||||
| m | ? | ? | - | ! | , | ||||||||
| , | ; | , | ; | , | ; | ? | ñ | \ | |||||
| Up | |||||||||||||
| . | : | . | : | . | : | ; | . | : | |||||
| Ok | |||||||||||||
| Fn | |||||||||||||
| Flag | |||||||||||||
| Inet | Menu | ||||||||||||
| Space | |||||||||||||
| Sym | |||||||||||||
| Left | |||||||||||||
| Down | |||||||||||||
| Right | Radio | Radio | Radio | Radio | |||||||||
SD host controller
Universal uses the ASIC3 SDIO controller.
Disk-on-Chip
M-Systems G3 DiskOnChip HTC_DiskOnChip.
There only a binary module for the 2.4.20 kernel, no 2.6 or open-source driver exists (yet).
The M-Systems G3 DiskOnChip device is a mixed hardware and software product. The hardware on its own is too unreliable for use as a disk, it also has peculiarities such as block erasure and limited erasure cycles per block. ECC algorithms are used to ensure the data reliability, with extra storage and an ASIC provided on the chip for handling the ECC. The driver handles evening the number of writes across all the blocks of the chip, occasionally even moving little changing blocks to make their less written block available for more writes.
The M-Systems G3 is capable of behaving like a boot ROM, providing 4K of fast memory that allows XIP (%eXecute In Place). The fast RAM is loaded from the flash on start up.
The device is partitioned into two sections by design, each with its own security settings.
M-Systems have a couple of data sheets available, but the driver source is only available to OEM partners:
DiskOnChip series G3 Hardware
DiskOnChip TrueFFS
Also used by the Motorola A768 smartphone.
ST I2C 8k EEPROM
There is an eeprom visable on the I2C bus it is used for (Please add here).
Datasheets are available here:
M24C08 datasheet
The quick summary is that it looks like a normal I2C device and is probably already supported by an existing driver if given the correct address.
GSM
See HTC_GSM for more information
UMTS
See HTC_GSM
LCD
There are two LCDs used in Universal : Sony ACX526AKM and some Samsung model (HTC_Partnumbers)
The LCCR* values are
| LCCR | Value Sony | Value Samsung |
|---|---|---|
| 0 | 0x | 0x |
| 1 | 0x | 0x |
| 2 | 0x | 0x |
| 3 | 0x | 0x |
| 4 | 0x | 0x |
| 5 | 0x | 0x |
Backlight
PXA PWM1.
Sound
Current driver located at: /sound/arm/pxa-i2sound-htcuniversal.c
i2s
Asahi Kasei AK4641 chipset supporting sound and Bluetooth mono audio interface.
See http://handhelds.org/moin/moin.cgi/HpIpaqHx4700Drivers for the hardware description and Linux driver.
pcm
Battery
Controlled by MAX1587A and DS2762.
LEDs
Two two-colour LEDs (left: green-blue, right: green-red) are controlled by ASIC3 (UniversalASIC3) and EGPIO.
Vibra
Vibra is controlled by ASIC3
Camera 1.3
Omnivision OV9650 Color SXGA (1300 x 1028), 1/4 inch lens.
Product brief http://www.ovt.com/pdfs/pb_9650.pdf
A Linux driver (2.4.20 kernel) can be found at ftp://ftp.gpl-devices.org/pub/vendors/Motorola/E680/e680-linux.tar.bz2
Camera 0.3
Omnivision OV6650 Color CIF (352 x 288), 1/7 inch lens camera
Product brief http://www.ovt.com/pdfs/pb_6151_6650.pdf
This is the same camera as used by the Amstrad E3, http://wiki.earth.li/E3 I believe work is in progress for a driver for this: http://wiki.earth.li/E3_Status
The 2.4.* driver is included in the kernel provided my Amstrad:
http://www.earth.li/~noodles/hardware-e3.html
drivers/media/video/omap/camera_ov6x30.c
Bluetooth
Audio Codec - Texas Instruments BRF6150.
PCM Codec TLV320AIC1110
This chip acts as a bridge between the analog speakers and microphone and the digital phone and bluetooth interfaces. It can select between two different analog inputs and two different analog outputs, but it can only use one input and one output at a time. It also has a spare multiplexor, which may or may not be being used. It contains a tone generator for use with phones, but I doubt if it is used with the universal. Generating the tones in software is very easy.
The function blocks
| Two Differential Earphone Outputs | left and right speakers? |
| One Single-Ended Earphone Output | earpiece? |
| Two Differential Microphone Inputs | A stereo connection to the i2s system? |
| One Auxiliary one channel two input Multiplexer | not used? |
| Dual-Tone Multifrequency Generator | not used? |
| Pulse Density Modulated (PDM) Buzzer Output | not used? |
| I2C interface | processor? or asic? |
| PCM interface | (digital audio) bluetooth chip? is there a PCM audio bus? |
Vendor-specific commands (OGF=0x3f):
| OCF | Length | Description | Payload |
|---|---|---|---|
| 0x202 | 1 | Long Buffers | |
| 0x204 | 5 | classification parameters - AFH | |
| 0x205 | 1 | ANRITSU Power Control | |
| 0x208 | 14 | voice settings, PCM format | |
| 0x20c | 20 | ||
| 0x20e | 22 | PCM codec registers. The device has seven registers: power control, mode control, transmit PGA, receive PGA, high DTMF, low DTMF, and auxiliary mode control. | |
| 0x212 | 24 | Power control thresholds | |
| 0x215 | 18 | ||
| 0x21a | 2 | MLSE Disable | |
| 0x21b | 2 | ||
| 0x221 | 2 | temp offset & RF calibration | |
| 0x229 | 28 | power tables & configuration matrix | |
| 0x230 | 4 | Matrix change | |
| 0x237 | 2 | + | |
| 0x238 | 0 | - | |
| 0x242 | 5 | + | |
| 0x243 | 10 | + power table | |
| 0x301 | 6 | GPIO, VLDO voltage, correlator bit threshold, Clk Polarity | |
| 0x303 | 9 | Soft Gemini, QoS minimum Poll interval | |
| 0x305 | 205 | power tables & configuration matrix | |
| 0x30c | 2 | ||
| 0x31a | 2 | used at init | |
| 0x31b | 2 | used at init | |
| 0x336 | 4 | ||
| 0x361 | 5 | LC pole, IFN Stage3, AFC T2 Coefficients, AFC_DITHER, SEQ_TA2, SEQ_PA, AHDL_CFG | |
| 0x366 | 3 | ++ 770 | |
| 0x383 | 20 | + | |
| 0x388 | 10 | Change temp threshold | |
| 0x390 | 3 | + |
HTC Universal Bluetooth information, when running windows mobile
$ hcitool scan
XX:YY:ZZ:TT:UU:VV WM_x
$ hcitool info XX:YY:ZZ:TT:UU:VV
Requesting information ...
BD Address: XX:YY:ZZ:TT:UU:VV
Device Name: WM_x
LMP Version: 1.2 (0x2) LMP Subversion: 0xdb0
Manufacturer: Texas Instruments Inc. (13)
Features: 0xff 0xff 0x2d 0xf8 0x1b 0x18 0x00 0x80
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <hold mode> <sniff mode>
<park state> <RSSI> <channel quality> <SCO link> <HV2 packets>
<HV3 packets> <u-law log> <A-law log> <CVSD> <power control>
<transparent SCO> <enhanced iscan> <interlaced iscan>
<interlaced pscan> <inquiry with RSSI> <extended SCO>
<EV4 packets> <EV5 packets> <AFH cap. slave>
<AFH class. slave> <AFH cap. master> <AFH class. master>
<extended features>
$ sdptool records XX:YY:ZZ:TT:UU:VV
Service Name: Voice Gateway
Service RecHandle: 0x10000
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100
Service Name: Voice Gateway
Service RecHandle: 0x10001
Service Class ID List:
"Handfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0101
Service Name: Serial Port
Service RecHandle: 0x10003
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Serial Port" (0x1101)
Version: 0x0100
Service Name: OBEX Object Push
Service RecHandle: 0x10004
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100
WiFi
Texas Instruments ACX100 chipset (the same as in Blueangel).
I2C (Inter-Integrated Circuit bus)
See HTC_I2C_IDs
I2S (Inter-Integrated Sound bus)
See Sound
BoardID
| Board ID | LCD type | Provider | Mode | Color |
|---|---|---|---|---|
| 0x5 | T-Mobile Germany | MDA Pro | Silver | |
| 0x5 | JasJar | |||
| 0x5 | Dopod |
Software
WM5 Stream Devices
Stream Devices (Alphabetized)
bold entries found in Drivers\BuiltIn, but not in Drivers\Active
| Device Name | Description | CE DLL(s) | RegKey |
|---|---|---|---|
| ACM1: | GSM610 codec | gsm610.acm | Drivers\BuiltIn\CODEC_GSM610 |
| ACM9: | ? | ? | ? |
| BAG0: | "Audio gateway" | ? | ? |
| BAT1: | Battery | battdrvr.dll | Drivers\BuiltIn\Battery |
| BAT2: | Battery | Battery.Dll | Drivers\BuiltIn\BatteryIF |
| BKL1: | "FrontLight" | BackLight.Dll | Drivers\BuiltIn\FrontLight |
| BTS0: | ? | ? | ? |
| BTD0: | ? | ? | ? |
| BTL1: | Bluetooth | bthlink.dll | Software\Microsoft\Bluetooth\BTHLINK |
| CAM1: | Battery side camera? | NullCam.dll | Drivers\BuiltIn\NullCam |
| CIF1: | (Unknown) | CIF.Dll | Drivers\BuiltIn\CIF |
| COM1: | Serial Cable on COM1: | Serial_dbg.Dll | Drivers\BuiltIn\Serial_dbg |
| COM2: | Infrared Port | Serial_FIR.Dll | Drivers\BuiltIn\Serial_FIR |
| COM3: | Ir on COM3: | IRCOMM.DLL | Drivers\BuiltIn\IrCOMM |
| COM6: | RIL on COM6: | Serial_cmd.Dll | Drivers\BuiltIn\Serial |
| COM7: | "Serial_BTUR" | Serial_BTUR.Dll | Drivers\BuiltIn\Serial_BTUR |
| *COM8:* | USB Cable | QCT1.Dll | Drivers\BuiltIn\QCT |
| COM9: | QCT Data Interface | QCTUSB.DLL | Drivers\BuiltIn\QCTCompositeDev |
| DP60: | "DHCPV6L" (IPV6 DHCP) | no key?! | Comm\Devices\TCPIP6\DHCPV6L |
| DRM1: | LSOMACORE | lsomacore.dll | Drivers\BuiltIn\LSOMACORE |
| DSK1: | TrueFFS G3 DoC | TrueFFS_G3.dll | Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class ??? |
| *DSK1:* | TrueFFS G3 DoC partition0 | TrueFFS_G3.dll | Drivers\BuiltIn\TrueFFS_G3 |
| *DSK2:* | TrueFFS G3 DoC partition1 | TrueFFS_G3.dll | Drivers\BuiltIn\TrueFFS_G31 |
| *DSK3:* | TrueFFS G3 DoC partition2 | TrueFFS_G3.dll | Drivers\BuiltIn\TrueFFS_G32 |
| ETM1: | Ethernet? | ethman.dll | Drivers\BuiltIn\Ethman |
| GPD0: | "GPSID" | GPSID.dll | Drivers\BuiltIn\GPSID |
| HCD1: | OHCI | ohci.dll | Drivers\BuiltIn\OHCI |
| HDS1: | HeadSetDrv | HeadSetDrv.Dll | Drivers\BuiltIn\HeadSetDrv |
| I2C1: | I2CMGR | I2CMgr.Dll | Drivers\BuiltIn\I2CMGR |
| IKE0: | IPSecSvc | ipsecsvc.Dll | Drivers\BuiltIn\ipsecsvc |
| IP60: | "IPDevice" (IPV6) | no key?! | Comm\Devices\TCPIP6\IPDevice |
| IPD0: | "IPDevice" | no key?! | Comm\Devices\TCPIP\IPDevice |
| LED1: | LED | AllLEDMgr.dll | Drivers\BuiltIn\AllLEDMgr |
| MIS1: | OEM_Misc.Dll | Drivers\BuiltIn\OEM_Misc | |
| *MIX1:* | "Mix" | MIX.DLL | Drivers\BuiltIn\MIX |
| MSM1: | "QCT_DIAG" | QCTUSB.Dll | Drivers\BuiltIn\QCT_DIAG |
| NLD1: | "NLed" | nleddrvr.dll | Drivers\BuiltIn\NLed |
| NDS0: | NDIS | NDIS.Dll | Drivers\BuiltIn\NDIS |
| NDS1: | TI ACX100-EE1D | NDIS.Dll | Drivers\PCMCIA\Texas_Instruments-ACX100-EE1D |
| OBX0: | IR OBEX | ? | ? |
| PIN1: | Display face camera? | NullCam.dll | Software\Microsoft\DirectX\DirectShow\Capture |
| RDR0: | "Redir" | redir.dll | Comm\Devices\Redir |
| RIL1: | Radio Interface Layer | rilgsm.dll | Drivers\BuiltIn\RIL |
| SCA1: | SmartCard | scard.dll | Drivers\BuiltIn\SmartCard |
| SDC1: | SDBusDriver | SDBus.dll | Drivers\BuiltIn\SDBusDriver |
| SDH1: | SDIO Host Controller | sdhc.dll | Drivers\BuiltIn\SDHC |
| SIM1: | SIM (SmartCard) | ccoredrv.dll | Drivers\BuiltIn\SIM |
| SIP0: | Soft Input Panel?? | softkb.DLL | Drivers\BuiltIn\SIP |
| SMS1: | "SMS" | CCoreDrv.dll | Drivers\BuiltIn\SMS |
| SPK1: | SpeakerPhone | spkphone.dll | Drivers\BuiltIn\SpeakerPhone |
| SSP0: | NTLM SSP | ntlmssp_scvc.dll | Drivers\BuiltIn\NTLMSSP_SVC |
| TCP0: | "TCPDevice" | ? | Comm\Devices\TCPIP\TCPDevice |
| UFN1: | "Usbfn" (Universal Digital Channel?) | ms2_usbfn.dll | Drivers\BuiltIn\Usbfn |
| UIO1: | NDISUIO | ndisuio.dll | Drivers\BuiltIn\NDISUIO |
| V6H1: | IPV6Hlp | ipv6hlp.dll | Drivers\BuiltIn\ipv6hlp |
| WAM1: | "WAPIMAN" | waveapi.dll | Drivers\BuiltIn\WAPIMAN |
| WAP1: | WAP | WAPdrv.dll | Comm\Cellular\WAP\Driver |
| WAV1: | WaveDev | wavedev.dll | Drivers\BuiltIn\WaveDev |
| WWN0: | "WWN" | wwan.Dll | Drivers\BuiltIn\WWN |
| ZCF1: | "ZeroConfig" (Wireless?) | WZCSCV.dll | Drivers\BuiltIn\ZeroConfig |