From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 590C61125893 for ; Wed, 11 Mar 2026 20:17:54 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8DC3610E927; Wed, 11 Mar 2026 20:17:53 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="OcPc29Xo"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SwEZG91V"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by gabe.freedesktop.org (Postfix) with ESMTPS id 998ED10E925 for ; Wed, 11 Mar 2026 20:17:49 +0000 (UTC) Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62BFpH4Y3602776 for ; Wed, 11 Mar 2026 20:17:48 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-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cubd4rvx0-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-qt1-f199.google.com with SMTP id d75a77b69052e-50937cf66b5so34056031cf.3 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=lists.freedesktop.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=SwEZG91VHjYw9wVmqQSReP393hcd6/3WalArjVXtXSmF6LdkLNol9ehiuUUfkzqlZp AqwJfheJ2+sESU2CU4WHwbIs2DLOAPQ6JdvQbGOYozAuaMfisApNMbfKrblhT3lmpukz oHz8e+w+H5tznNoVX8w/f9qa/q4aaLIrA/Mfw9rnUE3CNR6nZUZ23N5Xl76h5RSAcYkH gTu9TJ5sVL6ntSXfE0c5UZp/NJWg5AMgq6WmDSZBW3Tnui7pCYyuB7fSDKsM0d6e2j4R liupGyUXVUA9Ns/4s85Q3IuCmEz8vvuXuWQHe3NGiAAPzVKOR0oFmBXfQfrH69yrP/g0 C3Lw== 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=nwjTo/rn3cqhPK5F1xWt6vHQm7p9+qCQp8d/SmJoEis0p1NHKWFadyv0VCOxW7m9PY QxMZwSTpU8PfcNIWjgzAW6b0DTm9Beo3v1lV96xH4ok5+xUcad05fWbPYAeOolasZASg jDB4ShfzhXNjn5KwWNfEMXRIfxW5DE+cemGkdyb1afvGEsm1ZJYYhxz/mAd7APQkWJiw KihT52M985ptfuk96WH2fDmYXBACO0bASTq1A8AUWwgOxAqQpfSXwOnwHE0rH3hJACUO VMrIUOTX38Ql9NHG1YawoHPJCG85hqoXl3+b8m3YX6AbhNlVWyKeou1v7apQZ+YqmqON Lh/Q== X-Forwarded-Encrypted: i=1; AJvYcCVKkYWI71RA0B7ECqGyIZwKsz/76/otWPmI0fDG2cif6u9UZxADOgsWrE203f+qEJx7beVjqEIQDuI=@lists.freedesktop.org X-Gm-Message-State: AOJu0YxapMFkn1HJZYnNDrfmBsuGMxpRHV+b1d31mBAcVihL5+U6vYko MBYSKe3uVhf5FKLx7oSc4VfHQxRywbrdrYSZUVujdgGW2hzO9BCmyXGl2KQ2aK8HsQu086YE53Q 1dljvXnyQ4fVom8u7O1hiBbSfWPQmThDF+uKhMiMtHVyDh0Ln14pULve/zztYNzLn+RcTYQE= X-Gm-Gg: ATEYQzxetl3hprPzOWtlJ5sZzxM5GxEzWYm19OusLSFon7nWg++tXKhp3nMmhCK8m6Q BK58fWBmFh/+RQVYMirJ+g0yB7r43MdBvCbAyn/XYLVfWoVmX6Mse3oxj17eNps4Cdd/zoYJMV/ maZVKTqJkPJ2fnBWTbOE1PJgWDaonPtkayAcgBqYjJQbRJwasC/sya8bREdsu2uc/WGCOAdUkj3 4Z/k1yIbpo/G7cITVcoKD0aj75bRIaTNkXQMG7WHL3nyVhlWgxbZ+WKmkqE03AcfiVS1lFgAF4N rY7TqK7xfXIOtP++BEcn3+47s9uMUvdddaTjw7iazgplSeg6a+FX2XAg68JavJdueyDtTd1Wn7f OClHRa/rtz89DLO9C8Lqa94L27Ozlc2huU9kJS5bz40Ps X-Received: by 2002:a05:620a:448b:b0:8cd:8a55:5118 with SMTP id af79cd13be357-8cda1a3171emr523156885a.43.1773260268059; 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 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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-ORIG-GUID: f8ydYA55XWfazaLLHBLen2IA5BaI6oZF X-Proofpoint-GUID: f8ydYA55XWfazaLLHBLen2IA5BaI6oZF X-Authority-Analysis: v=2.4 cv=QLBlhwLL c=1 sm=1 tr=0 ts=69b1cdec cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=gOEeR9iKwsj33Yj5oN/cWg==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=aOjUM9GFJvKfr9THBUUA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDE3MSBTYWx0ZWRfX+YjZ8WPV04B0 H6g++TGa2LWhGbuz2KUTQVG7kjiwH5bdYJfLHdNceNcG/qi8STgdNgBaFIAGvPVrnGO5yfV02pW lmlxO6+YtxfnHdOUyhBvKnikRADe6/Wy/CTEOo6xLIRP/CkTsX1QDG5ZIZD08jWv/kpmw8GAnKM 8dWc+rvG0v3R952sPtD87/4p9OMMOHsw/jPu7WEbPhNJTvHx8Q3BNkgF7S8MgPp+Uy6lKHvZX1R HKFjjJp2K1iPQJngHVmnv2N/Jhp7UzCUIyZH0Q7BTBwsIKmIAG4UxzWqoFIf/WCYU7LBANx1v+R haloGhtcQ4zAtf7/xHcJgVhKaqQTfGvMa2Zlo1iFwdEUpKXZR9CIWgni2oKuYwd53gF5zMurg8u 8x3n5SIitCN+qNsOcNsKraIvXomPQzRhq26eb+y1/3OS595QZ2NLeS88PnQpZFyp62aD0Np7yPT NGGIip9bPVP+eV+qcnA== 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 priorityscore=1501 suspectscore=0 bulkscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110171 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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 --- 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/hdmi.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); } +static inline void hdmi_clear_bits(struct hdmi *hdmi, u32 reg, u32 mask) +{ + u32 val; + + val = hdmi_read(hdmi, reg); + val &= ~mask; + hdmi_write(hdmi, reg, val); +} + +static inline void hdmi_update_bits(struct hdmi *hdmi, u32 reg, u32 mask, u32 data) +{ + u32 val; + + val = hdmi_read(hdmi, reg); + val &= ~mask; + val |= 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/hdmi/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 drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); struct hdmi *hdmi = hdmi_bridge->hdmi; - u32 val; - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val &= ~(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); - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &= ~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); return 0; } @@ -76,18 +73,15 @@ static int msm_hdmi_bridge_clear_audio_infoframe(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); struct hdmi *hdmi = hdmi_bridge->hdmi; - u32 val; - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val &= ~(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); - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &= ~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); return 0; } @@ -96,13 +90,11 @@ static int msm_hdmi_bridge_clear_spd_infoframe(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); struct hdmi *hdmi = hdmi_bridge->hdmi; - u32 val; - val = hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val &= ~(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); return 0; } @@ -111,14 +103,12 @@ static int msm_hdmi_bridge_clear_hdmi_infoframe(struct drm_bridge *bridge) { struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); struct hdmi *hdmi = hdmi_bridge->hdmi; - u32 val; - val = hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val &= ~(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); return 0; } @@ -129,7 +119,6 @@ static int msm_hdmi_bridge_write_avi_infoframe(struct drm_bridge *bridge, struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); struct hdmi *hdmi = hdmi_bridge->hdmi; u32 buf[4] = {}; - u32 val; int i; if (len != 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 = 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_AVI_INFO(i), buf[i]); - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val |= 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); - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1); - val &= ~HDMI_INFOFRAME_CTRL1_AVI_INFO_LINE__MASK; - val |= 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)); return 0; } @@ -193,12 +180,11 @@ static int msm_hdmi_bridge_write_audio_infoframe(struct drm_bridge *bridge, buffer[9] << 16 | buffer[10] << 24); - val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0); - val |= 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 = 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); return 0; } @@ -231,11 +217,10 @@ static int msm_hdmi_bridge_write_spd_infoframe(struct drm_bridge *bridge, for (i = 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_GENERIC1(i), buf[i]); - val = hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val |= 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 = 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); return 0; } @@ -269,12 +254,11 @@ static int msm_hdmi_bridge_write_hdmi_infoframe(struct drm_bridge *bridge, for (i = 0; i < ARRAY_SIZE(buf); i++) hdmi_write(hdmi, REG_HDMI_GENERIC0(i), buf[i]); - val = hdmi_read(hdmi, REG_HDMI_GEN_PKT_CTRL); - val |= 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 = 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); return 0; } -- 2.51.0