You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/11/04 16:37:09 UTC

[incubator-nuttx] 02/04: drivers/audio/cs4344: add txchannels method and fix supported data width

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 64abc7205259cd5badfeb114041ade0be3cbdfa4
Author: Tiago Medicci Serrano <ti...@espressif.com>
AuthorDate: Tue Oct 25 14:34:35 2022 -0300

    drivers/audio/cs4344: add txchannels method and fix supported data width
---
 drivers/audio/cs4344.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/drivers/audio/cs4344.c b/drivers/audio/cs4344.c
index 57278239c8..516af188dc 100644
--- a/drivers/audio/cs4344.c
+++ b/drivers/audio/cs4344.c
@@ -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);
       }