diff --git a/components/drivers/core/dm.c b/components/drivers/core/dm.c index b11dd058e15..76f1c549450 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 @@ -302,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); @@ -445,7 +466,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 +489,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; } @@ -476,16 +497,30 @@ 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) { 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 @@ -597,4 +632,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/dm.h b/components/drivers/include/drivers/core/dm.h index b6cd70dcbab..a6c0ec93f1b 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 */ @@ -62,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); @@ -79,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, 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 */