port_kernel.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. #ifndef __PORT_KERNEL_H__
  2. #define __PORT_KERNEL_H__
  3. #include <ccci_core.h>
  4. #define CCCI_AED_DUMP_EX_MEM (1<<0)
  5. #define CCCI_AED_DUMP_MD_IMG_MEM (1<<1)
  6. #define CCCI_AED_DUMP_CCIF_REG (1<<2)
  7. #define CCCI_AED_DUMP_EX_PKT (1<<3)
  8. #ifdef MD_UMOLY_EE_SUPPORT
  9. #define EE_BUF_LEN_UMOLY (0x700)
  10. #define AED_STR_LEN (2048)
  11. #define EE_BUF_LEN (256)
  12. #else
  13. #define EE_BUF_LEN (256)
  14. #define AED_STR_LEN (512)
  15. #endif
  16. #define CCCI_EXREC_OFFSET_OFFENDER 288
  17. enum {
  18. MD_EX_TYPE_INVALID = 0,
  19. MD_EX_TYPE_UNDEF = 1,
  20. MD_EX_TYPE_SWI = 2,
  21. MD_EX_TYPE_PREF_ABT = 3,
  22. MD_EX_TYPE_DATA_ABT = 4,
  23. MD_EX_TYPE_ASSERT = 5,
  24. MD_EX_TYPE_FATALERR_TASK = 6,
  25. MD_EX_TYPE_FATALERR_BUF = 7,
  26. MD_EX_TYPE_LOCKUP = 8,
  27. MD_EX_TYPE_ASSERT_DUMP = 9,
  28. MD_EX_TYPE_ASSERT_FAIL = 10,
  29. DSP_EX_TYPE_ASSERT = 11,
  30. DSP_EX_TYPE_EXCEPTION = 12,
  31. DSP_EX_FATAL_ERROR = 13,
  32. /*cross core trigger exception, only md3 will trigger this exception*/
  33. CC_MD1_EXCEPTION = 15,
  34. NUM_EXCEPTION,
  35. MD_EX_TYPE_C2K_ERROR = 0x25,
  36. MD_EX_TYPE_EMI_CHECK = 99,
  37. MD_EX_C2K_FATAL_ERROR = 0x3000,
  38. };
  39. #ifdef MD_UMOLY_EE_SUPPORT
  40. enum {
  41. MD_EX_DUMP_INVALID = 0,
  42. MD_EX_DUMP_ASSERT = 1,
  43. MD_EX_DUMP_3P_EX = 2,
  44. MD_EX_DUMP_2P_EX = 3,
  45. MD_EX_DUMP_EMI_CHECK = MD_EX_TYPE_EMI_CHECK,
  46. /*MD_EX_C2K_FATAL_ERROR = 0x3000,*/
  47. MD_EX_DUMP_UNKNOWN,
  48. };
  49. #endif
  50. enum {
  51. MD_EE_FLOW_START = 0,
  52. MD_EE_DUMP_ON_GOING,
  53. MD_STATE_UPDATE,
  54. MD_EE_MSG_GET,
  55. MD_EE_TIME_OUT_SET,
  56. MD_EE_OK_MSG_GET,
  57. MD_EE_FOUND_BY_ISR, /* not using */
  58. MD_EE_FOUND_BY_TX, /* not using */
  59. MD_EE_PENDING_TOO_LONG,
  60. MD_EE_SWINT_GET,
  61. MD_EE_WDT_GET,
  62. MD_EE_INFO_OFFSET = 20, /* not using */
  63. MD_EE_EXCP_OCCUR = 20, /* not using */
  64. MD_EE_AP_MASK_I_BIT_TOO_LONG = 21, /* not using */
  65. MD_EE_TIMER1_DUMP_ON_GOING,
  66. MD_EE_TIMER2_DUMP_ON_GOING,
  67. };
  68. enum {
  69. MD_EE_CASE_NORMAL = 0,
  70. MD_EE_CASE_ONLY_EX,
  71. MD_EE_CASE_ONLY_EX_OK,
  72. MD_EE_CASE_TX_TRG, /* not using */
  73. MD_EE_CASE_ISR_TRG, /* not using */
  74. MD_EE_CASE_NO_RESPONSE,
  75. MD_EE_CASE_AP_MASK_I_BIT_TOO_LONG, /* not using */
  76. MD_EE_CASE_ONLY_SWINT,
  77. MD_EE_CASE_SWINT_MISSING,
  78. MD_EE_CASE_WDT,
  79. };
  80. typedef enum {
  81. IPC_RPC_CPSVC_SECURE_ALGO_OP = 0x2001,
  82. IPC_RPC_GET_SECRO_OP = 0x2002,
  83. #ifdef CONFIG_MTK_TC1_FEATURE
  84. /* LGE specific OP ID */
  85. RPC_CCCI_LGE_FAC_READ_SIM_LOCK_TYPE = 0x3001,
  86. RPC_CCCI_LGE_FAC_READ_FUSG_FLAG,
  87. RPC_CCCI_LGE_FAC_CHECK_UNLOCK_CODE_VALIDNESS,
  88. RPC_CCCI_LGE_FAC_CHECK_NETWORK_CODE_VALIDNESS,
  89. RPC_CCCI_LGE_FAC_WRITE_SIM_LOCK_TYPE,
  90. RPC_CCCI_LGE_FAC_READ_IMEI,
  91. RPC_CCCI_LGE_FAC_WRITE_IMEI,
  92. RPC_CCCI_LGE_FAC_READ_NETWORK_CODE_LIST_NUM,
  93. RPC_CCCI_LGE_FAC_READ_NETWORK_CODE,
  94. /* ............. */
  95. RPC_CCCI_LGE_FAC_WRITE_NETWORK_CODE_LIST_NUM,
  96. RPC_CCCI_LGE_FAC_WRITE_UNLOCK_CODE_VERIFY_FAIL_COUNT,
  97. RPC_CCCI_LGE_FAC_READ_UNLOCK_CODE_VERIFY_FAIL_COUNT,
  98. RPC_CCCI_LGE_FAC_WRITE_UNLOCK_FAIL_COUNT,
  99. RPC_CCCI_LGE_FAC_READ_UNLOCK_FAIL_COUNT,
  100. RPC_CCCI_LGE_FAC_WRITE_UNLOCK_CODE,
  101. RPC_CCCI_LGE_FAC_VERIFY_UNLOCK_CODE,
  102. RPC_CCCI_LGE_FAC_WRITE_NETWORK_CODE,
  103. RPC_CCCI_LGE_FAC_INIT_SIM_LOCK_DATA,
  104. #endif
  105. IPC_RPC_GET_TDD_EINT_NUM_OP = 0x4001,
  106. IPC_RPC_GET_GPIO_NUM_OP = 0x4002,
  107. IPC_RPC_GET_ADC_NUM_OP = 0x4003,
  108. IPC_RPC_GET_EMI_CLK_TYPE_OP = 0x4004,
  109. IPC_RPC_GET_EINT_ATTR_OP = 0x4005,
  110. IPC_RPC_GET_GPIO_VAL_OP = 0x4006,
  111. IPC_RPC_GET_ADC_VAL_OP = 0x4007,
  112. IPC_RPC_GET_RF_CLK_BUF_OP = 0x4008,
  113. IPC_RPC_GET_GPIO_ADC_OP = 0x4009,
  114. IPC_RPC_USIM2NFC_OP = 0x400A,
  115. IPC_RPC_DSP_EMI_MPU_SETTING = 0x400B,
  116. IPC_RPC_IT_OP = 0x4321,
  117. } RPC_OP_ID;
  118. struct rpc_pkt {
  119. unsigned int len;
  120. void *buf;
  121. } __packed;
  122. struct rpc_buffer {
  123. struct ccci_header header;
  124. u32 op_id;
  125. u32 para_num;
  126. u8 buffer[0];
  127. } __packed;
  128. /* hardcode, becarefull with data size, should not exceed tmp_data[] in ccci_rpc_work_helper() */
  129. #define CLKBUF_MAX_COUNT 4
  130. struct ccci_rpc_clkbuf_result {
  131. u16 CLKBuf_Count;
  132. u8 CLKBuf_Status[CLKBUF_MAX_COUNT];
  133. u8 CLKBuf_SWCtrl_Status[CLKBUF_MAX_COUNT];
  134. } __packed; /* the total size should sync with tmp_data[] using in ccci_rpc_work_helper() */
  135. #ifdef CONFIG_MTK_TC1_FEATURE
  136. /* hardcode, becarefull with data size, should not exceed tmp_data[] in ccci_rpc_work_helper() */
  137. #define GPIO_MAX_COUNT 6
  138. #else
  139. /* hardcode, becarefull with data size, should not exceed tmp_data[] in ccci_rpc_work_helper() */
  140. #define GPIO_MAX_COUNT 3
  141. #endif
  142. #define GPIO_MAX_COUNT_V2 10
  143. #define GPIO_PIN_NAME_STR_MAX_LEN 34
  144. #define ADC_CH_NAME_STR_MAX_LEN 33
  145. enum {
  146. RPC_REQ_GPIO_PIN = (1 << 0),
  147. RPC_REQ_GPIO_VALUE = (1 << 1),
  148. RPC_REQ_ADC_PIN = (1 << 4),
  149. RPC_REQ_ADC_VALUE = (1 << 5),
  150. };
  151. struct ccci_rpc_gpio_adc_intput {
  152. u8 reqMask;
  153. u8 gpioValidPinMask;
  154. char gpioPinName[GPIO_MAX_COUNT][GPIO_PIN_NAME_STR_MAX_LEN];
  155. u32 gpioPinNum[GPIO_MAX_COUNT];
  156. char adcChName[ADC_CH_NAME_STR_MAX_LEN];
  157. u32 adcChNum;
  158. u32 adcChMeasCount;
  159. } __packed;
  160. struct ccci_rpc_gpio_adc_output {
  161. u32 gpioPinNum[GPIO_MAX_COUNT];
  162. u32 gpioPinValue[GPIO_MAX_COUNT];
  163. u32 adcChNum;
  164. u32 adcChMeasSum;
  165. } __packed; /* the total size should sync with tmp_data[] using in ccci_rpc_work_helper() */
  166. struct ccci_rpc_gpio_adc_intput_v2 { /* 10 pin GPIO support */
  167. u16 reqMask;
  168. u16 gpioValidPinMask;
  169. char gpioPinName[GPIO_MAX_COUNT_V2][GPIO_PIN_NAME_STR_MAX_LEN];
  170. u32 gpioPinNum[GPIO_MAX_COUNT_V2];
  171. char adcChName[ADC_CH_NAME_STR_MAX_LEN];
  172. u32 adcChNum;
  173. u32 adcChMeasCount;
  174. } __packed;
  175. struct ccci_rpc_gpio_adc_output_v2 { /* 10 pin GPIO support */
  176. u32 gpioPinNum[GPIO_MAX_COUNT_V2];
  177. u32 gpioPinValue[GPIO_MAX_COUNT_V2];
  178. u32 adcChNum;
  179. u32 adcChMeasSum;
  180. } __packed; /* the total size should sync with tmp_data[] using in ccci_rpc_work_helper() */
  181. struct ccci_rpc_dsp_emi_mpu_input {
  182. u32 request;
  183. } __packed;
  184. struct ccci_rpc_usim2nfs {
  185. u8 lock_vsim1;
  186. } __packed;
  187. #define RPC_REQ_BUFFER_NUM 2 /* support 2 concurrently request */
  188. #define RPC_MAX_ARG_NUM 6 /* parameter number */
  189. #define RPC_MAX_BUF_SIZE 2048
  190. #define RPC_API_RESP_ID 0xFFFF0000
  191. #define FS_NO_ERROR 0
  192. #define FS_NO_OP -1
  193. #define FS_PARAM_ERROR -2
  194. #define FS_NO_FEATURE -3
  195. #define FS_NO_MATCH -4
  196. #define FS_FUNC_FAIL -5
  197. #define FS_ERROR_RESERVED -6
  198. #define FS_MEM_OVERFLOW -7
  199. #define CCCI_SED_LEN_BYTES 16
  200. typedef struct {
  201. unsigned char sed[CCCI_SED_LEN_BYTES];
  202. } sed_t;
  203. #define SED_INITIALIZER { {[0 ... CCCI_SED_LEN_BYTES-1] = 0} }
  204. #ifdef FEATURE_GET_MD_EINT_ATTR_DTS
  205. #define MD_SIM_MAX (16) /*(MD number * SIM number EACH MD) */
  206. typedef enum {
  207. SIM_HOT_PLUG_EINT_NUMBER,
  208. SIM_HOT_PLUG_EINT_DEBOUNCETIME,
  209. SIM_HOT_PLUG_EINT_POLARITY,
  210. SIM_HOT_PLUG_EINT_SENSITIVITY,
  211. SIM_HOT_PLUG_EINT_SOCKETTYPE,
  212. SIM_HOT_PLUG_EINT_DEDICATEDEN,
  213. SIM_HOT_PLUG_EINT_SRCPIN,
  214. SIM_HOT_PLUG_EINT_MAX,
  215. } sim_hot_plug_eint_queryType;
  216. typedef enum {
  217. ERR_SIM_HOT_PLUG_NULL_POINTER = -13,
  218. ERR_SIM_HOT_PLUG_QUERY_TYPE,
  219. ERR_SIM_HOT_PLUG_QUERY_STRING,
  220. } sim_hot_plug_eint_queryErr;
  221. struct eint_struct {
  222. int type; /* sync with MD: value type of MD want to get */
  223. char *property; /* property name in the node of dtsi */
  224. int index; /* cell index in property */
  225. int value_sim[MD_SIM_MAX]; /* value of each node of current type from property */
  226. };
  227. struct eint_node_name {
  228. char *node_name; /*node name in dtsi */
  229. int md_id; /* md_id in node_name, no use currently */
  230. int sim_id; /* sim_id in node_name, no use currently */
  231. };
  232. struct eint_node_struct {
  233. unsigned int ExistFlag; /* if node exist */
  234. struct eint_node_name *name;
  235. struct eint_struct *eint_value;
  236. };
  237. #endif
  238. struct gpio_item {
  239. char gpio_name_from_md[64];
  240. char gpio_name_from_dts[64];
  241. };
  242. int port_kernel_init(struct ccci_port *port);
  243. int port_kernel_req_match(struct ccci_port *port, struct ccci_request *req);
  244. #if defined(FEATURE_GET_MD_ADC_NUM)
  245. extern int IMM_get_adc_channel_num(char *channel_name, int len);
  246. #endif
  247. #if defined(FEATURE_GET_MD_ADC_VAL)
  248. extern int IMM_GetOneChannelValue(int dwChannel, int data[4], int *rawdata);
  249. #endif
  250. #if defined(FEATURE_GET_MD_PMIC_ADC_VAL)
  251. extern int PMIC_IMM_GetOneChannelValue(int dwChannel, int deCount, int trimd);
  252. #endif
  253. #if defined(FEATURE_GET_MD_PMIC_ADC_NUM)
  254. extern int PMIC_IMM_get_adc_channel_num(char *adc_name, int len);
  255. #endif
  256. #if defined(FEATURE_GET_DRAM_TYPE_CLK)
  257. extern int get_dram_info(int *clk, int *type);
  258. #endif
  259. #ifndef FEATURE_GET_MD_EINT_ATTR_DTS
  260. #if defined(FEATURE_GET_MD_EINT_ATTR)
  261. extern int get_eint_attribute(char *name, unsigned int name_len, unsigned int type, char *result, unsigned int *len);
  262. #endif
  263. #endif
  264. extern void ccci_set_dsp_region_protection(struct ccci_modem *md, int loaded);
  265. #endif /* __PORT_KERNEL_H__ */