This is an automated email from Gerrit.

"Carlos Sanchez <carlossanc...@geotab.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8012

-- gerrit

commit 10dbfe0cac7f52ce40997a02c6791520274b08f0
Author: Sven van Ashbrook <svenvanasbro...@geotab.com>
Date:   Tue May 10 14:53:58 2022 -0400

    flash/nor/kinetis: create separate cache type for S32K
    
    S32K cache registers are slightly different from Kinetis: there are
    two separate registers, one for program flash, one for data flash.
    
    Change-Id: I4143258535437c18b81802436267bfd561de9d31
    Signed-off-by: Sven van Ashbrook <svenvanasbro...@geotab.com>

diff --git a/src/flash/nor/kinetis.c b/src/flash/nor/kinetis.c
index e33570b69f..5674c391bb 100644
--- a/src/flash/nor/kinetis.c
+++ b/src/flash/nor/kinetis.c
@@ -80,6 +80,7 @@
 #define FLEXRAM                0x14000000
 
 #define MSCM_OCMDR0    0x40001400
+#define MSCM_OCMDR1    0x40001404
 #define FMC_PFB01CR    0x4001f004
 #define FTFX_FSTAT     0x40020000
 #define FTFX_FCNFG     0x40020001
@@ -301,9 +302,10 @@ struct kinetis_chip {
 
        enum {
                KINETIS_CACHE_NONE,
-               KINETIS_CACHE_K,        /* invalidate using FMC->PFB0CR/PFB01CR 
*/
-               KINETIS_CACHE_L,        /* invalidate using MCM->PLACR */
-               KINETIS_CACHE_MSCM,     /* devices like KE1xF, invalidate 
MSCM->OCMDR0 */
+               KINETIS_CACHE_K,                /* invalidate using 
FMC->PFB0CR/PFB01CR */
+               KINETIS_CACHE_L,                /* invalidate using MCM->PLACR 
*/
+               KINETIS_CACHE_MSCM,             /* devices like KE1xF, 
invalidate MSCM->OCMDR0 */
+               KINETIS_CACHE_MSCM2,    /* devices like S32K, invalidate 
MSCM->OCMDR0 and MSCM->OCMDR1 */
        } cache_type;
 
        enum {
@@ -1670,6 +1672,12 @@ static void kinetis_invalidate_flash_cache(struct 
kinetis_chip *k_chip)
                /* disable data prefetch and flash speculate */
                break;
 
+       case KINETIS_CACHE_MSCM2:
+               target_write_u32(target, MSCM_OCMDR0, 0x30);
+               target_write_u32(target, MSCM_OCMDR1, 0x30);
+               /* disable data prefetch and flash speculate */
+               break;
+
        default:
                break;
        }
@@ -2104,7 +2112,7 @@ static int s32k_probe_chip(struct kinetis_chip *k_chip)
        case S32K_SDID_SERIES_K14X:
                k_chip->flash_support = FS_PROGRAM_PHRASE | FS_PROGRAM_SECTOR;
                k_chip->watchdog_type = KINETIS_WDOG32_KE1X;
-               k_chip->cache_type = KINETIS_CACHE_MSCM;
+               k_chip->cache_type = KINETIS_CACHE_MSCM2;
                k_chip->progr_accel_ram = FLEXRAM;
 
                switch (sim_sdid & S32K_SDID_DERIVATE_MASK) {

-- 

Reply via email to