linux/drivers/gpu/drm/xilinx/xilinx_drm_dp_sub.h
<<
>>
Prefs
   1/*
   2 * DisplayPort subsystem header for Xilinx DRM KMS
   3 *
   4 *  Copyright (C) 2014 Xilinx, Inc.
   5 *
   6 *  Author: Hyun Woo Kwon <hyunk@xilinx.com>
   7 *
   8 * This software is licensed under the terms of the GNU General Public
   9 * License version 2, as published by the Free Software Foundation, and
  10 * may be copied, distributed, and modified under those terms.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 */
  17
  18#ifndef _XILINX_DRM_DP_SUB_H_
  19#define _XILINX_DRM_DP_SUB_H_
  20
  21#define XILINX_DRM_DP_SUB_NUM_LAYERS    2
  22#define XILINX_DRM_DP_SUB_MAX_WIDTH     4096
  23#define XILINX_DRM_DP_SUB_MAX_ALPHA     255
  24
  25struct drm_device;
  26struct xilinx_drm_dp_sub;
  27struct xilinx_drm_dp_sub_layer;
  28
  29int xilinx_drm_dp_sub_layer_check_size(struct xilinx_drm_dp_sub *dp_sub,
  30                                       struct xilinx_drm_dp_sub_layer *layer,
  31                                       uint32_t width, uint32_t height);
  32int xilinx_drm_dp_sub_layer_set_fmt(struct xilinx_drm_dp_sub *dp_sub,
  33                                    struct xilinx_drm_dp_sub_layer *layer,
  34                                    uint32_t drm_fmt);
  35uint32_t xilinx_drm_dp_sub_layer_get_fmt(struct xilinx_drm_dp_sub *dp_sub,
  36                                         struct xilinx_drm_dp_sub_layer *layer);
  37void xilinx_drm_dp_sub_layer_get_fmts(struct xilinx_drm_dp_sub *dp_sub,
  38                                      struct xilinx_drm_dp_sub_layer *layer,
  39                                      uint32_t **drm_fmts,
  40                                      unsigned int *num_fmts);
  41void xilinx_drm_dp_sub_layer_enable(struct xilinx_drm_dp_sub *dp_sub,
  42                                    struct xilinx_drm_dp_sub_layer *layer);
  43void xilinx_drm_dp_sub_layer_disable(struct xilinx_drm_dp_sub *dp_sub,
  44                                     struct xilinx_drm_dp_sub_layer *layer);
  45struct xilinx_drm_dp_sub_layer *
  46xilinx_drm_dp_sub_layer_get(struct xilinx_drm_dp_sub *dp_sub, bool priv);
  47void xilinx_drm_dp_sub_layer_put(struct xilinx_drm_dp_sub *dp_sub,
  48                                 struct xilinx_drm_dp_sub_layer *layer);
  49
  50int xilinx_drm_dp_sub_set_output_fmt(struct xilinx_drm_dp_sub *dp_sub,
  51                                     uint32_t drm_fmt);
  52void xilinx_drm_dp_sub_set_bg_color(struct xilinx_drm_dp_sub *dp_sub,
  53                                    u32 c0, u32 c1, u32 c2);
  54void xilinx_drm_dp_sub_set_alpha(struct xilinx_drm_dp_sub *dp_sub, u32 alpha);
  55void
  56xilinx_drm_dp_sub_enable_alpha(struct xilinx_drm_dp_sub *dp_sub, bool enable);
  57
  58void xilinx_drm_dp_sub_enable_vblank(struct xilinx_drm_dp_sub *dp_sub,
  59                                     void (*vblank_fn)(void *),
  60                                     void *vblank_data);
  61void xilinx_drm_dp_sub_disable_vblank(struct xilinx_drm_dp_sub *dp_sub);
  62void xilinx_drm_dp_sub_handle_vblank(struct xilinx_drm_dp_sub *dp_sub);
  63void xilinx_drm_dp_sub_enable(struct xilinx_drm_dp_sub *dp_sub);
  64void xilinx_drm_dp_sub_disable(struct xilinx_drm_dp_sub *dp_sub);
  65
  66struct xilinx_drm_dp_sub *xilinx_drm_dp_sub_of_get(struct device_node *np);
  67void xilinx_drm_dp_sub_put(struct xilinx_drm_dp_sub *dp_sub);
  68
  69#endif /* _XILINX_DRM_DP_SUB_H_ */
  70