ASoC: wsa881x: Add cache-always mode for sdm660
As WSA881x registers fails to read sometimes on sdm660 internal codec, use cache-always mode to avoid speaker mute. CRs-Fixed: 1117406 Change-Id: I9742af37c3e64efb46fc9b3cef616f685b7f01a8 Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
This commit is contained in:
parent
42e1251b38
commit
b3f17f8fe8
4 changed files with 19 additions and 4 deletions
|
@ -1,4 +1,6 @@
|
|||
WCD audio CODEC
|
||||
* Qualcomm Technologies WCD Audio Codec
|
||||
|
||||
This node models the Qualcomm Technologies Audio HW WCD Codecs
|
||||
|
||||
Required properties:
|
||||
|
||||
|
@ -512,6 +514,10 @@ Required properties:
|
|||
which is also existing driver WSA881x that represents
|
||||
soundwire slave devices.
|
||||
|
||||
Optional Properties:
|
||||
- qcom,cache-always : Boolean. This property is used in WSA slave
|
||||
device to use cacheable for all registers.
|
||||
|
||||
Example:
|
||||
|
||||
msm_sdw_codec: qcom,msm-sdw-codec@152c1000 {
|
||||
|
@ -529,6 +535,7 @@ msm_sdw_codec: qcom,msm-sdw-codec@152c1000 {
|
|||
compatible = "qcom,wsa881x";
|
||||
reg = <0x00 0x20170212>;
|
||||
qcom,spkr-sd-n-gpio = <&tlmm 80 0>;
|
||||
qcom,cache-always;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2015-2017, 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
|
||||
|
@ -216,6 +216,9 @@ static bool wsa881x_readable_register(struct device *dev, unsigned int reg)
|
|||
|
||||
static bool wsa881x_volatile_register(struct device *dev, unsigned int reg)
|
||||
{
|
||||
if (cache_always)
|
||||
return false;
|
||||
|
||||
switch (reg) {
|
||||
case WSA881X_CHIP_ID0:
|
||||
case WSA881X_CHIP_ID1:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2015-2017, 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
|
||||
|
@ -78,6 +78,7 @@ enum {
|
|||
WSA881X_DEV_UP,
|
||||
};
|
||||
|
||||
bool cache_always;
|
||||
/*
|
||||
* Private data Structure for wsa881x. All parameters related to
|
||||
* WSA881X codec needs to be defined here.
|
||||
|
@ -1227,6 +1228,9 @@ static int wsa881x_swr_probe(struct swr_device *pdev)
|
|||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
||||
cache_always = of_property_read_bool(pdev->dev.of_node,
|
||||
"qcom,cache-always");
|
||||
wsa881x_gpio_ctrl(wsa881x, true);
|
||||
wsa881x->state = WSA881X_DEV_UP;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2015-2017, 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
|
||||
|
@ -20,6 +20,7 @@
|
|||
|
||||
#define WSA881X_MAX_SWR_PORTS 4
|
||||
|
||||
extern bool cache_always;
|
||||
extern int wsa881x_set_channel_map(struct snd_soc_codec *codec, u8 *port,
|
||||
u8 num_port, unsigned int *ch_mask,
|
||||
unsigned int *ch_rate);
|
||||
|
|
Loading…
Add table
Reference in a new issue