Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp96510ybb; Tue, 14 Apr 2020 20:00:54 -0700 (PDT) X-Google-Smtp-Source: APiQypJPJrmAJzybEB+HPmMzgJZ699b2yfwna3lD+8CU/ZqlwA74KkeJqROuM+DGjir/jjL15uun X-Received: by 2002:a50:e0c9:: with SMTP id j9mr22712228edl.127.1586919654206; Tue, 14 Apr 2020 20:00:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586919654; cv=none; d=google.com; s=arc-20160816; b=lgPWdbdkg96ZgE0ldjeBmUa87NRuxE1KoFR/FpevvdjDj6Q8mMGw+LfSaNjxVgJt2M s1w6vmmRz4MurmChkJ4uEyQQAqKoBCzcYv7qEoIRtBNpMIbNsMNRrcNmfWkEBS1kioPv dOWlf63DMfou+MWPaAVcehB+YMIxUmnuWhTsncJIwTEuqK+r7Pp42j3PuaotiIO168Ft F/p/iGt8WCuFI6vW+cDlrdh6nTEogQ8TxYq+1fgJK6GGmOH2qoxHJX4PFL/xfo+3NRI5 Uh08904v1v+WHKTXwQQqq4eXKIxqsd71lb3Ll3NTMjrnMO1n70QSGDOXplPlykvebwW8 dZcQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0Dd50Aj7Tm41xdkXFsIgBzwtxqD7/pPkBoUkuy2w2PM=; b=wOBkiXrEmjYyiR9YHmRYrMxFnlS2rtXd8MyutGH2vZuC6yBIR+YOP9z+pVttSL+0qF jfjOmzq04c4hxj4IVmLMS9P3kkNTYFuKChe3tU6xE4ONFZCUbWTUMN8EL55eHsA6zGJ1 5gWvUQpAgz6Opm3JGMhwwlJNWnRgIPDZ9hA6WMBxxjPlu10tGICyh/pNgk13qCfCtpvy ykj+LJTqJ3+7JfC0av7pBp+ZXX3VDGDa20Qd5Eb39jkpTKsYAKKNehX+Fx67MebL7qkK eNVojM3VeoXHOCl70Ox0z3BhAExCzdwll6mv1zePlc78e4QUg9yLjMVDlAu9I7vO0Gcv gB0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@pp3345.net header.s=saul header.b=lp0mI9+p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pp3345.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v5si6693302ejx.10.2020.04.14.20.00.30; Tue, 14 Apr 2020 20:00:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@pp3345.net header.s=saul header.b=lp0mI9+p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=pp3345.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389242AbgDMVvp (ORCPT + 99 others); Mon, 13 Apr 2020 17:51:45 -0400 Received: from saul.pp3345.net ([163.172.111.124]:56730 "EHLO saul.pp3345.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389228AbgDMVvm (ORCPT ); Mon, 13 Apr 2020 17:51:42 -0400 Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: dev@pp3345.net) by saul.pp3345.net (Postcow) with ESMTPSA id D38089A420B; Mon, 13 Apr 2020 23:43:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pp3345.net; s=saul; t=1586814196; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:openpgp:autocrypt; bh=0Dd50Aj7Tm41xdkXFsIgBzwtxqD7/pPkBoUkuy2w2PM=; b=lp0mI9+pg396qWyQOxDdLw778E9nXBjvlymgaeLMbaINrUjEBK9zn6HzoEmVmFQh6AZLCZ et9rJfDCTAqy6+iFUQIhnyCK+3236NwyiAqdMByBUfIml0DITtcGbPI1cDZb7i1VUic1H2 D/m1ooJIIetw+U8O0zmi3/BOuTc8iqzJjJviBeQky63I+uY0XyHMMr44aVromVXvSpYOaw aeOMeecNj2awTkdi4j1m72atjYphNZjX7/aSA15ytKlarXOYoRfybXL//iL3RH6kW57hoi uIXSqbbLza5nQuEXytXdJ8gm1RJiejv5RWqhNQ/3y5OLOmoAigqc/9GCaHhkNA== From: Yussuf Khalil To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Yussuf Khalil Subject: [PATCH 3/5] drm: Add drm_connector_state_select_rgb_quantization_range() helper Date: Mon, 13 Apr 2020 23:40:24 +0200 Message-Id: <20200413214024.46500-4-dev@pp3345.net> In-Reply-To: <20200413214024.46500-1-dev@pp3345.net> References: <20200413214024.46500-1-dev@pp3345.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This helper can be used to determine the appropriate RGB quantization range based on a connector's "RGB quantization range" property and a mode. Signed-off-by: Yussuf Khalil --- drivers/gpu/drm/drm_connector.c | 31 +++++++++++++++++++++++++++++++ include/drm/drm_connector.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index e60d3b6e5e56..d5a46bbf284e 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -2187,6 +2187,37 @@ int drm_connector_set_panel_orientation_with_quirk( } EXPORT_SYMBOL(drm_connector_set_panel_orientation_with_quirk); +/** + * drm_connector_state_select_rgb_quantization_range - find RGB quantization + * range appropriate for a connector's state and mode + * + * @state: state of the connector for which to determine the range + * @mode: mode for which to determine the range + * + * For a given connector state (i.e., RGB quantization range property) and a + * given mode, determine which RGB quantization range should be used. + * + * Returns: + * A constant from the HDMI quantization range enum. + */ +enum hdmi_quantization_range drm_connector_state_select_rgb_quantization_range( + const struct drm_connector_state *state, + const struct drm_display_mode *mode) +{ + switch (state->rgb_quantization_range) { + default: + WARN_ON(1); + /* fallthrough */ + case DRM_MODE_RGB_QUANTIZATION_RANGE_AUTOMATIC: + return drm_default_rgb_quant_range(mode); + case DRM_MODE_RGB_QUANTIZATION_RANGE_FULL: + return HDMI_QUANTIZATION_RANGE_FULL; + case DRM_MODE_RGB_QUANTIZATION_RANGE_LIMITED: + return HDMI_QUANTIZATION_RANGE_LIMITED; + } +} +EXPORT_SYMBOL(drm_connector_state_select_rgb_quantization_range); + int drm_connector_set_obj_prop(struct drm_mode_object *obj, struct drm_property *property, uint64_t value) diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index f605e0fbcc0e..43ce305d882f 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -42,6 +42,7 @@ struct drm_property_blob; struct drm_printer; struct edid; struct i2c_adapter; +struct drm_display_mode; enum drm_connector_force { DRM_FORCE_UNSPECIFIED, @@ -1621,6 +1622,9 @@ int drm_connector_set_panel_orientation_with_quirk( int width, int height); int drm_connector_attach_max_bpc_property(struct drm_connector *connector, int min, int max); +enum hdmi_quantization_range drm_connector_state_select_rgb_quantization_range( + const struct drm_connector_state *state, + const struct drm_display_mode *mode); /** * struct drm_tile_group - Tile group metadata -- 2.26.0