/arch/mips/fw/cfe/cfe_api_int.h

http://github.com/mirrors/linux · C Header · 135 lines · 92 code · 24 blank · 19 comment · 0 complexity · 59db8603cfc7fc2a6dca57eec3a6fc6a MD5 · raw file

  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Copyright (C) 2000, 2001, 2002 Broadcom Corporation
  4. */
  5. #ifndef CFE_API_INT_H
  6. #define CFE_API_INT_H
  7. /*
  8. * Constants.
  9. */
  10. #define CFE_CMD_FW_GETINFO 0
  11. #define CFE_CMD_FW_RESTART 1
  12. #define CFE_CMD_FW_BOOT 2
  13. #define CFE_CMD_FW_CPUCTL 3
  14. #define CFE_CMD_FW_GETTIME 4
  15. #define CFE_CMD_FW_MEMENUM 5
  16. #define CFE_CMD_FW_FLUSHCACHE 6
  17. #define CFE_CMD_DEV_GETHANDLE 9
  18. #define CFE_CMD_DEV_ENUM 10
  19. #define CFE_CMD_DEV_OPEN 11
  20. #define CFE_CMD_DEV_INPSTAT 12
  21. #define CFE_CMD_DEV_READ 13
  22. #define CFE_CMD_DEV_WRITE 14
  23. #define CFE_CMD_DEV_IOCTL 15
  24. #define CFE_CMD_DEV_CLOSE 16
  25. #define CFE_CMD_DEV_GETINFO 17
  26. #define CFE_CMD_ENV_ENUM 20
  27. #define CFE_CMD_ENV_GET 22
  28. #define CFE_CMD_ENV_SET 23
  29. #define CFE_CMD_ENV_DEL 24
  30. #define CFE_CMD_MAX 32
  31. #define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */
  32. /*
  33. * Structures.
  34. */
  35. /* eeek, signed "pointers" */
  36. typedef s64 cfe_xptr_t;
  37. struct xiocb_buffer {
  38. u64 buf_offset; /* offset on device (bytes) */
  39. cfe_xptr_t buf_ptr; /* pointer to a buffer */
  40. u64 buf_length; /* length of this buffer */
  41. u64 buf_retlen; /* returned length (for read ops) */
  42. u64 buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */
  43. };
  44. struct xiocb_inpstat {
  45. u64 inp_status; /* 1 means input available */
  46. };
  47. struct xiocb_envbuf {
  48. s64 enum_idx; /* 0-based enumeration index */
  49. cfe_xptr_t name_ptr; /* name string buffer */
  50. s64 name_length; /* size of name buffer */
  51. cfe_xptr_t val_ptr; /* value string buffer */
  52. s64 val_length; /* size of value string buffer */
  53. };
  54. struct xiocb_cpuctl {
  55. u64 cpu_number; /* cpu number to control */
  56. u64 cpu_command; /* command to issue to CPU */
  57. u64 start_addr; /* CPU start address */
  58. u64 gp_val; /* starting GP value */
  59. u64 sp_val; /* starting SP value */
  60. u64 a1_val; /* starting A1 value */
  61. };
  62. struct xiocb_time {
  63. s64 ticks; /* current time in ticks */
  64. };
  65. struct xiocb_exitstat{
  66. s64 status;
  67. };
  68. struct xiocb_meminfo {
  69. s64 mi_idx; /* 0-based enumeration index */
  70. s64 mi_type; /* type of memory block */
  71. u64 mi_addr; /* physical start address */
  72. u64 mi_size; /* block size */
  73. };
  74. struct xiocb_fwinfo {
  75. s64 fwi_version; /* major, minor, eco version */
  76. s64 fwi_totalmem; /* total installed mem */
  77. s64 fwi_flags; /* various flags */
  78. s64 fwi_boardid; /* board ID */
  79. s64 fwi_bootarea_va; /* VA of boot area */
  80. s64 fwi_bootarea_pa; /* PA of boot area */
  81. s64 fwi_bootarea_size; /* size of boot area */
  82. s64 fwi_reserved1;
  83. s64 fwi_reserved2;
  84. s64 fwi_reserved3;
  85. };
  86. struct cfe_xiocb {
  87. u64 xiocb_fcode; /* IOCB function code */
  88. s64 xiocb_status; /* return status */
  89. s64 xiocb_handle; /* file/device handle */
  90. u64 xiocb_flags; /* flags for this IOCB */
  91. u64 xiocb_psize; /* size of parameter list */
  92. union {
  93. /* buffer parameters */
  94. struct xiocb_buffer xiocb_buffer;
  95. /* input status parameters */
  96. struct xiocb_inpstat xiocb_inpstat;
  97. /* environment function parameters */
  98. struct xiocb_envbuf xiocb_envbuf;
  99. /* CPU control parameters */
  100. struct xiocb_cpuctl xiocb_cpuctl;
  101. /* timer parameters */
  102. struct xiocb_time xiocb_time;
  103. /* memory arena info parameters */
  104. struct xiocb_meminfo xiocb_meminfo;
  105. /* firmware information */
  106. struct xiocb_fwinfo xiocb_fwinfo;
  107. /* Exit Status */
  108. struct xiocb_exitstat xiocb_exitstat;
  109. } plist;
  110. };
  111. #endif /* CFE_API_INT_H */