From 9e013b2d5a75531444d4e0a9160a476a63dd8a4f Mon Sep 17 00:00:00 2001 From: Karthikeyan Mani Date: Wed, 29 May 2019 13:52:34 -0700 Subject: [PATCH] asoc: codecs: wcd938x: Fix volatile register function Fix the volatile register function to return false if the registers are not volatile so that the reads will happen from cache and this improves read timing. Change-Id: I73149be3855be09a71ad61a6f3143038a7ba029b Signed-off-by: Karthikeyan Mani --- asoc/codecs/wcd938x/wcd938x-regmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/asoc/codecs/wcd938x/wcd938x-regmap.c b/asoc/codecs/wcd938x/wcd938x-regmap.c index a06f97532d..6f59258331 100644 --- a/asoc/codecs/wcd938x/wcd938x-regmap.c +++ b/asoc/codecs/wcd938x/wcd938x-regmap.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. */ #include @@ -494,8 +494,10 @@ static bool wcd938x_volatile_register(struct device *dev, unsigned int reg) { if(reg <= WCD938X_BASE_ADDRESS) return 0; - return (wcd938x_reg_access[WCD938X_REG(reg)] & RD_REG) - & ~(wcd938x_reg_access[WCD938X_REG(reg)] & WR_REG); + if ((wcd938x_reg_access[WCD938X_REG(reg)] & RD_REG) + && !(wcd938x_reg_access[WCD938X_REG(reg)] & WR_REG)) + return true; + return false; } struct regmap_config wcd938x_regmap_config = {