Simplify reister updates (read, apply mask, write) with a wrapper to
make code more obvious and avoid possible errors of reading and writing
to different registers.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
 drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c | 85 ++++++++++++------------------------
 1 file changed, 28 insertions(+), 57 deletions(-)

diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c 
b/drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c
index 8fb5497aac9f..7862bd67d154 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_hdcp.c
@@ -306,9 +306,9 @@ static int msm_reset_hdcp_ddc_failures(struct 
hdmi_hdcp_ctrl *hdcp_ctrl)
                        HDMI_HDCP_DDC_CTRL_0_DISABLE);
 
                /* ACK the Failure to Clear it */
-               reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_CTRL_1);
-               reg_val |= HDMI_HDCP_DDC_CTRL_1_FAILED_ACK;
-               hdmi_write(hdmi, REG_HDMI_HDCP_DDC_CTRL_1, reg_val);
+               hdmi_update_bits(hdmi, REG_HDMI_HDCP_DDC_CTRL_1,
+                                HDMI_HDCP_DDC_CTRL_1_FAILED_ACK,
+                                HDMI_HDCP_DDC_CTRL_1_FAILED_ACK);
 
                /* Check if the FAILURE got Cleared */
                reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DDC_STATUS);
@@ -324,28 +324,22 @@ static int msm_reset_hdcp_ddc_failures(struct 
hdmi_hdcp_ctrl *hdcp_ctrl)
                DBG("Before: HDMI_DDC_SW_STATUS=0x%08x",
                        hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS));
                /* Reset HDMI DDC software status */
-               reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL);
-               reg_val |= HDMI_DDC_CTRL_SW_STATUS_RESET;
-               hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val);
+               hdmi_update_bits(hdmi, REG_HDMI_DDC_CTRL, 
HDMI_DDC_CTRL_SW_STATUS_RESET,
+                                HDMI_DDC_CTRL_SW_STATUS_RESET);
 
                rc = msm_hdmi_hdcp_msleep(hdcp_ctrl, 20, AUTH_ABORT_EV);
 
-               reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL);
-               reg_val &= ~HDMI_DDC_CTRL_SW_STATUS_RESET;
-               hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val);
+               hdmi_clear_bits(hdmi, REG_HDMI_DDC_CTRL, 
HDMI_DDC_CTRL_SW_STATUS_RESET);
 
                /* Reset HDMI DDC Controller */
-               reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL);
-               reg_val |= HDMI_DDC_CTRL_SOFT_RESET;
-               hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val);
+               hdmi_update_bits(hdmi, REG_HDMI_DDC_CTRL, 
HDMI_DDC_CTRL_SOFT_RESET,
+                                HDMI_DDC_CTRL_SOFT_RESET);
 
                /* If previous msleep is aborted, skip this msleep */
                if (!rc)
                        rc = msm_hdmi_hdcp_msleep(hdcp_ctrl, 20, AUTH_ABORT_EV);
 
-               reg_val = hdmi_read(hdmi, REG_HDMI_DDC_CTRL);
-               reg_val &= ~HDMI_DDC_CTRL_SOFT_RESET;
-               hdmi_write(hdmi, REG_HDMI_DDC_CTRL, reg_val);
+               hdmi_clear_bits(hdmi, REG_HDMI_DDC_CTRL, 
HDMI_DDC_CTRL_SOFT_RESET);
                DBG("After: HDMI_DDC_SW_STATUS=0x%08x",
                        hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS));
        }
@@ -399,7 +393,6 @@ static void msm_hdmi_hdcp_reauth_work(struct work_struct 
*work)
                struct hdmi_hdcp_ctrl, hdcp_reauth_work);
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
        unsigned long flags;
-       u32 reg_val;
 
        DBG("HDCP REAUTH WORK");
        /*
@@ -409,9 +402,7 @@ static void msm_hdmi_hdcp_reauth_work(struct work_struct 
*work)
         * AN1_READY bits in HDMI_HDCP_LINK0_STATUS register
         */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL);
