From 1543e317f1da31b75942316931e8f491a8920811 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 04 Jan 2024 10:08:02 +0000
Subject: [PATCH] disable FB
---
kernel/drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 498 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 375 insertions(+), 123 deletions(-)
diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index cda2e5e..2e8739b 100644
--- a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -1,87 +1,126 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
* Author:Mark Yao <mark.yao@rock-chips.com>
*
* based on exynos_drm_drv.h
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
*/
#ifndef _ROCKCHIP_DRM_DRV_H
#define _ROCKCHIP_DRM_DRV_H
-#include <drm/drm_crtc.h>
-#include <drm/drm_fb_helper.h>
#include <drm/drm_atomic_helper.h>
+#include <drm/drm_dsc.h>
+#include <drm/drm_fb_helper.h>
+#include <drm/drm_fourcc.h>
#include <drm/drm_gem.h>
#include <drm/rockchip_drm.h>
-
#include <linux/module.h>
#include <linux/component.h>
-#include <linux/dmabuf_page_pool.h>
+
+#include <soc/rockchip/rockchip_dmc.h>
+
+#include "../panel/panel-simple.h"
+
+#include "rockchip_drm_debugfs.h"
#define ROCKCHIP_MAX_FB_BUFFER 3
#define ROCKCHIP_MAX_CONNECTOR 2
#define ROCKCHIP_MAX_CRTC 4
#define ROCKCHIP_MAX_LAYER 16
+
struct drm_device;
struct drm_connector;
struct iommu_domain;
+
+#define VOP_COLOR_KEY_NONE (0 << 31)
+#define VOP_COLOR_KEY_MASK (1 << 31)
+
+#define VOP_OUTPUT_IF_RGB BIT(0)
+#define VOP_OUTPUT_IF_BT1120 BIT(1)
+#define VOP_OUTPUT_IF_BT656 BIT(2)
+#define VOP_OUTPUT_IF_LVDS0 BIT(3)
+#define VOP_OUTPUT_IF_LVDS1 BIT(4)
+#define VOP_OUTPUT_IF_MIPI0 BIT(5)
+#define VOP_OUTPUT_IF_MIPI1 BIT(6)
+#define VOP_OUTPUT_IF_eDP0 BIT(7)
+#define VOP_OUTPUT_IF_eDP1 BIT(8)
+#define VOP_OUTPUT_IF_DP0 BIT(9)
+#define VOP_OUTPUT_IF_DP1 BIT(10)
+#define VOP_OUTPUT_IF_HDMI0 BIT(11)
+#define VOP_OUTPUT_IF_HDMI1 BIT(12)
+
+#ifndef DRM_FORMAT_NV20
+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */
+#endif
+
+#ifndef DRM_FORMAT_NV30
+#define DRM_FORMAT_NV30 fourcc_code('N', 'V', '3', '0') /* non-subsampled Cr:Cb plane */
+#endif
+
+#define RK_IF_PROP_COLOR_DEPTH "color_depth"
+#define RK_IF_PROP_COLOR_FORMAT "color_format"
+#define RK_IF_PROP_COLOR_DEPTH_CAPS "color_depth_caps"
+#define RK_IF_PROP_COLOR_FORMAT_CAPS "color_format_caps"
+#define RK_IF_PROP_ENCRYPTED "hdcp_encrypted"
+
+enum rockchip_drm_debug_category {
+ VOP_DEBUG_PLANE = BIT(0),
+ VOP_DEBUG_OVERLAY = BIT(1),
+ VOP_DEBUG_WB = BIT(2),
+ VOP_DEBUG_CFG_DONE = BIT(3),
+ VOP_DEBUG_VSYNC = BIT(7),
+};
+
+enum rk_if_color_depth {
+ RK_IF_DEPTH_8,
+ RK_IF_DEPTH_10,
+ RK_IF_DEPTH_12,
+ RK_IF_DEPTH_16,
+ RK_IF_DEPTH_420_10,
+ RK_IF_DEPTH_420_12,
+ RK_IF_DEPTH_420_16,
+ RK_IF_DEPTH_6,
+ RK_IF_DEPTH_MAX,
+};
+
+enum rk_if_color_format {
+ RK_IF_FORMAT_RGB, /* default RGB */
+ RK_IF_FORMAT_YCBCR444, /* YCBCR 444 */
+ RK_IF_FORMAT_YCBCR422, /* YCBCR 422 */
+ RK_IF_FORMAT_YCBCR420, /* YCBCR 420 */
+ RK_IF_FORMAT_YCBCR_HQ, /* Highest subsampled YUV */
+ RK_IF_FORMAT_YCBCR_LQ, /* Lowest subsampled YUV */
+ RK_IF_FORMAT_MAX,
+};
+
+enum rockchip_hdcp_encrypted {
+ RK_IF_HDCP_ENCRYPTED_NONE = 0,
+ RK_IF_HDCP_ENCRYPTED_LEVEL1,
+ RK_IF_HDCP_ENCRYPTED_LEVEL2,
+};
+
+enum rockchip_color_bar_mode {
+ ROCKCHIP_COLOR_BAR_OFF = 0,
+ ROCKCHIP_COLOR_BAR_HORIZONTAL = 1,
+ ROCKCHIP_COLOR_BAR_VERTICAL = 2,
+};
+
+enum rockchip_drm_split_area {
+ ROCKCHIP_DRM_SPLIT_UNSET = 0,
+ ROCKCHIP_DRM_SPLIT_LEFT_SIDE = 1,
+ ROCKCHIP_DRM_SPLIT_RIGHT_SIDE = 2,
+};
struct rockchip_drm_sub_dev {
struct list_head list;
struct drm_connector *connector;
struct device_node *of_node;
-};
-
-/*
- * Rockchip drm private crtc funcs.
- * @loader_protect: protect loader logo crtc's power
- * @enable_vblank: enable crtc vblank irq.
- * @disable_vblank: disable crtc vblank irq.
- * @bandwidth: report present crtc bandwidth consume.
- */
-struct rockchip_crtc_funcs {
- int (*loader_protect)(struct drm_crtc *crtc, bool on);
- int (*enable_vblank)(struct drm_crtc *crtc);
- void (*disable_vblank)(struct drm_crtc *crtc);
- size_t (*bandwidth)(struct drm_crtc *crtc,
- struct drm_crtc_state *crtc_state,
- size_t *frame_bw_mbyte,
- unsigned int *plane_num_total);
- void (*cancel_pending_vblank)(struct drm_crtc *crtc,
- struct drm_file *file_priv);
- int (*debugfs_init)(struct drm_minor *minor, struct drm_crtc *crtc);
- int (*debugfs_dump)(struct drm_crtc *crtc, struct seq_file *s);
- void (*regs_dump)(struct drm_crtc *crtc, struct seq_file *s);
- void (*active_regs_dump)(struct drm_crtc *crtc, struct seq_file *s);
- enum drm_mode_status (*mode_valid)(struct drm_crtc *crtc,
- const struct drm_display_mode *mode,
- int output_type);
- void (*crtc_close)(struct drm_crtc *crtc);
- void (*crtc_send_mcu_cmd)(struct drm_crtc *crtc, u32 type, u32 value);
- void (*te_handler)(struct drm_crtc *crtc);
-};
-
-struct rockchip_atomic_commit {
- struct drm_atomic_state *state;
- struct drm_device *dev;
- size_t line_bw_mbyte;
- size_t frame_bw_mbyte;
- unsigned int plane_num;
-};
-
-struct rockchip_dclk_pll {
- struct clk *pll;
- unsigned int use_count;
+ int (*loader_protect)(struct drm_encoder *encoder, bool on);
+ void (*oob_hotplug_event)(struct drm_connector *connector);
+ void (*update_vfp_for_vrr)(struct drm_connector *connector, struct drm_display_mode *mode,
+ int vfp);
};
struct rockchip_sdr2hdr_state {
@@ -104,15 +143,51 @@
struct rockchip_sdr2hdr_state sdr2hdr_state;
};
-#define VOP_COLOR_KEY_NONE (0 << 31)
-#define VOP_COLOR_KEY_MASK (1 << 31)
-
struct rockchip_bcsh_state {
int brightness;
int contrast;
int saturation;
int sin_hue;
int cos_hue;
+};
+
+struct rockchip_crtc {
+ struct drm_crtc crtc;
+#if defined(CONFIG_ROCKCHIP_DRM_DEBUG)
+ /**
+ * @vop_dump_status the status of vop dump control
+ * @vop_dump_list_head the list head of vop dump list
+ * @vop_dump_list_init_flag init once
+ * @vop_dump_times control the dump times
+ * @frme_count the frame of dump buf
+ */
+ enum vop_dump_status vop_dump_status;
+ struct list_head vop_dump_list_head;
+ bool vop_dump_list_init_flag;
+ int vop_dump_times;
+ int frame_count;
+#endif
+};
+
+struct rockchip_dsc_sink_cap {
+ /**
+ * @slice_width: the number of pixel columns that comprise the slice width
+ * @slice_height: the number of pixel rows that comprise the slice height
+ * @block_pred: Does block prediction
+ * @native_420: Does sink support DSC with 4:2:0 compression
+ * @bpc_supported: compressed bpc supported by sink : 10, 12 or 16 bpc
+ * @version_major: DSC major version
+ * @version_minor: DSC minor version
+ * @target_bits_per_pixel_x16: bits num after compress and multiply 16
+ */
+ u16 slice_width;
+ u16 slice_height;
+ bool block_pred;
+ bool native_420;
+ u8 bpc_supported;
+ u8 version_major;
+ u8 version_minor;
+ u16 target_bits_per_pixel_x16;
};
#define ACM_GAIN_LUT_HY_LENGTH (9*17)
@@ -146,25 +221,18 @@
u16 csc_enable;
};
-#define VOP_OUTPUT_IF_RGB BIT(0)
-#define VOP_OUTPUT_IF_BT1120 BIT(1)
-#define VOP_OUTPUT_IF_BT656 BIT(2)
-#define VOP_OUTPUT_IF_LVDS0 BIT(3)
-#define VOP_OUTPUT_IF_LVDS1 BIT(4)
-#define VOP_OUTPUT_IF_MIPI0 BIT(5)
-#define VOP_OUTPUT_IF_MIPI1 BIT(6)
-#define VOP_OUTPUT_IF_eDP0 BIT(7)
-#define VOP_OUTPUT_IF_eDP1 BIT(8)
-#define VOP_OUTPUT_IF_DP0 BIT(9)
-#define VOP_OUTPUT_IF_DP1 BIT(10)
-#define VOP_OUTPUT_IF_HDMI0 BIT(11)
-#define VOP_OUTPUT_IF_HDMI1 BIT(12)
-#define VOP_OUTPUT_IF_TV BIT(13)
-
struct rockchip_crtc_state {
struct drm_crtc_state base;
-
int vp_id;
+ int output_type;
+ int output_mode;
+ int output_bpc;
+ int output_flags;
+ bool enable_afbc;
+ /**
+ * @splice_mode: enabled when display a hdisplay > 4096 on rk3588
+ */
+ bool splice_mode;
/**
* @hold_mode: enabled when it's:
@@ -195,11 +263,8 @@
int afbdc_win_xoffset;
int afbdc_win_yoffset;
int dsp_layer_sel;
- int output_type;
- int output_mode;
- int output_bpc;
- int output_flags;
u32 output_if;
+ u32 output_if_left_panel;
u32 bus_format;
u32 bus_flags;
int yuv_overlay;
@@ -212,11 +277,29 @@
u32 background;
u32 line_flag;
u8 mode_update;
+ u8 dsc_id;
+ u8 dsc_enable;
+
+ u8 dsc_slice_num;
+ u8 dsc_pixel_num;
+
+ u64 dsc_txp_clk_rate;
+ u64 dsc_pxl_clk_rate;
+ u64 dsc_cds_clk_rate;
+
+ struct drm_dsc_picture_parameter_set pps;
+ struct rockchip_dsc_sink_cap dsc_sink_cap;
struct rockchip_hdr_state hdr;
struct drm_property_blob *hdr_ext_data;
struct drm_property_blob *acm_lut_data;
struct drm_property_blob *post_csc_data;
+ struct drm_property_blob *cubic_lut_data;
+
+ int request_refresh_rate;
+ int max_refresh_rate;
+ int min_refresh_rate;
};
+
#define to_rockchip_crtc_state(s) \
container_of(s, struct rockchip_crtc_state, base)
@@ -228,15 +311,159 @@
struct rockchip_logo {
dma_addr_t dma_addr;
+ struct drm_mm_node logo_reserved_node;
void *kvaddr;
phys_addr_t start;
phys_addr_t size;
int count;
};
+struct rockchip_mcu_timing {
+ int mcu_pix_total;
+ int mcu_cs_pst;
+ int mcu_cs_pend;
+ int mcu_rw_pst;
+ int mcu_rw_pend;
+ int mcu_hold_mode;
+};
+
struct loader_cubic_lut {
bool enable;
u32 offset;
+};
+
+struct rockchip_drm_dsc_cap {
+ bool v_1p2;
+ bool native_420;
+ bool all_bpp;
+ u8 bpc_supported;
+ u8 max_slices;
+ u8 max_lanes;
+ u8 max_frl_rate_per_lane;
+ u8 total_chunk_kbytes;
+ int clk_per_slice;
+};
+
+struct ver_26_v0 {
+ u8 yuv422_12bit;
+ u8 support_2160p_60;
+ u8 global_dimming;
+ u8 dm_major_ver;
+ u8 dm_minor_ver;
+ u16 t_min_pq;
+ u16 t_max_pq;
+ u16 rx;
+ u16 ry;
+ u16 gx;
+ u16 gy;
+ u16 bx;
+ u16 by;
+ u16 wx;
+ u16 wy;
+} __packed;
+
+struct ver_15_v1 {
+ u8 yuv422_12bit;
+ u8 support_2160p_60;
+ u8 global_dimming;
+ u8 dm_version;
+ u8 colorimetry;
+ u8 t_max_lum;
+ u8 t_min_lum;
+ u8 rx;
+ u8 ry;
+ u8 gx;
+ u8 gy;
+ u8 bx;
+ u8 by;
+} __packed;
+
+struct ver_12_v1 {
+ u8 yuv422_12bit;
+ u8 support_2160p_60;
+ u8 global_dimming;
+ u8 dm_version;
+ u8 colorimetry;
+ u8 low_latency;
+ u8 t_max_lum;
+ u8 t_min_lum;
+ u8 unique_rx;
+ u8 unique_ry;
+ u8 unique_gx;
+ u8 unique_gy;
+ u8 unique_bx;
+ u8 unique_by;
+} __packed;
+
+struct ver_12_v2 {
+ u8 yuv422_12bit;
+ u8 backlt_ctrl;
+ u8 global_dimming;
+ u8 dm_version;
+ u8 backlt_min_luma;
+ u8 interface;
+ u8 yuv444_10b_12b;
+ u8 t_min_pq_v2;
+ u8 t_max_pq_v2;
+ u8 unique_rx;
+ u8 unique_ry;
+ u8 unique_gx;
+ u8 unique_gy;
+ u8 unique_bx;
+ u8 unique_by;
+} __packed;
+
+struct next_hdr_sink_data {
+ u8 version;
+ struct ver_26_v0 ver_26_v0;
+ struct ver_15_v1 ver_15_v1;
+ struct ver_12_v1 ver_12_v1;
+ struct ver_12_v2 ver_12_v2;
+} __packed;
+
+/*
+ * Rockchip drm private crtc funcs.
+ * @loader_protect: protect loader logo crtc's power
+ * @enable_vblank: enable crtc vblank irq.
+ * @disable_vblank: disable crtc vblank irq.
+ * @bandwidth: report present crtc bandwidth consume.
+ * @cancel_pending_vblank: cancel pending vblank.
+ * @debugfs_init: init crtc debugfs.
+ * @debugfs_dump: debugfs to dump crtc and plane state.
+ * @regs_dump: dump vop current register config.
+ * @mode_valid: verify that the current mode is supported.
+ * @crtc_close: close vop.
+ * @crtc_send_mcu_cmd: send mcu panel init cmd.
+ * @te_handler: soft te hand for cmd mode panel.
+ * @wait_vact_end: wait the last active line.
+ */
+struct rockchip_crtc_funcs {
+ int (*loader_protect)(struct drm_crtc *crtc, bool on, void *data);
+ int (*enable_vblank)(struct drm_crtc *crtc);
+ void (*disable_vblank)(struct drm_crtc *crtc);
+ size_t (*bandwidth)(struct drm_crtc *crtc,
+ struct drm_crtc_state *crtc_state,
+ struct dmcfreq_vop_info *vop_bw_info);
+ void (*cancel_pending_vblank)(struct drm_crtc *crtc,
+ struct drm_file *file_priv);
+ int (*debugfs_init)(struct drm_minor *minor, struct drm_crtc *crtc);
+ int (*debugfs_dump)(struct drm_crtc *crtc, struct seq_file *s);
+ void (*regs_dump)(struct drm_crtc *crtc, struct seq_file *s);
+ void (*active_regs_dump)(struct drm_crtc *crtc, struct seq_file *s);
+ enum drm_mode_status (*mode_valid)(struct drm_crtc *crtc,
+ const struct drm_display_mode *mode,
+ int output_type);
+ void (*crtc_close)(struct drm_crtc *crtc);
+ void (*crtc_send_mcu_cmd)(struct drm_crtc *crtc, u32 type, u32 value);
+ void (*te_handler)(struct drm_crtc *crtc);
+ int (*wait_vact_end)(struct drm_crtc *crtc, unsigned int mstimeout);
+ void (*crtc_standby)(struct drm_crtc *crtc, bool standby);
+ int (*crtc_set_color_bar)(struct drm_crtc *crtc, enum rockchip_color_bar_mode mode);
+};
+
+struct rockchip_dclk_pll {
+ struct clk *pll;
+ unsigned int use_count;
};
/*
@@ -248,42 +475,47 @@
*/
struct rockchip_drm_private {
struct rockchip_logo *logo;
- struct dmabuf_page_pool *page_pools;
- struct drm_property *eotf_prop;
- struct drm_property *color_space_prop;
- struct drm_property *global_alpha_prop;
- struct drm_property *blend_mode_prop;
- struct drm_property *alpha_scale_prop;
- struct drm_property *async_commit_prop;
- struct drm_property *share_id_prop;
- struct drm_property *connector_id_prop;
struct drm_fb_helper *fbdev_helper;
struct drm_gem_object *fbdev_bo;
- const struct rockchip_crtc_funcs *crtc_funcs[ROCKCHIP_MAX_CRTC];
- struct drm_atomic_state *state;
-
- struct rockchip_atomic_commit *commit;
- /* protect async commit */
+ struct iommu_domain *domain;
+ struct gen_pool *secure_buffer_pool;
+ struct mutex mm_lock;
+ struct drm_mm mm;
+ struct list_head psr_list;
+ struct mutex psr_list_lock;
struct mutex commit_lock;
+
+ /* private crtc prop */
+ struct drm_property *soc_id_prop;
+ struct drm_property *port_id_prop;
+ struct drm_property *aclk_prop;
+ struct drm_property *bg_prop;
+ struct drm_property *line_flag_prop;
+ struct drm_property *cubic_lut_prop;
+ struct drm_property *cubic_lut_size_prop;
+
+ /* private plane prop */
+ struct drm_property *eotf_prop;
+ struct drm_property *color_space_prop;
+ struct drm_property *async_commit_prop;
+ struct drm_property *share_id_prop;
+
+ /* private connector prop */
+ struct drm_property *connector_id_prop;
+ struct drm_property *split_area_prop;
+
+ const struct rockchip_crtc_funcs *crtc_funcs[ROCKCHIP_MAX_CRTC];
+
+ struct rockchip_dclk_pll default_pll;
+ struct rockchip_dclk_pll hdmi_pll;
+
/*
* protect some shared overlay resource
* OVL_LAYER_SEL/OVL_PORT_SEL
*/
struct mutex ovl_lock;
- struct work_struct commit_work;
- struct iommu_domain *domain;
- struct gen_pool *secure_buffer_pool;
- /* protect drm_mm on multi-threads */
- struct mutex mm_lock;
- struct drm_mm mm;
- struct rockchip_dclk_pll default_pll;
- struct rockchip_dclk_pll hdmi_pll;
- struct devfreq *devfreq;
- u8 dmc_support;
- struct list_head psr_list;
- struct mutex psr_list_lock;
- struct rockchip_drm_vcnt vcnt[ROCKCHIP_MAX_CRTC];
+ struct rockchip_drm_vcnt vcnt[ROCKCHIP_MAX_CRTC];
/**
* @loader_protect
* ignore restore_fbdev_mode_atomic when in logo on state
@@ -292,58 +524,78 @@
dma_addr_t cubic_lut_dma_addr;
void *cubic_lut_kvaddr;
+ struct drm_mm_node *clut_reserved_node;
struct loader_cubic_lut cubic_lut[ROCKCHIP_MAX_CRTC];
};
-#ifndef MODULE
-void rockchip_free_loader_memory(struct drm_device *drm);
-#endif
-void rockchip_drm_atomic_work(struct work_struct *work);
+void rockchip_connector_update_vfp_for_vrr(struct drm_crtc *crtc, struct drm_display_mode *mode,
+ int vfp);
int rockchip_drm_dma_attach_device(struct drm_device *drm_dev,
struct device *dev);
void rockchip_drm_dma_detach_device(struct drm_device *drm_dev,
struct device *dev);
+int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
const struct rockchip_crtc_funcs *crtc_funcs);
void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc);
-int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
+void rockchip_drm_crtc_standby(struct drm_crtc *crtc, bool standby);
void rockchip_drm_register_sub_dev(struct rockchip_drm_sub_dev *sub_dev);
void rockchip_drm_unregister_sub_dev(struct rockchip_drm_sub_dev *sub_dev);
struct rockchip_drm_sub_dev *rockchip_drm_get_sub_dev(struct device_node *node);
int rockchip_drm_add_modes_noedid(struct drm_connector *connector);
void rockchip_drm_te_handle(struct drm_crtc *crtc);
-#if IS_ENABLED(CONFIG_DRM_ROCKCHIP)
+void drm_mode_convert_to_split_mode(struct drm_display_mode *mode);
+void drm_mode_convert_to_origin_mode(struct drm_display_mode *mode);
+u32 rockchip_drm_get_dclk_by_width(int width);
+#if IS_REACHABLE(CONFIG_DRM_ROCKCHIP)
int rockchip_drm_get_sub_dev_type(void);
+u32 rockchip_drm_get_scan_line_time_ns(void);
#else
static inline int rockchip_drm_get_sub_dev_type(void)
{
return DRM_MODE_CONNECTOR_Unknown;
}
-#endif
-#if IS_ENABLED(CONFIG_DRM_ROCKCHIP)
-int rockchip_drm_crtc_send_mcu_cmd(struct drm_device *drm_dev,
- struct device_node *np_crtc,
- u32 type, u32 value);
-#else
-static inline int rockchip_drm_crtc_send_mcu_cmd(struct drm_device *drm_dev,
- struct device_node *np_crtc,
- u32 type, u32 value)
+static inline u32 rockchip_drm_get_scan_line_time_ns(void)
{
return 0;
}
#endif
+int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
+uint32_t rockchip_drm_of_find_possible_crtcs(struct drm_device *dev,
+ struct device_node *port);
+uint32_t rockchip_drm_get_bpp(const struct drm_format_info *info);
+uint32_t rockchip_drm_get_cycles_per_pixel(uint32_t bus_format);
+int rockchip_drm_get_yuv422_format(struct drm_connector *connector,
+ struct edid *edid);
+int rockchip_drm_parse_cea_ext(struct rockchip_drm_dsc_cap *dsc_cap,
+ u8 *max_frl_rate_per_lane, u8 *max_lanes, u8 *add_func,
+ const struct edid *edid);
+int rockchip_drm_parse_next_hdr(struct next_hdr_sink_data *sink_data,
+ const struct edid *edid);
+int rockchip_drm_parse_colorimetry_data_block(u8 *colorimetry, const struct edid *edid);
+long rockchip_drm_dclk_round_rate(u32 version, struct clk *dclk, unsigned long rate);
+int rockchip_drm_dclk_set_rate(u32 version, struct clk *dclk, unsigned long rate);
+
+__printf(3, 4)
+void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category category,
+ const char *format, ...);
+
extern struct platform_driver cdn_dp_driver;
extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;
-extern struct platform_driver dw_mipi_dsi_driver;
+extern struct platform_driver dw_mipi_dsi_rockchip_driver;
+extern struct platform_driver dw_mipi_dsi2_rockchip_driver;
extern struct platform_driver inno_hdmi_driver;
extern struct platform_driver rockchip_dp_driver;
extern struct platform_driver rockchip_lvds_driver;
-extern struct platform_driver rockchip_tve_driver;
extern struct platform_driver vop_platform_driver;
extern struct platform_driver vop2_platform_driver;
-extern struct platform_driver vvop_platform_driver;
+extern struct platform_driver rk3066_hdmi_driver;
extern struct platform_driver rockchip_rgb_driver;
+extern struct platform_driver rockchip_tve_driver;
+extern struct platform_driver dw_dp_driver;
+extern struct platform_driver vconn_platform_driver;
+extern struct platform_driver vvop_platform_driver;
#endif /* _ROCKCHIP_DRM_DRV_H_ */
--
Gitblit v1.6.2