123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (C) 2016 Chris Zhong <zyw@rock-chips.com>
- * Copyright (C) 2016 ROCKCHIP, Inc.
- */
- #ifndef _CDN_DP_CORE_H
- #define _CDN_DP_CORE_H
- #include <drm/drm_dp_helper.h>
- #include <drm/drm_panel.h>
- #include <drm/drm_probe_helper.h>
- #include "rockchip_drm_drv.h"
- #define MAX_PHY 2
- enum audio_format {
- AFMT_I2S = 0,
- AFMT_SPDIF = 1,
- AFMT_UNUSED,
- };
- struct audio_info {
- enum audio_format format;
- int sample_rate;
- int channels;
- int sample_width;
- };
- enum vic_pxl_encoding_format {
- PXL_RGB = 0x1,
- YCBCR_4_4_4 = 0x2,
- YCBCR_4_2_2 = 0x4,
- YCBCR_4_2_0 = 0x8,
- Y_ONLY = 0x10,
- };
- struct video_info {
- bool h_sync_polarity;
- bool v_sync_polarity;
- bool interlaced;
- int color_depth;
- enum vic_pxl_encoding_format color_fmt;
- };
- struct cdn_firmware_header {
- u32 size_bytes; /* size of the entire header+image(s) in bytes */
- u32 header_size; /* size of just the header in bytes */
- u32 iram_size; /* size of iram */
- u32 dram_size; /* size of dram */
- };
- struct cdn_dp_port {
- struct cdn_dp_device *dp;
- struct notifier_block event_nb;
- struct extcon_dev *extcon;
- struct phy *phy;
- u8 lanes;
- bool phy_enabled;
- u8 id;
- };
- struct cdn_dp_device {
- struct device *dev;
- struct drm_device *drm_dev;
- struct drm_connector connector;
- struct drm_encoder encoder;
- struct drm_display_mode mode;
- struct platform_device *audio_pdev;
- struct work_struct event_work;
- struct edid *edid;
- struct mutex lock;
- bool connected;
- bool active;
- bool suspended;
- const struct firmware *fw; /* cdn dp firmware */
- unsigned int fw_version; /* cdn fw version */
- bool fw_loaded;
- void __iomem *regs;
- struct regmap *grf;
- struct clk *core_clk;
- struct clk *pclk;
- struct clk *spdif_clk;
- struct clk *grf_clk;
- struct reset_control *spdif_rst;
- struct reset_control *dptx_rst;
- struct reset_control *apb_rst;
- struct reset_control *core_rst;
- struct audio_info audio_info;
- struct video_info video_info;
- struct cdn_dp_port *port[MAX_PHY];
- u8 ports;
- u8 max_lanes;
- unsigned int max_rate;
- u8 lanes;
- int active_port;
- u8 dpcd[DP_RECEIVER_CAP_SIZE];
- bool sink_has_audio;
- };
- #endif /* _CDN_DP_CORE_H */
|