GXP-2020 GPIO connections


Keyboard/LED connector

The connector leading to keyboard and LED has 32 pins, numbered B1 to B32:

Pin Meaning Signal
B1 LED common ground: MESSAGE /XF
B2 LED common ground: LINE1 D2 via D-FF in /CE3
B3 LED common ground: LINE2 D3 via D-FF in /CE3
B4 LED common ground: LINE3 D4 via D-FF in /CE3
B5 LED common ground: LINE4 D5 via D-FF in /CE3
B6 LED common ground: LINE5 D6 via D-FF in /CE3
B7 LED common ground: LINE6 D7 via D-FF in /CE3
B8 LED common ground: PROG7 D8 via D-FF in /CE3
B9 LED common ground: PROG6 D9 via D-FF in /CE3
B10 LED common ground: PROG5 D10 via D-FF in /CE3
B11 LED common ground: PROG4 D11 via D-FF in /CE3
B12 LED common ground: PROG3 D12 via D-FF in /CE3
B13 LED common ground: PROG2 D13 via D-FF in /CE3
B14 LED common ground: PROG1 D14 via D-FF in /CE3
B15 No connection / separator  
B16 Keyboard inputs D16 via BIDIR-BUF
B17 Keyboard inputs D17 via BIDIR-BUF
B18 Keyboard inputs D18 via BIDIR-BUF
B19 Keyboard inputs D19 via BIDIR-BUF
B20 Keyboard inputs D20 via BIDIR-BUF
B21 Keyboard inputs D21 via BIDIR-BUF
B22 Keyboard inputs D22 via BIDIR-BUF
B23 Keyboard inputs D23 via BIDIR-BUF
B24 Keyboard inputs D24 via 2x INVERT
B25 Keyboard outputs CLKR0
B26 Keyboard outputs CLKX0
B27 Keyboard outputs FSR0
B28 Keyboard outputs DR0
B29 Red/green select? D15 via D-FF in /CE3
B30 GND, LED feedline GND
B31 Vcc, LED feedline Vcc
B32 Keyboard outputs FSX0

Keyboard connections

The keyboard is divided up as a 9-input, 5-output matrix. The map is as follows:

Matrix B25 B26 B27 B32 B28
B19 DOWN 6 4 SW4 DND

The LINEx buttons are located on the left of the display, the SWx buttons are located directly under the display, and the PROGx buttons are located on the bottom right of the GXP-2020.

LED connections

The MESSAGE LED is an exception; its common ground is connected to the inverse of the XF signal, which is set by the DSP with special instructions.

The other LEDs are stored in a D-FF that can be addressed as follows:

LCD connector

The board features a 26-pin connector to a 128x320 pixel LCD COG (or TAB?) display. The display carries number PO698AS2, and other numbers printed on the cable are S60715, 070812, HO6674. On the back of the LCD is a number S60715-V01-SA-070804.

These numbers lead to nothing. S60715 may well be the LCD identifier, but it does not seem to be publicly documented, and may be a dedicated batch for these phones. HO6674 sounds like a Holtek chip, which have been used in the past, except that these normally start with HT and that Holtek has no reference to any such numbers; again, this may be a dedicated chip for these LCD displays.

Update: There seems to be an LCD numbered S60715 and 320x160 pixels. It is described as Graphics LCD Module with FSTN, Positive, Transmissive Display Type and 320 x 160 Pixels Resolution and its properties are specified as:

Alternative: Another possible driver is the STN LCDS60715 by 33COM.

Continuing: The problem with having no documentation on the LCD is that they must be driven, both the data must be written to it in some format and several registers are usually setup to switch on the display and perhaps even configure the size of it. It might be possible to tap this information from a running display, but that is very difficult, given the size of these connectors.

Help by anyone on the LCD's is much appreciated -- I may not be able to solve them.

But wait: It appears as though the LCD has no full controller on board, but just accepts scanlines to be displayed. That would mean driving them continuously, which does indeed seem possible using the DMA facilities of the DSP. That way, a few pennies are saved on an extra chip, at the expense of having a much larger chip run all the time. We really need e-paper displays on phones! If this is true, driving the display would be fairly straightforward.

The pinout to the LCD on the GXP1200 (similar to the one on the GXP-2020) as far as it is clear to me now:

Pin Connect Probable meaning
1 N/C? Perhaps for 16-bit support
2 N/C? Perhaps for 16-bit support
3 N/C? Perhaps for 16-bit support
4 N/C? Perhaps for 16-bit support
5 N/C? Perhaps for 16-bit support
6 N/C? Perhaps for 16-bit support
7 N/C? Perhaps for 16-bit support
8 N/C? Perhaps for 16-bit support
9 N/C? Perhaps for 16-bit support
10 N/C? Perhaps for 16-bit support
11 GND Supply or signal (e.g. 8-bit mode)
12 Vcc Supply voltage, 3V3
13 N/C? Perhaps for 16-bit support
14 D23 Data line for 8-bit mode
15 D22 Data line for 8-bit mode
16 D21 Data line for 8-bit mode
17 D20 Data line for 8-bit mode
18 D19 Data line for 8-bit mode
19 D18 Data line for 8-bit mode
20 D17 Data line for 8-bit mode
21 D16 Data line for 8-bit mode
22 /CS From ORs: /CE3 + /WE + A20
23 /A2 Perhaps mode register/data, or sync
24 GPIO7 Perhaps mode register/data, or sync
25 GND Supply or signal (e.g. 8-bit mode)

Attaching /CS to a logic analyser, it shows up as mostly high, or inactive. Once a second, it bursts for a number of peaks that suggest that the display is being updated. These bursts last a total of about 4.5 ms, albeit that there are usually a few pauses of about 1/3 of the total time. The time between each /CS activations is about 3 us, so the estimated number of /CS activations per screen update is about 1000 times. That could mean that of the 128x32=4096 pixels to be written, 4 pixels are written each time. Still, the presence of 8 data bits suggests otherwise.

Probing at the pins while the display was displaying static content, I got the displayed contents shifted up, as though it had missed the sync on a few lines, and the bottom portion got filled with random speckles. That does make it appear as though the data is pumped in continuously, without a vertical sync. Even if there is no such sync, then still the silence of the line with only bursts once per second suggest that they must be driven internally.