stf_isp_sat_rdma.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. ******************************************************************************
  3. * @file stf_isp_sat_rdma.h
  4. * @author StarFive Isp Team
  5. * @version V1.0
  6. * @date 12/14/2019
  7. * @brief
  8. ******************************************************************************
  9. * @copy
  10. *
  11. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  12. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  13. * TIME. AS A RESULT, STARFIVE SHALL NOT BE HELD LIABLE FOR ANY
  14. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  15. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  16. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  17. *
  18. * Copyright (C) 2019 - 2022 StarFive Technology Co., Ltd.
  19. */
  20. #ifndef __STF_ISP_SAT_RDMA_H__
  21. #define __STF_ISP_SAT_RDMA_H__
  22. #include "registers/stf_isp_rdma.h"
  23. /* add brightness, contrast, hue and saturation registers structure */
  24. typedef struct _ST_SAT_GAIN {
  25. STF_U16 u16AmplificationBase;
  26. STF_U16 u16AmplificationDelta;
  27. } ST_SAT_GAIN, *PST_SAT_GAIN;
  28. typedef struct _ST_SAT_GAIN_PARAM {
  29. STF_U8 u8IspIdx;
  30. ST_SAT_GAIN stSatGain;
  31. } ST_SAT_GAIN_PARAM, *PST_SAT_GAIN_PARAM;
  32. typedef struct _ST_SAT_THRESHOLD {
  33. STF_U16 u16Base;
  34. STF_U16 u16Delta;
  35. } ST_SAT_THRESHOLD, *PST_SAT_THRESHOLD;
  36. typedef struct _ST_SAT_THRESHOLD_PARAM {
  37. STF_U8 u8IspIdx;
  38. ST_SAT_THRESHOLD stSatThreshold;
  39. } ST_SAT_THRESHOLD_PARAM, *PST_SAT_THRESHOLD_PARAM;
  40. typedef struct _ST_SAT_UV_OFFSET {
  41. STF_U16 u16UOffset;
  42. STF_U16 u16VOffset;
  43. } ST_SAT_UV_OFFSET, *PST_SAT_UV_OFFSET;
  44. typedef struct _ST_SAT_UV_OFFSET_PARAM {
  45. STF_U8 u8IspIdx;
  46. ST_SAT_UV_OFFSET stSatUvOffset;
  47. } ST_SAT_UV_OFFSET_PARAM, *PST_SAT_UV_OFFSET_PARAM;
  48. typedef struct _ST_SAT_HUE_FACTOR {
  49. STF_U16 u16Cos;
  50. STF_U16 u16Sin;
  51. } ST_SAT_HUE_FACTOR, *PST_SAT_HUE_FACTOR;
  52. typedef struct _ST_SAT_HUE_FACTOR_PARAM {
  53. STF_U8 u8IspIdx;
  54. ST_SAT_HUE_FACTOR stSatHueFactor;
  55. } ST_SAT_HUE_FACTOR_PARAM, *PST_SAT_HUE_FACTOR_PARAM;
  56. typedef struct _ST_SAT_SCALING_FACTOR {
  57. STF_U8 u8IspIdx;
  58. STF_U8 u8ScalingFactor;
  59. } ST_SAT_SCALING_FACTOR, *PST_SAT_SCALING_FACTOR;
  60. typedef struct _ST_SAT_Y_ADJ {
  61. STF_U16 u16YiMin;
  62. STF_U16 u16Yoir;
  63. STF_U16 u16YoMin;
  64. STF_U16 u16YoMax;
  65. } ST_SAT_Y_ADJ, *PST_SAT_Y_ADJ;
  66. typedef struct _ST_SAT_Y_ADJ_PARAM {
  67. STF_U8 u8IspIdx;
  68. ST_SAT_Y_ADJ stSatYAdj;
  69. } ST_SAT_Y_ADJ_PARAM, *PST_SAT_Y_ADJ_PARAM;
  70. typedef struct _ST_SAT_CHROMA_REG {
  71. REG_ISAT0 Gain; // 0x0A30, Chroma Saturation Gain.
  72. REG_ISAT1 Threshold; // 0x0A34, Chroma Saturation Threshold.
  73. REG_ISAT2 UvOffset; // 0x0A38, Chroma Saturation UV Offset.
  74. REG_ISAT3 HueFactor; // 0x0A3C, Chroma Saturation Hue Factor.
  75. REG_ISAT4 ScalingCoefficient; // 0x0A40, Chroma Saturation scaling coefficient.
  76. } ST_SAT_CHROMA_REG, *PST_SAT_CHROMA_REG;
  77. #define ST_SAT_CHROMA_REG_SIZE (sizeof(ST_SAT_CHROMA_REG))
  78. #define ST_SAT_CHROMA_REG_LEN (ST_SAT_CHROMA_REG_SIZE / sizeof(STF_U32))
  79. typedef struct _ST_SAT_Y_REG {
  80. REG_IYADJ0 YAdjustment0; // 0x0A54, Y Adjustment Register 0.
  81. REG_IYADJ1 YAdjustment1; // 0x0A58, Y Adjustment Register 1.
  82. } ST_SAT_Y_REG, *PST_SAT_Y_REG;
  83. #define ST_SAT_Y_REG_SIZE (sizeof(ST_SAT_Y_REG))
  84. #define ST_SAT_Y_REG_LEN (ST_SAT_Y_REG_SIZE / sizeof(STF_U32))
  85. typedef struct _ST_SAT_REG {
  86. REG_ISAT0 Gain; // 0x0A30, Chroma Saturation Gain.
  87. REG_ISAT1 Threshold; // 0x0A34, Chroma Saturation Threshold.
  88. REG_ISAT2 UvOffset; // 0x0A38, Chroma Saturation UV Offset.
  89. REG_ISAT3 HueFactor; // 0x0A3C, Chroma Saturation Hue Factor.
  90. REG_ISAT4 ScalingCoefficient; // 0x0A40, Chroma Saturation scaling coefficient.
  91. //STF_U32 u32Reserved_0A44[4]; // Added reserved variables to let ST_SAT_REG address is contiguous.
  92. //-------------------------------------------------------------------------
  93. REG_IYADJ0 YAdjustment0; // 0x0A54, Y Adjustment Register 0.
  94. REG_IYADJ1 YAdjustment1; // 0x0A58, Y Adjustment Register 1.
  95. } ST_SAT_REG, *PST_SAT_REG;
  96. #define ST_SAT_REG_SIZE (sizeof(ST_SAT_REG))
  97. #define ST_SAT_REG_LEN (ST_SAT_REG_SIZE / sizeof(STF_U32))
  98. #pragma pack(push, 8)
  99. typedef struct _ST_SAT_RDMA {
  100. #if defined(SUPPORT_RDMA_FEATURE)
  101. ST_RDMA_CMD stRdmaStartCmd __attribute__ ((aligned (8)));
  102. #endif //SUPPORT_RDMA_FEATURE
  103. ST_SAT_CHROMA_REG stSatChromaReg __attribute__ ((aligned (8)));
  104. #if defined(SUPPORT_RDMA_FEATURE)
  105. ST_RDMA_CMD stRdmaYCmd __attribute__ ((aligned (8)));
  106. #endif //SUPPORT_RDMA_FEATURE
  107. ST_SAT_Y_REG stSatYReg __attribute__ ((aligned (8)));
  108. #if defined(SUPPORT_RDMA_FEATURE)
  109. ST_RDMA_CMD stRdmaEndCmd __attribute__ ((aligned (8)));
  110. #endif //SUPPORT_RDMA_FEATURE
  111. } ST_SAT_RDMA, *PST_SAT_RDMA;
  112. #define ST_SAT_RDMA_SIZE (sizeof(ST_SAT_RDMA))
  113. #define ST_SAT_RDMA_LEN (ST_SAT_RDMA_SIZE / (sizeof(STF_U32) * 2))
  114. #define ST_SAT_CHROMA_RDMA_SIZE (sizeof(ST_RDMA_CMD) + (((sizeof(ST_SAT_CHROMA_REG) + 7) / 8) * 8))
  115. #define ST_SAT_CHROMA_RDMA_LEN (ST_SAT_CHROMA_RDMA_SIZE / (sizeof(STF_U32) * 2))
  116. #define ST_SAT_Y_RDMA_SIZE (sizeof(ST_RDMA_CMD) + (((sizeof(ST_SAT_Y_REG) + 7) / 8) * 8))
  117. #define ST_SAT_Y_RDMA_LEN (ST_SAT_Y_RDMA_SIZE / (sizeof(STF_U32) * 2))
  118. typedef struct _ST_ISP_SAT_RDMA {
  119. STF_U8 u8IspIdx;
  120. ST_SAT_RDMA stSatRdma __attribute__ ((aligned (8)));
  121. } ST_ISP_SAT_RDMA, *PST_ISP_SAT_RDMA;
  122. #pragma pack(pop)
  123. ///* Brightness, contrast, hue and saturation registers interface */
  124. ////-----------------------------------------------------------------------------
  125. //extern
  126. //STF_VOID STFHAL_ISP_SAT_SetReg(
  127. // STF_U8 u8IspIdx,
  128. // ST_SAT_RDMA *pstSatRdma
  129. // );
  130. ////-----------------------------------------------------------------------------
  131. //extern
  132. //STF_VOID STFHAL_ISP_SAT_SetSaturationGain(
  133. // STF_U8 u8IspIdx,
  134. // STF_U16 u16AmplificationBase,
  135. // STF_U16 u16AmplificationDelta
  136. // );
  137. //extern
  138. //STF_VOID STFHAL_ISP_SAT_SetSaturationThreshold(
  139. // STF_U8 u8IspIdx,
  140. // STF_U16 u16Base,
  141. // STF_U16 u16Delta
  142. // );
  143. //extern
  144. //STF_VOID STFHAL_ISP_SAT_SetSaturationUVOffset(
  145. // STF_U8 u8IspIdx,
  146. // STF_U16 u16UOffset,
  147. // STF_U16 u16VOffset
  148. // );
  149. //extern
  150. //STF_VOID STFHAL_ISP_SAT_SetSaturationHueFactor(
  151. // STF_U8 u8IspIdx,
  152. // STF_U16 u16Cos,
  153. // STF_U16 u16Sin
  154. // );
  155. //extern
  156. //STF_VOID STFHAL_ISP_SAT_SetSaturationScalingCoefficient(
  157. // STF_U8 u8IspIdx,
  158. // STF_U8 u8ScalingFactor
  159. // );
  160. //extern
  161. //STF_VOID STFHAL_ISP_SAT_SetSaturationYAdjustment(
  162. // STF_U8 u8IspIdx,
  163. // ST_SAT_Y_ADJ *pstYAdjustment
  164. // );
  165. ////-----------------------------------------------------------------------------
  166. //
  167. //
  168. #endif //__STF_ISP_SAT_RDMA_H__