From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D41604F96A5 for ; Mon, 19 Oct 2026 13:12:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792415568; cv=none; b=Kn8Oe3fU94nkeLJ6Xg334T6Ra60Cmb4wjbMQqmlx1FrspO0Qmf3mgmJH9w4ktVW6yq3xxhLkpKnet/N2UuH8MMsRwL88GlNYdZVT/dxiXKXQt2hHhyQKXEr6QP9c1ILRDxMog3KunDhu8jHo1fxh71cqA6tsFoZRCwVFpTGkUu8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792415568; c=relaxed/simple; bh=RQQTV6F8Gho50u3pkasrI5WHU3//8mnfLirnX/eGUEA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m0WXBvPdqjahaC6TG6VqSIV5sgLFzdL9ZK/JJO08ZXh1DOdU/5NfMBylaJgZQ54SWZ/wTNOv8xDZpInJxRCXmSvbl5BIDnEMOjrSrtN09cztDyJ3S/JdqBLSXcfd7pVYGZnq/CXvehSGTLNF70FwTTjiRtcZzthQuWSClDrGhrE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ptesDcJE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BtY5+zXV; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ptesDcJE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BtY5+zXV" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 69J8Oq251665414 for ; Mon, 19 Oct 2026 13:12:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6kR0wYJi5BkqYMmIt/Uxs5VhTS0LKD7uaMFFExvkTAc=; b=ptesDcJEX2PKVdZR TBcA/OlZg+1cKIHDRqJSeHN62glL7/MQSdw5NDGvKAQ//+lAzxPgn/2TpmM1Csb1 sm1N2m72uIWygPsOLN+pZVPgCGMz7D868OXYQWxLPXjvYOUvHHM19qamF9aSocEz Sa2d/zqtsc9sc/dV/0WK3IccU83lL+bDQ9CAclo/p09NKRfOXUKvAaV7bqEsrSQ9 HHZAw15T9mKGu4YJBDtVZSIbEZvIRQwWVQXMazX+MzhGT5Xl0pY61+rn544Akzo0 ZIwaxb05SFOsEJE67DfT0tYd44Ge1FCucDcrtBAmJ34h4B5yok6zHwGTOllRWH6u fSbfuw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4hdf3n183b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 19 Oct 2026 13:12:45 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-93f1e62510cso509371785a.1 for ; Mon, 19 Oct 2026 06:12:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1792415565; x=1793020365; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6kR0wYJi5BkqYMmIt/Uxs5VhTS0LKD7uaMFFExvkTAc=; b=BtY5+zXVjE1JwHXoRJMpWrz0SQwXdfzOvF6nkYmKHUeJynMGRqi+5XXS3BlZaThxik DHhD64cgAxuap6VJDVMQB6z1pioRWNbDvmb0+VCm5aZ3UcSABkeXuX3/vWHDGANgBIb/ Q2ooM4flKb5nCWgI0K1Oj+lhcXVJRCY0mXJxG0Ec/cMOsaaXGSmA6jeDrcqMzkC5M+wE 8KDd4uA1y6eDriTQABkUgbMOItZaBtoJJQmWmvOJKejuxu5OmcC3xkxN6S1flP6rj/Hu 9hs9hznKsdtKYuezxGFhYR01s3ZeSonP3ZBoCVfwXd+172mdkTaHSV8z7+akWb+V0AQh AtXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792415565; x=1793020365; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6kR0wYJi5BkqYMmIt/Uxs5VhTS0LKD7uaMFFExvkTAc=; b=Yeg8SioEMUQjGmUumgLSDfpIKVjReLn5G/LqLoMRZta1gY2mb151Y9CO3IekfIA5p5 p6gOKWvH/t/aWvFJ7KmuZYg05kg+WUjdRviNO1VDpBXKriCG4d5ixnyD/NNX1Fc9uL+N 8pKmi/5NotL2fURhGBtoSaDO46OWVQf+DHFJqvu4aJ3DolEZjqjoKHghpdpgb11/QEOU D0YB7Cf9XSS1sR9z0NV6ug7Nbc2x3wa/NfvXMTSUat9pYXGVtzOO0cw9DJjCiLPFRlQR 0iK1gx8v2U9uxUB+J0W43muS3BTRkpSQeXHrcmZRnqAFpmXuHgsk15bI6h6GTktsaqeC dhLQ== X-Forwarded-Encrypted: i=1; AKwUvBxKfNklFaodwZiEr6GqzLV97J2w4BNThIFY4vc/x7kz21RQgmxKqDyWLy+b/X4do6vzuaxWC9ZjMPJmZNg=@vger.kernel.org X-Gm-Message-State: AFq9FYIqXJG6MgnquuR1UfthX1HBfw5F+d0G1KnLR7xRiZ1JZd+0IQ6r +VfwE8UT2M0T5x0jK3lw66fjDeFNg0xKk2py3jXU2Zd1JOcVMeNWsU9hVueyIWlDwWGowasBur9 Rj+dm3S+wbZOI5IWQbjDqIWC2/DnnatX0DPxE7JjjFCrLpkLXTuEr4iGofwl/UDyFQew= X-Gm-Gg: AYBFou3vs//cCHLSzenVZymPM7bbxPJl7ikSXvAx0b8fhkIt/fu5wdKkTrs2MxTG6KT JxidP/JCK89FCiMKQotmnskmqjFZuseWHbtlocp2dA5bTsj1UO3eLfWvz+X3/j7kUsR3ydRf/B6 YXlOInpgOmbxJt3LX6tmMzrt7JDiRh7ydbbsHwzwkvIQJCeiv7bg+rV8WIk6WJ5IChyFUJWac/Q BKWmIKPVSHsoywt01tfKtSnwt0jJPKnyX7S3nNHgT0vYd4FeECTyrv89QOq+5VqMNCN9mNMe8D1 xsAfZTuBsZe7UThqp0avTMLVGjaSXx4OWIKUJEdvaHoCsa+fGqoXec3YwGr8LHD5GesK7R2+Z0K qGrZwV+hqYBSYZMMPqrhCWG97ESJ/ccBlYRCMTA8LYlAaS/sIhlc29bCPPHHtv9wwVemycVfRuG imThv9ex4K6BX7 X-Received: by 2002:a05:620a:4888:b0:93a:10b0:aee7 with SMTP id af79cd13be357-93f29d4d901mr1300122785a.44.1792415564684; Mon, 19 Oct 2026 06:12:44 -0700 (PDT) X-Received: by 2002:a05:620a:4888:b0:93a:10b0:aee7 with SMTP id af79cd13be357-93f29d4d901mr1300116785a.44.1792415564088; Mon, 19 Oct 2026 06:12:44 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3ab24f5dd5esm23432581fa.6.2026.10.19.06.12.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Oct 2026 06:12:42 -0700 (PDT) From: Dmitry Baryshkov Date: Mon, 19 Oct 2026 16:12:27 +0300 Subject: [PATCH v7 1/9] drm/amd/display: embed the writeback encoder in amdgpu_dm_wb_connector 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: 7bit Message-Id: <20261019-wb-drop-encoder-v7-1-d4288a26eb54@oss.qualcomm.com> References: <20261019-wb-drop-encoder-v7-0-d4288a26eb54@oss.qualcomm.com> In-Reply-To: <20261019-wb-drop-encoder-v7-0-d4288a26eb54@oss.qualcomm.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , John Harrison , Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Liviu Dudau , Laurent Pinchart , Tomi Valkeinen , Kieran Bingham , Geert Uytterhoeven , Magnus Damm , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance , Louis Chauvet , Mihail Atanassov , Eric Anholt , Rob Clark , Brian Starkey Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6137; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=RQQTV6F8Gho50u3pkasrI5WHU3//8mnfLirnX/eGUEA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBq1hdDDoGN72GSrxZ+UIvVOsBEeFks6m+TV715q SXH7R4jTHGJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCatYXQwAKCRCLPIo+Aiko 1ZHRCACKVigu2OyQSC7weKOsx7VpYKUWBAeSxrZkrlX4ibao6F76CXxYbwJ7x4xP/aQMKDNwEcq xoaOfJrF35y4HGjYuHNEWV2foSgAcPRXGDqofJlDHh5aakKKJ76WUWq3qUrWtxEMpLWrVWBPHOD zykFJWy+R6wSZE/VaX1oibyX8FgMjmPfr/dhiST/e0SMCmm3+R/p+GijH675g7EiQv5sbNR2NQE ENyfYR/wsLgah1xDAzJHi06dDITzeh3rUHeHAhnESnA8K45ZCpd55XJ7JDuXrco4xAHLHXDV6Hg bSmJwL7AGAO/ClKNDsiOKFSFP++i69y9ueJgJSquIUPlcQFi X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Info: AW1haW4tMjYxMDE5MDA1MiBTYWx0ZWRfX0lsSHkFZqvaz 8O5OKrput5pIkFmLEemFt/dm/ayZrRWOHHFKcBr6L6hdioqRNYAIoqMGTWE8gIoFNjgEsS4PYqc TYzIntbRQatFLNULIl+EgbmxYJdslj0= X-Proofpoint-ORIG-GUID: saw3zHftkSZAjZhp-pWYQ7dcHlCSZVQX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMDE5MDA1MiBTYWx0ZWRfX8AxmO7SyYO1f 1umU8jKAtOxSl/2hBCdqlKgqsFf+EatrL0sL/v1SWOwviYP2Wk95ACaz3U3gKRWe+ACnquPhzCQ a8V8ENdJOfihHDz9G5mb8lC9n6HtAyVDYvTR3eUOHY/vei8UeuWyrxWwqgPw7ZVIGIZG9lZzPG+ dOEvEyyvXYC6cLkMU/IpyPgsoe550QhAQPXeXIIzRo9Trxjiw+Bh8jM9t0cR4di0Xk9lwPFU16y RLYskyoSTOFi+HN5nkhlb3AsnFKF1CSSodHz4CW0wsiomzFkcZGRz7/MYkl9U2PUM1w50IAT+GM Sx4j14e1oJkmmWD28CKu3xwBOkozPgZXPKfwRtLO5xIcip7E1txxt7bg8EUTCJoQ8fqBCbmgklP hMCiy+SXAeU4ZRHoIZsWOIS6dQ3PXjHSc35cMsVVYk9USLYqfGBm+YjMY+BJ6QY5CgoOZATq3ii 8BMbDERnAvCXUC7YEIQ== X-Proofpoint-GUID: saw3zHftkSZAjZhp-pWYQ7dcHlCSZVQX X-Authority-Analysis: v=2.4 cv=Zf2IpcVA c=1 sm=1 tr=0 ts=6ad6174e cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=660iZSQnnn4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=_MfM8nSJvC0osUG94L8A:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-10-19_03,2026-10-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 phishscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610080000 definitions=main-2610190052 drm_writeback_connector_init() hides the encoder inside struct drm_writeback_connector, which is the only reason that structure carries an encoder at all. Every other writeback user already owns its encoder. Embed the encoder in the driver's own structure and register the connector with drm_writeback_connector_init_with_encoder(), so that the encoder can be dropped from drm_writeback_connector. Assisted-by: LLM Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 29 ++++++++++++++++------ .../amd/display/amdgpu_dm/tests/amdgpu_dm_test.c | 4 +-- .../display/amdgpu_dm/tests/amdgpu_dm_wb_test.c | 4 +-- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 5e106b65034d..07dd69b42e83 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4805,7 +4805,7 @@ dm_set_writeback(struct amdgpu_display_manager *dm, goto cleanup; } - acrtc = to_amdgpu_crtc(wb_conn->encoder.crtc); + acrtc = to_amdgpu_crtc(to_amdgpu_dm_wb_connector(wb_conn)->encoder.crtc); if (!acrtc) { drm_err(adev_to_drm(adev), "no amdgpu_crtc found\n"); goto cleanup; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h index 1d256dce0e4b..d365370d9958 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -930,6 +930,7 @@ static inline void amdgpu_dm_set_mst_status(uint8_t *status, struct amdgpu_dm_wb_connector { struct drm_writeback_connector base; + struct drm_encoder encoder; struct dc_link *link; }; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c index 6f91a992d43f..b5b186e4f81c 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c @@ -218,6 +218,10 @@ STATIC_IFN_KUNIT void amdgpu_dm_wb_cleanup_job(struct drm_writeback_connector *c } EXPORT_IF_KUNIT(amdgpu_dm_wb_cleanup_job); +static const struct drm_encoder_funcs amdgpu_dm_wb_encoder_funcs = { + .destroy = drm_encoder_cleanup, +}; + static const struct drm_encoder_helper_funcs amdgpu_dm_wb_encoder_helper_funcs = { .atomic_check = amdgpu_dm_wb_encoder_atomic_check, }; @@ -246,17 +250,26 @@ int amdgpu_dm_wb_connector_init(struct amdgpu_display_manager *dm, wbcon->link = link; - drm_connector_helper_add(&wbcon->base.base, &amdgpu_dm_wb_conn_helper_funcs); - - res = drm_writeback_connector_init(&dm->adev->ddev, &wbcon->base, - &amdgpu_dm_wb_connector_funcs, - &amdgpu_dm_wb_encoder_helper_funcs, - amdgpu_dm_wb_formats, - ARRAY_SIZE(amdgpu_dm_wb_formats), - amdgpu_dm_get_encoder_crtc_mask(dm->adev)); + drm_encoder_helper_add(&wbcon->encoder, &amdgpu_dm_wb_encoder_helper_funcs); + wbcon->encoder.possible_crtcs = amdgpu_dm_get_encoder_crtc_mask(dm->adev); + res = drm_encoder_init(&dm->adev->ddev, &wbcon->encoder, + &amdgpu_dm_wb_encoder_funcs, + DRM_MODE_ENCODER_VIRTUAL, NULL); if (res) return res; + + drm_connector_helper_add(&wbcon->base.base, &amdgpu_dm_wb_conn_helper_funcs); + + res = drm_writeback_connector_init_with_encoder(&dm->adev->ddev, &wbcon->base, + &wbcon->encoder, + &amdgpu_dm_wb_connector_funcs, + amdgpu_dm_wb_formats, + ARRAY_SIZE(amdgpu_dm_wb_formats)); + if (res) { + drm_encoder_cleanup(&wbcon->encoder); + return res; + } /* * Some of the properties below require access to state, like bpc. * Allocate some default initial connector state with our reset helper. diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c index e27f6e504395..9d237f2db95c 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c @@ -4535,7 +4535,7 @@ static void dm_test_clear_writeback_removes_stream(struct kunit *test) static void dm_test_set_writeback_no_pipe(struct kunit *test) { struct amdgpu_device *adev = dm_kunit_alloc_adev(test); - struct drm_writeback_connector *wb_conn; + struct amdgpu_dm_wb_connector *wb_conn; struct drm_connector_state *conn_state; struct drm_writeback_job *job; struct amdgpu_framebuffer *afb; @@ -4565,7 +4565,7 @@ static void dm_test_set_writeback_no_pipe(struct kunit *test) conn_state->writeback_job = job; crtc_state->stream = dm_kunit_alloc_stream(test, NULL); - dm_set_writeback(&adev->dm, crtc_state, &wb_conn->base, conn_state); + dm_set_writeback(&adev->dm, crtc_state, &wb_conn->base.base, conn_state); KUNIT_EXPECT_NULL(test, acrtc->wb_conn); KUNIT_EXPECT_FALSE(test, acrtc->wb_pending); diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c index 03036f906385..2711696f6b9c 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_wb_test.c @@ -506,8 +506,8 @@ static void dm_test_wb_connector_init_success(struct kunit *test) KUNIT_EXPECT_TRUE(test, wbcon->base.base.funcs != NULL); KUNIT_EXPECT_TRUE(test, wbcon->base.base.helper_private != NULL); KUNIT_EXPECT_TRUE(test, wbcon->base.base.state != NULL); - KUNIT_EXPECT_TRUE(test, wbcon->base.encoder.funcs != NULL); - KUNIT_EXPECT_EQ(test, wbcon->base.encoder.possible_crtcs, 0x1); + KUNIT_EXPECT_TRUE(test, wbcon->encoder.funcs != NULL); + KUNIT_EXPECT_EQ(test, wbcon->encoder.possible_crtcs, 0x1); } /* Tests for amdgpu_dm_wb_prepare_job / amdgpu_dm_wb_cleanup_job */ -- 2.47.3