Unverified Commit a91b0e5b authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: bcm: Convert to modern clocking terminology



As part of the effort to remove our old APIs based on outdated terminology
update the Broadcom drivers to use modern terminology.

Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20210916143423.24025-1-broonie@kernel.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 99a26f24
Loading
Loading
Loading
Loading
+28 −28
Original line number Diff line number Diff line
@@ -127,14 +127,14 @@ struct bcm2835_i2s_dev {

static void bcm2835_i2s_start_clock(struct bcm2835_i2s_dev *dev)
{
	unsigned int master = dev->fmt & SND_SOC_DAIFMT_MASTER_MASK;
	unsigned int provider = dev->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK;

	if (dev->clk_prepared)
		return;

	switch (master) {
	case SND_SOC_DAIFMT_CBS_CFS:
	case SND_SOC_DAIFMT_CBS_CFM:
	switch (provider) {
	case SND_SOC_DAIFMT_CBC_CFC:
	case SND_SOC_DAIFMT_CBC_CFP:
		clk_prepare_enable(dev->clk);
		dev->clk_prepared = true;
		break;
@@ -337,8 +337,8 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
	unsigned int rx_mask, tx_mask;
	unsigned int rx_ch1_pos, rx_ch2_pos, tx_ch1_pos, tx_ch2_pos;
	unsigned int mode, format;
	bool bit_clock_master = false;
	bool frame_sync_master = false;
	bool bit_clock_provider = false;
	bool frame_sync_provider = false;
	bool frame_start_falling_edge = false;
	uint32_t csreg;
	int ret = 0;
@@ -383,36 +383,36 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
	if (data_length > slot_width)
		return -EINVAL;

	/* Check if CPU is bit clock master */
	switch (dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) {
	case SND_SOC_DAIFMT_CBS_CFS:
	case SND_SOC_DAIFMT_CBS_CFM:
		bit_clock_master = true;
	/* Check if CPU is bit clock provider */
	switch (dev->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
	case SND_SOC_DAIFMT_CBC_CFC:
	case SND_SOC_DAIFMT_CBC_CFP:
		bit_clock_provider = true;
		break;
	case SND_SOC_DAIFMT_CBM_CFS:
	case SND_SOC_DAIFMT_CBM_CFM:
		bit_clock_master = false;
	case SND_SOC_DAIFMT_CBP_CFC:
	case SND_SOC_DAIFMT_CBP_CFP:
		bit_clock_provider = false;
		break;
	default:
		return -EINVAL;
	}

	/* Check if CPU is frame sync master */
	switch (dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) {
	case SND_SOC_DAIFMT_CBS_CFS:
	case SND_SOC_DAIFMT_CBM_CFS:
		frame_sync_master = true;
	/* Check if CPU is frame sync provider */
	switch (dev->fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
	case SND_SOC_DAIFMT_CBC_CFC:
	case SND_SOC_DAIFMT_CBP_CFC:
		frame_sync_provider = true;
		break;
	case SND_SOC_DAIFMT_CBS_CFM:
	case SND_SOC_DAIFMT_CBM_CFM:
		frame_sync_master = false;
	case SND_SOC_DAIFMT_CBC_CFP:
	case SND_SOC_DAIFMT_CBP_CFP:
		frame_sync_provider = false;
		break;
	default:
		return -EINVAL;
	}

	/* Clock should only be set up here if CPU is clock master */
	if (bit_clock_master &&
	if (bit_clock_provider &&
	    (!dev->clk_prepared || dev->clk_rate != bclk_rate)) {
		if (dev->clk_prepared)
			bcm2835_i2s_stop_clock(dev);
@@ -501,11 +501,11 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
	/*
	 * Transmitting data immediately after frame start, eg
	 * in left-justified or DSP mode A, only works stable
	 * if bcm2835 is the frame clock master.
	 * if bcm2835 is the frame clock provider.
	 */
	if ((!rx_ch1_pos || !tx_ch1_pos) && !frame_sync_master)
	if ((!rx_ch1_pos || !tx_ch1_pos) && !frame_sync_provider)
		dev_warn(dev->dev,
			"Unstable slave config detected, L/R may be swapped");
			"Unstable consumer config detected, L/R may be swapped");

	/*
	 * Set format for both streams.
@@ -538,11 +538,11 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
	mode |= BCM2835_I2S_FSLEN(framesync_length);

	/* CLKM selects bcm2835 clock slave mode */
	if (!bit_clock_master)
	if (!bit_clock_provider)
		mode |= BCM2835_I2S_CLKM;

	/* FSM selects bcm2835 frame sync slave mode */
	if (!frame_sync_master)
	if (!frame_sync_provider)
		mode |= BCM2835_I2S_FSM;

	/* CLKI selects normal clocking mode, sampling on rising edge */
+3 −3
Original line number Diff line number Diff line
@@ -848,12 +848,12 @@ static int cygnus_ssp_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)

	ssp_newcfg = 0;

	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
	case SND_SOC_DAIFMT_CBM_CFM:
	switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
	case SND_SOC_DAIFMT_CBP_CFP:
		ssp_newcfg |= BIT(I2S_OUT_CFGX_SLAVE_MODE);
		aio->is_slave = 1;
		break;
	case SND_SOC_DAIFMT_CBS_CFS:
	case SND_SOC_DAIFMT_CBC_CFC:
		ssp_newcfg &= ~BIT(I2S_OUT_CFGX_SLAVE_MODE);
		aio->is_slave = 0;
		break;