comparison FC-modem-family @ 33:7aed57fc1928

FC-modem-family article fully rewritten for the new reality of FC Tango modules
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 28 Sep 2020 00:48:17 +0000
parents 1e76655a44bd
children
comparison
equal deleted inserted replaced
32:78c2cc6ebbb8 33:7aed57fc1928
1 I, Mother Mychaela, have a vision for a family of FreeCalypso modem products in 1 The very first FreeCalypso hardware product named FCDEV3B was conceived in 2015
2 different physical form factors, possibly with variations in offered 2 and physically produced in the first version in 2017, with the final all-bugs-
3 functionality, all sharing the same fcmodem firmware build target - meaning that 3 fixed version produced in early 2019. FCDEV3B was conceived to fulfill an
4 the same FreeCalypso fw built for the fcmodem target (a proposed successor to 4 internal project need: to replace no longer available and quite inconvenient
5 the current fcdev3b build target) will run on all FC modem hw products, 5 Openmoko hardware, and to provide a platform for empirically learning those
6 requiring some commonalities across the entire product family but also 6 parts of TI's chipset+fw solution which were previously elusive. The '3B' at
7 supporting some variations. The following design constraints are hereby being 7 the end of FCDEV3B board name stands for triband, which was a deviation from
8 laid down in order to make this common fcmodem firmware possible: 8 the Mother's original desires: ever since I first found TI's Leonardo schematics
9 back in 2011, I had always wanted to make all of my FreeCalypso hw designs fully
10 quadband, following TI's original Leonardo+ quadband reference design. But in
11 2015 we lacked the necessary know-how to recreate TI's quadband Leonardo from
12 schematics alone, whereas for Openmoko's triband version we had not only
13 schematics, but also the complete PCB layout - thus we took the only course of
14 action that was viable at that time, and produced our FCDEV3B based on
15 Openmoko's version of the Calypso modem.
9 16
10 * All FC modem products will be either triband or quadband: triband if the 17 At the same time when our first FCDEV3B boards were being produced and debugged,
11 current Openmoko-based RFFE is kept as is (the safer route with less effort 18 there was talk about producing a derivative version that would be packaged as a
12 and design labor cost) or quadband if the customer commissioning a modem 19 component to be integrated into other people's systems and projects, as opposed
13 product is more adventurous and willing to pay more and take greater risks in 20 to a standalone development board for use on a lab bench. I also did not feel
14 order to get full quadband capability. Please refer to the Quadband-ideas 21 like staying triband forever, and the thought of a future quadband successor was
15 article for further details. 22 on my mind even as FCDEV3B was being designed. Thus there was an intent to have
23 a family of FreeCalypso modem products, eventually evolving from triband to
24 quadband, and being made in different form factors for different use cases.
25 But none of these ideas ever came to fruition because no one ever funded any of
26 them.
16 27
17 * Flash chip type autodetection in both fc-loadtool and firmware FFS driver code 28 The situation changed drastically with the discovery of already existing Tango
18 allows different flash chip types to be used depending on business needs, 29 modem modules, discovery that was made in December of 2019 and fully accepted
19 parts availability and the available physical space on the PCB. Flash 30 as the new reality over the course of 2020. The newly discovered Tango modem
20 capacity can range from 4 MiB (minimum fw requirement) to 16 MiB (maximum 31 module is essentially a mass-produced version of TI's Leonardo+ quadband
21 Calypso addressing capability); if a 16 MiB flash chip with two 8 MiB chip 32 reference design, and it is a very good module, even more capable than what we
22 select banks is used, then the second bank must be on nCS2 (like on FCDEV3B), 33 would have produced if someone had funded our ideas in the 2017 to 2019 period.
23 not on any other Calypso chip select.
24 34
25 * External RAM (XRAM) capacity can range from 512 KiB (minimum fw requirement) 35 In this new Tango reality it makes absolutely no business sense to produce any
26 to 8 MiB (maximum Calypso addressing capability), but it will always be on 36 new FreeCalypso modem modules, so instead we decided on a different and quite
27 nCS1, not on any other Calypso chip select. 37 novel course of action: we are officially adopting this already existing Tango
38 module into our FreeCalypso family by way of rebranding - we are going to resell
39 these modules as FreeCalypso Tango, flashed with our FreeCalypso firmware and
40 differentiated from non-FC-sourced modules with a sticker bearing our trademark.
41 Our rebranded and reflashed FC Tango modules are expected to become available
42 in December of 2020.
28 43
29 * The extra logic voltage level translating buffer IC that was introduced on 44 On the FreeCalypso firmware side, our earlier idea of a single fcmodem target
30 FCDEV3B V2 in order to make flash reset timing compatible with S71PL129N flash 45 that would cover multiple physical hw products in the FC modem family has been
31 may or may not be included. The Mother's preference is to include it when 46 withdrawn: our existing FCDEV3B hw is covered by firmware build target fcdev3b,
32 possible in order to increase the repertoire of usable flash chips, but if a 47 whereas Tango modems are covered by fw build target tangomdm. Openmoko modems
33 given design allows no PCB space for this extra little IC, then it will be 48 are covered by fw build target gtamodem. None of these 3 fw build targets are
34 acceptable to go back to driving the flash reset line with FDP and require 49 interchangeable: each build will only work on its one respective hw target.
35 the use of some flash chip other than S71PL129N - if the same footprint needs
36 to be kept and/or maximum flash and RAM capacity is desired, S71PL129J can be
37 used instead.
38 50
39 MCSI 51 In the unlikely event that our recently discovered Tango modules prove
40 ==== 52 insufficient and someone commissions us to design and build a new Calypso modem
53 starting from just chips, it will probably make the most sense to design that
54 new modem in such a way that it would share the same fw build with Tango, rather
55 than with FCDEV3B: Tango is much more versatile in terms of how the multitude
56 of Calypso GPIO and multifunction pins may be configured.
41 57
42 It is envisioned that most FC modem products will provide a digital voice 58 FreeCalypso handset idea
43 interface via MCSI as a major feature, but some may not. If a given product 59 ========================
44 does feature MCSI, pull-down resistors for MCSI_CLK and MCSI_FSYNCH will need
45 to be included on the modem module itself, so that the user always sees them as
46 non-floating outputs from the modem. MCSI_RXD will be a pure input without
47 on-board pull-up or pull-down resistors, i.e., the user will be responsible for
48 tying it off or pulling it to a stable logic level if it is unused.
49 60
50 However, if a given product does not feature MCSI, then it will be an unwelcome 61 I (Mother Mychaela) still desire my own FreeCalypso phone handset that would
51 burden to require extra pull-down resistors on the PCB, hence a different 62 replace my current Pirelli DP-L10 - but it is currently unknown whether or not
52 provision is planned. If and when we ever produce a FreeCalypso modem without 63 my personal life circumstances will remain such that this project desire will
53 MCSI, we will program a /etc/fc-pinmux file in FFS telling our fcmodem firmware 64 remain active, or if changes in my personal life circumstances (such as loss of
54 to switch the MCSI pins into GPIO mode and to drive all 4 of them as dummy 65 GSM service in the area where I live combined with no ability to relocate to a
55 outputs, eliminating floating I/O pins without any effort from the hardware 66 more GSM-friendly country) will invalidate this project desire.
56 side.
57 67
58 Why would a FreeCalypso modem product not feature MCSI? Two use cases are 68 In the now-seemingly-unlikely event that I live long enough with active GSM
59 envisioned here: 69 service to where I would get around to doing this FC handset project, it is my
70 desire to build that handset board starting from just chips, rather than based
71 on Tango. A handset is not a modem, thus handsets and modems generally do not
72 share the same firmware build targets - thus if my dream FC handset board ever
73 becomes a reality, it will have its own dedicated fw build target, not shared
74 with any other hw. I definitely wish to use the same quadband RFFE as Leonardo
75 and Tango, and my currently envisioned choice of flash chip is S71PL064J.
60 76
61 * The new GTA02-like smartphone motherboard thought experiment - see the 77 CONFIG_TARGET_FCFAM C preprocessor symbol
62 corresponding section at the end of this article;
63
64 * If we ever produce a FreeCalypso modem in the form factor of a USB dongle for
65 laptops, it would be very easy to incorporate an FT2232x adapter presenting
66 both Calypso UARTs to the USB host, but adding a USB-to-MCSI bridge would
67 entail much greater complexity, hence it may make sense to omit MCSI for this
68 product and instead provide an analog headset jack for voice calls.
69
70 GPIO
71 ====
72
73 Our firmware configures Calypso GPIO 3 as an input; GPIOs 0-2 and those
74 multifunction pins which are unused and configured as GPIOs (TSPDI/IO4,
75 BCLKX/IO6, MCUEN1/IO8 and MCUEN2/IO13) are configured as outputs. Board wiring
76 must be compatible with these directions: those pins which our fw drives as
77 outputs can be simply left unconnected, while GPIO 3 needs to be sensibly driven
78 or tied off as explained below.
79
80 Openmoko's modem puts out an application processor wakeup signal (asserted by
81 the fw when the modem needs to send something to the host but is blocked by CTS
82 being held high) on GPIO 1. In order to have full feature parity, our FC modems
83 will provide an equivalent signal as well, but we are moving it to GPIO 0
84 because in FreeCalypso GPIO 1 is already taken for the loudspeaker control
85 signal like on TI's D-Sample and Leonardo boards. Our firmware's complete GPIO
86 usage thus becomes:
87
88 GPIO0: application processor wakeup signal
89 GPIO1: loudspeaker amplifier on/off control
90 GPIO2: DCD modem control output
91 GPIO3: DTR modem control input
92 all others: dummy outputs
93
94 Because GPIO3/DTR is an input, it needs to be either sensibly driven or tied
95 off. On our current FCDEV3B this line has a 100 kOhm pull-down resistor to GND,
96 but it is not accessible to the user in any way - this design aspect was copied
97 from TI's Leonardo board before I thought better. Most of our future FC modem
98 products are planned to have DTR as a user input signal (which the user can tie
99 off if it is not used or needed in a given application), but if there is no DTR
100 user input signal on a given modem product, then GPIO3 will be grounded inside
101 the modem to keep the firmware happy.
102
103 Calypso's unused DSR_MODEM/LPG pin was left unconnected in Openmoko's version
104 but on our FCDEV3B it is tied to GND on the board. Future FC modem family
105 boards will also need to have this pin tied to GND: our firmware leaves this
106 pin in its default power-up config of DSR_MODEM input and does not change it to
107 LPG output, thus leaving it unconnected would cause it to float.
108
109 Extreme case: a new GTA02-like smartphone motherboard
110 =====================================================
111
112 A rather extreme thought-experiment test case for the FC modem family idea
113 presented in this article is this thought: suppose we wanted to produce a new
114 GTA02-like smartphone motherboard, bringing Openmoko's dream back from the dead.
115 We could try to make a verbatim clone of GTA02-MB-A6 from OM, but for both
116 technical and political reasons it would be desirable to make a few changes:
117
118 * Making a strictly verbatim clone of GTA02-MB-A6 would mean populating a
119 Samsung K5A3281CTM memory chip onto OM's PCB footprint which does not really
120 fit this chip properly. Changing the PCB footprint to fit K5A32xx more
121 properly would not be easy because there are signal traces in the PCB spots
122 where the extra mounting balls for K5A32xx would need to go. The approach
123 that seems most naturally sensible would be to populate a better-fitting
124 memory chip, such as Spansion S71PL129JB0BAW9Z for which that footprint was
125 properly made - but then the result would no longer be a verbatim clone of
126 OM's version, and our gtamodem target configuration would no longer fit. And
127 at that point it would make the most sense to stop following the gtamodem
128 config and to make it an fcmodem family product instead.
129
130 * It would be politically preferable if the new GTA02-like motherboard would run
131 fcmodem firmware rather than gtamodem, making a clean break from those parts
132 of OM's troubled history which caused them to be Closedmoko during certain
133 years.
134
135 Hence the technical challenge: would it be possible to make a GTA02 derivative
136 with absolutely minimal changes that would run fcmodem firmware instead of
137 legacy mokoN or FC fw builds for the gtamodem target? The answer is yes, and
138 here is the recipe - note that *no* new components need to be added to the
139 extremely tight PCB layout:
140
141 * Move the 2nd flash chip select connection from nCS4 to nCS2 on the Calypso;
142
143 * Move the AP wakeup interrupt line from GPIO1 to GPIO0 to match fcmodem
144 firmware GPIO assignments;
145
146 * Take the useless INT0 AP-to-BP connection line present in the GTA02 original
147 and move it to Calypso GPIO3, providing fcmodem firmware with the DTR input
148 it expects;
149
150 * Ground Calypso's unused DSR_MODEM/LPG signal, causing it to not float when
151 our fcmodem firmware keeps the power-up default of DSR_MODEM function;
152
153 * Program /etc/fc-pinmux in FreeCalypso FFS to tell the firmware that there is
154 no MCSI on this board, so that all 4 MCSI signals will become GPIO dummy
155 outputs and won't float.
156
157 Some additional changes which don't affect the firmware one way or the other:
158
159 * Remove R1003 and R1004 0Rs which seem to be the root cause of bug #1024 and
160 replace them with solid PCB traces;
161
162 * Up C1009 from 10 uF to 22 uF as additional guard from bug #1024;
163
164 * Ground Calypso's unused input RXIR_IRDA to keep it from floating - this input
165 cannot be changed to an output under firmware control without breaking other
166 functionality.
167
168 At the same time it would also make a lot of sense to remove the Glamo graphics
169 decelerator from the AP subsystem, connecting the LCD directly to the Samsung AP
170 like it was on GTA01 - thus from the AP software perspective the new motherboard
171 would also become its own new platform just like the modem, very similar to the
172 GTA02 original, but not strictly identical, featuring some improvements instead.
173
174 IP rights and FreeCalypso brand integrity
175 ========================================= 78 =========================================
176 79
177 The present vision of having the same fcmodem firmware support all FreeCalypso 80 As of 2020-09 this C preprocessor symbol (currently defined only for build
178 modem products applies ONLY to those hardware products which are designed and 81 target fcdev3b) has only two effects:
179 physically produced by Mother Mychaela or one of her business entities. We will
180 NOT provide any support whatsoever for any pirate hardware products that may be
181 produced by any persons or entities who are making, have made or are planning to
182 make inappropriate use of any of our published or unpublished board design
183 files.
184 82
185 In the event that some third party buys a legitimate license to produce their 83 1) It changes the src/cs/drivers/drv_app/ffs/board/dev.c table of supported
186 own derived works based on FreeCalypso hardware designs, we may provide 84 flash chips and FFS configurations, as well as a few other FFS config bits
187 technical support to that specific customer as per our agreement with them, but 85 to support the large 16 MiB flash config used on FCDEV3B. Targets like Tango
188 any such support will be customer-specific: our generic, non-customer-specific 86 with S71PL064J or S71PL032J flash will continue to work equally well whether
189 public FreeCalypso firmwares will only ever support our own official 87 or not CONFIG_TARGET_FCFAM is defined because these two flash chips are
190 Falconia/FreeCalypso modem products, and should not be expected to support any 88 listed in both versions of the table with the same FFS config, but 16 MiB
191 customized products made by or at the request of particular third parties. 89 flash chips S71PL129J and S71PL129N are supported only with
90 CONFIG_TARGET_FCFAM and cannot be otherwise, as their 2nd flash chip select
91 wiring is FC-specific. Yet on the contrary, Samsung K5A32xxCTM with
92 Openmoko's FFS config (also used by Huawei) is NOT compatible with
93 CONFIG_TARGET_FCFAM.
94
95 2) It changes the default compiled-in AFC Psi parameters in L1 from TI's
96 Leonardo values to a different set of numbers that match Openmoko/FCDEV3B
97 VCXO. But these compiled-in values are only fallbacks, and are generally
98 expected to be overridden by factory calibration written into FFS.
99
100 -h fcfam target for fc-loadtool
101 ===============================
102
103 The -h fcfam target must be used with FCDEV3B, no other loadtool configs will
104 work: FCDEV3B has a 16 MiB flash chip that is only supported with -h fcfam.
105 Either -h fcfam or -h gen8 will work equally well on FC Tango modems (S71PL064J
106 flash chip), thus you can use whichever config you feel is more philosophically
107 correct.