Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/vc4: hdmi: Split the CEC disable / enable functions in two

In order to ease further additions to the CEC enable and disable, let's
split the function into two functions, one to enable and the other to
disable.

Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-5-maxime@cerno.tech

+44 -29
+44 -29
drivers/gpu/drm/vc4/vc4_hdmi.c
··· 1736 1736 return ret; 1737 1737 } 1738 1738 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) 1740 1740 { 1741 1741 struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); 1742 1742 /* clock period in microseconds */ ··· 1749 1749 val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) | 1750 1750 ((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT); 1751 1751 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)); 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)); 1772 1771 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 - } 1772 + if (!vc4_hdmi->variant->external_irq_controller) 1773 + HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC); 1774 + 1781 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 + 1788 + return 0; 1789 + } 1790 + 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); 1782 1797 } 1783 1798 1784 1799 static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)