@@ -1736,7 +1736,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
17361736 return ret ;
17371737}
17381738
1739- static int vc4_hdmi_cec_adap_enable (struct cec_adapter * adap , bool enable )
1739+ static int vc4_hdmi_cec_enable (struct cec_adapter * adap )
17401740{
17411741 struct vc4_hdmi * vc4_hdmi = cec_get_drvdata (adap );
17421742 /* clock period in microseconds */
@@ -1749,38 +1749,53 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)
17491749 val |= ((4700 / usecs ) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT ) |
17501750 ((4500 / usecs ) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT );
17511751
1752- if (enable ) {
1753- HDMI_WRITE (HDMI_CEC_CNTRL_5 , val |
1754- VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET );
1755- HDMI_WRITE (HDMI_CEC_CNTRL_5 , val );
1756- HDMI_WRITE (HDMI_CEC_CNTRL_2 ,
1757- ((1500 / usecs ) << VC4_HDMI_CEC_CNT_TO_1500_US_SHIFT ) |
1758- ((1300 / usecs ) << VC4_HDMI_CEC_CNT_TO_1300_US_SHIFT ) |
1759- ((800 / usecs ) << VC4_HDMI_CEC_CNT_TO_800_US_SHIFT ) |
1760- ((600 / usecs ) << VC4_HDMI_CEC_CNT_TO_600_US_SHIFT ) |
1761- ((400 / usecs ) << VC4_HDMI_CEC_CNT_TO_400_US_SHIFT ));
1762- HDMI_WRITE (HDMI_CEC_CNTRL_3 ,
1763- ((2750 / usecs ) << VC4_HDMI_CEC_CNT_TO_2750_US_SHIFT ) |
1764- ((2400 / usecs ) << VC4_HDMI_CEC_CNT_TO_2400_US_SHIFT ) |
1765- ((2050 / usecs ) << VC4_HDMI_CEC_CNT_TO_2050_US_SHIFT ) |
1766- ((1700 / usecs ) << VC4_HDMI_CEC_CNT_TO_1700_US_SHIFT ));
1767- HDMI_WRITE (HDMI_CEC_CNTRL_4 ,
1768- ((4300 / usecs ) << VC4_HDMI_CEC_CNT_TO_4300_US_SHIFT ) |
1769- ((3900 / usecs ) << VC4_HDMI_CEC_CNT_TO_3900_US_SHIFT ) |
1770- ((3600 / usecs ) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT ) |
1771- ((3500 / usecs ) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT ));
1772-
1773- if (!vc4_hdmi -> variant -> external_irq_controller )
1774- HDMI_WRITE (HDMI_CEC_CPU_MASK_CLEAR , VC4_HDMI_CPU_CEC );
1775- } else {
1776- if (!vc4_hdmi -> variant -> external_irq_controller )
1777- HDMI_WRITE (HDMI_CEC_CPU_MASK_SET , VC4_HDMI_CPU_CEC );
1778- HDMI_WRITE (HDMI_CEC_CNTRL_5 , val |
1779- VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET );
1780- }
1752+ HDMI_WRITE (HDMI_CEC_CNTRL_5 , val |
1753+ VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET );
1754+ HDMI_WRITE (HDMI_CEC_CNTRL_5 , val );
1755+ HDMI_WRITE (HDMI_CEC_CNTRL_2 ,
1756+ ((1500 / usecs ) << VC4_HDMI_CEC_CNT_TO_1500_US_SHIFT ) |
1757+ ((1300 / usecs ) << VC4_HDMI_CEC_CNT_TO_1300_US_SHIFT ) |
1758+ ((800 / usecs ) << VC4_HDMI_CEC_CNT_TO_800_US_SHIFT ) |
1759+ ((600 / usecs ) << VC4_HDMI_CEC_CNT_TO_600_US_SHIFT ) |
1760+ ((400 / usecs ) << VC4_HDMI_CEC_CNT_TO_400_US_SHIFT ));
1761+ HDMI_WRITE (HDMI_CEC_CNTRL_3 ,
1762+ ((2750 / usecs ) << VC4_HDMI_CEC_CNT_TO_2750_US_SHIFT ) |
1763+ ((2400 / usecs ) << VC4_HDMI_CEC_CNT_TO_2400_US_SHIFT ) |
1764+ ((2050 / usecs ) << VC4_HDMI_CEC_CNT_TO_2050_US_SHIFT ) |
1765+ ((1700 / usecs ) << VC4_HDMI_CEC_CNT_TO_1700_US_SHIFT ));
1766+ HDMI_WRITE (HDMI_CEC_CNTRL_4 ,
1767+ ((4300 / usecs ) << VC4_HDMI_CEC_CNT_TO_4300_US_SHIFT ) |
1768+ ((3900 / usecs ) << VC4_HDMI_CEC_CNT_TO_3900_US_SHIFT ) |
1769+ ((3600 / usecs ) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT ) |
1770+ ((3500 / usecs ) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT ));
1771+
1772+ if (!vc4_hdmi -> variant -> external_irq_controller )
1773+ HDMI_WRITE (HDMI_CEC_CPU_MASK_CLEAR , VC4_HDMI_CPU_CEC );
1774+
1775+ return 0 ;
1776+ }
1777+
1778+ static int vc4_hdmi_cec_disable (struct cec_adapter * adap )
1779+ {
1780+ struct vc4_hdmi * vc4_hdmi = cec_get_drvdata (adap );
1781+
1782+ if (!vc4_hdmi -> variant -> external_irq_controller )
1783+ HDMI_WRITE (HDMI_CEC_CPU_MASK_SET , VC4_HDMI_CPU_CEC );
1784+
1785+ HDMI_WRITE (HDMI_CEC_CNTRL_5 , HDMI_READ (HDMI_CEC_CNTRL_5 ) |
1786+ VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET );
1787+
17811788 return 0 ;
17821789}
17831790
1791+ static int vc4_hdmi_cec_adap_enable (struct cec_adapter * adap , bool enable )
1792+ {
1793+ if (enable )
1794+ return vc4_hdmi_cec_enable (adap );
1795+ else
1796+ return vc4_hdmi_cec_disable (adap );
1797+ }
1798+
17841799static int vc4_hdmi_cec_adap_log_addr (struct cec_adapter * adap , u8 log_addr )
17851800{
17861801 struct vc4_hdmi * vc4_hdmi = cec_get_drvdata (adap );
0 commit comments