GCC Code Coverage Report


Directory: ./
File: firmware/controllers/tcu/tc_4.cpp
Date: 2025-11-16 14:52:24
Coverage Exec Excl Total
Lines: 94.8% 311 0 328
Functions: 100.0% 6 0 6
Branches: 61.2% 30 0 49
Decisions: 68.6% 24 - 35

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "tc_4.h"
4
5 #if EFI_TCU
6 Generic4TransmissionController generic4TransmissionController;
7 static SimplePwm pcPwm("Pressure Control");
8
9 4 void Generic4TransmissionController::init() {
10 4 SimpleTransmissionController::init();
11
12 4 enginePins.tcuTccOnoffSolenoid.initPin("TCC On/Off Solenoid", engineConfiguration->tcu_tcc_onoff_solenoid, engineConfiguration->tcu_tcc_onoff_solenoid_mode);
13
14 4 enginePins.tcuPcSolenoid.initPin("Pressure Control Solenoid", engineConfiguration->tcu_pc_solenoid_pin, engineConfiguration->tcu_pc_solenoid_pin_mode);
15 4 startSimplePwm(&pcPwm,
16 "Line Pressure",
17 &engine->scheduler,
18 &enginePins.tcuPcSolenoid,
19 4 engineConfiguration->tcu_pc_solenoid_freq,
20 0);
21 4 }
22
23 4825 void Generic4TransmissionController::update(gear_e gear) {
24
2/2
✓ Branch 1 taken 9 times.
✓ Branch 2 taken 4816 times.
2/2
✓ Decision 'true' taken 9 times.
✓ Decision 'false' taken 4816 times.
4825 if (gear != getCurrentGear()) {
25 9 shiftingFrom = getCurrentGear();
26 9 isShifting = true;
27 9 measureShiftTime(gear);
28 }
29
30 // set torque converter and pressure control state
31 4825 setTccState(gear);
32 4825 setPcState(gear);
33
34 4825 setCurrentGear(gear);
35
36 4825 SimpleTransmissionController::update(gear);
37
38 4825 float time = isShiftCompleted();
39 // 0 means shift is not completed
40
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 4822 times.
2/2
✓ Decision 'true' taken 3 times.
✓ Decision 'false' taken 4822 times.
4825 if (time != 0) {
41 3 lastShiftTime = time;
42 3 isShifting = false;
43 }
44 4825 }
45
46 4825 void Generic4TransmissionController::setTccState(gear_e gear) {
47 // disable if shifting
48
2/2
✓ Branch 0 taken 2423 times.
✓ Branch 1 taken 2402 times.
2/2
✓ Decision 'true' taken 2423 times.
✓ Decision 'false' taken 2402 times.
4825 if (isShifting) {
49 2423 enginePins.tcuTccOnoffSolenoid.setValue(0);
50 2423 return;
51 }
52
53 2402 auto tps = Sensor::get(SensorType::DriverThrottleIntent);
54 2402 auto vss = Sensor::get(SensorType::VehicleSpeed);
55
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2402 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1/2
✓ Decision 'true' taken 2402 times.
✗ Decision 'false' not taken.
2402 if (!tps.Valid || !vss.Valid) {
56 2402 return;
57 }
58 // only enable TC in gear 4
59 if (gear == GEAR_4) {
60 int lockSpeed = interpolate2d(tps.Value, config->tcu_tccTpsBins, config->tcu_tccLockSpeed);
61 int unlockSpeed = interpolate2d(tps.Value, config->tcu_tccTpsBins, config->tcu_tccUnlockSpeed);
62 if (vss.Value > lockSpeed) {
63 // torqueConverterDuty is only used for a gauge
64 torqueConverterDuty = 100;
65 enginePins.tcuTccOnoffSolenoid.setValue(1);
66 } else if (vss.Value < unlockSpeed) {
67 torqueConverterDuty = 0;
68 enginePins.tcuTccOnoffSolenoid.setValue(1);
69 }
70 } else {
71 torqueConverterDuty = 0;
72 enginePins.tcuTccOnoffSolenoid.setValue(0);
73 }
74 }
75
76 4825 void Generic4TransmissionController::setPcState(gear_e gear) {
77 uint8_t (*pcts)[TCU_TABLE_WIDTH];
78
79
5/7
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 619 times.
✓ Branch 3 taken 704 times.
✓ Branch 4 taken 497 times.
✓ Branch 5 taken 3003 times.
✗ Branch 6 not taken.
4825 switch (gear) {
80 case REVERSE:
81 pcts = &config->tcu_pcValsR;
82 break;
83
1/1
✓ Decision 'true' taken 2 times.
2 case NEUTRAL:
84 2 pcts = &config->tcu_pcValsN;
85 2 break;
86
1/1
✓ Decision 'true' taken 619 times.
619 case GEAR_1:
87
3/4
✓ Branch 0 taken 619 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 412 times.
✓ Branch 3 taken 207 times.
2/2
✓ Decision 'true' taken 412 times.
✓ Decision 'false' taken 207 times.
619 if (isShifting && shiftingFrom == GEAR_2) {
88 412 pcts = &config->tcu_pcVals21;
89 } else {
90 207 pcts = &config->tcu_pcVals1;
91 }
92 619 break;
93
1/1
✓ Decision 'true' taken 704 times.
704 case GEAR_2:
94
3/4
✓ Branch 0 taken 704 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 203 times.
✓ Branch 3 taken 501 times.
2/2
✓ Decision 'true' taken 203 times.
✓ Decision 'false' taken 501 times.
704 if (isShifting && shiftingFrom == GEAR_1) {
95 203 pcts = &config->tcu_pcVals12;
96
3/4
✓ Branch 0 taken 501 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 500 times.
✓ Branch 3 taken 1 time.
2/2
✓ Decision 'true' taken 500 times.
✓ Decision 'false' taken 1 time.
501 } else if (isShifting && shiftingFrom == GEAR_3) {
97 500 pcts = &config->tcu_pcVals32;
98 } else {
99 1 pcts = &config->tcu_pcVals2;
100 }
101 704 break;
102
1/1
✓ Decision 'true' taken 497 times.
497 case GEAR_3:
103
3/4
✓ Branch 0 taken 497 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 493 times.
2/2
✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 493 times.
497 if (isShifting && shiftingFrom == GEAR_2) {
104 4 pcts = &config->tcu_pcVals23;
105
2/4
✓ Branch 0 taken 493 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 493 times.
✗ Branch 3 not taken.
1/2
✓ Decision 'true' taken 493 times.
✗ Decision 'false' not taken.
493 } else if (isShifting && shiftingFrom == GEAR_4) {
106 493 pcts = &config->tcu_pcVals43;
107 } else {
108 pcts = &config->tcu_pcVals3;
109 }
110 497 break;
111
1/1
✓ Decision 'true' taken 3003 times.
3003 case GEAR_4:
112
3/4
✓ Branch 0 taken 602 times.
✓ Branch 1 taken 2401 times.
✓ Branch 2 taken 602 times.
✗ Branch 3 not taken.
2/2
✓ Decision 'true' taken 602 times.
✓ Decision 'false' taken 2401 times.
3003 if (isShifting && shiftingFrom == GEAR_3) {
113 602 pcts = &config->tcu_pcVals34;
114 } else {
115 2401 pcts = &config->tcu_pcVals4;
116 }
117 3003 break;
118 default:
119 break;
120 }
121
122
1/2
✓ Branch 0 taken 4825 times.
✗ Branch 1 not taken.
1/2
✓ Decision 'true' taken 4825 times.
✗ Decision 'false' not taken.
4825 if (pcts) {
123 4825 pressureControlDuty = interpolate2d(engine->engineState.airflowEstimate, config->tcu_pcAirmassBins, *pcts);
124 4825 pcPwm.setSimplePwmDutyCycle(0.01f * pressureControlDuty);
125 }
126 4825 }
127
128 4 Generic4TransmissionController* getGeneric4TransmissionController() {
129 4 return &generic4TransmissionController;
130 }
131
132 // here we have default 4R70W calibration
133 2 void configureTcu4R70W() {
134 // TCU Software Config
135 2 engineConfiguration->tcuEnabled = true;
136 2 engineConfiguration->gearControllerMode = GearControllerMode::Generic;
137 2 engineConfiguration->transmissionControllerMode = TransmissionControllerMode::Generic4;
138
139 // TCU Inputs
140 // Buttonshift
141 2 engineConfiguration->tcuUpshiftButtonPin = Gpio::E14;
142 2 engineConfiguration->tcuUpshiftButtonPinMode = PI_PULLUP;
143 2 engineConfiguration->tcuDownshiftButtonPin = Gpio::E13;
144 2 engineConfiguration->tcuDownshiftButtonPinMode = PI_PULLUP;
145 // Analog range sensor - used in early 4R70
146 2 engineConfiguration->tcu_rangeSensorBiasResistor = 1753;
147 2 engineConfiguration->tcu_rangeAnalogInput[0] = EFI_ADC_4;
148 // Two digital for +/- add-on
149 2 engineConfiguration->tcu_rangeInput[1] = Gpio::C6;
150 2 engineConfiguration->tcu_rangeInputMode[1] = PI_PULLUP;
151 2 engineConfiguration->tcu_rangeInput[2] = Gpio::E15;
152 2 engineConfiguration->tcu_rangeInputMode[2] = PI_PULLUP;
153 // Range voltages/digital states
154 2 config->tcu_rangeR[0] = 6072.0;
155 2 config->tcu_rangeR[1] = 0.0;
156 2 config->tcu_rangeR[2] = 0.0;
157 2 config->tcu_rangeP[0] = 18500.0;
158 2 config->tcu_rangeP[1] = 0.0;
159 2 config->tcu_rangeP[2] = 0.0;
160 2 config->tcu_rangeN[0] = 3028.0;
161 2 config->tcu_rangeN[1] = 0.0;
162 2 config->tcu_rangeN[2] = 0.0;
163 2 config->tcu_rangeD[0] = 1645.0;
164 2 config->tcu_rangeD[1] = 0.0;
165 2 config->tcu_rangeD[2] = 0.0;
166 2 config->tcu_rangeM2[0] = 864.0;
167 2 config->tcu_rangeM2[1] = 0.0;
168 2 config->tcu_rangeM2[2] = 0.0;
169 2 config->tcu_rangeM1[0] = 358.0;
170 2 config->tcu_rangeM1[1] = 0.0;
171 2 config->tcu_rangeM1[2] = 0.0;
172 2 config->tcu_rangePlus[0] = 0.0;
173 2 config->tcu_rangePlus[1] = 1.0;
174 2 config->tcu_rangePlus[2] = 0.0;
175 2 config->tcu_rangeMinus[0] = 0.0;
176 2 config->tcu_rangeMinus[1] = 0.0;
177 2 config->tcu_rangeMinus[2] = 1.0;
178 // Disable these states
179 2 config->tcu_rangeM[1] = 3.0;
180 2 config->tcu_rangeM3[1] = 3.0;
181 2 config->tcu_rangeLow[1] = 3.0;
182
183 // TCU Outputs
184 2 engineConfiguration->tcu_tcc_onoff_solenoid = Gpio::B8;
185 2 engineConfiguration->tcu_tcc_onoff_solenoid_mode = OM_DEFAULT;
186 2 engineConfiguration->tcu_pc_solenoid_pin = Gpio::E1;
187 2 engineConfiguration->tcu_pc_solenoid_pin_mode = OM_DEFAULT;
188 2 engineConfiguration->tcu_pc_solenoid_freq = 240;
189 2 engineConfiguration->tcu_solenoid[0] = Gpio::B6;
190 2 engineConfiguration->tcu_solenoid_mode[0] = OM_DEFAULT;
191 2 engineConfiguration->tcu_solenoid[1] = Gpio::B5;
192 2 engineConfiguration->tcu_solenoid_mode[1] = OM_DEFAULT;
193 // Reverse
194 2 config->tcuSolenoidTable[0][0] = 1;
195 2 config->tcuSolenoidTable[1][0] = 0;
196 // Neutral
197 2 config->tcuSolenoidTable[0][1] = 1;
198 2 config->tcuSolenoidTable[1][1] = 0;
199 // 1
200 2 config->tcuSolenoidTable[0][2] = 1;
201 2 config->tcuSolenoidTable[1][2] = 0;
202 // 2
203 2 config->tcuSolenoidTable[0][3] = 0;
204 2 config->tcuSolenoidTable[1][3] = 0;
205 // 3
206 2 config->tcuSolenoidTable[0][4] = 0;
207 2 config->tcuSolenoidTable[1][4] = 1;
208 // 4
209 2 config->tcuSolenoidTable[0][5] = 1;
210 2 config->tcuSolenoidTable[1][5] = 1;
211
212 // Pressure Control
213 2 config->tcu_pcAirmassBins[0] = 50.0;
214 2 config->tcu_pcAirmassBins[1] = 110.0;
215 2 config->tcu_pcAirmassBins[2] = 220.0;
216 2 config->tcu_pcAirmassBins[3] = 350.0;
217 2 config->tcu_pcAirmassBins[4] = 500.0;
218 2 config->tcu_pcAirmassBins[5] = 750.0;
219 2 config->tcu_pcAirmassBins[6] = 900.0;
220 2 config->tcu_pcAirmassBins[7] = 1000.0;
221 2 config->tcu_pcValsR[0] = 40.0;
222 2 config->tcu_pcValsR[1] = 35.0;
223 2 config->tcu_pcValsR[2] = 30.0;
224 2 config->tcu_pcValsR[3] = 30.0;
225 2 config->tcu_pcValsR[4] = 30.0;
226 2 config->tcu_pcValsR[5] = 25.0;
227 2 config->tcu_pcValsR[6] = 10.0;
228 2 config->tcu_pcValsR[7] = 10.0;
229 2 config->tcu_pcValsN[0] = 40.0;
230 2 config->tcu_pcValsN[1] = 35.0;
231 2 config->tcu_pcValsN[2] = 30.0;
232 2 config->tcu_pcValsN[3] = 30.0;
233 2 config->tcu_pcValsN[4] = 30.0;
234 2 config->tcu_pcValsN[5] = 25.0;
235 2 config->tcu_pcValsN[6] = 10.0;
236 2 config->tcu_pcValsN[7] = 10.0;
237 2 config->tcu_pcVals1[0] = 40.0;
238 2 config->tcu_pcVals1[1] = 35.0;
239 2 config->tcu_pcVals1[2] = 30.0;
240 2 config->tcu_pcVals1[3] = 30.0;
241 2 config->tcu_pcVals1[4] = 30.0;
242 2 config->tcu_pcVals1[5] = 25.0;
243 2 config->tcu_pcVals1[6] = 10.0;
244 2 config->tcu_pcVals1[7] = 10.0;
245 2 config->tcu_pcVals2[0] = 40.0;
246 2 config->tcu_pcVals2[1] = 35.0;
247 2 config->tcu_pcVals2[2] = 30.0;
248 2 config->tcu_pcVals2[3] = 30.0;
249 2 config->tcu_pcVals2[4] = 30.0;
250 2 config->tcu_pcVals2[5] = 25.0;
251 2 config->tcu_pcVals2[6] = 10.0;
252 2 config->tcu_pcVals2[7] = 10.0;
253 2 config->tcu_pcVals3[0] = 40.0;
254 2 config->tcu_pcVals3[1] = 35.0;
255 2 config->tcu_pcVals3[2] = 30.0;
256 2 config->tcu_pcVals3[3] = 30.0;
257 2 config->tcu_pcVals3[4] = 30.0;
258 2 config->tcu_pcVals3[5] = 25.0;
259 2 config->tcu_pcVals3[6] = 10.0;
260 2 config->tcu_pcVals3[7] = 10.0;
261 2 config->tcu_pcVals4[0] = 40.0;
262 2 config->tcu_pcVals4[1] = 35.0;
263 2 config->tcu_pcVals4[2] = 30.0;
264 2 config->tcu_pcVals4[3] = 30.0;
265 2 config->tcu_pcVals4[4] = 30.0;
266 2 config->tcu_pcVals4[5] = 25.0;
267 2 config->tcu_pcVals4[6] = 10.0;
268 2 config->tcu_pcVals4[7] = 10.0;
269 2 config->tcu_pcVals12[0] = 80.0;
270 2 config->tcu_pcVals12[1] = 60.0;
271 2 config->tcu_pcVals12[2] = 50.0;
272 2 config->tcu_pcVals12[3] = 44.0;
273 2 config->tcu_pcVals12[4] = 40.0;
274 2 config->tcu_pcVals12[5] = 20.0;
275 2 config->tcu_pcVals12[6] = 10.0;
276 2 config->tcu_pcVals12[7] = 10.0;
277 2 config->tcu_pcVals23[0] = 45.0;
278 2 config->tcu_pcVals23[1] = 40.0;
279 2 config->tcu_pcVals23[2] = 35.0;
280 2 config->tcu_pcVals23[3] = 30.0;
281 2 config->tcu_pcVals23[4] = 35.0;
282 2 config->tcu_pcVals23[5] = 15.0;
283 2 config->tcu_pcVals23[6] = 10.0;
284 2 config->tcu_pcVals23[7] = 10.0;
285 2 config->tcu_pcVals34[0] = 35.0;
286 2 config->tcu_pcVals34[1] = 32.0;
287 2 config->tcu_pcVals34[2] = 30.0;
288 2 config->tcu_pcVals34[3] = 38.0;
289 2 config->tcu_pcVals34[4] = 25.0;
290 2 config->tcu_pcVals34[5] = 15.0;
291 2 config->tcu_pcVals34[6] = 10.0;
292 2 config->tcu_pcVals34[7] = 10.0;
293 2 config->tcu_pcVals21[0] = 60.0;
294 2 config->tcu_pcVals21[1] = 55.0;
295 2 config->tcu_pcVals21[2] = 50.0;
296 2 config->tcu_pcVals21[3] = 45.0;
297 2 config->tcu_pcVals21[4] = 40.0;
298 2 config->tcu_pcVals21[5] = 35.0;
299 2 config->tcu_pcVals21[6] = 30.0;
300 2 config->tcu_pcVals21[7] = 30.0;
301 2 config->tcu_pcVals32[0] = 60.0;
302 2 config->tcu_pcVals32[1] = 55.0;
303 2 config->tcu_pcVals32[2] = 50.0;
304 2 config->tcu_pcVals32[3] = 45.0;
305 2 config->tcu_pcVals32[4] = 40.0;
306 2 config->tcu_pcVals32[5] = 35.0;
307 2 config->tcu_pcVals32[6] = 30.0;
308 2 config->tcu_pcVals32[7] = 30.0;
309 2 config->tcu_pcVals43[0] = 60.0;
310 2 config->tcu_pcVals43[1] = 55.0;
311 2 config->tcu_pcVals43[2] = 50.0;
312 2 config->tcu_pcVals43[3] = 45.0;
313 2 config->tcu_pcVals43[4] = 40.0;
314 2 config->tcu_pcVals43[5] = 35.0;
315 2 config->tcu_pcVals43[6] = 30.0;
316 2 config->tcu_pcVals43[7] = 30.0;
317
318 // TCC Control
319 2 config->tcu_tccTpsBins[0] = 11.0;
320 2 config->tcu_tccTpsBins[1] = 22.0;
321 2 config->tcu_tccTpsBins[2] = 33.0;
322 2 config->tcu_tccTpsBins[3] = 44.0;
323 2 config->tcu_tccTpsBins[4] = 55.0;
324 2 config->tcu_tccTpsBins[5] = 66.0;
325 2 config->tcu_tccTpsBins[6] = 77.0;
326 2 config->tcu_tccTpsBins[7] = 88.0;
327 2 config->tcu_tccLockSpeed[0] = 40.0;
328 2 config->tcu_tccLockSpeed[1] = 45.0;
329 2 config->tcu_tccLockSpeed[2] = 52.0;
330 2 config->tcu_tccLockSpeed[3] = 60.0;
331 2 config->tcu_tccLockSpeed[4] = 70.0;
332 2 config->tcu_tccLockSpeed[5] = 83.0;
333 2 config->tcu_tccLockSpeed[6] = 97.0;
334 2 config->tcu_tccLockSpeed[7] = 115.0;
335 2 config->tcu_tccUnlockSpeed[0] = 30.0;
336 2 config->tcu_tccUnlockSpeed[1] = 35.0;
337 2 config->tcu_tccUnlockSpeed[2] = 41.0;
338 2 config->tcu_tccUnlockSpeed[3] = 49.0;
339 2 config->tcu_tccUnlockSpeed[4] = 53.0;
340 2 config->tcu_tccUnlockSpeed[5] = 67.0;
341 2 config->tcu_tccUnlockSpeed[6] = 78.0;
342 2 config->tcu_tccUnlockSpeed[7] = 93.0;
343
344 // Shift Config
345 2 config->tcu_shiftTime = 600.0;
346 2 config->tcu_shiftTpsBins[0] = 11.0;
347 2 config->tcu_shiftTpsBins[1] = 22.0;
348 2 config->tcu_shiftTpsBins[2] = 33.0;
349 2 config->tcu_shiftTpsBins[3] = 44.0;
350 2 config->tcu_shiftTpsBins[4] = 55.0;
351 2 config->tcu_shiftTpsBins[5] = 67.0;
352 2 config->tcu_shiftTpsBins[6] = 76.0;
353 2 config->tcu_shiftTpsBins[7] = 88.0;
354 2 config->tcu_shiftSpeed12[0] = 10.0;
355 2 config->tcu_shiftSpeed12[1] = 12.0;
356 2 config->tcu_shiftSpeed12[2] = 16.0;
357 2 config->tcu_shiftSpeed12[3] = 23.0;
358 2 config->tcu_shiftSpeed12[4] = 28.0;
359 2 config->tcu_shiftSpeed12[5] = 32.0;
360 2 config->tcu_shiftSpeed12[6] = 38.0;
361 2 config->tcu_shiftSpeed12[7] = 42.0;
362 2 config->tcu_shiftSpeed23[0] = 20.0;
363 2 config->tcu_shiftSpeed23[1] = 25.0;
364 2 config->tcu_shiftSpeed23[2] = 31.0;
365 2 config->tcu_shiftSpeed23[3] = 37.0;
366 2 config->tcu_shiftSpeed23[4] = 45.0;
367 2 config->tcu_shiftSpeed23[5] = 55.0;
368 2 config->tcu_shiftSpeed23[6] = 63.0;
369 2 config->tcu_shiftSpeed23[7] = 72.0;
370 2 config->tcu_shiftSpeed34[0] = 35.0;
371 2 config->tcu_shiftSpeed34[1] = 40.0;
372 2 config->tcu_shiftSpeed34[2] = 47.0;
373 2 config->tcu_shiftSpeed34[3] = 55.0;
374 2 config->tcu_shiftSpeed34[4] = 65.0;
375 2 config->tcu_shiftSpeed34[5] = 78.0;
376 2 config->tcu_shiftSpeed34[6] = 92.0;
377 2 config->tcu_shiftSpeed34[7] = 110.0;
378 2 config->tcu_shiftSpeed21[0] = 5.0;
379 2 config->tcu_shiftSpeed21[1] = 7.0;
380 2 config->tcu_shiftSpeed21[2] = 11.0;
381 2 config->tcu_shiftSpeed21[3] = 17.0;
382 2 config->tcu_shiftSpeed21[4] = 20.0;
383 2 config->tcu_shiftSpeed21[5] = 23.0;
384 2 config->tcu_shiftSpeed21[6] = 26.0;
385 2 config->tcu_shiftSpeed21[7] = 32.0;
386 2 config->tcu_shiftSpeed32[0] = 10.0;
387 2 config->tcu_shiftSpeed32[1] = 13.0;
388 2 config->tcu_shiftSpeed32[2] = 21.0;
389 2 config->tcu_shiftSpeed32[3] = 30.0;
390 2 config->tcu_shiftSpeed32[4] = 35.0;
391 2 config->tcu_shiftSpeed32[5] = 45.0;
392 2 config->tcu_shiftSpeed32[6] = 50.0;
393 2 config->tcu_shiftSpeed32[7] = 55.0;
394 2 config->tcu_shiftSpeed43[0] = 25.0;
395 2 config->tcu_shiftSpeed43[1] = 30.0;
396 2 config->tcu_shiftSpeed43[2] = 36.0;
397 2 config->tcu_shiftSpeed43[3] = 44.0;
398 2 config->tcu_shiftSpeed43[4] = 48.0;
399 2 config->tcu_shiftSpeed43[5] = 62.0;
400 2 config->tcu_shiftSpeed43[6] = 73.0;
401 2 config->tcu_shiftSpeed43[7] = 88.0;
402 2 }
403
404 #endif // EFI_TCU
405