File tree Expand file tree Collapse file tree 4 files changed +19
-12
lines changed
include/zephyr/drivers/mm
tests/drivers/mm/sys_mm_drv_bank/src Expand file tree Collapse file tree 4 files changed +19
-12
lines changed Original file line number Diff line number Diff line change 15
15
*/
16
16
17
17
#include <zephyr/kernel.h>
18
-
18
+ #include <zephyr/sys/__assert.h>
19
19
#include <zephyr/drivers/mm/mm_drv_bank.h>
20
20
#include <zephyr/sys/mem_stats.h>
21
21
22
22
void sys_mm_drv_bank_init (struct mem_drv_bank * bank , uint32_t bank_pages )
23
23
{
24
- bank -> unmapped_pages = bank_pages ;
25
- bank -> mapped_pages = 0 ;
26
- bank -> max_mapped_pages = 0 ;
24
+ bank -> unmapped_pages = 0 ;
25
+ bank -> mapped_pages = bank_pages ;
26
+ bank -> max_mapped_pages = bank_pages ;
27
27
}
28
28
29
29
uint32_t sys_mm_drv_bank_page_mapped (struct mem_drv_bank * bank )
30
30
{
31
31
bank -> unmapped_pages -- ;
32
32
bank -> mapped_pages ++ ;
33
- if (bank -> mapped_pages > bank -> max_mapped_pages ) {
34
- bank -> max_mapped_pages = bank -> mapped_pages ;
35
- }
33
+ __ASSERT_NO_MSG (bank -> mapped_pages <= bank -> max_mapped_pages );
36
34
return bank -> mapped_pages ;
37
35
}
38
36
39
37
uint32_t sys_mm_drv_bank_page_unmapped (struct mem_drv_bank * bank )
40
38
{
41
39
bank -> unmapped_pages ++ ;
42
40
bank -> mapped_pages -- ;
43
-
41
+ __ASSERT_NO_MSG ( bank -> unmapped_pages <= bank -> max_mapped_pages );
44
42
return bank -> unmapped_pages ;
45
43
}
46
44
Original file line number Diff line number Diff line change @@ -378,7 +378,7 @@ int sys_mm_drv_unmap_page(void *virt)
378
378
sys_mm_drv_report_page_usage ();
379
379
#endif
380
380
381
- if (sys_mm_drv_bank_page_unmapped (& hpsram_bank [bank_idx ]) == 0 ) {
381
+ if (sys_mm_drv_bank_page_unmapped (& hpsram_bank [bank_idx ]) == SRAM_BANK_PAGE_NUM ) {
382
382
sys_mm_drv_hpsram_pwr (bank_idx , false, false);
383
383
}
384
384
}
@@ -649,7 +649,7 @@ static int sys_mm_drv_mm_init(const struct device *dev)
649
649
*/
650
650
for (int i = 0 ; i < L2_SRAM_BANK_NUM ; i ++ ) {
651
651
sys_mm_drv_bank_init (& hpsram_bank [i ],
652
- SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE );
652
+ SRAM_BANK_PAGE_NUM );
653
653
}
654
654
#ifdef CONFIG_SOC_INTEL_COMM_WIDGET
655
655
used_pages = L2_SRAM_BANK_NUM * SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE ;
Original file line number Diff line number Diff line change 21
21
#include <zephyr/sys/mem_stats.h>
22
22
#include <stdint.h>
23
23
24
+ #define SRAM_BANK_PAGE_NUM (SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE)
25
+
24
26
struct mem_drv_bank {
25
27
uint32_t unmapped_pages ;
26
28
uint32_t mapped_pages ;
@@ -32,7 +34,9 @@ struct mem_drv_bank {
32
34
*
33
35
* The driver may wish to track various information about the memory banks
34
36
* that it uses. This routine will initialize a generic structure containing
35
- * that information.
37
+ * that information. Since at the power on all memory banks are switched on
38
+ * it will start with all pages mapped. In next phase of driver initialization
39
+ * unused pages will be unmapped.
36
40
*
37
41
* @param bank Pointer to the memory bank structure used for tracking
38
42
* @param bank_pages Number of pages in the memory bank
Original file line number Diff line number Diff line change @@ -34,10 +34,15 @@ ZTEST(sys_mm_bank_api, test_sys_mm_drv_bank)
34
34
struct sys_memory_stats stats ;
35
35
struct sys_memory_stats expected ;
36
36
uint32_t count ;
37
+ uint32_t index ;
37
38
38
39
/* Verify that the initialization routine works as expected. */
39
-
40
+ /* It set mapped state for all pages */
40
41
sys_mm_drv_bank_init (& bank_data , BANK_PAGES );
42
+ /* Now unmap all pages */
43
+ for (index = 0 ; index < BANK_PAGES ; index ++ ) {
44
+ sys_mm_drv_bank_page_unmapped (& bank_data );
45
+ }
41
46
42
47
expected .free_bytes = EXPECTED (BANK_PAGES );
43
48
expected .allocated_bytes = EXPECTED (0 );
You can’t perform that action at this time.
0 commit comments