コード例 #1
0
static void ll_device_want_to_wakeup(struct st_data_s *st_data)
{
	struct kim_data_s	*kim_data = st_data->kim_data;
	struct ti_st_plat_data	*pdata = kim_data->kim_pdev->dev.platform_data;
	/* diff actions in diff states */
	switch (st_data->ll_state) {
	case ST_LL_ASLEEP:
		/* communicate to platform about chip wakeup */
		if (pdata->chip_awake)
			pdata->chip_awake();
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_ASLEEP_TO_AWAKE:
		/* duplicate wake_ind */
		pr_debug("duplicate wake_ind while waiting for Wake ack");
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_AWAKE:
		/* duplicate wake_ind */
		pr_debug("duplicate wake_ind already AWAKE");
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_AWAKE_TO_ASLEEP:
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind");
		break;
	}
	/* update state */
	st_data->ll_state = ST_LL_AWAKE;
}
コード例 #2
0
static void ll_device_want_to_wakeup(struct st_data_s *st_data)
{
	/* diff actions in diff states */
	switch (st_data->ll_state) {
	case ST_LL_ASLEEP:
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_ASLEEP_TO_AWAKE:
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind while waiting for Wake ack");
		break;
	case ST_LL_AWAKE:
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind already AWAKE");
		break;
	case ST_LL_AWAKE_TO_ASLEEP:
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind");
		break;
	}
	/* update state */
	st_data->ll_state = ST_LL_AWAKE;
}
コード例 #3
0
static void ll_device_want_to_sleep(struct st_data_s *st_data, unsigned long *p_flags)
{
	struct kim_data_s	*kim_data;
	struct ti_st_plat_data	*pdata;
	struct tty_struct *tty;
	unsigned long local_flags = 0;
	pr_debug("%s", __func__);
	/* sanity check */
	if (st_data->ll_state != ST_LL_AWAKE)
		pr_err("ERR hcill: ST_LL_GO_TO_SLEEP_IND"
			  "in state %ld", st_data->ll_state);

	send_ll_cmd(st_data, LL_SLEEP_ACK);
	/* update state */
	st_data->ll_state = ST_LL_ASLEEP;
	/* communicate to platform about chip asleep */
	kim_data = st_data->kim_data;
	pdata = kim_data->kim_pdev->dev.platform_data;
	local_flags = *p_flags;

	spin_unlock_irqrestore(&st_data->lock, local_flags);
	tty = st_data->tty;
	tty->ops->wait_until_sent(tty, (10 * HZ));
	printk("wait_until_sent\n");
	spin_lock_irqsave(&st_data->lock, local_flags);
	*p_flags = local_flags;

	if (pdata->chip_asleep)
		pdata->chip_asleep();
}
コード例 #4
0
static void ll_device_want_to_wakeup(void)
{
	spin_lock(&ll->lock);
	/* diff actions in diff states */
	switch (ll->ll_state) {
	case ST_LL_ASLEEP:
		send_ll_cmd(LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_ASLEEP_TO_AWAKE:
		/* duplicate wake_ind */
		ST_LL_ERR("duplicate wake_ind while waiting for Wake ack");
		break;
	case ST_LL_AWAKE:
		/* duplicate wake_ind */
		ST_LL_ERR("duplicate wake_ind already AWAKE");
		break;
	case ST_LL_AWAKE_TO_ASLEEP:
		/* duplicate wake_ind */
		ST_LL_ERR("duplicate wake_ind");
		break;
	}
	/* update state */
	ll->ll_state = ST_LL_AWAKE;
	spin_unlock(&ll->lock);
}
コード例 #5
0
static void ll_device_want_to_wakeup(struct st_data_s *st_data)
{
	/* diff actions in diff states */
	switch (st_data->ll_state) {
	case ST_LL_ASLEEP:
		/* communicate to platform about chip wakeup */
#ifdef CONFIG_WAKELOCK
		wake_lock(&st_data->st_wk_lock);
#endif
		send_ll_cmd(st_data, LL_WAKE_UP_ACK);	/* send wake_ack */
		break;
	case ST_LL_ASLEEP_TO_AWAKE:
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind while waiting for Wake ack");
		break;
	case ST_LL_AWAKE:
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind already AWAKE");
		break;
	case ST_LL_AWAKE_TO_ASLEEP:
		/* duplicate wake_ind */
		pr_err("duplicate wake_ind");
		break;
	}

	/* update state */
	st_data->ll_state = ST_LL_AWAKE;
}
コード例 #6
0
ファイル: st_ll.c プロジェクト: 119-org/hi3518-osdrv
/* called when ST Core wants to update the state */
void st_ll_wakeup(struct st_data_s *ll)
{
	if (likely(ll->ll_state != ST_LL_AWAKE)) {
		send_ll_cmd(ll, LL_WAKE_UP_IND);	/* WAKE_IND */
		ll->ll_state = ST_LL_ASLEEP_TO_AWAKE;
	} else {
		/* don't send the duplicate wake_indication */
		pr_err(" Chip already AWAKE ");
	}
}
コード例 #7
0
/* called when ST Core wants to update the state */
void st_ll_wakeup(void)
{
	if (likely(ll->ll_state != ST_LL_AWAKE)) {
		send_ll_cmd(LL_WAKE_UP_IND);	/* WAKE_IND */
		ll->ll_state = ST_LL_ASLEEP_TO_AWAKE;
	} else {
		/* don't send the duplicate wake_indication */
		ST_LL_ERR(" Chip already AWAKE ");
	}
}
コード例 #8
0
ファイル: st_ll.c プロジェクト: 119-org/hi3518-osdrv
static void ll_device_want_to_sleep(struct st_data_s *st_data)
{
	pr_debug("%s", __func__);
	/* sanity check */
	if (st_data->ll_state != ST_LL_AWAKE)
		pr_err("ERR hcill: ST_LL_GO_TO_SLEEP_IND"
			  "in state %ld", st_data->ll_state);

	send_ll_cmd(st_data, LL_SLEEP_ACK);
	/* update state */
	st_data->ll_state = ST_LL_ASLEEP;
}
コード例 #9
0
static void ll_device_want_to_sleep(void)
{
	ST_LL_DBG("%s", __func__);
	/* sanity check */
	if (ll->ll_state != ST_LL_AWAKE)
		ST_LL_ERR("ERR hcill: ST_LL_GO_TO_SLEEP_IND"
			  "in state %ld", ll->ll_state);

	spin_lock(&ll->lock);
	send_ll_cmd(LL_SLEEP_ACK);
	/* update state */
	ll->ll_state = ST_LL_ASLEEP;
	spin_unlock(&ll->lock);
}
コード例 #10
0
/* called when ST Core wants to update the state */
void st_ll_wakeup(struct st_data_s *ll)
{
	struct kim_data_s       *kim_data = ll->kim_data;
	struct ti_st_plat_data  *pdata = kim_data->kim_pdev->dev.platform_data;
	if (likely(ll->ll_state != ST_LL_AWAKE)) {
		/* communicate to platform about chip wakeup */
		if (pdata->chip_awake)
			pdata->chip_awake();
		send_ll_cmd(ll, LL_WAKE_UP_IND);	/* WAKE_IND */
		ll->ll_state = ST_LL_ASLEEP_TO_AWAKE;
	} else {
		/* don't send the duplicate wake_indication */
		pr_err(" Chip already AWAKE ");
	}
}
コード例 #11
0
/* called when ST Core wants to update the state */
void st_ll_wakeup(struct st_data_s *ll)
{

	if (likely(ll->ll_state != ST_LL_AWAKE)) {
		/* communicate to platform about chip wakeup */
#ifdef CONFIG_WAKELOCK
	wake_lock(&ll->st_wk_lock);
#endif
		send_ll_cmd(ll, LL_WAKE_UP_IND);	/* WAKE_IND */
		ll->ll_state = ST_LL_ASLEEP_TO_AWAKE;
	} else {
		/* don't send the duplicate wake_indication */
		pr_err(" Chip already AWAKE ");
	}
}
コード例 #12
0
static void ll_device_want_to_sleep(struct st_data_s *st_data)
{
	pr_debug("%s", __func__);
	/* sanity check */
	if (st_data->ll_state != ST_LL_AWAKE)
		pr_err("ERR hcill: ST_LL_GO_TO_SLEEP_IND"
			  "in state %ld", st_data->ll_state);

	send_ll_cmd(st_data, LL_SLEEP_ACK);
	/* update state */
	st_data->ll_state = ST_LL_ASLEEP;

	/* communicate to platform about chip asleep */
#ifdef CONFIG_WAKELOCK
	wake_unlock(&st_data->st_wk_lock);
#endif
}