xref: /openbmc/linux/drivers/gpu/drm/mxsfb/mxsfb_drv.h (revision c942fddf)
1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
245d59d70SMarek Vasut /*
345d59d70SMarek Vasut  * Copyright (C) 2016 Marek Vasut <marex@denx.de>
445d59d70SMarek Vasut  *
545d59d70SMarek Vasut  * i.MX23/i.MX28/i.MX6SX MXSFB LCD controller driver.
645d59d70SMarek Vasut  */
745d59d70SMarek Vasut 
845d59d70SMarek Vasut #ifndef __MXSFB_DRV_H__
945d59d70SMarek Vasut #define __MXSFB_DRV_H__
1045d59d70SMarek Vasut 
1145d59d70SMarek Vasut struct mxsfb_devdata {
1245d59d70SMarek Vasut 	unsigned int	 transfer_count;
1345d59d70SMarek Vasut 	unsigned int	 cur_buf;
1445d59d70SMarek Vasut 	unsigned int	 next_buf;
1545d59d70SMarek Vasut 	unsigned int	 debug0;
1645d59d70SMarek Vasut 	unsigned int	 hs_wdth_mask;
1745d59d70SMarek Vasut 	unsigned int	 hs_wdth_shift;
1845d59d70SMarek Vasut 	unsigned int	 ipversion;
1945d59d70SMarek Vasut };
2045d59d70SMarek Vasut 
2145d59d70SMarek Vasut struct mxsfb_drm_private {
2245d59d70SMarek Vasut 	const struct mxsfb_devdata	*devdata;
2345d59d70SMarek Vasut 
2445d59d70SMarek Vasut 	void __iomem			*base;	/* registers */
2545d59d70SMarek Vasut 	struct clk			*clk;
2645d59d70SMarek Vasut 	struct clk			*clk_axi;
2745d59d70SMarek Vasut 	struct clk			*clk_disp_axi;
2845d59d70SMarek Vasut 
2945d59d70SMarek Vasut 	struct drm_simple_display_pipe	pipe;
3045d59d70SMarek Vasut 	struct drm_connector		connector;
3145d59d70SMarek Vasut 	struct drm_panel		*panel;
3245d59d70SMarek Vasut };
3345d59d70SMarek Vasut 
3445d59d70SMarek Vasut int mxsfb_setup_crtc(struct drm_device *dev);
3545d59d70SMarek Vasut int mxsfb_create_output(struct drm_device *dev);
3645d59d70SMarek Vasut 
3745d59d70SMarek Vasut void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb);
3845d59d70SMarek Vasut void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb);
3945d59d70SMarek Vasut 
4045d59d70SMarek Vasut void mxsfb_crtc_enable(struct mxsfb_drm_private *mxsfb);
4145d59d70SMarek Vasut void mxsfb_crtc_disable(struct mxsfb_drm_private *mxsfb);
4245d59d70SMarek Vasut void mxsfb_plane_atomic_update(struct mxsfb_drm_private *mxsfb,
4345d59d70SMarek Vasut 			       struct drm_plane_state *state);
4445d59d70SMarek Vasut 
4545d59d70SMarek Vasut #endif /* __MXSFB_DRV_H__ */
46