From patchwork Mon Sep 24 18:15:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kazlauskas, Nicholas" X-Patchwork-Id: 10612775 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 385B7112B for ; Mon, 24 Sep 2018 18:16:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 28C7D296A8 for ; Mon, 24 Sep 2018 18:16:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1A4022A2C7; Mon, 24 Sep 2018 18:16:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 84F47296A8 for ; Mon, 24 Sep 2018 18:16:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C2A376E2D8; Mon, 24 Sep 2018 18:16:11 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM05-CO1-obe.outbound.protection.outlook.com (mail-eopbgr720057.outbound.protection.outlook.com [40.107.72.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0597E6E145; Mon, 24 Sep 2018 18:16:10 +0000 (UTC) Received: from BN6PR1201CA0007.namprd12.prod.outlook.com (2603:10b6:405:4c::17) by BN4PR12MB0740.namprd12.prod.outlook.com (2a01:111:e400:59bc::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.18; Mon, 24 Sep 2018 18:16:07 +0000 Received: from CO1NAM03FT046.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e48::202) by BN6PR1201CA0007.outlook.office365.com (2603:10b6:405:4c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1164.22 via Frontend Transport; Mon, 24 Sep 2018 18:16:07 +0000 Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) Received: from SATLEXCHOV01.amd.com (165.204.84.17) by CO1NAM03FT046.mail.protection.outlook.com (10.152.81.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.1185.13 via Frontend Transport; Mon, 24 Sep 2018 18:16:06 +0000 Received: from kazbox.amd.com (10.180.168.240) by SATLEXCHOV01.amd.com (10.181.40.71) with Microsoft SMTP Server id 14.3.389.1; Mon, 24 Sep 2018 13:16:03 -0500 From: Nicholas Kazlauskas To: , Subject: [PATCH v2 1/3] drm: Add variable refresh rate properties to connector Date: Mon, 24 Sep 2018 14:15:35 -0400 Message-ID: <20180924181537.12092-2-nicholas.kazlauskas@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180924181537.12092-1-nicholas.kazlauskas@amd.com> References: <20180924181537.12092-1-nicholas.kazlauskas@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:165.204.84.17; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(376002)(346002)(136003)(396003)(39860400002)(2980300002)(428003)(189003)(199004)(72206003)(486006)(478600001)(446003)(2616005)(426003)(4326008)(11346002)(16586007)(44832011)(476003)(126002)(26005)(81156014)(5660300001)(8936002)(81166006)(53416004)(305945005)(186003)(356003)(2906002)(1076002)(48376002)(47776003)(97736004)(53936002)(316002)(77096007)(68736007)(86362001)(50226002)(336012)(54906003)(104016004)(76176011)(36756003)(6666003)(110136005)(8676002)(106466001)(51416003)(5024004)(7696005)(50466002)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR12MB0740; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; CO1NAM03FT046; 1:Zpl2OEdm5IBwzLe9aQtSqoN6bIM6p039Qf8a3HpdtdsfhvpJatBC+TDfSX1pNIi483E1WkZcXEkXuoFH1Zlas9ue9dlAMFdLwiifPrxNr+I+Ua1R4XZn9QRjaRXvfz9b X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6db3cf3f-c5f6-4219-fe1c-08d62249cc26 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:BN4PR12MB0740; X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0740; 3:31MN/PoVPl4ohx/tscMkjxRAIki05c3kv8G4IopzTsR1jVDBNIeZhieAqmrFo3H4Ibke+WYmik3j2pLOuJeZhCfSGQRWZ10vxNiGx87+PNYedpR7u5hADFUpQT6wglitelEP9JjTk5QJ+Ulnof96J2B1RuYNxcm8/QJ3BMRvkW9+S58RI6t/mog4jRvTc/mpxZH2V/kPycH6laP8pokVDuEKt0Xjy2Ms07iuxiQPkdowRtiiP+HYeHL8CVZGdjZgyagCeUOte81qBf4dbJhxDoZgXKfkZujRQ6mQejhyLIwaYFz7vuPhMo9Uz0BjaP5BvWNbCNURYZT/CdN6lWaKDEySUYBDxGxwGZSt/xmnkr8=; 25:GdsXxZtf0GpRhJf5uIqsFJww2mCnfcJl+Rkbq0ZGQZYLaLxsfES5z81VvH4YPrDZyDm1UukQXyZTWiJ3yqQZ4JhRGbiBMcbkF8wK4MttDoplvbYhocHkTpOJsOXOTNMqCv6cqK2M9WickgZ77G+AsBhw8M/dYEYZpYJ8kyx88c7EZcZsyy0k3KT+413j+NSA0ebeLMMZoeoJyeLciCj7TX8mtbuHcWHfqUDRmzDPGp/mZzpjgftQUHGbGAdbqG5h/MtOmTYEb45SAXa+2yBjIjDoDTU320cZJFyh/YwQTTLN0wHSRM1+InPJ9Al5+2Yfq6n1nK+X69JtC0yD7LnusA== X-MS-TrafficTypeDiagnostic: BN4PR12MB0740: X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0740; 31:1BliqTXTU1rCNksmWKCrnMw3doyrOqN/uRr16oX1kB/sx9AXX9lx1QJmImGojM4xZchkVUUtxpvCB3ydMMNbQEPvwsn1/VNh0ScHNlShrGEVj8HNnRg4jdLTNEBq0EkGjErhERwd5zzWd2e7RRJK4KVSM0QPoQN+yhxwncoXpe+Tv3y1OaqwpTFFhzdV4uCC6d8GkojUtgFhXmxjRNDbikwxJWc2ZVfZFo5u75EKdPc=; 20:bO+HQtQfJwG34i6rSbGQRQ+lf3CjGs5OVzcK3dWPZ3TMFCLXj0XFNB9WIuZJssxi1g8uwejjHr85KrjPXcQM2eak+bkkFxVYzBkpsCETn5i9Wf4D+eS0XFoMbcWy83yQkv1nYQek3lVmjAuMOMpCFjd63wZUVbyXKJDgZtTmSwZyFGbFydiZ9LgZ5uRxYAjqlhnoJ5obhJysxUk86ECpHF7v4RcEKRCavpdkW9AlMsD5d14znakixEic10u33IMA/J1ZWRZy3hleA1RYPFVyTEhNNuZ5aoqZlTQ5X2+3wsbpzUCBrOdqB2QSgCXGzWw5i4bbypAKRsVxnGzvJkvcLDDsjV9rgy0U1lTfZHw61pAUmcfTr6wt++wD98ymNezLfRSSwJeuH5rVAuJJ9ANRHiGZdz6gg6QRWzkhR/8CWt7ln1Rr9x4dndw0eXOev7XDdFVvrUnQFgsznSl6iGk9FREEogu+/fRdRIPiRCfbOPC/VUDBR8AIvDzh1ko5wmiX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93003095)(3002001)(3231355)(944501410)(52105095)(10201501046)(6055026)(149066)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699051); SRVR:BN4PR12MB0740; BCL:0; PCL:0; RULEID:; SRVR:BN4PR12MB0740; X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0740; 4:nb39cwFcCC9yQwxufU3qDuQHBMTt97VegHuhx7xQawu+b92Qr29+LQU0T82yGh5qpbs3N9n64NhRscukYJLQ695t84v0Z/zRMfVj6FyUqmSVVvThckZUh18z+nzcPdBaKX/BanzH49nii2SQCQ6VgaFzWe8lmUmLiKKM8wjSnIujsnGRwjmJJmmKY/V4P8DxBQRfjNLpplaKmUN6iYnC7AOuQpYOVA423gsO56kL2S0C1VpYkCMigJN1OpSbLSJblyQ1vME+XIJil2O/XbAeTmVQo3h3i6xuSdtiumrTbbFf3sEhDBF8luD33HRV0xEv X-Forefront-PRVS: 0805EC9467 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN4PR12MB0740; 23:Qsyo5zHH2SbeDkNzLbTi20nTJN4C8JIIdvby3m1KY?= mqMOy4tLw2DBZsbf+h3u3b7AaddvRL9BF6CnGlthYm3zNQ5fAp5zkZoxJGwRkJ/YUtwdmnTvGi4J9+xFUT7vq2cLpQIeZEWD9tFjmdyNQR1eE3VYaABUdBFvcIsgBAzt0dCDD9h3gwQGj5CjjIMc6H2d/xIxjURPJUZAjNaVtQZo3f4nJL01Q/ZmCFcQceP/oDakK4UzWcXBstrvY2sObNYlsNfuFkWk7s2xXCdy4Enov+409d42dcpj+xTBOtSiV9Tczo8oudp/9gJrGqJAtygV5YpayUZjI7r3Zqgv2JGSv7mPLNYizHsRmol/yvArHeQ3XO0fuH2q+9aHZL8ECj+70d3rPLuLhuwmTy5gmM4y1iC1z6Z38gEZKhESdyZyK96YPNxdkq8oqZ2iFkOxw0AtGsZFGKNwmDoJKgoTGc0il+D67qf/zAP2fGjEjMJpx+wHPmvIPk7/rQdNt5AIVzGlK5/XayORjXPr8XzVThn3Lw/h8JZAPjMfdOBD4n6BzYiKeXRVnl4N14TS+tscOU6wWG+b0iy7+gHcm80Y5oPrdYCihNfaJfjSDSLCwcONimnouJTfh5cN5xdArD9bPNOwEHIpHEHc1o7k6iFGOFnC/2np6B3InQkDUwFEJDBESVA+vYu5AG9GBFqoqCFIcywc819yvgnKqqi6MRZ9+mzcPxggN5+UB43SNDaggVrdLZmqA6p/gpJ0FYFFctxX4jV7f7TY5zYjWU0lMyHtfrTz+ZuZBpcJk/x/agK2A1Fmq7LKQFZzKrl6S/lwMNQARNG4OTizr56ui7YxCCzYIVHND9hfaYx//TNk+k8cVam1HCI7Oc+wOzhixQtHoSDiguuhv4QUvaQ2CaLU4chCxWYBoJoL6Ag9Qj/o3ZZm5q13N4CJFo8b8+YQZwFAFRIClhmeDHQEqwHmvv0fmccRoYwkhCnFzFSr3BuKudK6gabW6pSuvyYtdD/1WHIF50Cl4Eao1OthALr+IQWSujRDjwp2P/RNiBBFesWBF5Mqm9IzpoGYqdUslsbaiYMVsnWQnMQoX6d+XGKsXBGtjReQMgvQyT1uUNqv1R61oI9DzdWQUk3BgQhPJTDSNfYXDcKtBhZlMpXmsGwhZnNspLxXMpcML7Y7oMGlgfzK3e2BJTCO9Y6kLVTUinnbvOzrpyykHV6 X-Microsoft-Antispam-Message-Info: 2FMrfmyOsbBnFIIs5GIDxJ4tcmkWgCkGCJFWbrJhS9L1gyiIdBcogcyJ4z/3FgQdl2KITTPbWSPCoWPaNXFxHZq/cLYtSJSDDHF25E0kHeAj7sKfsSINQATU3jj+jgel8xTQkYPxGBPwQpHWstR7rAlHz+tHADxwwi2TcNj0zQjwFgr1oNS54FC4TcoCqHbPC9gLu3B5OG54pFJApYr76F9czo4gk5FOSZlKBZ/njgTSg4Rc5r8LEGZp7ETaJv5M8azR8ofFaIrlhIXpGXGZ0wnIVviEHckqU+uemSZ+i1Lo3poeIFrjGbBZ8w2KDw0sMzjvBl7F7B3LJAcXXhvzmEjXBNQDlU3HvRgfRxdfqyk= X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0740; 6:YyOkXxS/6eYyq6eFQufStiHYsMSSjjtYL31xP7arfNEMQ7SZo0KfdUNoKD2fFtxj2vMCsObxGZhUnhC+A/lkbzIjWTfxKdH2hPriXZjwDH3CtcvkF7h9hRxbX53hHocTgbbRDUP0IMjSIQ+D4+2Qo8+kZhuz/ykewyjXPw7W3PdjFFYW1lf4yBEmfekrrsD8QSS1rFSEcsRxEE7r6dDWhG9PaV/Z06jl1/63AnwDNJJhI/J1UycZ9s2On0Fylc5IpUkQRIBMcODkkGo1DBgXw/HP4546dYqD/39LIGOFS1Y7wdNOih0Ek1RkG+MyKrodPRDT6yW+ACk1oTRBwCgjZladRTVgVttMs1YSrqdL6op1AkJJkI2iWZEciSVX1wweReZHywWXIa8G5JACWuNaqd7ylbSbDhW6/lc8tVtCABdtn7GwwR+YIMFSGGP2kyLfqfmaigHjF6pzcltcQDOtZA==; 5:Sx/QEuUR0BpcLgg/YhqpHrPIoDLUuhVds5Oxo/ruNqnb/6yP8jSC4u3ve7PgSDd8dTYhAfpvszvgU5a9u1wk+7FyLeqgZCBL8zO8ZA5szwgmjIelVKBNYiNvu5HMUtgy+8cQfz9BVltlELUGf8YT6rkVYWuCZ3qgQKfedbiZQq8=; 7:CeNZFfIZHQbKQsJZiV9HDW074XBFlsLi8lscr1iXdntNwUBs0MZHf6SZbof2fWXuptE9YMssOMJfAIY+NXDQXWY+JFl2tORrRfn1m0NSJj/TRitHnzLjSt/tTqH4SMQf+qsD6Mza/sdlhhr8fUqUQwgbaQClL05bgXrCFgPfVykHPL1VxHJvm6lnL1Liy1AitdcWPu4XBbKIlH0vsD959gXCp5UxJLNqyfsDifRsA9tkbM64gFqIOS9JeNkX+XP0 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0740; 20:/L09mXmM8nH7A4oaQ6g2IzGKyVmIH/XBYPRnsW3pyEMYBuzRaWjpfuBHi9pRcld+OtueTjUVcdvi78wuH/Uzz5kWd2tSafKzquhmW7t/VencEy06sRxn7FaIg6sISFYCXYJe33P/X1REwMBKZ1Q5Ig85K0sPebR5IxjT8aAvhXj6LwfomCXdFSbrwnyAHtTULm4uXsnPMpyE5CZS/r0yPkL9ANT2es65rqDUAn8z1cpfhi/0QmYcRQzrTNT4CgAq X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2018 18:16:06.9130 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6db3cf3f-c5f6-4219-fe1c-08d62249cc26 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXCHOV01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR12MB0740 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nicolai.haehnle@amd.com, michel@daenzer.net, Christian.Koenig@amd.com, manasi.d.navare@intel.com, Alexander.Deucher@amd.com, Nicholas Kazlauskas , Marek.Olsak@amd.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Modern display hardware is capable of supporting variable refresh rates and adaptive sync technologies. The properties for querying and controlling these features should be exposed on the DRM connector. This patch introduces two new properties for variable refresh rate support: - variable_refresh_capable - variable_refresh_enabled These are optional properties that can be added to a DRM connector dynamically by using drm_connector_attach_variable_refresh_properties. DRM drivers should set variable_refresh_capable as applicable for their hardware. The property variable_refresh_enabled is a userspace controlled option. Signed-off-by: Nicholas Kazlauskas --- drivers/gpu/drm/drm_atomic_uapi.c | 6 ++++++ drivers/gpu/drm/drm_connector.c | 35 +++++++++++++++++++++++++++++++ include/drm/drm_connector.h | 27 ++++++++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index d5b7f315098c..0bb27a24a55c 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -723,6 +723,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector, state->content_type = val; } else if (property == connector->scaling_mode_property) { state->scaling_mode = val; + } else if (property == connector->variable_refresh_enabled_property) { + state->variable_refresh_enabled = val; } else if (property == connector->content_protection_property) { if (val == DRM_MODE_CONTENT_PROTECTION_ENABLED) { DRM_DEBUG_KMS("only drivers can set CP Enabled\n"); @@ -797,6 +799,10 @@ drm_atomic_connector_get_property(struct drm_connector *connector, *val = state->content_type; } else if (property == connector->scaling_mode_property) { *val = state->scaling_mode; + } else if (property == connector->variable_refresh_capable_property) { + *val = state->variable_refresh_capable; + } else if (property == connector->variable_refresh_enabled_property) { + *val = state->variable_refresh_enabled; } else if (property == connector->content_protection_property) { *val = state->content_protection; } else if (property == config->writeback_fb_id_property) { diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 1e40e5decbe9..fc1732639bd3 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -1254,6 +1254,41 @@ int drm_mode_create_scaling_mode_property(struct drm_device *dev) } EXPORT_SYMBOL(drm_mode_create_scaling_mode_property); +/** + * drm_connector_attach_variable_refresh_properties - creates and attaches + * properties for connectors that support adaptive refresh + * @connector: connector to create adaptive refresh properties on + */ +int drm_connector_attach_variable_refresh_properties( + struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_property *prop; + + if (!connector->variable_refresh_capable_property) { + prop = drm_property_create_bool(dev, DRM_MODE_PROP_IMMUTABLE, + "variable_refresh_capable"); + if (!prop) + return -ENOMEM; + + connector->variable_refresh_capable_property = prop; + drm_object_attach_property(&connector->base, prop, 0); + } + + if (!connector->variable_refresh_enabled_property) { + prop = drm_property_create_bool(dev, 0, + "variable_refresh_enabled"); + if (!prop) + return -ENOMEM; + + connector->variable_refresh_enabled_property = prop; + drm_object_attach_property(&connector->base, prop, 0); + } + + return 0; +} +EXPORT_SYMBOL(drm_connector_attach_variable_refresh_properties); + /** * drm_connector_attach_scaling_mode_property - attach atomic scaling mode property * @connector: connector to attach scaling mode property on. diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 91a877fa00cb..e2c26842bd50 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -449,6 +449,18 @@ struct drm_connector_state { */ unsigned int content_protection; + /** + * @variable_refresh_enabled: Connector property used to check + * if variable refresh is supported on the device. + */ + bool variable_refresh_capable; + + /** + * @variable_refresh_enabled: Connector property used to check + * if variable refresh is enabled. + */ + bool variable_refresh_enabled; + /** * @writeback_job: Writeback job for writeback connectors * @@ -910,6 +922,19 @@ struct drm_connector { */ struct drm_property *scaling_mode_property; + /** + * @variable_refresh_capable_property: Optional property for + * querying hardware support for variable refresh. + */ + struct drm_property *variable_refresh_capable_property; + + /** + * @variable_refresh_enabled_property: Optional property for + * enabling or disabling support for variable refresh + * on the connector. + */ + struct drm_property *variable_refresh_enabled_property; + /** * @content_protection_property: DRM ENUM property for content * protection. See drm_connector_attach_content_protection_property(). @@ -1183,6 +1208,8 @@ int drm_mode_create_scaling_mode_property(struct drm_device *dev); int drm_connector_attach_content_type_property(struct drm_connector *dev); int drm_connector_attach_scaling_mode_property(struct drm_connector *connector, u32 scaling_mode_mask); +int drm_connector_attach_variable_refresh_properties( + struct drm_connector *connector); int drm_connector_attach_content_protection_property( struct drm_connector *connector); int drm_mode_create_aspect_ratio_property(struct drm_device *dev);