| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* SPDX-License-Identifier: GPL-2.0-or-later */
- /*
- * Copyright (C) 2016 Marek Vasut <marex@denx.de>
- *
- * i.MX23/i.MX28/i.MX6SX MXSFB LCD controller driver.
- */
- #ifndef __MXSFB_DRV_H__
- #define __MXSFB_DRV_H__
- #include <drm/drm_crtc.h>
- #include <drm/drm_device.h>
- #include <drm/drm_encoder.h>
- #include <drm/drm_plane.h>
- struct clk;
- struct mxsfb_devdata {
- unsigned int transfer_count;
- unsigned int cur_buf;
- unsigned int next_buf;
- unsigned int hs_wdth_mask;
- unsigned int hs_wdth_shift;
- bool has_overlay;
- bool has_ctrl2;
- bool has_crc32;
- };
- struct mxsfb_drm_private {
- const struct mxsfb_devdata *devdata;
- void __iomem *base; /* registers */
- struct clk *clk;
- struct clk *clk_axi;
- struct clk *clk_disp_axi;
- unsigned int irq;
- struct drm_device *drm;
- struct {
- struct drm_plane primary;
- struct drm_plane overlay;
- } planes;
- struct drm_crtc crtc;
- struct drm_encoder encoder;
- struct drm_connector *connector;
- struct drm_bridge *bridge;
- bool crc_active;
- };
- static inline struct mxsfb_drm_private *
- to_mxsfb_drm_private(struct drm_device *drm)
- {
- return drm->dev_private;
- }
- void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb);
- void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb);
- int mxsfb_kms_init(struct mxsfb_drm_private *mxsfb);
- #endif /* __MXSFB_DRV_H__ */
|