From nobody Tue Apr 7 21:26:12 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 F2838391E48 for ; Wed, 11 Mar 2026 20:17:49 +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=1773260271; cv=none; b=pqo+oyeRGA5dh0UkgehMkSJPPb6TBm0x0lWb6K2jgIrsLT4+Ut+dYnztdANdLjwf2FyYnWT1maFiwH7xnodGKOQXbiqrrJnLiDNQqo3opd61FO0Qu472MQLBj1RkYuwTNIELa/hs8Hekj1ZrMlg4i8OxAwt4hurG5yj4UdvFYqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773260271; c=relaxed/simple; bh=HFld0pGzK+gfRaGsz97iqpHu891+p4M8R3L5EByimK0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zw2D19tDKemz+jP2E1AWJbIqZWJpuDDZpx15ZteG4g/s1k0bDHVR/ufWmZ9UkSKYQ/wApzfaVq46fo2q2kglWr4/ioOqWFlyyMfMczT2o59PTaUdDZhBXd1MyXkPMk4VX9mQOz5WsFnn57LUVsMq52jtC7oYPfW/WF6YUcu94r4= 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=OcPc29Xo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FT+2Unnh; 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="OcPc29Xo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FT+2Unnh" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62BJBQWN1439628 for ; Wed, 11 Mar 2026 20:17:49 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= 5D1PWw6dwGUNePclrhAZ7JX6Zeom3TPhlQscH1nfVp0=; b=OcPc29XoF0CKBW9N tAYcb4AJrSY79XBPol9uxjyZfSRbplljRV1nJ03Eh2pC7DrbR2dHIupukozZW5vR sOU3zF+/7KCY2tMk0ZqH2peYxchg+qbBfnUz/giM5Sdt8szufY+a70FPoX1E6WvQ G8z6/pgFCBx+cWc01/vsOlBsyArn4YBMbYFy6uUiViH9tCuTJM0s8ecwoaQQhEir w4ZLEadlQrErS0ZWpEiMVW65O+W8TNeBBxje8phw5/7ux5VWSnP5q7pLmV/wYRRQ u/2GwH8QqeYv9G4R9fsDynX2G3EoD6OadepZLqsxem6iGxsMRjsaFVCs+yZqatIz JDgHMA== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cu38yjwjv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 20:17:48 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8cd77bc8186so220933885a.0 for ; Wed, 11 Mar 2026 13:17:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773260268; x=1773865068; 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=5D1PWw6dwGUNePclrhAZ7JX6Zeom3TPhlQscH1nfVp0=; b=FT+2Unnhf4y7nQ3ojkOQbMM1K+BgZ5TXC1PeRPfPEs9uizpe0ZtbnwcxCvegKyhAMx luAYwH9M9x0RNJBGq9nc6uQoHOnf+FOk7lRla31ZetTBj3ggfABpMXzV4yx84gTXvicf jz9EhMHvRlvFi+FdXZ5a0umpIXmHckFv0DjMrgtXEydMagat01na2oOAl0XZEdkmmqEC J5DBgmF8KFurmUqwS997cfxhEw9rCn/Cenbfg0A29jeSoD2xQi334wqILknsuF+qNKb0 ZXE1YybXQFA+PCFvDJb2EtPP2sh4U39aab0Vx6anoJnDqr2Uqxsxg2RXThwGIQj1nNSV 67VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773260268; x=1773865068; 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=5D1PWw6dwGUNePclrhAZ7JX6Zeom3TPhlQscH1nfVp0=; b=VvkpSsknVAr0F2uBz79coyZ6HH6auaXkEIlzKXmYTHsnjTU7dkIAvXagfuzRPLH3ln A2+hWzOUTOAcc9PILEd7tS/NODdBFpchGJUbi3uiaSBhMFSiCUHaOhoK+Vp5w1p/L30w bjKXbVUkW3uVdqod6NWXLJX0kwm7bkXgkVorXJlyInCu3ksBWyApdNCGEFgn9CoW1A1q wJryAlBnVhhMXQCQ1n+8b63OlW2T4NTj1ttGVPwNNAHe9swZlJwofbokOAbn6Yo2tGj4 Tqeot3NMmN/CD5Hc+SzKTYaoFzkN3FcqWCxI0uwcUoZOYuAATmdpv+C5dFDsuQ/1hfvX Hleg== X-Forwarded-Encrypted: i=1; AJvYcCWp2BFwQmIhlVVSiQ29APHNSJt2QCF4XhyuMryyfEihMlTSYxl7QVuPEXuTI/9WcI1+xId4ekvtVTa8COY=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+CSJTjBNeYwXL0p9Ttf5wcXXl14t/8PamE9J3gF+VYDm0b8+k iWHX2+g+p9f6FWEjCX2tlsWsO5cZnKLc98YtGTe6ybeXTP4tgdljcQiZnpzmo9qIwBmpT6PrCUM Kf/CATS8c/Iss98BLtClDdLxXw58MeXKZpqmTq3ZlId56NUKjOgcBjMyRP14AayPWEJg= X-Gm-Gg: ATEYQzxDaGwsPBA760lfhrpNC23Zi1srlQ9Ukb5/jmqdrC4w1Vn/uM/bob9vlmgoN2g WYjNVg0XrcOzKveoTIGD8i3aPOU7Zrq8TsrMvfyP4QsE/khBLLcc5tYxi98F1kieiB4KA9e1/r4 g1NOSogeZ4E31uOvYCRBlMoORStNSLv2HqmOEVhiHV2mkF9/SRijLmXrKW0rn9+ec5mCsTVl4OY jfoR4XB4hQOvhkAjpwNXL2iM1xeTr/TlhvANWTvthQCbWAQU0m/ghoVo60MN2Q4F0EEZljHLI4r eZ3Js+yhaC8dh7HxbQUlTcyYgIuWOJ/Boxru8yH4S0S3sxyMbfOj+SAorumSHxVoC32O8+EwVAU IxMwC8ns+yOu9ZAZm9EOrieLi5W3Q2J6yqvRdSyhPX6B0 X-Received: by 2002:a05:620a:448b:b0:8cd:8a55:5118 with SMTP id af79cd13be357-8cda1a3171emr523156485a.43.1773260268048; Wed, 11 Mar 2026 13:17:48 -0700 (PDT) X-Received: by 2002:a05:620a:448b:b0:8cd:8a55:5118 with SMTP id af79cd13be357-8cda1a3171emr523152485a.43.1773260267614; Wed, 11 Mar 2026 13:17:47 -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.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2026 13:17:46 -0700 (PDT) From: Krzysztof Kozlowski Date: Wed, 11 Mar 2026 21:17:30 +0100 Subject: [PATCH 6/7] drm/msm/hdmi_bridge: 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-6-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=8132; i=krzysztof.kozlowski@oss.qualcomm.com; h=from:subject:message-id; bh=HFld0pGzK+gfRaGsz97iqpHu891+p4M8R3L5EByimK0=; b=kA0DAAoBwTdm5oaLg9cByyZiAGmxzdui7HiIP9Vggsu0TMdxFdLFK2khXiuGgxNyOMroUlZ6S IkCMwQAAQoAHRYhBN3SYig9ERsjO264qME3ZuaGi4PXBQJpsc3bAAoJEME3ZuaGi4PXsAoP/iyF 1luTYLf7jLW+y9QDBWpy73TGPrtBKFqExUlgmBbL99PjWr2CB4b3GSS+NryZv7+A15KbIW+MG4Z sz5VXzhXfUPaYlE1s8RBYhj0A4Ci4MaxLGcZKTcz6f6Q/05OuNbIo5HSoKjUPRTsD/xjwmBJVXm +HwEwWdyGdW05uRObvHEWywOpBNUxp8CacqYdAivujq3xeJ9DtN6gbxnQft2P0bFetbBxVSejZO jIZyKZV4KUkwY0ArhJyacGRNlMuZrjh2srm1IPbeG+9m96c5PP6z+NYMjVItHA18MbV3DNKHPxW btgJvugnIWGEPu1fbPc1JVSq7KC3GhuXGEOMksEGWwPI9AuWsHSm/dmBgKqRZCBtgUdxPKO5CeF 4BF948n9OYSLWi/RBEN1VLTQgZ83tpVhOv+ArYVYHpGAwVgm7kFH8fMV4UzZg+S8dX31uoxmNPn 5/QEyAFUP8SQydzGlCId/r13yaoD6JpCYv56db9+cVY7La28vs+rTyqMflcb0taVHaCKG6MkwLN Y8k4I1K3nPLv76EiSUy3jnCg73UXSjdvgeqX3KOY01/s8n+k4U4IcqNA6nhc20x5pcaMomqOUp/ fsB75aYVKHh8a05yuWyD9d9xP0WEy5ByopKcbRHLqak8TEApdjK+XX9A+iO6Ef7t/fN+eUQMGPM sX5VK X-Developer-Key: i=krzysztof.kozlowski@oss.qualcomm.com; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDE3MiBTYWx0ZWRfX5S4NoYCaXwbL YlaG2MBLe1KLH4kU7VoNrr1HmFw07ziDznfo5jcLBdUM5XvfL0DGqyYV/hor1tYs5Yz8IqN2qjd oC7VF1iu21DcpDXkQgeK4uCOzVNHF795IUHN6LQo6C/GbvqQO/u8F/eaP8JuXpYobfKkEmKvdWK 44flujvCShT2A7mqVRO3kyg5tU6AtTg4f8rSno8LZwCEq6RJD/t9fC0fj+2VCa7y05aBXrjInMO XreLtfjw5Tx3XeQRQxXn1VzaB2ic8mf7RkNhGg6rnSXDJnnDeOySHCflAPA74PkvNGRLZIjNdLa bXFSybOJfYUvLqpTYFFC2B+rqStPEFTshVDupRyOdNXvRb512O2WpMFVnERQWGMGZ2JEbE0t6sU GHjhrahqXYC25ms0h9f5Kmq+8NiOqUzwyiBdIrpZcQdnZozPeqKfJl6PgvT5w7KEyFz8WJdV8cq TGWAx1frdaFeprU5v1g== X-Proofpoint-GUID: GddFFmWRakArsYG5ifSJg0TLLLHtx72m X-Proofpoint-ORIG-GUID: GddFFmWRakArsYG5ifSJg0TLLLHtx72m X-Authority-Analysis: v=2.4 cv=Cq+ys34D c=1 sm=1 tr=0 ts=69b1cdec cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=gOEeR9iKwsj33Yj5oN/cWg==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=aOjUM9GFJvKfr9THBUUA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 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 phishscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 suspectscore=0 adultscore=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.h | 19 +++++++ drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 98 ++++++++++++++----------------= ---- 2 files changed, 60 insertions(+), 57 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdm= i.h index 49433f7727c3..436d4f9fe346 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -112,6 +112,25 @@ static inline u32 hdmi_read(struct hdmi *hdmi, u32 reg) return readl(hdmi->mmio + reg); } =20 +static inline void hdmi_clear_bits(struct hdmi *hdmi, u32 reg, u32 mask) +{ + u32 val; + + val =3D hdmi_read(hdmi, reg); + val &=3D ~mask; + hdmi_write(hdmi, reg, val); +} + +static inline void hdmi_update_bits(struct hdmi *hdmi, u32 reg, u32 mask, = u32 data) +{ + u32 val; + + val =3D hdmi_read(hdmi, reg); + val &=3D ~mask; + val |=3D data & mask; + hdmi_write(hdmi, reg, val); +} + static inline u32 hdmi_qfprom_read(struct hdmi *hdmi, u32 reg) { return readl(hdmi->qfprom_mmio + reg); diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/h= dmi/hdmi_bridge.c index a9eb6489c520..b6ca334fb9fe 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -58,16 +58,13 @@ static int msm_hdmi_bridge_clear_avi_infoframe(struct d= rm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - u32 val; =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val &=3D ~(HDMI_INFOFRAME_CTRL0_AVI_SEND | - HDMI_INFOFRAME_CTRL0_AVI_CONT); - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val); + hdmi_clear_bits(hdmi, REG_HDMI_INFOFRAME_CTRL0, + HDMI_INFOFRAME_CTRL0_AVI_SEND | + HDMI_INFOFRAME_CTRL0_AVI_CONT); =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &=3D ~HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE__MASK; - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL1, val); + hdmi_clear_bits(hdmi, REG_HDMI_INFOFRAME_CTRL1, + HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE__MASK); =20 return 0; } @@ -76,18 +73,15 @@ static int msm_hdmi_bridge_clear_audio_infoframe(struct= drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - u32 val; =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val &=3D ~(HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_UPDATE); - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val); + hdmi_clear_bits(hdmi, REG_HDMI_INFOFRAME_CTRL0, + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_UPDATE); =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &=3D ~HDMI_INFOFRAME_CTRL1_AUDIO_INFO_LINE__MASK; - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL1, val); + hdmi_clear_bits(hdmi, REG_HDMI_INFOFRAME_CTRL1, + HDMI_INFOFRAME_CTRL1_AUDIO_INFO_LINE__MASK); =20 return 0; } @@ -96,13 +90,11 @@ static int msm_hdmi_bridge_clear_spd_infoframe(struct d= rm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - u32 val; =20 - val =3D hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val &=3D ~(HDMI_GEN_PKT_CTRL_GENERIC1_SEND | - HDMI_GEN_PKT_CTRL_GENERIC1_CONT | - HDMI_GEN_PKT_CTRL_GENERIC1_LINE__MASK); - hdmi_write(hdmi, REG_HDMI_GEN_PKT_CTRL, val); + hdmi_clear_bits(hdmi, REG_HDMI_GEN_PKT_CTRL, + HDMI_GEN_PKT_CTRL_GENERIC1_SEND | + HDMI_GEN_PKT_CTRL_GENERIC1_CONT | + HDMI_GEN_PKT_CTRL_GENERIC1_LINE__MASK); =20 return 0; } @@ -111,14 +103,12 @@ static int msm_hdmi_bridge_clear_hdmi_infoframe(struc= t drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; - u32 val; =20 - val =3D hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val &=3D ~(HDMI_GEN_PKT_CTRL_GENERIC0_SEND | - HDMI_GEN_PKT_CTRL_GENERIC0_CONT | - HDMI_GEN_PKT_CTRL_GENERIC0_UPDATE | - HDMI_GEN_PKT_CTRL_GENERIC0_LINE__MASK); - hdmi_write(hdmi, REG_HDMI_GEN_PKT_CTRL, val); + hdmi_clear_bits(hdmi, REG_HDMI_GEN_PKT_CTRL, + HDMI_GEN_PKT_CTRL_GENERIC0_SEND | + HDMI_GEN_PKT_CTRL_GENERIC0_CONT | + HDMI_GEN_PKT_CTRL_GENERIC0_UPDATE | + HDMI_GEN_PKT_CTRL_GENERIC0_LINE__MASK); =20 return 0; } @@ -129,7 +119,6 @@ static int msm_hdmi_bridge_write_avi_infoframe(struct d= rm_bridge *bridge, struct hdmi_bridge *hdmi_bridge =3D to_hdmi_bridge(bridge); struct hdmi *hdmi =3D hdmi_bridge->hdmi; u32 buf[4] =3D {}; - u32 val; int i; =20 if (len !=3D HDMI_INFOFRAME_SIZE(AVI) || len - 3 > sizeof(buf)) { @@ -153,15 +142,13 @@ static int msm_hdmi_bridge_write_avi_infoframe(struct= drm_bridge *bridge, for (i =3D 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_AVI_INFO(i), buf[i]); =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val |=3D HDMI_INFOFRAME_CTRL0_AVI_SEND | - HDMI_INFOFRAME_CTRL0_AVI_CONT; - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val); + hdmi_update_bits(hdmi, REG_HDMI_INFOFRAME_CTRL0, + HDMI_INFOFRAME_CTRL0_AVI_SEND | HDMI_INFOFRAME_CTRL0_AVI_CONT, + HDMI_INFOFRAME_CTRL0_AVI_SEND | HDMI_INFOFRAME_CTRL0_AVI_CONT); =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &=3D ~HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE__MASK; - val |=3D HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE(AVI_IFRAME_LINE_NUMBER); - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL1, val); + hdmi_update_bits(hdmi, REG_HDMI_INFOFRAME_CTRL1, + HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE__MASK, + HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE(AVI_IFRAME_LINE_NUMBER)); =20 return 0; } @@ -193,12 +180,11 @@ static int msm_hdmi_bridge_write_audio_infoframe(stru= ct drm_bridge *bridge, buffer[9] << 16 | buffer[10] << 24); =20 - val =3D hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val |=3D HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE | - HDMI_INFOFRAME_CTRL0_AUDIO_INFO_UPDATE; - hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val); + val =3D HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE | + HDMI_INFOFRAME_CTRL0_AUDIO_INFO_UPDATE; + hdmi_update_bits(hdmi, REG_HDMI_INFOFRAME_CTRL0, val, val); =20 return 0; } @@ -231,11 +217,10 @@ static int msm_hdmi_bridge_write_spd_infoframe(struct= drm_bridge *bridge, for (i =3D 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_GENERIC1(i), buf[i]); =20 - val =3D hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val |=3D HDMI_GEN_PKT_CTRL_GENERIC1_SEND | - HDMI_GEN_PKT_CTRL_GENERIC1_CONT | - HDMI_GEN_PKT_CTRL_GENERIC1_LINE(SPD_IFRAME_LINE_NUMBER); - hdmi_write(hdmi, REG_HDMI_GEN_PKT_CTRL, val); + val =3D HDMI_GEN_PKT_CTRL_GENERIC1_SEND | + HDMI_GEN_PKT_CTRL_GENERIC1_CONT | + HDMI_GEN_PKT_CTRL_GENERIC1_LINE(SPD_IFRAME_LINE_NUMBER); + hdmi_update_bits(hdmi, REG_HDMI_GEN_PKT_CTRL, val, val); =20 return 0; } @@ -269,12 +254,11 @@ static int msm_hdmi_bridge_write_hdmi_infoframe(struc= t drm_bridge *bridge, for (i =3D 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_GENERIC0(i), buf[i]); =20 - val =3D hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val |=3D HDMI_GEN_PKT_CTRL_GENERIC0_SEND | - HDMI_GEN_PKT_CTRL_GENERIC0_CONT | - HDMI_GEN_PKT_CTRL_GENERIC0_UPDATE | - HDMI_GEN_PKT_CTRL_GENERIC0_LINE(VENSPEC_IFRAME_LINE_NUMBER); - hdmi_write(hdmi, REG_HDMI_GEN_PKT_CTRL, val); + val =3D HDMI_GEN_PKT_CTRL_GENERIC0_SEND | + HDMI_GEN_PKT_CTRL_GENERIC0_CONT | + HDMI_GEN_PKT_CTRL_GENERIC0_UPDATE | + HDMI_GEN_PKT_CTRL_GENERIC0_LINE(VENSPEC_IFRAME_LINE_NUMBER); + hdmi_update_bits(hdmi, REG_HDMI_GEN_PKT_CTRL, val, val); =20 return 0; } --=20 2.51.0