meson_venc.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. * Copyright (C) 2016 BayLibre, SAS
  3. * Author: Neil Armstrong <narmstrong@baylibre.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of the
  8. * License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /*
  19. * Video Encoders
  20. * - ENCI : Interlace Video Encoder
  21. * - ENCI_DVI : Interlace Video Encoder for DVI/HDMI
  22. * - ENCP : Progressive Video Encoder
  23. */
  24. #ifndef __MESON_VENC_H
  25. #define __MESON_VENC_H
  26. enum {
  27. MESON_VENC_MODE_NONE = 0,
  28. MESON_VENC_MODE_CVBS_PAL,
  29. MESON_VENC_MODE_CVBS_NTSC,
  30. MESON_VENC_MODE_HDMI,
  31. };
  32. struct meson_cvbs_enci_mode {
  33. unsigned int mode_tag;
  34. unsigned int hso_begin; /* HSO begin position */
  35. unsigned int hso_end; /* HSO end position */
  36. unsigned int vso_even; /* VSO even line */
  37. unsigned int vso_odd; /* VSO odd line */
  38. unsigned int macv_max_amp; /* Macrovision max amplitude */
  39. unsigned int video_prog_mode;
  40. unsigned int video_mode;
  41. unsigned int sch_adjust;
  42. unsigned int yc_delay;
  43. unsigned int pixel_start;
  44. unsigned int pixel_end;
  45. unsigned int top_field_line_start;
  46. unsigned int top_field_line_end;
  47. unsigned int bottom_field_line_start;
  48. unsigned int bottom_field_line_end;
  49. unsigned int video_saturation;
  50. unsigned int video_contrast;
  51. unsigned int video_brightness;
  52. unsigned int video_hue;
  53. unsigned int analog_sync_adj;
  54. };
  55. /* HDMI Clock parameters */
  56. bool meson_venc_hdmi_supported_vic(int vic);
  57. bool meson_venc_hdmi_venc_repeat(int vic);
  58. /* CVBS Timings and Parameters */
  59. extern struct meson_cvbs_enci_mode meson_cvbs_enci_pal;
  60. extern struct meson_cvbs_enci_mode meson_cvbs_enci_ntsc;
  61. void meson_venci_cvbs_mode_set(struct meson_drm *priv,
  62. struct meson_cvbs_enci_mode *mode);
  63. void meson_venc_hdmi_mode_set(struct meson_drm *priv, int vic,
  64. struct drm_display_mode *mode);
  65. unsigned int meson_venci_get_field(struct meson_drm *priv);
  66. void meson_venc_enable_vsync(struct meson_drm *priv);
  67. void meson_venc_disable_vsync(struct meson_drm *priv);
  68. void meson_venc_init(struct meson_drm *priv);
  69. #endif /* __MESON_VENC_H */