-       reg_val &= ~HDMI_HPD_CTRL_ENABLE;
-       hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_HPD_CTRL, HDMI_HPD_CTRL_ENABLE);
 
        /* Disable HDCP interrupts */
        hdmi_write(hdmi, REG_HDMI_HDCP_INT_CTRL, 0);
@@ -431,9 +422,8 @@ static void msm_hdmi_hdcp_reauth_work(struct work_struct 
*work)
 
        /* Enable HPD circuitry */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL);
-       reg_val |= HDMI_HPD_CTRL_ENABLE;
-       hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val);
+       hdmi_update_bits(hdmi, REG_HDMI_HPD_CTRL, HDMI_HPD_CTRL_ENABLE,
+                        HDMI_HPD_CTRL_ENABLE);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        /*
@@ -456,7 +446,6 @@ static int msm_hdmi_hdcp_auth_prepare(struct hdmi_hdcp_ctrl 
*hdcp_ctrl)
 {
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
        u32 link0_status;
-       u32 reg_val;
        unsigned long flags;
        int rc;
 
@@ -472,14 +461,11 @@ static int msm_hdmi_hdcp_auth_prepare(struct 
hdmi_hdcp_ctrl *hdcp_ctrl)
 
        spin_lock_irqsave(&hdmi->reg_lock, flags);
        /* disable HDMI Encrypt */
-       reg_val = hdmi_read(hdmi, REG_HDMI_CTRL);
-       reg_val &= ~HDMI_CTRL_ENCRYPTED;
-       hdmi_write(hdmi, REG_HDMI_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED);
 
        /* Enabling Software DDC */
-       reg_val = hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION);
-       reg_val &= ~HDMI_DDC_ARBITRATION_HW_ARBITRATION;
-       hdmi_write(hdmi, REG_HDMI_DDC_ARBITRATION, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_DDC_ARBITRATION,
+                       HDMI_DDC_ARBITRATION_HW_ARBITRATION);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        /*
@@ -498,9 +484,8 @@ static int msm_hdmi_hdcp_auth_prepare(struct hdmi_hdcp_ctrl 
*hdcp_ctrl)
        hdmi_write(hdmi, REG_HDMI_HDCP_ENTROPY_CTRL1, 0xF00DFACE);
 
        /* Disable the RngCipher state */
-       reg_val = hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL);
-       reg_val &= ~HDMI_HDCP_DEBUG_CTRL_RNG_CIPHER;
-       hdmi_write(hdmi, REG_HDMI_HDCP_DEBUG_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_HDCP_DEBUG_CTRL,
+                       HDMI_HDCP_DEBUG_CTRL_RNG_CIPHER);
        DBG("HDCP_DEBUG_CTRL=0x%08x",
                hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL));
 
@@ -537,15 +522,12 @@ static int msm_hdmi_hdcp_auth_prepare(struct 
hdmi_hdcp_ctrl *hdcp_ctrl)
 static void msm_hdmi_hdcp_auth_fail(struct hdmi_hdcp_ctrl *hdcp_ctrl)
 {
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
-       u32 reg_val;
        unsigned long flags;
 
        DBG("hdcp auth failed, queue reauth work");
        /* clear HDMI Encrypt */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_CTRL);
