blob: 1af3f97f539fdfc635c80c2c4509001e0924dd1a [file] [log] [blame]
/* 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 <drm/drm_rect.h>
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__ */