1 /*
2  * Copyright 2025 NXP
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/kernel.h>
8 #include <zephyr/drivers/cache.h>
9 #include <zephyr/logging/log.h>
10 #include <fsl_cache.h>
11 
cache_instr_enable(void)12 void cache_instr_enable(void)
13 {
14 	L1CACHE_EnableCodeCache();
15 }
16 
cache_instr_disable(void)17 void cache_instr_disable(void)
18 {
19 	L1CACHE_DisableCodeCache();
20 }
21 
cache_instr_flush_all(void)22 int cache_instr_flush_all(void)
23 {
24 	L1CACHE_CleanCodeCache();
25 
26 	return 0;
27 }
28 
cache_instr_invd_all(void)29 int cache_instr_invd_all(void)
30 {
31 	L1CACHE_InvalidateCodeCache();
32 
33 	return 0;
34 }
35 
cache_instr_flush_and_invd_all(void)36 int cache_instr_flush_and_invd_all(void)
37 {
38 	L1CACHE_CleanInvalidateCodeCache();
39 
40 	return 0;
41 }
42 
cache_instr_flush_range(void * addr,size_t size)43 int cache_instr_flush_range(void *addr, size_t size)
44 {
45 	L1CACHE_CleanCodeCacheByRange((uint32_t)addr, (uint32_t)size);
46 
47 	return 0;
48 }
49 
cache_instr_invd_range(void * addr,size_t size)50 int cache_instr_invd_range(void *addr, size_t size)
51 {
52 	L1CACHE_InvalidateCodeCacheByRange((uint32_t)addr, (uint32_t)size);
53 
54 	return 0;
55 }
56 
cache_instr_flush_and_invd_range(void * addr,size_t size)57 int cache_instr_flush_and_invd_range(void *addr, size_t size)
58 {
59 	L1CACHE_CleanInvalidateCodeCacheByRange((uint32_t)addr, (uint32_t)size);
60 
61 	return 0;
62 }
63