Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b87b1369 authored by Jeykumar Sankaran's avatar Jeykumar Sankaran
Browse files

disp: msm: specify default value for msm enum property



Allow caller to specify the default value of the enum
property while installing with msm prop layer. It is
not always the case that the default value to be the
first entry.

Change-Id: Ie0bb1ad7479e3e07810b3d817fdf618b1935858c
Signed-off-by: default avatarJeykumar Sankaran <jsanka@codeaurora.org>
parent fdf88f78
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
 */

#include "msm_prop.h"
@@ -203,7 +203,7 @@ void msm_property_install_volatile_range(struct msm_property_info *info,
void msm_property_install_enum(struct msm_property_info *info,
		const char *name, int flags, int is_bitmask,
		const struct drm_prop_enum_list *values, int num_values,
		uint32_t property_idx)
		u32 init_idx, uint32_t property_idx)
{
	struct drm_property **prop;

@@ -239,10 +239,10 @@ void msm_property_install_enum(struct msm_property_info *info,
		info->property_data[property_idx].default_value = 0;
		info->property_data[property_idx].force_dirty = false;

		/* select first defined value for enums */
		if (!is_bitmask)
		/* initialize with the given idx if valid */
		if (!is_bitmask && init_idx && (init_idx < num_values))
			info->property_data[property_idx].default_value =
				values->type;
				values[init_idx].type;

		/* always attach property, if created */
		if (*prop) {
+3 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
 */

#ifndef _MSM_PROP_H_
@@ -250,6 +250,7 @@ void msm_property_install_volatile_range(struct msm_property_info *info,
 *              enumeration one
 * @values: Array of allowable enumeration/bitmask values
 * @num_values: Size of values array
 * @init_idx: index of the values array entry to initialize the property
 * @property_idx: Property index
 */
void msm_property_install_enum(struct msm_property_info *info,
@@ -258,6 +259,7 @@ void msm_property_install_enum(struct msm_property_info *info,
		int is_bitmask,
		const struct drm_prop_enum_list *values,
		int num_values,
		u32 init_idx,
		uint32_t property_idx);

/**
+5 −5
Original line number Diff line number Diff line
@@ -2511,14 +2511,14 @@ static int _sde_connector_install_properties(struct drm_device *dev,
		if (sde_kms->catalog->has_qsync && display_info->qsync_min_fps)
			msm_property_install_enum(&c_conn->property_info,
					"qsync_mode", 0, 0, e_qsync_mode,
					ARRAY_SIZE(e_qsync_mode),
					ARRAY_SIZE(e_qsync_mode), 0,
					CONNECTOR_PROP_QSYNC_MODE);

		if (display_info->capabilities & MSM_DISPLAY_CAP_CMD_MODE)
			msm_property_install_enum(&c_conn->property_info,
				"frame_trigger_mode", 0, 0,
				e_frame_trigger_mode,
				ARRAY_SIZE(e_frame_trigger_mode),
				ARRAY_SIZE(e_frame_trigger_mode), 0,
				CONNECTOR_PROP_CMD_FRAME_TRIGGER_MODE);

		if (sde_kms->catalog->has_demura) {
@@ -2554,15 +2554,15 @@ static int _sde_connector_install_properties(struct drm_device *dev,
	/* enum/bitmask properties */
	msm_property_install_enum(&c_conn->property_info, "topology_name",
			DRM_MODE_PROP_IMMUTABLE, 0, e_topology_name,
			ARRAY_SIZE(e_topology_name),
			ARRAY_SIZE(e_topology_name), 0,
			CONNECTOR_PROP_TOPOLOGY_NAME);
	msm_property_install_enum(&c_conn->property_info, "topology_control",
			0, 1, e_topology_control,
			ARRAY_SIZE(e_topology_control),
			ARRAY_SIZE(e_topology_control), 0,
			CONNECTOR_PROP_TOPOLOGY_CONTROL);
	msm_property_install_enum(&c_conn->property_info, "LP",
			0, 0, e_power_mode,
			ARRAY_SIZE(e_power_mode),
			ARRAY_SIZE(e_power_mode), 0,
			CONNECTOR_PROP_LP);

	return 0;
+4 −4
Original line number Diff line number Diff line
@@ -5277,13 +5277,13 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc,
	if (catalog->has_idle_pc)
		msm_property_install_enum(&sde_crtc->property_info,
			"idle_pc_state", 0x0, 0, e_idle_pc_state,
			ARRAY_SIZE(e_idle_pc_state),
			ARRAY_SIZE(e_idle_pc_state), 0,
			CRTC_PROP_IDLE_PC_STATE);

	if (catalog->has_cwb_support)
		msm_property_install_enum(&sde_crtc->property_info,
				"capture_mode", 0, 0, e_cwb_data_points,
				ARRAY_SIZE(e_cwb_data_points),
				ARRAY_SIZE(e_cwb_data_points), 0,
				CRTC_PROP_CAPTURE_OUTPUT);

	msm_property_install_volatile_range(&sde_crtc->property_info,
@@ -5291,12 +5291,12 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc,

	msm_property_install_enum(&sde_crtc->property_info, "security_level",
			0x0, 0, e_secure_level,
			ARRAY_SIZE(e_secure_level),
			ARRAY_SIZE(e_secure_level), 0,
			CRTC_PROP_SECURITY_LEVEL);

	msm_property_install_enum(&sde_crtc->property_info, "cache_state",
			0x0, 0, e_cache_state,
			ARRAY_SIZE(e_cache_state),
			ARRAY_SIZE(e_cache_state), 0,
			CRTC_PROP_CACHE_STATE);

	if (catalog->has_dim_layer) {
+5 −4
Original line number Diff line number Diff line
@@ -3709,7 +3709,7 @@ static void _sde_plane_install_properties(struct drm_plane *plane,
	else
		msm_property_install_enum(&psde->property_info,
				"multirect_mode", 0x0, 0, e_multirect_mode,
				ARRAY_SIZE(e_multirect_mode),
				ARRAY_SIZE(e_multirect_mode), 0,
				PLANE_PROP_MULTIRECT_MODE);

	if (psde->features & BIT(SDE_SSPP_EXCL_RECT))
@@ -3719,10 +3719,11 @@ static void _sde_plane_install_properties(struct drm_plane *plane,
	sde_plane_rot_install_properties(plane, catalog);

	msm_property_install_enum(&psde->property_info, "blend_op", 0x0, 0,
		e_blend_op, ARRAY_SIZE(e_blend_op), PLANE_PROP_BLEND_OP);
		e_blend_op, ARRAY_SIZE(e_blend_op), 0, PLANE_PROP_BLEND_OP);

	msm_property_install_enum(&psde->property_info, "src_config", 0x0, 1,
		e_src_config, ARRAY_SIZE(e_src_config), PLANE_PROP_SRC_CONFIG);
		e_src_config, ARRAY_SIZE(e_src_config), 0,
		PLANE_PROP_SRC_CONFIG);

	if (psde->pipe_hw->ops.setup_solidfill)
		msm_property_install_range(&psde->property_info, "color_fill",
@@ -3748,7 +3749,7 @@ static void _sde_plane_install_properties(struct drm_plane *plane,

	msm_property_install_enum(&psde->property_info, "fb_translation_mode",
			0x0, 0, e_fb_translation_mode,
			ARRAY_SIZE(e_fb_translation_mode),
			ARRAY_SIZE(e_fb_translation_mode), 0,
			PLANE_PROP_FB_TRANSLATION_MODE);

	kfree(info);
Loading