1*d83cc019SAndroid Build Coastguard Worker /*
2*d83cc019SAndroid Build Coastguard Worker * Copyright © 2014 Intel Corporation
3*d83cc019SAndroid Build Coastguard Worker *
4*d83cc019SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a
5*d83cc019SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"),
6*d83cc019SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation
7*d83cc019SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*d83cc019SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the
9*d83cc019SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions:
10*d83cc019SAndroid Build Coastguard Worker *
11*d83cc019SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next
12*d83cc019SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the
13*d83cc019SAndroid Build Coastguard Worker * Software.
14*d83cc019SAndroid Build Coastguard Worker *
15*d83cc019SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*d83cc019SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18*d83cc019SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*d83cc019SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*d83cc019SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21*d83cc019SAndroid Build Coastguard Worker * DEALINGS IN THE SOFTWARE.
22*d83cc019SAndroid Build Coastguard Worker */
23*d83cc019SAndroid Build Coastguard Worker
24*d83cc019SAndroid Build Coastguard Worker #include <inttypes.h>
25*d83cc019SAndroid Build Coastguard Worker #include <stdio.h>
26*d83cc019SAndroid Build Coastguard Worker #include <stdbool.h>
27*d83cc019SAndroid Build Coastguard Worker #include <stdint.h>
28*d83cc019SAndroid Build Coastguard Worker #include <stdlib.h>
29*d83cc019SAndroid Build Coastguard Worker
30*d83cc019SAndroid Build Coastguard Worker #include "intel_io.h"
31*d83cc019SAndroid Build Coastguard Worker #include "drmtest.h"
32*d83cc019SAndroid Build Coastguard Worker
33*d83cc019SAndroid Build Coastguard Worker #define LC_FREQ 2700
34*d83cc019SAndroid Build Coastguard Worker #define LC_FREQ_2K (LC_FREQ * 2000)
35*d83cc019SAndroid Build Coastguard Worker
36*d83cc019SAndroid Build Coastguard Worker #define P_MIN 2
37*d83cc019SAndroid Build Coastguard Worker #define P_MAX 64
38*d83cc019SAndroid Build Coastguard Worker #define P_INC 2
39*d83cc019SAndroid Build Coastguard Worker
40*d83cc019SAndroid Build Coastguard Worker /* Constraints for PLL good behavior */
41*d83cc019SAndroid Build Coastguard Worker #define REF_MIN 48
42*d83cc019SAndroid Build Coastguard Worker #define REF_MAX 400
43*d83cc019SAndroid Build Coastguard Worker #define VCO_MIN 2400
44*d83cc019SAndroid Build Coastguard Worker #define VCO_MAX 4800
45*d83cc019SAndroid Build Coastguard Worker
46*d83cc019SAndroid Build Coastguard Worker #define ABS_DIFF(a, b) ((a > b) ? (a - b) : (b - a))
47*d83cc019SAndroid Build Coastguard Worker
48*d83cc019SAndroid Build Coastguard Worker struct wrpll_rnp {
49*d83cc019SAndroid Build Coastguard Worker unsigned p, n2, r2;
50*d83cc019SAndroid Build Coastguard Worker };
51*d83cc019SAndroid Build Coastguard Worker
wrpll_get_budget_for_freq(int clock)52*d83cc019SAndroid Build Coastguard Worker static unsigned wrpll_get_budget_for_freq(int clock)
53*d83cc019SAndroid Build Coastguard Worker {
54*d83cc019SAndroid Build Coastguard Worker unsigned budget;
55*d83cc019SAndroid Build Coastguard Worker
56*d83cc019SAndroid Build Coastguard Worker switch (clock) {
57*d83cc019SAndroid Build Coastguard Worker case 25175000:
58*d83cc019SAndroid Build Coastguard Worker case 25200000:
59*d83cc019SAndroid Build Coastguard Worker case 27000000:
60*d83cc019SAndroid Build Coastguard Worker case 27027000:
61*d83cc019SAndroid Build Coastguard Worker case 37762500:
62*d83cc019SAndroid Build Coastguard Worker case 37800000:
63*d83cc019SAndroid Build Coastguard Worker case 40500000:
64*d83cc019SAndroid Build Coastguard Worker case 40541000:
65*d83cc019SAndroid Build Coastguard Worker case 54000000:
66*d83cc019SAndroid Build Coastguard Worker case 54054000:
67*d83cc019SAndroid Build Coastguard Worker case 59341000:
68*d83cc019SAndroid Build Coastguard Worker case 59400000:
69*d83cc019SAndroid Build Coastguard Worker case 72000000:
70*d83cc019SAndroid Build Coastguard Worker case 74176000:
71*d83cc019SAndroid Build Coastguard Worker case 74250000:
72*d83cc019SAndroid Build Coastguard Worker case 81000000:
73*d83cc019SAndroid Build Coastguard Worker case 81081000:
74*d83cc019SAndroid Build Coastguard Worker case 89012000:
75*d83cc019SAndroid Build Coastguard Worker case 89100000:
76*d83cc019SAndroid Build Coastguard Worker case 108000000:
77*d83cc019SAndroid Build Coastguard Worker case 108108000:
78*d83cc019SAndroid Build Coastguard Worker case 111264000:
79*d83cc019SAndroid Build Coastguard Worker case 111375000:
80*d83cc019SAndroid Build Coastguard Worker case 148352000:
81*d83cc019SAndroid Build Coastguard Worker case 148500000:
82*d83cc019SAndroid Build Coastguard Worker case 162000000:
83*d83cc019SAndroid Build Coastguard Worker case 162162000:
84*d83cc019SAndroid Build Coastguard Worker case 222525000:
85*d83cc019SAndroid Build Coastguard Worker case 222750000:
86*d83cc019SAndroid Build Coastguard Worker case 296703000:
87*d83cc019SAndroid Build Coastguard Worker case 297000000:
88*d83cc019SAndroid Build Coastguard Worker budget = 0;
89*d83cc019SAndroid Build Coastguard Worker break;
90*d83cc019SAndroid Build Coastguard Worker case 233500000:
91*d83cc019SAndroid Build Coastguard Worker case 245250000:
92*d83cc019SAndroid Build Coastguard Worker case 247750000:
93*d83cc019SAndroid Build Coastguard Worker case 253250000:
94*d83cc019SAndroid Build Coastguard Worker case 298000000:
95*d83cc019SAndroid Build Coastguard Worker budget = 1500;
96*d83cc019SAndroid Build Coastguard Worker break;
97*d83cc019SAndroid Build Coastguard Worker case 169128000:
98*d83cc019SAndroid Build Coastguard Worker case 169500000:
99*d83cc019SAndroid Build Coastguard Worker case 179500000:
100*d83cc019SAndroid Build Coastguard Worker case 202000000:
101*d83cc019SAndroid Build Coastguard Worker budget = 2000;
102*d83cc019SAndroid Build Coastguard Worker break;
103*d83cc019SAndroid Build Coastguard Worker case 256250000:
104*d83cc019SAndroid Build Coastguard Worker case 262500000:
105*d83cc019SAndroid Build Coastguard Worker case 270000000:
106*d83cc019SAndroid Build Coastguard Worker case 272500000:
107*d83cc019SAndroid Build Coastguard Worker case 273750000:
108*d83cc019SAndroid Build Coastguard Worker case 280750000:
109*d83cc019SAndroid Build Coastguard Worker case 281250000:
110*d83cc019SAndroid Build Coastguard Worker case 286000000:
111*d83cc019SAndroid Build Coastguard Worker case 291750000:
112*d83cc019SAndroid Build Coastguard Worker budget = 4000;
113*d83cc019SAndroid Build Coastguard Worker break;
114*d83cc019SAndroid Build Coastguard Worker case 267250000:
115*d83cc019SAndroid Build Coastguard Worker case 268500000:
116*d83cc019SAndroid Build Coastguard Worker budget = 5000;
117*d83cc019SAndroid Build Coastguard Worker break;
118*d83cc019SAndroid Build Coastguard Worker default:
119*d83cc019SAndroid Build Coastguard Worker budget = 1000;
120*d83cc019SAndroid Build Coastguard Worker break;
121*d83cc019SAndroid Build Coastguard Worker }
122*d83cc019SAndroid Build Coastguard Worker
123*d83cc019SAndroid Build Coastguard Worker return budget;
124*d83cc019SAndroid Build Coastguard Worker }
125*d83cc019SAndroid Build Coastguard Worker
wrpll_update_rnp(uint64_t freq2k,unsigned budget,unsigned r2,unsigned n2,unsigned p,struct wrpll_rnp * best)126*d83cc019SAndroid Build Coastguard Worker static void wrpll_update_rnp(uint64_t freq2k, unsigned budget,
127*d83cc019SAndroid Build Coastguard Worker unsigned r2, unsigned n2, unsigned p,
128*d83cc019SAndroid Build Coastguard Worker struct wrpll_rnp *best)
129*d83cc019SAndroid Build Coastguard Worker {
130*d83cc019SAndroid Build Coastguard Worker uint64_t a, b, c, d, diff, diff_best;
131*d83cc019SAndroid Build Coastguard Worker
132*d83cc019SAndroid Build Coastguard Worker /* No best (r,n,p) yet */
133*d83cc019SAndroid Build Coastguard Worker if (best->p == 0) {
134*d83cc019SAndroid Build Coastguard Worker best->p = p;
135*d83cc019SAndroid Build Coastguard Worker best->n2 = n2;
136*d83cc019SAndroid Build Coastguard Worker best->r2 = r2;
137*d83cc019SAndroid Build Coastguard Worker return;
138*d83cc019SAndroid Build Coastguard Worker }
139*d83cc019SAndroid Build Coastguard Worker
140*d83cc019SAndroid Build Coastguard Worker /*
141*d83cc019SAndroid Build Coastguard Worker * Output clock is (LC_FREQ_2K / 2000) * N / (P * R), which compares to
142*d83cc019SAndroid Build Coastguard Worker * freq2k.
143*d83cc019SAndroid Build Coastguard Worker *
144*d83cc019SAndroid Build Coastguard Worker * delta = 1e6 *
145*d83cc019SAndroid Build Coastguard Worker * abs(freq2k - (LC_FREQ_2K * n2/(p * r2))) /
146*d83cc019SAndroid Build Coastguard Worker * freq2k;
147*d83cc019SAndroid Build Coastguard Worker *
148*d83cc019SAndroid Build Coastguard Worker * and we would like delta <= budget.
149*d83cc019SAndroid Build Coastguard Worker *
150*d83cc019SAndroid Build Coastguard Worker * If the discrepancy is above the PPM-based budget, always prefer to
151*d83cc019SAndroid Build Coastguard Worker * improve upon the previous solution. However, if you're within the
152*d83cc019SAndroid Build Coastguard Worker * budget, try to maximize Ref * VCO, that is N / (P * R^2).
153*d83cc019SAndroid Build Coastguard Worker */
154*d83cc019SAndroid Build Coastguard Worker a = freq2k * budget * p * r2;
155*d83cc019SAndroid Build Coastguard Worker b = freq2k * budget * best->p * best->r2;
156*d83cc019SAndroid Build Coastguard Worker diff = ABS_DIFF((freq2k * p * r2), (LC_FREQ_2K * n2));
157*d83cc019SAndroid Build Coastguard Worker diff_best = ABS_DIFF((freq2k * best->p * best->r2),
158*d83cc019SAndroid Build Coastguard Worker (LC_FREQ_2K * best->n2));
159*d83cc019SAndroid Build Coastguard Worker c = 1000000 * diff;
160*d83cc019SAndroid Build Coastguard Worker d = 1000000 * diff_best;
161*d83cc019SAndroid Build Coastguard Worker
162*d83cc019SAndroid Build Coastguard Worker if (a < c && b < d) {
163*d83cc019SAndroid Build Coastguard Worker /* If both are above the budget, pick the closer */
164*d83cc019SAndroid Build Coastguard Worker if (best->p * best->r2 * diff < p * r2 * diff_best) {
165*d83cc019SAndroid Build Coastguard Worker best->p = p;
166*d83cc019SAndroid Build Coastguard Worker best->n2 = n2;
167*d83cc019SAndroid Build Coastguard Worker best->r2 = r2;
168*d83cc019SAndroid Build Coastguard Worker }
169*d83cc019SAndroid Build Coastguard Worker } else if (a >= c && b < d) {
170*d83cc019SAndroid Build Coastguard Worker /* If A is below the threshold but B is above it? Update. */
171*d83cc019SAndroid Build Coastguard Worker best->p = p;
172*d83cc019SAndroid Build Coastguard Worker best->n2 = n2;
173*d83cc019SAndroid Build Coastguard Worker best->r2 = r2;
174*d83cc019SAndroid Build Coastguard Worker } else if (a >= c && b >= d) {
175*d83cc019SAndroid Build Coastguard Worker /* Both are below the limit, so pick the higher n2/(r2*r2) */
176*d83cc019SAndroid Build Coastguard Worker if (n2 * best->r2 * best->r2 > best->n2 * r2 * r2) {
177*d83cc019SAndroid Build Coastguard Worker best->p = p;
178*d83cc019SAndroid Build Coastguard Worker best->n2 = n2;
179*d83cc019SAndroid Build Coastguard Worker best->r2 = r2;
180*d83cc019SAndroid Build Coastguard Worker }
181*d83cc019SAndroid Build Coastguard Worker }
182*d83cc019SAndroid Build Coastguard Worker /* Otherwise a < c && b >= d, do nothing */
183*d83cc019SAndroid Build Coastguard Worker }
184*d83cc019SAndroid Build Coastguard Worker
185*d83cc019SAndroid Build Coastguard Worker static void
wrpll_compute_rnp(int clock,unsigned * r2_out,unsigned * n2_out,unsigned * p_out)186*d83cc019SAndroid Build Coastguard Worker wrpll_compute_rnp(int clock /* in Hz */,
187*d83cc019SAndroid Build Coastguard Worker unsigned *r2_out, unsigned *n2_out, unsigned *p_out)
188*d83cc019SAndroid Build Coastguard Worker {
189*d83cc019SAndroid Build Coastguard Worker uint64_t freq2k;
190*d83cc019SAndroid Build Coastguard Worker unsigned p, n2, r2;
191*d83cc019SAndroid Build Coastguard Worker struct wrpll_rnp best = { 0, 0, 0 };
192*d83cc019SAndroid Build Coastguard Worker unsigned budget;
193*d83cc019SAndroid Build Coastguard Worker
194*d83cc019SAndroid Build Coastguard Worker freq2k = clock / 100;
195*d83cc019SAndroid Build Coastguard Worker
196*d83cc019SAndroid Build Coastguard Worker budget = wrpll_get_budget_for_freq(clock);
197*d83cc019SAndroid Build Coastguard Worker
198*d83cc019SAndroid Build Coastguard Worker /* Special case handling for 540 pixel clock: bypass WR PLL entirely
199*d83cc019SAndroid Build Coastguard Worker * and directly pass the LC PLL to it. */
200*d83cc019SAndroid Build Coastguard Worker if (freq2k == 5400000) {
201*d83cc019SAndroid Build Coastguard Worker *n2_out = 2;
202*d83cc019SAndroid Build Coastguard Worker *p_out = 1;
203*d83cc019SAndroid Build Coastguard Worker *r2_out = 2;
204*d83cc019SAndroid Build Coastguard Worker return;
205*d83cc019SAndroid Build Coastguard Worker }
206*d83cc019SAndroid Build Coastguard Worker
207*d83cc019SAndroid Build Coastguard Worker /*
208*d83cc019SAndroid Build Coastguard Worker * Ref = LC_FREQ / R, where Ref is the actual reference input seen by
209*d83cc019SAndroid Build Coastguard Worker * the WR PLL.
210*d83cc019SAndroid Build Coastguard Worker *
211*d83cc019SAndroid Build Coastguard Worker * We want R so that REF_MIN <= Ref <= REF_MAX.
212*d83cc019SAndroid Build Coastguard Worker * Injecting R2 = 2 * R gives:
213*d83cc019SAndroid Build Coastguard Worker * REF_MAX * r2 > LC_FREQ * 2 and
214*d83cc019SAndroid Build Coastguard Worker * REF_MIN * r2 < LC_FREQ * 2
215*d83cc019SAndroid Build Coastguard Worker *
216*d83cc019SAndroid Build Coastguard Worker * Which means the desired boundaries for r2 are:
217*d83cc019SAndroid Build Coastguard Worker * LC_FREQ * 2 / REF_MAX < r2 < LC_FREQ * 2 / REF_MIN
218*d83cc019SAndroid Build Coastguard Worker *
219*d83cc019SAndroid Build Coastguard Worker */
220*d83cc019SAndroid Build Coastguard Worker for (r2 = LC_FREQ * 2 / REF_MAX + 1;
221*d83cc019SAndroid Build Coastguard Worker r2 <= LC_FREQ * 2 / REF_MIN;
222*d83cc019SAndroid Build Coastguard Worker r2++) {
223*d83cc019SAndroid Build Coastguard Worker
224*d83cc019SAndroid Build Coastguard Worker /*
225*d83cc019SAndroid Build Coastguard Worker * VCO = N * Ref, that is: VCO = N * LC_FREQ / R
226*d83cc019SAndroid Build Coastguard Worker *
227*d83cc019SAndroid Build Coastguard Worker * Once again we want VCO_MIN <= VCO <= VCO_MAX.
228*d83cc019SAndroid Build Coastguard Worker * Injecting R2 = 2 * R and N2 = 2 * N, we get:
229*d83cc019SAndroid Build Coastguard Worker * VCO_MAX * r2 > n2 * LC_FREQ and
230*d83cc019SAndroid Build Coastguard Worker * VCO_MIN * r2 < n2 * LC_FREQ)
231*d83cc019SAndroid Build Coastguard Worker *
232*d83cc019SAndroid Build Coastguard Worker * Which means the desired boundaries for n2 are:
233*d83cc019SAndroid Build Coastguard Worker * VCO_MIN * r2 / LC_FREQ < n2 < VCO_MAX * r2 / LC_FREQ
234*d83cc019SAndroid Build Coastguard Worker */
235*d83cc019SAndroid Build Coastguard Worker for (n2 = VCO_MIN * r2 / LC_FREQ + 1;
236*d83cc019SAndroid Build Coastguard Worker n2 <= VCO_MAX * r2 / LC_FREQ;
237*d83cc019SAndroid Build Coastguard Worker n2++) {
238*d83cc019SAndroid Build Coastguard Worker
239*d83cc019SAndroid Build Coastguard Worker for (p = P_MIN; p <= P_MAX; p += P_INC)
240*d83cc019SAndroid Build Coastguard Worker wrpll_update_rnp(freq2k, budget,
241*d83cc019SAndroid Build Coastguard Worker r2, n2, p, &best);
242*d83cc019SAndroid Build Coastguard Worker }
243*d83cc019SAndroid Build Coastguard Worker }
244*d83cc019SAndroid Build Coastguard Worker
245*d83cc019SAndroid Build Coastguard Worker *n2_out = best.n2;
246*d83cc019SAndroid Build Coastguard Worker *p_out = best.p;
247*d83cc019SAndroid Build Coastguard Worker *r2_out = best.r2;
248*d83cc019SAndroid Build Coastguard Worker }
249*d83cc019SAndroid Build Coastguard Worker
250*d83cc019SAndroid Build Coastguard Worker /* WRPLL clock dividers */
251*d83cc019SAndroid Build Coastguard Worker struct wrpll_tmds_clock {
252*d83cc019SAndroid Build Coastguard Worker uint32_t clock;
253*d83cc019SAndroid Build Coastguard Worker uint16_t p; /* Post divider */
254*d83cc019SAndroid Build Coastguard Worker uint16_t n2; /* Feedback divider */
255*d83cc019SAndroid Build Coastguard Worker uint16_t r2; /* Reference divider */
256*d83cc019SAndroid Build Coastguard Worker };
257*d83cc019SAndroid Build Coastguard Worker
258*d83cc019SAndroid Build Coastguard Worker /* Table of matching values for WRPLL clocks programming for each frequency.
259*d83cc019SAndroid Build Coastguard Worker * The code assumes this table is sorted. */
260*d83cc019SAndroid Build Coastguard Worker static const struct wrpll_tmds_clock wrpll_tmds_clock_table[] = {
261*d83cc019SAndroid Build Coastguard Worker {19750000, 38, 25, 18},
262*d83cc019SAndroid Build Coastguard Worker {20000000, 48, 32, 18},
263*d83cc019SAndroid Build Coastguard Worker {21000000, 36, 21, 15},
264*d83cc019SAndroid Build Coastguard Worker {21912000, 42, 29, 17},
265*d83cc019SAndroid Build Coastguard Worker {22000000, 36, 22, 15},
266*d83cc019SAndroid Build Coastguard Worker {23000000, 36, 23, 15},
267*d83cc019SAndroid Build Coastguard Worker {23500000, 40, 40, 23},
268*d83cc019SAndroid Build Coastguard Worker {23750000, 26, 16, 14},
269*d83cc019SAndroid Build Coastguard Worker {24000000, 36, 24, 15},
270*d83cc019SAndroid Build Coastguard Worker {25000000, 36, 25, 15},
271*d83cc019SAndroid Build Coastguard Worker {25175000, 26, 40, 33},
272*d83cc019SAndroid Build Coastguard Worker {25200000, 30, 21, 15},
273*d83cc019SAndroid Build Coastguard Worker {26000000, 36, 26, 15},
274*d83cc019SAndroid Build Coastguard Worker {27000000, 30, 21, 14},
275*d83cc019SAndroid Build Coastguard Worker {27027000, 18, 100, 111},
276*d83cc019SAndroid Build Coastguard Worker {27500000, 30, 29, 19},
277*d83cc019SAndroid Build Coastguard Worker {28000000, 34, 30, 17},
278*d83cc019SAndroid Build Coastguard Worker {28320000, 26, 30, 22},
279*d83cc019SAndroid Build Coastguard Worker {28322000, 32, 42, 25},
280*d83cc019SAndroid Build Coastguard Worker {28750000, 24, 23, 18},
281*d83cc019SAndroid Build Coastguard Worker {29000000, 30, 29, 18},
282*d83cc019SAndroid Build Coastguard Worker {29750000, 32, 30, 17},
283*d83cc019SAndroid Build Coastguard Worker {30000000, 30, 25, 15},
284*d83cc019SAndroid Build Coastguard Worker {30750000, 30, 41, 24},
285*d83cc019SAndroid Build Coastguard Worker {31000000, 30, 31, 18},
286*d83cc019SAndroid Build Coastguard Worker {31500000, 30, 28, 16},
287*d83cc019SAndroid Build Coastguard Worker {32000000, 30, 32, 18},
288*d83cc019SAndroid Build Coastguard Worker {32500000, 28, 32, 19},
289*d83cc019SAndroid Build Coastguard Worker {33000000, 24, 22, 15},
290*d83cc019SAndroid Build Coastguard Worker {34000000, 28, 30, 17},
291*d83cc019SAndroid Build Coastguard Worker {35000000, 26, 32, 19},
292*d83cc019SAndroid Build Coastguard Worker {35500000, 24, 30, 19},
293*d83cc019SAndroid Build Coastguard Worker {36000000, 26, 26, 15},
294*d83cc019SAndroid Build Coastguard Worker {36750000, 26, 46, 26},
295*d83cc019SAndroid Build Coastguard Worker {37000000, 24, 23, 14},
296*d83cc019SAndroid Build Coastguard Worker {37762500, 22, 40, 26},
297*d83cc019SAndroid Build Coastguard Worker {37800000, 20, 21, 15},
298*d83cc019SAndroid Build Coastguard Worker {38000000, 24, 27, 16},
299*d83cc019SAndroid Build Coastguard Worker {38250000, 24, 34, 20},
300*d83cc019SAndroid Build Coastguard Worker {39000000, 24, 26, 15},
301*d83cc019SAndroid Build Coastguard Worker {40000000, 24, 32, 18},
302*d83cc019SAndroid Build Coastguard Worker {40500000, 20, 21, 14},
303*d83cc019SAndroid Build Coastguard Worker {40541000, 22, 147, 89},
304*d83cc019SAndroid Build Coastguard Worker {40750000, 18, 19, 14},
305*d83cc019SAndroid Build Coastguard Worker {41000000, 16, 17, 14},
306*d83cc019SAndroid Build Coastguard Worker {41500000, 22, 44, 26},
307*d83cc019SAndroid Build Coastguard Worker {41540000, 22, 44, 26},
308*d83cc019SAndroid Build Coastguard Worker {42000000, 18, 21, 15},
309*d83cc019SAndroid Build Coastguard Worker {42500000, 22, 45, 26},
310*d83cc019SAndroid Build Coastguard Worker {43000000, 20, 43, 27},
311*d83cc019SAndroid Build Coastguard Worker {43163000, 20, 24, 15},
312*d83cc019SAndroid Build Coastguard Worker {44000000, 18, 22, 15},
313*d83cc019SAndroid Build Coastguard Worker {44900000, 20, 108, 65},
314*d83cc019SAndroid Build Coastguard Worker {45000000, 20, 25, 15},
315*d83cc019SAndroid Build Coastguard Worker {45250000, 20, 52, 31},
316*d83cc019SAndroid Build Coastguard Worker {46000000, 18, 23, 15},
317*d83cc019SAndroid Build Coastguard Worker {46750000, 20, 45, 26},
318*d83cc019SAndroid Build Coastguard Worker {47000000, 20, 40, 23},
319*d83cc019SAndroid Build Coastguard Worker {48000000, 18, 24, 15},
320*d83cc019SAndroid Build Coastguard Worker {49000000, 18, 49, 30},
321*d83cc019SAndroid Build Coastguard Worker {49500000, 16, 22, 15},
322*d83cc019SAndroid Build Coastguard Worker {50000000, 18, 25, 15},
323*d83cc019SAndroid Build Coastguard Worker {50500000, 18, 32, 19},
324*d83cc019SAndroid Build Coastguard Worker {51000000, 18, 34, 20},
325*d83cc019SAndroid Build Coastguard Worker {52000000, 18, 26, 15},
326*d83cc019SAndroid Build Coastguard Worker {52406000, 14, 34, 25},
327*d83cc019SAndroid Build Coastguard Worker {53000000, 16, 22, 14},
328*d83cc019SAndroid Build Coastguard Worker {54000000, 16, 24, 15},
329*d83cc019SAndroid Build Coastguard Worker {54054000, 16, 173, 108},
330*d83cc019SAndroid Build Coastguard Worker {54500000, 14, 24, 17},
331*d83cc019SAndroid Build Coastguard Worker {55000000, 12, 22, 18},
332*d83cc019SAndroid Build Coastguard Worker {56000000, 14, 45, 31},
333*d83cc019SAndroid Build Coastguard Worker {56250000, 16, 25, 15},
334*d83cc019SAndroid Build Coastguard Worker {56750000, 14, 25, 17},
335*d83cc019SAndroid Build Coastguard Worker {57000000, 16, 27, 16},
336*d83cc019SAndroid Build Coastguard Worker {58000000, 16, 43, 25},
337*d83cc019SAndroid Build Coastguard Worker {58250000, 16, 38, 22},
338*d83cc019SAndroid Build Coastguard Worker {58750000, 16, 40, 23},
339*d83cc019SAndroid Build Coastguard Worker {59000000, 14, 26, 17},
340*d83cc019SAndroid Build Coastguard Worker {59341000, 14, 40, 26},
341*d83cc019SAndroid Build Coastguard Worker {59400000, 16, 44, 25},
342*d83cc019SAndroid Build Coastguard Worker {60000000, 16, 32, 18},
343*d83cc019SAndroid Build Coastguard Worker {60500000, 12, 39, 29},
344*d83cc019SAndroid Build Coastguard Worker {61000000, 14, 49, 31},
345*d83cc019SAndroid Build Coastguard Worker {62000000, 14, 37, 23},
346*d83cc019SAndroid Build Coastguard Worker {62250000, 14, 42, 26},
347*d83cc019SAndroid Build Coastguard Worker {63000000, 12, 21, 15},
348*d83cc019SAndroid Build Coastguard Worker {63500000, 14, 28, 17},
349*d83cc019SAndroid Build Coastguard Worker {64000000, 12, 27, 19},
350*d83cc019SAndroid Build Coastguard Worker {65000000, 14, 32, 19},
351*d83cc019SAndroid Build Coastguard Worker {65250000, 12, 29, 20},
352*d83cc019SAndroid Build Coastguard Worker {65500000, 12, 32, 22},
353*d83cc019SAndroid Build Coastguard Worker {66000000, 12, 22, 15},
354*d83cc019SAndroid Build Coastguard Worker {66667000, 14, 38, 22},
355*d83cc019SAndroid Build Coastguard Worker {66750000, 10, 21, 17},
356*d83cc019SAndroid Build Coastguard Worker {67000000, 14, 33, 19},
357*d83cc019SAndroid Build Coastguard Worker {67750000, 14, 58, 33},
358*d83cc019SAndroid Build Coastguard Worker {68000000, 14, 30, 17},
359*d83cc019SAndroid Build Coastguard Worker {68179000, 14, 46, 26},
360*d83cc019SAndroid Build Coastguard Worker {68250000, 14, 46, 26},
361*d83cc019SAndroid Build Coastguard Worker {69000000, 12, 23, 15},
362*d83cc019SAndroid Build Coastguard Worker {70000000, 12, 28, 18},
363*d83cc019SAndroid Build Coastguard Worker {71000000, 12, 30, 19},
364*d83cc019SAndroid Build Coastguard Worker {72000000, 12, 24, 15},
365*d83cc019SAndroid Build Coastguard Worker {73000000, 10, 23, 17},
366*d83cc019SAndroid Build Coastguard Worker {74000000, 12, 23, 14},
367*d83cc019SAndroid Build Coastguard Worker {74176000, 8, 100, 91},
368*d83cc019SAndroid Build Coastguard Worker {74250000, 10, 22, 16},
369*d83cc019SAndroid Build Coastguard Worker {74481000, 12, 43, 26},
370*d83cc019SAndroid Build Coastguard Worker {74500000, 10, 29, 21},
371*d83cc019SAndroid Build Coastguard Worker {75000000, 12, 25, 15},
372*d83cc019SAndroid Build Coastguard Worker {75250000, 10, 39, 28},
373*d83cc019SAndroid Build Coastguard Worker {76000000, 12, 27, 16},
374*d83cc019SAndroid Build Coastguard Worker {77000000, 12, 53, 31},
375*d83cc019SAndroid Build Coastguard Worker {78000000, 12, 26, 15},
376*d83cc019SAndroid Build Coastguard Worker {78750000, 12, 28, 16},
377*d83cc019SAndroid Build Coastguard Worker {79000000, 10, 38, 26},
378*d83cc019SAndroid Build Coastguard Worker {79500000, 10, 28, 19},
379*d83cc019SAndroid Build Coastguard Worker {80000000, 12, 32, 18},
380*d83cc019SAndroid Build Coastguard Worker {81000000, 10, 21, 14},
381*d83cc019SAndroid Build Coastguard Worker {81081000, 6, 100, 111},
382*d83cc019SAndroid Build Coastguard Worker {81624000, 8, 29, 24},
383*d83cc019SAndroid Build Coastguard Worker {82000000, 8, 17, 14},
384*d83cc019SAndroid Build Coastguard Worker {83000000, 10, 40, 26},
385*d83cc019SAndroid Build Coastguard Worker {83950000, 10, 28, 18},
386*d83cc019SAndroid Build Coastguard Worker {84000000, 10, 28, 18},
387*d83cc019SAndroid Build Coastguard Worker {84750000, 6, 16, 17},
388*d83cc019SAndroid Build Coastguard Worker {85000000, 6, 17, 18},
389*d83cc019SAndroid Build Coastguard Worker {85250000, 10, 30, 19},
390*d83cc019SAndroid Build Coastguard Worker {85750000, 10, 27, 17},
391*d83cc019SAndroid Build Coastguard Worker {86000000, 10, 43, 27},
392*d83cc019SAndroid Build Coastguard Worker {87000000, 10, 29, 18},
393*d83cc019SAndroid Build Coastguard Worker {88000000, 10, 44, 27},
394*d83cc019SAndroid Build Coastguard Worker {88500000, 10, 41, 25},
395*d83cc019SAndroid Build Coastguard Worker {89000000, 10, 28, 17},
396*d83cc019SAndroid Build Coastguard Worker {89012000, 6, 90, 91},
397*d83cc019SAndroid Build Coastguard Worker {89100000, 10, 33, 20},
398*d83cc019SAndroid Build Coastguard Worker {90000000, 10, 25, 15},
399*d83cc019SAndroid Build Coastguard Worker {91000000, 10, 32, 19},
400*d83cc019SAndroid Build Coastguard Worker {92000000, 10, 46, 27},
401*d83cc019SAndroid Build Coastguard Worker {93000000, 10, 31, 18},
402*d83cc019SAndroid Build Coastguard Worker {94000000, 10, 40, 23},
403*d83cc019SAndroid Build Coastguard Worker {94500000, 10, 28, 16},
404*d83cc019SAndroid Build Coastguard Worker {95000000, 10, 44, 25},
405*d83cc019SAndroid Build Coastguard Worker {95654000, 10, 39, 22},
406*d83cc019SAndroid Build Coastguard Worker {95750000, 10, 39, 22},
407*d83cc019SAndroid Build Coastguard Worker {96000000, 10, 32, 18},
408*d83cc019SAndroid Build Coastguard Worker {97000000, 8, 23, 16},
409*d83cc019SAndroid Build Coastguard Worker {97750000, 8, 42, 29},
410*d83cc019SAndroid Build Coastguard Worker {98000000, 8, 45, 31},
411*d83cc019SAndroid Build Coastguard Worker {99000000, 8, 22, 15},
412*d83cc019SAndroid Build Coastguard Worker {99750000, 8, 34, 23},
413*d83cc019SAndroid Build Coastguard Worker {100000000, 6, 20, 18},
414*d83cc019SAndroid Build Coastguard Worker {100500000, 6, 19, 17},
415*d83cc019SAndroid Build Coastguard Worker {101000000, 6, 37, 33},
416*d83cc019SAndroid Build Coastguard Worker {101250000, 8, 21, 14},
417*d83cc019SAndroid Build Coastguard Worker {102000000, 6, 17, 15},
418*d83cc019SAndroid Build Coastguard Worker {102250000, 6, 25, 22},
419*d83cc019SAndroid Build Coastguard Worker {103000000, 8, 29, 19},
420*d83cc019SAndroid Build Coastguard Worker {104000000, 8, 37, 24},
421*d83cc019SAndroid Build Coastguard Worker {105000000, 8, 28, 18},
422*d83cc019SAndroid Build Coastguard Worker {106000000, 8, 22, 14},
423*d83cc019SAndroid Build Coastguard Worker {107000000, 8, 46, 29},
424*d83cc019SAndroid Build Coastguard Worker {107214000, 8, 27, 17},
425*d83cc019SAndroid Build Coastguard Worker {108000000, 8, 24, 15},
426*d83cc019SAndroid Build Coastguard Worker {108108000, 8, 173, 108},
427*d83cc019SAndroid Build Coastguard Worker {109000000, 6, 23, 19},
428*d83cc019SAndroid Build Coastguard Worker {110000000, 6, 22, 18},
429*d83cc019SAndroid Build Coastguard Worker {110013000, 6, 22, 18},
430*d83cc019SAndroid Build Coastguard Worker {110250000, 8, 49, 30},
431*d83cc019SAndroid Build Coastguard Worker {110500000, 8, 36, 22},
432*d83cc019SAndroid Build Coastguard Worker {111000000, 8, 23, 14},
433*d83cc019SAndroid Build Coastguard Worker {111264000, 8, 150, 91},
434*d83cc019SAndroid Build Coastguard Worker {111375000, 8, 33, 20},
435*d83cc019SAndroid Build Coastguard Worker {112000000, 8, 63, 38},
436*d83cc019SAndroid Build Coastguard Worker {112500000, 8, 25, 15},
437*d83cc019SAndroid Build Coastguard Worker {113100000, 8, 57, 34},
438*d83cc019SAndroid Build Coastguard Worker {113309000, 8, 42, 25},
439*d83cc019SAndroid Build Coastguard Worker {114000000, 8, 27, 16},
440*d83cc019SAndroid Build Coastguard Worker {115000000, 6, 23, 18},
441*d83cc019SAndroid Build Coastguard Worker {116000000, 8, 43, 25},
442*d83cc019SAndroid Build Coastguard Worker {117000000, 8, 26, 15},
443*d83cc019SAndroid Build Coastguard Worker {117500000, 8, 40, 23},
444*d83cc019SAndroid Build Coastguard Worker {118000000, 6, 38, 29},
445*d83cc019SAndroid Build Coastguard Worker {119000000, 8, 30, 17},
446*d83cc019SAndroid Build Coastguard Worker {119500000, 8, 46, 26},
447*d83cc019SAndroid Build Coastguard Worker {119651000, 8, 39, 22},
448*d83cc019SAndroid Build Coastguard Worker {120000000, 8, 32, 18},
449*d83cc019SAndroid Build Coastguard Worker {121000000, 6, 39, 29},
450*d83cc019SAndroid Build Coastguard Worker {121250000, 6, 31, 23},
451*d83cc019SAndroid Build Coastguard Worker {121750000, 6, 23, 17},
452*d83cc019SAndroid Build Coastguard Worker {122000000, 6, 42, 31},
453*d83cc019SAndroid Build Coastguard Worker {122614000, 6, 30, 22},
454*d83cc019SAndroid Build Coastguard Worker {123000000, 6, 41, 30},
455*d83cc019SAndroid Build Coastguard Worker {123379000, 6, 37, 27},
456*d83cc019SAndroid Build Coastguard Worker {124000000, 6, 51, 37},
457*d83cc019SAndroid Build Coastguard Worker {125000000, 6, 25, 18},
458*d83cc019SAndroid Build Coastguard Worker {125250000, 4, 13, 14},
459*d83cc019SAndroid Build Coastguard Worker {125750000, 4, 27, 29},
460*d83cc019SAndroid Build Coastguard Worker {126000000, 6, 21, 15},
461*d83cc019SAndroid Build Coastguard Worker {127000000, 6, 24, 17},
462*d83cc019SAndroid Build Coastguard Worker {127250000, 6, 41, 29},
463*d83cc019SAndroid Build Coastguard Worker {128000000, 6, 27, 19},
464*d83cc019SAndroid Build Coastguard Worker {129000000, 6, 43, 30},
465*d83cc019SAndroid Build Coastguard Worker {129859000, 4, 25, 26},
466*d83cc019SAndroid Build Coastguard Worker {130000000, 6, 26, 18},
467*d83cc019SAndroid Build Coastguard Worker {130250000, 6, 42, 29},
468*d83cc019SAndroid Build Coastguard Worker {131000000, 6, 32, 22},
469*d83cc019SAndroid Build Coastguard Worker {131500000, 6, 38, 26},
470*d83cc019SAndroid Build Coastguard Worker {131850000, 6, 41, 28},
471*d83cc019SAndroid Build Coastguard Worker {132000000, 6, 22, 15},
472*d83cc019SAndroid Build Coastguard Worker {132750000, 6, 28, 19},
473*d83cc019SAndroid Build Coastguard Worker {133000000, 6, 34, 23},
474*d83cc019SAndroid Build Coastguard Worker {133330000, 6, 37, 25},
475*d83cc019SAndroid Build Coastguard Worker {134000000, 6, 61, 41},
476*d83cc019SAndroid Build Coastguard Worker {135000000, 6, 21, 14},
477*d83cc019SAndroid Build Coastguard Worker {135250000, 6, 167, 111},
478*d83cc019SAndroid Build Coastguard Worker {136000000, 6, 62, 41},
479*d83cc019SAndroid Build Coastguard Worker {137000000, 6, 35, 23},
480*d83cc019SAndroid Build Coastguard Worker {138000000, 6, 23, 15},
481*d83cc019SAndroid Build Coastguard Worker {138500000, 6, 40, 26},
482*d83cc019SAndroid Build Coastguard Worker {138750000, 6, 37, 24},
483*d83cc019SAndroid Build Coastguard Worker {139000000, 6, 34, 22},
484*d83cc019SAndroid Build Coastguard Worker {139050000, 6, 34, 22},
485*d83cc019SAndroid Build Coastguard Worker {139054000, 6, 34, 22},
486*d83cc019SAndroid Build Coastguard Worker {140000000, 6, 28, 18},
487*d83cc019SAndroid Build Coastguard Worker {141000000, 6, 36, 23},
488*d83cc019SAndroid Build Coastguard Worker {141500000, 6, 22, 14},
489*d83cc019SAndroid Build Coastguard Worker {142000000, 6, 30, 19},
490*d83cc019SAndroid Build Coastguard Worker {143000000, 6, 27, 17},
491*d83cc019SAndroid Build Coastguard Worker {143472000, 4, 17, 16},
492*d83cc019SAndroid Build Coastguard Worker {144000000, 6, 24, 15},
493*d83cc019SAndroid Build Coastguard Worker {145000000, 6, 29, 18},
494*d83cc019SAndroid Build Coastguard Worker {146000000, 6, 47, 29},
495*d83cc019SAndroid Build Coastguard Worker {146250000, 6, 26, 16},
496*d83cc019SAndroid Build Coastguard Worker {147000000, 6, 49, 30},
497*d83cc019SAndroid Build Coastguard Worker {147891000, 6, 23, 14},
498*d83cc019SAndroid Build Coastguard Worker {148000000, 6, 23, 14},
499*d83cc019SAndroid Build Coastguard Worker {148250000, 6, 28, 17},
500*d83cc019SAndroid Build Coastguard Worker {148352000, 4, 100, 91},
501*d83cc019SAndroid Build Coastguard Worker {148500000, 6, 33, 20},
502*d83cc019SAndroid Build Coastguard Worker {149000000, 6, 48, 29},
503*d83cc019SAndroid Build Coastguard Worker {150000000, 6, 25, 15},
504*d83cc019SAndroid Build Coastguard Worker {151000000, 4, 19, 17},
505*d83cc019SAndroid Build Coastguard Worker {152000000, 6, 27, 16},
506*d83cc019SAndroid Build Coastguard Worker {152280000, 6, 44, 26},
507*d83cc019SAndroid Build Coastguard Worker {153000000, 6, 34, 20},
508*d83cc019SAndroid Build Coastguard Worker {154000000, 6, 53, 31},
509*d83cc019SAndroid Build Coastguard Worker {155000000, 6, 31, 18},
510*d83cc019SAndroid Build Coastguard Worker {155250000, 6, 50, 29},
511*d83cc019SAndroid Build Coastguard Worker {155750000, 6, 45, 26},
512*d83cc019SAndroid Build Coastguard Worker {156000000, 6, 26, 15},
513*d83cc019SAndroid Build Coastguard Worker {157000000, 6, 61, 35},
514*d83cc019SAndroid Build Coastguard Worker {157500000, 6, 28, 16},
515*d83cc019SAndroid Build Coastguard Worker {158000000, 6, 65, 37},
516*d83cc019SAndroid Build Coastguard Worker {158250000, 6, 44, 25},
517*d83cc019SAndroid Build Coastguard Worker {159000000, 6, 53, 30},
518*d83cc019SAndroid Build Coastguard Worker {159500000, 6, 39, 22},
519*d83cc019SAndroid Build Coastguard Worker {160000000, 6, 32, 18},
520*d83cc019SAndroid Build Coastguard Worker {161000000, 4, 31, 26},
521*d83cc019SAndroid Build Coastguard Worker {162000000, 4, 18, 15},
522*d83cc019SAndroid Build Coastguard Worker {162162000, 4, 131, 109},
523*d83cc019SAndroid Build Coastguard Worker {162500000, 4, 53, 44},
524*d83cc019SAndroid Build Coastguard Worker {163000000, 4, 29, 24},
525*d83cc019SAndroid Build Coastguard Worker {164000000, 4, 17, 14},
526*d83cc019SAndroid Build Coastguard Worker {165000000, 4, 22, 18},
527*d83cc019SAndroid Build Coastguard Worker {166000000, 4, 32, 26},
528*d83cc019SAndroid Build Coastguard Worker {167000000, 4, 26, 21},
529*d83cc019SAndroid Build Coastguard Worker {168000000, 4, 46, 37},
530*d83cc019SAndroid Build Coastguard Worker {169000000, 4, 104, 83},
531*d83cc019SAndroid Build Coastguard Worker {169128000, 4, 64, 51},
532*d83cc019SAndroid Build Coastguard Worker {169500000, 4, 39, 31},
533*d83cc019SAndroid Build Coastguard Worker {170000000, 4, 34, 27},
534*d83cc019SAndroid Build Coastguard Worker {171000000, 4, 19, 15},
535*d83cc019SAndroid Build Coastguard Worker {172000000, 4, 51, 40},
536*d83cc019SAndroid Build Coastguard Worker {172750000, 4, 32, 25},
537*d83cc019SAndroid Build Coastguard Worker {172800000, 4, 32, 25},
538*d83cc019SAndroid Build Coastguard Worker {173000000, 4, 41, 32},
539*d83cc019SAndroid Build Coastguard Worker {174000000, 4, 49, 38},
540*d83cc019SAndroid Build Coastguard Worker {174787000, 4, 22, 17},
541*d83cc019SAndroid Build Coastguard Worker {175000000, 4, 35, 27},
542*d83cc019SAndroid Build Coastguard Worker {176000000, 4, 30, 23},
543*d83cc019SAndroid Build Coastguard Worker {177000000, 4, 38, 29},
544*d83cc019SAndroid Build Coastguard Worker {178000000, 4, 29, 22},
545*d83cc019SAndroid Build Coastguard Worker {178500000, 4, 37, 28},
546*d83cc019SAndroid Build Coastguard Worker {179000000, 4, 53, 40},
547*d83cc019SAndroid Build Coastguard Worker {179500000, 4, 73, 55},
548*d83cc019SAndroid Build Coastguard Worker {180000000, 4, 20, 15},
549*d83cc019SAndroid Build Coastguard Worker {181000000, 4, 55, 41},
550*d83cc019SAndroid Build Coastguard Worker {182000000, 4, 31, 23},
551*d83cc019SAndroid Build Coastguard Worker {183000000, 4, 42, 31},
552*d83cc019SAndroid Build Coastguard Worker {184000000, 4, 30, 22},
553*d83cc019SAndroid Build Coastguard Worker {184750000, 4, 26, 19},
554*d83cc019SAndroid Build Coastguard Worker {185000000, 4, 37, 27},
555*d83cc019SAndroid Build Coastguard Worker {186000000, 4, 51, 37},
556*d83cc019SAndroid Build Coastguard Worker {187000000, 4, 36, 26},
557*d83cc019SAndroid Build Coastguard Worker {188000000, 4, 32, 23},
558*d83cc019SAndroid Build Coastguard Worker {189000000, 4, 21, 15},
559*d83cc019SAndroid Build Coastguard Worker {190000000, 4, 38, 27},
560*d83cc019SAndroid Build Coastguard Worker {190960000, 4, 41, 29},
561*d83cc019SAndroid Build Coastguard Worker {191000000, 4, 41, 29},
562*d83cc019SAndroid Build Coastguard Worker {192000000, 4, 27, 19},
563*d83cc019SAndroid Build Coastguard Worker {192250000, 4, 37, 26},
564*d83cc019SAndroid Build Coastguard Worker {193000000, 4, 20, 14},
565*d83cc019SAndroid Build Coastguard Worker {193250000, 4, 53, 37},
566*d83cc019SAndroid Build Coastguard Worker {194000000, 4, 23, 16},
567*d83cc019SAndroid Build Coastguard Worker {194208000, 4, 23, 16},
568*d83cc019SAndroid Build Coastguard Worker {195000000, 4, 26, 18},
569*d83cc019SAndroid Build Coastguard Worker {196000000, 4, 45, 31},
570*d83cc019SAndroid Build Coastguard Worker {197000000, 4, 35, 24},
571*d83cc019SAndroid Build Coastguard Worker {197750000, 4, 41, 28},
572*d83cc019SAndroid Build Coastguard Worker {198000000, 4, 22, 15},
573*d83cc019SAndroid Build Coastguard Worker {198500000, 4, 25, 17},
574*d83cc019SAndroid Build Coastguard Worker {199000000, 4, 28, 19},
575*d83cc019SAndroid Build Coastguard Worker {200000000, 4, 37, 25},
576*d83cc019SAndroid Build Coastguard Worker {201000000, 4, 61, 41},
577*d83cc019SAndroid Build Coastguard Worker {202000000, 4, 112, 75},
578*d83cc019SAndroid Build Coastguard Worker {202500000, 4, 21, 14},
579*d83cc019SAndroid Build Coastguard Worker {203000000, 4, 146, 97},
580*d83cc019SAndroid Build Coastguard Worker {204000000, 4, 62, 41},
581*d83cc019SAndroid Build Coastguard Worker {204750000, 4, 44, 29},
582*d83cc019SAndroid Build Coastguard Worker {205000000, 4, 38, 25},
583*d83cc019SAndroid Build Coastguard Worker {206000000, 4, 29, 19},
584*d83cc019SAndroid Build Coastguard Worker {207000000, 4, 23, 15},
585*d83cc019SAndroid Build Coastguard Worker {207500000, 4, 40, 26},
586*d83cc019SAndroid Build Coastguard Worker {208000000, 4, 37, 24},
587*d83cc019SAndroid Build Coastguard Worker {208900000, 4, 48, 31},
588*d83cc019SAndroid Build Coastguard Worker {209000000, 4, 48, 31},
589*d83cc019SAndroid Build Coastguard Worker {209250000, 4, 31, 20},
590*d83cc019SAndroid Build Coastguard Worker {210000000, 4, 28, 18},
591*d83cc019SAndroid Build Coastguard Worker {211000000, 4, 25, 16},
592*d83cc019SAndroid Build Coastguard Worker {212000000, 4, 22, 14},
593*d83cc019SAndroid Build Coastguard Worker {213000000, 4, 30, 19},
594*d83cc019SAndroid Build Coastguard Worker {213750000, 4, 38, 24},
595*d83cc019SAndroid Build Coastguard Worker {214000000, 4, 46, 29},
596*d83cc019SAndroid Build Coastguard Worker {214750000, 4, 35, 22},
597*d83cc019SAndroid Build Coastguard Worker {215000000, 4, 43, 27},
598*d83cc019SAndroid Build Coastguard Worker {216000000, 4, 24, 15},
599*d83cc019SAndroid Build Coastguard Worker {217000000, 4, 37, 23},
600*d83cc019SAndroid Build Coastguard Worker {218000000, 4, 42, 26},
601*d83cc019SAndroid Build Coastguard Worker {218250000, 4, 42, 26},
602*d83cc019SAndroid Build Coastguard Worker {218750000, 4, 34, 21},
603*d83cc019SAndroid Build Coastguard Worker {219000000, 4, 47, 29},
604*d83cc019SAndroid Build Coastguard Worker {220000000, 4, 44, 27},
605*d83cc019SAndroid Build Coastguard Worker {220640000, 4, 49, 30},
606*d83cc019SAndroid Build Coastguard Worker {220750000, 4, 36, 22},
607*d83cc019SAndroid Build Coastguard Worker {221000000, 4, 36, 22},
608*d83cc019SAndroid Build Coastguard Worker {222000000, 4, 23, 14},
609*d83cc019SAndroid Build Coastguard Worker {222525000, 4, 150, 91},
610*d83cc019SAndroid Build Coastguard Worker {222750000, 4, 33, 20},
611*d83cc019SAndroid Build Coastguard Worker {227000000, 4, 37, 22},
612*d83cc019SAndroid Build Coastguard Worker {230250000, 4, 29, 17},
613*d83cc019SAndroid Build Coastguard Worker {233500000, 4, 38, 22},
614*d83cc019SAndroid Build Coastguard Worker {235000000, 4, 40, 23},
615*d83cc019SAndroid Build Coastguard Worker {238000000, 4, 30, 17},
616*d83cc019SAndroid Build Coastguard Worker {241500000, 2, 17, 19},
617*d83cc019SAndroid Build Coastguard Worker {245250000, 2, 20, 22},
618*d83cc019SAndroid Build Coastguard Worker {247750000, 2, 22, 24},
619*d83cc019SAndroid Build Coastguard Worker {253250000, 2, 15, 16},
620*d83cc019SAndroid Build Coastguard Worker {256250000, 2, 18, 19},
621*d83cc019SAndroid Build Coastguard Worker {262500000, 2, 31, 32},
622*d83cc019SAndroid Build Coastguard Worker {267250000, 2, 66, 67},
623*d83cc019SAndroid Build Coastguard Worker {268500000, 2, 94, 95},
624*d83cc019SAndroid Build Coastguard Worker {270000000, 2, 14, 14},
625*d83cc019SAndroid Build Coastguard Worker {272500000, 2, 77, 76},
626*d83cc019SAndroid Build Coastguard Worker {273750000, 2, 57, 56},
627*d83cc019SAndroid Build Coastguard Worker {280750000, 2, 24, 23},
628*d83cc019SAndroid Build Coastguard Worker {281250000, 2, 23, 22},
629*d83cc019SAndroid Build Coastguard Worker {286000000, 2, 17, 16},
630*d83cc019SAndroid Build Coastguard Worker {291750000, 2, 26, 24},
631*d83cc019SAndroid Build Coastguard Worker {296703000, 2, 100, 91},
632*d83cc019SAndroid Build Coastguard Worker {297000000, 2, 22, 20},
633*d83cc019SAndroid Build Coastguard Worker {298000000, 2, 21, 19},
634*d83cc019SAndroid Build Coastguard Worker };
635*d83cc019SAndroid Build Coastguard Worker
main(void)636*d83cc019SAndroid Build Coastguard Worker int main(void)
637*d83cc019SAndroid Build Coastguard Worker {
638*d83cc019SAndroid Build Coastguard Worker int i;
639*d83cc019SAndroid Build Coastguard Worker
640*d83cc019SAndroid Build Coastguard Worker for (i = 0; i < ARRAY_SIZE(wrpll_tmds_clock_table); i++) {
641*d83cc019SAndroid Build Coastguard Worker const struct wrpll_tmds_clock *ref = &wrpll_tmds_clock_table[i];
642*d83cc019SAndroid Build Coastguard Worker unsigned r2, n2, p;
643*d83cc019SAndroid Build Coastguard Worker
644*d83cc019SAndroid Build Coastguard Worker wrpll_compute_rnp(ref->clock, &r2, &n2, &p);
645*d83cc019SAndroid Build Coastguard Worker igt_fail_on_f(ref->r2 != r2 || ref->n2 != n2 || ref->p != p,
646*d83cc019SAndroid Build Coastguard Worker "Computed value differs for %"PRId64" Hz:\n"" Reference: (%u,%u,%u)\n"" Computed: (%u,%u,%u)\n", (int64_t)ref->clock * 1000, ref->r2, ref->n2, ref->p, r2, n2, p);
647*d83cc019SAndroid Build Coastguard Worker }
648*d83cc019SAndroid Build Coastguard Worker
649*d83cc019SAndroid Build Coastguard Worker return 0;
650*d83cc019SAndroid Build Coastguard Worker }
651