xref: /linux/drivers/gpu/drm/mxsfb/mxsfb_drv.h (revision ebf68996de0ab250c5d520eb2291ab65643e9a1e)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2016 Marek Vasut <marex@denx.de>
4  *
5  * i.MX23/i.MX28/i.MX6SX MXSFB LCD controller driver.
6  */
7 
8 #ifndef __MXSFB_DRV_H__
9 #define __MXSFB_DRV_H__
10 
11 struct mxsfb_devdata {
12 	unsigned int	 transfer_count;
13 	unsigned int	 cur_buf;
14 	unsigned int	 next_buf;
15 	unsigned int	 debug0;
16 	unsigned int	 hs_wdth_mask;
17 	unsigned int	 hs_wdth_shift;
18 	unsigned int	 ipversion;
19 };
20 
21 struct mxsfb_drm_private {
22 	const struct mxsfb_devdata	*devdata;
23 
24 	void __iomem			*base;	/* registers */
25 	struct clk			*clk;
26 	struct clk			*clk_axi;
27 	struct clk			*clk_disp_axi;
28 
29 	struct drm_simple_display_pipe	pipe;
30 	struct drm_connector		connector;
31 	struct drm_panel		*panel;
32 };
33 
34 int mxsfb_setup_crtc(struct drm_device *dev);
35 int mxsfb_create_output(struct drm_device *dev);
36 
37 void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb);
38 void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb);
39 
40 void mxsfb_crtc_enable(struct mxsfb_drm_private *mxsfb);
41 void mxsfb_crtc_disable(struct mxsfb_drm_private *mxsfb);
42 void mxsfb_plane_atomic_update(struct mxsfb_drm_private *mxsfb,
43 			       struct drm_plane_state *state);
44 
45 #endif /* __MXSFB_DRV_H__ */
46