예제 #1
0
static void command_handler(struct dpram_link_device *dpld, u16 cmd)
{
	struct link_device *ld = &dpld->ld;

	switch (INT_CMD_MASK(cmd)) {
	case INT_CMD_REQ_ACTIVE:
		cmd_req_active_handler(dpld);
		break;

	case INT_CMD_CRASH_RESET:
		dpld->dpram_init_status = DPRAM_INIT_STATE_NONE;
		cmd_crash_reset_handler(dpld);
		break;

	case INT_CMD_CRASH_EXIT:
		dpld->dpram_init_status = DPRAM_INIT_STATE_NONE;
		cmd_crash_exit_handler(dpld);
		break;

	case INT_CMD_PHONE_START:
		dpld->dpram_init_status = DPRAM_INIT_STATE_READY;
		cmd_phone_start_handler(dpld);
		complete_all(&dpld->dpram_init_cmd);
		break;

	case INT_CMD_NV_REBUILDING:
		mif_info("%s: NV_REBUILDING\n", ld->name);
		break;

	case INT_CMD_PIF_INIT_DONE:
		complete_all(&dpld->modem_pif_init_done);
		break;

	case INT_CMD_SILENT_NV_REBUILDING:
		mif_info("%s: SILENT_NV_REBUILDING\n", ld->name);
		break;

	case INT_CMD_NORMAL_PWR_OFF:
		/*ToDo:*/
		/*kernel_sec_set_cp_ack()*/;
		break;

	case INT_CMD_REQ_TIME_SYNC:
	case INT_CMD_CP_DEEP_SLEEP:
	case INT_CMD_EMER_DOWN:
		break;

	default:
		mif_info("%s: unknown command 0x%04X\n", ld->name, cmd);
	}
}
static void qsc6085_command_handler(struct dpram_link_device *dpld, u16 cmd)
{
	switch (INT_CMD_MASK(cmd)) {
	case INT_CMD_REQ_ACTIVE:
		qsc6085_req_active_handler(dpld);
		break;

	case INT_CMD_ERR_DISPLAY:
#ifdef CONFIG_LINK_DEVICE_S5P_IDPRAM
		/* If modem crashes while PDA_SLEEP is in progres */
		dpld->pm_op->halt_suspend(dpld);
#endif
		qsc6085_error_display_handler(dpld);
		break;

	case INT_CMD_PHONE_START:
		qsc6085_start_handler(dpld);
		complete_all(&ld->init_cmpl);
		break;

#ifdef CONFIG_LINK_DEVICE_S5P_IDPRAM
	case INT_CMD_IDPRAM_SUSPEND_ACK:
		dpld->pm_op->power_down(dpld);
		break;

	case INT_CMD_IDPRAM_WAKEUP_START:
		dpld->pm_op->power_up(dpld);
		break;
#endif

	case INT_CMD_NORMAL_POWER_OFF:
		complete(&dpld->crash_cmpl);
		qsc6085_error_display_handler(dpld);
		break;

	default:
		mif_err("unknown command 0x%04X\n", cmd);
		break;
	}
}