stf_drm.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (C) 2021 StarFive Technology Co., Ltd.
  4. */
  5. #ifndef __STF_DRM_H__
  6. #define __STF_DRM_H__
  7. #include <libdrm/drm.h>
  8. #include <xf86drm.h>
  9. #include <xf86drmMode.h>
  10. #include "common.h"
  11. #include "stf_log.h"
  12. struct drm_buffer_t {
  13. uint32_t pitch, size;
  14. uint32_t fb_id;
  15. int dmabuf_fd; // used for dmabuf
  16. int bo_handle;
  17. uint8_t *buf;
  18. };
  19. typedef struct drm_dev_t {
  20. uint32_t conn_id, enc_id, crtc_id;
  21. uint32_t width, height, pitch;
  22. drmModeModeInfo mode;
  23. drmModeCrtc *saved_crtc;
  24. // int v4l2_fd;
  25. // int drm_fd;
  26. uint32_t drm_format;
  27. struct drm_buffer_t bufs[BUFCOUNT];
  28. struct drm_dev_t *next;
  29. } drm_dev_t;
  30. typedef struct DRMParam_t {
  31. drm_dev_t* dev_head;
  32. int fd;
  33. } DRMParam_t;
  34. inline static void fatal(char *str)
  35. {
  36. LOG(STF_LEVEL_ERR, "%s\n", str);
  37. exit(EXIT_FAILURE);
  38. }
  39. inline static void error(char *str)
  40. {
  41. perror(str);
  42. exit(EXIT_FAILURE);
  43. }
  44. extern void stf_drm_open(DRMParam_t *param, char *device_name, int iomthd);
  45. extern void stf_drm_init(DRMParam_t *param, uint32_t width, uint32_t height,
  46. uint32_t v4l2_fmt, int iomthd, int *dmabufs, int nsize);
  47. extern void stf_drm_close(DRMParam_t *param);
  48. #endif // __STF_DRM_H__