diff options
Diffstat (limited to 'drivers/misc/ti-st/st_ll.c')
| -rw-r--r-- | drivers/misc/ti-st/st_ll.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/misc/ti-st/st_ll.c b/drivers/misc/ti-st/st_ll.c index 3f249513885..1ff460a8e9c 100644 --- a/drivers/misc/ti-st/st_ll.c +++ b/drivers/misc/ti-st/st_ll.c @@ -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);  }  /**********************************************************************/  |