drivers: mm: Use mm_drv_bank module

Updates the meteor-lake TLB MM driver to use the memory bank module
to track page usage statistics.

Signed-off-by: Peter Mitsis <peter.mitsis@intel.com>
This commit is contained in:
Peter Mitsis 2023-01-25 21:38:41 -05:00 committed by Fabio Baltieri
commit 5760523091

View file

@ -23,12 +23,14 @@
#include "mm_drv_intel_adsp.h" #include "mm_drv_intel_adsp.h"
#include <zephyr/drivers/mm/mm_drv_intel_adsp_mtl_tlb.h> #include <zephyr/drivers/mm/mm_drv_intel_adsp_mtl_tlb.h>
#include <zephyr/drivers/mm/mm_drv_bank.h>
#include <zephyr/debug/sparse.h> #include <zephyr/debug/sparse.h>
static struct k_spinlock tlb_lock; static struct k_spinlock tlb_lock;
extern struct k_spinlock sys_mm_drv_common_lock; extern struct k_spinlock sys_mm_drv_common_lock;
static int hpsram_ref[L2_SRAM_BANK_NUM]; static struct mem_drv_bank hpsram_bank[L2_SRAM_BANK_NUM];
#ifdef CONFIG_SOC_INTEL_COMM_WIDGET #ifdef CONFIG_SOC_INTEL_COMM_WIDGET
#include <adsp_comm_widget.h> #include <adsp_comm_widget.h>
@ -236,7 +238,7 @@ int sys_mm_drv_map_page(void *virt, uintptr_t phys, uint32_t flags)
#endif #endif
bank_idx = get_hpsram_bank_idx(pa); bank_idx = get_hpsram_bank_idx(pa);
if (!hpsram_ref[bank_idx]++) { if (sys_mm_drv_bank_page_mapped(&hpsram_bank[bank_idx]) == 1) {
sys_mm_drv_hpsram_pwr(bank_idx, true, false); sys_mm_drv_hpsram_pwr(bank_idx, true, false);
} }
@ -375,7 +377,7 @@ int sys_mm_drv_unmap_page(void *virt)
sys_mm_drv_report_page_usage(); sys_mm_drv_report_page_usage();
#endif #endif
if (--hpsram_ref[bank_idx] == 0) { if (sys_mm_drv_bank_page_unmapped(&hpsram_bank[bank_idx]) == 0) {
sys_mm_drv_hpsram_pwr(bank_idx, false, false); sys_mm_drv_hpsram_pwr(bank_idx, false, false);
} }
} }
@ -645,7 +647,8 @@ static int sys_mm_drv_mm_init(const struct device *dev)
* of pages within single memory bank. * of pages within single memory bank.
*/ */
for (int i = 0; i < L2_SRAM_BANK_NUM; i++) { for (int i = 0; i < L2_SRAM_BANK_NUM; i++) {
hpsram_ref[i] = SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE; sys_mm_drv_bank_init(&hpsram_bank[i],
SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE);
} }
#ifdef CONFIG_SOC_INTEL_COMM_WIDGET #ifdef CONFIG_SOC_INTEL_COMM_WIDGET
used_pages = L2_SRAM_BANK_NUM * SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE; used_pages = L2_SRAM_BANK_NUM * SRAM_BANK_SIZE / CONFIG_MM_DRV_PAGE_SIZE;