1int p2 = 14;
2int min_p, max_p;
3
4if (p2 == 7 || p2 == 14) {
5	/* LVDS */
6	min_p = 7;
7	max_p = 98;
8} else {
9	/* SDVO/DAC */
10	min_p = 5;
11	max_p = 80;
12}
13
14for (int m1 = 10; m1 <= 22; m1++) {
15	for (int m2 = 5; m2 <= 9; m2++) {
16		for (int n = 1; n <= 6; n++) {
17			for (int p1 = 1; p1 <= 8; p1++) {
18				int ref = 96000000;
19				int m = 5 * (m1 + 2) + (m2 + 2);
20				int p = p1 * p2;
21				int vco = floor(ref * m / (n + 2));
22				int clock = floor(vco / p);
23
24				if (p < min_p || p > max_p)
25					continue;
26				if (m < 70 || m > 120)
27					continue;
28				if (m2 > m1)
29					continue; /* won't happen */
30				if (vco < 1400000000 ||
31				    vco > 2800000000)
32					continue;
33
34				printf("clock: %d (%d,%d),%d,(%d,%d)\n",
35					floor(clock / 1000),
36					m1, m2, n, p1, p2);
37			}
38		}
39	}
40}
41