Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18b55cca authored by Ganesh Keethol's avatar Ganesh Keethol
Browse files

soc: qcom: bgcom: use pm_runtime_status_suspended of spi



use pm_runtime_status_suspended of spi driver to confirm if
spi resource is released.

Change-Id: Id343077983645869222393ea7debf3c121b885fa
Signed-off-by: default avatarGanesh Keethol <gkeethol@codeaurora.org>
parent a7220f4d
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@

#define MPPS_DOWN_EVENT_TO_BG_TIMEOUT 3000
#define ADSP_DOWN_EVENT_TO_BG_TIMEOUT 3000
#define SLEEP_FOR_SPI_BUS 2000

enum {
	SSR_DOMAIN_BG,
@@ -401,8 +400,6 @@ static long bg_com_ioctl(struct file *filp,
		break;
	case SET_SPI_BUSY:
		ret = bgcom_set_spi_state(BGCOM_SPI_BUSY);
		/* Add sleep for  SPI Bus to release*/
		msleep(SLEEP_FOR_SPI_BUS);
		break;
	case BG_SOFT_RESET:
		ret = bg_soft_reset();
@@ -616,8 +613,6 @@ static int ssr_bg_cb(struct notifier_block *this,
		send_uevent(&bge);
		break;
	case SUBSYS_AFTER_SHUTDOWN:
		/* Add sleep for  SPI Bus to release*/
		msleep(SLEEP_FOR_SPI_BUS);
		if (dev->pending_bg_twm_wear_load) {
			/* Load bg-twm-wear */
			dev->pending_bg_twm_wear_load = false;
+14 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/of_gpio.h>
#include <linux/kthread.h>
#include <linux/dma-mapping.h>
#include <linux/pm_runtime.h>
#include "bgcom.h"
#include "bgrsb.h"
#include "bgcom_interface.h"
@@ -160,6 +161,10 @@ int bgcom_set_spi_state(enum bgcom_spi_state state)
{
	struct bg_spi_priv *bg_spi = container_of(bg_com_drv,
						struct bg_spi_priv, lhandle);
	struct device spi_dev = bg_spi->spi->master->dev;
	ktime_t time_start, delta;
	s64 time_elapsed;

	if (state < 0 || state > 1)
		return -EINVAL;

@@ -167,6 +172,15 @@ int bgcom_set_spi_state(enum bgcom_spi_state state)
		return 0;

	mutex_lock(&bg_spi->xfer_mutex);
	if (state == BGCOM_SPI_BUSY) {
		time_start = ktime_get();
		while (!pm_runtime_status_suspended(spi_dev.parent)) {
			delta = ktime_sub(ktime_get(), time_start);
			time_elapsed = ktime_to_ms(delta);
			BUG_ON(time_elapsed > 5 * MSEC_PER_SEC);
			msleep(100);
		}
	}
	spi_state = state;
	mutex_unlock(&bg_spi->xfer_mutex);
	return 0;