Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp824344imu; Tue, 11 Dec 2018 08:08:19 -0800 (PST) X-Google-Smtp-Source: AFSGD/U3jME65JmGEh8ASfHHCnhDMIV+DGnMp4Te5NtFSP7PW+vaULG0K9Hk6Q7AOunn146W0YRP X-Received: by 2002:a63:e348:: with SMTP id o8mr14832887pgj.158.1544544499667; Tue, 11 Dec 2018 08:08:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544544499; cv=none; d=google.com; s=arc-20160816; b=svC7wzUZy6l0UnD/HVj++4ldwZJlXWHnWR2M8XkARuu3UKpQhpAzppCiQxlFIaQnbN xdtWorTUl7+aeiDZ0xbv1PlUHLubOGAZ/HGAEPvwfjatQf63PcfMUD79iBMTXMWgzmZ8 pwVQUnlLlWjU5/vTN5SjbS7UC+FA6X0mqWA4DYNoEjWlDWkPgvibTFsIxr/lr3ctAlYz zmWm8pkJ45LzHyfNf/K8PSnGhCkTEAsExs9cX4myUbBy6RkqIY6Cm32n0gSn9MQohlfH etiCIxBMrpbZQ1qgqxVCz9ntKL6bBvV6pPt9/kkKn6pztM+Hv4EN10bgYDUak3Rlq1QB HWIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RHlEEzzZOuVoSpW+kWzOtduyROhpmYx06t9q1BVA/5g=; b=B9rbaz5ZvKgwMIoZVsOOtt/S4vWbRmHLuj6ceXYDMhXopCtblCgMWGMnydnYKleY2B Z4AlhMWG77Oi5C1Wt72BT96F1UX3AhHMBzOz0f0UUOZMFl6mNdd/6gD595ygjVPB91my 4B6z/OruzltKBuWyskSvYlEMvv45NZdlMLlx9pqLgHzt+xsU5WznYpWTAKv7OeZZfwGs 9EBAYfh+O82Z4YSkYp1bCGwJwt0iTqymfwLLip3Dc8oyDywtaZ9w27NEuYP0aaBEGni8 omLBfVfRvTapCujMPya+KVq7jlgSw5MBjx1xboFIBudwJMrrU2G4sphIxo3GW2nIZtfn 6AsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dHpf5Gkq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 31si13343267plh.274.2018.12.11.08.07.41; Tue, 11 Dec 2018 08:08:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dHpf5Gkq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730933AbeLKQFw (ORCPT + 99 others); Tue, 11 Dec 2018 11:05:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:43534 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730293AbeLKPy5 (ORCPT ); Tue, 11 Dec 2018 10:54:57 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id ED46F20855; Tue, 11 Dec 2018 15:54:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544543696; bh=qXYyaj13Xh80nzrLbDPxfU6XQ0RTKL7Qy9fPk9Pktr4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dHpf5GkqTmp0sa0owIXZLKG++lYYFA7sEqXiVrCHaFUPdOEoHtibMKfk0rslyKM5J XeNUjn+JVhvRR/66I5d5pClslYPsqwBUprhA1ri0SVwxdENcHeiuxMr/BsEFbJlYZY H5Ftqsv1WYRXBFEXLQcbaEQ4BC9N7P22ydhZ9/xg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nicholas Kazlauskas , Alex Deucher , Harry Wentland , Sasha Levin Subject: [PATCH 4.19 028/118] drm/amd/display: Support amdgpu "max bpc" connector property (v2) Date: Tue, 11 Dec 2018 16:40:47 +0100 Message-Id: <20181211151645.374705595@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181211151644.216668863@linuxfoundation.org> References: <20181211151644.216668863@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 07e3a1cfb0568b6d8d7862077029af96af6690ea ] [Why] Many panels support more than 8bpc but some modes are unavailable while running at greater than 8bpc due to DP/HDMI bandwidth constraints. Support for more than 8bpc was added recently in the driver but it defaults to the maximum supported bpc - locking out these modes. This should be a user configurable option such that the user can select what bpc configuration they would like. [How] This patch adds support for getting and setting the amdgpu driver specific "max bpc" property on the connector. It also adds support for limiting the output bpc based on the property value. The default limitation is the lowest value in the range, 8bpc. This was the old value before the range was uncapped. This patch should be updated/replaced later once common drm support for max bpc lands. Bugzilla: https://bugs.freedesktop.org/108542 Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201585 Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200645 Fixes: e03fd3f300f6 ("drm/amd/display: Do not limit color depth to 8bpc") v2: rebase on upstream (Alex) Signed-off-by: Nicholas Kazlauskas Acked-by: Alex Deucher Reviewed-by: Harry Wentland Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 ++++++++++++++++ .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 + 2 files changed, 17 insertions(+) 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 ef5c6af4d964..299def84e69c 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -2213,8 +2213,15 @@ static void update_stream_scaling_settings(const struct drm_display_mode *mode, static enum dc_color_depth convert_color_depth_from_display_info(const struct drm_connector *connector) { + struct dm_connector_state *dm_conn_state = + to_dm_connector_state(connector->state); uint32_t bpc = connector->display_info.bpc; + /* TODO: Remove this when there's support for max_bpc in drm */ + if (dm_conn_state && bpc > dm_conn_state->max_bpc) + /* Round down to nearest even number. */ + bpc = dm_conn_state->max_bpc - (dm_conn_state->max_bpc & 1); + switch (bpc) { case 0: /* Temporary Work around, DRM don't parse color depth for @@ -2796,6 +2803,9 @@ int amdgpu_dm_connector_atomic_set_property(struct drm_connector *connector, } else if (property == adev->mode_info.underscan_property) { dm_new_state->underscan_enable = val; ret = 0; + } else if (property == adev->mode_info.max_bpc_property) { + dm_new_state->max_bpc = val; + ret = 0; } return ret; @@ -2838,6 +2848,9 @@ int amdgpu_dm_connector_atomic_get_property(struct drm_connector *connector, } else if (property == adev->mode_info.underscan_property) { *val = dm_state->underscan_enable; ret = 0; + } else if (property == adev->mode_info.max_bpc_property) { + *val = dm_state->max_bpc; + ret = 0; } return ret; } @@ -3658,6 +3671,9 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, drm_object_attach_property(&aconnector->base.base, adev->mode_info.underscan_vborder_property, 0); + drm_object_attach_property(&aconnector->base.base, + adev->mode_info.max_bpc_property, + 0); } 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 aba2c5c1d2f8..74aedcffc4bb 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -213,6 +213,7 @@ struct dm_connector_state { enum amdgpu_rmx_type scaling; uint8_t underscan_vborder; uint8_t underscan_hborder; + uint8_t max_bpc; bool underscan_enable; struct mod_freesync_user_enable user_enable; bool freesync_capable; -- 2.19.1