mirror of
https://github.com/apache/nuttx.git
synced 2026-06-09 02:44:53 +08:00
drivers/audio/cs4344: add txchannels method and fix supported data width
This commit is contained in:
committed by
Xiang Xiao
parent
9ecc345c02
commit
64abc72052
+23
-6
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user