0001
0002
0003
0004
0005
0006
0007 #ifndef _LOGICVC_DRM_H_
0008 #define _LOGICVC_DRM_H_
0009
0010 #include <linux/regmap.h>
0011 #include <linux/types.h>
0012 #include <drm/drm_device.h>
0013
0014 #define LOGICVC_DISPLAY_INTERFACE_RGB 0
0015 #define LOGICVC_DISPLAY_INTERFACE_ITU656 1
0016 #define LOGICVC_DISPLAY_INTERFACE_LVDS_4BITS 2
0017 #define LOGICVC_DISPLAY_INTERFACE_LVDS_4BITS_CAMERA 3
0018 #define LOGICVC_DISPLAY_INTERFACE_LVDS_3BITS 4
0019 #define LOGICVC_DISPLAY_INTERFACE_DVI 5
0020
0021 #define LOGICVC_DISPLAY_COLORSPACE_RGB 0
0022 #define LOGICVC_DISPLAY_COLORSPACE_YUV422 1
0023 #define LOGICVC_DISPLAY_COLORSPACE_YUV444 2
0024
0025 #define logicvc_drm(d) \
0026 container_of(d, struct logicvc_drm, drm_dev)
0027
0028 struct logicvc_crtc;
0029 struct logicvc_interface;
0030
0031 struct logicvc_drm_config {
0032 u32 display_interface;
0033 u32 display_colorspace;
0034 u32 display_depth;
0035 u32 row_stride;
0036 bool dithering;
0037 bool background_layer;
0038 bool layers_configurable;
0039 u32 layers_count;
0040 };
0041
0042 struct logicvc_drm_caps {
0043 unsigned int major;
0044 unsigned int minor;
0045 char level;
0046 bool layer_address;
0047 };
0048
0049 struct logicvc_drm {
0050 const struct logicvc_drm_caps *caps;
0051 struct logicvc_drm_config config;
0052
0053 struct drm_device drm_dev;
0054 phys_addr_t reserved_mem_base;
0055 struct regmap *regmap;
0056
0057 struct clk *vclk;
0058 struct clk *vclk2;
0059 struct clk *lvdsclk;
0060 struct clk *lvdsclkn;
0061
0062 struct list_head layers_list;
0063 struct logicvc_crtc *crtc;
0064 struct logicvc_interface *interface;
0065 };
0066
0067 #endif