Difference between revisions of "Loox550"
m (→EGPIOs (by htc-egpio)) |
(audio documentation) |
||
(43 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Fujitsu Siemens Pocket Loox C550 == | == Fujitsu Siemens Pocket Loox C550 == | ||
+ | |||
+ | === Development environment === | ||
+ | * arm-linux-gnueabi is needed (or armv5te) | ||
+ | * Setup cross-compiler. Lastest glibc, binutils and linux-headers are fine. | ||
+ | * GCC up to 4.8 series. | ||
+ | ** 4.7.3(-r1) is well tested | ||
+ | ** 4.6.4 work well too | ||
+ | |||
+ | === Bootloader (HaRET) === | ||
+ | Version starting by 0.5.0 supported, [http://go900.angellfear.ru/old-files/util/haret_pre_0.5.3_pxa272.exe 0.5.3_pxa272] recommended (this version has extended abilities to debug gpios > 80). | ||
+ | |||
+ | It's not going to boot, if device was suspended. If this happen, reboot your device. | ||
+ | |||
+ | Is recommended to '''start kernel''' from '''SD card''', because it leave SD initialized. You can also boot from '''internal memory''' or '''USB stick'''. | ||
+ | |||
+ | default.txt sample: | ||
+ | <pre> | ||
+ | set MTYPE 1454 | ||
+ | set KERNEL zImage | ||
+ | set RAMADDR 0xA0200000 | ||
+ | set RAMSIZE 0x03E00000 | ||
+ | set cmdline "root=/dev/sda1 rootdelay=10" | ||
+ | bootlinux | ||
+ | </pre> | ||
+ | In order do: | ||
+ | * set MTYPE to N560 (doesn't matter really, just need to match mach-type in kernel) | ||
+ | * define "zImage" as kernel file | ||
+ | * device RAMADDRess start at 0xA000 0000, BUT we can't use it from start. We need start at 0xA020 0000! (some device firmware using first 2MB of memory, so not interfere) | ||
+ | * RAMSIZE has to be reduced from default 64MB (detected by HaRET) to 62M! Otherwise it'll not boot. We moved memory start, so we have consider it. | ||
+ | * commandline - root device (usb stick, first partition), 10 seconds delay before boot (to enough time to plug in stick). | ||
+ | * all defined, so bootlinux. | ||
=== Linux port status === | === Linux port status === | ||
− | Kernel: 3. | + | * Kernel: 3.12 ([https://github.com/okias/linux-stable/commits/master git]) |
+ | ** rtc-pxa can't be loaded at boot time => kernel panic. As module it's fine. | ||
+ | Tasks to do: you can [https://trello.com/b/Lxd2tmum/pocket-loox-n560-c550 check trello] | ||
==== What works ==== | ==== What works ==== | ||
* Basic functionality | * Basic functionality | ||
+ | ** GPIOs | ||
+ | ** EGPIOs | ||
* USB host | * USB host | ||
* USB OTG | * USB OTG | ||
* LCD | * LCD | ||
− | * Touchscreen (need improvements) | + | * Bluetooth |
+ | * PWM | ||
+ | ** LCD backlight intensity support | ||
+ | * SPI | ||
+ | ** Touchscreen (need improvements) | ||
+ | * I2C | ||
+ | ** WM8750S mixer for audio (addr 0-001a) | ||
+ | * I2S (Audio) | ||
+ | ** input not tested, output work out-of-box | ||
* All buttons including power button | * All buttons including power button | ||
− | * limited SD card | + | * limited SD/SDIO card |
− | ** technically: only when SD is used right before kernel boot, | + | ** technically: only when SD is used right before kernel boot, because one host, two slots not yet implemented |
** simple: you need to boot from SD card or someway utilize it until kernel boots | ** simple: you need to boot from SD card or someway utilize it until kernel boots | ||
+ | ** WiFi is connected to second slot, to get it working we need multislot support in drivers/mmc/host/pxamci.c (example of multislot support is in omap or atmel mmc driver) | ||
+ | |||
=== Hardware === | === Hardware === | ||
− | CPU Intel 520 MHz XScale PXA270 | + | CPU Intel 520 MHz XScale [http://mmpod.googlecode.com/files/Intel_PXA270_Developers_Manual.pdf PXA270] (ARMv5TE) |
− | <br>Display TD035STEE1 | + | <br>Display TD035STEE1 (probably) |
− | <br>Touchscreen TI TSC2046 | + | <br>Touchscreen TI TSC2046 (work only with model set to 7845) |
<br>ROM 128 MB M-SYSTEM DiskOnChip G4 MD8832-d1G-V3-X-P | <br>ROM 128 MB M-SYSTEM DiskOnChip G4 MD8832-d1G-V3-X-P | ||
<br>RAM 64 MB HYB18L256160BF-7.5 | <br>RAM 64 MB HYB18L256160BF-7.5 | ||
− | <br>Audio Wolfson WM8750S | + | <br>Audio [http://www.wolfsonmicro.com/products/audio_hubs/WM8750/ Wolfson WM8750S] |
<br>Wi-Fi TI WL1250 aka TNETW1250 | <br>Wi-Fi TI WL1250 aka TNETW1250 | ||
− | <br>Bluetooth TI BRF6150 | + | <br>Bluetooth TI [http://focus.ti.com/pdfs/vf/wireless/brf6150bulletin.pdf BRF6150] |
<br>Other (unknown): | <br>Other (unknown): | ||
<br>wl3422mzwn (wifi transciever) | <br>wl3422mzwn (wifi transciever) | ||
Line 37: | Line 82: | ||
... | ... | ||
11 Full battery detection | 11 Full battery detection | ||
− | 12 | + | 12 WiFi, work this way, when is WiFi is connected to AP: change to 0, immediately goes to 1, idle and repeats. Interval differs, so it's not CLK. |
13 USB detect N | 13 USB detect N | ||
14 ? | 14 ? | ||
− | 15 SD Readonly | + | 15 SD Readonly pin (0 = RO, 1 = RW) |
− | 16 Backlight PWM | + | 16 Backlight PWM |
17 works as PWM ? | 17 works as PWM ? | ||
... | ... | ||
− | 22 Bluetooth reset | + | 22 Bluetooth CPU reset |
... | ... | ||
− | 28 I2S_BITCLK | + | 28 I2S_BITCLK OUT sound codec |
− | 29 I2S_SDATA_IN | + | 29 I2S_SDATA_IN sound |
− | 30 I2S_SDATA_OUT | + | 30 I2S_SDATA_OUT sound |
− | 31 I2S_SYNC | + | 31 I2S_SYNC sound |
+ | 32 MMC_CLK | ||
... | ... | ||
− | 56 | + | 48 WiFi PWR 1 ? |
+ | ... | ||
+ | 52 WiFi, PWR ? | ||
+ | --- | ||
+ | 56 Cradle Jack 3.5 control (0 = off, 1 = on) | ||
57 USB PULLUP | 57 USB PULLUP | ||
... | ... | ||
− | 78 SD card detection | + | 78 SD card detection(0 = inserted, 1 = empty slot) |
+ | 79 Cradle Jack 3.5 detection (0 = connected, 1 = dis) | ||
+ | ... | ||
+ | 82 MMC/SD and WiFi MUX ? | ||
+ | 0 accessing MMC/SD | ||
+ | 1 accessing WiFi | ||
+ | ... | ||
+ | 85 MMC, GPIO? | ||
+ | 90 WiFi PWR 2 ? | ||
... | ... | ||
− | 93 Headphone Jack | + | 93 Headphone Jack 3.5 detection (0 = connected, 1 = dis) |
94 Touchscreen panel IRQ_N | 94 Touchscreen panel IRQ_N | ||
... | ... | ||
Line 71: | Line 129: | ||
108 SD POWER ? | 108 SD POWER ? | ||
... | ... | ||
− | 113 I2S_SYSCLK | + | 113 I2S_SYSCLK sound codec |
114 ??? output, turbo mode=1,standart=0, power-saving=1 or 0 | 114 ??? output, turbo mode=1,standart=0, power-saving=1 or 0 | ||
115 ??? output, turbo mode=1,standart=1, power-saving=0 | 115 ??? output, turbo mode=1,standart=1, power-saving=0 | ||
Line 78: | Line 136: | ||
118 I2C SDA | 118 I2C SDA | ||
</pre> | </pre> | ||
+ | |||
=== EGPIOs (by htc-egpio) === | === EGPIOs (by htc-egpio) === | ||
− | + | 7 banks * 16 gpio in one, in summary 112 gpios. | |
+ | EGPIO is mapped to gpio 192-304 region. | ||
+ | |||
<pre> | <pre> | ||
+ | 0 Bluetooth Power1 | ||
+ | 1 WiFi off=0, on=1 | ||
+ | ... | ||
+ | 16 LED mux right side | ||
+ | 17 LED mux right side | ||
+ | 18 LED mux right side | ||
+ | ... | ||
+ | 32 LED mux left side | ||
+ | 33 LED mux left side | ||
+ | 34 LED mux left side | ||
+ | 35 LED mux left side | ||
... | ... | ||
− | + | 48 LED 8 - Keyboard backlight | |
− | |||
− | |||
... | ... | ||
− | + | 50 Bluetooth Power2 | |
− | |||
− | |||
... | ... | ||
− | + | 63 controls power of LCD chip | |
+ | 64 Speaker amplifier | ||
+ | 65 Bluetooth Reset2 | ||
... | ... | ||
− | + | 80 WiFi off=0, on=1 | |
+ | 81 WiFi off=0, on=1 | ||
+ | ... | ||
+ | </pre> | ||
+ | |||
+ | === Audio === | ||
+ | * LOUT1, ROUT1 | ||
+ | ** Headphone 3.5 | ||
+ | *** Detection GPIO: 93 (inverted) | ||
+ | ** Cradle jack 3.5 | ||
+ | *** Detection GPIO: 79 (inverted) | ||
+ | *** Power GPIO: 56 | ||
+ | * LOUT2, ROUT2 | ||
+ | ** Speaker | ||
+ | *** Power EGPIO: 64 | ||
+ | === Memory === | ||
+ | <pre> | ||
+ | ADDR SIZE DESC | ||
+ | 0x10000000 2*8 EGPIO-htc chip, 7 banks | ||
+ | 0xA0000000 2M RAM reserved (maybe we can use it, WINCE can't) | ||
+ | 0xA0200000 62M RAM usable | ||
+ | </pre> | ||
+ | |||
+ | === Userspace === | ||
+ | You can use [http://ulozto.net/x6P845U8/to-okias-tar-bz2 ulozto.net/x6P845U8/to-okias-tar-bz2] | ||
+ | Copying to USB stick with first partition formated with ext3 should be enough. | ||
+ | Simple shell, with ssh enabled access and few tools. Thank to pc2005 for creating it. | ||
+ | For ssh on computer do: | ||
+ | <pre> | ||
+ | ifconfig usb0 192.168.4.1 | ||
+ | ssh root:pokus@192.168.4.2 | ||
</pre> | </pre> | ||
− |
Revision as of 10:13, 2 December 2013
Contents
Fujitsu Siemens Pocket Loox C550
Development environment
- arm-linux-gnueabi is needed (or armv5te)
- Setup cross-compiler. Lastest glibc, binutils and linux-headers are fine.
- GCC up to 4.8 series.
- 4.7.3(-r1) is well tested
- 4.6.4 work well too
Bootloader (HaRET)
Version starting by 0.5.0 supported, 0.5.3_pxa272 recommended (this version has extended abilities to debug gpios > 80).
It's not going to boot, if device was suspended. If this happen, reboot your device.
Is recommended to start kernel from SD card, because it leave SD initialized. You can also boot from internal memory or USB stick.
default.txt sample:
set MTYPE 1454 set KERNEL zImage set RAMADDR 0xA0200000 set RAMSIZE 0x03E00000 set cmdline "root=/dev/sda1 rootdelay=10" bootlinux
In order do:
- set MTYPE to N560 (doesn't matter really, just need to match mach-type in kernel)
- define "zImage" as kernel file
- device RAMADDRess start at 0xA000 0000, BUT we can't use it from start. We need start at 0xA020 0000! (some device firmware using first 2MB of memory, so not interfere)
- RAMSIZE has to be reduced from default 64MB (detected by HaRET) to 62M! Otherwise it'll not boot. We moved memory start, so we have consider it.
- commandline - root device (usb stick, first partition), 10 seconds delay before boot (to enough time to plug in stick).
- all defined, so bootlinux.
Linux port status
- Kernel: 3.12 (git)
- rtc-pxa can't be loaded at boot time => kernel panic. As module it's fine.
Tasks to do: you can check trello
What works
- Basic functionality
- GPIOs
- EGPIOs
- USB host
- USB OTG
- LCD
- Bluetooth
- PWM
- LCD backlight intensity support
- SPI
- Touchscreen (need improvements)
- I2C
- WM8750S mixer for audio (addr 0-001a)
- I2S (Audio)
- input not tested, output work out-of-box
- All buttons including power button
- limited SD/SDIO card
- technically: only when SD is used right before kernel boot, because one host, two slots not yet implemented
- simple: you need to boot from SD card or someway utilize it until kernel boots
- WiFi is connected to second slot, to get it working we need multislot support in drivers/mmc/host/pxamci.c (example of multislot support is in omap or atmel mmc driver)
Hardware
CPU Intel 520 MHz XScale PXA270 (ARMv5TE)
Display TD035STEE1 (probably)
Touchscreen TI TSC2046 (work only with model set to 7845)
ROM 128 MB M-SYSTEM DiskOnChip G4 MD8832-d1G-V3-X-P
RAM 64 MB HYB18L256160BF-7.5
Audio Wolfson WM8750S
Wi-Fi TI WL1250 aka TNETW1250
Bluetooth TI BRF6150
Other (unknown):
wl3422mzwn (wifi transciever)
AIC1110 (TLV320AIC1110 PCM codec)
CPLD 2C64A
Basic GPIOs
? = not verified in code or not sure
0 Power button ... 4 Battery cover ... 9 AC plug ... 11 Full battery detection 12 WiFi, work this way, when is WiFi is connected to AP: change to 0, immediately goes to 1, idle and repeats. Interval differs, so it's not CLK. 13 USB detect N 14 ? 15 SD Readonly pin (0 = RO, 1 = RW) 16 Backlight PWM 17 works as PWM ? ... 22 Bluetooth CPU reset ... 28 I2S_BITCLK OUT sound codec 29 I2S_SDATA_IN sound 30 I2S_SDATA_OUT sound 31 I2S_SYNC sound 32 MMC_CLK ... 48 WiFi PWR 1 ? ... 52 WiFi, PWR ? --- 56 Cradle Jack 3.5 control (0 = off, 1 = on) 57 USB PULLUP ... 78 SD card detection(0 = inserted, 1 = empty slot) 79 Cradle Jack 3.5 detection (0 = connected, 1 = dis) ... 82 MMC/SD and WiFi MUX ? 0 accessing MMC/SD 1 accessing WiFi ... 85 MMC, GPIO? 90 WiFi PWR 2 ? ... 93 Headphone Jack 3.5 detection (0 = connected, 1 = dis) 94 Touchscreen panel IRQ_N ... 97 PXA27x keypad matrix output 0 ? 98 PXA27x keypad matrix output 1 ? 99 GPIO_NR_LOOXC550_CHARGE_EN_N 100 PXA27x keypad matrix input 0 ? 101 PXA27x keypad matrix input 1 ? 102 PXA27x keypad matrix input 2 ? 103 GPIO_NR_LOOXC550_KP_MKOUT0 ? 104 GPIO_NR_LOOXC550_KP_MKOUT1 ? ... 107 Charge enabled??? WM5 sets it to 0 on external power connected (GPIO_NR_LOOXC550_USB_CHARGE_RATE_N) ? 108 SD POWER ? ... 113 I2S_SYSCLK sound codec 114 ??? output, turbo mode=1,standart=0, power-saving=1 or 0 115 ??? output, turbo mode=1,standart=1, power-saving=0 116 ??? output, turbo mode=0,standart=1, power-saving=0 117 I2C SCL 118 I2C SDA
EGPIOs (by htc-egpio)
7 banks * 16 gpio in one, in summary 112 gpios. EGPIO is mapped to gpio 192-304 region.
0 Bluetooth Power1 1 WiFi off=0, on=1 ... 16 LED mux right side 17 LED mux right side 18 LED mux right side ... 32 LED mux left side 33 LED mux left side 34 LED mux left side 35 LED mux left side ... 48 LED 8 - Keyboard backlight ... 50 Bluetooth Power2 ... 63 controls power of LCD chip 64 Speaker amplifier 65 Bluetooth Reset2 ... 80 WiFi off=0, on=1 81 WiFi off=0, on=1 ...
Audio
- LOUT1, ROUT1
- Headphone 3.5
- Detection GPIO: 93 (inverted)
- Cradle jack 3.5
- Detection GPIO: 79 (inverted)
- Power GPIO: 56
- Headphone 3.5
- LOUT2, ROUT2
- Speaker
- Power EGPIO: 64
- Speaker
Memory
ADDR SIZE DESC 0x10000000 2*8 EGPIO-htc chip, 7 banks 0xA0000000 2M RAM reserved (maybe we can use it, WINCE can't) 0xA0200000 62M RAM usable
Userspace
You can use ulozto.net/x6P845U8/to-okias-tar-bz2 Copying to USB stick with first partition formated with ext3 should be enough. Simple shell, with ssh enabled access and few tools. Thank to pc2005 for creating it. For ssh on computer do:
ifconfig usb0 192.168.4.1 ssh root:pokus@192.168.4.2