[alsa-devel] am335x: mcasp in DIT mode
Yegor Yefremov
yegorslists at googlemail.com
Fri Mar 1 11:53:53 CET 2013
I've solved the problem with DIT/SPDIF mode (see the issue description
here: http://e2e.ti.com/support/arm/sitara_arm/f/791/p/247447/870030.aspx).
In davinci_mcasp_hw_params() the DIT or I2S params will be set in the
beginning. DIT mode configures the DAVINCI_MCASP_TXMASK_REG and
DAVINCI_MCASP_TXFMT_REG.
And here comes the problem:
at the end of davinci_mcasp_hw_params() the
davinci_config_channel_size() will touch the same registers again and
thus overwrite the settings necessary for DIT. After I commented this
routine I got the sound over S/PDIF and sii9022a HDMI transmitter and
I could see the proper bits appearing on my oscilloscope.
What were the best way to solve this problem?
1. execute davinci_config_channel_size() only if not in DIT mode?
2. for DIT only change the DAVINCI_MCASP_TXMASK_REG according to channel width?
3. execute
if (dev->op_mode == DAVINCI_MCASP_DIT_MODE)
davinci_hw_dit_param(dev);
else
davinci_hw_param(dev, substream->stream);
after davinci_config_channel_size()
Yegor
More information about the Alsa-devel
mailing list