void ipcs_intr_workqueue_process(struct work_struct *work)
{
    static int first = 1;
    if (first)
    {
        first = 0;
        set_user_nice(current, -16);
    }


	if(IpcCPCrashCheck())
	{
		cp_crashed  = 1;
		//patch-s from Broadcom for csp#529767 reason:FALSE file=ripisr_cp.c line=342 code=-1/0xffffffff tastk=RIP_H TS=48744870/FN=4873
		//reviewed by yuan
				/* Dumping Camera registers. MobC00180667 */
		{
			int i = 0;
			unsigned int camera_addr_base = 0x08440000; // Receiver Status reg set
			printk("\n Dumping Camera registers\n");
			for(i = 0; i < 8; i ++) {
				printk("Addr: 0x%x Value: 0x%x\n", camera_addr_base, readl(io_p2v(camera_addr_base)));
				camera_addr_base += 4;
			}
			camera_addr_base = 0x08440080; // Debug register set
			for(i = 0; i < 9; i ++) {
				printk("Addr: 0x%x Value: 0x%x\n", camera_addr_base, readl(io_p2v(camera_addr_base)));
				camera_addr_base += 4;
			}
			camera_addr_base = 0x08440100; // Channel information set
			for(i = 0; i < 12; i ++) {
				printk("Addr: 0x%x Value: 0x%x\n", camera_addr_base, readl(io_p2v(camera_addr_base)));
				camera_addr_base += 4;
			}
			camera_addr_base = 0x08440400; // Ping pong buffer management
			printk("Addr: 0x%x Value: 0x%x\n", camera_addr_base, readl(io_p2v(camera_addr_base)));
		}
		/* End of Camera register dump */
		//patch-e from Broadcom for csp#529767 reason:FALSE file=ripisr_cp.c line=342 code=-1/0xffffffff tastk=RIP_H TS=48744870/FN=4873

		if( BCMLOG_CPCRASH_MTD == BCMLOG_GetCpCrashDumpDevice() )
		{
			/* we kill AP when CP crashes */
			IPC_DEBUG(DBG_INFO, "Crashing AP now...\n\n");
			abort();  
		} else 
		{
			ProcessCPCrashedDump(work);
		}

		IPC_ProcessEvents();
	}else
	{
		IPC_ProcessEvents();  
#ifdef CONFIG_HAS_WAKELOCK 
	       wake_unlock(&ipc_wake_lock);
#endif // CONFIG_HAS_WAKELOCK
	}
}
void ipcs_intr_tasklet_handler(unsigned long data)
{
	cp_crashed = 0;

	if (IpcCPCrashCheck()) {
		cp_crashed = 1;

		spin_lock_bh(&cp_state_notifier_lock);
		raw_notifier_call_chain(&cp_state_notifier_list, IPC_CPSTATE_CRASHED, NULL);
		spin_unlock_bh(&cp_state_notifier_lock);
		/* schedule the work on the decidated CP crash dump work queue */
		queue_work(g_ipc_info.crash_dump_workqueue,
			   &g_ipc_info.cp_crash_dump_wq);
		IPC_ProcessEvents();
	} else {
		IPC_ProcessEvents();
		wake_unlock(&ipc_wake_lock);
	}
}
static void IPC_AudioRxTaskEntry( void ) 
{
   
  Log_DebugPrintf(LOGID_AUDIO, "IPC_AudioRxTaskEntry\n");

  while (TRUE) 
  {
      
     IPC_ProcessEvents();
     OSTASK_Sleep( TICKS_ONE_SECOND / 50 );

  }
}
Example #4
0
void ipcs_intr_workqueue_process(struct work_struct *work)
{
    static int first = 1;
    if (first)
    {
        first = 0;
        set_user_nice(current, -16);
    }


   if(IpcCPCrashCheck())
   {
		cp_crashed  = 1;
		if( BCMLOG_CPCRASH_MTD == BCMLOG_GetCpCrashDumpDevice() )
		{
		/* we kill AP when CP crashes */
			IPC_DEBUG(DBG_INFO, "Crashing AP now...\n\n");
#if defined(CONFIG_SEC_DEBUG)
    			cp_abort();
#else
    			abort();
#endif
		} else 
		{
		schedule_work(&g_ipc_info.cp_crash_dump_wq);
	}

		IPC_ProcessEvents();
	}else
	{
       IPC_ProcessEvents();  
#ifdef CONFIG_HAS_WAKELOCK 
       wake_unlock(&ipc_wake_lock);
#endif // CONFIG_HAS_WAKELOCK
   }
}