linux_dsm_epyc7002/sound/soc/atmel
Peter Rosin eb58960e9e ASoC: atmel_ssc_dai: Match the CMR divider only in full duplex.
The CMR divider register is shared by playback and capture. The SSC driver
therefore tries to enforce rules so that the needed register content do
not conflict during simultaneous playback/capture. However, the
implementation also prevents changing the register content in
half-duplex scenarios, which is needed when using the OSS API.

Thus, only lock the divider if there is a stream in the other direction.

Fixes the below program to not fail with the atmel ssc dai in master mode.

int
main(void)
{
	int fd;
	int format;
	int channels;
	int speed;

	if ((fd = open("/dev/dsp", O_WRONLY, 0)) == -1) {
		perror("open");
		return 1;
	}
	format = AFMT_S16_LE;
	if (ioctl(fd, SNDCTL_DSP_SETFMT, &format) == -1) {
		perror("SNDCTL_DSP_SETFMT");
		return 1;
	}
	channels = 2;
	if (ioctl(fd, SNDCTL_DSP_CHANNELS, &channels) == -1) {
		perror("SNDCTL_DSP_CHANNELS");
		return 1;
	}
	speed = 22025;
	if (ioctl(fd, SNDCTL_DSP_SPEED, &speed) == -1) {
		perror("SNDCTL_DSP_SPEED");
		return 1;
	}
	return 0;
}

Signed-off-by: Peter Rosin <peda@axentia.se>
Acked-by: Bo Shen <voice.shen@atmel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2014-11-03 12:45:27 +00:00
..
atmel_ssc_dai.c ASoC: atmel_ssc_dai: Match the CMR divider only in full duplex. 2014-11-03 12:45:27 +00:00
atmel_ssc_dai.h ASoC: atmel-ssc-dai: register dai and pcm directly 2012-11-16 10:24:38 +09:00
atmel_wm8904.c ASoC: atmel_wm8904: switch to CCF 2014-06-09 21:14:09 +01:00
atmel-pcm-dma.c ASoC: atmel: Don't set unused struct snd_pcm_hardware fields 2014-01-06 16:45:24 +00:00
atmel-pcm-pdc.c ASoC: atmel-pcm-pdc: Remove broken suspend/resume code 2014-05-12 22:08:36 +01:00
atmel-pcm.c Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
atmel-pcm.h ASoC: atmel_pcm: make it buildable as module 2013-02-04 18:34:13 +00:00
Kconfig ASoC: atmel: Atmel WM8904 codec support needs I2C 2014-05-01 12:09:21 -07:00
Makefile ASoC: atmel: machine driver for at91sam9x5-wm8731 boards 2013-08-06 18:11:09 +01:00
sam9g20_wm8731.c ASoC: sam9g20_wm8731: remove useless mach/gpio.h 2014-05-07 18:27:20 +02:00
sam9x5_wm8731.c Merge remote-tracking branches 'asoc/topic/ad1836', 'asoc/topic/ad193x', 'asoc/topic/adav80x', 'asoc/topic/adsp', 'asoc/topic/ak4641', 'asoc/topic/ak4642', 'asoc/topic/arizona', 'asoc/topic/atmel', 'asoc/topic/au1x', 'asoc/topic/axi', 'asoc/topic/bcm2835', 'asoc/topic/blackfin', 'asoc/topic/cs4271', 'asoc/topic/cs42l52', 'asoc/topic/da7210', 'asoc/topic/davinci', 'asoc/topic/ep93xx', 'asoc/topic/fsl', 'asoc/topic/fsl-mxs', 'asoc/topic/generic', 'asoc/topic/hdmi', 'asoc/topic/jack', 'asoc/topic/jz4740', 'asoc/topic/max98090', 'asoc/topic/mxs', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/rcar', 'asoc/topic/s6000', 'asoc/topic/sai', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/spear', 'asoc/topic/ssm2518', 'asoc/topic/ssm2602', 'asoc/topic/tegra', 'asoc/topic/tlv320aic3x', 'asoc/topic/twl6040', 'asoc/topic/txx9', 'asoc/topic/uda1380', 'asoc/topic/width', 'asoc/topic/wm8510', 'asoc/topic/wm8523', 'asoc/topic/wm8580', 'asoc/topic/wm8711', 'asoc/topic/wm8728', 'asoc/topic/wm8731', 'asoc/topic/wm8741', 'asoc/topic/wm8750', 'asoc/topic/wm8753', 'asoc/topic/wm8776', 'asoc/topic/wm8804', 'asoc/topic/wm8900', 'asoc/topic/wm8901', 'asoc/topic/wm8940', 'asoc/topic/wm8962', 'asoc/topic/wm8974', 'asoc/topic/wm8985', 'asoc/topic/wm8988', 'asoc/topic/wm8990', 'asoc/topic/wm8991', 'asoc/topic/wm8994', 'asoc/topic/wm8995', 'asoc/topic/wm9081' and 'asoc/topic/x86' into asoc-next 2014-01-02 13:01:55 +00:00
snd-soc-afeb9260.c ASoC: Remove needless snd_soc_dapm_enable_pin() from machine driver inits 2014-05-19 17:19:18 +01:00