162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) STMicroelectronics SA 2014 462306a36Sopenharmony_ci * Authors: Benjamin Gaignard <benjamin.gaignard@st.com> 562306a36Sopenharmony_ci * Fabien Dessenne <fabien.dessenne@st.com> 662306a36Sopenharmony_ci * for STMicroelectronics. 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _STI_MIXER_H_ 1062306a36Sopenharmony_ci#define _STI_MIXER_H_ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <drm/drm_crtc.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <drm/drm_debugfs.h> 1562306a36Sopenharmony_ci#include <drm/drm_file.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#include "sti_plane.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct device; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define to_sti_mixer(x) container_of(x, struct sti_mixer, drm_crtc) 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cienum sti_mixer_status { 2462306a36Sopenharmony_ci STI_MIXER_READY, 2562306a36Sopenharmony_ci STI_MIXER_DISABLING, 2662306a36Sopenharmony_ci STI_MIXER_DISABLED, 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci/** 3062306a36Sopenharmony_ci * STI Mixer subdevice structure 3162306a36Sopenharmony_ci * 3262306a36Sopenharmony_ci * @dev: driver device 3362306a36Sopenharmony_ci * @regs: mixer registers 3462306a36Sopenharmony_ci * @id: id of the mixer 3562306a36Sopenharmony_ci * @drm_crtc: crtc object link to the mixer 3662306a36Sopenharmony_ci * @status: to know the status of the mixer 3762306a36Sopenharmony_ci */ 3862306a36Sopenharmony_cistruct sti_mixer { 3962306a36Sopenharmony_ci struct device *dev; 4062306a36Sopenharmony_ci void __iomem *regs; 4162306a36Sopenharmony_ci int id; 4262306a36Sopenharmony_ci struct drm_crtc drm_crtc; 4362306a36Sopenharmony_ci enum sti_mixer_status status; 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ciconst char *sti_mixer_to_str(struct sti_mixer *mixer); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistruct sti_mixer *sti_mixer_create(struct device *dev, 4962306a36Sopenharmony_ci struct drm_device *drm_dev, 5062306a36Sopenharmony_ci int id, 5162306a36Sopenharmony_ci void __iomem *baseaddr); 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ciint sti_mixer_set_plane_status(struct sti_mixer *mixer, 5462306a36Sopenharmony_ci struct sti_plane *plane, bool status); 5562306a36Sopenharmony_ciint sti_mixer_set_plane_depth(struct sti_mixer *mixer, struct sti_plane *plane); 5662306a36Sopenharmony_ciint sti_mixer_active_video_area(struct sti_mixer *mixer, 5762306a36Sopenharmony_ci struct drm_display_mode *mode); 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_civoid sti_mixer_set_background_status(struct sti_mixer *mixer, bool enable); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_civoid sti_mixer_debugfs_init(struct sti_mixer *mixer, struct drm_minor *minor); 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci/* depth in Cross-bar control = z order */ 6462306a36Sopenharmony_ci#define GAM_MIXER_NB_DEPTH_LEVEL 6 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#define STI_MIXER_MAIN 0 6762306a36Sopenharmony_ci#define STI_MIXER_AUX 1 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci#endif 70