Loading drivers/soc/qcom/bgcom_interface.c +0 −5 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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(); Loading Loading @@ -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; Loading drivers/soc/qcom/bgcom_spi.c +14 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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; Loading @@ -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; Loading Loading
drivers/soc/qcom/bgcom_interface.c +0 −5 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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(); Loading Loading @@ -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; Loading
drivers/soc/qcom/bgcom_spi.c +14 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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; Loading @@ -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; Loading