From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 72C281E7C11 for ; Sat, 1 Mar 2025 20:39:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861593; cv=none; b=i6ddGfpxQB+W7FmPlmV1bJKtMjkoPb94p1Ee5hMqyL/T8UMKJrL24AcJoXQ71QcIwf6c7UHdj4JP27puQFP6gYWhSstxaEY+uudQO3KeE2gbs/qxttQxOTD+8o/H2DPATB557o22qf2aWFRxoCHJHMJq1f/26CmQqQXVw7CghGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861593; c=relaxed/simple; bh=NgOVGdCmTC+8UjqfiO/VMFR2mESsUZ4pRU644XqkABc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LZoSC/K7XoKqVYFfNelwl/kC/gZM0+CtZ4FAY6SQBMzqlpHQsFV5V/xO1F+W2ENhMQ51HfJ8HatsO29/1ypFokj4WEgHRtoePrxCbxjaKlpJVHQ2/YpZpf5I8wpw8B81d8vovYNtbRKPJjGRAvc/Vb5mGb3ZZKhAMZEPVI83Esw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=BWNQjeLG; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="BWNQjeLG" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-30613802a59so36770181fa.0 for ; Sat, 01 Mar 2025 12:39:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861589; x=1741466389; 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=gcEPpUecbQnXiS5K2IATdiHhzAIF4FnvVg3Y9Uy8iSM=; b=BWNQjeLGHWe7hS6a59HRs2Gz8jWeG5dMl9np3DJTSCs6yDmeNPxfGdMQVOvdNIjwuU JNz94qZWzEbDMDWVMDwECa62B0kfODjIFzN0QYpjOgIc6orsdvN3xCtv3ndQB5LVrgGX CvVokB2G0VaoDtHrm+nK5sUMIf8llO9j/mYzL3gkE/B9H2P5bvuE0zYMlSSSE6yMywQw QA8q1W4r+2mX+J2HBDrnihul7g/IAXxmPUPG9Vxh/YfQsgEZJ0j5ItmAZdXh3f9onF/w 4Qp9+8X9zvFHccmBGSdofyM9/L1aBz5mBWUQK0vtyGyASMK95bPZzjcie9I+dG5Rq937 BOIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861589; x=1741466389; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gcEPpUecbQnXiS5K2IATdiHhzAIF4FnvVg3Y9Uy8iSM=; b=BHZgpl38kRWl53reTHRGjBsGCgaDM1XVXLQvgNSUSX3Sl6JB3jTb1/2sDencY9BPvf uNFGluafvyMYGgWy59qzjQTX9zYkDcybcLJq8ylob/68/LLZRGPN57N9Tg0+kjRgHg+l 3iKIaijqxob2xwg8zAGEYEyTrUAvhCOyu+Jrozq7Lo/FAfVALMKifUSo7CPtlwKL8PIQ UMLOlh5Whk0DzzDzHAZZxMDRyC2X/i9lroLqcabG/TzxcgHiVvq5ZoCHuWE4PZ4G6gJA uulxciD6c/hU6cp2HiNl2g/Qs7q9RImU3vFr/BdmqTK4D35Ya6bZxX13wZ1pVAeFV3Br 3uaQ== X-Forwarded-Encrypted: i=1; AJvYcCXHEc0yr4v3EHm6FK4sr95uUGDU1Z6ZaJ/raXp5PXqqWEFINn2k/n0Hd3LJHXPWekD2PtSIvIwfry0mnrQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyMXNSKW+6nD4O1FzunAA4LupUkk6BXJnDU6TqBdhjRf+Qq11R3 7pQIpScxR3w9ycoUwMeu2C4egy+0qHCaAj4VBWqNLXzk113pZNlM5PZydfp65RI= X-Gm-Gg: ASbGncv8IRPnhptZH6jt5VV9X+yxMP4Le0rRjDGEioi065OcZ2mPsnxlz32iRE6rJ2H CaqmyH7Hw3XVeaqlWkUZlbF7ga7MrDwAWnE/gcwjg73m8jYcz5/W/Ml8Zb3DDC30X9CFnhciTkP JPMrI7IFtMGYNa9byxL15W9X9WliqyYPicH34zA8iAlOFq4qmrRmGsEQmD6wNQFFPXi4+pshwvb vRi9O1z97n20EUreMQj/3UFoBIYFDwlDHk7c66u4pubTkOkz8hLJnKLhg0DEMEJBPvqYjGvRJjl IfqD3TjBOfrGSXsTQnx4zhq/ZJ8AUW4blEgGiY7WgC3pAA1UsESr X-Google-Smtp-Source: AGHT+IFbIBFxy1B6SY0xD2HgvbsOY0hx7R3yAueDBbzal97DNmUgO5PzUJvmVDdNOItvYmjbpnMuQw== X-Received: by 2002:a05:651c:503:b0:30b:b28d:f0a7 with SMTP id 38308e7fff4ca-30bb28df324mr1085351fa.18.1740861589428; Sat, 01 Mar 2025 12:39:49 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:48 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:36 +0200 Subject: [PATCH RFC v2 1/7] drm/display: dp: implement new access helpers 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: <20250301-drm-rework-dpcd-access-v2-1-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6615; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=NgOVGdCmTC+8UjqfiO/VMFR2mESsUZ4pRU644XqkABc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnw3CPwOBSZDyus3kp03MXdqlegNWQAa4zwNzmJ 0cZIAcuGLOJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ8NwjwAKCRCLPIo+Aiko 1aRvB/99tG7xDSt1Yr4yCrGCTSBYNU9Ye0p7gfAblguluBCoNXaduaIX+1zoQzVkeZ+GVrzK/Xc 4pdDdnxddbCt3Vm6yoKmAVR0v5tgM5iCnS9Tgt8b22zgZCPf3GFQyDpHWSPNpaOAcCxPYntqFUq AfWvGTmt7fszWiM1wFvlZJ6cZtMJuLhaCth1m64pfwIOJQzTfSphoJyIKTq4Zvgdc8g5ZKkXeEQ tfRrv3yAPq0duIxh/WY3hAcuFRkupFNc5D4HaDIr9I7Fp4FBhV2FeaCrTPmDkpa5M2vu6s0d27E 1EkuVR1kj5ocWPst+uTg+zoz7U6QawXu8BwJMs/N1+znS1Xq X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Existing DPCD access functions return an error code or the number of bytes being read / write in case of partial access. However a lot of drivers either (incorrectly) ignore partial access or mishandle error codes. In other cases this results in a boilerplate code which compares returned value with the size. Implement new set of DPCD access helpers, which ignore partial access, always return 0 or an error code. Suggested-by: Jani Nikula Signed-off-by: Dmitry Baryshkov Acked-by: Jani Nikula --- drivers/gpu/drm/display/drm_dp_helper.c | 4 ++ include/drm/display/drm_dp_helper.h | 92 +++++++++++++++++++++++++++++= +++- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/disp= lay/drm_dp_helper.c index dbce1c3f49691fc687fee2404b723c73d533f23d..e43a8f4a252dae22eeaae1f4ca9= 4da064303033d 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -704,6 +704,8 @@ EXPORT_SYMBOL(drm_dp_dpcd_set_powered); * function returns -EPROTO. Errors from the underlying AUX channel transf= er * function, with the exception of -EBUSY (which causes the transaction to * be retried), are propagated to the caller. + * + * In most of the cases you want to use drm_dp_dpcd_read_data() instead. */ ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size) @@ -752,6 +754,8 @@ EXPORT_SYMBOL(drm_dp_dpcd_read); * function returns -EPROTO. Errors from the underlying AUX channel transf= er * function, with the exception of -EBUSY (which causes the transaction to * be retried), are propagated to the caller. + * + * In most of the cases you want to use drm_dp_dpcd_write_data() instead. */ ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size) diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_= dp_helper.h index 5ae4241959f24e2c1fb581d7c7d770485d603099..c5be44d72c9a04474f6c795e03b= f02bf08f5eaef 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -527,6 +527,64 @@ ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsig= ned int offset, ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size); =20 +/** + * drm_dp_dpcd_read_data() - read a series of bytes from the DPCD + * @aux: DisplayPort AUX channel (SST or MST) + * @offset: address of the (first) register to read + * @buffer: buffer to store the register values + * @size: number of bytes in @buffer + * + * Returns zero (0) on success, or a negative error + * code on failure. -EIO is returned if the request was NAKed by the sink = or + * if the retry count was exceeded. If not all bytes were transferred, this + * function returns -EPROTO. Errors from the underlying AUX channel transf= er + * function, with the exception of -EBUSY (which causes the transaction to + * be retried), are propagated to the caller. + */ +static inline int drm_dp_dpcd_read_data(struct drm_dp_aux *aux, + unsigned int offset, + void *buffer, size_t size) +{ + int ret; + + ret =3D drm_dp_dpcd_read(aux, offset, buffer, size); + if (ret < 0) + return ret; + if (ret < size) + return -EPROTO; + + return 0; +} + +/** + * drm_dp_dpcd_write_data() - write a series of bytes to the DPCD + * @aux: DisplayPort AUX channel (SST or MST) + * @offset: address of the (first) register to write + * @buffer: buffer containing the values to write + * @size: number of bytes in @buffer + * + * Returns zero (0) on success, or a negative error + * code on failure. -EIO is returned if the request was NAKed by the sink = or + * if the retry count was exceeded. If not all bytes were transferred, this + * function returns -EPROTO. Errors from the underlying AUX channel transf= er + * function, with the exception of -EBUSY (which causes the transaction to + * be retried), are propagated to the caller. + */ +static inline int drm_dp_dpcd_write_data(struct drm_dp_aux *aux, + unsigned int offset, + void *buffer, size_t size) +{ + int ret; + + ret =3D drm_dp_dpcd_write(aux, offset, buffer, size); + if (ret < 0) + return ret; + if (ret < size) + return -EPROTO; + + return 0; +} + /** * drm_dp_dpcd_readb() - read a single byte from the DPCD * @aux: DisplayPort AUX channel @@ -534,7 +592,8 @@ ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsig= ned int offset, * @valuep: location where the value of the register will be stored * * Returns the number of bytes transferred (1) on success, or a negative - * error code on failure. + * error code on failure. In most of the cases you should be using + * drm_dp_dpcd_read_byte() instead */ static inline ssize_t drm_dp_dpcd_readb(struct drm_dp_aux *aux, unsigned int offset, u8 *valuep) @@ -549,7 +608,8 @@ static inline ssize_t drm_dp_dpcd_readb(struct drm_dp_a= ux *aux, * @value: value to write to the register * * Returns the number of bytes transferred (1) on success, or a negative - * error code on failure. + * error code on failure. In most of the cases you should be using + * drm_dp_dpcd_write_byte() instead */ static inline ssize_t drm_dp_dpcd_writeb(struct drm_dp_aux *aux, unsigned int offset, u8 value) @@ -557,6 +617,34 @@ static inline ssize_t drm_dp_dpcd_writeb(struct drm_dp= _aux *aux, return drm_dp_dpcd_write(aux, offset, &value, 1); } =20 +/** + * drm_dp_dpcd_read_byte() - read a single byte from the DPCD + * @aux: DisplayPort AUX channel + * @offset: address of the register to read + * @valuep: location where the value of the register will be stored + * + * Returns zero (0) on success, or a negative error code on failure. + */ +static inline int drm_dp_dpcd_read_byte(struct drm_dp_aux *aux, + unsigned int offset, u8 *valuep) +{ + return drm_dp_dpcd_read_data(aux, offset, valuep, 1); +} + +/** + * drm_dp_dpcd_write_byte() - write a single byte to the DPCD + * @aux: DisplayPort AUX channel + * @offset: address of the register to write + * @value: value to write to the register + * + * Returns zero (0) on success, or a negative error code on failure. + */ +static inline int drm_dp_dpcd_write_byte(struct drm_dp_aux *aux, + unsigned int offset, u8 value) +{ + return drm_dp_dpcd_write_data(aux, offset, &value, 1); +} + int drm_dp_read_dpcd_caps(struct drm_dp_aux *aux, u8 dpcd[DP_RECEIVER_CAP_SIZE]); =20 --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D02B51E98F3 for ; Sat, 1 Mar 2025 20:39:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861596; cv=none; b=VKpuwTt4pLQiyFeuomHNimNXtkEW0RQacefML0DszLSUm43fEQmPKaQkT32dH2ScjOXsuYGt7pQ/6HHg04jc+ty957t6Q/SwCi5WP4126SmA8kAjRCB2DepEMh6h9JiRRg9B66tzjl6RdAVwjcd+uttqhRp1ni5+rAHKRMMazBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861596; c=relaxed/simple; bh=fqEuYKPyG9MQ813p/7tvsxYx0yGs7Qs1X2H3qVKnjMA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PQJG+ZTKCls1taL+UFYYrd1zDOuLKc1+o3OzXQ4dnHnhwLCb9i5uFvl1rBQZ7l4nyUvzmrux/0E2NwgbA1aDqXQvWdTnJtyC2FBmi/JW1TDgZnK+E2ZW4LjRwCjMyYLSzorplwSkwjsBCOa/Qn6L3Q7vaFfVTCIxd0R6UP0fPhE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=E/14kByD; arc=none smtp.client-ip=209.85.208.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="E/14kByD" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-30795988ebeso35340311fa.3 for ; Sat, 01 Mar 2025 12:39:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861592; x=1741466392; 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=2IasPYFyck61jInm/OvtsZeqbKrjdFXhpVOZmbiEdng=; b=E/14kByDsdWJ+pcAJn9nGQ/Bss8IKhUxjCM4QRHimnIPSv3biYK6HuQvoAKuMrKVuQ FBWHi/Jy5KG2DcxjMzF3/pAp51hsDgbQN1oycez29Kz0AHu3eezlTv2SXqOD6UJC2wGX CPtlbfC9f+ojPBLXDGX6rX5rNpdlS14/t4A686v9KVI3QURZYNwvQBOcwzO6gIHnqmew RvdkZNaenjnypiIrbpQMYKKHJCMyYZ47m6BwLutJk7RtGYtRmt3nzz4/HTIT4omEazCk gh9hDutROgtfXbcNCYdB0vdKl0Rc/a+t1/12VCdxASPKugSD62LzeqnRufv4SoN+Zsb9 EmIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861592; x=1741466392; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2IasPYFyck61jInm/OvtsZeqbKrjdFXhpVOZmbiEdng=; b=hZwOhu6R1D6DhZ68XfKFMtyLSUW6z6AXR8q2f8UksxjeI+szLNSiGXdNqEu6n+h1P9 dgyUarHhlijEaGCqUrjbDizoyZHZXRkVmsqRfvtIRzrdFxNOf+7apHD8VcpY4yXqKMWq 0pbZccXeYvaLEIG5JC3LOs/q22irxi2IKOMG+7sIbhlQ6fe+S+uf0sgHQYjrDatE0gH8 eREWIoJvBxr8rs49B1ioSMR5pDUgt82BO3XMR8foUMfOlx/hzbKiNM5eZdx9G3KMOJVu UYK9OIpIfONjw3BKVKBUGalAMhi36WKbfD/YfH1MV6lfG0RpYPdp179hFmdJkWOKrWdu cH8Q== X-Forwarded-Encrypted: i=1; AJvYcCUqCkv9UeYr5wZBydu01rVVFVFM+Y7QF9yJWOOeegLxoEvVJYF8ZQXAJRfwyGo/I0v2mTCrd0aXYk41+H8=@vger.kernel.org X-Gm-Message-State: AOJu0YzvrlM1UG+zqGgyEdYtBl4obWnbizBZ0GGd+9fGPCJDstizXGdK 09XCVRXB9m6Bve4NEW4bPEjvxWw0em0L4E63R4/L9ZXQD9TWpPYNfDRq43mdJDw= X-Gm-Gg: ASbGncuMbkfMLbz7uDCjk94zo1wuI8DMOc9wMUl+8uGpQEwUP8NukrNQeeES1mxskKZ kF5X56ccWtKTOCIAkTNro3bsDjFyJ1NDYccTrEqGmip8IaXH9mHdl71rlVY43Mf9riWtSBEqFQA M0uo/oEMU7pJLNIo3lRjZE07htpkK+IL+VE3+yJo/6OcOy5O2F8iIno8zsZgk/RMXy8KqNAiG3k wa7skKGGFD8NNeuvKV0TvOypbvLXRmIJ49DDQaTlNyQNWqPma1du9wekfthGV0e2B9pctEm3xfZ vR74jjTP2k7hsyQzE1pi1sI7lI7D5d2IUqCsF9h+UtIw6B2RGX4Z X-Google-Smtp-Source: AGHT+IFJVQbgrBHCjIss8jOcCxZN6e9kkaMqGbtzLVpIQCvuH3XlrYL4Rhaxz77IkpvF0MNjluJNRA== X-Received: by 2002:a2e:be03:0:b0:307:c829:f170 with SMTP id 38308e7fff4ca-30b932123edmr32476561fa.4.1740861591852; Sat, 01 Mar 2025 12:39:51 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:50 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:37 +0200 Subject: [PATCH RFC v2 2/7] drm/display: dp: change drm_dp_dpcd_read_link_status() return value 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: <20250301-drm-rework-dpcd-access-v2-2-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=10528; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=fqEuYKPyG9MQ813p/7tvsxYx0yGs7Qs1X2H3qVKnjMA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnw3CP7K2oBe/LOnAu7J2ncpdH11Dzua/ASKBuP 1kKufZnl3WJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ8NwjwAKCRCLPIo+Aiko 1fFFCACMOy6rLXbe4ghACJOx8Pe1yihQ14RjPE8DfZZN8iISKGjgnOOn7VF7fgbB/x/evwentc/ n8b4YlBCWJ2Xs2Ya3Co/7FfL8drmmurUtCXsZOtrIBLAscbyBZT8xhlK4i353Ltn5sAl0b4/HHP 78exoc44qNcd9UcxEwkTfc2cv0vLdMfCxnC4Yw+UKWTb87qUjH4fWOwCHqmhM5s4sanFnrA3U2F YrxtygRs8V+Uh6vxHUsO0ErUlbJ3FlkT+mPkYerRSeGfVnZ5bczSpdVcTXjnbEetDTLgl7IrcCc tZYuQC1wqtrT58OMQ8EFOyH36hUhv4BMPCSG/lwQHm5aofkx X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A drm_dp_dpcd_read_link_status() follows the "return error code or number of bytes read" protocol, with the code returning less bytes than requested in case of some errors. However most of the drivers interpreted that as "return error code in case of any error". Switch drm_dp_dpcd_read_link_status() to drm_dp_dpcd_read_data() and make it follow that protocol too. Signed-off-by: Dmitry Baryshkov Acked-by: Jani Nikula --- drivers/gpu/drm/amd/amdgpu/atombios_dp.c | 8 ++++---- .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +- drivers/gpu/drm/display/drm_dp_helper.c | 7 +++---- drivers/gpu/drm/hisilicon/hibmc/dp/dp_link.c | 4 ++-- drivers/gpu/drm/msm/dp/dp_ctrl.c | 24 +++++-------------= ---- drivers/gpu/drm/msm/dp/dp_link.c | 18 ++++++++-------- drivers/gpu/drm/radeon/atombios_dp.c | 8 ++++---- 7 files changed, 28 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c b/drivers/gpu/drm/amd= /amdgpu/atombios_dp.c index 521b9faab18059ed92ebb1dc9a9847e8426e7403..492813ab1b54197ba842075bc29= 09984c39bd5c1 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c +++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c @@ -458,8 +458,8 @@ bool amdgpu_atombios_dp_needs_link_train(struct amdgpu_= connector *amdgpu_connect u8 link_status[DP_LINK_STATUS_SIZE]; struct amdgpu_connector_atom_dig *dig =3D amdgpu_connector->con_priv; =20 - if (drm_dp_dpcd_read_link_status(&amdgpu_connector->ddc_bus->aux, link_st= atus) - <=3D 0) + if (drm_dp_dpcd_read_link_status(&amdgpu_connector->ddc_bus->aux, + link_status) < 0) return false; if (drm_dp_channel_eq_ok(link_status, dig->dp_lane_count)) return false; @@ -616,7 +616,7 @@ amdgpu_atombios_dp_link_train_cr(struct amdgpu_atombios= _dp_link_train_info *dp_i drm_dp_link_train_clock_recovery_delay(dp_info->aux, dp_info->dpcd); =20 if (drm_dp_dpcd_read_link_status(dp_info->aux, - dp_info->link_status) <=3D 0) { + dp_info->link_status) < 0) { DRM_ERROR("displayport link status failed\n"); break; } @@ -681,7 +681,7 @@ amdgpu_atombios_dp_link_train_ce(struct amdgpu_atombios= _dp_link_train_info *dp_i drm_dp_link_train_channel_eq_delay(dp_info->aux, dp_info->dpcd); =20 if (drm_dp_dpcd_read_link_status(dp_info->aux, - dp_info->link_status) <=3D 0) { + dp_info->link_status) < 0) { DRM_ERROR("displayport link status failed\n"); break; } diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 81fad14c2cd598045d989c7d51f292bafb92c144..8d5420a5b691180c4d051a450d5= d3d869a558d1a 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -2305,7 +2305,7 @@ static int cdns_mhdp_update_link_status(struct cdns_m= hdp_device *mhdp) * If everything looks fine, just return, as we don't handle * DP IRQs. */ - if (ret > 0 && + if (!ret && drm_dp_channel_eq_ok(status, mhdp->link.num_lanes) && drm_dp_clock_recovery_ok(status, mhdp->link.num_lanes)) goto out; diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/disp= lay/drm_dp_helper.c index e43a8f4a252dae22eeaae1f4ca94da064303033d..410be0be233ad94702af423262a= 7d98e21afbfeb 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -778,14 +778,13 @@ EXPORT_SYMBOL(drm_dp_dpcd_write); * @aux: DisplayPort AUX channel * @status: buffer to store the link status in (must be at least 6 bytes) * - * Returns the number of bytes transferred on success or a negative error - * code on failure. + * Returns a negative error code on failure or 0 on success. */ int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, u8 status[DP_LINK_STATUS_SIZE]) { - return drm_dp_dpcd_read(aux, DP_LANE0_1_STATUS, status, - DP_LINK_STATUS_SIZE); + return drm_dp_dpcd_read_data(aux, DP_LANE0_1_STATUS, status, + DP_LINK_STATUS_SIZE); } EXPORT_SYMBOL(drm_dp_dpcd_read_link_status); =20 diff --git a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_link.c b/drivers/gpu/drm= /hisilicon/hibmc/dp/dp_link.c index f6355c16cc0ab2e28408ab8a7246f4ca17710456..a3b78b0fd53ef854a54edf40fb3= 33766da88f1c6 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_link.c +++ b/drivers/gpu/drm/hisilicon/hibmc/dp/dp_link.c @@ -188,7 +188,7 @@ static int hibmc_dp_link_training_cr(struct hibmc_dp_de= v *dp) drm_dp_link_train_clock_recovery_delay(&dp->aux, dp->dpcd); =20 ret =3D drm_dp_dpcd_read_link_status(&dp->aux, lane_status); - if (ret !=3D DP_LINK_STATUS_SIZE) { + if (ret) { drm_err(dp->dev, "Get lane status failed\n"); return ret; } @@ -236,7 +236,7 @@ static int hibmc_dp_link_training_channel_eq(struct hib= mc_dp_dev *dp) drm_dp_link_train_channel_eq_delay(&dp->aux, dp->dpcd); =20 ret =3D drm_dp_dpcd_read_link_status(&dp->aux, lane_status); - if (ret !=3D DP_LINK_STATUS_SIZE) { + if (ret) { drm_err(dp->dev, "get lane status failed\n"); break; } diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index d8633a596f8da88cc55f60de80bec8999ffb07c8..69a26bb5fabd1c3077573ad5a11= 83ee69cf3b8cd 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -1100,20 +1100,6 @@ static bool msm_dp_ctrl_train_pattern_set(struct msm= _dp_ctrl_private *ctrl, return ret =3D=3D 1; } =20 -static int msm_dp_ctrl_read_link_status(struct msm_dp_ctrl_private *ctrl, - u8 *link_status) -{ - int ret =3D 0, len; - - len =3D drm_dp_dpcd_read_link_status(ctrl->aux, link_status); - if (len !=3D DP_LINK_STATUS_SIZE) { - DRM_ERROR("DP link status read failed, err: %d\n", len); - ret =3D -EINVAL; - } - - return ret; -} - static int msm_dp_ctrl_link_train_1(struct msm_dp_ctrl_private *ctrl, int *training_step) { @@ -1140,7 +1126,7 @@ static int msm_dp_ctrl_link_train_1(struct msm_dp_ctr= l_private *ctrl, for (tries =3D 0; tries < maximum_retries; tries++) { drm_dp_link_train_clock_recovery_delay(ctrl->aux, ctrl->panel->dpcd); =20 - ret =3D msm_dp_ctrl_read_link_status(ctrl, link_status); + ret =3D drm_dp_dpcd_read_link_status(ctrl->aux, link_status); if (ret) return ret; =20 @@ -1252,7 +1238,7 @@ static int msm_dp_ctrl_link_train_2(struct msm_dp_ctr= l_private *ctrl, for (tries =3D 0; tries <=3D maximum_retries; tries++) { drm_dp_link_train_channel_eq_delay(ctrl->aux, ctrl->panel->dpcd); =20 - ret =3D msm_dp_ctrl_read_link_status(ctrl, link_status); + ret =3D drm_dp_dpcd_read_link_status(ctrl->aux, link_status); if (ret) return ret; =20 @@ -1805,7 +1791,7 @@ static bool msm_dp_ctrl_channel_eq_ok(struct msm_dp_c= trl_private *ctrl) u8 link_status[DP_LINK_STATUS_SIZE]; int num_lanes =3D ctrl->link->link_params.num_lanes; =20 - msm_dp_ctrl_read_link_status(ctrl, link_status); + drm_dp_dpcd_read_link_status(ctrl->aux, link_status); =20 return drm_dp_channel_eq_ok(link_status, num_lanes); } @@ -1863,7 +1849,7 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) if (!msm_dp_catalog_link_is_connected(ctrl->catalog)) break; =20 - msm_dp_ctrl_read_link_status(ctrl, link_status); + drm_dp_dpcd_read_link_status(ctrl->aux, link_status); =20 rc =3D msm_dp_ctrl_link_rate_down_shift(ctrl); if (rc < 0) { /* already in RBR =3D 1.6G */ @@ -1888,7 +1874,7 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) if (!msm_dp_catalog_link_is_connected(ctrl->catalog)) break; =20 - msm_dp_ctrl_read_link_status(ctrl, link_status); + drm_dp_dpcd_read_link_status(ctrl->aux, link_status); =20 if (!drm_dp_clock_recovery_ok(link_status, ctrl->link->link_params.num_lanes)) diff --git a/drivers/gpu/drm/msm/dp/dp_link.c b/drivers/gpu/drm/msm/dp/dp_l= ink.c index 1a1fbb2d7d4f2afcaace85d97b744d03017d37ce..92a9077959b3ec10c2a529db1a0= e9fb3562aa5d3 100644 --- a/drivers/gpu/drm/msm/dp/dp_link.c +++ b/drivers/gpu/drm/msm/dp/dp_link.c @@ -714,21 +714,21 @@ static int msm_dp_link_parse_request(struct msm_dp_li= nk_private *link) =20 static int msm_dp_link_parse_sink_status_field(struct msm_dp_link_private = *link) { - int len; + int ret; =20 link->prev_sink_count =3D link->msm_dp_link.sink_count; - len =3D drm_dp_read_sink_count(link->aux); - if (len < 0) { + ret =3D drm_dp_read_sink_count(link->aux); + if (ret < 0) { DRM_ERROR("DP parse sink count failed\n"); - return len; + return ret; } - link->msm_dp_link.sink_count =3D len; + link->msm_dp_link.sink_count =3D ret; =20 - len =3D drm_dp_dpcd_read_link_status(link->aux, - link->link_status); - if (len < DP_LINK_STATUS_SIZE) { + ret =3D drm_dp_dpcd_read_link_status(link->aux, + link->link_status); + if (ret < 0) { DRM_ERROR("DP link status read failed\n"); - return len; + return ret; } =20 return msm_dp_link_parse_request(link); diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/= atombios_dp.c index fa78824931cc428b1f9e23fe8f98867136ef9883..3f3c360dce4bcf2c87a6c7adbbf= 7a727a4f8eb4c 100644 --- a/drivers/gpu/drm/radeon/atombios_dp.c +++ b/drivers/gpu/drm/radeon/atombios_dp.c @@ -501,8 +501,8 @@ bool radeon_dp_needs_link_train(struct radeon_connector= *radeon_connector) u8 link_status[DP_LINK_STATUS_SIZE]; struct radeon_connector_atom_dig *dig =3D radeon_connector->con_priv; =20 - if (drm_dp_dpcd_read_link_status(&radeon_connector->ddc_bus->aux, link_st= atus) - <=3D 0) + if (drm_dp_dpcd_read_link_status(&radeon_connector->ddc_bus->aux, + link_status) < 0) return false; if (drm_dp_channel_eq_ok(link_status, dig->dp_lane_count)) return false; @@ -678,7 +678,7 @@ static int radeon_dp_link_train_cr(struct radeon_dp_lin= k_train_info *dp_info) drm_dp_link_train_clock_recovery_delay(dp_info->aux, dp_info->dpcd); =20 if (drm_dp_dpcd_read_link_status(dp_info->aux, - dp_info->link_status) <=3D 0) { + dp_info->link_status) < 0) { DRM_ERROR("displayport link status failed\n"); break; } @@ -741,7 +741,7 @@ static int radeon_dp_link_train_ce(struct radeon_dp_lin= k_train_info *dp_info) drm_dp_link_train_channel_eq_delay(dp_info->aux, dp_info->dpcd); =20 if (drm_dp_dpcd_read_link_status(dp_info->aux, - dp_info->link_status) <=3D 0) { + dp_info->link_status) < 0) { DRM_ERROR("displayport link status failed\n"); break; } --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C1011E5B7F for ; Sat, 1 Mar 2025 20:39:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861599; cv=none; b=p00PoaY1IRbjNhJaK9LBHtQz22E7AjU+5h4cadLDb7aPTpiYMR/J0NLLhaX0tEe3by4cUfJF3CPcSKBcvhmsnRxxAYQCR9rahgIpLJBfSZVRueSgTkvQ4OFCL17RMlmyGGdpWKcmOlvHRBuWUxmQQ98ON5hRdJdEzvPT4GCszF8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861599; c=relaxed/simple; bh=Kupghql56DHqM4wDv/45qSyGLZpGi6n/Mw9iPxFwqBk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YqFHQppuuOEr2CtoBj2OL0tHxIeitrlOOiaZYmff//yvMhn/rIlQzdVLbcypdzsrj7XToiSgNv4aZLt00M4EaT1YHWOgd75nJlfPX8/HLzUOFA83OFUb021h39VFISlWUlQnEiysYgzVR3w5wTx2enGKVYMjChVF4uI8mVJ96RM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=oDYaYJ/d; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="oDYaYJ/d" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-30762598511so34167141fa.0 for ; Sat, 01 Mar 2025 12:39:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861594; x=1741466394; 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=prwwE+c5zF3NGDDHmnHDLmDlz64Yk+sfoALNwvHB5U0=; b=oDYaYJ/dQKrIvjTdBBJdikuFASFqHXzP7WHoItvqf4H6efAF7+wXXv+QY207SqI/ut Oi6saHON7bD85zHAI7QVpimH1LrERdoa81fGAEAxj95WhL5Pta3/0LGeBjjUbIayUOEC /u3f/79Ay7y7kqheDahbmG8HSc/YifPXvKv0EfKnwzJ02HVttFyMoWukxsjZZCQgg9G0 op2pKECT6S4yOo3rmE/6Mqb4wCm0X4heYiE9QbUyGT5fPiiGy2dGq/t8SNcXa9Ahas1B yNg/lFJS7KzAc1dUPT6Lsvv+MmXK64NjHFg6u7PTVxUdV06qXrtk0kVgvuk8Z8BsMRaf UDVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861594; x=1741466394; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=prwwE+c5zF3NGDDHmnHDLmDlz64Yk+sfoALNwvHB5U0=; b=ayqmE/VvviEnM4AkJI4zVRefd9gJG5uoRZrv4THVmsVUWT+i2+kZyuDQoVD0GoqVMM RL4SGmRDqWfCNPQ0kT1L8AHmqPnA/rnBiDD//mJ5nrE7sC6cNzGTMVWBL939IV/RtHmH gEGoghwpi70C+wHNI928TY24ZkYC6wSCQLbaCBhna2HzUd3A/BYY9qWMCtQz3WjFwlPS QkKC1BC7eFnevBY4ISkH0nQ5pbaq1raNb3Bkl9ers2hVclQQ3oVVlRCAXWBbcNIa8Mbl oEqrhgHm1gabX+SbVeL1qcPVneYGPTuJnOvp8EEj4gEfUyvqrdi09gWKZMdIGSoeioHy J/5g== X-Forwarded-Encrypted: i=1; AJvYcCWAtYGM/Cm24MmHCt+x6EK6aFTcMOqQHZKYxKswIekhr3mE4I/Wbg56XOEjOXFfvq172ef/nTOd9IN+pUk=@vger.kernel.org X-Gm-Message-State: AOJu0YybaqleowWCANk6jYGfJeaY7umQfQw6yzxS067N5tZy4Lio2YsN PhFhskER8pu0uufnff40t7XN6U9TK/GQoAS2c8YHCWKyJLQUBbkQaplPIVAGxpY= X-Gm-Gg: ASbGncsv0WP4DE+5RN2jNhXSn8/6SBRNDfwM8F0yi2h7VvGoplWcwRk5SqMLSW8oNye ha95Y7k6tfs/Bd2cQWze9SK7z+4KxbrU1Qmql+amHoWVuHv9DsrF+3xS/XHVeGiLUMnS9hKJHVo Af+asYHRtb1Z5Rc1eXjRwbSf4u/ulBphK/snfjPSKNKlDzqu7WHNTJ6cJTenbUYPR1NvnZPzEzQ JRyMKRmXEKtKIo0JQdleCL9VQlKpEi0U/AVnmmjxQ//ci2NKzOxX151j+f6gW1OHpppxRVUUmUM 643EFwkE3pz8rStqjDcCm7mO75il7agOy73005I5unSouMlCl7zl X-Google-Smtp-Source: AGHT+IEuvF8KFQFe3gJyuFuReZZU6Aw/XZrbRP7EpyU1MXgi1OJs+mGi96QLs0563QV+zudKiUKmlg== X-Received: by 2002:a05:651c:54d:b0:300:5c57:526b with SMTP id 38308e7fff4ca-30b93230016mr31794761fa.11.1740861594338; Sat, 01 Mar 2025 12:39:54 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:53 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:38 +0200 Subject: [PATCH RFC v2 3/7] drm/display: dp: use new DCPD access helpers 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: <20250301-drm-rework-dpcd-access-v2-3-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=27759; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=Kupghql56DHqM4wDv/45qSyGLZpGi6n/Mw9iPxFwqBk=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ/rhgv64TVo/bvZXTskLz9+g7vkrf2ehTEBygZbqcheGN 47y1xI7GY1ZGBi5GGTFFFl8ClqmxmxKDvuwY2o9zCBWJpApDFycAjCRchb2vwImp+rsayZOeXdn mtyEh27b8jZ1zRLofpA9866Hd9UsRwV/MdUPezyfSn369nr7rcCbTqzHO+YXNXDt8+eyltQKLTo hEDdzUdeJp9+vdAsEtqjbNHhr/Es/etkl9Hqte4fuJlG2azsPX5p4d8fFf4yHZy8UnSGx0mrzn0 Me2jXue0M1vjZZfNO+Nr9LvF4v/UZezyGHA3wCkTPTbyjIqLftuc5YEnbwYkB8TtA7jXwFjxbR1 Wcef58qu+tEqqwYk7yUKWOYHctexi/KrWHHEx78m3De78/Xv8duKXeHG9u9cbVe4GxUukXlxlan xs/J2vuDf1j93Znw9rw3U6dZyR2u9/VF0ZGJUuxZa+wEAQ== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Switch drm_dp_helper.c to use new set of DPCD read / write helpers. Reviewed-by: Lyude Paul Acked-by: Jani Nikula Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_dp_helper.c | 296 +++++++++++++---------------= ---- 1 file changed, 116 insertions(+), 180 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/disp= lay/drm_dp_helper.c index 410be0be233ad94702af423262a7d98e21afbfeb..e2439c8a7fefe116b04aaa689b5= 57e2387b05540 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -327,7 +327,7 @@ static int __read_delay(struct drm_dp_aux *aux, const u= 8 dpcd[DP_RECEIVER_CAP_SI if (offset < DP_RECEIVER_CAP_SIZE) { rd_interval =3D dpcd[offset]; } else { - if (drm_dp_dpcd_readb(aux, offset, &rd_interval) !=3D 1) { + if (drm_dp_dpcd_read_byte(aux, offset, &rd_interval) < 0) { drm_dbg_kms(aux->drm_dev, "%s: failed rd interval read\n", aux->name); /* arbitrary default delay */ @@ -358,7 +358,7 @@ int drm_dp_128b132b_read_aux_rd_interval(struct drm_dp_= aux *aux) int unit; u8 val; =20 - if (drm_dp_dpcd_readb(aux, DP_128B132B_TRAINING_AUX_RD_INTERVAL, &val) != =3D 1) { + if (drm_dp_dpcd_read_byte(aux, DP_128B132B_TRAINING_AUX_RD_INTERVAL, &val= ) < 0) { drm_err(aux->drm_dev, "%s: failed rd interval read\n", aux->name); /* default to max */ @@ -807,30 +807,20 @@ int drm_dp_dpcd_read_phy_link_status(struct drm_dp_au= x *aux, { int ret; =20 - if (dp_phy =3D=3D DP_PHY_DPRX) { - ret =3D drm_dp_dpcd_read(aux, - DP_LANE0_1_STATUS, - link_status, - DP_LINK_STATUS_SIZE); - - if (ret < 0) - return ret; + if (dp_phy =3D=3D DP_PHY_DPRX) + return drm_dp_dpcd_read_data(aux, + DP_LANE0_1_STATUS, + link_status, + DP_LINK_STATUS_SIZE); =20 - WARN_ON(ret !=3D DP_LINK_STATUS_SIZE); - - return 0; - } - - ret =3D drm_dp_dpcd_read(aux, - DP_LANE0_1_STATUS_PHY_REPEATER(dp_phy), - link_status, - DP_LINK_STATUS_SIZE - 1); + ret =3D drm_dp_dpcd_read_data(aux, + DP_LANE0_1_STATUS_PHY_REPEATER(dp_phy), + link_status, + DP_LINK_STATUS_SIZE - 1); =20 if (ret < 0) return ret; =20 - WARN_ON(ret !=3D DP_LINK_STATUS_SIZE - 1); - /* Convert the LTTPR to the sink PHY link status layout */ memmove(&link_status[DP_SINK_STATUS - DP_LANE0_1_STATUS + 1], &link_status[DP_SINK_STATUS - DP_LANE0_1_STATUS], @@ -846,7 +836,7 @@ static int read_payload_update_status(struct drm_dp_aux= *aux) int ret; u8 status; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, &status); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, &statu= s); if (ret < 0) return ret; =20 @@ -873,21 +863,21 @@ int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux, int ret; int retries =3D 0; =20 - drm_dp_dpcd_writeb(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, - DP_PAYLOAD_TABLE_UPDATED); + drm_dp_dpcd_write_byte(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, + DP_PAYLOAD_TABLE_UPDATED); =20 payload_alloc[0] =3D vcpid; payload_alloc[1] =3D start_time_slot; payload_alloc[2] =3D time_slot_count; =20 - ret =3D drm_dp_dpcd_write(aux, DP_PAYLOAD_ALLOCATE_SET, payload_alloc, 3); - if (ret !=3D 3) { + ret =3D drm_dp_dpcd_write_data(aux, DP_PAYLOAD_ALLOCATE_SET, payload_allo= c, 3); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "failed to write payload allocation %d\n", ret= ); goto fail; } =20 retry: - ret =3D drm_dp_dpcd_readb(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, &status); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PAYLOAD_TABLE_UPDATE_STATUS, &statu= s); if (ret < 0) { drm_dbg_kms(aux->drm_dev, "failed to read payload table status %d\n", re= t); goto fail; @@ -1043,15 +1033,15 @@ bool drm_dp_send_real_edid_checksum(struct drm_dp_a= ux *aux, { u8 link_edid_read =3D 0, auto_test_req =3D 0, test_resp =3D 0; =20 - if (drm_dp_dpcd_read(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, - &auto_test_req, 1) < 1) { + if (drm_dp_dpcd_read_byte(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, + &auto_test_req) < 0) { drm_err(aux->drm_dev, "%s: DPCD failed read at register 0x%x\n", aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR); return false; } auto_test_req &=3D DP_AUTOMATED_TEST_REQUEST; =20 - if (drm_dp_dpcd_read(aux, DP_TEST_REQUEST, &link_edid_read, 1) < 1) { + if (drm_dp_dpcd_read_byte(aux, DP_TEST_REQUEST, &link_edid_read) < 0) { drm_err(aux->drm_dev, "%s: DPCD failed read at register 0x%x\n", aux->name, DP_TEST_REQUEST); return false; @@ -1064,23 +1054,23 @@ bool drm_dp_send_real_edid_checksum(struct drm_dp_a= ux *aux, return false; } =20 - if (drm_dp_dpcd_write(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, - &auto_test_req, 1) < 1) { + if (drm_dp_dpcd_write_byte(aux, DP_DEVICE_SERVICE_IRQ_VECTOR, + auto_test_req) < 0) { drm_err(aux->drm_dev, "%s: DPCD failed write at register 0x%x\n", aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR); return false; } =20 /* send back checksum for the last edid extension block data */ - if (drm_dp_dpcd_write(aux, DP_TEST_EDID_CHECKSUM, - &real_edid_checksum, 1) < 1) { + if (drm_dp_dpcd_write_byte(aux, DP_TEST_EDID_CHECKSUM, + real_edid_checksum) < 0) { drm_err(aux->drm_dev, "%s: DPCD failed write at register 0x%x\n", aux->name, DP_TEST_EDID_CHECKSUM); return false; } =20 test_resp |=3D DP_TEST_EDID_CHECKSUM_WRITE; - if (drm_dp_dpcd_write(aux, DP_TEST_RESPONSE, &test_resp, 1) < 1) { + if (drm_dp_dpcd_write_byte(aux, DP_TEST_RESPONSE, test_resp) < 0) { drm_err(aux->drm_dev, "%s: DPCD failed write at register 0x%x\n", aux->name, DP_TEST_RESPONSE); return false; @@ -1117,12 +1107,10 @@ static int drm_dp_read_extended_dpcd_caps(struct dr= m_dp_aux *aux, DP_EXTENDED_RECEIVER_CAP_FIELD_PRESENT)) return 0; =20 - ret =3D drm_dp_dpcd_read(aux, DP_DP13_DPCD_REV, &dpcd_ext, - sizeof(dpcd_ext)); + ret =3D drm_dp_dpcd_read_data(aux, DP_DP13_DPCD_REV, &dpcd_ext, + sizeof(dpcd_ext)); if (ret < 0) return ret; - if (ret !=3D sizeof(dpcd_ext)) - return -EIO; =20 if (dpcd[DP_DPCD_REV] > dpcd_ext[DP_DPCD_REV]) { drm_dbg_kms(aux->drm_dev, @@ -1159,10 +1147,10 @@ int drm_dp_read_dpcd_caps(struct drm_dp_aux *aux, { int ret; =20 - ret =3D drm_dp_dpcd_read(aux, DP_DPCD_REV, dpcd, DP_RECEIVER_CAP_SIZE); + ret =3D drm_dp_dpcd_read_data(aux, DP_DPCD_REV, dpcd, DP_RECEIVER_CAP_SIZ= E); if (ret < 0) return ret; - if (ret !=3D DP_RECEIVER_CAP_SIZE || dpcd[DP_DPCD_REV] =3D=3D 0) + if (dpcd[DP_DPCD_REV] =3D=3D 0) return -EIO; =20 ret =3D drm_dp_read_extended_dpcd_caps(aux, dpcd); @@ -1212,11 +1200,9 @@ int drm_dp_read_downstream_info(struct drm_dp_aux *a= ux, if (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DETAILED_CAP_INFO_AVAILABLE) len *=3D 4; =20 - ret =3D drm_dp_dpcd_read(aux, DP_DOWNSTREAM_PORT_0, downstream_ports, len= ); + ret =3D drm_dp_dpcd_read_data(aux, DP_DOWNSTREAM_PORT_0, downstream_ports= , len); if (ret < 0) return ret; - if (ret !=3D len) - return -EIO; =20 drm_dbg_kms(aux->drm_dev, "%s: DPCD DFP: %*ph\n", aux->name, len, downstr= eam_ports); =20 @@ -1573,7 +1559,7 @@ EXPORT_SYMBOL(drm_dp_downstream_mode); */ int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]) { - return drm_dp_dpcd_read(aux, DP_BRANCH_ID, id, 6); + return drm_dp_dpcd_read_data(aux, DP_BRANCH_ID, id, 6); } EXPORT_SYMBOL(drm_dp_downstream_id); =20 @@ -1638,13 +1624,13 @@ void drm_dp_downstream_debug(struct seq_file *m, drm_dp_downstream_id(aux, id); seq_printf(m, "\t\tID: %s\n", id); =20 - len =3D drm_dp_dpcd_read(aux, DP_BRANCH_HW_REV, &rev[0], 1); - if (len > 0) + len =3D drm_dp_dpcd_read_data(aux, DP_BRANCH_HW_REV, &rev[0], 1); + if (!len) seq_printf(m, "\t\tHW: %d.%d\n", (rev[0] & 0xf0) >> 4, rev[0] & 0xf); =20 - len =3D drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, rev, 2); - if (len > 0) + len =3D drm_dp_dpcd_read_data(aux, DP_BRANCH_SW_REV, rev, 2); + if (!len) seq_printf(m, "\t\tSW: %d.%d\n", rev[0], rev[1]); =20 if (detailed_cap_info) { @@ -1782,11 +1768,9 @@ int drm_dp_read_sink_count(struct drm_dp_aux *aux) u8 count; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_SINK_COUNT, &count); + ret =3D drm_dp_dpcd_read_byte(aux, DP_SINK_COUNT, &count); if (ret < 0) return ret; - if (ret !=3D 1) - return -EIO; =20 return DP_GET_SINK_COUNT(count); } @@ -2175,13 +2159,13 @@ static int drm_dp_aux_get_crc(struct drm_dp_aux *au= x, u8 *crc) u8 buf, count; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_TEST_SINK, &buf); if (ret < 0) return ret; =20 WARN_ON(!(buf & DP_TEST_SINK_START)); =20 - ret =3D drm_dp_dpcd_readb(aux, DP_TEST_SINK_MISC, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_TEST_SINK_MISC, &buf); if (ret < 0) return ret; =20 @@ -2195,11 +2179,7 @@ static int drm_dp_aux_get_crc(struct drm_dp_aux *aux= , u8 *crc) * At DP_TEST_CRC_R_CR, there's 6 bytes containing CRC data, 2 bytes * per component (RGB or CrYCb). */ - ret =3D drm_dp_dpcd_read(aux, DP_TEST_CRC_R_CR, crc, 6); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_read_data(aux, DP_TEST_CRC_R_CR, crc, 6); } =20 static void drm_dp_aux_crc_work(struct work_struct *work) @@ -2398,11 +2378,11 @@ int drm_dp_start_crc(struct drm_dp_aux *aux, struct= drm_crtc *crtc) u8 buf; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_TEST_SINK, &buf); if (ret < 0) return ret; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf | DP_TEST_SINK_START); + ret =3D drm_dp_dpcd_write_byte(aux, DP_TEST_SINK, buf | DP_TEST_SINK_STAR= T); if (ret < 0) return ret; =20 @@ -2425,11 +2405,11 @@ int drm_dp_stop_crc(struct drm_dp_aux *aux) u8 buf; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_TEST_SINK, &buf); if (ret < 0) return ret; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf & ~DP_TEST_SINK_START); + ret =3D drm_dp_dpcd_write_byte(aux, DP_TEST_SINK, buf & ~DP_TEST_SINK_STA= RT); if (ret < 0) return ret; =20 @@ -2515,11 +2495,7 @@ drm_dp_get_quirks(const struct drm_dp_dpcd_ident *id= ent, bool is_branch) static int drm_dp_read_ident(struct drm_dp_aux *aux, unsigned int offset, struct drm_dp_dpcd_ident *ident) { - int ret; - - ret =3D drm_dp_dpcd_read(aux, offset, ident, sizeof(*ident)); - - return ret < 0 ? ret : 0; + return drm_dp_dpcd_read_data(aux, offset, ident, sizeof(*ident)); } =20 static void drm_dp_dump_desc(struct drm_dp_aux *aux, @@ -2777,13 +2753,11 @@ static int drm_dp_read_lttpr_regs(struct drm_dp_aux= *aux, int ret; =20 for (offset =3D 0; offset < buf_size; offset +=3D block_size) { - ret =3D drm_dp_dpcd_read(aux, - address + offset, - &buf[offset], block_size); + ret =3D drm_dp_dpcd_read_data(aux, + address + offset, + &buf[offset], block_size); if (ret < 0) return ret; - - WARN_ON(ret !=3D block_size); } =20 return 0; @@ -2998,12 +2972,12 @@ int drm_dp_get_phy_test_pattern(struct drm_dp_aux *= aux, int err; u8 rate, lanes; =20 - err =3D drm_dp_dpcd_readb(aux, DP_TEST_LINK_RATE, &rate); + err =3D drm_dp_dpcd_read_byte(aux, DP_TEST_LINK_RATE, &rate); if (err < 0) return err; data->link_rate =3D drm_dp_bw_code_to_link_rate(rate); =20 - err =3D drm_dp_dpcd_readb(aux, DP_TEST_LANE_COUNT, &lanes); + err =3D drm_dp_dpcd_read_byte(aux, DP_TEST_LANE_COUNT, &lanes); if (err < 0) return err; data->num_lanes =3D lanes & DP_MAX_LANE_COUNT_MASK; @@ -3011,22 +2985,22 @@ int drm_dp_get_phy_test_pattern(struct drm_dp_aux *= aux, if (lanes & DP_ENHANCED_FRAME_CAP) data->enhanced_frame_cap =3D true; =20 - err =3D drm_dp_dpcd_readb(aux, DP_PHY_TEST_PATTERN, &data->phy_pattern); + err =3D drm_dp_dpcd_read_byte(aux, DP_PHY_TEST_PATTERN, &data->phy_patter= n); if (err < 0) return err; =20 switch (data->phy_pattern) { case DP_PHY_TEST_PATTERN_80BIT_CUSTOM: - err =3D drm_dp_dpcd_read(aux, DP_TEST_80BIT_CUSTOM_PATTERN_7_0, - &data->custom80, sizeof(data->custom80)); + err =3D drm_dp_dpcd_read_data(aux, DP_TEST_80BIT_CUSTOM_PATTERN_7_0, + &data->custom80, sizeof(data->custom80)); if (err < 0) return err; =20 break; case DP_PHY_TEST_PATTERN_CP2520: - err =3D drm_dp_dpcd_read(aux, DP_TEST_HBR2_SCRAMBLER_RESET, - &data->hbr2_reset, - sizeof(data->hbr2_reset)); + err =3D drm_dp_dpcd_read_data(aux, DP_TEST_HBR2_SCRAMBLER_RESET, + &data->hbr2_reset, + sizeof(data->hbr2_reset)); if (err < 0) return err; } @@ -3053,15 +3027,15 @@ int drm_dp_set_phy_test_pattern(struct drm_dp_aux *= aux, if (dp_rev < 0x12) { test_pattern =3D (test_pattern << 2) & DP_LINK_QUAL_PATTERN_11_MASK; - err =3D drm_dp_dpcd_writeb(aux, DP_TRAINING_PATTERN_SET, - test_pattern); + err =3D drm_dp_dpcd_write_byte(aux, DP_TRAINING_PATTERN_SET, + test_pattern); if (err < 0) return err; } else { for (i =3D 0; i < data->num_lanes; i++) { - err =3D drm_dp_dpcd_writeb(aux, - DP_LINK_QUAL_LANE0_SET + i, - test_pattern); + err =3D drm_dp_dpcd_write_byte(aux, + DP_LINK_QUAL_LANE0_SET + i, + test_pattern); if (err < 0) return err; } @@ -3268,8 +3242,8 @@ bool drm_dp_as_sdp_supported(struct drm_dp_aux *aux, = const u8 dpcd[DP_RECEIVER_C if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_13) return false; =20 - if (drm_dp_dpcd_readb(aux, DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1, - &rx_feature) !=3D 1) { + if (drm_dp_dpcd_read_byte(aux, DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1, + &rx_feature) < 0) { drm_dbg_dp(aux->drm_dev, "Failed to read DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1\n"); return false; @@ -3293,7 +3267,7 @@ bool drm_dp_vsc_sdp_supported(struct drm_dp_aux *aux,= const u8 dpcd[DP_RECEIVER_ if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_13) return false; =20 - if (drm_dp_dpcd_readb(aux, DP_DPRX_FEATURE_ENUMERATION_LIST, &rx_feature)= !=3D 1) { + if (drm_dp_dpcd_read_byte(aux, DP_DPRX_FEATURE_ENUMERATION_LIST, &rx_feat= ure) < 0) { drm_dbg_dp(aux->drm_dev, "failed to read DP_DPRX_FEATURE_ENUMERATION_LIS= T\n"); return false; } @@ -3424,16 +3398,13 @@ EXPORT_SYMBOL(drm_dp_get_pcon_max_frl_bw); */ int drm_dp_pcon_frl_prepare(struct drm_dp_aux *aux, bool enable_frl_ready_= hpd) { - int ret; u8 buf =3D DP_PCON_ENABLE_SOURCE_CTL_MODE | DP_PCON_ENABLE_LINK_FRL_MODE; =20 if (enable_frl_ready_hpd) buf |=3D DP_PCON_ENABLE_HPD_READY; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); - - return ret; + return drm_dp_dpcd_write_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); } EXPORT_SYMBOL(drm_dp_pcon_frl_prepare); =20 @@ -3448,7 +3419,7 @@ bool drm_dp_pcon_is_frl_ready(struct drm_dp_aux *aux) int ret; u8 buf; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PCON_HDMI_TX_LINK_STATUS, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_TX_LINK_STATUS, &buf); if (ret < 0) return false; =20 @@ -3477,7 +3448,7 @@ int drm_dp_pcon_frl_configure_1(struct drm_dp_aux *au= x, int max_frl_gbps, int ret; u8 buf; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PCON_HDMI_LINK_CONFIG_1, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, &buf); if (ret < 0) return ret; =20 @@ -3512,11 +3483,7 @@ int drm_dp_pcon_frl_configure_1(struct drm_dp_aux *a= ux, int max_frl_gbps, return -EINVAL; } =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_write_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); } EXPORT_SYMBOL(drm_dp_pcon_frl_configure_1); =20 @@ -3542,7 +3509,7 @@ int drm_dp_pcon_frl_configure_2(struct drm_dp_aux *au= x, int max_frl_mask, else buf &=3D ~DP_PCON_FRL_LINK_TRAIN_EXTENDED; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_PCON_HDMI_LINK_CONFIG_2, buf); + return drm_dp_dpcd_write_byte(aux, DP_PCON_HDMI_LINK_CONFIG_2, buf); if (ret < 0) return ret; =20 @@ -3558,13 +3525,7 @@ EXPORT_SYMBOL(drm_dp_pcon_frl_configure_2); */ int drm_dp_pcon_reset_frl_config(struct drm_dp_aux *aux) { - int ret; - - ret =3D drm_dp_dpcd_writeb(aux, DP_PCON_HDMI_LINK_CONFIG_1, 0x0); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_write_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, 0x0); } EXPORT_SYMBOL(drm_dp_pcon_reset_frl_config); =20 @@ -3579,7 +3540,7 @@ int drm_dp_pcon_frl_enable(struct drm_dp_aux *aux) int ret; u8 buf =3D 0; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PCON_HDMI_LINK_CONFIG_1, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, &buf); if (ret < 0) return ret; if (!(buf & DP_PCON_ENABLE_SOURCE_CTL_MODE)) { @@ -3588,11 +3549,7 @@ int drm_dp_pcon_frl_enable(struct drm_dp_aux *aux) return -EINVAL; } buf |=3D DP_PCON_ENABLE_HDMI_LINK; - ret =3D drm_dp_dpcd_writeb(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_write_byte(aux, DP_PCON_HDMI_LINK_CONFIG_1, buf); } EXPORT_SYMBOL(drm_dp_pcon_frl_enable); =20 @@ -3607,7 +3564,7 @@ bool drm_dp_pcon_hdmi_link_active(struct drm_dp_aux *= aux) u8 buf; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PCON_HDMI_TX_LINK_STATUS, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_TX_LINK_STATUS, &buf); if (ret < 0) return false; =20 @@ -3632,7 +3589,7 @@ int drm_dp_pcon_hdmi_link_mode(struct drm_dp_aux *aux= , u8 *frl_trained_mask) int mode; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PCON_HDMI_POST_FRL_STATUS, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_POST_FRL_STATUS, &buf); if (ret < 0) return ret; =20 @@ -3661,7 +3618,7 @@ void drm_dp_pcon_hdmi_frl_link_error_count(struct drm= _dp_aux *aux, struct drm_hdmi_info *hdmi =3D &connector->display_info.hdmi; =20 for (i =3D 0; i < hdmi->max_lanes; i++) { - if (drm_dp_dpcd_readb(aux, DP_PCON_HDMI_ERROR_STATUS_LN0 + i, &buf) < 0) + if (drm_dp_dpcd_read_byte(aux, DP_PCON_HDMI_ERROR_STATUS_LN0 + i, &buf) = < 0) return; =20 error_count =3D buf & DP_PCON_HDMI_ERROR_COUNT_MASK; @@ -3796,7 +3753,7 @@ int drm_dp_pcon_configure_dsc_enc(struct drm_dp_aux *= aux, u8 pps_buf_config) u8 buf; int ret; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, &buf); if (ret < 0) return ret; =20 @@ -3807,11 +3764,7 @@ int drm_dp_pcon_configure_dsc_enc(struct drm_dp_aux = *aux, u8 pps_buf_config) buf |=3D pps_buf_config << 2; } =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, buf); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_write_byte(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, buf); } =20 /** @@ -3823,13 +3776,7 @@ int drm_dp_pcon_configure_dsc_enc(struct drm_dp_aux = *aux, u8 pps_buf_config) */ int drm_dp_pcon_pps_default(struct drm_dp_aux *aux) { - int ret; - - ret =3D drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_DISAB= LED); - if (ret < 0) - return ret; - - return 0; + return drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_DISABL= ED); } EXPORT_SYMBOL(drm_dp_pcon_pps_default); =20 @@ -3845,15 +3792,11 @@ int drm_dp_pcon_pps_override_buf(struct drm_dp_aux = *aux, u8 pps_buf[128]) { int ret; =20 - ret =3D drm_dp_dpcd_write(aux, DP_PCON_HDMI_PPS_OVERRIDE_BASE, &pps_buf, = 128); + ret =3D drm_dp_dpcd_write_data(aux, DP_PCON_HDMI_PPS_OVERRIDE_BASE, &pps_= buf, 128); if (ret < 0) return ret; =20 - ret =3D drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_EN_BU= FFER); - if (ret < 0) - return ret; - - return 0; + return drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_EN_BUF= FER); } EXPORT_SYMBOL(drm_dp_pcon_pps_override_buf); =20 @@ -3870,21 +3813,17 @@ int drm_dp_pcon_pps_override_param(struct drm_dp_au= x *aux, u8 pps_param[6]) { int ret; =20 - ret =3D drm_dp_dpcd_write(aux, DP_PCON_HDMI_PPS_OVRD_SLICE_HEIGHT, &pps_p= aram[0], 2); - if (ret < 0) - return ret; - ret =3D drm_dp_dpcd_write(aux, DP_PCON_HDMI_PPS_OVRD_SLICE_WIDTH, &pps_pa= ram[2], 2); + ret =3D drm_dp_dpcd_write_data(aux, DP_PCON_HDMI_PPS_OVRD_SLICE_HEIGHT, &= pps_param[0], 2); if (ret < 0) return ret; - ret =3D drm_dp_dpcd_write(aux, DP_PCON_HDMI_PPS_OVRD_BPP, &pps_param[4], = 2); + ret =3D drm_dp_dpcd_write_data(aux, DP_PCON_HDMI_PPS_OVRD_SLICE_WIDTH, &p= ps_param[2], 2); if (ret < 0) return ret; - - ret =3D drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_EN_BU= FFER); + ret =3D drm_dp_dpcd_write_data(aux, DP_PCON_HDMI_PPS_OVRD_BPP, &pps_param= [4], 2); if (ret < 0) return ret; =20 - return 0; + return drm_dp_pcon_configure_dsc_enc(aux, DP_PCON_ENC_PPS_OVERRIDE_EN_BUF= FER); } EXPORT_SYMBOL(drm_dp_pcon_pps_override_param); =20 @@ -3900,7 +3839,7 @@ int drm_dp_pcon_convert_rgb_to_ycbcr(struct drm_dp_au= x *aux, u8 color_spc) int ret; u8 buf; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, &buf); + ret =3D drm_dp_dpcd_read_byte(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, &buf); if (ret < 0) return ret; =20 @@ -3909,11 +3848,7 @@ int drm_dp_pcon_convert_rgb_to_ycbcr(struct drm_dp_a= ux *aux, u8 color_spc) else buf &=3D ~DP_CONVERSION_RGB_YCBCR_MASK; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, buf); - if (ret < 0) - return ret; - - return 0; + return drm_dp_dpcd_write_byte(aux, DP_PROTOCOL_CONVERTER_CONTROL_2, buf); } EXPORT_SYMBOL(drm_dp_pcon_convert_rgb_to_ycbcr); =20 @@ -3945,12 +3880,12 @@ int drm_edp_backlight_set_level(struct drm_dp_aux *= aux, const struct drm_edp_bac buf[0] =3D level; } =20 - ret =3D drm_dp_dpcd_write(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB, buf, size= of(buf)); - if (ret !=3D sizeof(buf)) { + ret =3D drm_dp_dpcd_write_data(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB, buf,= sizeof(buf)); + if (ret < 0) { drm_err(aux->drm_dev, "%s: Failed to write aux backlight level: %d\n", aux->name, ret); - return ret < 0 ? ret : -EIO; + return ret; } =20 return 0; @@ -3968,22 +3903,22 @@ drm_edp_backlight_set_enable(struct drm_dp_aux *aux= , const struct drm_edp_backli if (!bl->aux_enable) return 0; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_EDP_DISPLAY_CONTROL_REGISTER, &buf); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_byte(aux, DP_EDP_DISPLAY_CONTROL_REGISTER, &buf); + if (ret < 0) { drm_err(aux->drm_dev, "%s: Failed to read eDP display control register: = %d\n", aux->name, ret); - return ret < 0 ? ret : -EIO; + return ret; } if (enable) buf |=3D DP_EDP_BACKLIGHT_ENABLE; else buf &=3D ~DP_EDP_BACKLIGHT_ENABLE; =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_EDP_DISPLAY_CONTROL_REGISTER, buf); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_write_byte(aux, DP_EDP_DISPLAY_CONTROL_REGISTER, buf); + if (ret < 0) { drm_err(aux->drm_dev, "%s: Failed to write eDP display control register:= %d\n", aux->name, ret); - return ret < 0 ? ret : -EIO; + return ret; } =20 return 0; @@ -4019,15 +3954,16 @@ int drm_edp_backlight_enable(struct drm_dp_aux *aux= , const struct drm_edp_backli dpcd_buf =3D DP_EDP_BACKLIGHT_CONTROL_MODE_PWM; =20 if (bl->pwmgen_bit_count) { - ret =3D drm_dp_dpcd_writeb(aux, DP_EDP_PWMGEN_BIT_COUNT, bl->pwmgen_bit_= count); - if (ret !=3D 1) + ret =3D drm_dp_dpcd_write_byte(aux, DP_EDP_PWMGEN_BIT_COUNT, bl->pwmgen_= bit_count); + if (ret < 0) drm_dbg_kms(aux->drm_dev, "%s: Failed to write aux pwmgen bit count: %d= \n", aux->name, ret); } =20 if (bl->pwm_freq_pre_divider) { - ret =3D drm_dp_dpcd_writeb(aux, DP_EDP_BACKLIGHT_FREQ_SET, bl->pwm_freq_= pre_divider); - if (ret !=3D 1) + ret =3D drm_dp_dpcd_write_byte(aux, DP_EDP_BACKLIGHT_FREQ_SET, + bl->pwm_freq_pre_divider); + if (ret < 0) drm_dbg_kms(aux->drm_dev, "%s: Failed to write aux backlight frequency: %d\n", aux->name, ret); @@ -4035,8 +3971,8 @@ int drm_edp_backlight_enable(struct drm_dp_aux *aux, = const struct drm_edp_backli dpcd_buf |=3D DP_EDP_BACKLIGHT_FREQ_AUX_SET_ENABLE; } =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER, dpcd_= buf); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_write_byte(aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER, d= pcd_buf); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to write aux backlight mode: %d\n", aux->name, ret); return ret < 0 ? ret : -EIO; @@ -4091,8 +4027,8 @@ drm_edp_backlight_probe_max(struct drm_dp_aux *aux, s= truct drm_edp_backlight_inf if (!bl->aux_set) return 0; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_EDP_PWMGEN_BIT_COUNT, &pn); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_byte(aux, DP_EDP_PWMGEN_BIT_COUNT, &pn); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to read pwmgen bit count cap: %d\n= ", aux->name, ret); return -ENODEV; @@ -4125,14 +4061,14 @@ drm_edp_backlight_probe_max(struct drm_dp_aux *aux,= struct drm_edp_backlight_inf * - FxP is within 25% of desired value. * Note: 25% is arbitrary value and may need some tweak. */ - ret =3D drm_dp_dpcd_readb(aux, DP_EDP_PWMGEN_BIT_COUNT_CAP_MIN, &pn_min); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_byte(aux, DP_EDP_PWMGEN_BIT_COUNT_CAP_MIN, &pn_m= in); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to read pwmgen bit count cap min: = %d\n", aux->name, ret); return 0; } - ret =3D drm_dp_dpcd_readb(aux, DP_EDP_PWMGEN_BIT_COUNT_CAP_MAX, &pn_max); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_byte(aux, DP_EDP_PWMGEN_BIT_COUNT_CAP_MAX, &pn_m= ax); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to read pwmgen bit count cap max: = %d\n", aux->name, ret); return 0; @@ -4157,8 +4093,8 @@ drm_edp_backlight_probe_max(struct drm_dp_aux *aux, s= truct drm_edp_backlight_inf break; } =20 - ret =3D drm_dp_dpcd_writeb(aux, DP_EDP_PWMGEN_BIT_COUNT, pn); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_write_byte(aux, DP_EDP_PWMGEN_BIT_COUNT, pn); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to write aux pwmgen bit count: %d\= n", aux->name, ret); return 0; @@ -4183,8 +4119,8 @@ drm_edp_backlight_probe_state(struct drm_dp_aux *aux,= struct drm_edp_backlight_i u8 buf[2]; u8 mode_reg; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER, &mode_= reg); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_byte(aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER, &m= ode_reg); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to read backlight mode: %d\n", aux->name, ret); return ret < 0 ? ret : -EIO; @@ -4197,11 +4133,11 @@ drm_edp_backlight_probe_state(struct drm_dp_aux *au= x, struct drm_edp_backlight_i if (*current_mode =3D=3D DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) { int size =3D 1 + bl->lsb_reg_used; =20 - ret =3D drm_dp_dpcd_read(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB, buf, size= ); - if (ret !=3D size) { + ret =3D drm_dp_dpcd_read_data(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB, buf,= size); + if (ret < 0) { drm_dbg_kms(aux->drm_dev, "%s: Failed to read backlight level: %d\n", aux->name, ret); - return ret < 0 ? ret : -EIO; + return ret; } =20 if (bl->lsb_reg_used) @@ -4346,8 +4282,8 @@ int drm_panel_dp_aux_backlight(struct drm_panel *pane= l, struct drm_dp_aux *aux) if (!panel || !panel->dev || !aux) return -EINVAL; =20 - ret =3D drm_dp_dpcd_read(aux, DP_EDP_DPCD_REV, edp_dpcd, - EDP_DISPLAY_CTL_CAP_SIZE); + ret =3D drm_dp_dpcd_read_data(aux, DP_EDP_DPCD_REV, edp_dpcd, + EDP_DISPLAY_CTL_CAP_SIZE); if (ret < 0) return ret; =20 --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AE4C1E9B2E for ; Sat, 1 Mar 2025 20:39:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861599; cv=none; b=BDVLdLi9NBYK8NArg718fgiZbFZYKzbeV94BRlPoW7DvZFg2TgASep1uU+QVDiG4cbgnutdy2uizQ97mzUd4pQDDlAUIdYahgFYjf00EZ2k+kDRcVhkuj935NraC9oU+tHQuYgJa2lhH7w8yYGWKKBRlxDkRgvsFSPMFkcnehus= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861599; c=relaxed/simple; bh=oiT3XieBMSIfrzEMIa7+tHW3r4Yaol9yvhPjl0hzeR0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PVI6ztu8OQzQphUOyIwcMxcO6TR6giTytnMnbiFhb7Ses710gklG7IOGEN5XRvWPzUBHhnTUrMUeMJBIZWrT6ZaScayrj7178ZKJoN/wMrneKp0an8GpAy061aq2VIITkjzhf19iixVKtbhAB/x+22M4/MC0Xw7Ri9bCXPS/WF0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=zWIwj8tS; arc=none smtp.client-ip=209.85.208.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="zWIwj8tS" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-30930b0b420so27193721fa.2 for ; Sat, 01 Mar 2025 12:39:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861596; x=1741466396; 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=lm0hqPFeMjlAJa0zmvxvNTEk2emtnpzkaRSrh6He2DY=; b=zWIwj8tSn2uemlpxRIuCzljgwb+uun95ewpUTqvz+L99gpIP3OeM3Y7kmeJaWdKVYv f2/u7x7KSP/PtJmrM5slNKX1tcPDBJtLvK/EJf0+3vQCRhK1QLEXx/tZwaGcjqCgBqIv JsR5RtDOstoTabilar5n2a8LaVcjzQGr4EfqLA8IBCymhCPpwFKNjJgtkNAn54lkjlGo rQ1hSPCcoW+JOd2t+C394IJt4tSOmVlzCpWsWA8tgfMwcMJaUQa6GYccLcnhsLbWjzYv xjWHOxyDrg5N9clcPkKvx3gPXR5yxquRxJ2UKn6MMNaBcE/dUQfJdLh/mEflUtDFQNiH kFUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861596; x=1741466396; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lm0hqPFeMjlAJa0zmvxvNTEk2emtnpzkaRSrh6He2DY=; b=RrEtfHs8Ph2NWl8+yWBkQro28srNrss9eQmbS9u2Fu3VKM7t69iqBleJnz0a8xWtA4 6YKw8BDvOW2oLaVrqy/RTlb3RuPFxyXFi2nEfd+djjDfx+c7E8SqfoaIe74zbFFEwSUD JwqgnGQw8KGJ+zi7lEinsib7nNvcaL6jjA1FVmCGLxX45fQeF+Z5kKawcjlgCQB4YEi3 ikQjg2W7LRw60Tf3lcAdz+QeYmgHwkr9W9IkmV8p8BPLEbsfrUCdH2v/ttJYJ9IaqPje ud8oLMeJ4phpFz8X29GioXa1JNkH4P4Oiag4SyZ2wT7knEkPwEzu8908/MheEa8g2JIc /Ajg== X-Forwarded-Encrypted: i=1; AJvYcCVRRAgNsMdwEeFYbQSLXk5EUfM7SNgcobKOJUMs9yRJmgvJBPtZz6KwzTQn60+hj/piP6pXmCfi/sryKss=@vger.kernel.org X-Gm-Message-State: AOJu0YytGYjx9/kyJAIJFuh4URBG9rqx1zdgefOBjKPkf6INabHSxp97 uF2F3k+8mb3RJ8QWwWmP62z5LfkncL2lxV0Nq24mUSaWTjbSwz6mhwsQwKiOgrA= X-Gm-Gg: ASbGncurwKp+56aSsJXkMS7sxGrZO2LlNd05A1iRH5OBM3lPa5fjaAcU5QZGtieiHsc +AupGSceSwm8q7PvE6NLzssu7HTL9sw+iZHAYubxwH8YZOzIW+bUSpyNvFjOj/4YeYNMk126Mt9 kd6oiJFDTkhNS4IgJAY0FGu4rM5qvuT0SKf+zZMUSYOGjdOrKSs0e2Sb+a66+tGDYSL/pi75VfB X5n7Rm2sBimrOkLssbiUIniZIsLP49/NRZeTec5TqmYQRE+UjhbQwBKpHf0dcbdTWxgh1VHTlMQ hwplDASyek7fm9OWiDPFQEujtMg5YOf+81Szo6wZhVeP+h8bEqxg X-Google-Smtp-Source: AGHT+IEmTXK0sA2OkUpupOigZVSjmXwjzqW3fKRIwNjJwyTslP6vQRr4qY7BVPOJdFvgcDcjK+gOIA== X-Received: by 2002:a2e:b896:0:b0:302:1cdd:73c6 with SMTP id 38308e7fff4ca-30b9326af9bmr30502271fa.20.1740861595853; Sat, 01 Mar 2025 12:39:55 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:54 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:39 +0200 Subject: [PATCH RFC v2 4/7] drm/display: dp-aux-dev: use new DCPD access helpers 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: <20250301-drm-rework-dpcd-access-v2-4-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1430; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=oiT3XieBMSIfrzEMIa7+tHW3r4Yaol9yvhPjl0hzeR0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnw3CQKEcLkja2c5fPc4XKGOP4nL47TK+u5bXfS KNn90N+yo2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ8NwkAAKCRCLPIo+Aiko 1UG6CACk3GBifF0q/szx7lNrtLDJrKctDw1YTztUYefU9Y3YIjzg+oBXe4rU31154ET5jAIQEhc vUr+oWgIA+hJOAmPNkXvYWBYhXOBMfO6jpjerRnGOTA3mArW7GX+cc1EckkIb+hVgai/PVo/g7o OAFQBhPJTA/A67N7ugFi/EqD+Irbp4Ya1yt6VKSkwftQLg5UjPDF4HqBDv9cfM3GFAKi19ageVt xGfPppiBwqlSMyq5AFXeuI49x4SSB1fayq9tjEvss07cQfWjtXK6VR7C5eFGXEmKvkA6REGiCra m1aBW/rjjQ/Km0TKrKP2ALBrLsxGnA9DkvZzmBAH4Bo9IJCq X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Switch drm_dp_aux_dev.c to use new set of DPCD read / write helpers. Acked-by: Jani Nikula Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_dp_aux_dev.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_aux_dev.c b/drivers/gpu/drm/dis= play/drm_dp_aux_dev.c index 29555b9f03c8c42681c17c4a01e74a966cf8611f..a31ab3f41efb71fd5f936c24ba5= c3b8ebea68a5e 100644 --- a/drivers/gpu/drm/display/drm_dp_aux_dev.c +++ b/drivers/gpu/drm/display/drm_dp_aux_dev.c @@ -163,17 +163,16 @@ static ssize_t auxdev_read_iter(struct kiocb *iocb, s= truct iov_iter *to) break; } =20 - res =3D drm_dp_dpcd_read(aux_dev->aux, pos, buf, todo); - + res =3D drm_dp_dpcd_read_data(aux_dev->aux, pos, buf, todo); if (res <=3D 0) break; =20 - if (copy_to_iter(buf, res, to) !=3D res) { + if (copy_to_iter(buf, todo, to) !=3D todo) { res =3D -EFAULT; break; } =20 - pos +=3D res; + pos +=3D todo; } =20 if (pos !=3D iocb->ki_pos) @@ -211,12 +210,11 @@ static ssize_t auxdev_write_iter(struct kiocb *iocb, = struct iov_iter *from) break; } =20 - res =3D drm_dp_dpcd_write(aux_dev->aux, pos, buf, todo); - + res =3D drm_dp_dpcd_write_data(aux_dev->aux, pos, buf, todo); if (res <=3D 0) break; =20 - pos +=3D res; + pos +=3D todo; } =20 if (pos !=3D iocb->ki_pos) --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 237571EA7D2 for ; Sat, 1 Mar 2025 20:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861602; cv=none; b=JWfazBIUFkPajnoVE5pfo150TbBvFzpHZh4PkfB56GHNtpNxS15jv2wmj30eP4wbJRycqkAfouya9YTRzd85Z7EuIJAOrUW+xCMF/nGmorkXiBtWM152bExW2T6ELW6iRXsAQnTpuYpKbFW0lsryt5sXm7o9kkwAtq5dyLLSrAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861602; c=relaxed/simple; bh=d/g0s+1RbkEZsu0cFrspMKQl16Oh0pnUASV91YvLy1M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P9jjxRA+fIlwJCNEdRURm2FCSoBkLvVIl/1mSxxXkEj3Sac81i3JmtKTkDiViMAZVeq23sDrAah127IWfYduBOU2zlEBtHEQK6VCceNyCGQWANtvvm9ZpXXYL+Y3x4BBnU13dwJXNJgONomIiuZraU/DrQE0NnHu62N9ZBH12bI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=xMk2xx+k; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="xMk2xx+k" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-30613802a6bso35400281fa.1 for ; Sat, 01 Mar 2025 12:39:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861598; x=1741466398; 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=+KYAVzCtQbStD8nd5x330qtBncZeukDl4XD7BtrnUDw=; b=xMk2xx+kzxQNsABI34xQRVAYOonQgUo0IxxTTYS+0UpA4g1PbpCCSxPVEzTqvg/Vgf KqOj/WSd6ZEMUG5g5F/R7F36K458NdkLwJzltaDfdhgxJvwzSjNp3SfHhPOUaEM1WcN/ Jga2Kkvc4S9kR6cg7XKya8QE+gmdFi94T6sKbcYrTeg9zcwRt+TVQiLTuwzN2mHYXmR1 ys46uglu14kxKBYR7cj/mO3bxMKoDKfYiJ31+sJUtym4N7YIgbb8IhEOIdS93helVT5z crO3C5hRouRDe7r75vbeo+U2eX36xUMXK+WMWtL9kKwooBE9WZ0xht35DHErtRygYiWa E7RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861598; x=1741466398; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+KYAVzCtQbStD8nd5x330qtBncZeukDl4XD7BtrnUDw=; b=YtyJ5lkNhZuSN21RFgrdP53mVskqyyUdZTfgM/IrNwAtW9v1gkPcX9XFfb8ZbXi9zm /vXJgUQL0+ilpq9iHPifg4g8L7cpNKh00oBllR86mlP60A9sp75LzXFqrBeIdAxAegUv CPskbHjfISfZEKzLUYGXZ3KYXZ3RsRtgoPf+hyq7Mse6AeyY2jlMh1bqH4cMcjTWP8L/ i/kt5dtpgwnAZXlks1UMQtmC2FhZZKCvbWkreHAHElgrR0Mexnxg+b9C1kWNv+ROG5Zc skro13ntPUIaojr2P1AEv1y8SNvEszisDIVgvntqmux8WSPqn1NmjByB2XHTjUwGT0OA ktgA== X-Forwarded-Encrypted: i=1; AJvYcCW/7p4A7KVs+pLm2WgDJaSZQEPV5izDT5gunbzsmhPEXuAgkyyJid80TNDm5DPwkchNK++qsDchbb3Epuw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2cQmZ0OIbzL4P4gHavu7O+DcTS7ep7Tx+C+6TYRAraNKusTG6 TMy917WQB2sBFsmfzogR+hkAvYZ3nO6pW8dhu0zM7xAf4WboftuqhwppvmN0LEo= X-Gm-Gg: ASbGnctQAnqfh1poQ3GJnZKhsFEu6IH4s8dPzBu2wi4vKXZ6w7uP6rLxWjs8v8DUq4F TJeLTBTKIlCmephyfHbwwii99FnySIDECrImYJtBEBYOKcyCFikOc9tkkNZOlEY4TltbJZi6TH6 ElzScL0xF9pm8PNKpXiLBxbPk8/4Rxfk6YHCqOwEbDIzsjs81rhmF+1JLfVHv9znZ9REk9AO29g HRTtDryqEFwYxaA0QxTNDuwbaG2CyQUWSnd38OOvKQsWMzaExIg2GOqTDgeTE+aGGw1teO3uC1o SjGonlA9HGOou6yLlzCrJftdk3hCOasQvjz2eHS3NDqj+TjQb5jV X-Google-Smtp-Source: AGHT+IHxZfB6SghQHsusUYOTNL1ECjTrYfrGSlYEryujzcygjrlIUcuUbjvIxIs3D+BDVy6OsdCGJg== X-Received: by 2002:a2e:91c3:0:b0:30b:9813:b00c with SMTP id 38308e7fff4ca-30b9813b714mr28338221fa.27.1740861598162; Sat, 01 Mar 2025 12:39:58 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:56 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:40 +0200 Subject: [PATCH RFC v2 5/7] drm/display: dp-cec: use new DCPD access helpers 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: <20250301-drm-rework-dpcd-access-v2-5-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5086; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=d/g0s+1RbkEZsu0cFrspMKQl16Oh0pnUASV91YvLy1M=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnw3CQpuBjfWf1ph1dU/ixVfTg4s3wl/60OKV3z mC89EVT/3mJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ8NwkAAKCRCLPIo+Aiko 1TIxB/4t1ePhX9avgprXgUgmpU68WSKMtTmG2iChwAgh6sPQkNXYgKv7IsPU6RuBiaXtJ15sXrF Cqm1/tWcbxu2A4DvwxMmmEdd+iLm+60VfUqsywiku/wd6h+ikr36rBdQT8YgN5ilzX8doK+aiut 0ZWKsdEEghFrxjpMWaxIL+fdjOtU3OuwkrKfrf56okHueVa/uswjeJ/RMjCPqvqMTLpWusgrHY2 Nn5ZjZzvwee78uYsOfae96nNkmfgUnNkqHa/p01qWtqav3wu4X+meWrNKnin3qCs4N9TM3tlR94 tOL/B4wjxjVgt+CDJ2i+Nf+C284BTMBk+3pSWXjEilLHlkck X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Switch drm_dp_cec.c to use new set of DPCD read / write helpers. Reviewed-by: Lyude Paul Acked-by: Jani Nikula Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_dp_cec.c | 37 ++++++++++++++++++--------------= ---- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_cec.c b/drivers/gpu/drm/display= /drm_dp_cec.c index 56a4965e518cc237c992a2e31b9f6de05c14766a..ed31471bd0e28826254ecedac48= c5c126729d470 100644 --- a/drivers/gpu/drm/display/drm_dp_cec.c +++ b/drivers/gpu/drm/display/drm_dp_cec.c @@ -96,7 +96,7 @@ static int drm_dp_cec_adap_enable(struct cec_adapter *ada= p, bool enable) u32 val =3D enable ? DP_CEC_TUNNELING_ENABLE : 0; ssize_t err =3D 0; =20 - err =3D drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_CONTROL, val); + err =3D drm_dp_dpcd_write_byte(aux, DP_CEC_TUNNELING_CONTROL, val); return (enable && err < 0) ? err : 0; } =20 @@ -112,7 +112,7 @@ static int drm_dp_cec_adap_log_addr(struct cec_adapter = *adap, u8 addr) la_mask |=3D adap->log_addrs.log_addr_mask | (1 << addr); mask[0] =3D la_mask & 0xff; mask[1] =3D la_mask >> 8; - err =3D drm_dp_dpcd_write(aux, DP_CEC_LOGICAL_ADDRESS_MASK, mask, 2); + err =3D drm_dp_dpcd_write_data(aux, DP_CEC_LOGICAL_ADDRESS_MASK, mask, 2); return (addr !=3D CEC_LOG_ADDR_INVALID && err < 0) ? err : 0; } =20 @@ -123,15 +123,14 @@ static int drm_dp_cec_adap_transmit(struct cec_adapte= r *adap, u8 attempts, unsigned int retries =3D min(5, attempts - 1); ssize_t err; =20 - err =3D drm_dp_dpcd_write(aux, DP_CEC_TX_MESSAGE_BUFFER, - msg->msg, msg->len); + err =3D drm_dp_dpcd_write_data(aux, DP_CEC_TX_MESSAGE_BUFFER, + msg->msg, msg->len); if (err < 0) return err; =20 - err =3D drm_dp_dpcd_writeb(aux, DP_CEC_TX_MESSAGE_INFO, - (msg->len - 1) | (retries << 4) | - DP_CEC_TX_MESSAGE_SEND); - return err < 0 ? err : 0; + return drm_dp_dpcd_write_byte(aux, DP_CEC_TX_MESSAGE_INFO, + (msg->len - 1) | (retries << 4) | + DP_CEC_TX_MESSAGE_SEND); } =20 static int drm_dp_cec_adap_monitor_all_enable(struct cec_adapter *adap, @@ -144,13 +143,13 @@ static int drm_dp_cec_adap_monitor_all_enable(struct = cec_adapter *adap, if (!(adap->capabilities & CEC_CAP_MONITOR_ALL)) return 0; =20 - err =3D drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_CONTROL, &val); - if (err >=3D 0) { + err =3D drm_dp_dpcd_read_byte(aux, DP_CEC_TUNNELING_CONTROL, &val); + if (!err) { if (enable) val |=3D DP_CEC_SNOOPING_ENABLE; else val &=3D ~DP_CEC_SNOOPING_ENABLE; - err =3D drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_CONTROL, val); + err =3D drm_dp_dpcd_write_byte(aux, DP_CEC_TUNNELING_CONTROL, val); } return (enable && err < 0) ? err : 0; } @@ -194,7 +193,7 @@ static int drm_dp_cec_received(struct drm_dp_aux *aux) u8 rx_msg_info; ssize_t err; =20 - err =3D drm_dp_dpcd_readb(aux, DP_CEC_RX_MESSAGE_INFO, &rx_msg_info); + err =3D drm_dp_dpcd_read_byte(aux, DP_CEC_RX_MESSAGE_INFO, &rx_msg_info); if (err < 0) return err; =20 @@ -202,7 +201,7 @@ static int drm_dp_cec_received(struct drm_dp_aux *aux) return 0; =20 msg.len =3D (rx_msg_info & DP_CEC_RX_MESSAGE_LEN_MASK) + 1; - err =3D drm_dp_dpcd_read(aux, DP_CEC_RX_MESSAGE_BUFFER, msg.msg, msg.len); + err =3D drm_dp_dpcd_read_data(aux, DP_CEC_RX_MESSAGE_BUFFER, msg.msg, msg= .len); if (err < 0) return err; =20 @@ -215,7 +214,7 @@ static void drm_dp_cec_handle_irq(struct drm_dp_aux *au= x) struct cec_adapter *adap =3D aux->cec.adap; u8 flags; =20 - if (drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_IRQ_FLAGS, &flags) < 0) + if (drm_dp_dpcd_read_byte(aux, DP_CEC_TUNNELING_IRQ_FLAGS, &flags) < 0) return; =20 if (flags & DP_CEC_RX_MESSAGE_INFO_VALID) @@ -230,7 +229,7 @@ static void drm_dp_cec_handle_irq(struct drm_dp_aux *au= x) (DP_CEC_TX_ADDRESS_NACK_ERROR | DP_CEC_TX_DATA_NACK_ERROR)) cec_transmit_attempt_done(adap, CEC_TX_STATUS_NACK | CEC_TX_STATUS_MAX_RETRIES); - drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_IRQ_FLAGS, flags); + drm_dp_dpcd_write_byte(aux, DP_CEC_TUNNELING_IRQ_FLAGS, flags); } =20 /** @@ -253,13 +252,13 @@ void drm_dp_cec_irq(struct drm_dp_aux *aux) if (!aux->cec.adap) goto unlock; =20 - ret =3D drm_dp_dpcd_readb(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1, - &cec_irq); + ret =3D drm_dp_dpcd_read_byte(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1, + &cec_irq); if (ret < 0 || !(cec_irq & DP_CEC_IRQ)) goto unlock; =20 drm_dp_cec_handle_irq(aux); - drm_dp_dpcd_writeb(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1, DP_CEC_IRQ); + drm_dp_dpcd_write_byte(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1, DP_CEC_IRQ= ); unlock: mutex_unlock(&aux->cec.lock); } @@ -269,7 +268,7 @@ static bool drm_dp_cec_cap(struct drm_dp_aux *aux, u8 *= cec_cap) { u8 cap =3D 0; =20 - if (drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_CAPABILITY, &cap) !=3D 1 || + if (drm_dp_dpcd_read_byte(aux, DP_CEC_TUNNELING_CAPABILITY, &cap) < 0 || !(cap & DP_CEC_TUNNELING_CAPABLE)) return false; if (cec_cap) --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 76C981EB185 for ; Sat, 1 Mar 2025 20:40:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861604; cv=none; b=mbnQytVQmsGHOTdJsgweDaGpCV9f7MwitxPQ9grgseIG0Z2Z75rzD5Z0mxDXAp13R7XhJjGqgAygtVNLppNkBgwNhvOH3DmpDJ2HsSgX4yHPINeo5+Uh2zh53rNy5tRr1cGoHmBaMofSui1lYWoX4x4oJgr/0k46diGknNuvivw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861604; c=relaxed/simple; bh=HHjW0O7WQSBAANLkv3PxOaSuiPNntikvFuh8IL45sr0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eBO8qgbhaoUaVk4yMLdzRQCV2FS8BeYymV4BR1h0BYCfsOqfVEfQuXdSF005mCAPyQPBhywBRPJLoA4byoxnonPJeHcaN1MZAYTS891srOjCJl74AGcS7FPj7M+4RQ8mHsQ5hCLInn/gNZJsnDTxhpNkpO5mlLAj5ZC7sas34I4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=i2jyJ+Fq; arc=none smtp.client-ip=209.85.208.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="i2jyJ+Fq" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-30795988ebeso35341111fa.3 for ; Sat, 01 Mar 2025 12:40:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861601; x=1741466401; 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=jYrdrwRo+yNorklir9aiIfrQ532fAXHnljH3DnfnqN8=; b=i2jyJ+Fq9Ynwioh9AzL4G5Hb6UcPpaXbkIcybPR39BCWsubukVO4kqNVyxMmTFZl6u pEX7canjMta59MFCCxU8n3tlOiZWEhWjMUaNXKAeGVgUdZ91qnOxfAr4BHmB1opqO/0l hnfJHvq778rCQ09BuCMv0OJm+CMVw8jd4ffxMpWAMqqWiHvnFznj+MsTy0rxuz8v9kNy 3jrNkgi+VfOk5KU9L2kHL32aDnptGVwNQLtQ6PpUs1wRg1mljdtNa3zPilU5Ba68mAdY Th6IjDVw6Fqv7GIkYkkdfeBePAGP2dGpoON9FdBN4VooYBMwdOasGXOCodI01jinZdwa pSQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861601; x=1741466401; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jYrdrwRo+yNorklir9aiIfrQ532fAXHnljH3DnfnqN8=; b=AhT9xSBuO1JZL5tE1oJ8ONPyKrcx23BDKtSZDzWpVuFu/QGkr017YB/DyX40YILH2R zxbyUxJexVUODILCh9QCCvOtG6XzbJc8NTh3prkWiiLaBpcoilDNvQq2XchfXrU4EFEf /+9jf5Bl7xcUsnomqZjJZZHhu61eEI/A+hEvKRiHT9xwRXtVDWjj8e8CLRNo5mCUPEe1 Ra225v4fehF4VowpfsssjWcR96T9nrWs2e1j0abYTfSqq9cDHGPR0Sm3JUv9C4fAvYfN y1aYrBwJwghzCInVHNGv7QwaRfaORV8yDP4L6aWp+esPj5GEC2Os4X6r51IbLky/9nb7 TnVg== X-Forwarded-Encrypted: i=1; AJvYcCXmeXZ74/nqHg47bNoaWAw7oOlY/kbQFG8mfdW/qgVbKcml0U6G2lrNzTWmgqwLp3CkCsgkwTCm8drPGhQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwHvQMI/0DxjGGjiMHJcelGiv4aKSFIZ/4Bl+GBWEQBXAIkZ3Oe j0Sa2K81eNaRAPvN8MDU24CePZa9Z12QEcakT/s/vUzQdi6hpVziepBYL1MGXSc= X-Gm-Gg: ASbGnctkY2DYmS5+xspvZcxa7xAGy6QRqK35ivJC/doScOszBChmaMqfVFkMWBZi6UW UHHmzNKiABtW0tem8MGNAHLsgdRnOrE639o7hYXgpiXEX39ddSpxWbIwQFDHqzDqV7RjvU6ZATZ pvig0jebE1bwuJdvzmi9WCkCmPFW3j9hH5tXabSgpva3QbVAk2wqforLhxY1DVXCpf1Up9l1/fm pKpwTS9R+cz1XMZZ1KivNbqmnuK3hDSGvEeS55bebq3L2zrDTPvbap0MK5z35fUbqCIUQs85TZu RSTkUp3m00HP+TjZYz+GSzfQn0nTVoXXkoQMQXZtn3rP/pVOEwT8 X-Google-Smtp-Source: AGHT+IFIQ73CSqterSygP59oLSLGB7LkTMeGFU1IoItlJFqHpDnIUflR4fLf8ybWK1VQb+C9fX5cNg== X-Received: by 2002:a2e:a588:0:b0:308:f4cc:9519 with SMTP id 38308e7fff4ca-30b932123b4mr30410351fa.5.1740861600540; Sat, 01 Mar 2025 12:40:00 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.39.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:39:59 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:41 +0200 Subject: [PATCH RFC v2 6/7] drm/display: dp-mst-topology: use new DCPD access helpers 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: <20250301-drm-rework-dpcd-access-v2-6-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8924; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=HHjW0O7WQSBAANLkv3PxOaSuiPNntikvFuh8IL45sr0=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ/rhgglmUrfWx2drzfArilcwPvWRuXfzrNXn0wu5VwWuU dixLbOjk9GYhYGRi0FWTJHFp6Blasym5LAPO6bWwwxiZQKZwsDFKQATcdJn/2eVzHx3utvM/Wlv Ej5v/b1a0lrxc0f9su7HXqJW8buc7wRvEI19NE+Thd3H6T1LaZz8O+Y/tjaWJ208jPr3mCxbN/W WRVM5s4PhEa1XPTOqlDnWG98r/vGAMXFxVrtNF4fLD/Fnlq92LXK3Tk9/0cU1vUvvQe4NocKWZd /6QjuKj0pe2s8Z5DhRKUDXbZ6kidDadsM9UVasL/XPfex08V9WeSf1X9mbigBBtYjlN2NMjY6Kf aiTOM53bOKNTW9/y+8/mrN/cl+n9B63lbkvJ2e/8/jLZXPVQO7xVfeLwuu2+d8vzXQ/V60VOL9P KWWyZZfok71HPWXemK7ZdOOOdru8xTfj7rLHnoI+esd5AQ== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Switch drm_dp_mst_topology.c to use new set of DPCD read / write helpers. Reviewed-by: Lyude Paul Acked-by: Jani Nikula Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_dp_mst_topology.c | 105 +++++++++++++---------= ---- 1 file changed, 51 insertions(+), 54 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/dr= m/display/drm_dp_mst_topology.c index 8b68bb3fbffb04dfcbd910fd0fd78b998440d6e8..e8716e73480bdf6abbef71897d1= 632f69a7b8a47 100644 --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c @@ -2201,15 +2201,12 @@ static int drm_dp_check_mstb_guid(struct drm_dp_mst= _branch *mstb, guid_t *guid) mstb->port_parent, DP_GUID, sizeof(buf), buf); } else { - ret =3D drm_dp_dpcd_write(mstb->mgr->aux, - DP_GUID, buf, sizeof(buf)); + ret =3D drm_dp_dpcd_write_data(mstb->mgr->aux, + DP_GUID, buf, sizeof(buf)); } } =20 - if (ret < 16 && ret > 0) - return -EPROTO; - - return ret =3D=3D 16 ? 0 : ret; + return ret; } =20 static void build_mst_prop_path(const struct drm_dp_mst_branch *mstb, @@ -2744,14 +2741,13 @@ static int drm_dp_send_sideband_msg(struct drm_dp_m= st_topology_mgr *mgr, do { tosend =3D min3(mgr->max_dpcd_transaction_bytes, 16, total); =20 - ret =3D drm_dp_dpcd_write(mgr->aux, regbase + offset, - &msg[offset], - tosend); - if (ret !=3D tosend) { - if (ret =3D=3D -EIO && retries < 5) { - retries++; - goto retry; - } + ret =3D drm_dp_dpcd_write_data(mgr->aux, regbase + offset, + &msg[offset], + tosend); + if (ret =3D=3D -EIO && retries < 5) { + retries++; + goto retry; + } else if (ret < 0) { drm_dbg_kms(mgr->dev, "failed to dpcd write %d %d\n", tosend, ret); =20 return -EIO; @@ -3624,7 +3620,7 @@ enum drm_dp_mst_mode drm_dp_read_mst_cap(struct drm_d= p_aux *aux, if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_12) return DRM_DP_SST; =20 - if (drm_dp_dpcd_readb(aux, DP_MSTM_CAP, &mstm_cap) !=3D 1) + if (drm_dp_dpcd_read_byte(aux, DP_MSTM_CAP, &mstm_cap) < 0) return DRM_DP_SST; =20 if (mstm_cap & DP_MST_CAP) @@ -3679,10 +3675,10 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_m= st_topology_mgr *mgr, bool ms mgr->mst_primary =3D mstb; drm_dp_mst_topology_get_mstb(mgr->mst_primary); =20 - ret =3D drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, - DP_MST_EN | - DP_UP_REQ_EN | - DP_UPSTREAM_IS_SRC); + ret =3D drm_dp_dpcd_write_byte(mgr->aux, DP_MSTM_CTRL, + DP_MST_EN | + DP_UP_REQ_EN | + DP_UPSTREAM_IS_SRC); if (ret < 0) goto out_unlock; =20 @@ -3697,7 +3693,7 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst= _topology_mgr *mgr, bool ms mstb =3D mgr->mst_primary; mgr->mst_primary =3D NULL; /* this can fail if the device is gone */ - drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0); + drm_dp_dpcd_write_byte(mgr->aux, DP_MSTM_CTRL, 0); ret =3D 0; mgr->payload_id_table_cleared =3D false; =20 @@ -3763,8 +3759,8 @@ EXPORT_SYMBOL(drm_dp_mst_topology_queue_probe); void drm_dp_mst_topology_mgr_suspend(struct drm_dp_mst_topology_mgr *mgr) { mutex_lock(&mgr->lock); - drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, - DP_MST_EN | DP_UPSTREAM_IS_SRC); + drm_dp_dpcd_write_byte(mgr->aux, DP_MSTM_CTRL, + DP_MST_EN | DP_UPSTREAM_IS_SRC); mutex_unlock(&mgr->lock); flush_work(&mgr->up_req_work); flush_work(&mgr->work); @@ -3813,18 +3809,18 @@ int drm_dp_mst_topology_mgr_resume(struct drm_dp_ms= t_topology_mgr *mgr, goto out_fail; } =20 - ret =3D drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, - DP_MST_EN | - DP_UP_REQ_EN | - DP_UPSTREAM_IS_SRC); + ret =3D drm_dp_dpcd_write_byte(mgr->aux, DP_MSTM_CTRL, + DP_MST_EN | + DP_UP_REQ_EN | + DP_UPSTREAM_IS_SRC); if (ret < 0) { drm_dbg_kms(mgr->dev, "mst write failed - undocked during suspend?\n"); goto out_fail; } =20 /* Some hubs forget their guids after they resume */ - ret =3D drm_dp_dpcd_read(mgr->aux, DP_GUID, buf, sizeof(buf)); - if (ret !=3D sizeof(buf)) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, DP_GUID, buf, sizeof(buf)); + if (ret < 0) { drm_dbg_kms(mgr->dev, "dpcd read failed - undocked during suspend?\n"); goto out_fail; } @@ -3883,8 +3879,8 @@ drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr = *mgr, bool up, *mstb =3D NULL; =20 len =3D min(mgr->max_dpcd_transaction_bytes, 16); - ret =3D drm_dp_dpcd_read(mgr->aux, basereg, replyblock, len); - if (ret !=3D len) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, basereg, replyblock, len); + if (ret < 0) { drm_dbg_kms(mgr->dev, "failed to read DPCD down rep %d %d\n", len, ret); return false; } @@ -3922,9 +3918,9 @@ drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr = *mgr, bool up, curreply =3D len; while (replylen > 0) { len =3D min3(replylen, mgr->max_dpcd_transaction_bytes, 16); - ret =3D drm_dp_dpcd_read(mgr->aux, basereg + curreply, - replyblock, len); - if (ret !=3D len) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, basereg + curreply, + replyblock, len); + if (ret < 0) { drm_dbg_kms(mgr->dev, "failed to read a chunk (len %d, ret %d)\n", len, ret); return false; @@ -4873,9 +4869,9 @@ static bool dump_dp_payload_table(struct drm_dp_mst_t= opology_mgr *mgr, int i; =20 for (i =3D 0; i < DP_PAYLOAD_TABLE_SIZE; i +=3D 16) { - if (drm_dp_dpcd_read(mgr->aux, - DP_PAYLOAD_TABLE_UPDATE_STATUS + i, - &buf[i], 16) !=3D 16) + if (drm_dp_dpcd_read_data(mgr->aux, + DP_PAYLOAD_TABLE_UPDATE_STATUS + i, + &buf[i], 16) < 0) return false; } return true; @@ -4964,23 +4960,24 @@ void drm_dp_mst_dump_topology(struct seq_file *m, } seq_printf(m, "dpcd: %*ph\n", DP_RECEIVER_CAP_SIZE, buf); =20 - ret =3D drm_dp_dpcd_read(mgr->aux, DP_FAUX_CAP, buf, 2); - if (ret !=3D 2) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, DP_FAUX_CAP, buf, 2); + if (ret < 0) { seq_printf(m, "faux/mst read failed\n"); goto out; } seq_printf(m, "faux/mst: %*ph\n", 2, buf); =20 - ret =3D drm_dp_dpcd_read(mgr->aux, DP_MSTM_CTRL, buf, 1); - if (ret !=3D 1) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, DP_MSTM_CTRL, buf, 1); + if (ret < 0) { seq_printf(m, "mst ctrl read failed\n"); goto out; } seq_printf(m, "mst ctrl: %*ph\n", 1, buf); =20 /* dump the standard OUI branch header */ - ret =3D drm_dp_dpcd_read(mgr->aux, DP_BRANCH_OUI, buf, DP_BRANCH_OUI_HEA= DER_SIZE); - if (ret !=3D DP_BRANCH_OUI_HEADER_SIZE) { + ret =3D drm_dp_dpcd_read_data(mgr->aux, DP_BRANCH_OUI, buf, + DP_BRANCH_OUI_HEADER_SIZE); + if (ret < 0) { seq_printf(m, "branch oui read failed\n"); goto out; } @@ -6104,14 +6101,14 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(stru= ct drm_dp_mst_port *port) =20 /* DP-to-DP peer device */ if (drm_dp_mst_is_virtual_dpcd(immediate_upstream_port)) { - if (drm_dp_dpcd_read(&port->aux, - DP_DSC_SUPPORT, &endpoint_dsc, 1) !=3D 1) + if (drm_dp_dpcd_read_data(&port->aux, + DP_DSC_SUPPORT, &endpoint_dsc, 1) < 0) return NULL; - if (drm_dp_dpcd_read(&port->aux, - DP_FEC_CAPABILITY, &endpoint_fec, 1) !=3D 1) + if (drm_dp_dpcd_read_data(&port->aux, + DP_FEC_CAPABILITY, &endpoint_fec, 1) < 0) return NULL; - if (drm_dp_dpcd_read(&immediate_upstream_port->aux, - DP_DSC_SUPPORT, &upstream_dsc, 1) !=3D 1) + if (drm_dp_dpcd_read_data(&immediate_upstream_port->aux, + DP_DSC_SUPPORT, &upstream_dsc, 1) < 0) return NULL; =20 /* Enpoint decompression with DP-to-DP peer device */ @@ -6149,8 +6146,8 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct= drm_dp_mst_port *port) if (drm_dp_has_quirk(&desc, DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD)) { u8 dpcd_ext[DP_RECEIVER_CAP_SIZE]; =20 - if (drm_dp_dpcd_read(immediate_upstream_aux, - DP_DSC_SUPPORT, &upstream_dsc, 1) !=3D 1) + if (drm_dp_dpcd_read_data(immediate_upstream_aux, + DP_DSC_SUPPORT, &upstream_dsc, 1) < 0) return NULL; =20 if (!(upstream_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED)) @@ -6172,11 +6169,11 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(stru= ct drm_dp_mst_port *port) * therefore the endpoint needs to be * both DSC and FEC capable. */ - if (drm_dp_dpcd_read(&port->aux, - DP_DSC_SUPPORT, &endpoint_dsc, 1) !=3D 1) + if (drm_dp_dpcd_read_data(&port->aux, + DP_DSC_SUPPORT, &endpoint_dsc, 1) < 0) return NULL; - if (drm_dp_dpcd_read(&port->aux, - DP_FEC_CAPABILITY, &endpoint_fec, 1) !=3D 1) + if (drm_dp_dpcd_read_data(&port->aux, + DP_FEC_CAPABILITY, &endpoint_fec, 1) < 0) return NULL; if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) && (endpoint_fec & DP_FEC_CAPABLE)) --=20 2.39.5 From nobody Wed Dec 17 04:37:11 2025 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D364F1EB1A3 for ; Sat, 1 Mar 2025 20:40:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861606; cv=none; b=s6daEGhM22CCdTLd5vR6hJfqnSLuHwJ43VhZXFdDdxUlDhMx5NjbNbdF4tTq9Xbay+3UJMFwTAput73qeo0brnqKAfaGf4iHh0UB2O25KtprZ8ZhRGqFj8tBV+6RwoEgvY7Rtgh/XNDQNwEwoqTZuPVzYFYG5koDry0S++KSHmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740861606; c=relaxed/simple; bh=AezDpTs9i2rYRC6AeDwZvqAV87zlWZZG2GdTd51PPFs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n2ryD4GIE9d3e3+vh+xJXuYE9X7XynUsLSDFZnS1o84gBTc81Tej8Z1pG1A74mM++jr+uaoqezMLaBEHPahwDcaUvu9Y8nn9/qTMChyrgnfYoNAJCS3LQBLikkcvuXD9z5bSH7ubovMi07ybtqiBlWPdDOc6p7xe4yeXg4xcsyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=zrAYQ2nM; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="zrAYQ2nM" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-3078fb1fa28so27153411fa.3 for ; Sat, 01 Mar 2025 12:40:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740861603; x=1741466403; 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=/rrKZtC/bMyEQV7p861KyPu6bgZA7HKXFytfcKKDOBo=; b=zrAYQ2nMM/alrGYOPsjP3jvzE0EoHdk/ZQM7vdDCI+J6VSXcoofTh4qyjyvhid8CJt MvoOIbetiPjIDxU56erOKuAOe2Hoy+SGsOnam0gqRmOqDTNgBp60wgufjh8uvJJKfJsa hmBGT7ML32ZM9YV1vsEpt/JDAZduYMertnNDmPqh0XFUh/I3e2dl5/jvTyLF3jDx+hRb 2K+9P5h0O830MfWhCxn5MmBn0gx+9yJdjOvOhugQ2vM88XGHTZWtx3PKgI058Xr3mLy8 5mPNYwMTT1fyG5S498KzY/jkcl/5GfuHtbjiEBebb5L9CYZHMG6NZf3bCjgMjBRacZSQ O6nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740861603; x=1741466403; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/rrKZtC/bMyEQV7p861KyPu6bgZA7HKXFytfcKKDOBo=; b=VjNeQR5PRg5q2krIoDd2wERM9n6yvteHTic4Foik73vcNtNkOg4B61TTWpY0BJ5WTq VU/r7Clt1mYnRV7mzJCtN7xM9Ao7s+V8IXBX2au+b/BDzEKQJROXOPDO2nE3418z5ep2 zLXNfkjCsT4oNm0Non3aYH6dFIxPrbF54vvDWW6A4FLUwvqbXt3Gm7WYG0O/sAkRo+1E O1DWld74XfWZQwg7PAY5FyZ0JnEBzQPIrklyLPt/LDRvcVGgAwlYlPjqUmVi12e6lnTj K+i822tJvr8EIu716oS9lz6tLsqfIUZiMxo/aA5EUGPBTBaDEY51GqY7isP52E4bNswl I91Q== X-Forwarded-Encrypted: i=1; AJvYcCW29kjtig1kjbe87NJV/PNLyr+D5yRY1bzwqjoQq7z8gHqYxg9bX1MGvY2p3EUow+N2HepWsaeTZXF89e0=@vger.kernel.org X-Gm-Message-State: AOJu0YxWT8nhVdiQNTipzUQbvKg8rLHgPeOa0YTzCb59vGu6IfCNv2p3 vqt5J00yB8Mh3ZqJmUk5+HNoxfW2QSPDMTSDyGRGYpRsFQDBTA/WzshVKytZEJI= X-Gm-Gg: ASbGncu2w04YJmU6VoQX1T/YhuFYQ/lOK1KvbBl9ts/Rsmi2+xvQeCJDfjekYBk+zo6 tjIgagL5bcseo2Wgd6A17UQcn2Nz/a9VuMFhIQ/S/3lEbQkJqPaJgu43Aexov70drtOKUMbGQzC nCGugmgYlIDCeovYqfx0MIqY4W1pDtPlhuKsZqNbvG5g1NacyK9/NlBUDCrkwIkp5+YwRzDGBME ahbxUPBDqitCkiofoPQxIa38ubypL9fVO02fThrrMuZ7mu14rzYZWvMCXWgoZag9bWbdRTgb6ij UMrnxIbUxpgd7sZ/0DZiSc9O47zNjPxIpUJbtvDO05+XllP4aa9M X-Google-Smtp-Source: AGHT+IGzJuIl1nriLCLHVpXfC1qxg6TocNRgoMvm3sF5xsxOv1PgMaKL1vLpURJQMUg29MdXarznzw== X-Received: by 2002:a05:651c:b2a:b0:30b:8dbd:b7b with SMTP id 38308e7fff4ca-30b9325c8eemr30950491fa.19.1740861602945; Sat, 01 Mar 2025 12:40:02 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30b931524efsm6668921fa.60.2025.03.01.12.40.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Mar 2025 12:40:01 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 01 Mar 2025 22:39:42 +0200 Subject: [PATCH RFC v2 7/7] drm/display: dp-tunnel: use new DCPD access helpers 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: <20250301-drm-rework-dpcd-access-v2-7-4d92602fc7cd@linaro.org> References: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> In-Reply-To: <20250301-drm-rework-dpcd-access-v2-0-4d92602fc7cd@linaro.org> To: Lyude Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4082; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=AezDpTs9i2rYRC6AeDwZvqAV87zlWZZG2GdTd51PPFs=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ/rhggk3/sV12amrbT3Pe02nov6j6csCu47VZ5cXfao4/ dVhquTeTkZjFgZGLgZZMUUWn4KWqTGbksM+7JhaDzOIlQlkCgMXpwBMxKGa/X+hwLufpUrF3SdX 3LhoFNIVapbxLr/w5zWZ7wGZP9b8KNj6JTX38dnpAgV5MdbTipeK//8T4qjhHx03Ued81S8Xq9N GwSWXUpYXSV2wTg76x/C0v6SNy7o/J1XB7Ex53YUas69tWerxP4R9r5wQLjFvMWi9vPKKzk+rK0 nyzGFHEh6L8Qb63PeZ7/Bvy5l1/1tNbQ1N/7lcq+H+zMWo0Ffwku3CfoHri9uFTWf/+KOtNy0o4 dHPJ/fvVSYzxZecW/h+fprD6iPefqtXMi/hcuVs23Wqd+OjF4+bg+M6XxUfakub9Hep1oRiFe07 u+P36vAbxNlfUVZfW/zGmZ3PuTWwVlmAbbv2P0OXXaoOAA== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Switch drm_dp_tunnel.c to use new set of DPCD read / write helpers. Reviewed-by: Lyude Paul Acked-by: Jani Nikula Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_dp_tunnel.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index 90fe07a89260e21e78f2db7f57a90602be921a11..076edf1610480275c62395334ab= 0536befa42f15 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -222,7 +222,7 @@ static int read_tunnel_regs(struct drm_dp_aux *aux, str= uct drm_dp_tunnel_regs *r while ((len =3D next_reg_area(&offset))) { int address =3D DP_TUNNELING_BASE + offset; =20 - if (drm_dp_dpcd_read(aux, address, tunnel_reg_ptr(regs, address), len) <= 0) + if (drm_dp_dpcd_read_data(aux, address, tunnel_reg_ptr(regs, address), l= en) < 0) return -EIO; =20 offset +=3D len; @@ -913,7 +913,7 @@ static int set_bw_alloc_mode(struct drm_dp_tunnel *tunn= el, bool enable) u8 mask =3D DP_DISPLAY_DRIVER_BW_ALLOCATION_MODE_ENABLE | DP_UNMASK_BW_AL= LOCATION_IRQ; u8 val; =20 - if (drm_dp_dpcd_readb(tunnel->aux, DP_DPTX_BW_ALLOCATION_MODE_CONTROL, &v= al) < 0) + if (drm_dp_dpcd_read_byte(tunnel->aux, DP_DPTX_BW_ALLOCATION_MODE_CONTROL= , &val) < 0) goto out_err; =20 if (enable) @@ -921,7 +921,7 @@ static int set_bw_alloc_mode(struct drm_dp_tunnel *tunn= el, bool enable) else val &=3D ~mask; =20 - if (drm_dp_dpcd_writeb(tunnel->aux, DP_DPTX_BW_ALLOCATION_MODE_CONTROL, v= al) < 0) + if (drm_dp_dpcd_write_byte(tunnel->aux, DP_DPTX_BW_ALLOCATION_MODE_CONTRO= L, val) < 0) goto out_err; =20 tunnel->bw_alloc_enabled =3D enable; @@ -1039,7 +1039,7 @@ static int clear_bw_req_state(struct drm_dp_aux *aux) { u8 bw_req_mask =3D DP_BW_REQUEST_SUCCEEDED | DP_BW_REQUEST_FAILED; =20 - if (drm_dp_dpcd_writeb(aux, DP_TUNNELING_STATUS, bw_req_mask) < 0) + if (drm_dp_dpcd_write_byte(aux, DP_TUNNELING_STATUS, bw_req_mask) < 0) return -EIO; =20 return 0; @@ -1052,7 +1052,7 @@ static int bw_req_complete(struct drm_dp_aux *aux, bo= ol *status_changed) u8 val; int err; =20 - if (drm_dp_dpcd_readb(aux, DP_TUNNELING_STATUS, &val) < 0) + if (drm_dp_dpcd_read_byte(aux, DP_TUNNELING_STATUS, &val) < 0) return -EIO; =20 *status_changed =3D val & status_change_mask; @@ -1095,7 +1095,7 @@ static int allocate_tunnel_bw(struct drm_dp_tunnel *t= unnel, int bw) if (err) goto out; =20 - if (drm_dp_dpcd_writeb(tunnel->aux, DP_REQUEST_BW, request_bw) < 0) { + if (drm_dp_dpcd_write_byte(tunnel->aux, DP_REQUEST_BW, request_bw) < 0) { err =3D -EIO; goto out; } @@ -1196,13 +1196,13 @@ static int check_and_clear_status_change(struct drm= _dp_tunnel *tunnel) u8 mask =3D DP_BW_ALLOCATION_CAPABILITY_CHANGED | DP_ESTIMATED_BW_CHANGED; u8 val; =20 - if (drm_dp_dpcd_readb(tunnel->aux, DP_TUNNELING_STATUS, &val) < 0) + if (drm_dp_dpcd_read_byte(tunnel->aux, DP_TUNNELING_STATUS, &val) < 0) goto out_err; =20 val &=3D mask; =20 if (val) { - if (drm_dp_dpcd_writeb(tunnel->aux, DP_TUNNELING_STATUS, val) < 0) + if (drm_dp_dpcd_write_byte(tunnel->aux, DP_TUNNELING_STATUS, val) < 0) goto out_err; =20 return 1; @@ -1215,7 +1215,7 @@ static int check_and_clear_status_change(struct drm_d= p_tunnel *tunnel) * Check for estimated BW changes explicitly to account for lost * BW change notifications. */ - if (drm_dp_dpcd_readb(tunnel->aux, DP_ESTIMATED_BW, &val) < 0) + if (drm_dp_dpcd_read_byte(tunnel->aux, DP_ESTIMATED_BW, &val) < 0) goto out_err; =20 if (val * tunnel->bw_granularity !=3D tunnel->estimated_bw) @@ -1300,7 +1300,7 @@ int drm_dp_tunnel_handle_irq(struct drm_dp_tunnel_mgr= *mgr, struct drm_dp_aux *a { u8 val; =20 - if (drm_dp_dpcd_readb(aux, DP_TUNNELING_STATUS, &val) < 0) + if (drm_dp_dpcd_read_byte(aux, DP_TUNNELING_STATUS, &val) < 0) return -EIO; =20 if (val & (DP_BW_REQUEST_SUCCEEDED | DP_BW_REQUEST_FAILED)) --=20 2.39.5