From nobody Tue Apr 7 21:26:13 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7A9838F620 for ; Wed, 11 Mar 2026 20:17:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773260273; cv=none; b=N75jLxq0jkR8xQt3j1cZeFVjwKqQD/PUueW7RM0XArWkSlUG1T6OuJOHDgrmMpBD5Mdu6ygO7o/r00sHta9ToE5YG7IuNtZhSh/zNN0ubh61AscyshFKWs5SRrv2PeRpA4UyIE8qUYH4+YAJh+BSofAFlAd3uM7UteZiQ3WWSEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773260273; c=relaxed/simple; bh=8XMa4wsTUcexijaN95Xa/+lE5OvRgvIaBdz6gmBRNU8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NggY9BA2G6tprd/KeTmQNiLMw+aTwOVNp8h5M8qVxIuhM0lwSnab56oeU1JOecIcLbWmXMTm+uOIrn0OvkjWTn58NRw8PMXUg5hz301WfUJ/PB+OyQbpksp/tOAUVFiadg097nMxkj4pQO8aoFCst3lP26/VUUhSGN291Yh+bB4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=kMgiB8P0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RGBq4k4B; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="kMgiB8P0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RGBq4k4B" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62BFpLF8351034 for ; Wed, 11 Mar 2026 20:17:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= WUfDsXE2bewsJbQrNcPdTtiQ5aMigLmKp8tPDJLp/a0=; b=kMgiB8P0H8w3+zT3 FcgU+Aq5DunS/yH6Yl/Hn5mt3MbzvC9njX2Xf4BTEM0IYc2fZ4A0plMQKX5/y4NU Ah2BwRpgWoXgFFiKmuqNpBKXmtamNMqBR99YhgLzS8TvvNi42qcQzz/+bmv2YuQw sqTMLqQ+E5wKrwhL0LK9A5TZ0u7IZPJc/3aF4ejtTXpZGV1vO+CYNFVZy7JGdwt4 2fqUtV82qd7H+UN6nuUV8OI/S46E/Zr5LfGJb6t5Xsg1gu1vSpkMx/eh+A/3QB1I TTMZ+aDBk5XtjiN1B5tcCfGp+bgTsnUeLSEpRE4ZkoO82bP4TPmr9hNQDZSn94Sf AW1RiQ== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cubd6gvum-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 20:17:50 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8cd77bc8186so220960385a.0 for ; Wed, 11 Mar 2026 13:17:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773260270; x=1773865070; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=WUfDsXE2bewsJbQrNcPdTtiQ5aMigLmKp8tPDJLp/a0=; b=RGBq4k4BtH77auG0FGeufFqTN15Ck0TexIdsi6Ou9pn1oJDZH16e+/I3ze1tsXAl6I M8km6iTi5kPrbsVcxrrPczADgmEZVZ+YXVP2JV05YLT5nl+zTfNpWdU7teU2UwexTH+g E5VQ5RtLt+5KCDR654+O+tZ8k95iacpx2qvgqRYYUVzSlE1eXxSKm9T1R84epntyCma9 Ww8LgKt3fmWYUNUCc8vzE3rqM6NkXyGvAqb7UHHtdeXJZ3JD82Jy1NYkzmibYvER1BqX Qlq9y0hwiEFL0t6OZ+nl3BeJSI9j70X5KAr8dC8oW2xCWJAr0FrXOwtea7kVz1B18lS0 81aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773260270; x=1773865070; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WUfDsXE2bewsJbQrNcPdTtiQ5aMigLmKp8tPDJLp/a0=; b=tkoiYG7gMhPXC2oSMRsXej4sqPwlU8XHw18d2dJA04gYDEytYyDy9tXRibf8Vse4GE 9hY/I8cI9vKUsADlNsjt4OlcNsXI6ggB+Fx67cw7wONmbsT0XDIGAErysIJoo/+lDigJ 5BO5UYeunyNDeeQiE3Y6JfGPwkC052Lm4R9llpZ1MNJsPtk5nd1sKeTu85A1NNADvzG5 zPW9gz7eEb57eekqRsTW2nr1j5hS8zLhcsV5RF+e6WX5yloajVbn4glrNpQfcId4Tra6 RMLvzgsmLgjdBbQ0x2p5TCbVlUaQnEBSJ/PcQXOFuyzvF5fGsjQPy4xGjSSayuCXnMJm mfZA== X-Forwarded-Encrypted: i=1; AJvYcCUOZHHfyZjcc2O+U72kcf6IRLO99FZYLxViFqzouRjU3ydpvc7eWihBRcBnokVB3AVLff2Dva2+KXawV0Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxaSxb7JJEClRgR53GSDhmkU2Z27tnDd85PFbEs2/ZxFam0/3zK z9Qs2VYUjD5vtZFvExP83Wn83FMj9knIQ2JlNBlKpiRombG/zP0sx1nTiA0SS4WA1+TN1GhuIjh FnCJ/UQHbPl1FswAEWBxkH0Bo+IbW7OpIHQGn3yQNy0infvPKf5MQDAJLfnNkN96KCes= X-Gm-Gg: ATEYQzwQH3T/1BtGI6HA2H8+XYHhM7hBVivEbW8O32skFZWbt6/XQYnawKJua2Y69bB Q8cRrrziB53JtQ7OSqrpB9ZKdY6aN1uQFzxToETXyJJIuNjUkiM2JKMRGeMWmlFxFK05gceRDcH 5IPGfe/OsIwbpw3FDHGlLLgno3yoGNhcgOw44A71j0ca9Fq7EytmB63rNrHKNxJ0xolPmHZAlwy n3Vw3cCtSMfujE4RaV8/+kR4EjEtjghYO0f//60YKO/aTQYiuBv8SMvQvDwidCUkl59GonXixLl lmxWOwIiY2URy+r04WXtukG62ekjUf4P3ujW1pqCxmlgT7YN4xjqfOpEwxOwk6JnZS8tgzin00Y JN2t+3MeqU+ZRJJgClylZYgMXHsBVC6ZTR0ZsGzZBjFVr X-Received: by 2002:a05:620a:708a:b0:8cb:4059:a909 with SMTP id af79cd13be357-8cda1956ac0mr553432485a.21.1773260270126; Wed, 11 Mar 2026 13:17:50 -0700 (PDT) X-Received: by 2002:a05:620a:708a:b0:8cb:4059:a909 with SMTP id af79cd13be357-8cda1956ac0mr553428485a.21.1773260269682; Wed, 11 Mar 2026 13:17:49 -0700 (PDT) Received: from [127.0.1.1] ([178.197.219.94]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4854b65fd3dsm79257255e9.10.2026.03.11.13.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2026 13:17:48 -0700 (PDT) From: Krzysztof Kozlowski Date: Wed, 11 Mar 2026 21:17:31 +0100 Subject: [PATCH 7/7] drm/msm/hdmi_hdcp: Simplify register bit updates Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260311-drm-msm-hdmi-cleanup-v1-7-c5535245f6de@oss.qualcomm.com> References: <20260311-drm-msm-hdmi-cleanup-v1-0-c5535245f6de@oss.qualcomm.com> In-Reply-To: <20260311-drm-msm-hdmi-cleanup-v1-0-c5535245f6de@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9385; i=krzysztof.kozlowski@oss.qualcomm.com; h=from:subject:message-id; bh=8XMa4wsTUcexijaN95Xa/+lE5OvRgvIaBdz6gmBRNU8=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBpsc3cfvxWGj/HrNqippRl5yeLDVnfLLiTatfgb vOaaMf4BPGJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCabHN3AAKCRDBN2bmhouD 1447D/0QPvgUPTbzaC5cY2j7uyYgBrjkju5R1+H21BG9UvvJd+Wxz+McNqCfV34gBK1EPc7bfg7 bD0TUjKJByBioIN+3gL2RZiJJxucvEqsFWmhWxTuOZoFOndaUuymfzBCJMD6EyBPIwk+0Y3VLPq xaxMRrylzi0WnRCxTb6DQqprOOyYBaW/N9C4LFDnvQMbFyTlLLfsiRkVn1WLBkRL1k9ABay7Hoh OuoZRTjgAJjnwmUDR19X/XpiqLYW60aNRv9aNUQJ+12pDskGNQRIAH/TPsZaZ3PSkn0CplVjNOW ESxaZSXWFs5MhcjUpxE4Ot3jS1IgUNz48eclsE96oOucjC+g1CEoX2CeCIucAnEzqYJRbCmuHLH eFLzbiuyUZWedLS4HHY+Hlw/laVRyRl7+wtsAUMIw2nGTfs/wOctan2i/swBiXVyYrVnkSkK5mO YuuFYK4sy1i+2WdhyDbmYkwM9A7VPDXEJaVM+2L6aAEGg5hbZzRwOSrB1r1uPqZE/vLtegZGqCs 6xrcmPEaEWXLQw66S/iNiwbwOar0l3ZgWkiEu99PmHy5AoozRAfuAaZ6UvCAukuANQiq8Ak1/1Q DD+MquVqa7BMAx6JuvwQMY55m3k/DFNbh8jesZfro1no9WwgJBbA6kulK8c9DV5indwq0TQJcTU lL0VK0Gn4XITvMw== X-Developer-Key: i=krzysztof.kozlowski@oss.qualcomm.com; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B X-Authority-Analysis: v=2.4 cv=OvdCCi/t c=1 sm=1 tr=0 ts=69b1cdee cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=gOEeR9iKwsj33Yj5oN/cWg==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=kVIxuixzSQivcz-PG0cA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDE3MiBTYWx0ZWRfX9bqpK9tbgnDw 9kzY/I9QrCoQDEq8zazsz6W5h+gPK8nPvlmMINNFMmdjE1EHX4b8TTxPyBvfWFjUKD1T/u7LAvB DAmCPx93hF2bxcXb26FHV6S5CSIDC9Ttob8XNF87lRDxBceSN/Mf5esLL2MV9VDotlrjtK6pfCm uNGVtaEWa6Ov3oFqs74NNcXWfNq65XHJN/2P4mnXQiOlAvE4PkuI0kriJ6yekKJcFDxCTL368+7 Hkxck6ffVqjUbOwPkiUEWcoJ8N2HdEXxjBUSlyVVxPloQCKWg9qdQbc4QA2tY9krn07EUqwkJsi EIKSvRPc6aw1ZJkXa0Kohzk2hwukMjuQz6qO/88Feago+FsZhM/NtV8Eltc5AyO7n37mrspEiQy xGYh1ujAmjYFNOdlK8XEqDEeuNy3XVjJlPeLumFAq9h9bRn2zJFgJxjxBCaUG0F/ntSBuFhDoEF smZFIYS2OrltfZ09TKQ== X-Proofpoint-GUID: 15F6w25Iuxs1tPsgDboHdZ53T_xrwhTx X-Proofpoint-ORIG-GUID: 15F6w25Iuxs1tPsgDboHdZ53T_xrwhTx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-11_02,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 impostorscore=0 phishscore=0 malwarescore=0 suspectscore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110172 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 Reviewed-by: Dmitry Baryshkov --- 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/hdm= i/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); =20 /* ACK the Failure to Clear it */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_HDCP_DDC_CTRL_1); - reg_val |=3D 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); =20 /* Check if the FAILURE got Cleared */ reg_val =3D hdmi_read(hdmi, REG_HDMI_HDCP_DDC_STATUS); @@ -324,28 +324,22 @@ static int msm_reset_hdcp_ddc_failures(struct hdmi_hd= cp_ctrl *hdcp_ctrl) DBG("Before: HDMI_DDC_SW_STATUS=3D0x%08x", hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS)); /* Reset HDMI DDC software status */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_DDC_CTRL); - reg_val |=3D 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); =20 rc =3D msm_hdmi_hdcp_msleep(hdcp_ctrl, 20, AUTH_ABORT_EV); =20 - reg_val =3D hdmi_read(hdmi, REG_HDMI_DDC_CTRL); - reg_val &=3D ~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); =20 /* Reset HDMI DDC Controller */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_DDC_CTRL); - reg_val |=3D 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); =20 /* If previous msleep is aborted, skip this msleep */ if (!rc) rc =3D msm_hdmi_hdcp_msleep(hdcp_ctrl, 20, AUTH_ABORT_EV); =20 - reg_val =3D hdmi_read(hdmi, REG_HDMI_DDC_CTRL); - reg_val &=3D ~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=3D0x%08x", hdmi_read(hdmi, REG_HDMI_DDC_SW_STATUS)); } @@ -399,7 +393,6 @@ static void msm_hdmi_hdcp_reauth_work(struct work_struc= t *work) struct hdmi_hdcp_ctrl, hdcp_reauth_work); struct hdmi *hdmi =3D hdcp_ctrl->hdmi; unsigned long flags; - u32 reg_val; =20 DBG("HDCP REAUTH WORK"); /* @@ -409,9 +402,7 @@ static void msm_hdmi_hdcp_reauth_work(struct work_struc= t *work) * AN1_READY bits in HDMI_HDCP_LINK0_STATUS register */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_HPD_CTRL); - reg_val &=3D ~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); =20 /* 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_struc= t *work) =20 /* Enable HPD circuitry */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_HPD_CTRL); - reg_val |=3D 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); =20 /* @@ -456,7 +446,6 @@ static int msm_hdmi_hdcp_auth_prepare(struct hdmi_hdcp_= ctrl *hdcp_ctrl) { struct hdmi *hdmi =3D hdcp_ctrl->hdmi; u32 link0_status; - u32 reg_val; unsigned long flags; int rc; =20 @@ -472,14 +461,11 @@ static int msm_hdmi_hdcp_auth_prepare(struct hdmi_hdc= p_ctrl *hdcp_ctrl) =20 spin_lock_irqsave(&hdmi->reg_lock, flags); /* disable HDMI Encrypt */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_CTRL); - reg_val &=3D ~HDMI_CTRL_ENCRYPTED; - hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); + hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED); =20 /* Enabling Software DDC */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION); - reg_val &=3D ~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); =20 /* @@ -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); =20 /* Disable the RngCipher state */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL); - reg_val &=3D ~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=3D0x%08x", hdmi_read(hdmi, REG_HDMI_HDCP_DEBUG_CTRL)); =20 @@ -537,15 +522,12 @@ static int msm_hdmi_hdcp_auth_prepare(struct hdmi_hdc= p_ctrl *hdcp_ctrl) static void msm_hdmi_hdcp_auth_fail(struct hdmi_hdcp_ctrl *hdcp_ctrl) { struct hdmi *hdmi =3D hdcp_ctrl->hdmi; - u32 reg_val; unsigned long flags; =20 DBG("hdcp auth failed, queue reauth work"); /* clear HDMI Encrypt */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_CTRL); - reg_val &=3D ~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); =20 hdcp_ctrl->hdcp_state =3D HDCP_STATE_AUTH_FAILED; @@ -555,7 +537,6 @@ static void msm_hdmi_hdcp_auth_fail(struct hdmi_hdcp_ct= rl *hdcp_ctrl) static void msm_hdmi_hdcp_auth_done(struct hdmi_hdcp_ctrl *hdcp_ctrl) { struct hdmi *hdmi =3D hdcp_ctrl->hdmi; - u32 reg_val; unsigned long flags; =20 /* @@ -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 =3D hdmi_read(hdmi, REG_HDMI_DDC_ARBITRATION); - reg_val |=3D 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); =20 /* enable HDMI Encrypt */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_CTRL); - reg_val |=3D 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); =20 hdcp_ctrl->hdcp_state =3D HDCP_STATE_AUTHENTICATED; @@ -1304,7 +1284,6 @@ static void msm_hdmi_hdcp_auth_work(struct work_struc= t *work) void msm_hdmi_hdcp_on(struct hdmi_hdcp_ctrl *hdcp_ctrl) { struct hdmi *hdmi =3D hdcp_ctrl->hdmi; - u32 reg_val; unsigned long flags; =20 if ((HDCP_STATE_INACTIVE !=3D hdcp_ctrl->hdcp_state) || @@ -1315,9 +1294,7 @@ void msm_hdmi_hdcp_on(struct hdmi_hdcp_ctrl *hdcp_ctr= l) =20 /* clear HDMI Encrypt */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_CTRL); - reg_val &=3D ~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); =20 hdcp_ctrl->auth_event =3D 0; @@ -1330,7 +1307,6 @@ void msm_hdmi_hdcp_off(struct hdmi_hdcp_ctrl *hdcp_ct= rl) { struct hdmi *hdmi =3D hdcp_ctrl->hdmi; unsigned long flags; - u32 reg_val; =20 if ((HDCP_STATE_INACTIVE =3D=3D hdcp_ctrl->hdcp_state) || (HDCP_STATE_NO_AKSV =3D=3D hdcp_ctrl->hdcp_state)) { @@ -1345,9 +1321,7 @@ void msm_hdmi_hdcp_off(struct hdmi_hdcp_ctrl *hdcp_ct= rl) * AN1_READY bits in HDMI_HDCP_LINK0_STATUS register */ spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_HPD_CTRL); - reg_val &=3D ~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); =20 /* * 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); =20 spin_lock_irqsave(&hdmi->reg_lock, flags); - reg_val =3D hdmi_read(hdmi, REG_HDMI_CTRL); - reg_val &=3D ~HDMI_CTRL_ENCRYPTED; - hdmi_write(hdmi, REG_HDMI_CTRL, reg_val); + hdmi_clear_bits(hdmi, REG_HDMI_CTRL, HDMI_CTRL_ENCRYPTED); =20 /* Enable HPD circuitry */ - reg_val =3D hdmi_read(hdmi, REG_HDMI_HPD_CTRL); - reg_val |=3D 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); =20 hdcp_ctrl->hdcp_state =3D HDCP_STATE_INACTIVE; --=20 2.51.0