ferror_code.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * Copyright : (C) 2022 Phytium Information Technology, Inc.
  3. * All Rights Reserved.
  4. *
  5. * This program is OPEN SOURCE software: you can redistribute it and/or modify it
  6. * under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd,
  7. * either version 1.0 of the License, or (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY;
  10. * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. * See the Phytium Public License for more details.
  12. *
  13. *
  14. * FilePath: ferror_code.h
  15. * Date: 2021-04-07 09:53:30
  16. * LastEditTime: 2022-02-17 18:05:27
  17. * Description:  This files is for error code functions
  18. *
  19. * Modify History:
  20. * Ver   Who        Date         Changes
  21. * ----- ------     --------    --------------------------------------
  22. */
  23. #ifndef _FT_ERROR_CODE_H
  24. #define _FT_ERROR_CODE_H
  25. #include "ftypes.h"
  26. typedef u32 FError;
  27. #define FT_SUCCESS 0
  28. /* 系统错误码模块定义 */
  29. typedef enum
  30. {
  31. ErrorModGeneral = 0,
  32. ErrModBsp,
  33. ErrModAssert,
  34. ErrModPort,
  35. StatusModBsp,
  36. ErrModMaxMask = 255,
  37. } FtErrorCodeModuleMask;
  38. /* COMMON组件的错误码子模块定义 */
  39. typedef enum
  40. {
  41. ErrCommGeneral = 0,
  42. ErrCommMemp,
  43. ErrInterrupt,
  44. } FtErrCodeCommMask;
  45. /* BSP模块的错误子模块定义 */
  46. typedef enum
  47. {
  48. ErrBspGeneral = 0,
  49. ErrBspClk,
  50. ErrBspRtc,
  51. ErrBspTimer,
  52. ErrBspUart,
  53. ErrBspGpio,
  54. ErrBspSpi,
  55. ErrBspEth,
  56. ErrBspCan,
  57. ErrPcie,
  58. ErrBspQSpi,
  59. ErrBspMio,
  60. ErrBspI2c,
  61. ErrBspMmc,
  62. ErrBspWdt,
  63. ErrGic,
  64. ErrGdma,
  65. ErrNand,
  66. ErrIoMux,
  67. ErrBspSata,
  68. ErrUsb,
  69. ErrEthPhy,
  70. ErrDdma,
  71. ErrBspAdc,
  72. ErrBspPwm,
  73. ErrSema,
  74. ErrBspModMaxMask = 255
  75. } FtErrCodeBspMask;
  76. #define FT_ERRCODE_SYS_MODULE_OFFSET (u32)24
  77. #define FT_ERRCODE_SUB_MODULE_OFFSET (u32)16
  78. #define FT_ERRCODE_SYS_MODULE_MASK ((u32)0xff << FT_ERRCODE_SYS_MODULE_OFFSET) /* bit 24 .. 31 */
  79. #define FT_ERRCODE_SUB_MODULE_MASK ((u32)0xff << FT_ERRCODE_SUB_MODULE_OFFSET) /* bit 16 .. 23 */
  80. #define FT_ERRCODE_TAIL_VALUE_MASK ((u32)0xffff) /* bit 1 .. 15 */
  81. /* Offset error code */
  82. #define FT_ERRCODE_OFFSET(code, offset, mask) \
  83. (((code) << (offset)) & (mask))
  84. /* Assembly error code */
  85. #define FT_MAKE_ERRCODE(sys_mode, sub_mode, tail) \
  86. ((FT_ERRCODE_OFFSET((u32)sys_mode, FT_ERRCODE_SYS_MODULE_OFFSET, FT_ERRCODE_SYS_MODULE_MASK)) | \
  87. (FT_ERRCODE_OFFSET((u32)sub_mode, FT_ERRCODE_SUB_MODULE_OFFSET, FT_ERRCODE_SUB_MODULE_MASK)) | \
  88. ((u32)tail & FT_ERRCODE_TAIL_VALUE_MASK))
  89. #define FT_CODE_ERR FT_MAKE_ERRCODE
  90. #define ERR_SUCCESS FT_MAKE_ERRCODE(ErrorModGeneral, ErrBspGeneral, 0) /* 成功 */
  91. #define ERR_GENERAL FT_MAKE_ERRCODE(ErrorModGeneral, ErrBspGeneral, 1) /* 一般错误 */
  92. #endif