linux/drivers/gpu/drm/mxsfb/mxsfb_drv.h
<<
>>
Prefs
   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        unsigned int                    irq;
  37
  38        struct drm_device               *drm;
  39        struct {
  40                struct drm_plane        primary;
  41                struct drm_plane        overlay;
  42        } planes;
  43        struct drm_crtc                 crtc;
  44        struct drm_encoder              encoder;
  45        struct drm_connector            *connector;
  46        struct drm_bridge               *bridge;
  47};
  48
  49static inline struct mxsfb_drm_private *
  50to_mxsfb_drm_private(struct drm_device *drm)
  51{
  52        return drm->dev_private;
  53}
  54
  55void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb);
  56void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb);
  57
  58int mxsfb_kms_init(struct mxsfb_drm_private *mxsfb);
  59
  60#endif /* __MXSFB_DRV_H__ */
  61