u8 min_hfreq_khz;
        u8 max_hfreq_khz;
        u8 pixel_clock_mhz; /* need to multiply by 10 */
-       __le16 sec_gtf_toggle; /* A000=use above, 20=use below */
-       u8 hfreq_start_khz; /* need to multiply by 2 */
-       u8 c; /* need to divide by 2 */
-       __le16 m;
-       u8 k;
-       u8 j; /* need to divide by 2 */
+       u8 flags;
+       union {
+               struct {
+                       u8 reserved;
+                       u8 hfreq_start_khz; /* need to multiply by 2 */
+                       u8 c; /* need to divide by 2 */
+                       __le16 m;
+                       u8 k;
+                       u8 j; /* need to divide by 2 */
+               } gtf2;
+               struct {
+                       u8 version;
+                       u8 data1; /* high 6 bits: extra clock resolution */
+                       u8 data2; /* plus low 2 of above: max hactive */
+                       u8 supported_aspects;
+                       u8 flags; /* preferred aspect and blanking support */
+                       u8 supported_scalings;
+                       u8 preferred_refresh;
+               } cvt;
+       } formula;
 } __attribute__((packed));
 
 struct detailed_data_wpindex {