summaryrefslogtreecommitdiff
path: root/components/mm
diff options
context:
space:
mode:
author张世争 <[email protected]>2023-03-16 10:27:16 +0800
committerGitHub <[email protected]>2023-03-16 10:27:16 +0800
commit334c609c6c38a3bd30275bfb4bb563b6c160860a (patch)
tree79254097812602fa5d912ee5d5f3253fa0c93c96 /components/mm
parent2394e75265891c83e3b9a00634a30c9ef1c7b13a (diff)
[components][mm] add ioremap for normal memory api (#7050)
Diffstat (limited to 'components/mm')
-rw-r--r--components/mm/ioremap.c9
-rw-r--r--components/mm/ioremap.h3
2 files changed, 11 insertions, 1 deletions
diff --git a/components/mm/ioremap.c b/components/mm/ioremap.c
index a3b8a9e1f2..f72a8b9354 100644
--- a/components/mm/ioremap.c
+++ b/components/mm/ioremap.c
@@ -27,6 +27,7 @@ size_t rt_ioremap_size;
enum ioremap_type
{
MM_AREA_TYPE_PHY,
+ MM_AREA_TYPE_PHY_WT,
MM_AREA_TYPE_PHY_CACHED
};
@@ -52,6 +53,9 @@ static void *_ioremap_type(void *paddr, size_t size, enum ioremap_type type)
case MM_AREA_TYPE_PHY:
attr = MMU_MAP_K_DEVICE;
break;
+ case MM_AREA_TYPE_PHY_WT:
+ attr = MMU_MAP_K_RW;
+ break;
case MM_AREA_TYPE_PHY_CACHED:
attr = MMU_MAP_K_RWCB;
break;
@@ -82,6 +86,11 @@ void *rt_ioremap_nocache(void *paddr, size_t size)
return _ioremap_type(paddr, size, MM_AREA_TYPE_PHY);
}
+void *rt_ioremap_wt(void *paddr, size_t size)
+{
+ return _ioremap_type(paddr, size, MM_AREA_TYPE_PHY_WT);
+}
+
void *rt_ioremap_cached(void *paddr, size_t size)
{
return _ioremap_type(paddr, size, MM_AREA_TYPE_PHY_CACHED);
diff --git a/components/mm/ioremap.h b/components/mm/ioremap.h
index dc219630a3..7ac9d196a9 100644
--- a/components/mm/ioremap.h
+++ b/components/mm/ioremap.h
@@ -32,7 +32,8 @@ extern "C" {
void *rt_ioremap(void *paddr, size_t size);
void *rt_ioremap_nocache(void *paddr, size_t size);
-void *rt_ioremap_cached (void *paddr, size_t size);
+void *rt_ioremap_cached(void *paddr, size_t size);
+void *rt_ioremap_wt(void *paddr, size_t size);
void rt_iounmap(volatile void *addr);
extern void *rt_ioremap_start;