diff options
author | james qian wang (Arm Technology China) <james.qian.wang@arm.com> | 2019-05-23 12:10:21 +0100 |
---|---|---|
committer | Liviu Dudau <Liviu.Dudau@arm.com> | 2019-06-19 11:42:16 +0100 |
commit | 1f7f9ab7900ec92c0beac0660cdce37d6af02d38 (patch) | |
tree | 01c782ae78079581d73db30861dd469b3b682384 /drivers/gpu/drm/arm/display/komeda/komeda_kms.h | |
parent | d92b66b875024f6b2ae90543039e2c030f084fbc (diff) | |
download | linux-stable-1f7f9ab7900ec92c0beac0660cdce37d6af02d38.tar.gz linux-stable-1f7f9ab7900ec92c0beac0660cdce37d6af02d38.tar.bz2 linux-stable-1f7f9ab7900ec92c0beac0660cdce37d6af02d38.zip |
drm/komeda: Add engine clock requirement check for the downscaling
For downscaling there is a restriction, the downscaling needed engine
clock can not acceed the real engine clock, and the clock requirement
mostly depend on the specific HW, to solve this problem:
1. Add a pipeline func - downscaling_clk_check for CORE to query the real
HW if downscaling can be supported.
2. Add new property clock ratio which is the ratio of:
(mclk << 32) / pxlclk
then User driver can use this ratio to do the clock check to avoid post
an invalid downscaling to kernel.
v2: Rebase and Delete debug print
Signed-off-by: James Qian Wang (Arm Technology China) <james.qian.wang@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/display/komeda/komeda_kms.h')
-rw-r--r-- | drivers/gpu/drm/arm/display/komeda/komeda_kms.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h index f16e9e577593..db59a9042beb 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h @@ -79,6 +79,9 @@ struct komeda_crtc { /** @disable_done: this flip_done is for tracing the disable */ struct completion *disable_done; + + /** @clock_ratio_property: property for ratio of (mclk << 32)/pxlclk */ + struct drm_property *clock_ratio_property; }; /** @@ -101,6 +104,9 @@ struct komeda_crtc_state { * the active pipelines in once display instance */ u32 active_pipes; + + /** @clock_ratio: ratio of (mclk << 32)/pxlclk */ + u64 clock_ratio; }; /** struct komeda_kms_dev - for gather KMS related things */ @@ -142,6 +148,8 @@ is_only_changed_connector(struct drm_crtc_state *st, struct drm_connector *conn) return BIT(drm_connector_index(conn)) == changed_connectors; } +unsigned long komeda_calc_mclk(struct komeda_crtc_state *kcrtc_st); + int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, struct komeda_dev *mdev); int komeda_kms_add_crtcs(struct komeda_kms_dev *kms, struct komeda_dev *mdev); |