diff --git a/drivers/spi/spi-msm-geni.c b/drivers/spi/spi-msm-geni.c index 954144323254..0b71df4757e6 100644 --- a/drivers/spi/spi-msm-geni.c +++ b/drivers/spi/spi-msm-geni.c @@ -1350,9 +1350,14 @@ static int spi_geni_prepare_transfer_hardware(struct spi_master *spi) struct se_geni_rsc *rsc; int ret = 0; - rsc = &mas->spi_rsc; - ret = pinctrl_select_state(rsc->geni_pinctrl, - rsc->geni_gpio_active); + if (!mas->is_la_vm) { + /* Do this only for non TVM LA usecase */ + /* May not be needed here, but maintain parity */ + rsc = &mas->spi_rsc; + ret = pinctrl_select_state(rsc->geni_pinctrl, + rsc->geni_gpio_active); + } + if (ret) GENI_SE_ERR(mas->ipc, false, NULL, "%s: Error %d pinctrl_select_state\n", __func__, ret); @@ -1400,17 +1405,17 @@ static int spi_geni_unprepare_transfer_hardware(struct spi_master *spi) if (mas->shared_ee || mas->is_le_vm) return 0; - if (mas->is_la_vm) - /* Client on LA VM to controls resources, hence return */ - return 0; - if (mas->gsi_mode) { struct se_geni_rsc *rsc; int ret = 0; - rsc = &mas->spi_rsc; - ret = pinctrl_select_state(rsc->geni_pinctrl, + if (!mas->is_la_vm) { + /* Do this only for non TVM LA usecase */ + rsc = &mas->spi_rsc; + ret = pinctrl_select_state(rsc->geni_pinctrl, rsc->geni_gpio_sleep); + } + if (ret) GENI_SE_ERR(mas->ipc, false, NULL, "%s: Error %d pinctrl_select_state\n", __func__, ret);