@@ -353,6 +353,146 @@ static const struct bxt_ddi_buf_trans bxt_ddi_translations_hdmi[] = {
353353 { 154 , 0x9A , 1 , 128 , true }, /* 9: 1200 0 */
354354};
355355
356+ struct cnl_ddi_buf_trans {
357+ u32 dw2_swing_sel ;
358+ u32 dw7_n_scalar ;
359+ u32 dw4_cursor_coeff ;
360+ u32 dw4_post_cursor_2 ;
361+ u32 dw4_post_cursor_1 ;
362+ };
363+
364+ /* Voltage Swing Programming for VccIO 0.85V for DP */
365+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_dp_0_85V [] = {
366+ /* NT mV Trans mV db */
367+ { 0xA , 0x5D , 0x3F , 0x00 , 0x00 }, /* 350 350 0.0 */
368+ { 0xA , 0x6A , 0x38 , 0x00 , 0x07 }, /* 350 500 3.1 */
369+ { 0xB , 0x7A , 0x32 , 0x00 , 0x0D }, /* 350 700 6.0 */
370+ { 0x6 , 0x7C , 0x2D , 0x00 , 0x12 }, /* 350 900 8.2 */
371+ { 0xA , 0x69 , 0x3F , 0x00 , 0x00 }, /* 500 500 0.0 */
372+ { 0xB , 0x7A , 0x36 , 0x00 , 0x09 }, /* 500 700 2.9 */
373+ { 0x6 , 0x7C , 0x30 , 0x00 , 0x0F }, /* 500 900 5.1 */
374+ { 0xB , 0x7D , 0x3C , 0x00 , 0x03 }, /* 650 725 0.9 */
375+ { 0x6 , 0x7C , 0x34 , 0x00 , 0x0B }, /* 600 900 3.5 */
376+ { 0x6 , 0x7B , 0x3F , 0x00 , 0x00 }, /* 900 900 0.0 */
377+ };
378+
379+ /* Voltage Swing Programming for VccIO 0.85V for HDMI */
380+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_hdmi_0_85V [] = {
381+ /* NT mV Trans mV db */
382+ { 0xA , 0x60 , 0x3F , 0x00 , 0x00 }, /* 450 450 0.0 */
383+ { 0xB , 0x73 , 0x36 , 0x00 , 0x09 }, /* 450 650 3.2 */
384+ { 0x6 , 0x7F , 0x31 , 0x00 , 0x0E }, /* 450 850 5.5 */
385+ { 0xB , 0x73 , 0x3F , 0x00 , 0x00 }, /* 650 650 0.0 */
386+ { 0x6 , 0x7F , 0x37 , 0x00 , 0x08 }, /* 650 850 2.3 */
387+ { 0x6 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 850 850 0.0 */
388+ { 0x6 , 0x7F , 0x35 , 0x00 , 0x0A }, /* 600 850 3.0 */
389+ };
390+
391+ /* Voltage Swing Programming for VccIO 0.85V for eDP */
392+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_edp_0_85V [] = {
393+ /* NT mV Trans mV db */
394+ { 0xA , 0x66 , 0x3A , 0x00 , 0x05 }, /* 384 500 2.3 */
395+ { 0x0 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 153 200 2.3 */
396+ { 0x8 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 192 250 2.3 */
397+ { 0x1 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 230 300 2.3 */
398+ { 0x9 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 269 350 2.3 */
399+ { 0xA , 0x66 , 0x3C , 0x00 , 0x03 }, /* 446 500 1.0 */
400+ { 0xB , 0x70 , 0x3C , 0x00 , 0x03 }, /* 460 600 2.3 */
401+ { 0xC , 0x75 , 0x3C , 0x00 , 0x03 }, /* 537 700 2.3 */
402+ { 0x2 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
403+ };
404+
405+ /* Voltage Swing Programming for VccIO 0.95V for DP */
406+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_dp_0_95V [] = {
407+ /* NT mV Trans mV db */
408+ { 0xA , 0x5D , 0x3F , 0x00 , 0x00 }, /* 350 350 0.0 */
409+ { 0xA , 0x6A , 0x38 , 0x00 , 0x07 }, /* 350 500 3.1 */
410+ { 0xB , 0x7A , 0x32 , 0x00 , 0x0D }, /* 350 700 6.0 */
411+ { 0x6 , 0x7C , 0x2D , 0x00 , 0x12 }, /* 350 900 8.2 */
412+ { 0xA , 0x69 , 0x3F , 0x00 , 0x00 }, /* 500 500 0.0 */
413+ { 0xB , 0x7A , 0x36 , 0x00 , 0x09 }, /* 500 700 2.9 */
414+ { 0x6 , 0x7C , 0x30 , 0x00 , 0x0F }, /* 500 900 5.1 */
415+ { 0xB , 0x7D , 0x3C , 0x00 , 0x03 }, /* 650 725 0.9 */
416+ { 0x6 , 0x7C , 0x34 , 0x00 , 0x0B }, /* 600 900 3.5 */
417+ { 0x6 , 0x7B , 0x3F , 0x00 , 0x00 }, /* 900 900 0.0 */
418+ };
419+
420+ /* Voltage Swing Programming for VccIO 0.95V for HDMI */
421+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_hdmi_0_95V [] = {
422+ /* NT mV Trans mV db */
423+ { 0xA , 0x5C , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
424+ { 0xB , 0x69 , 0x37 , 0x00 , 0x08 }, /* 400 600 3.5 */
425+ { 0x5 , 0x76 , 0x31 , 0x00 , 0x0E }, /* 400 800 6.0 */
426+ { 0xA , 0x5E , 0x3F , 0x00 , 0x00 }, /* 450 450 0.0 */
427+ { 0xB , 0x69 , 0x3F , 0x00 , 0x00 }, /* 600 600 0.0 */
428+ { 0xB , 0x79 , 0x35 , 0x00 , 0x0A }, /* 600 850 3.0 */
429+ { 0x6 , 0x7D , 0x32 , 0x00 , 0x0D }, /* 600 1000 4.4 */
430+ { 0x5 , 0x76 , 0x3F , 0x00 , 0x00 }, /* 800 800 0.0 */
431+ { 0x6 , 0x7D , 0x39 , 0x00 , 0x06 }, /* 800 1000 1.9 */
432+ { 0x6 , 0x7F , 0x39 , 0x00 , 0x06 }, /* 850 1050 1.8 */
433+ { 0x6 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 1050 1050 0.0 */
434+ };
435+
436+ /* Voltage Swing Programming for VccIO 0.95V for eDP */
437+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_edp_0_95V [] = {
438+ /* NT mV Trans mV db */
439+ { 0xA , 0x61 , 0x3A , 0x00 , 0x05 }, /* 384 500 2.3 */
440+ { 0x0 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 153 200 2.3 */
441+ { 0x8 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 192 250 2.3 */
442+ { 0x1 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 230 300 2.3 */
443+ { 0x9 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 269 350 2.3 */
444+ { 0xA , 0x61 , 0x3C , 0x00 , 0x03 }, /* 446 500 1.0 */
445+ { 0xB , 0x68 , 0x39 , 0x00 , 0x06 }, /* 460 600 2.3 */
446+ { 0xC , 0x6E , 0x39 , 0x00 , 0x06 }, /* 537 700 2.3 */
447+ { 0x4 , 0x7F , 0x3A , 0x00 , 0x05 }, /* 460 600 2.3 */
448+ { 0x2 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
449+ };
450+
451+ /* Voltage Swing Programming for VccIO 1.05V for DP */
452+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_dp_1_05V [] = {
453+ /* NT mV Trans mV db */
454+ { 0xA , 0x58 , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
455+ { 0xB , 0x64 , 0x37 , 0x00 , 0x08 }, /* 400 600 3.5 */
456+ { 0x5 , 0x70 , 0x31 , 0x00 , 0x0E }, /* 400 800 6.0 */
457+ { 0x6 , 0x7F , 0x2C , 0x00 , 0x13 }, /* 400 1050 8.4 */
458+ { 0xB , 0x64 , 0x3F , 0x00 , 0x00 }, /* 600 600 0.0 */
459+ { 0x5 , 0x73 , 0x35 , 0x00 , 0x0A }, /* 600 850 3.0 */
460+ { 0x6 , 0x7F , 0x30 , 0x00 , 0x0F }, /* 550 1050 5.6 */
461+ { 0x5 , 0x76 , 0x3E , 0x00 , 0x01 }, /* 850 900 0.5 */
462+ { 0x6 , 0x7F , 0x36 , 0x00 , 0x09 }, /* 750 1050 2.9 */
463+ { 0x6 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 1050 1050 0.0 */
464+ };
465+
466+ /* Voltage Swing Programming for VccIO 1.05V for HDMI */
467+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_hdmi_1_05V [] = {
468+ /* NT mV Trans mV db */
469+ { 0xA , 0x58 , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
470+ { 0xB , 0x64 , 0x37 , 0x00 , 0x08 }, /* 400 600 3.5 */
471+ { 0x5 , 0x70 , 0x31 , 0x00 , 0x0E }, /* 400 800 6.0 */
472+ { 0xA , 0x5B , 0x3F , 0x00 , 0x00 }, /* 450 450 0.0 */
473+ { 0xB , 0x64 , 0x3F , 0x00 , 0x00 }, /* 600 600 0.0 */
474+ { 0x5 , 0x73 , 0x35 , 0x00 , 0x0A }, /* 600 850 3.0 */
475+ { 0x6 , 0x7C , 0x32 , 0x00 , 0x0D }, /* 600 1000 4.4 */
476+ { 0x5 , 0x70 , 0x3F , 0x00 , 0x00 }, /* 800 800 0.0 */
477+ { 0x6 , 0x7C , 0x39 , 0x00 , 0x06 }, /* 800 1000 1.9 */
478+ { 0x6 , 0x7F , 0x39 , 0x00 , 0x06 }, /* 850 1050 1.8 */
479+ { 0x6 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 1050 1050 0.0 */
480+ };
481+
482+ /* Voltage Swing Programming for VccIO 1.05V for eDP */
483+ static const struct cnl_ddi_buf_trans cnl_ddi_translations_edp_1_05V [] = {
484+ /* NT mV Trans mV db */
485+ { 0xA , 0x5E , 0x3A , 0x00 , 0x05 }, /* 384 500 2.3 */
486+ { 0x0 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 153 200 2.3 */
487+ { 0x8 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 192 250 2.3 */
488+ { 0x1 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 230 300 2.3 */
489+ { 0x9 , 0x7F , 0x38 , 0x00 , 0x07 }, /* 269 350 2.3 */
490+ { 0xA , 0x5E , 0x3C , 0x00 , 0x03 }, /* 446 500 1.0 */
491+ { 0xB , 0x64 , 0x39 , 0x00 , 0x06 }, /* 460 600 2.3 */
492+ { 0xE , 0x6A , 0x39 , 0x00 , 0x06 }, /* 537 700 2.3 */
493+ { 0x2 , 0x7F , 0x3F , 0x00 , 0x00 }, /* 400 400 0.0 */
494+ };
495+
356496enum port intel_ddi_get_encoder_port (struct intel_encoder * encoder )
357497{
358498 switch (encoder -> type ) {
0 commit comments