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;