Merge "asoc: wcd9378: disable swr slave path when any usecase stop"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
ace5a84ff5
@@ -293,8 +293,9 @@ static int wcd9378_swr_slvdev_datapath_control(struct device *dev,
|
||||
struct wcd9378_priv *wcd9378 = NULL;
|
||||
struct swr_device *swr_dev = NULL;
|
||||
int bank = 0, ret = 0;
|
||||
u8 clk_rst = 0x00, scale_rst = 0x00, swr_clk = 0, clk_scale = 0;
|
||||
u16 scale_reg = 0;
|
||||
u8 clk_rst = 0x00, scale_rst = 0x00;
|
||||
u8 swr_clk = 0, clk_scale = 0;
|
||||
u16 scale_reg = 0, scale_reg2 = 0;
|
||||
|
||||
wcd9378 = dev_get_drvdata(dev);
|
||||
if (!wcd9378)
|
||||
@@ -315,12 +316,16 @@ static int wcd9378_swr_slvdev_datapath_control(struct device *dev,
|
||||
|
||||
scale_reg = (bank ? SWRS_SCP_BUSCLOCK_SCALE_BANK1 :
|
||||
SWRS_SCP_BUSCLOCK_SCALE_BANK0);
|
||||
scale_reg2 = (!bank ? SWRS_SCP_BUSCLOCK_SCALE_BANK1 :
|
||||
SWRS_SCP_BUSCLOCK_SCALE_BANK0);
|
||||
|
||||
if (enable) {
|
||||
swr_write(swr_dev, swr_dev->dev_num,
|
||||
SWRS_SCP_BASE_CLK_BASE, &swr_clk);
|
||||
SWRS_SCP_BASE_CLK_BASE, &swr_clk);
|
||||
swr_write(swr_dev, swr_dev->dev_num,
|
||||
scale_reg, &clk_scale);
|
||||
scale_reg, &clk_scale);
|
||||
swr_write(swr_dev, swr_dev->dev_num,
|
||||
scale_reg2, &clk_scale);
|
||||
ret = swr_slvdev_datapath_control(swr_dev,
|
||||
swr_dev->dev_num, true);
|
||||
} else {
|
||||
@@ -329,9 +334,11 @@ static int wcd9378_swr_slvdev_datapath_control(struct device *dev,
|
||||
SWRS_SCP_BASE_CLK_BASE, &clk_rst);
|
||||
swr_write(swr_dev, swr_dev->dev_num,
|
||||
scale_reg, &scale_rst);
|
||||
ret = swr_slvdev_datapath_control(swr_dev,
|
||||
swr_dev->dev_num, false);
|
||||
swr_write(swr_dev, swr_dev->dev_num,
|
||||
scale_reg2, &scale_rst);
|
||||
}
|
||||
ret = swr_slvdev_datapath_control(swr_dev,
|
||||
swr_dev->dev_num, false);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user