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