usblog_proc_notify.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2016-2023 Samsung Electronics Co. Ltd.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * (at your option) any later version.
  9. */
  10. /* usb notify layer v4.0 */
  11. #ifndef __LINUX_USBLOG_PROC_NOTIFY_H__
  12. #define __LINUX_USBLOG_PROC_NOTIFY_H__
  13. #define NOTIFY_FOREACH_STATE(S) \
  14. S(NOTIFY_UNDEFINED_STATE), \
  15. S(NOTIFY_INVALID_STATE), \
  16. S(NOTIFY_TOGGLING), \
  17. S(NOTIFY_SRC_UNATTACHED), \
  18. S(NOTIFY_SRC_ATTACH_WAIT), \
  19. S(NOTIFY_SRC_ATTACHED), \
  20. S(NOTIFY_SRC_STARTUP), \
  21. S(NOTIFY_SRC_SEND_CAPABILITIES), \
  22. S(NOTIFY_SRC_SEND_CAPABILITIES_TIMEOUT), \
  23. S(NOTIFY_SRC_NEGOTIATE_CAPABILITIES), \
  24. S(NOTIFY_SRC_TRANSITION_SUPPLY), \
  25. S(NOTIFY_SRC_READY), \
  26. S(NOTIFY_SRC_WAIT_NEW_CAPABILITIES), \
  27. \
  28. S(NOTIFY_SNK_UNATTACHED), \
  29. S(NOTIFY_SNK_ATTACH_WAIT), \
  30. S(NOTIFY_SNK_DEBOUNCED), \
  31. S(NOTIFY_SNK_ATTACHED), \
  32. S(NOTIFY_SNK_STARTUP), \
  33. S(NOTIFY_SNK_DISCOVERY), \
  34. S(NOTIFY_SNK_DISCOVERY_DEBOUNCE), \
  35. S(NOTIFY_SNK_DISCOVERY_DEBOUNCE_DONE), \
  36. S(NOTIFY_SNK_WAIT_CAPABILITIES), \
  37. S(NOTIFY_SNK_NEGOTIATE_CAPABILITIES), \
  38. S(NOTIFY_SNK_NEGOTIATE_PPS_CAPABILITIES), \
  39. S(NOTIFY_SNK_TRANSITION_SINK), \
  40. S(NOTIFY_SNK_TRANSITION_SINK_VBUS), \
  41. S(NOTIFY_SNK_READY), \
  42. \
  43. S(NOTIFY_ACC_UNATTACHED), \
  44. S(NOTIFY_DEBUG_ACC_ATTACHED), \
  45. S(NOTIFY_AUDIO_ACC_ATTACHED), \
  46. S(NOTIFY_AUDIO_ACC_DEBOUNCE), \
  47. \
  48. S(NOTIFY_HARD_RESET_SEND), \
  49. S(NOTIFY_HARD_RESET_START), \
  50. S(NOTIFY_SRC_HARD_RESET_VBUS_OFF), \
  51. S(NOTIFY_SRC_HARD_RESET_VBUS_ON), \
  52. S(NOTIFY_SNK_HARD_RESET_SINK_OFF), \
  53. S(NOTIFY_SNK_HARD_RESET_WAIT_VBUS), \
  54. S(NOTIFY_SNK_HARD_RESET_SINK_ON), \
  55. \
  56. S(NOTIFY_SOFT_RESET), \
  57. S(NOTIFY_SOFT_RESET_SEND), \
  58. \
  59. S(NOTIFY_DR_SWAP_ACCEPT), \
  60. S(NOTIFY_DR_SWAP_SEND), \
  61. S(NOTIFY_DR_SWAP_SEND_TIMEOUT), \
  62. S(NOTIFY_DR_SWAP_CANCEL), \
  63. S(NOTIFY_DR_SWAP_CHANGE_DR), \
  64. \
  65. S(NOTIFY_PR_SWAP_ACCEPT), \
  66. S(NOTIFY_PR_SWAP_SEND), \
  67. S(NOTIFY_PR_SWAP_SEND_TIMEOUT), \
  68. S(NOTIFY_PR_SWAP_CANCEL), \
  69. S(NOTIFY_PR_SWAP_START), \
  70. S(NOTIFY_PR_SWAP_SRC_SNK_TRANSITION_OFF), \
  71. S(NOTIFY_PR_SWAP_SRC_SNK_SOURCE_OFF), \
  72. S(NOTIFY_PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED), \
  73. S(NOTIFY_PR_SWAP_SRC_SNK_SINK_ON), \
  74. S(NOTIFY_PR_SWAP_SNK_SRC_SINK_OFF), \
  75. S(NOTIFY_PR_SWAP_SNK_SRC_SOURCE_ON), \
  76. S(NOTIFY_PR_SWAP_SNK_SRC_SOURCE_ON_VBUS_RAMPED_UP), \
  77. \
  78. S(NOTIFY_VCONN_SWAP_ACCEPT), \
  79. S(NOTIFY_VCONN_SWAP_SEND), \
  80. S(NOTIFY_VCONN_SWAP_SEND_TIMEOUT), \
  81. S(NOTIFY_VCONN_SWAP_CANCEL), \
  82. S(NOTIFY_VCONN_SWAP_START), \
  83. S(NOTIFY_VCONN_SWAP_WAIT_FOR_VCONN), \
  84. S(NOTIFY_VCONN_SWAP_TURN_ON_VCONN), \
  85. S(NOTIFY_VCONN_SWAP_TURN_OFF_VCONN), \
  86. \
  87. S(NOTIFY_SNK_TRY), \
  88. S(NOTIFY_SNK_TRY_WAIT), \
  89. S(NOTIFY_SNK_TRY_WAIT_DEBOUNCE), \
  90. S(NOTIFY_SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS), \
  91. S(NOTIFY_SRC_TRYWAIT), \
  92. S(NOTIFY_SRC_TRYWAIT_DEBOUNCE), \
  93. S(NOTIFY_SRC_TRYWAIT_UNATTACHED), \
  94. \
  95. S(NOTIFY_SRC_TRY), \
  96. S(NOTIFY_SRC_TRY_WAIT), \
  97. S(NOTIFY_SRC_TRY_DEBOUNCE), \
  98. S(NOTIFY_SNK_TRYWAIT), \
  99. S(NOTIFY_SNK_TRYWAIT_DEBOUNCE), \
  100. S(NOTIFY_SNK_TRYWAIT_VBUS), \
  101. S(NOTIFY_BIST_RX), \
  102. \
  103. S(NOTIFY_GET_STATUS_SEND), \
  104. S(NOTIFY_GET_STATUS_SEND_TIMEOUT), \
  105. S(NOTIFY_GET_PPS_STATUS_SEND), \
  106. S(NOTIFY_GET_PPS_STATUS_SEND_TIMEOUT), \
  107. \
  108. S(NOTIFY_ERROR_RECOVERY), \
  109. S(NOTIFY_PORT_RESET), \
  110. S(NOTIFY_PORT_RESET_WAIT_OFF), \
  111. \
  112. S(NOTIFY_SNK_TRY_WAIT_PE), \
  113. S(NOTIFY_SRC_TRY_WAIT_PE), \
  114. S(NOTIFY_DEBUG_ACC_SNK_ATTACHED), \
  115. S(NOTIFY_CUSTOM_SRC_ATTACHED), \
  116. S(NOTIFY_NORP_SRC_ATTACHED), \
  117. S(NOTIFY_ROLE_SWAP), \
  118. S(NOTIFY_WATER_PROTECTION_WAIT), \
  119. S(NOTIFY_WATER_PROTECTION), \
  120. S(NOTIFY_UNATTACH_WAIT_PE)
  121. #define NOTIFY_GENERATE_ENUM(e) e
  122. #define NOTIFY_GENERATE_STRING(s) #s
  123. enum usblog_tcpm_state {
  124. NOTIFY_FOREACH_STATE(NOTIFY_GENERATE_ENUM)
  125. };
  126. enum usblog_type {
  127. NOTIFY_FUNCSTATE,
  128. NOTIFY_TCPMSTATE,
  129. NOTIFY_CCSTATE,
  130. NOTIFY_ALTERNATEMODE,
  131. NOTIFY_CCIC_EVENT,
  132. NOTIFY_MANAGER,
  133. NOTIFY_USBMODE,
  134. NOTIFY_USBMODE_EXTRA,
  135. NOTIFY_USBSTATE,
  136. NOTIFY_EVENT,
  137. NOTIFY_PORT_CONNECT,
  138. NOTIFY_PORT_DISCONNECT,
  139. NOTIFY_PORT_CLASS,
  140. NOTIFY_PORT_CLASS_BLOCK,
  141. NOTIFY_PCM_PLAYBACK,
  142. NOTIFY_PCM_CAPTURE,
  143. NOTIFY_EXTRA,
  144. };
  145. enum usblog_state {
  146. NOTIFY_CONFIGURED = 1,
  147. NOTIFY_CONNECTED,
  148. NOTIFY_DISCONNECTED,
  149. NOTIFY_RESET,
  150. NOTIFY_RESET_FULL,
  151. NOTIFY_RESET_HIGH,
  152. NOTIFY_RESET_SUPER,
  153. NOTIFY_ACCSTART,
  154. NOTIFY_PULLUP,
  155. NOTIFY_PULLUP_ENABLE,
  156. NOTIFY_PULLUP_EN_SUCCESS,
  157. NOTIFY_PULLUP_EN_FAIL,
  158. NOTIFY_PULLUP_DISABLE,
  159. NOTIFY_PULLUP_DIS_SUCCESS,
  160. NOTIFY_PULLUP_DIS_FAIL,
  161. NOTIFY_VBUS_SESSION,
  162. NOTIFY_VBUS_SESSION_ENABLE,
  163. NOTIFY_VBUS_EN_SUCCESS,
  164. NOTIFY_VBUS_EN_FAIL,
  165. NOTIFY_VBUS_SESSION_DISABLE,
  166. NOTIFY_VBUS_DIS_SUCCESS,
  167. NOTIFY_VBUS_DIS_FAIL,
  168. NOTIFY_HIGH,
  169. NOTIFY_SUPER,
  170. NOTIFY_GET_DES,
  171. NOTIFY_SET_CON,
  172. NOTIFY_CONNDONE_SSP,
  173. NOTIFY_CONNDONE_SS,
  174. NOTIFY_CONNDONE_HS,
  175. NOTIFY_CONNDONE_FS,
  176. NOTIFY_CONNDONE_LS,
  177. };
  178. enum usblog_status {
  179. NOTIFY_DETACH = 0,
  180. NOTIFY_ATTACH_DFP,
  181. NOTIFY_ATTACH_UFP,
  182. NOTIFY_ATTACH_DRP,
  183. };
  184. /*
  185. * You should refer "linux/usb/typec/common/pdic_notifier.h"
  186. * ccic_device, ccic_id may be different at each branch
  187. */
  188. enum ccic_device {
  189. NOTIFY_DEV_INITIAL = 0,
  190. NOTIFY_DEV_USB,
  191. NOTIFY_DEV_BATTERY,
  192. NOTIFY_DEV_PDIC,
  193. NOTIFY_DEV_MUIC,
  194. NOTIFY_DEV_CCIC,
  195. NOTIFY_DEV_MANAGER,
  196. NOTIFY_DEV_DP,
  197. NOTIFY_DEV_USB_DP,
  198. NOTIFY_DEV_SUB_BATTERY,
  199. NOTIFY_DEV_SECOND_MUIC,
  200. NOTIFY_DEV_DEDICATED_MUIC,
  201. NOTIFY_DEV_ALL,
  202. };
  203. enum ccic_id {
  204. NOTIFY_ID_INITIAL = 0,
  205. NOTIFY_ID_ATTACH,
  206. NOTIFY_ID_RID,
  207. NOTIFY_ID_USB,
  208. NOTIFY_ID_POWER_STATUS,
  209. NOTIFY_ID_WATER,
  210. NOTIFY_ID_VCONN,
  211. NOTIFY_ID_OTG,
  212. NOTIFY_ID_TA,
  213. NOTIFY_ID_DP_CONNECT,
  214. NOTIFY_ID_DP_HPD,
  215. NOTIFY_ID_DP_LINK_CONF,
  216. NOTIFY_ID_USB_DP,
  217. NOTIFY_ID_ROLE_SWAP,
  218. NOTIFY_ID_FAC,
  219. NOTIFY_ID_CC_PIN_STATUS,
  220. NOTIFY_ID_WATER_CABLE,
  221. NOTIFY_ID_POFF_WATER,
  222. NOTIFY_ID_DEVICE_INFO,
  223. NOTIFY_ID_SVID_INFO,
  224. NOTIFY_ID_CLEAR_INFO,
  225. };
  226. enum ccic_rid {
  227. NOTIFY_RID_UNDEFINED = 0,
  228. #if defined(CONFIG_USB_CCIC_NOTIFIER_USING_QC)
  229. NOTIFY_RID_GND,
  230. NOTIFY_RID_056K,
  231. #else
  232. NOTIFY_RID_000K,
  233. NOTIFY_RID_001K,
  234. #endif
  235. NOTIFY_RID_255K,
  236. NOTIFY_RID_301K,
  237. NOTIFY_RID_523K,
  238. NOTIFY_RID_619K,
  239. NOTIFY_RID_OPEN,
  240. };
  241. enum ccic_con {
  242. NOTIFY_CON_DETACH = 0,
  243. NOTIFY_CON_ATTACH,
  244. };
  245. enum ccic_rprd {
  246. NOTIFY_RD = 0,
  247. NOTIFY_RP,
  248. };
  249. enum ccic_rpstatus {
  250. NOTIFY_RP_NONE = 0,
  251. NOTIFY_RP_56K, /* 80uA */
  252. NOTIFY_RP_22K, /* 180uA */
  253. NOTIFY_RP_10K, /* 330uA */
  254. NOTIFY_RP_ABNORMAL,
  255. };
  256. enum ccic_hpd {
  257. NOTIFY_HPD_LOW = 0,
  258. NOTIFY_HPD_HIGH,
  259. NOTIFY_HPD_IRQ,
  260. };
  261. enum ccic_pin_assignment {
  262. NOTIFY_DP_PIN_UNKNOWN = 0,
  263. NOTIFY_DP_PIN_A,
  264. NOTIFY_DP_PIN_B,
  265. NOTIFY_DP_PIN_C,
  266. NOTIFY_DP_PIN_D,
  267. NOTIFY_DP_PIN_E,
  268. NOTIFY_DP_PIN_F,
  269. };
  270. enum ccic_pin_status {
  271. NOTIFY_PIN_NOTERMINATION = 0,
  272. NOTIFY_PIN_CC1_ACTIVE,
  273. NOTIFY_PIN_CC2_ACTIVE,
  274. NOTIFY_PIN_AUDIO_ACCESSORY,
  275. };
  276. enum ccic_voltage_status {
  277. NOTIFY_CC_VOLT_OPEN = 0,
  278. NOTIFY_CC_VOLT_RA,
  279. NOTIFY_CC_VOLT_RD,
  280. NOTIFY_CC_VOLT_SNK_DFT,
  281. NOTIFY_CC_VOLT_SNK_1_5,
  282. NOTIFY_CC_VOLT_SNK_3_0,
  283. NOTIFY_CC_DRP_TOGGLING,
  284. NOTIFY_CC_UNDEFINED,
  285. };
  286. enum extra {
  287. NOTIFY_EXTRA_USBKILLER = 0,
  288. NOTIFY_EXTRA_HARDRESET_SENT,
  289. NOTIFY_EXTRA_HARDRESET_RECEIVED,
  290. NOTIFY_EXTRA_SYSERROR_BOOT_WDT,
  291. NOTIFY_EXTRA_SYSMSG_BOOT_POR,
  292. NOTIFY_EXTRA_SYSMSG_CC_SHORT,
  293. NOTIFY_EXTRA_SYSMSG_SBU_GND_SHORT,
  294. NOTIFY_EXTRA_SYSMSG_SBU_VBUS_SHORT,
  295. NOTIFY_EXTRA_UVDM_TIMEOUT,
  296. NOTIFY_EXTRA_CCOPEN_REQ_SET,
  297. NOTIFY_EXTRA_CCOPEN_REQ_CLEAR,
  298. NOTIFY_EXTRA_USB_ANALOGAUDIO,
  299. NOTIFY_EXTRA_USBHOST_OVERCURRENT,
  300. NOTIFY_EXTRA_ROOTHUB_SUSPEND_FAIL,
  301. NOTIFY_EXTRA_PORT_SUSPEND_FAIL,
  302. NOTIFY_EXTRA_PORT_SUSPEND_WAKEUP_FAIL,
  303. NOTIFY_EXTRA_PORT_SUSPEND_LTM_FAIL,
  304. NOTIFY_EXTRA_VIB_FW_LOAD_SUCCESS,
  305. };
  306. enum printk_usb_op {
  307. NOTIFY_PRINTK_USB_NORMAL = 0,
  308. NOTIFY_PRINTK_USB_SNAPSHOT = 1,
  309. };
  310. #define ALTERNATE_MODE_NOT_READY (1 << 0)
  311. #define ALTERNATE_MODE_READY (1 << 1)
  312. #define ALTERNATE_MODE_STOP (1 << 2)
  313. #define ALTERNATE_MODE_START (1 << 3)
  314. #define ALTERNATE_MODE_RESET (1 << 4)
  315. #ifdef CONFIG_USB_NOTIFY_PROC_LOG
  316. extern void store_usblog_notify(int type, void *param1, void *param2);
  317. extern void store_ccic_version(unsigned char *hw, unsigned char *sw_main,
  318. unsigned char *sw_boot);
  319. extern unsigned long long show_ccic_version(void);
  320. extern void store_ccic_bin_version(const unsigned char *sw_main,
  321. const unsigned char *sw_boot);
  322. extern void store_tcpc_name(char *name);
  323. extern void printk_usb(int snapshot, char *fmt, ...);
  324. extern int register_usblog_proc(void);
  325. extern void unregister_usblog_proc(void);
  326. #else
  327. static inline void store_usblog_notify(int type, void *param1, void *param2) {}
  328. static inline void store_ccic_version(unsigned char *hw, unsigned char *sw_main,
  329. unsigned char *sw_boot) {}
  330. static inline unsigned long long show_ccic_version(void) {return 0; }
  331. static inline void store_ccic_bin_version(const unsigned char *sw_main,
  332. const unsigned char *sw_boot) {}
  333. static inline void store_tcpc_name(char *name) {}
  334. static inline void printk_usb(int snapshot, char *fmt, ...) {}
  335. static inline int register_usblog_proc(void)
  336. {return 0; }
  337. static inline void unregister_usblog_proc(void) {}
  338. #endif
  339. #endif