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

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


The following commit(s) were added to refs/heads/master by this push:
     new de8829f8cd arch: cxd56xx: Fix SCU sensor data format
de8829f8cd is described below

commit de8829f8cdeced3f3246a9f892ec93d0a39d49c8
Author: SPRESENSE <[email protected]>
AuthorDate: Tue Aug 27 14:53:40 2024 +0900

    arch: cxd56xx: Fix SCU sensor data format
    
    Add offset setting for sensor data to be written to SCU math function.
    Fix comments in function descriptions.
---
 arch/arm/include/cxd56xx/scu.h   |  2 +-
 arch/arm/src/cxd56xx/cxd56_scu.c | 10 +++++++---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/arch/arm/include/cxd56xx/scu.h b/arch/arm/include/cxd56xx/scu.h
index 948dbb8997..b059a8b562 100644
--- a/arch/arm/include/cxd56xx/scu.h
+++ b/arch/arm/include/cxd56xx/scu.h
@@ -443,7 +443,7 @@ int seq_setinstruction(struct seq_s *seq, const uint16_t 
*inst,
  * param [in] seq      : Sequencer instance
  * param [in] sample   : Bytes per sample
  * param [in] offset   : Start offset of sampling data
- * param [in] elemsize : Bytes of 1 element in sample
+ * param [in] elemsize : Number of vector elements - 1 (e.g. 3 axis = 2)
  * param [in] swapbyte : Enable/Disable byte swapping
  *
  * return  OK(0) is success. negative value is failure.
diff --git a/arch/arm/src/cxd56xx/cxd56_scu.c b/arch/arm/src/cxd56xx/cxd56_scu.c
index ceec239282..d6d86bb7e8 100644
--- a/arch/arm/src/cxd56xx/cxd56_scu.c
+++ b/arch/arm/src/cxd56xx/cxd56_scu.c
@@ -777,8 +777,8 @@ static void seq_setbus(int sid, int bustype)
  *   sid    - Sequencer ID
  *   start  - Sensor data start offset in sequencer picked
  *   bps    - Bytes per sample
- *   swap   - Wwap bytes
- *   elem   - Number of elements in sample
+ *   swap   - Swap bytes
+ *   elem   - Number of vector elements - 1 in sample
  *
  ****************************************************************************/
 
@@ -789,6 +789,7 @@ static void seq_setdataformat(int sid, int start,
   val = start & 0xf;
   val |= (bps & 0xf) << 4;
   val |= (swap & 0x1) << 16;
+  val |= (start & 0xf) << 24;
   val |= (elem & 0x3) << 28;
   putreg32(val, SCUSEQ_OUT_FORMAT(sid));
 }
@@ -2814,7 +2815,7 @@ int seq_setinstruction(struct seq_s *seq, const uint16_t 
*inst,
  *   seq      - An instance of sequencer
  *   sample   - Size of sample (e.g. 16 bit 3 axis data = 6)
  *   offset   - Start offset of sampling data
- *   elemsize - Size of 1 element (e.g. 16 bit 3 axis data = 2)
+ *   elemsize - Number of vector elements - 1 (e.g. 3 axis = 2)
  *   swapbyte - Enable/Disable byte swapping if available
  *
  ****************************************************************************/
@@ -2823,6 +2824,9 @@ void seq_setsample(struct seq_s *seq, uint8_t sample, 
uint8_t offset,
                    uint8_t elemsize, bool swapbyte)
 {
   DEBUGASSERT(seq);
+  DEBUGASSERT(sample > 0 && sample <= 16);
+  DEBUGASSERT(offset >= 0 && offset < 15);
+  DEBUGASSERT(elemsize >= 0 && elemsize < 3);
 
   seq->sample = sample;
 

Reply via email to