static void handle_no_cp_crash_ack(unsigned long arg)
{
	struct mem_link_device *mld = (struct mem_link_device *)arg;
	struct link_device *ld = &mld->link_dev;
	struct modem_ctl *mc = ld->mc;

	if (cp_crashed(mc)) {
		mif_debug("%s: STATE_CRASH_EXIT without CRASH_ACK\n",
			ld->name);
	} else {
		mif_err("%s: ERR! No CRASH_ACK from CP\n", ld->name);
		mem_handle_cp_crash(mld, STATE_CRASH_EXIT);
	}
}
Exemplo n.º 2
0
static void handle_no_response_cp_crash(unsigned long arg)
{
	struct modem_ctl *mc = (struct modem_ctl *)arg;
	unsigned long flags;

	if (cp_crashed(mc)) {
		mif_info("%s: STATE_CRASH_EXIT without response from CP\n", mc->name);
		return;
	}

	mif_err("%s: ERR! No response from CP\n", mc->name);

	spin_lock_irqsave(&mc->lock, flags);
	/* Change the modem state for RIL */
	if (mc->iod)
		mc->iod->modem_state_changed(mc->iod, STATE_CRASH_EXIT);
	/* Change the modem state for CBD */
	if (mc->bootd)
		mc->bootd->modem_state_changed(mc->bootd, STATE_CRASH_EXIT);
	spin_unlock_irqrestore(&mc->lock, flags);
}