Advertisement
Guest User

Untitled

a guest
Jan 27th, 2023
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.53 KB | None | 0 0
  1. +#define VENDOR_IFRAME_LINE_NUMBER 3
  2. +
  3. +static void msm_hdmi_config_vs_infoframe(struct hdmi *hdmi)
  4. +{
  5. +       struct drm_crtc *crtc = hdmi->encoder->crtc;
  6. +       const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
  7. +       struct hdmi_vendor_infoframe frame;
  8. +       u8 buffer[HDMI_INFOFRAME_SIZE(VENDOR)];
  9. +       u32 val;
  10. +       int len;
  11. +
  12. +       drm_hdmi_vendor_infoframe_from_display_mode(&frame,
  13. +                                                   hdmi->connector, mode);
  14. +
  15. +       len = hdmi_vendor_infoframe_pack(&frame, buffer, sizeof(buffer));
  16. +       if (len < 0) {
  17. +               DRM_DEV_ERROR(&hdmi->pdev->dev,
  18. +                             "failed to configure vendor infoframe\n");
  19. +               return;
  20. +       }
  21. +
  22. +       val = (buffer[3] << 8) | buffer[7] | buffer[2];
  23. +       if (frame.s3d_struct != HDMI_3D_STRUCTURE_INVALID)
  24. +               val |= frame.s3d_struct << 24;
  25. +       else
  26. +               val |= frame.vic << 16;
  27. +
  28. +       hdmi_write(hdmi, REG_HDMI_VENSPEC_INFO(0), val);
  29. +       hdmi_write(hdmi, REG_HDMI_VENSPEC_INFO(1), buffer[9] >> 4);
  30. +       hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0,
  31. +                  HDMI_INFOFRAME_CTRL0_VENSPEC_INFO_SEND |
  32. +                  HDMI_INFOFRAME_CTRL0_VENSPEC_INFO_CONT);
  33. +
  34. +       val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1);
  35. +       val &= ~HDMI_INFOFRAME_CTRL1_VENSPEC_INFO_LINE__MASK;
  36. +       val |= HDMI_INFOFRAME_CTRL1_VENSPEC_INFO_LINE(VENDOR_IFRAME_LINE_NUMBER);
  37. +       hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL1, val);
  38. +}
  39. +
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement