You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2019/10/25 11:40:34 UTC

[mynewt-core] branch master updated: hw/mcu/dialog: Fix reading trim values from OTP

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

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 75c151e  hw/mcu/dialog: Fix reading trim values from OTP
75c151e is described below

commit 75c151e17d2df0b740f95926f2d6a729b272b7ae
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Fri Oct 25 11:58:44 2019 +0200

    hw/mcu/dialog: Fix reading trim values from OTP
    
    Latest version of OTP driver uses offset instead of address as a
    location of OTP word to read. Current version of trim values driver was
    not updated for this so it does not quite read values properly...
---
 hw/mcu/dialog/da1469x/src/da1469x_trimv.c | 36 +++++++++++++++----------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/hw/mcu/dialog/da1469x/src/da1469x_trimv.c b/hw/mcu/dialog/da1469x/src/da1469x_trimv.c
index b676784..44cb414 100644
--- a/hw/mcu/dialog/da1469x/src/da1469x_trimv.c
+++ b/hw/mcu/dialog/da1469x/src/da1469x_trimv.c
@@ -37,7 +37,7 @@
 #define MCU_OTPM_CS_LENGTH      (0x0400)
 #endif
 
-#define CS_ADDRESS              ((MCU_OTPM_BASE) + (MCU_OTPM_CS_OFFSET))
+#define CS_OFFSET               (MCU_OTPM_CS_OFFSET)
 #define CS_LENGTH               (MCU_OTPM_CS_LENGTH)
 
 #define CS_WORD_START           0xa5a5a5a5
@@ -57,9 +57,9 @@ static struct da1469x_trimv_group g_mcu_trimv_groups[GROUP_ID_MAX + 1];
 void
 da1469x_trimv_init_from_otp(void)
 {
-    uint32_t oaddr_start;
-    uint32_t oaddr_end;
-    uint32_t oaddr;
+    uint32_t offset_start;
+    uint32_t offset_end;
+    uint32_t offset;
     uint32_t ow;
     uint8_t trimv_group;
     uint8_t trimv_num_words;
@@ -68,28 +68,28 @@ da1469x_trimv_init_from_otp(void)
     memset(&g_mcu_trimv_groups, 0, sizeof(g_mcu_trimv_groups));
 
     /* Start of configuration script */
-    oaddr_start = CS_ADDRESS;
-    oaddr_end = CS_ADDRESS + CS_LENGTH;
-    oaddr = oaddr_start;
+    offset_start = CS_OFFSET;
+    offset_end = CS_OFFSET + CS_LENGTH;
+    offset = offset_start;
 
-    da1469x_otp_read(oaddr, &ow, sizeof(ow));
+    da1469x_otp_read(offset, &ow, sizeof(ow));
     if (ow != CS_WORD_START) {
         return;
     }
 
-    oaddr += 4;
+    offset += 4;
 
-    while (oaddr < oaddr_end) {
-        da1469x_otp_read(oaddr, &ow, sizeof(ow));
+    while (offset < offset_end) {
+        da1469x_otp_read(offset, &ow, sizeof(ow));
 
-        oaddr += 4;
+        offset += 4;
 
         if ((ow == CS_WORD_END) || (ow == CS_WORD_INVALID)) {
             /* End of CS or empty word */
             break;
         } else if ((ow & CS_WORD_TYPE_MASK) < CS_WORD_TYPE_BOOTER) {
             /* This is a register+value configuration, skip one more word */
-            oaddr += 4;
+            offset += 4;
         } else if ((ow & CS_WORD_TYPE_MASK) == CS_WORD_TYPE_TRIM) {
             trimv_num_words = (ow & 0x0000ff00) >> 8;
             trimv_group = ow & 0x000000ff;
@@ -101,11 +101,11 @@ da1469x_trimv_init_from_otp(void)
                  */
                 assert(g_mcu_trimv_groups[trimv_group].num_words == 0);
 
-                g_mcu_trimv_groups[trimv_group].index = (oaddr - oaddr_start) / 4;
+                g_mcu_trimv_groups[trimv_group].index = (offset - offset_start) / 4;
                 g_mcu_trimv_groups[trimv_group].num_words = trimv_num_words;
             }
 
-            oaddr += trimv_num_words * 4;
+            offset += trimv_num_words * 4;
         }
     }
 }
@@ -126,7 +126,7 @@ uint8_t
 da1469x_trimv_group_read(uint8_t group, uint32_t *buf, uint8_t num_words)
 {
     struct da1469x_trimv_group *grp = &g_mcu_trimv_groups[group];
-    uint32_t oaddr;
+    uint32_t offset;
     int rc;
 
     /* Silence warning if built without asserts */
@@ -138,9 +138,9 @@ da1469x_trimv_group_read(uint8_t group, uint32_t *buf, uint8_t num_words)
         return 0;
     }
 
-    oaddr = CS_ADDRESS + grp->index * 4;
+    offset = CS_OFFSET + grp->index * 4;
 
-    rc = da1469x_otp_read(oaddr, buf, num_words * 4);
+    rc = da1469x_otp_read(offset, buf, num_words * 4);
     assert(rc == 0);
 
     return num_words;