cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rockchip_drm_drv.h (2473B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
      4 * Author:Mark Yao <mark.yao@rock-chips.com>
      5 *
      6 * based on exynos_drm_drv.h
      7 */
      8
      9#ifndef _ROCKCHIP_DRM_DRV_H
     10#define _ROCKCHIP_DRM_DRV_H
     11
     12#include <drm/drm_fb_helper.h>
     13#include <drm/drm_atomic_helper.h>
     14#include <drm/drm_gem.h>
     15
     16#include <linux/module.h>
     17#include <linux/component.h>
     18
     19#define ROCKCHIP_MAX_FB_BUFFER	3
     20#define ROCKCHIP_MAX_CONNECTOR	2
     21#define ROCKCHIP_MAX_CRTC	4
     22
     23struct drm_device;
     24struct drm_connector;
     25struct iommu_domain;
     26
     27struct rockchip_crtc_state {
     28	struct drm_crtc_state base;
     29	int output_type;
     30	int output_mode;
     31	int output_bpc;
     32	int output_flags;
     33	bool enable_afbc;
     34	u32 bus_format;
     35	u32 bus_flags;
     36	int color_space;
     37};
     38#define to_rockchip_crtc_state(s) \
     39		container_of(s, struct rockchip_crtc_state, base)
     40
     41/*
     42 * Rockchip drm private structure.
     43 *
     44 * @crtc: array of enabled CRTCs, used to map from "pipe" to drm_crtc.
     45 * @num_pipe: number of pipes for this device.
     46 * @mm_lock: protect drm_mm on multi-threads.
     47 */
     48struct rockchip_drm_private {
     49	struct iommu_domain *domain;
     50	struct device *iommu_dev;
     51	struct mutex mm_lock;
     52	struct drm_mm mm;
     53};
     54
     55struct rockchip_encoder {
     56	int crtc_endpoint_id;
     57	struct drm_encoder encoder;
     58};
     59
     60int rockchip_drm_dma_attach_device(struct drm_device *drm_dev,
     61				   struct device *dev);
     62void rockchip_drm_dma_detach_device(struct drm_device *drm_dev,
     63				    struct device *dev);
     64void rockchip_drm_dma_init_device(struct drm_device *drm_dev,
     65				  struct device *dev);
     66int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
     67int rockchip_drm_encoder_set_crtc_endpoint_id(struct rockchip_encoder *rencoder,
     68					      struct device_node *np, int port, int reg);
     69int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
     70extern struct platform_driver cdn_dp_driver;
     71extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;
     72extern struct platform_driver dw_mipi_dsi_rockchip_driver;
     73extern struct platform_driver inno_hdmi_driver;
     74extern struct platform_driver rockchip_dp_driver;
     75extern struct platform_driver rockchip_lvds_driver;
     76extern struct platform_driver vop_platform_driver;
     77extern struct platform_driver rk3066_hdmi_driver;
     78extern struct platform_driver vop2_platform_driver;
     79
     80static inline struct rockchip_encoder *to_rockchip_encoder(struct drm_encoder *encoder)
     81{
     82	return container_of(encoder, struct rockchip_encoder, encoder);
     83}
     84
     85#endif /* _ROCKCHIP_DRM_DRV_H_ */