cam_cpas.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
  2. /*
  3. * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __UAPI_CAM_CPAS_H__
  6. #define __UAPI_CAM_CPAS_H__
  7. #include <camera/media/cam_defs.h>
  8. #define CAM_FAMILY_CAMERA_SS 1
  9. #define CAM_FAMILY_CPAS_SS 2
  10. /* AXI BW Voting Version */
  11. #define CAM_AXI_BW_VOTING_V2 2
  12. /* AXI BW Voting Transaction Type */
  13. #define CAM_AXI_TRANSACTION_READ 0
  14. #define CAM_AXI_TRANSACTION_WRITE 1
  15. /* AXI BW Voting Path Data Type */
  16. #define CAM_AXI_PATH_DATA_IFE_START_OFFSET 0
  17. #define CAM_AXI_PATH_DATA_IFE_LINEAR (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 0)
  18. #define CAM_AXI_PATH_DATA_IFE_VID (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 1)
  19. #define CAM_AXI_PATH_DATA_IFE_DISP (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 2)
  20. #define CAM_AXI_PATH_DATA_IFE_STATS (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 3)
  21. #define CAM_AXI_PATH_DATA_IFE_RDI0 (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 4)
  22. #define CAM_AXI_PATH_DATA_IFE_RDI1 (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 5)
  23. #define CAM_AXI_PATH_DATA_IFE_RDI2 (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 6)
  24. #define CAM_AXI_PATH_DATA_IFE_RDI3 (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 7)
  25. #define CAM_AXI_PATH_DATA_IFE_PDAF (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 8)
  26. #define CAM_AXI_PATH_DATA_IFE_PIXEL_RAW \
  27. (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 9)
  28. #define CAM_AXI_PATH_DATA_IFE_MAX_OFFSET \
  29. (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 31)
  30. #define CAM_AXI_PATH_DATA_IPE_START_OFFSET 32
  31. #define CAM_AXI_PATH_DATA_IPE_RD_IN (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 0)
  32. #define CAM_AXI_PATH_DATA_IPE_RD_REF (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 1)
  33. #define CAM_AXI_PATH_DATA_IPE_WR_VID (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 2)
  34. #define CAM_AXI_PATH_DATA_IPE_WR_DISP (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 3)
  35. #define CAM_AXI_PATH_DATA_IPE_WR_REF (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 4)
  36. #define CAM_AXI_PATH_DATA_IPE_MAX_OFFSET \
  37. (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 31)
  38. #define CAM_AXI_PATH_DATA_OPE_START_OFFSET 64
  39. #define CAM_AXI_PATH_DATA_OPE_RD_IN (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 0)
  40. #define CAM_AXI_PATH_DATA_OPE_RD_REF (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 1)
  41. #define CAM_AXI_PATH_DATA_OPE_WR_VID (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 2)
  42. #define CAM_AXI_PATH_DATA_OPE_WR_DISP (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 3)
  43. #define CAM_AXI_PATH_DATA_OPE_WR_REF (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 4)
  44. #define CAM_AXI_PATH_DATA_OPE_MAX_OFFSET \
  45. (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 31)
  46. #define CAM_AXI_PATH_DATA_OPE_START_OFFSET 64
  47. #define CAM_AXI_PATH_DATA_OPE_RD_IN (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 0)
  48. #define CAM_AXI_PATH_DATA_OPE_RD_REF (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 1)
  49. #define CAM_AXI_PATH_DATA_OPE_WR_VID (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 2)
  50. #define CAM_AXI_PATH_DATA_OPE_WR_DISP (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 3)
  51. #define CAM_AXI_PATH_DATA_OPE_WR_REF (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 4)
  52. #define CAM_AXI_PATH_DATA_OPE_MAX_OFFSET \
  53. (CAM_AXI_PATH_DATA_OPE_START_OFFSET + 31)
  54. #define CAM_AXI_PATH_DATA_ALL 256
  55. /**
  56. * struct cam_cpas_query_cap - CPAS query device capability payload
  57. *
  58. * @camera_family : Camera family type
  59. * @reserved : Reserved field for alignment
  60. * @camera_version : Camera platform version
  61. * @cpas_version : Camera CPAS version within camera platform
  62. *
  63. */
  64. struct cam_cpas_query_cap {
  65. __u32 camera_family;
  66. __u32 reserved;
  67. struct cam_hw_version camera_version;
  68. struct cam_hw_version cpas_version;
  69. };
  70. /**
  71. * struct cam_axi_per_path_bw_vote - Per path bandwidth vote information
  72. *
  73. * @usage_data client usage data (left/right/rdi)
  74. * @transac_type Transaction type on the path (read/write)
  75. * @path_data_type Path for which vote is given (video, display, rdi)
  76. * @reserved Reserved for alignment
  77. * @camnoc_bw CAMNOC bw for this path
  78. * @mnoc_ab_bw MNOC AB bw for this path
  79. * @mnoc_ib_bw MNOC IB bw for this path
  80. * @ddr_ab_bw DDR AB bw for this path
  81. * @ddr_ib_bw DDR IB bw for this path
  82. */
  83. struct cam_axi_per_path_bw_vote {
  84. __u32 usage_data;
  85. __u32 transac_type;
  86. __u32 path_data_type;
  87. __u32 reserved;
  88. __u64 camnoc_bw;
  89. __u64 mnoc_ab_bw;
  90. __u64 mnoc_ib_bw;
  91. __u64 ddr_ab_bw;
  92. __u64 ddr_ib_bw;
  93. };
  94. #endif /* __UAPI_CAM_CPAS_H__ */