diff options
-rw-r--r-- | samsung/exynos_drm_connector.c | 5 | ||||
-rw-r--r-- | samsung/exynos_drm_connector.h | 1 | ||||
-rw-r--r-- | samsung/panel/panel-samsung-drv.c | 1 | ||||
-rw-r--r-- | samsung/panel/panel-samsung-drv.h | 1 | ||||
-rw-r--r-- | samsung/panel/panel-samsung-s6e3hc3-c10.c | 1 | ||||
-rw-r--r-- | samsung/panel/panel-samsung-s6e3hc4.c | 1 |
6 files changed, 10 insertions, 0 deletions
diff --git a/samsung/exynos_drm_connector.c b/samsung/exynos_drm_connector.c index 6fcef32..7998eaf 100644 --- a/samsung/exynos_drm_connector.c +++ b/samsung/exynos_drm_connector.c @@ -296,6 +296,11 @@ int exynos_drm_connector_create_properties(struct drm_device *dev) if (IS_ERR(p->panel_idle_support)) return PTR_ERR(p->panel_idle_support); + p->vrr_switch_duration = drm_property_create_range(dev, DRM_MODE_PROP_IMMUTABLE, + "vrr_switch_duration", 0, UINT_MAX); + if (IS_ERR(p->vrr_switch_duration)) + return PTR_ERR(p->vrr_switch_duration); + ret = exynos_drm_connector_create_luminance_properties(dev); if (ret) return ret; diff --git a/samsung/exynos_drm_connector.h b/samsung/exynos_drm_connector.h index 944f320..9e08f5d 100644 --- a/samsung/exynos_drm_connector.h +++ b/samsung/exynos_drm_connector.h @@ -60,6 +60,7 @@ struct exynos_drm_connector_properties { struct drm_property *panel_idle_support; struct drm_property *mipi_sync; struct drm_property *panel_orientation; + struct drm_property *vrr_switch_duration; }; struct exynos_display_dsc { diff --git a/samsung/panel/panel-samsung-drv.c b/samsung/panel/panel-samsung-drv.c index 852b8be..20c3387 100644 --- a/samsung/panel/panel-samsung-drv.c +++ b/samsung/panel/panel-samsung-drv.c @@ -3042,6 +3042,7 @@ static int exynos_panel_attach_properties(struct exynos_panel *ctx) drm_object_attach_property(obj, p->is_partial, desc->is_partial); drm_object_attach_property(obj, p->panel_idle_support, desc->is_panel_idle_supported); drm_object_attach_property(obj, p->panel_orientation, ctx->orientation); + drm_object_attach_property(obj, p->vrr_switch_duration, desc->vrr_switch_duration); if (desc->brt_capability) { ret = exynos_panel_attach_brightness_capability(&ctx->exynos_connector, diff --git a/samsung/panel/panel-samsung-drv.h b/samsung/panel/panel-samsung-drv.h index 93d0966..832b387 100644 --- a/samsung/panel/panel-samsung-drv.h +++ b/samsung/panel/panel-samsung-drv.h @@ -475,6 +475,7 @@ struct exynos_panel_desc { u32 max_brightness; u32 min_brightness; u32 dft_brightness; /* default brightness */ + u32 vrr_switch_duration; /* extra frame is needed to apply brightness change if it's not at next VSYNC */ bool dbv_extra_frame; bool is_partial; diff --git a/samsung/panel/panel-samsung-s6e3hc3-c10.c b/samsung/panel/panel-samsung-s6e3hc3-c10.c index 9517055..4bfc112 100644 --- a/samsung/panel/panel-samsung-s6e3hc3-c10.c +++ b/samsung/panel/panel-samsung-s6e3hc3-c10.c @@ -1335,6 +1335,7 @@ const struct exynos_panel_desc samsung_s6e3hc3_c10 = { .binned_lp = s6e3hc3_c10_binned_lp, .num_binned_lp = ARRAY_SIZE(s6e3hc3_c10_binned_lp), .is_panel_idle_supported = true, + .vrr_switch_duration = 1, .panel_func = &s6e3hc3_c10_drm_funcs, .exynos_panel_func = &s6e3hc3_c10_exynos_funcs, }; diff --git a/samsung/panel/panel-samsung-s6e3hc4.c b/samsung/panel/panel-samsung-s6e3hc4.c index 1c2b6b3..5cc5733 100644 --- a/samsung/panel/panel-samsung-s6e3hc4.c +++ b/samsung/panel/panel-samsung-s6e3hc4.c @@ -1474,6 +1474,7 @@ const struct exynos_panel_desc samsung_s6e3hc4 = { .binned_lp = s6e3hc4_binned_lp, .num_binned_lp = ARRAY_SIZE(s6e3hc4_binned_lp), .is_panel_idle_supported = true, + .vrr_switch_duration = 1, .panel_func = &s6e3hc4_drm_funcs, .exynos_panel_func = &s6e3hc4_exynos_funcs, }; |