Browse Source

Optimize Primary and Secondary panic reason logging in kernel

 - Sub-System directly sends the Primary and
   Secondary panic string to kernel, and will be logged
   in kernel.

Change-Id: Ief755c0ab06975ecfa5613d51f171b4b38c6d1ce
Signed-off-by: Girish BN <[email protected]>
Girish BN 1 year ago
parent
commit
445b764a85
2 changed files with 17 additions and 399 deletions
  1. 0 374
      include/btpower.h
  2. 17 25
      pwr/btpower.c

+ 0 - 374
include/btpower.h

@@ -143,196 +143,6 @@ enum {
 	PWR_CLIENT_KILLED,
 };
 
-enum BtPrimaryReasonCode {
-	BT_DEFAULT_NONE  = 0x00,                         //INVALID REASON
-	BT_SOC_CRASHED = 0x01,                           //SOC WAS CRASHED
-	BT_SOC_CRASHED_DIAG_SSR = 0x02,                  //SOC CRASHED DIAG INITIATED SSR
-	BT_INIT_FAILED = 0x03,                           //HOST INITIALIZATION FAILED
-	BT_CLOSE_RCVD_DURING_INIT = 0x04,                //CLOSE RECEIVED FROM STACK DURING SOC INIT
-	BT_ERROR_READING_DATA_FROM_UART = 0x05,          //ERROR READING DATA FROM UART
-	BT_WRITE_FAIL_SPCL_BUFF_CRASH_SOC = 0x06,        //FAILED TO WRITE SPECIAL BYTES TO CRASH SOC
-	BT_RX_THREAD_STUCK = 0x07,                       //RX THREAD STUCK
-	BT_SSR_CMD_TIMEDOUT = 0x08,                      //SSR DUE TO CMD TIMED OUT
-	BT_SSR_SPURIOUS_WAKEUP = 0x09,                   //SSR DUE TO SPURIOUS WAKE UP
-	BT_SSR_INVALID_BYTES_RCVD = 0x0A,                //INVALID HCI CMD TYPE RECEIVED
-	BT_SSR_RCVD_LARGE_PKT_FROM_SOC = 0x0B,           //SSR DUE TO LARGE PKT RECVIVED FROM SOC
-	BT_SSR_UNABLE_TO_WAKEUP_SOC = 0x0C,              //UNABLE TO WAKE UP SOC
-	BT_CMD_TIMEDOUT_SOC_WAIT_TIMEOUT = 0x0D,         //COMMAND TIMEOUT AND SOC CRASH WAIT TIMEOUT
-	BT_SPURIOUS_WAKEUP_SOC_WAIT_TIMEOUT = 0x0E,      //SPURIOUS WAKE AND SOC CRASH WAIT TIMEOUT
-	BT_INV_BYTES_SOC_WAIT_TIMEOUT = 0x0F,            //INVALID BYTES AND SOC CRASH WAIT TIMEOUT
-	BT_SOC_WAKEUP_FAILED_SOC_WAIT_TIMEOUT = 0x10,    //SOC WAKEUP FAILURE AND SOC CRASH WAIT TIMEOUT
-	BT_SOC_CRASHED_DIAG_SSR_SOC_WAIT_TIMEOUT = 0x11, //SOC CRASHED DIAG INITIATED SSR CRASH WAIT TIMEOUT
-	BT_NONE_SOC_WAIT_TIMEOUT = 0x12,                 //INVALID FAILURE AND SOC CRASH WAIT TIMEOUT
-	BT_SOC_DEINIT_STUCK = 0x13,                      //SOC DEINIT STUCK
-	BT_SSR_INTERNAL_CMD_TIMEDOUT = 0x14,             //SSR DUE TO CMD INTERNAL TIMED OUT
-	BT_FAILED_TO_SEND_INTERNAL_CMD = 0x15,           //FAILED TO SEND INTERNAL CMD
-	BT_SSR_SLEEP_IND_NOT_RCVD = 0x16,                //SOC DID NOT RCVD SLEEP IND DURING CLOSE
-	BT_DIAG_LOG_API_STUCK = 0x39,                    //DIAG log API stuck.
-	BT_PERI_SOC_CRASHED_DIAG_SSR = 0x17,             //PERI SOC CRASHED DIAG INITIATED SSR
-	BT_PERI_SOC_CRASHED = 0X18,                      //PERI SOC WAS CRASHED
-	BT_PERI_SOC_CRASHED_ON_OTHER_SUB_SYSTEM = 0x3A,  //Peripheral core crash detected in UWB SS
-	BT_PERI_SUB_SYSTEM_FAILED_UPDATE_SSR_COMPLETE = 0x3B // UWB FAILED TO UPDATE THE SSR COMPLETE STATUS
-};
-
-enum BtSecondaryReasonCode {
-	BT_SOC_REASON_DEFAULT        =  0x00,
-	BT_SOC_REASON_UNKNOWN        =  0x81,
-	BT_SOC_REASON_SW_REQUESTED   =  0x82,
-	BT_SOC_REASON_STACK_OVERFLOW =  0x83,
-	BT_SOC_REASON_EXCEPTION      =  0x84,
-	BT_SOC_REASON_ASSERT         =  0x85,
-	BT_SOC_REASON_TRAP           =  0x86,
-	BT_SOC_REASON_OS_FATAL       =  0x87,
-	BT_SOC_REASON_HCI_RESET      =  0x88,
-	BT_SOC_REASON_PATCH_RESET    =  0x89,
-	BT_SOC_REASON_ABT            =  0x8A,
-	BT_SOC_REASON_RAMMASK        =  0x8B,
-	BT_SOC_REASON_PREBARK        =  0x8C,
-	BT_SOC_REASON_BUSERROR       =  0x8D,
-	BT_SOC_REASON_IO_FATAL       =  0x8E,
-	BT_SOC_REASON_SSR_CMD        =  0x8F,
-	BT_SOC_REASON_POWERON        =  0x90,
-	BT_SOC_REASON_WATCHDOG       =  0x91,
-	BT_SOC_REASON_RAMMASK_RGN1   =  0x92,
-	BT_SOC_REASON_RAMMASK_RGN0   =  0x93,
-	BT_SOC_REASON_Q6_WATCHDOG    =  0x94,
-	BT_SOC_REASON_ZEALIS_RAM_MASK_RGN0 =  0x95,
-	BT_SOC_REASON_ZEALIS_RAM_MASK_RGN1 =  0x96,
-	BT_SOC_REASON_APSS_RESET           =  0x97,
-	BT_SOC_REASON_TIME_RESET           =  0x98,
-	BT_SOC_REASON_AUDIOSS_RESET        =  0x99,
-	BT_SOC_REASON_HOST_WARMRESET       =  0x9A,
-	BT_SOC_REASON_HOST_NMI_INIT        =  0x9B,
-	BT_SOC_REASON_PANIC_FAULT          =  0x9C,
-	BT_SOC_REASON_EARLY_TRAP           =  0x9D,
-	BT_SOC_REASON_INSTR_ADDR_MISALIGN  =  0x9E,
-	BT_SOC_REASON_INSTR_ACCESS_FAULT   =  0x9F,
-	BT_SOC_REASON_ILLEGAL_INSTR        =  0xA0,
-	BT_SOC_REASON_BREAKPOINT_EXCEPTION =  0xA1,
-	BT_SOC_REASON_LOAD_ADDR_MISALIGN   =  0xA2,
-	BT_SOC_REASON_LOAD_ACCESS_FAULT    =  0xA3,
-	BT_SOC_REASON_STORE_ADDR_MISALIGN  =  0xA4,
-	BT_SOC_REASON_STORE_ACCESS_FAULT   =  0xA5,
-	BT_SOC_REASON_ECALL_UMODE          =  0xA6,
-	BT_SOC_REASON_ECALL_MMODE          =  0xA7,
-	BT_SOC_REASON_STACK_UNDERFLOW      =  0xA8,
-	BT_SOC_REASON_MACHINE_EXT_INT      =  0xA9,
-	BT_SOC_REASON_PERF_MONITOR_OVERFLOW=  0xAA,
-	BT_SOC_REASON_EXT_SUBSYS_RESET     =  0xAB,
-	BT_SOC_REASON_IPC_STALL            =  0xAC,
-	BT_SOC_REASON_PEER_CPU0_NMI        =  0xAD,
-	BT_SOC_REASON_PEER_CPU1_NMI        =  0xAE,
-	BT_SOC_REASON_PEER_CPU2_NMI        =  0xAF,
-	BT_SOC_REASON_TX_RX_INVALID_PKT_FATAL = 0xC0,
-	BT_SOC_REASON_TX_RX_INVALID_LEN_FATAL = 0xC1,
-	BT_SOC_REASON_INVALID_STACK          =  0xF0,
-	BT_SOC_REASON_INVALID_MCI_MSG_RCVD   =  0xF1,
-	BT_HOST_REASON_UARTINIT_STUCK        =  0x17,
-	BT_HOST_REASON_GETVER_SEND_STUCK     =  0x18,
-	BT_HOST_REASON_GETVER_NO_RSP_RCVD    =  0x19,
-	BT_HOST_REASON_SETBAUDRATE_CMD_STUCK =  0x1A,
-	BT_HOST_REASON_PATCH_DNLD_STUCK      =  0x1B,
-	BT_HOST_REASON_GETBOARDID_CMD_STUCK  =  0x1C,
-	BT_HOST_REASON_NVM_DNLD_STUCK        =  0x1D,
-	BT_HOST_REASON_HCI_RESET_STUCK       =  0x1E,
-	BT_HOST_REASON_GETBLDINFO_CMD_STUCK  =  0x1F,
-	BT_HOST_REASON_ADDONFEAT_CMD_STUCK   =  0x20,
-	BT_HOST_REASON_ENHLOG_CMD_STUCK      =  0x21,
-	BT_HOST_REASON_DIAGINIT_STUCK        =  0x22,
-	BT_HOST_REASON_DIAGDEINIT_STUCK      =  0x23,
-	BT_HOST_REASON_XMEM_NVM_DNLD_STUCK   =  0x24,
-	BT_HOST_REASON_XMEM_PATCH_DNLD_STUCK =  0x25,
-	BT_HOST_REASON_SECURE_BRIDGE_CMD_STUCK = 0x26,
-	BT_HOST_REASON_FAILED_TO_SEND_CMD              =  0x27,
-	BT_HOST_REASON_HCI_RESET_CC_NOT_RCVD           =  0x28,
-	BT_HOST_REASON_HCI_PRE_SHUTDOWN_CC_NOT_RCVD    =  0x29,
-	BT_HOST_REASON_HCI_SET_BD_ADDRESS_CC_NOT_RCVD  =  0x2A,
-	BT_HOST_REASON_FAILED_TO_RECEIVE_SLEEP_IND     =  0x2B,
-	BT_HOST_REASON_POWER_ON_REGS_STUCK             =  0x2C,
-	BT_HOST_REASON_RX_THREAD_START_STUCK           =  0x2D,
-	BT_HOST_REASON_GET_LOCALADDR_STUCK             =  0x2E,
-	BT_HOST_REASON_OTP_INFO_GET_CMD_STUCK          =  0x2F,
-	BT_HOST_REASON_FILE_SYSTEM_CALL_STUCK          =  0x30,
-	BT_HOST_REASON_PROPERTY_GET_STUCK              =  0x31,
-	BT_HOST_REASON_PROPERTY_SET_STUCK              =  0x32,
-	BT_HOST_REASON_RAM_PATCH_READ_STUCK            =  0x33,
-	BT_HOST_REASON_NVM_PATCH_READ_STUCK            =  0x34,
-	BT_HOST_REASON_UART_IOCTL_STUCK                =  0x35,
-	BT_HOST_REASON_POWER_IOCTL_STUCK               =  0x36,
-	BT_HOST_REASON_PATCH_CONFIG_CMD_STUCK          =  0x37,
-	BT_HOST_REASON_GET_APP_VER_CMD_STUCK           =  0x38,
-	BT_HOST_REASON_SOC_NAME_UNKOWN                 =  0x3A,
-	SOC_REASON_START_TX_IOS_SOC_RFR_HIGH_DURING_INIT =  0x3B,
-	BT_HOST_REASON_GETVER_CMD_FAILED               = 0x3C,
-	BT_HOST_REASON_BAUDRATE_CHANGE_FAILED          = 0x3D,
-	BT_HOST_REASON_TLV_DOWNLOAD_FAILED             = 0x3E,
-	BT_HOST_REASON_FW_BUILD_INFO_CMD_FAILED        = 0x3F,
-	BT_HOST_REASON_HCI_RESET_CMD_FAILED            = 0x40,
-	BT_HOST_REASON_UART_INIT_FAILED                = 0x41,
-	BT_HOST_REASON_MEMORY_ALLOCATION_FAILED        = 0x42,
-	BT_HOST_REASON_READ_THREAD_START_FAILED        = 0x43,
-	BT_HOST_REASON_HW_FLOW_ON_FAILED               = 0x44,
-	BT_HOST_REASON_NVM_FILE_NOT_FOUND              = 0x45,
-	BT_HOST_REASON_UART_BAUDRATE_CHANGE_FAILED     = 0x46,
-	BT_HOST_REASON_PATCH_CONFIG_FAILED             = 0x47,
-	BT_HOST_REASON_HCI_SET_OFFLOAD_HOST_CONFIG_CC_NOT_RCVD = 0x48,
-	BT_HOST_REASON_BT_EN_PIN_LOW                   = 0x49,
-	UART_REASON_DEFAULT                            =  0x51,
-	UART_REASON_INVALID_FW_LOADED                  =  0x52,
-	UART_REASON_CLK_GET_FAIL                       =  0x53,
-	UART_REASON_SE_CLK_RATE_FIND_FAIL              =  0x54,
-	UART_REASON_SE_RESOURCES_INIT_FAIL             =  0x55,
-	UART_REASON_SE_RESOURCES_ON_FAIL               =  0x56,
-	UART_REASON_SE_RESOURCES_OFF_FAIL              =  0x57,
-	UART_REASON_TX_DMA_MAP_FAIL                    =  0x58,
-	UART_REASON_TX_CANCEL_FAIL                     =  0x59,
-	UART_REASON_TX_ABORT_FAIL                      =  0x5A,
-	UART_REASON_TX_FSM_RESET_FAIL                  =  0x5B,
-	UART_REASON_RX_CANCEL_FAIL                     =  0x5C,
-	UART_REASON_RX_ABORT_FAIL                      =  0x5D,
-	UART_REASON_RX_FSM_RESET_FAIL                  =  0x5E,
-	UART_REASON_RX_TTY_INSET_FAIL                  =  0x5F,
-	UART_REASON_ILLEGAL_INTERRUPT                  =  0x60,
-	UART_REASON_BUFFER_OVERRUN                     =  0x61,
-	UART_REASON_RX_PARITY_REASON                   =  0x62,
-	UART_REASON_RX_BREAK_REASON                    =  0x63,
-	UART_REASON_RX_SBE_REASON                      =  0x64,
-	SOC_REASON_START_TX_IOS_SOC_RFR_HIGH           =  0x65,
-	UART_REASON_FLOW_OFF                           =  0x66,
-	BT_HOST_REASON_PERI_ARBITRATION_CMD_STUCK =  0x67,
-	BT_HOST_REASON_PERI_ARBITRATION_NTF_STUCK =  0x68,
-	BT_HOST_REASON_BT_ACTIVATE_NTF_STUCK      =  0x69,
-	BT_HOST_REASON_PERI_GETVER_SEND_STUCK     =  0x6A,
-	BT_HOST_REASON_PERI_GETBLDINFO_CMD_STUCK  =  0x6B,
-	BT_HOST_REASON_PERI_RAM_PATCH_READ_STUCK  =  0x6C,
-	BT_HOST_REASON_PERI_RESET_STUCK           =  0x6D,
-	BT_HOST_REASON_PERI_PATCH_CONFIG_CMD_STUCK =  0x6E,
-	BT_HOST_REASON_PERI_PATCH_DNLD_STUCK      =  0x6F,
-	BT_HOST_REASON_PERI_RESET_CMD_FAILED      =  0x70,
-	BT_HOST_REASON_BT_ACTIVATE_CMD_STUCK      =  0x71,
-	BT_HOST_REASON_BT_ACTIVATE_CMD_FAILED     =  0x72,
-	BT_HOST_REASON_PERI_GETVER_CMD_FAILED     =  0x73,
-	BT_HOST_REASON_PERI_PATCH_CONFIG_FAILED   =  0x74,
-	BT_HOST_REASON_PERI_TLV_DOWNLOAD_FAILED   =  0x75,
-	BT_HOST_REASON_PERI_GETBOARDID_CMD_STUCK  =  0x76,
-	BT_HOST_REASON_PERI_NVM_PATCH_READ_STUCK  =  0x77,
-	BT_HOST_REASON_PERI_NVM_FILE_NOT_FOUND    =  0x78,
-	BT_HOST_REASON_PERI_NVM_DNLD_STUCK        =  0X79,
-	BT_HOST_REASON_PERI_GETBLDINFO_CMD_FAILED =  0X7A,
-	BT_HOST_REASON_PERI_GETVER_NO_RSP_RCVD    =  0X7B,
-	BT_HOST_REASON_PERI_ARB_NOTIFY_FAILED     =  0x7C,
-	BT_HOST_REASON_PERI_SETBAUDRATE_CMD_STUCK =  0x7D,
-	BT_HOST_REASON_PERI_SETBAUD_CMD_FAILED    =  0x7E,
-	BT_HOST_REASON_MEMORY_ALLOCATION_FAILED_PERI = 0x7F,
-	BT_HOST_REASON_HCI_ACTIVATE_CC_NOT_RCVD   =  0xB0,
-	BT_HOST_REASON_PERI_FILE_SYSTEM_CALL_STUCK = 0xB1,
-	BT_HOST_REASON_PERI_POWER_IOCTL_STUCK     = 0xB2,
-	BT_HOST_REASON_PERI_SETBAUD_CC_NOT_RCVD   =  0xB3,
-	BT_HOST_REASON_PERI_ACCESS_STUCK          =  0xB4,
-	BT_HOST_REASON_PERI_ACCESS_DISALLOWED     =  0xB5,
-	PERI_SOC_REASON_DEFAULT                   =  0xB6
-};
-
 enum UwbPrimaryReasonCode{
 	UWB_HOST_REASON_DEFAULT_NONE  = 0x00,                         //INVALID REASON
 	UWB_HOST_REASON_PERI_SOC_CRASHED = 0x01,                      //PERI SOC WAS CRASHED
@@ -495,16 +305,6 @@ enum UwbSecondaryReasonCode{
 	Q2SPI_REASON_DEFAULT                            =  0xFF
 };
 
-typedef struct {
-  enum BtSecondaryReasonCode reason;
-  char reasonstr[50];
-} BtSecondaryReasonMap;
-
-typedef struct {
-  enum BtPrimaryReasonCode reason;
-  char reasonstr[100];
-} BtPrimaryReasonMap;
-
 typedef struct {
   enum UwbSecondaryReasonCode reason;
   char reasonstr[50];
@@ -515,46 +315,6 @@ typedef struct {
   char reasonstr[100];
 } UwbPrimaryReasonMap;
 
-static BtPrimaryReasonMap btPriReasonMap[] = {
-	{ BT_DEFAULT_NONE, "Invalid reason"},
-	{ BT_SOC_CRASHED, "SOC crashed"},
-	{ BT_SOC_CRASHED_DIAG_SSR, "SOC crashed with diag initiated SSR"},
-	{ BT_INIT_FAILED, "Init failed"},
-	{ BT_CLOSE_RCVD_DURING_INIT, "Close received from stack during SOC init"},
-	{ BT_ERROR_READING_DATA_FROM_UART, "Error reading data from UART"},
-	{ BT_WRITE_FAIL_SPCL_BUFF_CRASH_SOC,
-		"Failed to write special bytes to crash SOC"},
-	{ BT_RX_THREAD_STUCK, "Thread Stuck"},
-	{ BT_SSR_CMD_TIMEDOUT, "SSR due to command timed out"},
-	{ BT_SSR_SPURIOUS_WAKEUP, "SSR due to spurious wakeup"},
-	{ BT_SSR_INVALID_BYTES_RCVD, "Invalid HCI cmd type received"},
-	{ BT_SSR_RCVD_LARGE_PKT_FROM_SOC, "Large packet received from SOC"},
-	{ BT_SSR_UNABLE_TO_WAKEUP_SOC, "Unable to wake SOC"},
-	{ BT_CMD_TIMEDOUT_SOC_WAIT_TIMEOUT,
-		"Command timedout and SOC crash wait timeout"},
-	{ BT_SPURIOUS_WAKEUP_SOC_WAIT_TIMEOUT,
-		"Spurious wake and SOC crash wait timeout"},
-	{ BT_INV_BYTES_SOC_WAIT_TIMEOUT,
-		"Invalid bytes received and SOC crash wait timeout"},
-	{ BT_SOC_WAKEUP_FAILED_SOC_WAIT_TIMEOUT,
-		"SOC Wakeup failed and SOC crash wait timeout"},
-	{ BT_SOC_CRASHED_DIAG_SSR_SOC_WAIT_TIMEOUT,
-		"SOC crashed with diag initiated SSR and SOC wait timeout"},
-	{ BT_NONE_SOC_WAIT_TIMEOUT,
-		"Invalid Reason and SOC crash wait timeout"},
-	{ BT_SOC_DEINIT_STUCK, "SOC Deinit Stuck"},
-	{ BT_SSR_INTERNAL_CMD_TIMEDOUT, "SSR due to internal Command timeout"},
-	{ BT_FAILED_TO_SEND_INTERNAL_CMD, "Failed to send internal command"},
-	{ BT_SSR_SLEEP_IND_NOT_RCVD, "Failed to receive SLEEP IND during close"},
-	{ BT_DIAG_LOG_API_STUCK, "DIAG log API stuck"},
-	{ BT_PERI_SOC_CRASHED, "Peri SOC crashed"},
-	{ BT_PERI_SOC_CRASHED_DIAG_SSR, "Peri SOC crashed with diag initiated SSR"},
-	{ BT_PERI_SOC_CRASHED_ON_OTHER_SUB_SYSTEM,
-		"Peripheral core crash deteced in UWB SS"},
-	{ BT_PERI_SUB_SYSTEM_FAILED_UPDATE_SSR_COMPLETE,
-		"UWB Sub-System failed to update SSR complete status"},
-};
-
 static UwbPrimaryReasonMap uwbPriReasonMap[] = {
 	{UWB_HOST_REASON_DEFAULT_NONE, "Invalid reason"},
 	{UWB_HOST_REASON_PERI_SOC_CRASHED, "Peri SOC crashed"},
@@ -585,140 +345,6 @@ static UwbPrimaryReasonMap uwbPriReasonMap[] = {
 	{UWB_HOST_REASON_DIAG_LOG_API_STUCK, "DIAG log API stuck"}
 };
 
-static BtSecondaryReasonMap btSecReasonMap[] = {
-	{ BT_SOC_REASON_DEFAULT, "Default"},
-	{ BT_SOC_REASON_UNKNOWN, "Unknown"},
-	{ BT_SOC_REASON_TX_RX_INVALID_PKT_FATAL,
-		"Tx/Rx invalid packet fatal error"},
-	{ BT_SOC_REASON_TX_RX_INVALID_LEN_FATAL,
-		"Tx/Rx invalid length fatal error"},
-	{ BT_SOC_REASON_SW_REQUESTED, "SW Requested"},
-	{ BT_SOC_REASON_STACK_OVERFLOW, "Stack Overflow"},
-	{ BT_SOC_REASON_EXCEPTION, "Exception"},
-	{ BT_SOC_REASON_ASSERT, "Assert"},
-	{ BT_SOC_REASON_TRAP, "Trap"},
-	{ BT_SOC_REASON_OS_FATAL, "OS Fatal"},
-	{ BT_SOC_REASON_HCI_RESET, "HCI Reset"},
-	{ BT_SOC_REASON_PATCH_RESET, "Patch Reset"},
-	{ BT_SOC_REASON_ABT, "SoC Abort"},
-	{ BT_SOC_REASON_RAMMASK, "RAM MASK"},
-	{ BT_SOC_REASON_PREBARK, "PREBARK"},
-	{ BT_SOC_REASON_BUSERROR, "Bus error"},
-	{ BT_SOC_REASON_IO_FATAL, "IO fatal eror"},
-	{ BT_SOC_REASON_SSR_CMD, "SSR CMD"},
-	{ BT_SOC_REASON_POWERON, "Power ON"},
-	{ BT_SOC_REASON_WATCHDOG, "Watchdog"},
-	{ BT_SOC_REASON_RAMMASK_RGN1, "RAMMASK RGN1"},
-	{ BT_SOC_REASON_RAMMASK_RGN0, "RAMMASK RGN0"},
-	{ BT_SOC_REASON_Q6_WATCHDOG, "Q6 Watchdog"},
-	{ BT_SOC_REASON_ZEALIS_RAM_MASK_RGN0, "ZEALIS RAM MASK RGN0"},
-	{ BT_SOC_REASON_ZEALIS_RAM_MASK_RGN1, "ZEALIS RAM MASK RGN1"},
-	{ BT_SOC_REASON_APSS_RESET, "APSS reset"},
-	{ BT_SOC_REASON_TIME_RESET, "Time reset"},
-	{ BT_SOC_REASON_AUDIOSS_RESET, "Audioss reset"},
-	{ BT_SOC_REASON_HOST_WARMRESET, "Host warm reset"},
-	{ BT_SOC_REASON_HOST_NMI_INIT, "Host NMI init"},
-	{ BT_SOC_REASON_INVALID_STACK, "Invalid Stack"},
-	{ BT_HOST_REASON_UARTINIT_STUCK, "UartInitStuck"},
-	{ BT_HOST_REASON_GETVER_SEND_STUCK, "GetVerSendStuck"},
-	{ BT_HOST_REASON_GETVER_NO_RSP_RCVD, "GetVerNoRspRcvd"},
-	{ BT_HOST_REASON_SETBAUDRATE_CMD_STUCK, "SetBaudRateStuck"},
-	{ BT_HOST_REASON_PATCH_DNLD_STUCK, "PatchDnldStuck"},
-	{ BT_HOST_REASON_GETBOARDID_CMD_STUCK, "GetBoardIdStuck"},
-	{ BT_HOST_REASON_NVM_DNLD_STUCK, "NvmDnldStuck"},
-	{ BT_HOST_REASON_HCI_RESET_STUCK, "HciResetStuck"},
-	{ BT_HOST_REASON_GETBLDINFO_CMD_STUCK, "GetBldInfoCmdStuck"},
-	{ BT_HOST_REASON_ADDONFEAT_CMD_STUCK, "AddOnFeatCmdStuck"},
-	{ BT_HOST_REASON_ENHLOG_CMD_STUCK, "EnhLogCmdStuck"},
-	{ BT_HOST_REASON_DIAGINIT_STUCK, "DiagInitStuck"},
-	{ BT_HOST_REASON_DIAGDEINIT_STUCK, "DiagDeinitStuck"},
-	{ BT_HOST_REASON_XMEM_NVM_DNLD_STUCK, "XMEM NVM Download stuck"},
-	{ BT_HOST_REASON_XMEM_PATCH_DNLD_STUCK, "XMEM patch download stuck"},
-	{ BT_HOST_REASON_SECURE_BRIDGE_CMD_STUCK, "Secure bridge cmd stuck"},
-	{ BT_HOST_REASON_FAILED_TO_SEND_CMD, "Failed to send internal cmd"},
-	{ BT_HOST_REASON_HCI_RESET_CC_NOT_RCVD, "HCI Reset Cmd CC Not Rcvd"},
-	{ BT_HOST_REASON_HCI_PRE_SHUTDOWN_CC_NOT_RCVD, "HCI Pre shutdown Cmd CC not Rcvd"},
-	{ BT_HOST_REASON_HCI_SET_BD_ADDRESS_CC_NOT_RCVD, "HCI BD address CC not Rcvd"},
-	{ BT_HOST_REASON_FAILED_TO_RECEIVE_SLEEP_IND, "Failed to receive SLEEP IND from SoC"},
-	{ BT_HOST_REASON_POWER_ON_REGS_STUCK, "SoC Power ON Sequence stuck"},
-	{ BT_HOST_REASON_POWER_IOCTL_STUCK, "Power driver IOCTL stuck"},
-	{ BT_HOST_REASON_RX_THREAD_START_STUCK, "RX thread start stuck"},
-	{ BT_HOST_REASON_GET_LOCALADDR_STUCK, "Get local BD address stuck"},
-	{ BT_HOST_REASON_OTP_INFO_GET_CMD_STUCK, "Get OTP info. cmd stuck"},
-	{ BT_HOST_REASON_FILE_SYSTEM_CALL_STUCK, "FILE system call stuck"},
-	{ BT_HOST_REASON_PROPERTY_GET_STUCK, "Property get call stuck"},
-	{ BT_HOST_REASON_PROPERTY_SET_STUCK, "Property set call stuck"},
-	{ BT_HOST_REASON_RAM_PATCH_READ_STUCK, "RAM patch open/read stuck"},
-	{ BT_HOST_REASON_NVM_PATCH_READ_STUCK, "NVM file open/read stuck"},
-	{ BT_HOST_REASON_UART_IOCTL_STUCK, "UART IOCTL stuck"},
-	{ BT_HOST_REASON_PATCH_CONFIG_CMD_STUCK, "Patch config cmd stuck"},
-	{ BT_HOST_REASON_GET_APP_VER_CMD_STUCK, "Get APP version cmd stuck"},
-	{ BT_HOST_REASON_SOC_NAME_UNKOWN, "SoC name unkown"},
-	{ SOC_REASON_START_TX_IOS_SOC_RFR_HIGH_DURING_INIT, "SoC RFR high during INIT"},
-	{ BT_HOST_REASON_GETVER_CMD_FAILED, "Get Version cmd failed"},
-	{ BT_HOST_REASON_BAUDRATE_CHANGE_FAILED, "Baudrate change failed"},
-	{ BT_HOST_REASON_TLV_DOWNLOAD_FAILED, "TLV/NVM download failed"},
-	{ BT_HOST_REASON_FW_BUILD_INFO_CMD_FAILED, "FW build info. cmd failed"},
-	{ BT_HOST_REASON_HCI_RESET_CMD_FAILED, "HCI RESET cmd failed"},
-	{ BT_HOST_REASON_UART_INIT_FAILED, "UART INIT failed"},
-	{ BT_HOST_REASON_MEMORY_ALLOCATION_FAILED, "Memory allocation failed"},
-	{ BT_HOST_REASON_READ_THREAD_START_FAILED, "Read thread start failed"},
-	{ BT_HOST_REASON_HW_FLOW_ON_FAILED, "HW Flow ON failed"},
-	{ BT_HOST_REASON_NVM_FILE_NOT_FOUND, "NVM file not found"},
-	{ BT_HOST_REASON_UART_BAUDRATE_CHANGE_FAILED, "UART baudrate change failed"},
-	{ BT_HOST_REASON_PATCH_CONFIG_FAILED, "Patch config cmd failed"},
-	{ BT_HOST_REASON_HCI_SET_OFFLOAD_HOST_CONFIG_CC_NOT_RCVD, "offload host config CC not Rcvd"},
-	{ BT_HOST_REASON_BT_EN_PIN_LOW, "BT EN pin pulled low"},
-	{ UART_REASON_DEFAULT, "UART reason Default"},
-	{ UART_REASON_INVALID_FW_LOADED, "UART invalid FW loaded"},
-	{ UART_REASON_CLK_GET_FAIL, "UART CLK get failed"},
-	{ UART_REASON_SE_CLK_RATE_FIND_FAIL, "UART CLK rate find failed"},
-	{ UART_REASON_SE_RESOURCES_INIT_FAIL, "UART resources init failed"},
-	{ UART_REASON_SE_RESOURCES_ON_FAIL, "UART resources ON failed"},
-	{ UART_REASON_SE_RESOURCES_OFF_FAIL, "UART resources OFF failed"},
-	{ UART_REASON_TX_DMA_MAP_FAIL, "UART DMA map failed"},
-	{ UART_REASON_TX_CANCEL_FAIL, "UART tx cancel failed"},
-	{ UART_REASON_TX_ABORT_FAIL, "UART tx abort failed"},
-	{ UART_REASON_TX_FSM_RESET_FAIL, "UART tx FSM reset failed"},
-	{ UART_REASON_RX_CANCEL_FAIL, "UART rx cancel failed"},
-	{ UART_REASON_RX_ABORT_FAIL, "UART rx abort failed"},
-	{ UART_REASON_RX_FSM_RESET_FAIL, "UART rx FSM reset failed"},
-	{ UART_REASON_RX_TTY_INSET_FAIL, "UART rx tty inset failed"},
-	{ UART_REASON_ILLEGAL_INTERRUPT, "UART illegal interrupt"},
-	{ UART_REASON_BUFFER_OVERRUN, "UART buffer overrun"},
-	{ UART_REASON_RX_PARITY_REASON, "UART rx parity error"},
-	{ UART_REASON_RX_BREAK_REASON, "UART rx break error"},
-	{ UART_REASON_RX_SBE_REASON, "UART rx SBE error"},
-	{ SOC_REASON_START_TX_IOS_SOC_RFR_HIGH, "SoC RFR high"},
-	{ UART_REASON_FLOW_OFF, "UART flow is OFF"},
-	{ BT_HOST_REASON_PERI_ARBITRATION_CMD_STUCK, "Peri arbitration cmd stuck"},
-	{ BT_HOST_REASON_PERI_GETBLDINFO_CMD_STUCK, "Peri Get Bld Info CmdStuck"},
-	{ BT_HOST_REASON_BT_ACTIVATE_CMD_STUCK, "Subsystem Activate cmd stuck"},
-	{ BT_HOST_REASON_BT_ACTIVATE_NTF_STUCK, "Subsystem Activate ntf stuck"},
-	{ BT_HOST_REASON_PERI_GETVER_SEND_STUCK, "Peri Get Ver Send Stuck"},
-	{ BT_HOST_REASON_PERI_GETBLDINFO_CMD_STUCK, "Peri Get Bld Info Cmd Stuck"},
-	{ BT_HOST_REASON_PERI_RAM_PATCH_READ_STUCK, "Peri RAM patch open/read stuck"},
-	{ BT_HOST_REASON_PERI_RESET_STUCK, "Peri Reset Stuck"},
-	{ BT_HOST_REASON_PERI_PATCH_CONFIG_CMD_STUCK, "Peri Patch config cmd stuck"},
-	{ BT_HOST_REASON_PERI_PATCH_DNLD_STUCK, "Peri Patch Dnld Stuck"},
-	{ BT_HOST_REASON_PERI_RESET_CMD_FAILED, "HCI Peri RESET cmd failed"},
-	{ BT_HOST_REASON_BT_ACTIVATE_CMD_STUCK, "BT activate cmd stuck"},
-	{ BT_HOST_REASON_BT_ACTIVATE_CMD_FAILED, "BT activate cmd failed"},
-	{ BT_HOST_REASON_PERI_GETVER_CMD_FAILED, "Peri Get Ver cmd failed"},
-	{ BT_HOST_REASON_PERI_PATCH_CONFIG_FAILED, "Peri Patch config cmd failed"},
-	{ BT_HOST_REASON_PERI_TLV_DOWNLOAD_FAILED, "Peri TLV/NVM download failed"},
-	{ BT_HOST_REASON_PERI_GETBOARDID_CMD_STUCK, "Peri Get BoardId Stuck"},
-	{ BT_HOST_REASON_PERI_NVM_PATCH_READ_STUCK, "Peri NVM file open/read stuck"},
-	{ BT_HOST_REASON_PERI_NVM_DNLD_STUCK, "Peri Nvm Dnld Stuck"},
-	{ BT_HOST_REASON_PERI_GETBLDINFO_CMD_FAILED, "Peri FW build info. cmd failed"},
-	{ BT_HOST_REASON_PERI_GETVER_NO_RSP_RCVD, "Peri Get Ver No Rsp Rcvd"},
-	{ BT_HOST_REASON_PERI_SETBAUDRATE_CMD_STUCK, "Peri Set baud rate stuck"},
-	{ BT_HOST_REASON_PERI_SETBAUD_CC_NOT_RCVD, "Peri set baudrate cc nor rcvd"},
-	{ BT_HOST_REASON_PERI_ACCESS_STUCK, "Peri Access stuck"},
-	{ BT_HOST_REASON_PERI_ACCESS_DISALLOWED, "Peri Access Disallowed"},
-	{ PERI_SOC_REASON_DEFAULT, "Default"},
-};
-
 static UwbSecondaryReasonMap uwbSecReasonMap[] = {
 	{ UWB_SOC_REASON_DEFAULT, "Default"},
 	{ UWB_SOC_REASON_TX_RX_INVALID_PKT, "Tx/Rx Inavlid Packet"},

+ 17 - 25
pwr/btpower.c

@@ -317,6 +317,12 @@ static struct {
 	int uwb_state[BT_POWER_SRC_SIZE];
 } power_src;
 
+struct Crash_struct {
+//	char SubSystem[10];
+	char PrimaryReason[50];
+	char SecondaryReason[100];
+} CrashInfo;
+
 #ifdef CONFIG_BT_HW_SECURE_DISABLE
 int perisec_cnss_bt_hw_disable_check(struct platform_pwr_data *plat_priv)
 {
@@ -2226,24 +2232,6 @@ int schedule_client_voting(enum plt_pwr_state request)
 	return ret;
 }
 
-char* GetBtSecondaryCrashReason(enum BtSecondaryReasonCode reason)
-{
-	for(int i =0; i < (int)(sizeof(btSecReasonMap)/sizeof(BtSecondaryReasonMap)); i++)
-		if (btSecReasonMap[i].reason == reason)
-			return btSecReasonMap[i].reasonstr;
-
-	return CRASH_REASON_NOT_FOUND;
-}
-
-char* GetBtPrimaryCrashReason(enum BtPrimaryReasonCode reason)
-{
-	for(int i =0; i < (int)(sizeof(btPriReasonMap)/sizeof(BtPrimaryReasonMap)); i++)
-		if (btPriReasonMap[i].reason == reason)
-			return btPriReasonMap[i].reasonstr;
-
-	return CRASH_REASON_NOT_FOUND;
-}
-
 char* GetUwbSecondaryCrashReason(enum UwbSecondaryReasonCode reason)
 {
 	for(int i =0; i < (int)(sizeof(uwbSecReasonMap)/sizeof(UwbSecondaryReasonMap)); i++)
@@ -2491,16 +2479,20 @@ static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 		btpower_enable_ipa_vreg(pwr_data);
 		break;
 	case BT_CMD_KERNEL_PANIC:
+
 		pr_err("%s: BT_CMD_KERNEL_PANIC\n", __func__);
-		panic_reason = arg;
-		primary_reason = panic_reason & 0xFFFF;
-		sec_reason = (panic_reason & 0xFFFF0000) >> 16;
+
+		if (copy_from_user(&CrashInfo, (char *)arg, sizeof(CrashInfo))) {
+			pr_err("%s: copy to user failed\n", __func__);
+			ret = -EFAULT;
+		}
+
 		pr_err("%s: BT kernel panic Primary reason = %s, Secondary reason = %s\n",
-			__func__, GetBtPrimaryCrashReason(primary_reason),
-			GetBtSecondaryCrashReason(sec_reason));
+			__func__, CrashInfo.PrimaryReason, CrashInfo.SecondaryReason);
+
 		panic("%s: BT kernel panic Primary reason = %s, Secondary reason = %s\n",
-			__func__, GetBtPrimaryCrashReason(primary_reason),
-			GetBtSecondaryCrashReason(sec_reason));
+			__func__, CrashInfo.PrimaryReason, CrashInfo.SecondaryReason);
+
 		break;
 	case UWB_CMD_KERNEL_PANIC:
 		pr_err("%s: UWB_CMD_KERNEL_PANIC\n", __func__);