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; }
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; }
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(); }
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); }
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; }
/* 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 "); } }
/* 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 "); } }
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; }
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); }
/* 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 "); } }
/* 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 "); } }
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 }