drivers/audio/cs4344: add txchannels method and fix supported data width

This commit is contained in:
Tiago Medicci Serrano 2022-10-25 14:34:35 -03:00 committed by Xiang Xiao
parent 9ecc345c02
commit 64abc72052
1 changed files with 23 additions and 6 deletions

View File

@ -55,6 +55,7 @@
****************************************************************************/
static int cs4344_setmclkfrequency(FAR struct cs4344_dev_s *priv);
static void cs4344_settxchannels(FAR struct cs4344_dev_s *priv);
static void cs4344_setdatawidth(FAR struct cs4344_dev_s *priv);
static void cs4344_setbitrate(FAR struct cs4344_dev_s *priv);
@ -287,11 +288,26 @@ static int cs4344_setmclkfrequency(FAR struct cs4344_dev_s *priv)
return ret > 0 ? OK : ret;
}
/****************************************************************************
* Name: cs4344_settxchannels
*
* Description:
* Set the number of channels
*
****************************************************************************/
static void cs4344_settxchannels(FAR struct cs4344_dev_s *priv)
{
DEBUGASSERT(priv);
I2S_TXCHANNELS(priv->i2s, priv->nchannels);
}
/****************************************************************************
* Name: cs4344_setdatawidth
*
* Description:
* Set the 8- or 16-bit data modes
* Set the 16 or 24-bit data modes
*
****************************************************************************/
@ -301,13 +317,13 @@ static void cs4344_setdatawidth(FAR struct cs4344_dev_s *priv)
{
/* Reset default default setting */
priv->i2s->ops->i2s_txdatawidth(priv->i2s, 16);
I2S_TXDATAWIDTH(priv->i2s, 16);
}
else
{
/* This should select 8-bit with no companding */
/* This should select 24-bit with no companding */
priv->i2s->ops->i2s_txdatawidth(priv->i2s, 8);
I2S_TXDATAWIDTH(priv->i2s, 24);
}
}
@ -320,7 +336,7 @@ static void cs4344_setbitrate(FAR struct cs4344_dev_s *priv)
{
DEBUGASSERT(priv);
priv->i2s->ops->i2s_txsamplerate(priv->i2s, priv->samprate);
I2S_TXSAMPLERATE(priv->i2s, priv->samprate);
audinfo("sample rate=%u nchannels=%u bpsamp=%u\n",
priv->samprate, priv->nchannels, priv->bpsamp);
@ -553,7 +569,7 @@ cs4344_configure(FAR struct audio_lowerhalf_s *dev,
break;
}
if (caps->ac_controls.b[2] != 8 && caps->ac_controls.b[2] != 16)
if (caps->ac_controls.b[2] != 16 && caps->ac_controls.b[2] != 24)
{
auderr("ERROR: Unsupported bits per sample: %d\n",
caps->ac_controls.b[2]);
@ -589,6 +605,7 @@ cs4344_configure(FAR struct audio_lowerhalf_s *dev,
}
}
cs4344_settxchannels(priv);
cs4344_setdatawidth(priv);
cs4344_setbitrate(priv);
}