-       reg_val &= ~HDMI_CTRL_ENCRYPTED;
-       hdmi_write(hdmi, REG_HDMI_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        hdcp_ctrl->hdcp_state = HDCP_STATE_AUTH_FAILED;
@@ -555,7 +537,6 @@ static void msm_hdmi_hdcp_auth_fail(struct hdmi_hdcp_ctrl 
*hdcp_ctrl)
 static void msm_hdmi_hdcp_auth_done(struct hdmi_hdcp_ctrl *hdcp_ctrl)
 {
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
-       u32 reg_val;
        unsigned long flags;
 
        /*
@@ -563,16 +544,15 @@ static void msm_hdmi_hdcp_auth_done(struct hdmi_hdcp_ctrl 
*hdcp_ctrl)
         * there is no Arbitration between software and hardware for DDC
         */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION);
-       reg_val |= HDMI_DDC_ARBITRATION_HW_ARBITRATION;
-       hdmi_write(hdmi, REG_HDMI_DDC_ARBITRATION, reg_val);
+       hdmi_update_bits(hdmi, REG_HDMI_DDC_ARBITRATION,
+                        HDMI_DDC_ARBITRATION_HW_ARBITRATION,
+                        HDMI_DDC_ARBITRATION_HW_ARBITRATION);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        /* enable HDMI Encrypt */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_CTRL);
-       reg_val |= HDMI_CTRL_ENCRYPTED;
-       hdmi_write(hdmi, REG_HDMI_CTRL, reg_val);
+       hdmi_update_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED,
+                        HDMI_CTRL_ENCRYPTED);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        hdcp_ctrl->hdcp_state = HDCP_STATE_AUTHENTICATED;
@@ -1304,7 +1284,6 @@ static void msm_hdmi_hdcp_auth_work(struct work_struct 
*work)
 void msm_hdmi_hdcp_on(struct hdmi_hdcp_ctrl *hdcp_ctrl)
 {
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
-       u32 reg_val;
        unsigned long flags;
 
        if ((HDCP_STATE_INACTIVE != hdcp_ctrl->hdcp_state) ||
@@ -1315,9 +1294,7 @@ void msm_hdmi_hdcp_on(struct hdmi_hdcp_ctrl *hdcp_ctrl)
 
        /* clear HDMI Encrypt */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_CTRL);
-       reg_val &= ~HDMI_CTRL_ENCRYPTED;
-       hdmi_write(hdmi, REG_HDMI_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        hdcp_ctrl->auth_event = 0;
@@ -1330,7 +1307,6 @@ void msm_hdmi_hdcp_off(struct hdmi_hdcp_ctrl *hdcp_ctrl)
 {
        struct hdmi *hdmi = hdcp_ctrl->hdmi;
        unsigned long flags;
-       u32 reg_val;
 
        if ((HDCP_STATE_INACTIVE == hdcp_ctrl->hdcp_state) ||
                (HDCP_STATE_NO_AKSV == hdcp_ctrl->hdcp_state)) {
@@ -1345,9 +1321,7 @@ void msm_hdmi_hdcp_off(struct hdmi_hdcp_ctrl *hdcp_ctrl)
         * AN1_READY bits in HDMI_HDCP_LINK0_STATUS register
         */
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL);
-       reg_val &= ~HDMI_HPD_CTRL_ENABLE;
-       hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_HPD_CTRL, HDMI_HPD_CTRL_ENABLE);
 
        /*
         * Disable HDCP interrupts.
@@ -1375,14 +1349,11 @@ void msm_hdmi_hdcp_off(struct hdmi_hdcp_ctrl *hdcp_ctrl)
        hdmi_write(hdmi, REG_HDMI_HDCP_CTRL, 0);
 
        spin_lock_irqsave(&hdmi->reg_lock, flags);
-       reg_val = hdmi_read(hdmi, REG_HDMI_CTRL);
-       reg_val &= ~HDMI_CTRL_ENCRYPTED;
-       hdmi_write(hdmi, REG_HDMI_CTRL, reg_val);
+       hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED);
 
        /* Enable HPD circuitry */
-       reg_val = hdmi_read(hdmi, REG_HDMI_HPD_CTRL);
-       reg_val |= HDMI_HPD_CTRL_ENABLE;
-       hdmi_write(hdmi, REG_HDMI_HPD_CTRL, reg_val);
+       hdmi_update_bits(hdmi, REG_HDMI_HPD_CTRL, HDMI_HPD_CTRL_ENABLE,
+                        HDMI_HPD_CTRL_ENABLE);
        spin_unlock_irqrestore(&hdmi->reg_lock, flags);
 
        hdcp_ctrl->hdcp_state = HDCP_STATE_INACTIVE;

-- 
2.51.0

Reply via email to