|
@@ -22,6 +22,7 @@
|
|
|
#define pr_fmt(fmt) "(stll) :" fmt
|
|
|
#include <linux/skbuff.h>
|
|
|
#include <linux/module.h>
|
|
|
+#include <linux/platform_device.h>
|
|
|
#include <linux/ti_wilink_st.h>
|
|
|
|
|
|
/**********************************************************************/
|
|
@@ -37,6 +38,9 @@ static void send_ll_cmd(struct st_data_s *st_data,
|
|
|
|
|
|
static void ll_device_want_to_sleep(struct st_data_s *st_data)
|
|
|
{
|
|
|
+ struct kim_data_s *kim_data;
|
|
|
+ struct ti_st_plat_data *pdata;
|
|
|
+
|
|
|
pr_debug("%s", __func__);
|
|
|
/* sanity check */
|
|
|
if (st_data->ll_state != ST_LL_AWAKE)
|
|
@@ -46,10 +50,19 @@ static void ll_device_want_to_sleep(struct st_data_s *st_data)
|
|
|
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;
|
|
|
+ if (pdata->chip_asleep)
|
|
|
+ pdata->chip_asleep(NULL);
|
|
|
}
|
|
|
|
|
|
static void ll_device_want_to_wakeup(struct st_data_s *st_data)
|
|
|
{
|
|
|
+ struct kim_data_s *kim_data;
|
|
|
+ struct ti_st_plat_data *pdata;
|
|
|
+
|
|
|
/* diff actions in diff states */
|
|
|
switch (st_data->ll_state) {
|
|
|
case ST_LL_ASLEEP:
|
|
@@ -70,6 +83,12 @@ static void ll_device_want_to_wakeup(struct st_data_s *st_data)
|
|
|
}
|
|
|
/* update state */
|
|
|
st_data->ll_state = ST_LL_AWAKE;
|
|
|
+
|
|
|
+ /* communicate to platform about chip wakeup */
|
|
|
+ kim_data = st_data->kim_data;
|
|
|
+ pdata = kim_data->kim_pdev->dev.platform_data;
|
|
|
+ if (pdata->chip_asleep)
|
|
|
+ pdata->chip_awake(NULL);
|
|
|
}
|
|
|
|
|
|
/**********************************************************************/
|