FreeCalypso > hg > freecalypso-docs
comparison FC-modem-family @ 21:69ee60206c53
FC-modem-family article written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 23 Oct 2019 00:11:37 +0000 |
parents | |
children | 1e76655a44bd |
comparison
equal
deleted
inserted
replaced
20:3fa4006696d0 | 21:69ee60206c53 |
---|---|
1 I, Mother Mychaela, have a vision for a family of FreeCalypso modem products in | |
2 different physical form factors, possibly with variations in offered | |
3 functionality, all sharing the same fcmodem firmware build target - meaning that | |
4 the same FreeCalypso fw built for the fcmodem target (a proposed successor to | |
5 the current fcdev3b build target) will run on all FC modem hw products, | |
6 requiring some commonalities across the entire product family but also | |
7 supporting some variations. The following design constraints are hereby being | |
8 laid down in order to make this common fcmodem firmware possible: | |
9 | |
10 * All FC modem products will be either triband or quadband: triband if the | |
11 current Openmoko-based RFFE is kept as is (the safer route with less effort | |
12 and design labor cost) or quadband if the customer commissioning a modem | |
13 product is more adventurous and willing to pay more and take greater risks in | |
14 order to get full quadband capability. Please refer to the Quadband-ideas | |
15 article for further details. | |
16 | |
17 * Flash chip type autodetection in both fc-loadtool and firmware FFS driver code | |
18 allows different flash chip types to be used depending on business needs, | |
19 parts availability and the available physical space on the PCB. Flash | |
20 capacity can range from 4 MiB (minimum fw requirement) to 16 MiB (maximum | |
21 Calypso addressing capability); if a 16 MiB flash chip with two 8 MiB chip | |
22 select banks is used, then the second bank must be on nCS2 (like on FCDEV3B), | |
23 not on any other Calypso chip select. | |
24 | |
25 * External RAM (XRAM) capacity can range from 512 KiB (minimum fw requirement) | |
26 to 8 MiB (maximum Calypso addressing capability), but it will always be on | |
27 nCS1, not on any other Calypso chip select. | |
28 | |
29 * The extra logic voltage level translating buffer IC that was introduced on | |
30 FCDEV3B V2 in order to make flash reset timing compatible with S71PL129N flash | |
31 may or may not be included. The Mother's preference is to include it when | |
32 possible in order to increase the repertoire of usable flash chips, but if a | |
33 given design allows no PCB space for this extra little IC, then it will be | |
34 acceptable to go back to driving the flash reset line with FDP and require | |
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 | |
39 MCSI | |
40 ==== | |
41 | |
42 It is envisioned that most FC modem products will provide a digital voice | |
43 interface via MCSI as a major feature, but some may not. If a given product | |
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 | |
50 However, if a given product does not feature MCSI, then it will be an unwelcome | |
51 burden to require extra pull-down resistors on the PCB, hence a different | |
52 provision is planned. If and when we ever produce a FreeCalypso modem without | |
53 MCSI, we will program a /etc/fc-pinmux file in FFS telling our fcmodem firmware | |
54 to switch the MCSI pins into GPIO mode and to drive all 4 of them as dummy | |
55 outputs, eliminating floating I/O pins without any effort from the hardware | |
56 side. | |
57 | |
58 Why would a FreeCalypso modem product not feature MCSI? Two use cases are | |
59 envisioned here: | |
60 | |
61 * The new GTA02-like smartphone motherboard thought experiment - see the | |
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 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 ========================================= | |
176 | |
177 The present vision of having the same fcmodem firmware support all FreeCalypso | |
178 modem products applies ONLY to those hardware products which are designed and | |
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 | |
185 In the event that some third party buys a legitimate license to produce their | |
186 own derived works based on FreeCalypso hardware designs, we may provide | |
187 technical support to that specific customer as per our agreement with them, but | |
188 any such support will be customer-specific: our generic, non-customer-specific | |
189 public FreeCalypso firmwares will only ever support our own official | |
190 Falconia/FreeCalypso modem products, and should not be expected to support any | |
191 customized products made by or at the request of particular third parties. |