JAJSOW0A July 2022 – July 2023 TDP1204
PRODUCTION DATA
When using an external discrete DDC buffer with snooping disabled, this example can be used. In this example, adaptive EQ for HDMI 2.1 is disabled. Also, this example assumes the source only wants to support TXFFE0 level when operating in HDMI 2.1 FRL mode.
This example will initialize the following:
// (address, data)
// Initial power-on configuration.
(0x0A, 0x05), // Rate snoop disabled and TXFFE controlled by 35h, 41h, and 42h
(0x0B, 0x23), // 3G and 6G tx slew rate control
(0x0C, 0x70), // HDMI clock and 8G10G12G TX slew rate control
(0x0E, 0x97), // HDMI 1.4, 2.0 and 2.1 CTLE selection
(0x11, 0x00), // Disable all four lanes.
(0x09, 0x00), // Take out of PD state. Should be done after initialization is complete.
// Selection between HDMI modes (1.4, 2.0, and 2.1)
switch (HDMI_MODE) {
case 'HDMI14_165' : // HDMI 1.4 configuration for less than 1.65 Gbps
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x20), // Limited mode, DC-coupled TX, 0dB DCG, Term open, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x00), // Clock lane EQ.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x00), // Disable FRL
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI14_340' : // HDMI 1.4 configuration for greater than 1.65 Gbps
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x21), // Limited mode, DC-coupled TX, 0dB DCG, Term 300, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x00), // Clock lane EQ.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x00), // Disable FRL
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI20' : // HDMI 2.0 configuration
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x00), // Clock lane EQ.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x02), // Set TMDS_CLK_RATIO
(0x31, 0x00), // Disable FRL
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_3G' : // HDMI 2.1 3 Gbps FRL
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x00), // Clock lane EQ.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x01), // Set to 3G FRL. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_6G_3lane' : // HDMI 2.1 6 Gbps FRL 3 lanes
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x00), // Clock lane EQ.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x02), // Set to 6G FRL and 3 lanes. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_6G_4lane' : // HDMI 2.1 6 Gbps FRL 4 lanes
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x0Y), // Clock lane EQ. Set to "Y" to desired value.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x03), // Set to 6G FRL and 4 lanes. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_8G' : //HDMI 2.1 8 Gbps FRL
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x0Y), // Clock lane EQ. Set "Y" to desired value.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x04), // Set to 8G FRL and 4 lanes. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_10G' : //HDMI 2.1 10 Gbps FRL
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x0Y), // Clock lane EQ. Set "Y" to desired value.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x05), // Set to 10G FRL and 4 lanes. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
case 'HDMI21_12G' : //HDMI 2.1 12 Gbps FRL
(0x11, 0x00), // Disable all four lanes.
(0x0D, 0x23), // Limited mode, DC-coupled TX, 0 dB DCG, Term 100, disable CTLE bypass
(0x12, 0x03), // Clock lane VOD and TXFFE
(0x13, 0x0Y), // Clock lane EQ. Set "Y" to desired value.
(0x14, 0x03), // D0 lane VOD and TXFFE.
(0x15, 0x0Y), // D0 lane EQ. Set "Y" to desired value.
(0x16, 0x03), // D1 lane VOD and TXFFE.
(0x17, 0x0Y), // D1 lane EQ. Set "Y" to desired value.
(0x18, 0x03), // D2 lane VOD and TXFFE.
(0x19, 0x0Y), // D2 lane EQ. Set "Y" to desired value.
(0x20, 0x00), // Clear TMDS_CLK_RATIO
(0x31, 0x06), // Set to 12G FRL and 4 lanes. Only TXFFE0 supported.
(0x11, 0x0F), // Enable all four lanes.
break;
}