358 lines
8.8 KiB
C
358 lines
8.8 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||
|
/*
|
||
|
* Copyright (C) 2016-2022 Samsung Electronics Co. Ltd.
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License as published by
|
||
|
* the Free Software Foundation; either version 2 of the License, or
|
||
|
* (at your option) any later version.
|
||
|
*/
|
||
|
|
||
|
/* usb notify layer v3.7 */
|
||
|
|
||
|
#ifndef __LINUX_USBLOG_PROC_NOTIFY_H__
|
||
|
#define __LINUX_USBLOG_PROC_NOTIFY_H__
|
||
|
|
||
|
#define NOTIFY_FOREACH_STATE(S) \
|
||
|
S(NOTIFY_UNDEFINED_STATE), \
|
||
|
S(NOTIFY_INVALID_STATE), \
|
||
|
S(NOTIFY_TOGGLING), \
|
||
|
S(NOTIFY_SRC_UNATTACHED), \
|
||
|
S(NOTIFY_SRC_ATTACH_WAIT), \
|
||
|
S(NOTIFY_SRC_ATTACHED), \
|
||
|
S(NOTIFY_SRC_STARTUP), \
|
||
|
S(NOTIFY_SRC_SEND_CAPABILITIES), \
|
||
|
S(NOTIFY_SRC_SEND_CAPABILITIES_TIMEOUT), \
|
||
|
S(NOTIFY_SRC_NEGOTIATE_CAPABILITIES), \
|
||
|
S(NOTIFY_SRC_TRANSITION_SUPPLY), \
|
||
|
S(NOTIFY_SRC_READY), \
|
||
|
S(NOTIFY_SRC_WAIT_NEW_CAPABILITIES), \
|
||
|
\
|
||
|
S(NOTIFY_SNK_UNATTACHED), \
|
||
|
S(NOTIFY_SNK_ATTACH_WAIT), \
|
||
|
S(NOTIFY_SNK_DEBOUNCED), \
|
||
|
S(NOTIFY_SNK_ATTACHED), \
|
||
|
S(NOTIFY_SNK_STARTUP), \
|
||
|
S(NOTIFY_SNK_DISCOVERY), \
|
||
|
S(NOTIFY_SNK_DISCOVERY_DEBOUNCE), \
|
||
|
S(NOTIFY_SNK_DISCOVERY_DEBOUNCE_DONE), \
|
||
|
S(NOTIFY_SNK_WAIT_CAPABILITIES), \
|
||
|
S(NOTIFY_SNK_NEGOTIATE_CAPABILITIES), \
|
||
|
S(NOTIFY_SNK_NEGOTIATE_PPS_CAPABILITIES), \
|
||
|
S(NOTIFY_SNK_TRANSITION_SINK), \
|
||
|
S(NOTIFY_SNK_TRANSITION_SINK_VBUS), \
|
||
|
S(NOTIFY_SNK_READY), \
|
||
|
\
|
||
|
S(NOTIFY_ACC_UNATTACHED), \
|
||
|
S(NOTIFY_DEBUG_ACC_ATTACHED), \
|
||
|
S(NOTIFY_AUDIO_ACC_ATTACHED), \
|
||
|
S(NOTIFY_AUDIO_ACC_DEBOUNCE), \
|
||
|
\
|
||
|
S(NOTIFY_HARD_RESET_SEND), \
|
||
|
S(NOTIFY_HARD_RESET_START), \
|
||
|
S(NOTIFY_SRC_HARD_RESET_VBUS_OFF), \
|
||
|
S(NOTIFY_SRC_HARD_RESET_VBUS_ON), \
|
||
|
S(NOTIFY_SNK_HARD_RESET_SINK_OFF), \
|
||
|
S(NOTIFY_SNK_HARD_RESET_WAIT_VBUS), \
|
||
|
S(NOTIFY_SNK_HARD_RESET_SINK_ON), \
|
||
|
\
|
||
|
S(NOTIFY_SOFT_RESET), \
|
||
|
S(NOTIFY_SOFT_RESET_SEND), \
|
||
|
\
|
||
|
S(NOTIFY_DR_SWAP_ACCEPT), \
|
||
|
S(NOTIFY_DR_SWAP_SEND), \
|
||
|
S(NOTIFY_DR_SWAP_SEND_TIMEOUT), \
|
||
|
S(NOTIFY_DR_SWAP_CANCEL), \
|
||
|
S(NOTIFY_DR_SWAP_CHANGE_DR), \
|
||
|
\
|
||
|
S(NOTIFY_PR_SWAP_ACCEPT), \
|
||
|
S(NOTIFY_PR_SWAP_SEND), \
|
||
|
S(NOTIFY_PR_SWAP_SEND_TIMEOUT), \
|
||
|
S(NOTIFY_PR_SWAP_CANCEL), \
|
||
|
S(NOTIFY_PR_SWAP_START), \
|
||
|
S(NOTIFY_PR_SWAP_SRC_SNK_TRANSITION_OFF), \
|
||
|
S(NOTIFY_PR_SWAP_SRC_SNK_SOURCE_OFF), \
|
||
|
S(NOTIFY_PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED), \
|
||
|
S(NOTIFY_PR_SWAP_SRC_SNK_SINK_ON), \
|
||
|
S(NOTIFY_PR_SWAP_SNK_SRC_SINK_OFF), \
|
||
|
S(NOTIFY_PR_SWAP_SNK_SRC_SOURCE_ON), \
|
||
|
S(NOTIFY_PR_SWAP_SNK_SRC_SOURCE_ON_VBUS_RAMPED_UP), \
|
||
|
\
|
||
|
S(NOTIFY_VCONN_SWAP_ACCEPT), \
|
||
|
S(NOTIFY_VCONN_SWAP_SEND), \
|
||
|
S(NOTIFY_VCONN_SWAP_SEND_TIMEOUT), \
|
||
|
S(NOTIFY_VCONN_SWAP_CANCEL), \
|
||
|
S(NOTIFY_VCONN_SWAP_START), \
|
||
|
S(NOTIFY_VCONN_SWAP_WAIT_FOR_VCONN), \
|
||
|
S(NOTIFY_VCONN_SWAP_TURN_ON_VCONN), \
|
||
|
S(NOTIFY_VCONN_SWAP_TURN_OFF_VCONN), \
|
||
|
\
|
||
|
S(NOTIFY_SNK_TRY), \
|
||
|
S(NOTIFY_SNK_TRY_WAIT), \
|
||
|
S(NOTIFY_SNK_TRY_WAIT_DEBOUNCE), \
|
||
|
S(NOTIFY_SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS), \
|
||
|
S(NOTIFY_SRC_TRYWAIT), \
|
||
|
S(NOTIFY_SRC_TRYWAIT_DEBOUNCE), \
|
||
|
S(NOTIFY_SRC_TRYWAIT_UNATTACHED), \
|
||
|
\
|
||
|
S(NOTIFY_SRC_TRY), \
|
||
|
S(NOTIFY_SRC_TRY_WAIT), \
|
||
|
S(NOTIFY_SRC_TRY_DEBOUNCE), \
|
||
|
S(NOTIFY_SNK_TRYWAIT), \
|
||
|
S(NOTIFY_SNK_TRYWAIT_DEBOUNCE), \
|
||
|
S(NOTIFY_SNK_TRYWAIT_VBUS), \
|
||
|
S(NOTIFY_BIST_RX), \
|
||
|
\
|
||
|
S(NOTIFY_GET_STATUS_SEND), \
|
||
|
S(NOTIFY_GET_STATUS_SEND_TIMEOUT), \
|
||
|
S(NOTIFY_GET_PPS_STATUS_SEND), \
|
||
|
S(NOTIFY_GET_PPS_STATUS_SEND_TIMEOUT), \
|
||
|
\
|
||
|
S(NOTIFY_ERROR_RECOVERY), \
|
||
|
S(NOTIFY_PORT_RESET), \
|
||
|
S(NOTIFY_PORT_RESET_WAIT_OFF), \
|
||
|
\
|
||
|
S(NOTIFY_SNK_TRY_WAIT_PE), \
|
||
|
S(NOTIFY_SRC_TRY_WAIT_PE), \
|
||
|
S(NOTIFY_DEBUG_ACC_SNK_ATTACHED), \
|
||
|
S(NOTIFY_CUSTOM_SRC_ATTACHED), \
|
||
|
S(NOTIFY_NORP_SRC_ATTACHED), \
|
||
|
S(NOTIFY_ROLE_SWAP), \
|
||
|
S(NOTIFY_WATER_PROTECTION_WAIT), \
|
||
|
S(NOTIFY_WATER_PROTECTION), \
|
||
|
S(NOTIFY_UNATTACH_WAIT_PE)
|
||
|
|
||
|
|
||
|
#define NOTIFY_GENERATE_ENUM(e) e
|
||
|
#define NOTIFY_GENERATE_STRING(s) #s
|
||
|
|
||
|
enum usblog_tcpm_state {
|
||
|
NOTIFY_FOREACH_STATE(NOTIFY_GENERATE_ENUM)
|
||
|
};
|
||
|
|
||
|
enum usblog_type {
|
||
|
NOTIFY_FUNCSTATE,
|
||
|
NOTIFY_TCPMSTATE,
|
||
|
NOTIFY_CCSTATE,
|
||
|
NOTIFY_ALTERNATEMODE,
|
||
|
NOTIFY_CCIC_EVENT,
|
||
|
NOTIFY_MANAGER,
|
||
|
NOTIFY_USBMODE,
|
||
|
NOTIFY_USBMODE_EXTRA,
|
||
|
NOTIFY_USBSTATE,
|
||
|
NOTIFY_EVENT,
|
||
|
NOTIFY_PORT_CONNECT,
|
||
|
NOTIFY_PORT_DISCONNECT,
|
||
|
NOTIFY_PORT_CLASS,
|
||
|
NOTIFY_PORT_CLASS_BLOCK,
|
||
|
NOTIFY_PCM_PLAYBACK,
|
||
|
NOTIFY_PCM_CAPTURE,
|
||
|
NOTIFY_EXTRA,
|
||
|
};
|
||
|
|
||
|
enum usblog_state {
|
||
|
NOTIFY_CONFIGURED = 1,
|
||
|
NOTIFY_CONNECTED,
|
||
|
NOTIFY_DISCONNECTED,
|
||
|
NOTIFY_RESET,
|
||
|
NOTIFY_RESET_FULL,
|
||
|
NOTIFY_RESET_HIGH,
|
||
|
NOTIFY_RESET_SUPER,
|
||
|
NOTIFY_ACCSTART,
|
||
|
NOTIFY_PULLUP,
|
||
|
NOTIFY_PULLUP_ENABLE,
|
||
|
NOTIFY_PULLUP_EN_SUCCESS,
|
||
|
NOTIFY_PULLUP_EN_FAIL,
|
||
|
NOTIFY_PULLUP_DISABLE,
|
||
|
NOTIFY_PULLUP_DIS_SUCCESS,
|
||
|
NOTIFY_PULLUP_DIS_FAIL,
|
||
|
NOTIFY_VBUS_SESSION,
|
||
|
NOTIFY_VBUS_SESSION_ENABLE,
|
||
|
NOTIFY_VBUS_EN_SUCCESS,
|
||
|
NOTIFY_VBUS_EN_FAIL,
|
||
|
NOTIFY_VBUS_SESSION_DISABLE,
|
||
|
NOTIFY_VBUS_DIS_SUCCESS,
|
||
|
NOTIFY_VBUS_DIS_FAIL,
|
||
|
NOTIFY_HIGH,
|
||
|
NOTIFY_SUPER,
|
||
|
NOTIFY_GET_DES,
|
||
|
NOTIFY_SET_CON,
|
||
|
NOTIFY_CONNDONE_SSP,
|
||
|
NOTIFY_CONNDONE_SS,
|
||
|
NOTIFY_CONNDONE_HS,
|
||
|
NOTIFY_CONNDONE_FS,
|
||
|
NOTIFY_CONNDONE_LS,
|
||
|
};
|
||
|
|
||
|
enum usblog_status {
|
||
|
NOTIFY_DETACH = 0,
|
||
|
NOTIFY_ATTACH_DFP,
|
||
|
NOTIFY_ATTACH_UFP,
|
||
|
NOTIFY_ATTACH_DRP,
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* You should refer "linux/usb/typec/common/pdic_notifier.h"
|
||
|
* ccic_device, ccic_id may be different at each branch
|
||
|
*/
|
||
|
enum ccic_device {
|
||
|
NOTIFY_DEV_INITIAL = 0,
|
||
|
NOTIFY_DEV_USB,
|
||
|
NOTIFY_DEV_BATTERY,
|
||
|
NOTIFY_DEV_PDIC,
|
||
|
NOTIFY_DEV_MUIC,
|
||
|
NOTIFY_DEV_CCIC,
|
||
|
NOTIFY_DEV_MANAGER,
|
||
|
NOTIFY_DEV_DP,
|
||
|
NOTIFY_DEV_USB_DP,
|
||
|
NOTIFY_DEV_SUB_BATTERY,
|
||
|
NOTIFY_DEV_SECOND_MUIC,
|
||
|
NOTIFY_DEV_DEDICATED_MUIC,
|
||
|
NOTIFY_DEV_ALL,
|
||
|
};
|
||
|
|
||
|
enum ccic_id {
|
||
|
NOTIFY_ID_INITIAL = 0,
|
||
|
NOTIFY_ID_ATTACH,
|
||
|
NOTIFY_ID_RID,
|
||
|
NOTIFY_ID_USB,
|
||
|
NOTIFY_ID_POWER_STATUS,
|
||
|
NOTIFY_ID_WATER,
|
||
|
NOTIFY_ID_VCONN,
|
||
|
NOTIFY_ID_OTG,
|
||
|
NOTIFY_ID_TA,
|
||
|
NOTIFY_ID_DP_CONNECT,
|
||
|
NOTIFY_ID_DP_HPD,
|
||
|
NOTIFY_ID_DP_LINK_CONF,
|
||
|
NOTIFY_ID_USB_DP,
|
||
|
NOTIFY_ID_ROLE_SWAP,
|
||
|
NOTIFY_ID_FAC,
|
||
|
NOTIFY_ID_CC_PIN_STATUS,
|
||
|
NOTIFY_ID_WATER_CABLE,
|
||
|
NOTIFY_ID_POFF_WATER,
|
||
|
NOTIFY_ID_DEVICE_INFO,
|
||
|
NOTIFY_ID_SVID_INFO,
|
||
|
NOTIFY_ID_CLEAR_INFO,
|
||
|
};
|
||
|
|
||
|
enum ccic_rid {
|
||
|
NOTIFY_RID_UNDEFINED = 0,
|
||
|
#if defined(CONFIG_USB_CCIC_NOTIFIER_USING_QC)
|
||
|
NOTIFY_RID_GND,
|
||
|
NOTIFY_RID_056K,
|
||
|
#else
|
||
|
NOTIFY_RID_000K,
|
||
|
NOTIFY_RID_001K,
|
||
|
#endif
|
||
|
NOTIFY_RID_255K,
|
||
|
NOTIFY_RID_301K,
|
||
|
NOTIFY_RID_523K,
|
||
|
NOTIFY_RID_619K,
|
||
|
NOTIFY_RID_OPEN,
|
||
|
};
|
||
|
|
||
|
enum ccic_con {
|
||
|
NOTIFY_CON_DETACH = 0,
|
||
|
NOTIFY_CON_ATTACH,
|
||
|
};
|
||
|
|
||
|
enum ccic_rprd {
|
||
|
NOTIFY_RD = 0,
|
||
|
NOTIFY_RP,
|
||
|
};
|
||
|
|
||
|
enum ccic_rpstatus {
|
||
|
NOTIFY_RP_NONE = 0,
|
||
|
NOTIFY_RP_56K, /* 80uA */
|
||
|
NOTIFY_RP_22K, /* 180uA */
|
||
|
NOTIFY_RP_10K, /* 330uA */
|
||
|
NOTIFY_RP_ABNORMAL,
|
||
|
};
|
||
|
|
||
|
enum ccic_hpd {
|
||
|
NOTIFY_HPD_LOW = 0,
|
||
|
NOTIFY_HPD_HIGH,
|
||
|
NOTIFY_HPD_IRQ,
|
||
|
};
|
||
|
|
||
|
enum ccic_pin_assignment {
|
||
|
NOTIFY_DP_PIN_UNKNOWN = 0,
|
||
|
NOTIFY_DP_PIN_A,
|
||
|
NOTIFY_DP_PIN_B,
|
||
|
NOTIFY_DP_PIN_C,
|
||
|
NOTIFY_DP_PIN_D,
|
||
|
NOTIFY_DP_PIN_E,
|
||
|
NOTIFY_DP_PIN_F,
|
||
|
};
|
||
|
|
||
|
enum ccic_pin_status {
|
||
|
NOTIFY_PIN_NOTERMINATION = 0,
|
||
|
NOTIFY_PIN_CC1_ACTIVE,
|
||
|
NOTIFY_PIN_CC2_ACTIVE,
|
||
|
NOTIFY_PIN_AUDIO_ACCESSORY,
|
||
|
};
|
||
|
|
||
|
enum ccic_voltage_status {
|
||
|
NOTIFY_CC_VOLT_OPEN = 0,
|
||
|
NOTIFY_CC_VOLT_RA,
|
||
|
NOTIFY_CC_VOLT_RD,
|
||
|
|
||
|
NOTIFY_CC_VOLT_SNK_DFT,
|
||
|
NOTIFY_CC_VOLT_SNK_1_5,
|
||
|
NOTIFY_CC_VOLT_SNK_3_0,
|
||
|
|
||
|
NOTIFY_CC_DRP_TOGGLING,
|
||
|
|
||
|
NOTIFY_CC_UNDEFINED,
|
||
|
};
|
||
|
|
||
|
enum extra {
|
||
|
NOTIFY_EXTRA_USBKILLER = 0,
|
||
|
NOTIFY_EXTRA_HARDRESET_SENT,
|
||
|
NOTIFY_EXTRA_HARDRESET_RECEIVED,
|
||
|
NOTIFY_EXTRA_SYSERROR_BOOT_WDT,
|
||
|
NOTIFY_EXTRA_SYSMSG_BOOT_POR,
|
||
|
NOTIFY_EXTRA_SYSMSG_CC_SHORT,
|
||
|
NOTIFY_EXTRA_SYSMSG_SBU_GND_SHORT,
|
||
|
NOTIFY_EXTRA_SYSMSG_SBU_VBUS_SHORT,
|
||
|
NOTIFY_EXTRA_UVDM_TIMEOUT,
|
||
|
NOTIFY_EXTRA_CCOPEN_REQ_SET,
|
||
|
NOTIFY_EXTRA_CCOPEN_REQ_CLEAR,
|
||
|
NOTIFY_EXTRA_USB_ANALOGAUDIO,
|
||
|
NOTIFY_EXTRA_USBHOST_OVERCURRENT,
|
||
|
NOTIFY_EXTRA_ROOTHUB_SUSPEND_FAIL,
|
||
|
NOTIFY_EXTRA_PORT_SUSPEND_FAIL,
|
||
|
NOTIFY_EXTRA_PORT_SUSPEND_WAKEUP_FAIL,
|
||
|
NOTIFY_EXTRA_PORT_SUSPEND_LTM_FAIL,
|
||
|
NOTIFY_EXTRA_VIB_FW_LOAD_SUCCESS,
|
||
|
};
|
||
|
|
||
|
#define ALTERNATE_MODE_NOT_READY (1 << 0)
|
||
|
#define ALTERNATE_MODE_READY (1 << 1)
|
||
|
#define ALTERNATE_MODE_STOP (1 << 2)
|
||
|
#define ALTERNATE_MODE_START (1 << 3)
|
||
|
#define ALTERNATE_MODE_RESET (1 << 4)
|
||
|
|
||
|
#ifdef CONFIG_USB_NOTIFY_PROC_LOG
|
||
|
extern void store_usblog_notify(int type, void *param1, void *param2);
|
||
|
extern void store_ccic_version(unsigned char *hw, unsigned char *sw_main,
|
||
|
unsigned char *sw_boot);
|
||
|
extern unsigned long long show_ccic_version(void);
|
||
|
extern void store_ccic_bin_version(const unsigned char *sw_main,
|
||
|
const unsigned char *sw_boot);
|
||
|
extern int register_usblog_proc(void);
|
||
|
extern void unregister_usblog_proc(void);
|
||
|
#else
|
||
|
static inline void store_usblog_notify(int type, void *param1, void *param2) {}
|
||
|
static inline void store_ccic_version(unsigned char *hw, unsigned char *sw_main,
|
||
|
unsigned char *sw_boot) {}
|
||
|
static inline unsigned long long show_ccic_version(void) {return 0; }
|
||
|
static inline void store_ccic_bin_version(const unsigned char *sw_main,
|
||
|
const unsigned char *sw_boot) {}
|
||
|
static inline int register_usblog_proc(void)
|
||
|
{return 0; }
|
||
|
static inline void unregister_usblog_proc(void) {}
|
||
|
#endif
|
||
|
#endif
|
||
|
|