xref: /openbmc/linux/drivers/gpu/drm/mxsfb/lcdif_drv.h (revision dbb32d85)
19db35bb3SMarek Vasut /* SPDX-License-Identifier: GPL-2.0-or-later */
29db35bb3SMarek Vasut /*
39db35bb3SMarek Vasut  * Copyright (C) 2022 Marek Vasut <marex@denx.de>
49db35bb3SMarek Vasut  *
59db35bb3SMarek Vasut  * i.MX8MP/i.MXRT LCDIFv3 LCD controller driver.
69db35bb3SMarek Vasut  */
79db35bb3SMarek Vasut 
89db35bb3SMarek Vasut #ifndef __LCDIF_DRV_H__
99db35bb3SMarek Vasut #define __LCDIF_DRV_H__
109db35bb3SMarek Vasut 
11*fcfd3e5fSMarek Vasut #include <drm/drm_bridge.h>
129db35bb3SMarek Vasut #include <drm/drm_crtc.h>
139db35bb3SMarek Vasut #include <drm/drm_device.h>
149db35bb3SMarek Vasut #include <drm/drm_plane.h>
159db35bb3SMarek Vasut 
169db35bb3SMarek Vasut struct clk;
179db35bb3SMarek Vasut 
189db35bb3SMarek Vasut struct lcdif_drm_private {
199db35bb3SMarek Vasut 	void __iomem			*base;	/* registers */
209db35bb3SMarek Vasut 	struct clk			*clk;
219db35bb3SMarek Vasut 	struct clk			*clk_axi;
229db35bb3SMarek Vasut 	struct clk			*clk_disp_axi;
239db35bb3SMarek Vasut 
249db35bb3SMarek Vasut 	unsigned int			irq;
259db35bb3SMarek Vasut 
269db35bb3SMarek Vasut 	struct drm_device		*drm;
279db35bb3SMarek Vasut 	struct {
289db35bb3SMarek Vasut 		struct drm_plane	primary;
299db35bb3SMarek Vasut 		/* i.MXRT does support overlay planes, add them here. */
309db35bb3SMarek Vasut 	} planes;
319db35bb3SMarek Vasut 	struct drm_crtc			crtc;
329db35bb3SMarek Vasut };
339db35bb3SMarek Vasut 
349db35bb3SMarek Vasut static inline struct lcdif_drm_private *
to_lcdif_drm_private(struct drm_device * drm)359db35bb3SMarek Vasut to_lcdif_drm_private(struct drm_device *drm)
369db35bb3SMarek Vasut {
379db35bb3SMarek Vasut 	return drm->dev_private;
389db35bb3SMarek Vasut }
399db35bb3SMarek Vasut 
409db35bb3SMarek Vasut int lcdif_kms_init(struct lcdif_drm_private *lcdif);
419db35bb3SMarek Vasut 
429db35bb3SMarek Vasut #endif /* __LCDIF_DRV_H__ */
43