1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*
- * Copyright (C) STMicroelectronics SA 2014
- * Authors: Benjamin Gaignard <benjamin.gaignard@st.com>
- * Fabien Dessenne <fabien.dessenne@st.com>
- * for STMicroelectronics.
- * License terms: GNU General Public License (GPL), version 2
- */
- #ifndef _STI_COMPOSITOR_H_
- #define _STI_COMPOSITOR_H_
- #include <linux/clk.h>
- #include <linux/kernel.h>
- #include "sti_mixer.h"
- #include "sti_plane.h"
- #define WAIT_NEXT_VSYNC_MS 50 /*ms*/
- #define STI_MAX_MIXER 2
- #define STI_MAX_VID 1
- enum sti_compositor_subdev_type {
- STI_MIXER_MAIN_SUBDEV,
- STI_MIXER_AUX_SUBDEV,
- STI_GPD_SUBDEV,
- STI_VID_SUBDEV,
- STI_CURSOR_SUBDEV,
- };
- struct sti_compositor_subdev_descriptor {
- enum sti_compositor_subdev_type type;
- int id;
- unsigned int offset;
- };
- /**
- * STI Compositor data structure
- *
- * @nb_subdev: number of subdevices supported by the compositor
- * @subdev_desc: subdev list description
- */
- #define MAX_SUBDEV 9
- struct sti_compositor_data {
- unsigned int nb_subdev;
- struct sti_compositor_subdev_descriptor subdev_desc[MAX_SUBDEV];
- };
- /**
- * STI Compositor structure
- *
- * @dev: driver device
- * @regs: registers (main)
- * @data: device data
- * @clk_compo_main: clock for main compo
- * @clk_compo_aux: clock for aux compo
- * @clk_pix_main: pixel clock for main path
- * @clk_pix_aux: pixel clock for aux path
- * @rst_main: reset control of the main path
- * @rst_aux: reset control of the aux path
- * @mixer: array of mixers
- * @vid: array of vids
- * @vtg: array of vtgs
- * @vtg_vblank_nb: array of callbacks for VTG VSYNC notification
- */
- struct sti_compositor {
- struct device *dev;
- void __iomem *regs;
- struct sti_compositor_data data;
- struct clk *clk_compo_main;
- struct clk *clk_compo_aux;
- struct clk *clk_pix_main;
- struct clk *clk_pix_aux;
- struct reset_control *rst_main;
- struct reset_control *rst_aux;
- struct sti_mixer *mixer[STI_MAX_MIXER];
- struct sti_vid *vid[STI_MAX_VID];
- struct sti_vtg *vtg[STI_MAX_MIXER];
- struct notifier_block vtg_vblank_nb[STI_MAX_MIXER];
- };
- int sti_compositor_debugfs_init(struct sti_compositor *compo,
- struct drm_minor *minor);
- #endif
|