/* SPDX-License-Identifier: GPL-2.0-only * * Copyright (c) 2020 Samsung Electronics Co., Ltd. * http://www.samsung.com * * Headef file for LCD partial update. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __EXYNOS_DRM_PARTIAL_H__ #define __EXYNOS_DRM_PARTIAL_H__ #include struct decon_device; struct exynos_partial; struct exynos_partial_funcs { int (*init)(struct exynos_partial *partial, const struct exynos_display_partial *partial_mode, const struct drm_display_mode *mode); int (*adjust_partial_region)(struct exynos_partial *partial, const struct drm_display_mode *mode, const struct drm_rect *req, struct drm_rect *r); bool (*check)(struct exynos_partial *partial, struct exynos_drm_crtc_state *exynos_crtc_state); int (*send_partial_command)(struct exynos_partial *partial, const struct drm_rect *partial_r); void (*set_partial_size)(struct exynos_partial *partial, const struct drm_rect *partial_r); }; struct exynos_partial { u32 min_w; u32 min_h; struct decon_device *decon; const struct exynos_partial_funcs *funcs; }; void exynos_partial_set_full(const struct drm_display_mode *mode, struct drm_rect *partial_r); struct exynos_partial *exynos_partial_initialize(struct decon_device *decon, const struct exynos_display_partial *partial_mode, const struct drm_display_mode *mode); void exynos_partial_prepare(struct exynos_partial *partial, struct exynos_drm_crtc_state *old_exynos_crtc_state, struct exynos_drm_crtc_state *new_exynos_crtc_state); void exynos_partial_reconfig_coords(struct exynos_partial *partial, struct drm_plane_state *plane_state, const struct drm_rect *partial_r); void exynos_partial_update(struct exynos_partial *partial, const struct drm_rect *old_partial_region, struct drm_rect *new_partial_region); void exynos_partial_restore(struct exynos_partial *partial); #endif /* __EXYNOS_DRM_PARTIAL_H__ */