mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
bcm2835-i2s: setup clock only if CPU is clock master
Code ported from bcm2708-i2s driver in Raspberry Pi tree.
RPi commit c14827ecda ("bcm2708: Allow
option card devices to be configured via DT")
Original work by Zoltan Szenczi, committed to RPi tree by
Phil Elwell.
Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
committed by
popcornmix
parent
93185c7a27
commit
7606e5ffb6
@@ -411,15 +411,25 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
|
||||
divf = dividend & BCM2835_CLK_DIVF_MASK;
|
||||
}
|
||||
|
||||
/* Set clock divider */
|
||||
regmap_write(dev->clk_regmap, BCM2835_CLK_PCMDIV_REG, BCM2835_CLK_PASSWD
|
||||
| BCM2835_CLK_DIVI(divi)
|
||||
| BCM2835_CLK_DIVF(divf));
|
||||
/* Clock should only be set up here if CPU is clock master */
|
||||
switch (dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||
case SND_SOC_DAIFMT_CBS_CFS:
|
||||
case SND_SOC_DAIFMT_CBS_CFM:
|
||||
/* Set clock divider */
|
||||
regmap_write(dev->clk_regmap, BCM2835_CLK_PCMDIV_REG,
|
||||
BCM2835_CLK_PASSWD
|
||||
| BCM2835_CLK_DIVI(divi)
|
||||
| BCM2835_CLK_DIVF(divf));
|
||||
|
||||
/* Setup clock, but don't start it yet */
|
||||
regmap_write(dev->clk_regmap, BCM2835_CLK_PCMCTL_REG, BCM2835_CLK_PASSWD
|
||||
| BCM2835_CLK_MASH(mash)
|
||||
| BCM2835_CLK_SRC(clk_src));
|
||||
/* Setup clock, but don't start it yet */
|
||||
regmap_write(dev->clk_regmap, BCM2835_CLK_PCMCTL_REG,
|
||||
BCM2835_CLK_PASSWD
|
||||
| BCM2835_CLK_MASH(mash)
|
||||
| BCM2835_CLK_SRC(clk_src));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Setup the frame format */
|
||||
format = BCM2835_I2S_CHEN;
|
||||
|
||||
Reference in New Issue
Block a user