From b466d183fbc562c34ff5c01934972bbc0b865062 Mon Sep 17 00:00:00 2001 From: Bhalchandra Gajare Date: Mon, 8 Jan 2018 18:41:02 -0800 Subject: [PATCH] ASoC: wcd-spi: ignore failure from clearing the CLK_REQUEST It is possible that the spi transfer that clears the clock request on the slave may fail. In such case, it is not safe to assume that the clock request is still enabled as it can cause failures for further spi transfers if the clock request is cleared. Fix such issues by resetting the clock state in the driver even the clock request clearing fails. CRs-Fixed: 2169087 Change-Id: I699e72b59b4cb049dfacaa190823796a545f2dbb Signed-off-by: Bhalchandra Gajare --- asoc/codecs/wcd-spi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/asoc/codecs/wcd-spi.c b/asoc/codecs/wcd-spi.c index 072a7538ef1d..a25c9a6141ab 100644 --- a/asoc/codecs/wcd-spi.c +++ b/asoc/codecs/wcd-spi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -603,8 +603,11 @@ static int wcd_spi_clk_disable(struct spi_device *spi) if (ret < 0) dev_err(&spi->dev, "%s: Failed, err = %d\n", __func__, ret); - else - clear_bit(WCD_SPI_CLK_STATE_ENABLED, &wcd_spi->status_mask); + /* + * clear this bit even if clock disable failed + * as the source clocks might get turned off. + */ + clear_bit(WCD_SPI_CLK_STATE_ENABLED, &wcd_spi->status_mask); return ret; }