csi_fce_cfg.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright(C) 2021 Alibaba Communications Inc.
  4. * Author: David Li <liyong.li@alibaba-inc.com>
  5. */
  6. #ifndef FCE_CFG_H
  7. #define FCE_CFG_H
  8. #ifdef __cplusplus
  9. extern "C"{
  10. #endif
  11. #define MAX_BASE_NUM 1000000
  12. #define TOPREG_CNT 8
  13. #define TARGET_VECTOR_CNT 64
  14. #define PREPRO_VECTOR_CNT 64
  15. #define BITS_PER_BYTE 8
  16. enum FCE_BASE_NUM {
  17. BASENUM_1 = 0,
  18. BASENUM_10,
  19. BASENUM_1w,
  20. BASENUM_5w,
  21. BASENUM_10w,
  22. BASENUM_20w,
  23. BASENUM_50w,
  24. BASENUM_100w,
  25. BASENUM_MAX = BASENUM_100w,
  26. };
  27. enum FCE_DIMENSION {
  28. DIM_128 = 0,
  29. DIM_160,
  30. DIM_192,
  31. DIM_224,
  32. DIM_256,
  33. DIM_MAX = DIM_256,
  34. };
  35. enum FCE_INT_WIDTH {
  36. INT_WIDTH_8 = 0,
  37. INT_WIDTH_4,
  38. INT_WIDTH_MAX = INT_WIDTH_4,
  39. };
  40. enum FCE_SIGN_SEL {
  41. UNSIGN = 0,
  42. SIGN,
  43. SIGSEL_MAX = SIGN,
  44. };
  45. struct target_vector {
  46. int value;
  47. };
  48. struct prepro_vector {
  49. int value;
  50. };
  51. enum FCE_ENDIAN_SEL {
  52. FCE_LIT_ENDIAN = 0,
  53. FCE_BIG_ENDIAN,
  54. FCE_ENDIAN_MAX = FCE_BIG_ENDIAN,
  55. };
  56. struct fce_cfg {
  57. unsigned int base_num; // feature num in library, < MAX_BASE_NUM
  58. // comparasion start address in feature library buffer, default is 0
  59. unsigned long offset_base;
  60. unsigned long saddr; // fill in kernel driver
  61. enum FCE_DIMENSION dim; // dimension
  62. enum FCE_INT_WIDTH width;
  63. enum FCE_SIGN_SEL sigsel; // sign or unsign
  64. unsigned int readnum; // number of target vector, unit byte
  65. // data endian format of feature library
  66. enum FCE_ENDIAN_SEL base_endian;
  67. // data endian format of target feature vector for comparasion
  68. enum FCE_ENDIAN_SEL target_endian;
  69. // data endian format of xor operation on the feature library
  70. enum FCE_ENDIAN_SEL prepro_endian;
  71. struct prepro_vector prepro_vect[PREPRO_VECTOR_CNT]; // xor vector
  72. };
  73. struct top_result {
  74. int match_value;
  75. unsigned int match_index;
  76. };
  77. #ifdef __cplusplus
  78. }
  79. #endif
  80. #endif // #ifndef FCE_CFG_H