Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 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#include <drm/drm_crtc.h>
12#include <drm/drm_device.h>
13#include <drm/drm_encoder.h>
14#include <drm/drm_plane.h>
15
16struct clk;
17
18struct mxsfb_devdata {
19	unsigned int	transfer_count;
20	unsigned int	cur_buf;
21	unsigned int	next_buf;
22	unsigned int	hs_wdth_mask;
23	unsigned int	hs_wdth_shift;
24	bool		has_overlay;
25	bool		has_ctrl2;
26};
27
28struct mxsfb_drm_private {
29	const struct mxsfb_devdata	*devdata;
30
31	void __iomem			*base;	/* registers */
32	struct clk			*clk;
33	struct clk			*clk_axi;
34	struct clk			*clk_disp_axi;
35
36	struct drm_device		*drm;
37	struct {
38		struct drm_plane	primary;
39		struct drm_plane	overlay;
40	} planes;
41	struct drm_crtc			crtc;
42	struct drm_encoder		encoder;
43	struct drm_connector		*connector;
44	struct drm_bridge		*bridge;
45};
46
47static inline struct mxsfb_drm_private *
48to_mxsfb_drm_private(struct drm_device *drm)
49{
50	return drm->dev_private;
51}
52
53void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb);
54void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb);
55
56int mxsfb_kms_init(struct mxsfb_drm_private *mxsfb);
57
58#endif /* __MXSFB_DRV_H__ */