From 415de53b97dc1e98249d3ca9f3dd00f478005114 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 9 Dec 2025 17:18:48 +0800 Subject: [PATCH 1/4] [dm][core] add common stack size for DM DM driver is public, they don't know the size of the thread stack default. Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/include/drivers/core/dm.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/drivers/include/drivers/core/dm.h b/components/drivers/include/drivers/core/dm.h index b6cd70dcbab..7743aa0bb27 100644 --- a/components/drivers/include/drivers/core/dm.h +++ b/components/drivers/include/drivers/core/dm.h @@ -31,6 +31,14 @@ extern int rt_hw_cpu_id(void); #define RT_MAX_IPI 0 #endif +#ifndef DM_THREAD_STACK_SIZE +#ifdef SYSTEM_THREAD_STACK_SIZE +#define DM_THREAD_STACK_SIZE SYSTEM_THREAD_STACK_SIZE +#else +#define DM_THREAD_STACK_SIZE IDLE_THREAD_STACK_SIZE +#endif +#endif + void rt_dm_secondary_cpu_init(void); /* ID Allocation */ From 1cf745ee89242a4c94618efe69d23b3407c0dee1 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 9 Dec 2025 17:21:24 +0800 Subject: [PATCH 2/4] [dm][core] cleanup format Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/core/dm.c | 9 ++++++--- components/drivers/include/drivers/core/master_id.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/drivers/core/dm.c b/components/drivers/core/dm.c index b11dd058e15..34d7e721fd8 100644 --- a/components/drivers/core/dm.c +++ b/components/drivers/core/dm.c @@ -10,6 +10,10 @@ #include +#define DBG_TAG "rtdm" +#define DBG_LVL DBG_INFO +#include + #ifdef RT_USING_OFW #include #include @@ -445,7 +449,7 @@ void rt_dm_dev_bind_fwdata(rt_device_t dev, void *fw_np, void *data) if (dev->ofw_node == RT_NULL) { - rt_kprintf("[%s:%s] line=%d ofw_node is NULL\r\n", __FILE__, __func__, __LINE__); + LOG_D("[%s:%s] line=%d ofw_node is NULL", __FILE__, __func__, __LINE__); return; } @@ -468,7 +472,7 @@ void rt_dm_dev_unbind_fwdata(rt_device_t dev, void *fw_np) if (dev_fw_np == RT_NULL) { - rt_kprintf("[%s:%s] line=%d dev_fw_np is NULL\r\n", __FILE__, __func__, __LINE__); + LOG_D("[%s:%s] line=%d dev_fw_np is NULL", __FILE__, __func__, __LINE__); return; } @@ -597,4 +601,3 @@ rt_bool_t rt_dm_dev_prop_read_bool(rt_device_t dev, const char *propname) return RT_FALSE; } - diff --git a/components/drivers/include/drivers/core/master_id.h b/components/drivers/include/drivers/core/master_id.h index 90f2699631d..5bf9e611cb9 100644 --- a/components/drivers/include/drivers/core/master_id.h +++ b/components/drivers/include/drivers/core/master_id.h @@ -83,7 +83,7 @@ /* TTY */ #define MASTER_ID_TTY 141 #define MASTER_ID_TTY_SLAVES 142 -#define MASTER_ID_TTY_ALTERNATE 143 +#define MASTER_ID_TTY_ALTERNATE 143 #define MASTER_ID_PTMX 144 /* USB */ From bc5664943a9e6beef4625ef59a1a5081f34d8c47 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 9 Dec 2025 17:22:26 +0800 Subject: [PATCH 3/4] [dm][core] fixup the `rt_dm_dev_prop_read_u8_array_index` OFW check Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/core/dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/drivers/core/dm.c b/components/drivers/core/dm.c index 34d7e721fd8..4a5cdb3a6da 100644 --- a/components/drivers/core/dm.c +++ b/components/drivers/core/dm.c @@ -485,11 +485,11 @@ int rt_dm_dev_prop_read_u8_array_index(rt_device_t dev, const char *propname, { RT_ASSERT(dev != RT_NULL); -#ifdef RT_UISNG_OFW +#ifdef RT_USING_OFW if (dev->ofw_node) { return ofw_api_call(prop_read_u8_array_index, dev->ofw_node, propname, - index, nr, out_value); + index, nr, out_values); } #endif From 87a7b8d79bfa54d017c64fe2f892e1dc45840c56 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Tue, 9 Dec 2025 17:23:24 +0800 Subject: [PATCH 4/4] [dm][core] add new API for DM 1. rt_dm_dev_is_big_endian 2. rt_dm_dev_get_prop_fuzzy_name Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/core/dm.c | 31 ++++++++++++++++++++ components/drivers/include/drivers/core/dm.h | 4 +++ 2 files changed, 35 insertions(+) diff --git a/components/drivers/core/dm.c b/components/drivers/core/dm.c index 4a5cdb3a6da..76f1c549450 100644 --- a/components/drivers/core/dm.c +++ b/components/drivers/core/dm.c @@ -306,6 +306,23 @@ const char *rt_dm_dev_get_name(rt_device_t dev) #define ofw_api_call_ptr(name, ...) RT_NULL #endif +rt_bool_t rt_dm_dev_is_big_endian(rt_device_t dev) +{ + if (rt_dm_dev_prop_read_bool(dev, "big-endian")) + { + return RT_TRUE; + } + +#ifdef ARCH_CPU_BIG_ENDIAN + if (rt_dm_dev_prop_read_bool(dev, "native-endian")) + { + return RT_TRUE; + } +#endif /* ARCH_CPU_BIG_ENDIAN */ + + return RT_FALSE; +} + int rt_dm_dev_get_address_count(rt_device_t dev) { RT_ASSERT(dev != RT_NULL); @@ -480,6 +497,20 @@ void rt_dm_dev_unbind_fwdata(rt_device_t dev, void *fw_np) #endif } +const char *rt_dm_dev_get_prop_fuzzy_name(rt_device_t dev, const char *name) +{ + RT_ASSERT(dev != RT_NULL); + +#ifdef RT_USING_OFW + if (dev->ofw_node) + { + return ofw_api_call_ptr(get_prop_fuzzy_name, dev->ofw_node, name); + } +#endif + + return RT_NULL; +} + int rt_dm_dev_prop_read_u8_array_index(rt_device_t dev, const char *propname, int index, int nr, rt_uint8_t *out_values) { diff --git a/components/drivers/include/drivers/core/dm.h b/components/drivers/include/drivers/core/dm.h index 7743aa0bb27..a6c0ec93f1b 100644 --- a/components/drivers/include/drivers/core/dm.h +++ b/components/drivers/include/drivers/core/dm.h @@ -70,6 +70,8 @@ int rt_dm_dev_get_name_id(rt_device_t dev); int rt_dm_dev_set_name(rt_device_t dev, const char *format, ...); const char *rt_dm_dev_get_name(rt_device_t dev); +rt_bool_t rt_dm_dev_is_big_endian(rt_device_t dev); + int rt_dm_dev_get_address_count(rt_device_t dev); rt_err_t rt_dm_dev_get_address(rt_device_t dev, int index, rt_uint64_t *out_address, rt_uint64_t *out_size); @@ -87,6 +89,8 @@ int rt_dm_dev_get_irq_by_name(rt_device_t dev, const char *name); void rt_dm_dev_bind_fwdata(rt_device_t dev, void *fw_np, void *data); void rt_dm_dev_unbind_fwdata(rt_device_t dev, void *fw_np); +const char *rt_dm_dev_get_prop_fuzzy_name(rt_device_t dev, const char *name); + int rt_dm_dev_prop_read_u8_array_index(rt_device_t dev, const char *propname, int index, int nr, rt_uint8_t *out_values); int rt_dm_dev_prop_read_u16_array_index(rt_device_t dev, const char *propname,