linux/drivers/gpu/drm/rockchip/cdn-dp-core.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2016 Chris Zhong <zyw@rock-chips.com>
   4 * Copyright (C) 2016 ROCKCHIP, Inc.
   5 */
   6
   7#ifndef _CDN_DP_CORE_H
   8#define _CDN_DP_CORE_H
   9
  10#include <drm/drm_dp_helper.h>
  11#include <drm/drm_panel.h>
  12#include <drm/drm_probe_helper.h>
  13
  14#include "rockchip_drm_drv.h"
  15
  16#define MAX_PHY         2
  17
  18enum audio_format {
  19        AFMT_I2S = 0,
  20        AFMT_SPDIF = 1,
  21        AFMT_UNUSED,
  22};
  23
  24struct audio_info {
  25        enum audio_format format;
  26        int sample_rate;
  27        int channels;
  28        int sample_width;
  29};
  30
  31enum vic_pxl_encoding_format {
  32        PXL_RGB = 0x1,
  33        YCBCR_4_4_4 = 0x2,
  34        YCBCR_4_2_2 = 0x4,
  35        YCBCR_4_2_0 = 0x8,
  36        Y_ONLY = 0x10,
  37};
  38
  39struct video_info {
  40        bool h_sync_polarity;
  41        bool v_sync_polarity;
  42        bool interlaced;
  43        int color_depth;
  44        enum vic_pxl_encoding_format color_fmt;
  45};
  46
  47struct cdn_firmware_header {
  48        u32 size_bytes; /* size of the entire header+image(s) in bytes */
  49        u32 header_size; /* size of just the header in bytes */
  50        u32 iram_size; /* size of iram */
  51        u32 dram_size; /* size of dram */
  52};
  53
  54struct cdn_dp_port {
  55        struct cdn_dp_device *dp;
  56        struct notifier_block event_nb;
  57        struct extcon_dev *extcon;
  58        struct phy *phy;
  59        u8 lanes;
  60        bool phy_enabled;
  61        u8 id;
  62};
  63
  64struct cdn_dp_device {
  65        struct device *dev;
  66        struct drm_device *drm_dev;
  67        struct drm_connector connector;
  68        struct drm_encoder encoder;
  69        struct drm_display_mode mode;
  70        struct platform_device *audio_pdev;
  71        struct work_struct event_work;
  72        struct edid *edid;
  73
  74        struct mutex lock;
  75        bool connected;
  76        bool active;
  77        bool suspended;
  78
  79        const struct firmware *fw;      /* cdn dp firmware */
  80        unsigned int fw_version;        /* cdn fw version */
  81        bool fw_loaded;
  82
  83        void __iomem *regs;
  84        struct regmap *grf;
  85        struct clk *core_clk;
  86        struct clk *pclk;
  87        struct clk *spdif_clk;
  88        struct clk *grf_clk;
  89        struct reset_control *spdif_rst;
  90        struct reset_control *dptx_rst;
  91        struct reset_control *apb_rst;
  92        struct reset_control *core_rst;
  93        struct audio_info audio_info;
  94        struct video_info video_info;
  95        struct cdn_dp_port *port[MAX_PHY];
  96        u8 ports;
  97        u8 max_lanes;
  98        unsigned int max_rate;
  99        u8 lanes;
 100        int active_port;
 101
 102        u8 dpcd[DP_RECEIVER_CAP_SIZE];
 103        bool sink_has_audio;
 104};
 105#endif  /* _CDN_DP_CORE_H */
 106