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

Commit 1a915805 authored by Alan Kwong's avatar Alan Kwong
Browse files

drm/msm/sde: add maxlinewidth to rotator capabiilty



Maximum line width of rotator specifies the maximum image
width in pixel supported by inline rotator. Export this
information in capability blob for client query.

CRs-Fixed: 2009714
Change-Id: Ic1125ec7d9be8224cce174742e14fe8a523a8b82
Signed-off-by: default avatarAlan Kwong <akwong@codeaurora.org>
parent b6c049ce
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -778,6 +778,25 @@ static size_t sde_hw_rot_get_cache_size(struct sde_hw_rot *hw)
	return hw->caps->slice_size;
}

/**
 * sde_hw_rot_get_maxlinewidth - get maximum line width of rotator
 * @hw: Pointer to rotator hardware driver
 * return: maximum line width
 */
static int sde_hw_rot_get_maxlinewidth(struct sde_hw_rot *hw)
{
	struct platform_device *pdev;

	if (!hw || !hw->caps || !hw->caps->pdev) {
		SDE_ERROR("invalid rotator hw\n");
		return 0;
	}

	pdev = hw->caps->pdev;

	return sde_rotator_inline_get_maxlinewidth(pdev);
}

/**
 * _setup_rot_ops - setup rotator operations
 * @ops: Pointer to operation table
@@ -790,6 +809,7 @@ static void _setup_rot_ops(struct sde_hw_rot_ops *ops, unsigned long features)
	ops->get_format_caps = sde_hw_rot_get_format_caps;
	ops->get_downscale_caps = sde_hw_rot_get_downscale_caps;
	ops->get_cache_size = sde_hw_rot_get_cache_size;
	ops->get_maxlinewidth = sde_hw_rot_get_maxlinewidth;
}

/**
+1 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ struct sde_hw_rot_ops {
			struct sde_hw_rot *hw);
	const char *(*get_downscale_caps)(struct sde_hw_rot *hw);
	size_t (*get_cache_size)(struct sde_hw_rot *hw);
	int (*get_maxlinewidth)(struct sde_hw_rot *hw);
};

/**
+4 −0
Original line number Diff line number Diff line
@@ -2142,6 +2142,10 @@ static void sde_plane_rot_install_caps(struct drm_plane *plane)
		sde_kms_info_add_keyint(info, "cache_size",
				rot_hw->ops.get_cache_size(rot_hw));

	if (rot_hw->ops.get_maxlinewidth)
		sde_kms_info_add_keyint(info, "max_linewidth",
				rot_hw->ops.get_maxlinewidth(rot_hw));

	msm_property_set_blob(&psde->property_info, &psde->blob_rot_caps,
			info->data, info->len, PLANE_PROP_ROT_CAPS_V1);